안녕하세요 강사님. 강의 잘 보고 있습니다. getServerSideProps 함수와 SSR의 상관관계에 대해 의문점이 생겨 QnA를 찾아보고 있었는데요. 비슷한 질문 이 있어서 해당 답변 참고했는데 이해가 잘 되지 않아서요. 해당 답변에선 getServerSideProps 함수를 선언하지 않으면 SSG로 동작한다고 말씀해주셨습니다. getServerSideProps는 강의에서 말씀하신대로 서버에서 호출되어 미리 데이터를 패칭해주고 props를 주입해주는 용도로 사용된다고 이해했는데요. getServerSideProps 함수를 정의하여 export하면 해당 페이지가 SSR방식으로 동작한다는 내용이 이해가 잘 되지 않습니다. next는 기본적으로 SSR SSG방식으로 동작하는 것으로 알고 있고, 처음 접속하는 페이지는 SSG방식으로, 이후 관련된 Link 등으로 이동시 CSR 방식으로 렌더링 되는 것으로 이해하고 있습니다. 해당 부분에 대해 정확한 동작이 궁금합니다. 또한, getServerSideProps 함수를 정의한 페이지가 만약 현재 접속한 페이지에 Link 컴포넌트로 연결이 되어있다면 관련된 js 코드가 프리패칭 될 것인데요. 이 경우 getServerSideProps 함수를 정의한 페이지가 SSR이 아닌 CSR방식으로 렌더링 되는게 아닌가 질문드립니다. (getServerSideProps 함수는 여전히 서버에서 호출되는 것으로 이해하고 있습니다) 관련하여 클로드 답변 첨부드립니다. (오류가 있다면 정정 부탁드립니다..!) 추가 +) 질문을 하다 보니 다소 난해해졌는데요. 정리하자면 아래와 같이 이해하면 될지 궁금합니다. 기본적으로 접속시 SSG로 렌더링된 사이트를 보여주지만, getServerSideProps 함수를 정의하면 SSR로 요청한다. Link 등으로 연결되어 있는 경우 getServerSideProps 함수를 통해 데이터를 패칭해온다. 이후 페이지 렌더링 자체는 CSR로 진행한다. 항상 좋은 강의 감사합니다.
안녕하세요. 우선 저번과 같이 좋은 강의를 열어주시고, 강의 업데이트도 감사합니다. 100퍼센트 완강하고 좋은 후기 작성 꼭 하고 싶어서 열심히 따라가고 있습니다. 다름이 아니라 질문이 하나 있어서 질문글 남깁니다. 열심히 진도 따라가면서 드는 생각인데, 처음부터 한 번에 PRD에 집어넣어서 기능 다 만드는게 맞는건지, 아니면 고도화를 차근차근 해나가는게 맞을까요? 아 시간은 오래 걸려도 됩니다. 수익화와 테스트를 위해서 재빠르게 mvp 제작을 위해서가 아닌, 진짜 개발할 때의 클로드코드의 토큰 효율성이 궁금해서 질문드리는 부분입니다. 항상 좋은 인사이트 주셔서 감사합니다. 수고많으십니다.
설치를 하다보니 .mcp.json이 .claude 안이 아니라 같은 디렉토리에 설치되더군요. claude code에도 물어보니 이게 표준이라 대답해주고요. 혹시 이게 표준인 이유가 있을까요? claudecode 관련은 .claude 폴더 안에 모아서 관리하는게 편한 것 같은데요. 아니면 설치한 방식에 따라 달라지고 실제 퍼포먼스와는 전혀 상관없이 알아서 참조하나요? 만약 이를 옮기려 한다면 claudecode에게 알려줘야 할까요? 그래야 한다면 claudecode가 프로젝트 내의 디렉토리 안의 .mcp.json을 알아서 찾아서 참조하는게 아니라 특정 디렉토리로 정해져 있다는 걸 텐데요, 그 디렉토리는 어디에 적혀져 있는 걸까요? 그걸 수정할수도 있을까요? 두서없이 길어졌네요. 죄송합니다.
🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요) 제목을 구체적으로 작성해 주세요 ✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다. ⛔ ️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다. 깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요 직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲 답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 Date 객체와 날짜 안녕하세요. 정환님. Date 객체에 관련해서 질문이 있어 Q&A에 글을 남기게 되었습니다. Date 객체는 자바스크립트가 처음 만들어졌을 당시에, java의 util.date 를 참고해서 만들어졌기에 현재 대체제로 외부 라이브러리를 활용하거나 Intl api, Temporal(현재 stage 3 상태)가 많이 언급되고 있는 부분입니다. 추후에 temporal이 정식으로 도입되면 강의 내용을 변경하실 것인지 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 최신 버전인 SpringBoot4 + Hibernate7 을 사용해서 강의를 듣고 있습니다. 이 버전에서는 (Hibernate 모듈 등록 X + 프록시 직접 초기화 X] 상태에서 API 응답으로 엔티티를 곧바로 반환하게 되면, 강의 내용처럼 오류(예외)가 나지 않고, Jackson이 json을 만드는 과정에서 getter 등을 호출해서 프록시 객체들을 자동으로 초기화(로딩)시키는 것처럼 보이네요. 응답 결과에서도 모두 출력되고요 (물론, @JsonIgnore 없으면 무한루프는 발생) 그래서 강의 내용처럼 오류가 나도록 하는 방법을 한참 찾다가 현재 버전에서 Hibernate 모듈을 등록하는 방법을 발견해서 공유해봅니다. (메뉴얼에도 없길래) [등록 방법] 1. 라이브러리 등록 implementation 'tools.jackson.datatype:jackson-datatype-hibernate7' 2. 빈 등록 @Bean public Hibernate7Module hibernate7Module() { Hibernate7Module module = new Hibernate7Module(); // module.configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true); return module; }
안녕하세요, 이부분이 전혀 이해가 안됩니다;;; 맥에서 git까지는 설치가 된것 같은데요, 영상처럼 화살표가 나오는 iterm2 화면은 뜨지 않아요. 그리고 현재 창에서는 이름, 이메일 설정을 하면 진행이 안되구요.. 하나씩 가주시면 좋을것 같은데, 갑자기 저 창이 떠서 어디서 뭘 해야할지 모르겠습니다. 다른분 질문을 봐도 모르겠구요;; 감사합니다
안녕하세요. 강의 너무 잘 보고 있습니다. 한 가지 궁금한 점이 있어서 QnA남깁니다. // __mocks__/zustand.js const { create: actualCreate } = await vi.importActual('zustand'); import { act } from '@testing-library/react' const storeResetFns = new Set(); export const create = createState => { const store = actualCreate(createState); const initialState = store.getState(); storeResetFns.add(()=>store.setState(initialState,true)); return store; } beforeEach(() => { act(() => storeResetFns.forEach(resetFn => resetFn())); }); 위의 __mocks__/zustand.js 에서 reset할 때 true를 사용하는 건 이해가 됩니다. 그런데 아래의 mockZustandStore 에서 replace:true 를 넣었는데 왜 넣어줬는지가 궁금합니다. const mockStore = (hook, state) => { const initStore = hook.getState(); hook.setState({ ...initStore, ...state }, true); }; export const mockUseUserStore = state => { mockStore(useUserStore, state); }; replace:true는 완전히 해당 store에 대한 상태,함수들을 교체 하는것으로 알고 있습니다. 넣어준 의도 또는 이유가 있을까요?? 안 넣어주면 생기는 문제들이 있었기 때문에 replace:true로 한건지 관례로 넣었던 건지