안녕하세요. vue.js를 사용하다 리액트를 배우고 있습니다. 현재 회사에서 진행중인 프로젝트에서 일부는 뷰, 일부는 뷰+nuxt.js를 사용합니다. 뷰만 사용하는 페이지는 SSR이고, nuxt.js는 CSR라고 합니다.(상사의 설명) 질문 // 리액트는 무조건 CSR로 되는건가요? next.js를 사용하면 크게 어떤점이 다른가요? (이 프로젝트 후 한입next 수강예정입니다..간단하게 먼저 질문드립니다.) 프로젝트와 뷰js를 완벽하게 이해하지 못해서 질문이 명확하지 못해 죄송합니다.
안녕하세요. 섹션 3 퀴즈에서 5번 문제 관련 질문 드립니다. 질문: persist 미들웨어 사용 시, 액션 함수가 기본적으로 저장되지 않는 이유는 무엇일까요? 해설: persist 미들웨어는 상태를 JSON 형태로 저장하기 때문에, JSON으로 직렬화할 수 없는 함수는 저장하지 않아요. 따라서 serialize 옵션으로 상태만 저장하는 것이 좋습니다. 강의에서 serialize 가 아닌 partialize 로 설명해주셨는데, 이 부분 확인 부탁드립니다.
안녕하세요. 좋은 강의 잘 수강하고 있습니다! 다름이 아니라 포스트 삭제 후에 무한 스크롤이 작동하지 않는 문제가 발생했습니다. 문제 상황은 다음과 같습니다. 첫 페이지(다음 페이지의 데이터를 페칭하지 않은 상태)에서 작성한 포스트를 삭제 이후 페이지 최하단까지 스크롤 했지만 무한 스크롤 데이터 페칭이 이루어지지 않음 부족한 실력이라 AI의 도움을 받아 원인을 분석했을 때 다음과 같았습니다. 아래는 AI의 답변입니다. 무한 스크롤이 작동하지 않는 원인 분석: getNextPageParam 의 로직 useInfinitePostData 훅에서 다음 페이지를 불러올지 결정하는 로직은 다음과 같습니다: // src\hooks\queries\use-infinite-posts-data.ts // ... const PAGE_SIZE = 5; // ... getNextPageParam: (lastPage, allPages) => { if (lastPage.length < PAGE_SIZE) return undefined; // 🚫 문제의 원인 return allPages.length; }, 이 로직은 "마지막으로 불러온 페이지의 항목 개수가 PAGE_SIZE (5개)보다 적으면, 더 이상 데이터가 없으므로 undefined 를 반환하라 (즉, 다음 페이지를 불러오지 마라)"고 지시합니다. 삭제가 로직에 미치는 영향: 초기 상태: 0번 페이지에 5개의 게시글이 있습니다. ( lastPage.length = 5) 삭제 이벤트: 사용자가 0번 페이지의 게시글 1개를 삭제합니다. 캐시 업데이트: useDeletePost 의 onSuccess 에서 해당 게시글 ID를 0번 페이지의 캐시 데이터 에서 제거합니다. 결과: 0번 페이지의 항목 개수가 5개에서 4개 로 줄어듭니다. 무한 스크롤 시도: 사용자가 스크롤하여 ref ( inView )가 활성화됩니다. getNextPageParam 실행: React Query는 0번 페이지의 현재 캐시 데이터 를 확인합니다. lastPage.length 는 이제 4 입니다. 잘못된 판단: 4 < PAGE_SIZE (5) 이므로, getNextPageParam 은 즉시 undefined 를 반환 합니다. 따라서 1번 페이지(실제 서버에는 데이터가 있을 수 있음)를 불러오기도 전에, 캐시 데이터가 줄어든 것 때문에 다음 페이지 로딩이 차단 되어 무한 스크롤이 작동하지 않게 되는 것입니다. 마지막 페이지에 속한 포스트를 삭제했을 때, PAGE_SIZE보다 항상 작아지니 다음 페이지가 없다라고 판단하기에 무한 스크롤이 작동하지 않는다고 이해했습니다. 캐시를 무효화해 리페칭해서 해결하려고 하는데, 다른 대안이 있을까요? 혹여 제 실수로 잘못된 동작이 일어난 건지 GitHub Repo도 같이 첨부했습니다! https://github.com/scseong/onebite-sns
어노테이션을 사용한 Listener 를 정의할 때 @Component 어노테이션으로 빈으로 등록시켜줬는데, 실제로 Listener 클래스를 지정할때는 new ServerRackControlListener() 로 직접 생성해주고있네? 빈으로 등록한것과, 직접 생성한 것이 서로 연관되지 않는것 같은데 빈으로 주입받아서 넣어주는게 좋을까 아님 Listener 클래스를 빈으로 등록하지 않고 직접 생성해서 사용하는게 좋을까? 배운대로 Listener 클래스에서 JobExecution 이나 StepExecution 을 사용하는데, Job 실행이나 Step 마다 Execution 이 다를 수 있으니까 빈으로 등록하지 않아도 될 것 같은데 어떻게 생각해?
안녕하세요. 좋은 강의로 Next.JS 수강을 마쳤습니다. 그런데 수업노트에 있는 강의 피드백 폼 링크가 엉뚱한 곳으로 연결 됩니다. https://forms.gle/MhvAagJvttQCtS1f6 링크 주소를 치고 들어가면 제대로 들어 접근하는데.. 링크를 클릭하면 다른 곳으로 연결됩니다. 수정이 필요합니다.
안녕하세요. 강의 잘들었습니다. 강의를 듣고나서 궁금한 점이 있어서요. WebFlux의 스케줄을 통해서 스레드를 분리해서 JPA를 사용한다고 봤고, 그리고 신뢰성이 떨어져도 괜찮은 데이터는 R2DBC를 사용한다고 보았습니다. 그렇다면, 스케쥴의 스레드를 최대한 사용하지 않고 WebFlux에서 지원해 주는 컴포넌트를 사용하는게 최적이라고 생각되는데 맞을까요? 제 짧은 생각으로는 JDBC를 사용하면 결국에는 스레드 풀을 사용할 것이고, 사용자가 많아지면 많아질수록 스레드는 부족할 것이라고 생각이 돼서요. 이렇게 되면 WebFlux를 사용하는 이유가 점점 퇴색될 것 같다는 생각이 듭니다. 그렇다면 제가 생각하기로는 WebFlux를 사용하면서 지원하는 컴포넌트(Netty가 지원해 주는 컴포넌트)를 잘 알고, 적절한 Stream 함수를 알고 사용하는 게 제일 중요하다고 생각되는데, 이게 맞는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 자바 고급편 수준이 저한테 높아서, 느린 배속으로 반복해서 내용을 겨우 이해는 했는데 강의 내용이 자기 것으로 되었다는 느낌이 없고 교안이나 영상 없이는 이론 설명이나 예제 코드 작성이 잘 안 됩니다. 강의 내용을 자기 것으로 체화하신 분들은 어떻게 복습하셨나요?
안녕하세요. next.js 16 버전으로 해당 강의를 보며 달리고 있는데요. revalidateTag 설정에서 파라미터 값이 하나 더 늘어나 있습니다. revalidateTag(tag: string, profile: string | { expire?: number }): void; tag 파라미터 뒤에 profile 파라미터를 넣어야 하네요. 기본적으로는 'max' 값을 넣었고, expire로 사용자 지정 만료 동작을 위한 값을 지정하게 되어 있습니다. 이것이 구체적으로 어떤 매개변수인지 궁금합니다. 그리고 이전의 tag 파라미터만 있을 경우 와 같은 조건의 매개변수 값은 어떻게 되는지 알고 싶습니다.
예시만 봤을 때는 continue와 pass의 차이점이 명확히 구분되지 않는 것 같아 질문드립니다. 1. continue: if문에 해당하여 continue를 만나면 (print가 있다는 가정하에) 출력하지 않고 다음 반복으로 넘어감 pass: if문에 해당하여 pass를 만나면 그 부분만 지나가고 (print가 있다는 가정하에) 밑에 출력은 실행함 저는 이렇게 이해하고 있는데 오류가 있을까요? 2. pass 예제2번에 else 없이 print(i)만 있었더라면 3도 출력이 되는건가요?
안녕하세요 멘토님, 정말 쉽게 설명해주셔서 수업 잘 듣고 있습니다. 인증 처리하기 부분에 대해서 흐름도를 자세하고 재밌게 설명해주셔서 덕분에 이해하기 수월했습니다. 다만 현재 토큰들을 localStorage에 저장하고 이 값을 zustand로 관리하고 있는 것 같은데 사실 토큰을 storage에 저장하는 방식이 일반적이지는 않은 것 같습니다. 이 부분에 대해서 찾아본 결과 supabase를 이용하기에 쿠키에 저장하는 건 무리인 것 같고, 그렇다면 그나마 토큰을 메모리에 저장하는 방식이 안전할 것 같습니다. 로그인을 진행하면 토큰이 localStorage에 저장되는 형태인데, 이때 만약 storage에 저장하지 않고 메모리에 받게하려면 어떻게 할 수 있을까요 .. ? 또한 사실 토큰 자체를 zustand에서 가지고 있는 것도 괜찮은지 의문입니다.. 전역상태로 들고 있는 것이라서 충분히 탈취위험이 있을 것이라고 생각이 되어서요.. 사실 백엔드 서버가 있었다면 쿠키에 저장하는 로직으로 진행했을 거 같은데 만약 이때는 로그인 상태를 어떻게 판별하는지에 대해서도 궁금합니다 !