JS 의 Promise 랑 개념이 비슷한거 같아서요 !! MDN 설명 Promise 는 프로미스가 생성된 시점에는 알려지지 않았을 수도 있는 값을 위한 대리자로, 비동기 연산이 종료된 이후에 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있습니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공하겠다는 '프로미스(promise)'를 반환합니다.
안녕하세요 강사님. 섹션1 의 ' MariaDB와 부트 프로젝트생성 ' 에서 VScode 에서 스프링부트 프로젝트 만드실때 3.1.X 버전으로 만드셨는데 지금 보면 3.3.6 이랑 3.4.0 밖에 없는데 3.4로 해도 상관 없을까요? 강사님 강의에서는 jpa 를 쓰는것으로 알고 있지만 3.4.0부터는 mybatis framework도 못쓴다고 해서 여쭤봅니다.. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 데이터베이스(H2) 연동을 하고 데이터를 추가해 보았는데(thymeleaf view template에서 데이터 넣고 엔터) 다음과 같은 에러가 나옵니다. org.h2.mvstore.MVStoreException: The file is locked: C:/Users/user/ test.mv .db [2.2.224/7] at org.h2.mvstore.DataUtils.newMVStoreException( DataUtils.java:996 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.SingleFileStore.lockFileChannel( SingleFileStore.java:143 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.SingleFileStore.open ( SingleFileStore.java:117 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.SingleFileStore.open ( SingleFileStore.java:81 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.MVStore.<init>( MVStore.java:286 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.MVStore$ Builder.open ( MVStore.java:2035 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.mvstore.db.Store .<init>( Store.java:133 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.engine.Database.<init>( Database.java:326 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.engine.Engine.openSession( Engine.java:92 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.engine.Engine.openSession( Engine.java:222 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.engine.Engine.createSession( Engine.java:201 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.engine.SessionRemote.connectEmbeddedOrServer( SessionRemote.java:343 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.jdbc.JdbcConnection.<init>( JdbcConnection.java:125 ) ~[h2-2.2.224.jar:2.2.224] at org.h2.Driver.connect( Driver.java:59 ) ~[h2-2.2.224.jar:2.2.224] at com.zaxxer.hikari.util.DriverDataSource.getConnection( DriverDataSource.java:120 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection( PoolBase.java:360 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry( PoolBase.java:202 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry( HikariPool.java:461 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast( HikariPool.java:550 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>( HikariPool.java:98 ) ~[HikariCP-5.1.0.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection( HikariDataSource.java:111 ) ~[HikariCP-5.1.0.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection( DataSourceUtils.java:160 ) ~[spring-jdbc-6.1.11.jar:6.1.11] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection( DataSourceUtils.java:118 ) ~[spring-jdbc-6.1.11.jar:6.1.11] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection( DataSourceUtils.java:81 ) ~[spring-jdbc-6.1.11.jar:6.1.11] at com.drycow.freeform.freeform_creator.repository.JdbcTodoRepository.getConnection( JdbcTodoRepository.java:138 ) ~[classes/:na] at com.drycow.freeform.freeform_creator.repository.JdbcTodoRepository.findByName( JdbcTodoRepository.java:116 ) ~[classes/:na] at com.drycow.freeform.freeform_creator.service.TodoService.validateDuplicateTodo( TodoService.java:32 ) ~[classes/:na] at com.drycow.freeform.freeform_creator.service.TodoService.create( TodoService.java:25 ) ~[classes/:na] at com.drycow.freeform.freeform_creator.controller.TodoController.create( TodoController.java:37 ) ~[classes/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke( DirectMethodHandleAccessor.java:103 ) ~[na:na] at java.base/java.lang.reflect.Method.invoke( Method.java:580 ) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke( InvocableHandlerMethod.java:255 ) ~[spring-web-6.1.11.jar:6.1.11] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:188 ) ~[spring-web-6.1.11.jar:6.1.11] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:118 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:926 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:831 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1089 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:979 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1014 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:914 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:590 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) ~[spring-webmvc-6.1.11.jar:6.1.11] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:658 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:195 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:140 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:51 ) ~[tomcat-embed-websocket-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:164 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:140 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-6.1.11.jar:6.1.11] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.1.11.jar:6.1.11] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:164 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:140 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-6.1.11.jar:6.1.11] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.1.11.jar:6.1.11] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:164 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:140 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-6.1.11.jar:6.1.11] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.1.11.jar:6.1.11] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:164 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:140 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:167 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:483 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:344 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:389 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:904 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1741 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1190 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run ( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run ( TaskThread.java:63 ) ~[tomcat-embed-core-10.1.26.jar:10.1.26] at java.base/ java.lang.Thread.run ( Thread.java:1570 ) ~[na:na] **위 에러를 해결해보자 jdbc URL을 jdbc:h2:tcp:// localhost ~/test 로 변경해주면 다음과 같은 에러가 나옵니다. Connection is broken: " java.net .UnknownHostException: 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
안녕하세요. 정말 별거 아닌 질문이지만.. [실습] MyString에 복사 생성자 추가 1:50초에서 deep copy를 위한 메서드를 만들라고 하실 때 메서드의 리턴 타입을 MyString으로 하라고 하셨는데.. void라고 이해해도 될까요?.. 좋은 강의 감사히 잘 보고 있습니다. 항상 건강하세요!
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5.3 JSX로 UI 표현하기 편 수강 중, 강의 초반부에 자막 오류가 있는 것 같아 문의 드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. db에 유니크 제약조건을 써서 동시성 접근에 대한 마지막 방어선을 만든다고 하셨는데, 굳이 service계층에 validateDuplicateMember을 두는 이유가 궁금합니다. 그냥 db에 유니크 제약조건을두면 오류가 전파되지 않나요?? db접근 횟수를 줄이기 위함이라면 validateDuplicateMember에서도 db에 접근을 하지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 전 강의에서 Controller에서 Service, Repository 모두 호출이 가능하도록 설계를 할거라고 하셨는데, repository의 내용을 전파하기만 하는 findMembers와 findOne 메소드를 작성하신 이유가 궁금합니다.
안녕하세요 선생님. 강의 너무 잘 듣고 있습니다 !! 스토리지 강의 끝 부분 듣다가 질문이 생겨 글 남깁니다. if (isLoading) { return <div>데이터 로딩중입니다...</div>; } 위와 같이 작성된 if문은 isLoading이 false가 될 때까지 기다려주나요? if문이 실행되었을 당시에 isLoading이 true여서 데이터로딩중이라는 페이지를 반환한 후에도 여전히 로딩이 끝나지 않았다면, 아래 컴포넌트들을 렌더링하는 리턴문을 실행하였을 때 에러가 발생하지는 않나요? 벌써 강의 막바지네요. 선생님의 좋은 강의 덕분에 여기까지 올 수 있었던 것 같습니다. 감사합니다 :) 🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 원시타입과 객체타입 강의를 보다가 궁금한점이 생겨 질문을 드립니다. let p1 = 1; let p2 = p1; p2 = 2; 이렇게 1에서 2로 재할당을 하면 메모리상에는 원래 1이 있었는데 새로운 메모리에 2가 추가가 되면서 해당 공간을 가리키는데 메모리 공간에 저장되어 있던 1은 수정되지 않는다...라고 이해하고 있습니다. 그럼 여기서 1은 수정만 되지 않을 뿐 없어지지 않고 그대로 1이 저장이 되어있는건가요? 그리고 객체타입에서는 값을 변경하면 원본이 바로 변경되므로 안전하게 ... 스프레드로 값을 복사해서 사용한다라는 설명이 맞나요?