묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
cannot find module 문제
이런 문제가 발생했는데요, 어떤게 문제 일때 나타나는 에러인가요? 디렉터리 구조가 달라지면 생기는 문제인가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
detection 된 객체 구별하는 방법
교수님 안녕하세요! TensorFlow Object Detection API를 이용해서 Custom Dateset을 학습시켰습니다. 한가지 궁금한 점이 있어서 질문하게 되었습니다. 첨부된 사진에 현재 2개의 로봇이 detection 됩니다. 이 상태에서 각 로봇마다 id를 지정하고 싶은데, 좋은 방법이 떠오르지 않아 혹시나 아이디어가 있을까 해서요... id는 간단히 생각해서 로봇끼리 구별하기 위한 방법입니다! 항상 좋은강의 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
질문
실습정말 잘 듣고있습니다. 몇가지 질문이 있습니다. 1. xml파일의 gateway.ip 이 값은 어디서 쓰이는건지 궁금합니다. 이 값을 바꾸지 않아도 잘 작동이 되서 질문드립니다. (제가 놓친 강의가 있다면 죄송합니다...) 2. 계속 403에러가 떠서 스프링 시큐리티 때문이라고 판단하여 일단 시큐리티의 hasipaddress 이부분을 없애고 permitall하여 사용하고 있습니다. 결과로 403 에러는 없어졌습니다. 원래 실습 방법처럼 하려면 hasipaddress이부분을 user서비스가 실행되는 ip주소로 바꿔줘야하는데 그러면 컨테이너가 실행될때 동적으로 바뀌는 주소값을 넣어줘야 한다고 생각하였습니다. (실행 순서에 따라 주소가 계속 바뀌기 때문) 이를 해결하기 위하여 어플리케이션.xml파일에 user.ip 값을 하나 만들고 hasipaddress의 부분에 env.getproperites("user.ip") 이런식으로 가져와서 사용하여 docker run 의 -e 옵션에 "user.ip=user-service" 이런식으로 사용하면 되나요?
-
해결됨실전 리액트 프로그래밍
실습한 내용 개인 깃헙에 public으로 올려도 되나요?
공부한 흔적을 남겨서 회사 지원이나 동아리 지원 때 포트폴리오로 쓰려 하는데 실습 코드를 개인 깃헙에 올려도 될까요?
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
질문있어요~ 꼭 봐주세요 퓨ㅠㅠ
제가 지금 여기까지 잘 따라 오고 있는데 갑자기 오류가 잘 해결이 안되요.. 뭐가 잘못 된 것인지... .9 분15초까지 따라왔는데!! 메세지가 나와야하는데 안나옵니다.. 혹시나 해서 콘솔로 다찍어 봤는데. 디비에 있는 메세지 잘불러오고 깃허브 한번 확인 부탁드려도 될까요? https://github.com/SHT-3756/practice/blob/master/react/react-firebase-chat-app/src/components/ChatPage/MainPanel/MainPanelF.js const renderMessage = (messages) => { messages.length > 0 && messages.map((message) => ( console.log("message" , message) // map() 함수도 잘되고 console.log("message.timestamp", message.timestamp) // console.log("message", message ) // 잘나오고 console.log("user", user) // 잘나오고 <Message key={message.timestamp} message={message} user={user} /> )); }; // <Message /> 여기로 잘안넘어가는 거 같아요.. Message.js 가서 콘손찍어보니 아예 안넘어오는데.. 뭔문제죠? import 도 두번세번 확인했어요.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
BCryptPasswordEncoder 로그인
비밀번호를 암호화하여 DB에 저장하고 같은 비밀번호를 암호화해도 다른 값이 저장되는데 로그인시 같은 비밀번호인지 어떻게 알 수 있나요???
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 매니저 질문드립니다!
안녕하세요!! 제가 생각하는게 맞는지 확인하고 싶어서 질문드립니다!! 엔티티 매니저 팩토리는 연결된 DB당 하나씩 생성되고, 엔티티 매니저는 트랜잭션 단위로 생성된다. 즉, 트랜잭션이 시작될 때, 엔티티 매니저 팩토리가 해당 트랜잭션에 하나의 엔티티 매니저를 할당한다. 그렇기 때문에, 만약 entityManager.flush();를 하고 싶으면 memberRepository.flush(); 로 하든 teamRepository.flush(); 로 하든 똑같다. 위의 내용이 맞을까요!?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
정답이 나오는데 0점 나옵니다.
#include <iostream> using namespace std; int a[100]; int b[100]; int i, sum = 0; int digit_sum(int x){ a[i] = x; while(x > 0){ sum += x % 10; x = x / 10; } b[i] = sum; return sum; } int main() { //freopen("input.txt", "rt", stdin); int n; int ip, max = -1, max_i = 0; scanf("%d", &n); for(i = 0; i < n; i++){ sum = 0; scanf("%d", &ip); sum = digit_sum(ip); } for(i = 0; i < n; i++){ if(b[i] > max) max = b[i]; max_i = i; } for(i = 0; i < n; i++){ if(b[i] == max){ if(a[i] > a[max_i]) max_i = i; } } printf("%d\n", a[max_i]); } 이렇게 해서 맞는 답을 얻었고 in1, 부터in5까지 다 해봤는데 출력다 정상적으로 되는데 왜 전부 Wrong anwser인지 모르겠습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
비디오가 안떠요
비디오가 안뜨고 계속 loading 만 뜹니다 POST http://localhost:3000/api/video/getVideoDetail 404 (Not Found) dispatchXhrRequest @ xhr.js:178 xhrAdapter @ xhr.js:12 dispatchRequest @ dispatchRequest.js:52 Promise.then(비동기) request @ Axios.js:61 Axios.<computed> @ Axios.js:86 wrap @ bind.js:9 (익명) @ VideoDetailPage.js:13 commitHookEffectListMount @ react-dom.development.js:19731 commitPassiveHookEffects @ react-dom.development.js:19769 callCallback @ react-dom.development.js:188 invokeGuardedCallbackDev @ react-dom.development.js:237 invokeGuardedCallback @ react-dom.development.js:292 flushPassiveEffectsImpl @ react-dom.development.js:22853 unstable_runWithPriority @ scheduler.development.js:653 runWithPriority$1 @ react-dom.development.js:11039 flushPassiveEffects @ react-dom.development.js:22820 performSyncWorkOnRoot @ react-dom.development.js:21737 (익명) @ react-dom.development.js:11089 unstable_runWithPriority @ scheduler.development.js:653 runWithPriority$1 @ react-dom.development.js:11039 flushSyncCallbackQueueImpl @ react-dom.development.js:11084 flushSyncCallbackQueue @ react-dom.development.js:11072 unbatchedUpdates @ react-dom.development.js:21909 legacyRenderSubtreeIntoContainer @ react-dom.development.js:24757 render @ react-dom.development.js:24840 ./src/index.js @ index.js:20 __webpack_require__ @ bootstrap:784 fn @ bootstrap:150 1 @ serviceWorker.js:135 __webpack_require__ @ bootstrap:784 checkDeferredModules @ bootstrap:45 webpackJsonpCallback @ bootstrap:32 (익명) @ main.chunk.js:1 createError.js:16 Uncaught (in promise) Error: Request failed with status code 404 at createError (createError.js:16) at settle (settle.js:17) at XMLHttpRequest.handleLoad (xhr.js:61) 오류이고 return res.status(200).json({success:true, videoDetail}) 여기서 videoDetail 값이 안들어 오는것 같아요 뭐가 문젠가요 ㅠㅠㅠ
-
미해결Redux vs MobX (둘 다 배우자!)
기존 프로젝트에서 redux toolkit을 적용하려면?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 기존 프로젝트가 redux로 구성되어있는 환경에서 레거시 소스를 건들지 않고 redux toolkit을 적용할 수 있을까요? 기존 기능은 소스 수정이 일어나면 QA의 부담이 있어서 신규기능에만 Toolkit을 적용하고 점진적으로 리팩토링 해나가고자하는데 가능할까요?
-
미해결Vue.js + TypeScript 완벽 가이드
2분 25초 <TodoInput> option키 누르고 클릭시 이동이 되지 않습니다 => 해결했습니다 ^^
캡틴판교님 강의 잘 듣고 있습니다. :) vscode 에 vetur, vue vscode snippet 설치한 상황인데, 영상의 2분 25초 <TodoInput> 에 마우스 오버시 나오는 화면도 나오지 않고, option키 누르고 클릭시 이동이 되지 않고 있어요~ 혹시 다른 방법을 추가해야 하는지 질문드립니다 ^^ => 오 혹시나해서 vscode를 업데이트 했더니 되었습니다. https://code.visualstudio.com/
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
aws s3에 관련 질문좀 드리겠습니다
s3에 이미지 업로드 까지 성공을 하엿습니다. 근데 궁금한 점이 하나 생겼습니다. 이 사진은 s3가 아닌 그냥 백엔드 서버 폴더에다가 업로드를 한 사진이고 해당 이미지의 url 을 가져와 주소창에 넣어보면 이런식으로 브라우저에서 이미지가 보입니다. 허나.. 이번에는 s3에 업로드한 이미지 url을 가져다가 주소창에 넣어보니 이미지가 안나오고 해당 이미지가 그냥 다운받아집니다. s3에서 첫번째 사진처럼 url을 입력했는데 이미지가 브라우저창에서 보이도록 할 수 있는게 가능할까요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
지금 jsonfilter 가 jsonignore에 비해 장점이 있나요?
결국 두 개가 비슷한 거처럼 보여서요. 이번 세션의 목적이랄까 jsonfilter가 이전 수업인 jsonignore에 비해 장점이 있습니까?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
can not resolve symbol getmapping
임포트가 잘 안되어서 검색후 해결방법을 찾아서 해봤는데 해결이 안됩니다. 시도해본 방법 : https://hyesun03.github.io/2019/08/27/intellij-cannot-resolve-symbol-error/ https://ottl-seo.tistory.com/entry/IntelliJ-Cannot-resolve-symbol-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0 왜인지모르겠는데 프로젝트 삭제하고 다시 만드니까 됩니다.......................?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Whitelabel Error Page
웹 브라우저에에러가 났고 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Jul 28 17:42:12 KST 2021 There was an unexpected error (type=Internal Server Error, status=500). 콘솔내용은------------------------------------------------------------------------------------------- 2021-07-28 17:57:10.164 ERROR 4736 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1397) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1142) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.9.jar:5.3.9] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.9.jar:5.3.9] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.50.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.9.jar:5.3.9] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.50.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.9.jar:5.3.9] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.50.jar:9.0.50] at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na] 이런내용인데 .. 검색해봐도 해결방법을 잘 모르겠어서요 ㅠㅠ
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
torchvision transforms에서 왜 cuda를 붙였을 때 연산이 잘 안나오나요?
안녕하세요 gaussianblur 이미지 augmentation을 적용할 때, 이미지에 cuda에 붙였을 때와 안붙였을 때 수행시간 차이가 발생하는데, 이유가 있을까요? 아래 코드에서는 0.001s, 0.001s씩 걸리는데 import torch import torch.nn as nn import torch.nn.functional as F import torchvision from torchvision import transforms import time import albumentations as A import numpy as np sample_img = torch.randn((1, 3, 224, 224), dtype=torch.float32) sample_img2 = torch.randn((3, 224, 224), dtype=torch.float32).cuda() gaussian = transforms.GaussianBlur(5) since = time.time() gaussian_img = gaussian(sample_img) print(f'time: {time.time()-since:.3f}s') since = time.time() a_gaussian = A.GaussianBlur() gaussian_img2 = a_gaussian(image=sample_img2.permute(1, 2, 0).detach().cpu().numpy())['image'] print(f'time: {time.time()-since:.3f}s') 위 코드에서 sample_img에 cuda를 붙이면 오히려 시간이 0.4초로 늘어나게 되네요
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
8분 13초쯤에 질문있습니다.
1. 일단 a -> b 로 데이터를 전송할때 인터넷을 활용하고, 수많은 노드(=서버)를 거쳐서 전달되는걸로 이해했는데 맞나요? 2. 8분 13초쯤에 논리적 연결이지 물리적 연결을 보장해주지 않는다는 것을 말씀하시면서 그 사이의 서버들이 연결되어 있는지는모른다고 표현하셨는데, ack을주고 받는 과정에 3번동안 주고 받았다면 a->b 로 가는 노드들이 적어도 하나이상은 연결되어 있다는거 아닌가요? 만약 그게 아니라면 무슨 연결을 체크한 것인지 이해가 잘 가지 않습니다. 단순히 서버가 존재하는지 여부인가요? 그걸 체크했다고 하더라도 오는길, 가는길이 있을수 밖에 없다고 느껴집니다. 3. 2번이 맞다면 물리적 연결, 논리적 연결이 무엇을 말하고 계신지 잘모르겠습니다. 4. 추가적으로 tcp 없이 데이터를 전송해서 서버가 닫혀있어 전송을 못받은 경우와 ack을 3번 주고 받은 경우에 ack을 주고 받는게 속도가 더 빠른가요? 질문을 바꿔서 tcp없이 데이터를 전송하는 그 자체로 해당 서버에서 데이터를 받았는지 안받았는지 체크할수 있는것 아닌가요? 근데 굳이 연결상태를 먼저 체크하고 보내는 이유가 궁금합니다. 보안이나 ack으로 체크하면 데이터 자체로 체크하는것 보다 속도가 빠르다 정도로 예상해봤습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
지속연결과 put 메서드 질문드립니다
HTTP에서 맨 처음에 클라이언트-서버가 연결하고 있으면 서버가 계속 연결을 유지해야 하니까 자원이 많이 낭비돼서 비 연결성으로 요청 -> 응답 -> 종료 이렇게 바꿨는데 이러면 너무 오래걸리니까 지속 연결을 사용한다는데 결국 지속 연결 사용하면 맨 처음 자원이 많이 낭비 되던 시절로 돌아간 건가요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github권한주시면 감사하겠습니다
인프런 아이디 : power4895@naver.com 인프런 이메일 : power4895@naver.com깃헙 아이디 : power4895@naver.com 깃헙 Username : power4895-web
-
미해결Spring Boot JWT Tutorial
강사님에게 바라는 점
JWT TOKEN을 만들기 전에 SPRING SEUCRITY 기초 지식에 부딪혔습니다. 물론 부족한 지식은 겨우 겨우 공부해가면서 보충했습니다. UserDetailsService라든지 Filter든지 다음 강의를 만드실 때는 초급자를 위해 이론에 대해 차근차근 설명해주셔서 SPRING SECURITY에 관한 강좌좀 만들어주셨으면 하는 바램이네요. 강의 마지막 부분에 가르쳤던 spring security를 적용해서 OAuth, Session, JWT token 로그인 관련 강의를 만들어 주시면 많이 볼 것 같습니다.