login 성공 이후 error페이지
미해결
스프링 시큐리티 OAuth2
302 status 이후 error 페이지로 이동하는 문제가 있습니다. 어떤걸 확인해야될까요?
- java
- spring
- spring-boot
- oauth
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링 시큐리티 OAuth2
302 status 이후 error 페이지로 이동하는 문제가 있습니다. 어떤걸 확인해야될까요?
미해결
스프링 시큐리티 OAuth2
OAuth 2.0 Social Login 연동 구현 (6) 부분에 있는 영상 33:46까지 따라왔지만 form로그인에서 발생한 문제입니다. form login의 inmemory나 jdbc형태로 하는 게 아닌 CustomUserDetailsService를 통해서만 인증을 하는 것으로 보이는데, 이와 같은 에러가 발생하는 이유를 모르겠습니다. (에러코드가 조회되지 않음) 디버그 모드를 확인해보니, DaoAuthenticationProvider클래스에 있는 additionalAuthenticationChecks메소드에서 에러가 발생하고 있습니다. if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) { this.logger.debug("Failed to authenticate since password does not match stored value"); throw new BadCredentialsException(this.messages .getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); } 2. presentedPassword 이부분이 값이 빈값으로 넣어지고 있는데 문제가 되는 부분인 것 같아 질문드립니다. 2-1. 추가적으로 이부분은 첫 로그인이라서 에러나는 부분하고 상관이 없이 발생하는지 질문드립니다. 에러로그가 확인이 불가능하여, 코드 공유를 위해 프로젝트 공유를 하였습니다. 확인 부탁드립니다.
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요 :) 설명을 해주실때 페이지에서 공통된 layout에 있는 RSC 페이로드만 클라이언트 라우터 캐시에 저장이 된다고 이해를 했는데 만약 layout.tsx 클라이언트 컴포넌트가 있는 경우라면 해당 클라이언트 컴포넌트의 React 코드(JS Bundle)를 서버로 다시 요청을 하는 건가요? 강의에서 설명을 하신대로 만약 루트레이아웃, 서비바 레이아웃 이렇게 있을때 만약 서치바 레이아웃에 클라이언트 컴포넌트가 포함이 되어 있다면 해당 서치바 레이아웃 코드가 클라이언트 라우터 캐시에 저장이 되는지, 아니면 클라이언트 컴포넌트가 섞여있을때는 해당 레이아웃은 클라이언트 라우트 캐시에 저장이 안되는지 궁금합니다
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
설명은 너무나도 잘해주시는데 제가 아직 부족해서 그런지 이해가 잘 되지않습니다.. promise를 실제 프로젝트에서 어떻게 적용하는지도 감이 안잡히고, 어떨 때 사용하는지도 잘 모르겠습니다..ㅠㅜ
해결됨
서버개발자 과제전형 완벽가이드 - 1편
안녕하세요. 편안한 추석 보내시길 바랍니다. 멀티 모듈 구성이 익숙치 않아서 많이 헤맸습니다 ㅋㅋ 하위 모듈을 생성할 때, 습관처럼 스프링 프로젝트로 만들었더니 빌드 자체가 안되었고, 강의를 다시 보니 java 프로젝트로 만드는 거였더라고요. 그래서 멀티 모듈 구성은 잘했는데요... 궁금한 것은 왜 스프링 프로젝트로 만들면 안 되는 거였는지 입니다. 개념 영상에서 소개한 공식 문서를 확인하면 알 수 있는 내용인가요? 감사합니다.
해결됨
한 입 크기로 잘라먹는 Next.js
5.1 풀라우트 캐시 강의를 듣다가 궁금한 점이 있습니다. Dynamic 페이지는 fetch 메서드에 캐시옵션이 없을때 적용이된다고 말씀하셨는데 후반부에 revalidate 옵션이 붙었을때는 스태틱 페이지라도 일정 시간 간격으로 풀 라우트 캐시를 업데이트 해준다. 라고 설명해주셨는데요, 그렇다면 fetch 메서드에 캐시옵션이 없을때와 revalidate 옵션을 넣었을때는 스태틱 페이지로 설정이 된다. 라고 이해하면 되는걸까요? 아 제가 잘못 생각했었습니다. 이해 했습니다.
미해결
따라하며 배우는 리액트 네이티브 기초
expo 환경설정중에 궁금한 점이 생겨 문의드립니다. 강의에 나온데로 그대로 설치를 했는데 파일이 구성이 달라 문의드립니다. 영상에서는 app.js 파일이 있는데 저의 파일안에는 app.js 파일이 없습니다... 구성도 많이 다른것 같습니다. 어떤 원인에서 이러한 결과가 나오게 되었는지 궁금합니다. 감사합니다.
미해결
코드로 배우는 React 19 with 스프링부트 API서버
const moveToList = () => { navigate({ pathname: "../list", search: queryDefault }); }; 이걸 했을때 어떻게 http://localhost:3000/todo/read/13 이주소에서 http://localhost:3000/todo/list로 바뀌는 건가요? ..을 지워버리니까 http://localhost:3000/list 로 바뀌어서 에러가 나더라고요 ../를 디렉토리처럼 한단계 전으로 돌아가는 걸로 이해하려고 해도 13의 한단계 전이나까 그럼 http://localhost:3000/todo/read/list 이게 되어야 하는것 같은데 ../가 어떤 뜻이길래 http://localhost:3000/todo/read/13 로 제대로 나오는 건가요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
5:00 강의자님도 배수로 올리긴 했으나. 이해를 위해 올립니다. 약수가 아닌 배수 이니까. 1 ~ 19 까지 2의 배수 3의 배수는 2 4 6 8 12 14 16 18 , 3 6 9 12 15 19 까지 (즉 2로 나누어 떨어지고 3으로 나누어 떨어지는값) 해당 값에서 6으로 나누었을 때 0이 아닌 것들 2 4 8 14 16 3 9 15 19 인데 Count++되어 9개 가 나온다.
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
Controller.propTypes = { count: PropTypes.number.isRequired, // count가 숫자형으로 필수 buttonClick: PropTypes.func.isRequired, // buttonClick이 함수형으로 필수 }; 전 위와같은 코드를 작성하지 않으면 props가 missing이라는 오류가 뜹니다. 혹시 이유를 알 수 있을까요?
해결됨
세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
안녕하세요 파라매트릭 서치 2110 풀다가 오답처리된 코드에 궁금한 점 생겨 질문드립니다. 정답처리된 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class P2110 { static int N, C; static long result; static int[] home; static long parametricSearch() { long left=0; long right=home[N-1]-home[0]; long mid = (left+right)/2; while(left<=right) { if(isPossible(mid)) { left = mid+1; result = mid; } else { right = mid-1; } mid = (left+right)/2; } return result; } static boolean isPossible(long mid) { //그리디한판단 : 맨 첫번째를 두는게 이득 + 거리 mid만큼 떨어진 바로 다음 집에 두는게 이득 int cnt=1; int lastIdx=0; for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } } return C<=cnt; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken()); home = new int[N]; for (int i = 0; i < N; i++) home[i] = Integer.parseInt(br.readLine()); Arrays.sort(home); System.out.println(parametricSearch()); } } 75%에서 오답처리된 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class P2110 { static int N, C; static long result; static int[] home; static long parametricSearch() { long left=0; long right=home[N-1]-home[0]; long mid = (left+right)/2; while(left<=right) { if(isPossible(mid)) { left = mid+1; result = mid; } else { right = mid-1; } mid = (left+right)/2; } return result; } static boolean isPossible(long mid) { //그리디한판단 : 맨 첫번째를 두는게 이득 + 거리 mid만큼 떨어진 바로 다음 집에 두는게 이득 int cnt=1; int lastIdx=0; for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } if(cnt==C) return true; } return false; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken()); home = new int[N]; for (int i = 0; i < N; i++) home[i] = Integer.parseInt(br.readLine()); Arrays.sort(home); System.out.println(parametricSearch()); } } 다른 부분은 전부 동일하고 최소거리가 mid일 때 공유기 C개를 두는 것이 가능한지 판별하는 isPossible 내부에서 return만 다릅니다. for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } if(cnt==C) return true; } return false; 설치할때마다 cnt를 증가시키고, cnt==C가 되는 시점에 도달하면 어차피 현재의 mid로 공유기 C개를 두는게 가능하단 의미니까 true를 리턴해서 끝내고, cnt==C에 도달하지 못한다면 C보다 적은 개수만 설치할 수 있으니 false를 리턴한다고 작성했습니다. 반면에 강의안으로 제공해주신 코드에서는 반복문 안에서 판단해서 리턴하는 것이 아니라, 반복문 전부 돈 결과인 cnt와 C를 비교해서 리턴하는 것으로 이해했습니다. 정답풀이가 맞는 방식이라는 점은 이해가 가는데 오답풀이가 어떤 반례가 있는지는 잘 모르겠습니다
해결됨
[2025] 비전공자도 가능한 React Native 앱 개발 마스터클래스
나머지는 다 잘되는데 마지막 안드로이드 VDM에서 막혀서 연동이 실패가 나고 있습니다 제 나름대로 찾아보고 3번을 다시 했는데 안됩니다. 제가 뭘 놓치고 있는지 모르겠습니다.
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의 6.3) 기능구현하기 카운트 컴포넌트를 state로 만들어야 한다고 하셨는데 state대신 ref를 사용하면 어떻게 되나요? ref는 리렌더링을 유발하지는 않지만 dom에 접근이 가능한 걸로 알고 있습니다. 그렇다면 ref를 사용해도 무방하지 않냐는 것이 저의 생각입니다. ref를 사용한다면 ui변경이 가능하지만 리액트가 그 수정을 감지 못하는 문제가 생겨서 state를 사용하는 것인가요?
미해결
코드로 배우는 React 19 with 스프링부트 API서버
json으로 date 파라미터를 보낼때 자동으로 변환 되서 들어간다는 건가요??
미해결
스프링 시큐리티 OAuth2
선생님 구글 로그인은 oauth2Login() 을 사용하지만 결국에는 oidc Scope를 사용하기 때문에 oidc 인증 프로토콜을 사용해서 인증절차를 사용한다고 보면 될까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
강의자료를 보면서 복습하면 효율적일 것 같은데, 자료를 공유받을 수 있을까요? 제 이메일은 ehrua0208@naver.com입니다.
미해결
코드로 배우는 React 19 with 스프링부트 API서버
강의에서는 명시적으로 todoRepository.save (todo);를 해주셨는데 어떤 강의에서는 더티체킹으로 업데이트를 하는게 좋다고 하는 말을 들었습니다. 보통 실무에서는 어떤 방식을 더 선호하나요?
해결됨
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 안녕하세요. public void run() { while (!Thread.interrupted()) { if (jobQueue.isEmpty()) { Thread.yield(); continue; } ... } 위에 코드에서 Yield 를 사용하면 그 쓰레드가 양보를 해서 다시 스케쥴러로 들어간다고 하셨는데, 그러면 Thread.yield(); 가 실행이 된 후에, 다시 CPU 가 이 쓰레드를 실행시키기 전까지 그 다음 줄의 continue 코드는 실행되지 않고 멈춰있는 상태라고 생각하면 될까요? 그렇다면 쓰레드는 CPU 가 다시 실행시킬 시점에 몇번째 라인까지 실행을 했는지 기억하고 있다가 CPU 에게 알려주는 건가요? 감사합니다.
미해결
따라하며 배우는 리액트 네이티브 기초
안녕하세요, React Navigation 강의를 수강하다가 오류가 해결되지 않아서 질문드립니다. expo를 통해 다음과 같이 index.js에 React Navigation을 적용했습니다. import { store } from "@/redux/store"; import MainScreen from "./screens/MainScreen"; import { Provider } from "react-redux"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import LoginScreen from "./screens/LoginScreen"; export default function HomeScreen() { const Stack = createNativeStackNavigator(); return ( <Provider store={store}> <NavigationContainer> <Stack.Navigator> <Stack.Screen name="Main" component={MainScreen} /> <Stack.Screen name="Login" component={LoginScreen} />{" "} </Stack.Navigator> </NavigationContainer> </Provider> ); } 그러나 다음과 같은 오류가 뜨며 빈화면만 보이더라구요ㅠ Error: Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them. 찾아보니 NavigationContainer가 중첩되었다는 것 같은데, 저는 계속해서 그대로 강의를 따라가고 있었고, 따로 NavigationContainer를 적용한 파일이 존재하지 않습니다 ㅠ 다음 속성을 추가해도 오류가 해결되지 않습니다 ㅠ 아마 어디선가 부모에서 NavigationContainer가 적용된 것 같은데 찾을 수가 없네요 ㅠㅠ independent={true} 조금 더 찾아보니 expo-router랑 충돌이 난 거일 수도 있다는데 정확하게 모르겠네요 ㅠㅠ
해결됨
김영한의 실전 자바 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 결국, 기본형은 immutable, 참조형은 mutable 인건가요?