학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 커뮤니티 보면서 같은오류들 따라해봤는데 잘 안되네요 오류코드: No matching tests found in any candidate test task. Requested tests: Test pattern jpabook.jpashop.MemberRepositoryTest.testMember in task :test * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.10/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 12s 4 actionable tasks: 1 executed, 3 up-to-date
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 영한님 강의를 잘 듣고 있습니다. 의존관계 주입 설명해주실때 문득 궁금점이 생겨서 질문드립니다. 의존관계 주입은 추상적인 것을 의존하게 하고, 나중에 실제 구체적인것을 넣어주는 부분인데 이는 같은 기능을 수행하는 List(Array, Linked)의 경우라고 한다면 처음에는 한가지 기능만 수행하다가, 필요에 의해서 다른 기능을 만들었고 이걸 공통화가 가능하다면 인터페이스로 만들어주는 작업을 진행하면 되는 걸까요? 실무에서 인터페이스는 처음부터 설계를 잡고 들어가는 경우가 많은지, 혹은 필요에 의해 중간에 만드는 경우도 있는지 궁금합니다! 중간에 필요하긴한데 기능이 다 같진 않은 경우에는 어떻게 하는지도 궁금하네요ㅠ
안녕하세요. 면접준비에 도움이 될 거 같고 개념적으로도 궁금해서 질문드립니다. 장바구니에서 삭제를 하면 갱신되는데에 동작원리에서 처음엔 router.replace(router.asPath) 때문에 url이 변경되진 않아도 단순하게 /cart 로 이동이란 동작을 해서 페이지를 다시 그린다고 생각했습니다. CartList 는 CartPage 의 자식 컴포넌트이다. CartPage 는 getServerSideProps 로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList 에게 전달해주고 있다. CartList 는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다. 장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제하고 router.replace 를 통해( router.push 도 동일) 현재 페이지(asPath)인 /cart 로 이동한다. /cart 페이지(즉, CartPage.jsx )가 리렌더링된다. 리액트는 리렌더링되면 컴포넌트의 모든 코드를 다시 실행하게 된다.(고 알고 있습니다.) 그로 인해 getServerSideProps 가 다시 실행되고 갱신된(장바구니에서 상품을 삭제한) 데이터를 다시 CartPage 에게 프롭스로 내려주게 된다. 프롭스가 변경됐으니 자식 컴포넌트인 CartList 도 리렌더링되어 모든 코드가 다시 실행된다. 바뀐 장바구니 데이터로 보여지게 된다. 라고 생각했는데요. https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props#behavior 공식문서를 살펴보니 사용자가 Link 컴포넌트 또는 router를 통해 페이지를 방문할 때 , Next.js는 서버에 API 요청을 보내 getServerSideProps를 실행 합니다. 라고 되어있습니다. 이러면, 현재 CartList 는 CartPage 의 자식 컴포넌트이다. CartPage 는 getServerSideProps 로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList 에게 전달해주고 있다. CartList 는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다. 장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제한다. router.replace 를 통해( router.push 도 동일) 현재 페이지(asPath)인 /cart 로 이동한다. router를 통해 페이지를 방문했으므로 CartPage 의 getServerSideProps 가 다시 실행되고 갱신된 데이터를 CartPage 에게 프롭스로 내려주게 된다. 프롭스가 변경됐으니 자식 컴포넌트인 CartList 도 리렌더링되어 모든 코드가 다시 실행된다. 바뀐 장바구니 데이터로 보여지게 된다. 이렇게 이해하면 될까요? 그리고, getServerSideProps 가 있는 페이지 컴포넌트는 getServerSideProps 가 재실행되면 자동으로 리렌더링되게 되는 구조인가요? 설명해주셨는데 제가 놓친거면 죄송합니다.
public class ThreadStopMainV2 { public static void main(String[] args) throws InterruptedException { Job job = new Job(); Thread thread = new Thread(job); thread.start(); Thread.sleep(4000); log("작업 중단 지시 interrupt"); thread.interrupt(); log("main 스레드 끝"); } static class Job implements Runnable { @Override public void run() { while (true) { try { log("스레드 실행"); Thread.sleep(2000); } catch (InterruptedException e) { log("예외 발생"); break; } } log("작업 끝"); } } } 위 코드의 실행 결과는 아래와 같습니다. 궁금한 부분은 로그에서 작업 중단 지시 interrupt 이후에 대해 궁금한점이 있습니다. 작업 중단 지시 interrupt 를 로그로 찍고 thread.interrupt();를 호출 했습니다. 그러면 생선한 스레드에 interrupt 신호를 보내고 Thread.sleep(2000); 부분에서 예외가 발생해 catch 문으로 빠지는것도 이해했습니다. 하지만 catch 문으로 빠지기전 log("스레드 실행"); 가 실행되지 않나 라는 생각이 듭니다. 그래서 최종 결과는 아래와 같이 catch 로 빠지기전에 스레드 실행이 한번 더 찍혀야 하지 않나 라는 생각이 듭니다. 23:08:15.622 [ Thread-0] 스레드 실행 23:08:17.629 [ Thread-0] 스레드 실행 23:08:19.613 [ main] 작업 중단 지시 interrupt 23:08:19.613 [ Thread-0] 스레드 실행 23:08:19.614 [ main] main 스레드 끝 23:08:19.614 [ Thread-0] 예외 발생 23:08:19.616 [ Thread-0] 작업 끝
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 자바 16부터는 instanceof 를 사용하면서 동시에 변수를 선언할 수 있다고 하셨는데 그럼 if(parent instanceof Child child){child.childMethod()} 여기서 child.childMethod() 는 어떻게 작동이되는건가요? Child child 를 선언하긴했지만 instance 주소값을 대입하지않아서 작동이 되지 않는거 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 영상 에서 try-catch문과 throws으로, 예외를 잡는 것과, 던지는 것을 보았습니다. 현실적 으로는, 이 두 가지 사항이 잘 이해가 가는데, ex) 들수 있는 물건 - try-catch 무거운 물건을 들때 도움을 요청 - throws try-catch : 사람의 힘이나 기계의 힘으로 충분이 해결 가능 throws : 사람의 힘으로 안됨- > 기계의 힘으로도 안됨 -> 포기 코드적 으로는 어떨 때에는 try-cath로 잡고, 어떨 때에는 throws로 던져야 하는지 모르겠습니다. 혹 자바 예외 처리 실습 부분에서 이런 부분을 가르쳐 주시나요? 아니라면 어떨 때 던지고, 어떨 때 던져야 하는지 가르쳐 주시면 감사하겠습니다. 답변 부탁 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] ID 값은 em.persist(member) 가 호출되어 엔티티가 영속성 컨텍스트에 등록되는 시점에 부여되는 것이 맞는 것인지 아니면 DB를 거쳐서 저장되면서 값이 부여되는 것인지 궁금합니다. @PersistenceContext private EntityManager em; public Long save(Member member){ em.persist(member); return member.getId(); } 이 코드를 보면 persist(영속성 엔티티에서 관리될 때)때 id값이 정해지는 것이 맞는 것 같은데 둘 중 무엇이 맞는 개념인가요?
Oauth를 활용해 자체 sso 서버를 구축하려고 하는데 궁금한 게 있어 문의 드립니다. 먼저 구축할 예정인 환경은 아래와 같습니다. 로그인 프론트 Authorization과 로그인을 함께 처리할 백엔드 authorization code 요청 시 로그인 여부를 확인해야 하는데 로그인 정보가 jwt 토큰으로 cookie에 담겨있다면, OAuth2AuthorizationEndpointFilter에서 확인을 해야하는지 OAuth2AuthorizationCodeRequestAuthenticationConverter에서 확인을 해야하는지 궁금합니다.
안녕하세요! NextJS 에 대한 Flow 설명중 질문이 있습니다 9:01 Timeline 유저의 접속요청시 해당 페이지에 대한 내용만 랜더링하여 HTML 을 반환하는 걸까요? 그게 아니고 설명하신 모든 컴포넌트에 대한 렌더링이 이루어지는 것이라면 CSR 방식과 마찬가지로 HTML 반환이 늦어지지 않나 싶습니다 또한 사전 렌더링이 NextJS 서버가 부팅시 이루어지는 행위인지 궁금합니다! (서버 부팅시 랜더링된 HTML 이 생성되는지)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) Spring 환경설정 질문 입니다. 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네, 기존 Q&A에 없는 것 같습니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] 안녕하세요. 초보 spring 입문자 입니다. 강의 1. 프로젝트 환경설정 단계 질문입니다. 강사님께서 말씀하신 스프링부트 스타터 사이트로 부터 해당 hello-spring 프로젝트 생성을 했습니다. 이후 Intellij에서 project로 열면 spring library를 받아와야 할텐데 받질 못하고 있습니다. load Gradle project 를 누르면 hello-project:failed > Connection reset 알람이 뜨네요. 참고로 회사 사무실 PC 환경에서 발생하는 이슈이고, 자택에서 사용시에는 잘 됩니다. 회사 방화벽 문제 일까요 ? 감사합니다.
메서드 프레임은 메서드 영역에 있는 메서드 코드를 기반으로 생성되나요? 객체 생성과 메서드 호출에 대한 메모리 관점 흐름을 정리 해봤는데 맞게 정리한건지 궁금합니다. "객체 생성시 힙 영역에 객체 저장 -> 메서드 호출시 메서드 영역에 있는 호출한 메서드 코드를 찾음 -> 찾은 메서드 코드로 스택 영역에 메서드 프레임을 생성함" 힙 영역에서 메서드 영역에 있는 본인의 메서드 코드를 어떻게 찾는지 궁금합니다.
▲ Next.js 14.2.8 - Local: http://localhost:3000 - Environments: .env ✓ Starting... ✓ Ready in 4.2s ○ Compiling / ... ✓ Compiled / in 3.5s (1022 modules) GET / 200 in 4384ms GET / 200 in 81ms ✓ Compiled /api/auth/[...nextauth] in 364ms (493 modules) GET /api/auth/session 200 in 2386ms ○ Compiling /login ... ✓ Compiled /login in 1020ms (1035 modules) GET /api/auth/session 200 in 1561ms GET /login?_rsc=1pqm1 200 in 126ms ○ Compiling /(.)i/flow/login ... ✓ Compiled /(.)i/flow/login in 731ms (1050 modules) GET /api/auth/providers 200 in 44ms GET /api/auth/csrf 200 in 19ms [auth][error] CallbackRouteError: Read more at https://errors.authjs.dev#callbackrouteerror [auth][cause]: TypeError: Failed to parse URL from undefined/api/login at node:internal/deps/undici/undici:13178:13 [auth][details]: { "code": "ERR_INVALID_URL", "input": "undefined/api/login", "provider": "credentials" } POST /api/auth/callback/credentials? 200 in 40ms GET /api/auth/session 200 in 26ms 윈도우 인데 memurai설치가 도저히 안 되어서 그냥 redis 설치했습니다. 백엔드 코드 실행시키면 redis connected라고도 뜨고, service에도 실행중도 뜨고, hello world도 잘 뜹니다. REDIS_URL=redis://127.0.0.1:6379 //백엔드 env NEXT_PUBLIC_BASE_URL=http://localhost:3000 //z-com 에 있는 .env 이거로도 고쳐봤습니다. localhost:3000/login 여기로 넘어는 가는데 로그인이 안 됩니다. 깃허브에서 코드 잘 가져왔고, 회원가입도 잘 되는데 로그인만 안 됩니다. 뭐가 문제일까요 ㅠㅠ
객체를 생성하는 순간 힙 영역에 객체가 저장(필드값)된다고 알고 있습니다. 메서드를 호출하기 위해서는 우선 객체를 생성한 후에 메서드를 호출해야 한다고 생각합니다. 궁금한 부분은 언제 메서드 프레임의 this에 값이 저장 되는지 궁금합니다. 메서드 호출 할때 힙 영역에 저장되어 있는 객체의 주소값이 this로 저장이 되는건가요?
Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
안녕하세요 강사님. 오늘 Backpressure Example 코드 강의 수강 후 Backpressure Drop 전략 에 대해 궁금했던 부분은 다른 분의 질문을 통해서 해결을 할 수 있었습니다. ( 질문 글 Link ) 해당 글에서 강사님의 답변을 보면 Drop 전략의 경우, 버퍼 안의 데이터가 Subscriber에게 한개 전달되면, 버퍼 공간이 한개 비니까 한개의 데이터가 채워지는것이 아니라 전체 버퍼 중에 70-80 퍼센트 정도(정확한 비율은 나중에 확인 후 말씀드릴게요)가 한번에 비워진다고 보시면 될것 같습니다. 즉, 데이터 한개가 버퍼에서 비워지는 것이 아니라 버퍼가 가득찬 상태에서 Downstream이 데이터를 처리할 수 있는 상태가 될 때까지 Upstream에서 emit된 데이터는 Drop이 된다고 생각하시면 될것 같습니다. 이런 부분이 있는데 혹시 어떤 파일의 어떤 메서드를 보면 해당 내용을 알 수 있을까요 ? ※제가 혼자서 디버그를 통해서 찾아보려고 했는데 잘 찾아지지가 않아서 여쭤봅니다. 😢
자바 실행 시 main 스레드가 생성되고 실행이 되다가 중간에 아래와 같이 스레드를 하나 생성한다고 하겠습니다. MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start(); 이럴 경우 생성한 스레드가 종료 상태가 될때 까지 main 스레드가 기다리는지 아니면 main 스레드는 생성한 스레드의 상태와 아무 관련없이 종료 상태가 되는지 궁금합니다.