묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결15일간의 빅데이터 파일럿 프로젝트
zookeeper오류...
2021-07-11 17:25:26,567 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1118] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 2021-07-11 17:25:26,568 [myid:] - WARN [main-SendThread(localhost:2181):ClientCnxn$SendThread@1245] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1224) putty에서 zookeeper-client를 실행시키면 자꾸 반복되서 나오는데 무슨 오류일까요... 구글링을 통해 해결하려는데 쉽지 않아서 여쭤봅니다 ㅠㅠ...
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
osiv 궁금증
안녕하세요 궁금한게 있습니다. osiv를 끌 경우 트랜젝션 범위에서만 영속성 컨텍스트가 유지된다 하셨는데요. 그러면 끄고나서 transaction annotation도 안붙인 메서드에서는 같은 조건으로 select를 하면 매 select시에 영속성 컨텍스트가 새로 생성(?) 되는건가요? 그러면 영속성 컨텍스트를 사용하면서 얻는 장점인 캐시 사용은 의미가 없어지는건가요?
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
셀레니움 실행불가
from selenium import webdriver from selenium.webdriver.common.keys import Keys chromedriver = 'C:/dev_python/Webdriver' driver = webdriver.Chrome(chromedriver) 이렇게 작성했는데 --------------------------------------------------------------------------- PermissionError Traceback (most recent call last) C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\common\service.py in start(self) 71 cmd.extend(self.command_line_args()) ---> 72 self.process = subprocess.Popen(cmd, env=self.env, 73 close_fds=platform.system() != 'Windows', C:\ProgramData\Anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text) 857 --> 858 self._execute_child(args, executable, preexec_fn, close_fds, 859 pass_fds, cwd, env, C:\ProgramData\Anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session) 1310 try: -> 1311 hp, ht, pid, tid = _winapi.CreateProcess(executable, args, 1312 # no special security PermissionError: [WinError 5] 액세스가 거부되었습니다 During handling of the above exception, another exception occurred: WebDriverException Traceback (most recent call last) <ipython-input-1-02e09ad0301c> in <module> 3 4 chromedriver = 'C:/dev_python/Webdriver' ----> 5 driver = webdriver.Chrome(chromedriver) C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 71 service_args=service_args, 72 log_path=service_log_path) ---> 73 self.service.start() 74 75 try: C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\common\service.py in start(self) 84 ) 85 elif err.errno == errno.EACCES: ---> 86 raise WebDriverException( 87 "'%s' executable may have wrong permissions. %s" % ( 88 os.path.basename(self.path), self.start_error_message) WebDriverException: Message: 'Webdriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home이런 오류가 뜨네요...원인이 뭘까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
가져오기(impoting)에서 더이상 진행이 안되요
가져오기(impoting)에서 더이상 진행이 안되요 , 커뮤니티 보고 '유니티를 위한 게임개발' 재설치를 반복했는데 사진처럼 중간까지 로딩하고 진행이 되질않습니다...
-
해결됨스프링 시큐리티
CustomAuthenticationProvider 에서 token의 principal 값 설정
CustomAuthenticationProvider 에서 인증 token의 principal 값 설정하시는 코드가 있습니다. new UsernamePasswordAuthenticationToken(accountContext.getAccount(), null, accountContext.getAuthorities()); 여기서는 principal 값으로 Account 엔티티( = accountContext.getAccount) 를 넣는데요, 왜 spring security에서 제공하는 User 클래스를 상속한 AccountContext가 아닌 Account 엔티티를 주었는지 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
이름공간 질문있습니다
코드에 보면 using namespace std 한부분이 안보이는데 cout과 endl 앞에 std::를 안붙여줘도 작동이 잘되네요 무엇때문에 이렇게 되는 건가요? 또 CreateEvent 함수앞에 ::만 붙여주는게 무슨의미인지 궁금합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
계층의 패키지 위치
controller, service, repository 계층의 패키지 위치가 궁금합니다. 이전 jpa 강의에서는 domain, controller, service, repository의 위치가 각각 다 달랐는데 이번강의는 service, repository는 domain 패키지에 위치해 있고 controller 계층은 web 패키지에 위치해 있는데 이 세게의 계층을 어떻게 구분지어야 잘 설계한걸까요?
-
미해결
엑셀 날짜 서식
안녕하세요 강사님 강의 너무 유용하게 잘 듣고 있는 직장인입니다. 엑셀데이터 이해하기 > 데이터채우기 > 8분 50초 쯤 부분에 나오는 날짜데이터 관련해서 궁금한게 있어서요. 제가 직접 아래와 같이 입력해서 마우스 드래그 했더니 숫자는 바뀌는데 요일은 안바뀌더라구요. 이거는 표시형식에 "날짜"로 설정해놓으면 요일까지도 바뀌던데 "일반"으로 되어있는 상태에서는 요일 변경은 안되는 게 맞죠? 강의에서 바로 '날짜데이터' 라고 말씀하셨어서, 미리 표시형식을 날짜로 바꿔놓으셔서 드레그해도 요일까지 바뀌는거죠^^? 헷갈려서 여쭤봅니다 ~
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
react native가 갑자기 안돼네요
axios 연결하기 전만해도 잘 나오다가 axios 설치 한 후 부터 갑자기 react-native가 설치가 안됐다면 안돼네요 package.json에는 잘 있는데 프로그램을 껐다 켜도 이러네요..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSP 양식 오류
안녕하세요. 인텔리제이 JSP양식 이 문제인지 JSP파일 작성후 자동입력 이 안되는 상황인데 어떻게 고쳐야 할까요??
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
get을 제외한 나머지 메소드들에서의 차이점이 정확히 무엇인가요?
안녕하세요 강의 재밌게 듣고 있습니다! 다름이아니라 제가 알기로는 클라이언트에서 서버에 url과 메소드로 요청을 보내면 서버에서 해당 url과 메소드에 대해 작성되어있는 명령으로 응답을 하는 것으로 알고 있는데 put, delete, patch들도 개발자가 따로 명령어 작성을 통해서 덮어쓰기나 업데이트를 구현 하는것 인가요? 아니면 이미 default로 만들어져있는지 궁금하고 만약 개발자가 따로 명령어 작성을 통해서 기능을 구현하는거면 왜 post다 할 수있는 내용을 구분 지어 놓았는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Junit5 의 Assertions.fail 에 대해 질문이 있습니다.
@Testpublic void 상품주문_재고수량초과() throws Exception { //Given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); //이름, 가격, 재고 int orderCount = 11; //재고보다 많은 수량 //When assertThrows(NotEnoughStockException.class, () -> { orderService.order(member.getId(), item.getId(), orderCount);}); //Then fail("재고 수량 부족 예외가 발생해야 한다.");} 안녕하십니까. 김영한님의 강의를 열심히 수강중인 학생입니다. Junit5에 대해 질문이 있어 글을 올립니다. 제가 Junit5를 배워보려고 강의 진행중 Junit4 대신 Junit5 를 써보았습니다. 그런데 Assertions.fail 때문에 위 코드가 자꾸 실패가 뜨더라고요. 제가 생각한 로직은 김영한님 강의에서 처럼 Assertions.assertThrows 안의 로직에서 예외를 던지면 fail까지 내려오지 않고 그대로 테스트가 성공으로 종료되며, 만약 예외를 던지지 않으면 fail까지 내려와 테스트 실패가 나오는 것이었습니다. 어떻게 코드를 수정하면 될까요? ------------------------------------------------------------------------------------------------------------------ 설명이 부족한 것 같아 추가로 남깁니다. 위 코드는 재고보다 많은 수량이 입력됐을때 예외를 제대로 내뱉는지 확인하기 위한 테스트입니다. 만약 예외를 제대로 뱉었다면 김영한님 강의에서처럼 fail() 까지 안넘어가고 assertThrows 에서 테스트가 종료되고 성공으로 반환되어야 했습니다. 그런데 위 코드에서는 코드 진행이 fail까지 내려가고 그대로 실패가 뜨더라고요. Service, repository와 같은 기타 다른 연관 코드들은 김영한님 코드와 동일하게 작성하였으며, fail을 주석처리하고 위 테스트를 돌렸을 경우 성공처리가 됩니다. 상기 목적을 달성하려면 위 코드를 어떻게 수정하면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
컨버팅 관련 문의드립니다.
안녕하세요. 아래와 같은 변환 로직이 있는데 실무에서 코드를 어떻게 관리를 하는지 궁금합니다. Item item = new Item(); item.setItemName(form.getItemName()); item.setPrice(form.getPrice()); item.setQuantity(form.getQuantity()); ItemSaveForm, ItemUpdateForm 물론 객체가 다르긴하지만 중복코드 느낌이여서 별도로 관리하는 방법이 있는지 궁금합니다. 예를 들어서 필드가 추가되면 그냥 각각 추가를 하나요?
-
미해결웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
강의 PT자료 제공은 안되나요?
안녕하세요. 강의 PT자료 제공은 안되나요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
2:24 오타
HttpServletRequest response ->HttpServletResponse response두번째 파라미터 오타 맞지요?
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
TypeError: Invalid value used in weak set
구글링해봐도 어떤문제인지 모르겠어서 질문드립니다. 오류내용, packge.json, webpack.config.js 소스 이미지 첨부합니다. 강의내용과 똑같이 하였는데 왜그런지 모르겠네요 webpack4 입니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품등록화면, th:action 관련 500오류
http://localhost:8080/basic/items 에서 상품등록버튼을 클릭할때 addForm.html 안에있는 th:action에 따라 오류가 나고 안나고 하는데 무슨원리로 이렇게 되는건지 모르겠습니다 ㅠㅠ addForm.html 부분에서 <h4 class="mb-3">상품 입력</h4> <form action="item.html" th:action="/basic/items/add" method="post"> 이 부분에서 th:action 뒤의부분을 생략을 안하고 실행하게 되었을때 http://localhost:8080/basic/items/add 로 이동하고 500오류가 뜹니다. 그런데 th:action 뒤의부분을 생략하고 실행하면 정상적으로 상품등록화면이 잘 뜹니다. 이때 오류코드는 org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "/basic/items/add" (template: "basic/addForm" - line 21, col 30) at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:131) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:62) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:44) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.EngineEventUtils.parseAttributeExpression(EngineEventUtils.java:220) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.EngineEventUtils.computeAttributeExpression(EngineEventUtils.java:207) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:125) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:136) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:661) ~[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:1396) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1141) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.48.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.48.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 2021-07-11 12:27:30.430 ERROR 18036 --- [nio-8080-exec-1] 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.TemplateProcessingException: Could not parse as expression: "/basic/items/add" (template: "basic/addForm" - line 21, col 30)] with root cause org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "/basic/items/add" (template: "basic/addForm" - line 21, col 30) at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:131) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:62) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:44) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.EngineEventUtils.parseAttributeExpression(EngineEventUtils.java:220) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.EngineEventUtils.computeAttributeExpression(EngineEventUtils.java:207) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:125) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:136) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:661) ~[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:1396) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1141) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.48.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.48.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.48.jar:9.0.48] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 입니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
클라우데라 매니저가 한참을 기다려도 접속이 안됩니다..
클라우데라 매니저가 한참을 기다려도 접속이 안됩니다.. 똑같이 설정을 했는데 무엇이 문제일까요..ㅠㅠ.. 아래와 같이 저 창만 나오고 클라우데라 매니저로 넘어가지 않습니다.. 서버01,02 둘 다 virtualbox에서 실행시켜놓았고, hosts파일도 변경했습니다...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러 호출&실행과 request 스코프 질문 드립니다!!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 듣고 있습니다~! 지금까지 컨트롤러 v1에서는 컨트롤러 내부에서 모델(HttpServletRequest) request에 데이터를 넣고 이 request를 바로 JSP 뷰로 전달&포워드했다면, 컨트롤러 v2에서 각 컨트롤러는 request에 데이터를 넣고 렌더링할 JSP 뷰의 경로만을 리턴하는데요. 리턴되고 다시 원래 코드 흐름으로 돌아왔을 때 어떻게 이 request에 데이터가 그대로 보관되어 JSP로 전달&포워드되는 것인지 궁금합니다. 예를 들어서 메인함수에서 변수 a가 있다고 합시다. 그리고 어떤 연산 처리를 하는 메서드를 호출해서 a를 매개변수로넘깁니다. 메서드가 호출&실행되고 난 후엗도 메인함수의 변수 a는 변함이 없습니다. 이 맥락에서 FrontControllerServletV2 클래스의 service 함수에서 HttpServletRequest를 각 컨트롤러에 매개변수로 넘겨주고, 각 컨트롤러 내부에서 전달 받은 request에 값을 넣어주어도 해당 컨트롤러 실행이 종료되고 난 후 service 함수 내에서 어떻게 request에 데이터가 그대로 보존되고 JSP로 전달되는지 궁금합니다! 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
세션쿠키
안녕하세요. local 로그인을 진행하면 응답의 헤더에 Set-cookie : connect.sid = ~ (그림1) 는 있습니다. 근데 storage에는 세션쿠키가 없어서 원인을 못 찾는 중입니다.(그림2) 문제 해결에 필요하다고 생각되는 부분을 적어보자면, 아래와 같습니다. app.js const express = require("express")const cors = require("cors")const session = require('express-session');const cookieParser = require('cookie-parser');const passport = require('passport');const dotenv = require('dotenv');const morgan = require('morgan');const path = require('path');const passportConfig =require("./passport")dotenv.config()const app = express()const db = require("./models")const userRouter = require("./routes/user")passportConfig();db.sequelize.sync().then(()=>{ console.log("db 연결 성공")}).catch(console.error)app.use(morgan('dev'))app.use(cors({ origin : "*"}))// app.use('/', express.static(path.join(__dirname, 'uploads')));app.use(express.json());app.use(express.urlencoded({ extended: true }));app.use(cookieParser("siwon"));app.use(session({ saveUninitialized: false, resave: false, secret: "siwon",}));app.use(passport.initialize());app.use(passport.session());... passport/local const passport = require('passport');const { Strategy: LocalStrategy } = require('passport-local');const bcrypt = require('bcrypt');const { User } = require('../models');module.exports = () => { passport.use(new LocalStrategy({ usernameField: 'email', //req.body.email passwordField: 'password', //req.body.password }, async (email, password, done) => { try { const user = await User.findOne({ where: { email } }); if (!user) { return done(null, false, { reason: '존재하지 않는 이메일입니다 🥲' }); } const result = await bcrypt.compare(password, user.password); if (result) { return done(null, user); } return done(null, false, { reason: '비밀번호가 틀렸습니다 🥲' }); } catch (error) { console.error(error); return done(error); } }));}; passport/index const passport = require("passport");const local = require("./local");const { User } = require("../models");module.exports = () => { passport.serializeUser((user, done) => { console.log("serializeUser 실행") done(null, user.id); }); passport.deserializeUser(async (id, done) => { console.log("deserializeUser 실행") try { const user = await User.findOne({ where: { id } }); done(null, user); } catch (error) { console.error(error); done(error); } }); local();}; 로그인을 진행하면 serializeUser 실행은 콘솔에 찍히는데 deserializeUser는 콘솔에 찍히지 않습니다. req.user도 생성이 안되는 것을 확인하였습니다. app.js에서 세션설정을 잘못한 거 같아 계속 시도해봤지만 해결되지 않아(storage에 세션쿠키가 없는 것) 질문드립니다 ㅠㅠ ---------------------------------------------------------------------------------- (그림1, POST+prefligth 200) (그림2)