학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. package generic.ex1; public class BoxMain3 { public static void main(String[] args) { GenericBox<Integer> integerBox = new GenericBox<Integer>(); integerBox.set(10); // integerBox.set("문자"); // integer 타입만 허용, 컴파일 오류 발생 Integer integer = integerBox.get(); } } GenericBox<integer> 이렇게 작성하면 T 타입이 Integer로 바뀐거라고 하셨는데 그러면 Integer integer = integerBox.get();을 굳이 안 해도 되고 integerBox.get();이렇게만 적어줘도 되는 거 아닌가요? 또 다시 Integer 타입으로 설정해주는 이유는 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 프로젝트 환경 설정 강의 3번째 파트 view 환경설정하는 부분에서 index.html 파일이 실행이 안 됩니다. out 파일 삭제, 캐시 삭제, http://localhost:8080 직접 쳐서 접근, 포트 삭제 다 해봤는데도 사파리, 크롬 둘 다 welcome 페이지가 뜨지 않습니다. 어디가 문제인 걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. package generic.ex1; public class BoxMain2 { public static void main(String[] args) { ObjectBox objectBox = new ObjectBox(); objectBox.set(10); Object object = objectBox.get(); System.out.println(object); } } 이렇게 해도 잘 출력되는데 다운캐스팅을 또 해줘야 하는 이유가 무엇인가요?
org.springframework.security.oauth2.jwt.BadJwtException: An error occurred while attempting to decode the Jwt: Signed JWT rejected: Invalid signature at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.createJwt(NimbusJwtDecoder.java:180) ~[spring-security-oauth2-jose-5.7.3.jar:5.7.3] at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.decode(NimbusJwtDecoder.java:137) ~[spring-security-oauth2-jose-5.7.3.jar:5.7.3] at io.security.oauth2.resource.server.filter.authorization.JwtAuthorizationRsaPublicKeyFilter.doFilterInternal(JwtAuthorizationRsaPublicKeyFilter.java:38) ~[classes/:na] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:223) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.22.jar:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.22.jar:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na] Caused by: com.nimbusds.jose.proc.BadJWSException: Signed JWT rejected: Invalid signature at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:378) ~[nimbus-jose-jwt-9.22.jar:9.22] at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:303) ~[nimbus-jose-jwt-9.22.jar:9.22] at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.createJwt(NimbusJwtDecoder.java:154) ~[spring-security-oauth2-jose-5.7.3.jar:5.7.3] ... 57 common frames omitted 이런 에러가 발생하고 있습니다. 이유를 잘 모르겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 섹션9의 지역클래스 - 지역변수캡처3 강의의 2:45 구간에서, 람다는 나중에 다른 강의에서 설명해주신다고 하셨는데, 혹시 그 다른 강의가 무슨 강의인지 알 수 있을까요? 다른 강의의 대시보드에서 찾을 수 없었습니다.
안녕하세요. 이 강의를 마치고 비동기 spring boot를 공부 하고 있습니다. Reactor이라고 부르던데 mvc와 크게 다른거 같지 않는거 같은데 코딩이 생각 보다 어렵네요.... mvc랑 코딩 자체가 틀림 ... 솔직히 질문드리기가 너무 죄송합니다. 근데 답변 해줄 분이 안계셔서 ..여기에 질문 드리네요 .. . . . . 질문 내용은 @Aspect 이딴걸 왜 하는거냐 입니다. class A 아래 함수에 주석을 원래 하는거지만 주석을 제거 하려면 이걸 Aspect를 해야한다고 하네요.... @GetMapping("/test/mdc") suspend fun testRequestTxid() { // withContext(MDCContext()) { logger.debug { "start MDC TxId" } delay(100) service.mdc() logger.debug { "end MDC TxId" } // } } 이과정이 꽤나 복잡합니다. class B처럼요 class B Mapping을 대신할 어노 테이션을 만드는거 내용이라고 생각 됩니다. classA에 @GetMapping을 하면 아래 class의 hindMdcContext를 사용하게끔 하는거 같아요... 질문 드릴껀 이 과정이 왜 필요한거죠??? 의도가 잘 파악이 안되서요... trance id를 생성하고 class A가 완전히 처리 될때까지 블러킹 하기 위해서 그런거 같은데 이렇게 까지 해야되나 싶네요... 내용은 아직도 파악 중입니다. ^^ 현제 ProceedingJoinPoint가 뭔지 파악 중에 있고요 ... @Aspect class AspectConfig { @Around(""" @annotation(org.springframework.web.bind.annotation.GetMapping) """) fun hindMdcContext(jp: ProceedingJoinPoint): Any? { return if(jp.hasSuspendFunction) { val continuation = jp.args.last() as Continuation<*> val newContext = continuation.context + MDCContext() val newContinuation = Continuation(newContext) { continuation.resumeWith(it)} val newArgs = jp.args.dropLast(1) + newContinuation jp.proceed(newArgs.toTypedArray()) } else { jp.proceed() } } private val ProceedingJoinPoint.hasSuspendFunction: Boolean get() { val method = (this.signature as MethodSignature).method return KotlinDetector.isSuspendingFunction(method) } } 빨리 비동기 강의좀 내주세요 ㅠ.ㅠ 수없는 인강을 들었지만 강사님 만큼 강의 잘하는 강의 못봤어요 ㅠ.ㅠ
저는 현재 nginx로 로컬 환경에서 로드밸런싱을 구성하였습니다. 80으로 접속하면 8080, 8081, 8082 port 중 한 곳으로 접속이 됩니다. 이에 로드밸런싱을 수행하기 전과 후의 성능 테스트를 진행하기 위해 Jmeter 툴을 이용하여 테스트를 진행하고자 했습니다. 우선 가볍게 위와 같이 설정해주었고, Timeout은 10초로 설정하였습니다. 이에 테스트를 수행하면, 정확히 1분 넘어가는 순간 이렇게 에러가 와바박 발생합니다. 대체 왜 이러는 걸까요... nginx 설정으로는 worker_processes 4; worker_connections 4096; 로 해주었습니다. 제가 놓친 부분이 무엇일까요... 제발 도와주십쇼...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 타입 이레이저 를 복습하는 도중에 뭔가 이상한점을 발견해서 질문을 드립니다. 영한님 강의에서 보면 이런식으로 하셨는데 여기서 의문이 2가지 생겼습니다. 이때까지 영한님의 코드를 살펴보면 제네릭 클래스를 만들고, 타입 매개변수( private T value or t1 ;)를 만들었습니다. 근데 여기에서는 바로 ' T '를 사용 하셨습니다. 그리고 2번째 메서드 에서 return new T(); 라는 코드가 이해가 안 갑니다. 즉 첫 번째 질문은 첫번째 메서드 에서 바로 ' T '를 사용하신 이유가 궁금하고 두번째 질문은 return new T() 코드가 어떤 코드인지 설명 해주실수 있으신가요? 답변 부탁 드립니다.
리액트 강의를 듣고 스프링부트랑 연동해서 리액트 코드를 짜고 있습니다. 지금 로그인 부분 처리하다가 막혀서 정말 구글링도 해보고 며칠째 하다가 도저히 해결이 안돼서 질문 드립니다. 지금 로그인처리가 되면 sessionStorage에 로그인 회원 정보를 담고 navigate함수를 이용해 Main컴포넌트로 보냈습니다. 근데 다른 컴포넌트들에서도 이 로그인회원 정보를 사용하기 위해 최상위컴포넌트인 App컴포넌트에서 sessionStorage.getItem()해서 state값에 저장하고 그걸 context로 하위 컴포넌트들에게 제공했는데 로그인되고 navigate함수로 Main컴포넌트로 가면 context로 저장한 state값이 null이 되고 새로고침해보면 state값이 잘 들어오더라고요ㅠㅠ 비동기함수인것과 관련있을까요?? 새로고침없이 컴포넌트에서 바로 state값을 이용하고 싶으면 어떻할까요? state값 이용해서 바로 화면에도 렌더링도 해야하는 상황입니다 ㅠㅠ 강의와 관련된 내용은 아니지만 프로젝트를 혼자 만들다보니 잘 안되는 부분이 많아 질문드립니다 !
안녕하세요 강사님 다른 학생의 질문의 답변을 보고 질문이 생겨서 이렇게 글을 작성합니다. 강사님께서 관계를 끊고 다시 값을 입력하고 싶을 때 다음과 같이 temp를 사용해서 하면 된다고 하셨는데 tempCam1 과 tempCam2를 선언할 때 cam1 과 cam2를 참조하면서 선언이 되는 것이 아닌가요? 그래서 null 값을 입력하면 tempCam도 null 값을 받을 것 같은데 tempCam은 왜 null 값이 되지 않는지 궁금합니다. 좋은 강의 만들어주셔서 정말 감사합니다.
login 시 let setCookie = response.headers.get('Set-Cookie'); 가져오려고 할 때 response.headers에는 뜨는데 samesite 때문에 cookie를 가져올 수 없습니다. 개발자도구에서 samesite 에러 어떻게 해결할 수 있을까요?? 아래와 같이 수정했는데 같은 오류가 발생합니다. if (setCookie) { const parsed = cookies.parse(setCookie); cookies().set('connect.sid', parsed['connect.sid'], { sameSite: 'None', secure: true }); }
시큐리티 강의를 만들어주셔서 너무 감사합니다! 디버깅을 통한 내부 아키텍처 동작원리 이해가 너무재밌습니다 ㅎㅎ 시큐리티에 대한 거부감이 초반에 있었지만, 스프링 시큐리티 동작원리를 이해하게 되므로써 시큐리티가 재밌어지고 활용도 잘할것 같습니다. 그리고 내부 디버깅을 하면서 느낀게 코드 디자인 설계 특히 디자인 패턴에 대해서도 많이 공부할 수 있게되어서 좋은 공부 방향인것 같습니다 ㅎㅎ 다시한번 감사의 말씀을 드립니다.