묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결3D 모델링 입문을 위한 라이노(Rhino) '꿀팁' Part.1
음영설정을교수님께서 말씀하신대로 하였는데 색깔이 같지 않습니다.
강의 자료로 음영등을 설정하였는데 교수님과 동일하지 않습니다. 무었을 잘못하였는지요?그리고 서피스표시인 선도 나타나지 않네요.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터에서 안드로이드 SDK API를 사용하려면?
안녕하세요 강사님강의를 들으며 많은 도움을 받고 있습니다.개인적인 프로젝트를 진행하면서네이티브(안드로이드) API를 사용할일이 생겼는데,이런 부분은 어떻게 접근해야하는지 알려주실수 있을까요?
-
미해결이득우의 꼭 배워야하는 게임 알고리즘
A* 알고리즘에 대해 질문있습니다!
이 강의를 보고, 직접 게임에 적용해보고 싶어서 다시 강의를 수강하며 공부 중인 학생입니다.맵을 만들다보면, 강의처럼 한개의 plane이 아닌 여러개의 plane 또는 오브젝트들이 바닥에 놓여질 텐데 grid를 어떻게 나눠야하는지에 대한 질문입니다!처음에는 2차원 배열로 두고, 그리드를 xOffset,yOffest에 의해 row와 col을 증가시키는 방식을 사용했습니다. 하지만, 코드를 수정하고 생각하는 과정에서 머리가 꼬여버렸습니다ㅜㅜ..두번째로는 하나의 큰 plane을 아래에 두고, 다양한 사이즈와 모양의 plane을 두는 방식을 생각하는 중입니다. 제 주변에 게임 개발자가 없어 이렇게 질문 글을 올립니다. 혹시, 실제 게임 개발시에 a* 알고리즘을 사용한다면 어떤 방식으로 그리드를 나누는지 알 수 있을까요? 알려주신다면 정말 감사합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontControllerServletV5 null 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.lang.NullPointerException: Cannot invoke "hello.servlet.web.frontcontroller.ModelView.getViewName()" because "mv" is null at hello.servlet.web.frontcontroller.v5.FrontControllerServletV5.service(FrontControllerServletV5.java:57) ~[classes/:na] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar:6.0.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]---package hello.servlet.web.frontcontroller.v5; import hello.servlet.web.frontcontroller.ModelView; import hello.servlet.web.frontcontroller.MyView; import hello.servlet.web.frontcontroller.v3.ControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberFormControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberListControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberSaveControllerV3; import hello.servlet.web.frontcontroller.v5.adapter.ControllerV3HandlerAdapter; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @WebServlet(name = "frontControllerServletV5" , urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { private final Map<String,Object> handlerMappingMap = new HashMap<>(); private final List<MyHandlerAdapter> handlerAdapters = new ArrayList<>(); public FrontControllerServletV5() { initHandlerMappingMap(); initHandlerAdapters(); } private void initHandlerMappingMap() { handlerMappingMap.put("/front-controller/v5/v3/members/new-form", new MemberFormControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members/save", new MemberSaveControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members", new MemberListControllerV3()); } private void initHandlerAdapters() { handlerAdapters.add(new ControllerV3HandlerAdapter()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object handler = getHandler(request); if (handler == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } MyHandlerAdapter adapter = getHandlerAdapter(handler); ModelView mv = adapter.handle(request, response, handler); MyView view = viewResolver(mv.getViewName()); view.render(mv.getModel(),request,response); } private Object getHandler(HttpServletRequest request) { String requestURI = request.getRequestURI(); return handlerMappingMap.get(requestURI); } private MyHandlerAdapter getHandlerAdapter(Object handler) { MyHandlerAdapter a; for (MyHandlerAdapter adapter : handlerAdapters) { if(adapter.supports(handler)){ return adapter; } } throw new IllegalArgumentException("handler adapter를 찾을 수 없습니다. handler = "+handler); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } } ---이런 오류가 발생하는데 어디가 문제인제 잘 모르겠습니다..왜 이런걸까요?ㅠㅠㅠ
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
프로브 연결 터미널이 없습니다.
<온도센서를 붙여보자 1> 강의 4:10 부분 "Plugable Terminal" 모듈이 구매한 고추 건조기 세트에 없습니다. 혹시 따로 구비해야 하나요?
-
해결됨롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리
포워드 프록시 서버 문의
안녕하세요 포워드 프록시 서버 문의드립니다. 보여주신 강의 자료에는 웹 서버가 캐시 서버보다 앞에 존재하는 그려져 있는데 포워드 프록시 서버에 대해 찾다 보니깐 포워드 프록시 서버는 웹 서버보다 앞에 존재하는 걸로 나와있는데 어떤게 맞는걸까요?ㅠㅠㅠㅠㅠ
-
미해결퍼블리셔 개인 포트폴리오 홈페이지 제작 완벽 가이드(PDF)
기획서 작성 방법에 대해서 질문드립니다..
안녕하세요 pdf 중 모바일 웹 섹션 부분을 읽고 있습니다..개인 포트폴리오 홈페이지에 기획서를 넣어야 한다고 하셨는데기획서 내용은 어떻게 구성해야 하는걸까요? 혹시 예시나 간단한 가이드를 알려주실 수 있을까요좋은 하루 되세요..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
input
input 사용법 은 어느강의에서 가르쳐 주시나요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
1강 질문입니다.
섹션3까지 듣고 만든 유저를 바탕으로 게시판 API만들어보려고 spring.io로 프로젝트를 아예 새로 만들었는데요다른 건 선생님께서 주신 library-app과 유사한데, external libraries에 java11 추가하고 싶은데 추가 하는 방법을 모르겠습니다.또 new해서 새로 만들기 하면 파일, 스크래치 파일, 디렉토리만 있고 class같은 건 없어요..사실 spring.io말고 그냥 intellij에서 new project하면 처음에 설정하는 이 부분에서 generators도 다른 사람은 엄청 많고 여기서 하던데 저는 4개밖에 없는데 왜일까요..?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
런타임 중 NewObject<>()의 Replicate에 대해 조금 더 궁금합니다.
런타임중에 SpawnActor<>()와 NewObject<>()를 멀티플레이 환경에서 사용하고 싶은데,강의를 듣고 엔진 코드도 살펴보고 문서도 읽어보고 5.3 환경에서 실험도 해보고 했지만잘 모르겠어서 이렇게 질문드립니다." AActor 상속 클래스를 Replicate = true로 하고 서버에서 SpawnActor를 사용해 스폰하면 클라이언트에도 자동으로 생성이 된다. "-> 이건 실험도 해보았고 에픽 포럼 글 확인해보니 맞는거 같습니다위 실험 결과를 토대로 UActorComponent는 어떻게 동작할까? 궁금해서 실험을 해보았을 때 로그를 찍으며 실험해본 결과는 아래와 같습니다. - UActorComponent는 UActorComponent의 Replicate 속성 true false 여부에 상관없이, - 서버에서 NewObject<>()로 생성 후, (여기서 outer는 ACharacter 같은 걸로 설정해서 추후 RegisterComponent()시 문제가 없도록 하고)- RegisterComponent를 통해 등록하면 https://docs.unrealengine.com/5.3/ko/replicated-subobjects-in-unreal-engine/의 과정을 거치지 않았는데도 클라이언트에서도 자동으로 생성이 된다.라는 결과를 얻었습니다. 이게 맞나요? 제 생각엔 'NewObject<>()시 사용한 Outer가 Replicate가 true인 Actor이면, UActorComponent는 UObject를 서브 오브젝트 레플리케이트 시키기 위한 추가 로직(위 문서 링크에 나와있는) 없이도 자동으로 잘 된다' 라는 생각이 드는데이게 맞는건지 아니면 틀린건지 위에 실험도 잘못한건지 잘 모르겠습니다 ㅜㅜ혹시나 맞다면 UActorComponent를 위처럼 동적으로 수정 / 삭제 시 RemoveReplicatedSubObject도 호출하지 않아도 되나요?
-
미해결홍정모의 따라하며 배우는 C++
선택정렬 관하여 다른 코드
이 원리도 맞을까요? 부등호만 반대로 바꾸면 내림차순이 되는 것 같은데 비효율적이진 않은지 궁금합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
explore의 TrendSection에서 data를 useQuery가 아니라 getQueryData로 가져와서 사용해도 되나요?
(afterLogin)의 공통컴포넌트 TrendSection에서 fetch해온 데이터를 아래 코드처럼 explore의TrendSection에서 getQueryData로 가져와서 사용해도 되나요? 일단 잘 나오기는 하는데 제가 getQueryData를 잘 이해하고 사용하는건지 의문이 드네요... const queryClient = useQueryClient(); const data = queryClient.getQueryData(["trends"]);
-
미해결
미디어 쿼리 질문..
@use "@/styles/variables.scss" as *; @mixin text { color: $color-gray-50; line-height: 2.6rem; } @include desktop { .borderBox { position: fixed; bottom: 0; display: flex; width: 100%; min-width: 37.5rem; height: 10rem; padding: 3.7rem 23.8rem; flex-direction: column; align-items: flex-start; gap: 0.8rem; background: $color-gray-10; .contentBox { display: flex; justify-content: space-between; align-items: center; align-self: stretch; .company { @include text; } .customerSupport { display: flex; width: 18rem; align-items: flex-start; gap: 3rem; .privacyPolicy { @include text; } .faq { @include text; } } .sns { display: flex; align-items: flex-start; gap: 1rem; } } } @include tablet { .borderBox { padding: 3.2rem; } } @include mobile { .borderBox { height: 12.6rem; padding: 3.2rem; flex-wrap: wrap; .contentBox { flex-wrap: wrap-reverse; justify-content: space-between; .content { width: 35%; } .company { margin-top: 2.5rem; width: 100%; } .sns { justify-content: flex-end; } } } } } $breakpoint-mobile: 375px; $breakpoint-tablet: 744px; $breakpoint-pc: 1200px; @mixin mobile { @media (min-width: $breakpoint-mobile) { @content; } } @mixin tablet { @media (min-width: $breakpoint-tablet) { @content; } } @mixin desktop { @media (min-width: $breakpoint-pc) { @content; } }여기서 어느 사이즈든 모바일 미디어쿼리만 적용되고 있습니다.. 왜그런걸까요..
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
엠티프로젝트 만드는 것 관련해서 질문 있습니다.
안녕하세요?오랜만에 수업을 들으며 프로그램을 켰는데 예전과 달리 이런 창이 떠서요,수업에 나오는 엠티프로젝트를 만들려면 어떻게 설정해야 하는지 알려주시면 감사하겠습니다.감사합니다.
-
미해결따라하며 배우는 리액트 네이티브 기초
깃허브에서 클론받아온 파일을 실행하려면 어떻게 해야하죠..?
react-native run-ios 해도 안돼요...파일을 새로만들어서 하는게 아니라 클론받아서 하는건데 다른방법이있는건지궁금해요
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 실행시 틀립니다.
안녕하세요 강사님. 문제를 풀고 백준에 제출했을 때 계속 오답으로 나와 질문 드립니다..제가 봤을 때 강사님 코드랑 거의 비슷하게 수정까지 한 것 같은데.. 어떤 부분이 잘못되었는지 확인 한번 부탁드립니다.import java.io.*; import java.util.StringTokenizer; public class Main { final static int MAX = 50 + 10; static boolean map[][]; static boolean visited[][]; /* static int dirY[] = {1, 1, 1, 0, 0, -1, -1, -1}; static int dirX[] = {-1, 0, 1, -1, 1, -1, 0, 1};*/ static int dirY[] = {-1, -1, 0, 1, 1, -1, 0, -1}; static int dirX[] = {0, 1, 1, -1, 0, -1, -1, -1}; static int N, M; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); while (true) { StringTokenizer st = new StringTokenizer(br.readLine()); M = Integer.parseInt(st.nextToken()); // 너비 x N = Integer.parseInt(st.nextToken()); // 높이 y if (N == 0 && M == 0) break; map = new boolean[MAX][MAX]; visited = new boolean[MAX][MAX]; // 1. map 정보 반영 for (int i = 1; i <= N; i++) { st = new StringTokenizer(br.readLine()); for (int j = 1; j <= M; j++) { map[j][i] = Integer.parseInt(st.nextToken()) == 1; } } // 2. dfs int result = 0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (map[i][j] && !visited[i][j]) { dfs(i, j); result++; } } } // 3. 출력 bw.write(String.valueOf(result)); bw.newLine(); } bw.close(); bw.close(); } private static void dfs(int y, int x) { visited[y][x] = true; for (int i = 0; i < 8; i++) { int newY = dirY[i] + y; int newX = dirX[i] + x; if (map[newY][newX] && !visited[newY][newX]) { dfs(newY, newX); } } } }
-
미해결React + API Server 프로젝트 개발과 배포 (CI/CD)
vite 사용 안하고 CRA 프론트 백 분리시켜서 하고있는데 질문있습니다.
vite 사용 안하고 CRA 프론트 백 분리시켜서 하고있는데 질문있습니다.백엔드 서버에 그냥 node만 받아서 올려놨는데swagger options에 routes 디렉토리가 없으면 어떻게 작성하죠?루트에 index.js를 api 로 사용하는데 그럼 apis: ["./index.js"]이렇게 넣으면 될까요?그리고 swagger 사용에 router 폴더 없이 사용하려고 하는데, 어떻게 해야 스웨거로 넘어가죠??이미 api들은 다 작성한 상태구요
-
미해결입문자를 위한 자바스크립트 기초 강의
생성자 함수 관련 질문 드립니다
생성자 함수로 객체를 생성하기 위해선, new연산을 통해 객체를 반환해야한다고 하셨는데, 객체를 반환을 해야 객체가 생성이 되는건가요? 아니면 객체가 생성이 되고 반환이 되는건가요? 생성과 반환이라는 개념이 약간 헷갈리는 것 같습니다. Date() 는 함수인가요? 객체인가요? 그냥 생성자 함수를 반환하는 것과 생성자 함수로 객체를 생성해서 반환하는 것의 어떤 차이가 있나요? 아직 제 눈에는 둘이 비슷해보여서요.. 함수를 반환하는 것과 객체를 반환하는 것의 목적이 많이 다른건지 설명해주시면 정말 감사하겠습니다.. Dog 함수를 콘솔로 출력시,console.log(Dog)--> Dog 함수를 반환new 연산 + Dog 함수호출문을 콘솔로 출력시,console.log(new Dog())--> Dog 객체 반환
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
select문도 쓰기 지연에 포함인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이전에 질문 남겼는데 좀 대충 작성했더니 질문이 이해 안간다고 하셔서..(ㅠㅠ) 다시 자세하게 작성합니다!질문 : em.find() 하면 select문이 나가잖아요? 이런 경우엔 쓰기 지연이 발생하는게 아닌 것 같다고 생각했는데 맞나요? (동일 트랜잭션 상에서 persist(insert)한 적이 없고, DB에 존재하는 엔티티를 조회한다는 전제입니다.)그렇게 생각한 근거는 1. 이름이 '쓰기' 지연이다. 2. find()한 후에 다음 줄에서 조회한 엔티티를 출력해보면 결과가 나온다.사소한 궁금증인데, 찾아봐도 안나오기도 하고, 강의에서는 update, insert, delete 시 쓰기지연이 발생한다' 라고만 언급하셔서 질문 남깁니다!
-
미해결김영한의 실전 자바 - 기본편
기본편 이후 학습 ...
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]입문편과 기본편까지 강의 다 듣고 다음 강의 기다릴 시간이 없어영상에서 말씀해주신 자바 예외처리와 자바 컬렉션 부분 공부를하려고 합니다. 혹시 추천해주실 강의나, 책 혹은 자료가 따로있으실까요?없다면 언제쯤 중급편 업로드 예정이신지 궁금합니다