버전 올라가면서 http 쓸때 var 로 string 값 박으면 안되는것 같은데 이런식으로 하면 되는것같네요 Uri url = Uri.https("gist.githubusercontent.com","/junsuk5/bb7485d5f70974deee920b8f0cd1e2f0/raw/063f64d9b343120c2cb01a6555cf9b38761b1d94"); http.Response response = await http.get(url);
안녕하세요 강사님! 어플리케이션 탭을 보면 엄연히 key, value가 있고 value 안에 completed, item이 있는 건데... todoItem.item이 어떻게 키값이 되는건지 궁금합니다. 처음 설정할 때 key값과 todoItem.item을 같게(?) 해놓으면 todoItem.item을 key 값으로 접근할 수 있나요? 만약 key(id값)으로 접근하려면 어떻게 해야 하나요? 초보라 질문이 많습니다 ㅠㅠ 시간되실 때 답변해주시면 감사드리겠습니다 :)
//양질의 수업 감사합니다. 데이터를 보내는 과정은 수업에서 크게 send() // 데이터를 큐에 넣고 보내는 사람이 없으면 직접 보냄 register_send() // 비동기로 send 실행 on_send() // 데이터 전송 후 콜백 함수 총 3가지 과정입니다 근데 여기서 lock 경합 상태를 방지하기 위해 누군가가 보내고 있으면 큐에 데이터를 넣기만 하고 다른 일을 하러 가고 실제로 보내는 스레드는 단 1개로 설계한 것처럼 보이는데 큐에 데이터를 넣는 과정도 lock 안에 있어서 데이터를 보내는 스레드가 일을 마칠 때까지 큐에 데이터 못 넣고 대기 상태에 빠지지 않나요? 그래서 결국엔 lock 경합을 예방하는데 도움이 되는지 궁금하네요 뭔가 send_queue 이 자원은 object key를 따로 만들어서 딱 이 녀석만 상호배제해야 할 것처럼 생각이 드네요
질문이 있는 부분은 강의에서 인터셉터를 통해 로그인 인증을 구현하는 부분입니다. 요청 중 로그인이 필요한 페이지에 로그인하지 않은 채 요청을 보내면 response.sendRedirect() 를 하여 HTTP 응답 Location 헤더를 통해 /login 으로 리다이렉션하고 있습니다. @Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); HttpSession session = request.getSession(false); log.info("인증 체크 인터셉터 실행 {}", requestURI); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청"); response.sendRedirect("/login?requestURL=" + requestURI); return false; } return true; } } 그러다 문득 response.sendRedirect() 을 주석처리하면 어떻게 될까 궁금해졌습니다. 즉, 인터셉터 제한되는 상황에서 리다이렉트 처리하지 않으면 WAS 또는 스프링이 어떻게 처리하는지 궁금해진 것인데요. 해당 코드를 주석처리하고 로그인이 필요한 페이지로 브라우저를 통해 요청을 하얀색 화면이 나오는 것을 확인하였습니다. @Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); HttpSession session = request.getSession(false); log.info("인증 체크 인터셉터 실행 {}", requestURI); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청"); //response.sendRedirect("/login?requestURL=" + requestURI); return false; } return true; } } 포스트맨으로 응답을 확인하니 다음과 같았습니다. 인터셉터 제한되는 상황이므로 컨트롤러가 호출되지 않았다는 사실은 알 수 있었지만, 정확히 어떠한 흐름으로 응답이 처리되는지는 이해할 수가 없어 질문을 하게 되었습니다. 인터셉터 제한되는 상황에서 리다이렉트 처리하지 않으면, 이러한 응답은 누가 어떻게 보내주는 것인가요?
#import sys from itertools import combinations #sys.stdin=open("input.txt", "rt") N, K = map(int, input().split()) num_list = list(map(int, input().split())) total = 0 sum_list = [] for i in combinations(num_list, 3): total = sum(i) sum_list.append(total) sum_list.sort(reverse=True) print(sum_list[K-1]) 3중 for문 말고 combinations을 사용했는데 채점 시스템에서 오류가 뜹니다 ㅠㅠ 혹시 코드 문제점을 알 수 있을까요?
package array; import java.util.Arrays; import java.util.Scanner; public class Peaks_10 { static int solution(int n, int[][] arr) { int cnt = 0; for(int i=1; i <= n; i++) { for(int j = 1; j <= n; j++) { int target = arr[i][j]; // target과 상 하 좌 우 중 큰 값을 찾는 삼항연산자. int up = target > arr[i-1][j] ? target : arr[i-1][j]; int down = target > arr[i+1][j] ? target : arr[i+1][j]; int left = target > arr[i][j-1] ? target : arr[i][j-1]; int right = target > arr[i][j+1] ? target : arr[i][j+1]; // 상 하 좌 우 모두 target일 경우 cnt 값 증가 if(target == up && target ==down && target == left && target == right) { cnt++; } } } return cnt; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n+2][n+2]; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { int num = sc.nextInt(); arr[i][j] = num; } } System.out.println(Peaks_10.solution(n,arr)); } }
안녕하세요 강사님!! C언어 함수 관련 질문 드릴 것이 있어 질문글을 작성하게 되었습니다. 강의 2:22부근에 나오는 USER_THREADS() 함수는 task.c에 정의되어 있고 그 함수를 다른 .c 파일인 main.c에서 호출하고 있습니다. 보통 함수의 정의를 task.h 등의 헤더파일에 작성하고, 이후 main.c에서 #include "task.h"를 한 후 다른 .c파일의 함수를 사용할 수 있는 것 아닌가요?? 어떠한 헤더파일의 인클루드도 없이 바로 main.c에서 다른 .c파일인 task.c 파일 속 함수를 사용할 때 왜 오류가 발생하지 않는 것인가요..??
안녕하세요, 회귀 문제에 bayes_opt를 사용하여 파라미터 튜닝을 하려고 합니다. 이전에 파이썬 머신러닝 완벽가이드에서 hyperopt는 목적함수의 최솟값을 위한 입력값을 찾기 때문에 이 를 회귀에 사용할때는 그대로 사용하고, bayes_opt는 반대로 최댓값을 위한 입력값을 찾는다고 되어있으면 회귀에 사용할경우 -1을 곱해주면 될까요 ?
안녕하세요, 강사님 세이브 파일을 구현하는 내용 중 여쭈어 볼 것이 있어 질문을 드립니다. void AABPlayerController::BeginPlay() { Super::BeginPlay(); FInputModeGameOnly GameOnlyInputMode; SetInputMode(GameOnlyInputMode); SaveGameInstance = Cast<UABSaveGame>(UGameplayStatics::LoadGameFromSlot(TEXT("Player0"),0)); if (SaveGameInstance) { SaveGameInstance->RetryCount++; } else { SaveGameInstance = NewObject<UABSaveGame>(); SaveGameInstance->RetryCount = 0; } K2_OnGameRetryCount(SaveGameInstance->RetryCount); } 플레이어 컨트롤러의 BeginPlay 함수 부분인데요, 제가 이해한 바로는 Player0라는 세이브 파일을 불러드려서, 해당 세이브 파일이 존재한다면 세이브 파일에 기록된 RetryCount를 증가시키고 K2_OnGameRetryCount 가 실행된다 라고 이해했습니다. 그렇다면 세이브 파일이 이미 있다고 가정할 때, 게임을 처음 시작하자마자 RetryCount가 하나 증가한 상태로 HUD의 RetryCount가 업데이트 되어 보여져야 하는 것 아닌가 생각했습니다. 물론 실질적인 저장은 GameOver를 통해서 하기 때문에 게임을 단순히 켰다 끄면 증가한 RetryCount 값이 저장은 되지 않겠지만, 적어도 게임은 킨 시점에서는 세이브 파일을 통해 불러온 RetryCount 에 하나 상승한 값이 HUD에 보여져야 한다고 생각하는데 어째서 RetryCount가 증가하여 보여지지 않는지 궁금합니다.