안녕하세요 제로초님 next 15버전으로 바뀌고나서 새로 처음부터 다시 강의를 들으면서 만들어 보고 있습니다. next 15버전으로 바뀌고 나서 옛날꺼랑 msw 설정이 바뀌었더라구요 그런데 강의대로 msw 설정을 하니 ssr 적용이 제대로 안되는 것 같습니다. msw 설정 후 페이지의 network 탭에 localhost document의 미리보기 내용이 없습니다. ssr이 된다면 document에 미리보기에 내용이 넘어와야 하는데 msw 설정 후에 없습니다. 옛날에 만들어 놓았던, next14 버전으로 했었던 프로젝트에서는 미리보기에 내용이 잘 담겨 ssr이 잘되고 있고, 15버전으로 진행한 프로젝트에서 layout에 있는 mswprovider 컴포넌트를 없애주니 다시 미리보기에 내용이 생기는 것으로 보아 msw 설정에서 문제가 생긴 것으로 추측됩니다. 아래는 옛날 14 버전으로 진행했던 코드입니다. msw 2.1 버전입니다. "use client"; import { useEffect } from "react"; export const MSWComponent = () => { useEffect(() => { if (typeof window !== "undefined") { if (process.env.NEXT_PUBLIC_API_MOCKING === "enabled") { require("@/mocks/browser"); } } }, []); return null; }; 아래는 지금 하고있는 코드입니다. msw 2.7.3 버전입니다. "use client"; import { Suspense, use } from "react"; import { handlers } from "@/mocks/handlers"; const mockingEnabledPromise = typeof window !== "undefined" // browser일 때 ? import("@/mocks/browser").then(async ({ default: worker }) => { if (process.env.NODE_ENV === "production") { return; } await worker.start({ // msw가 처리할 수 없는 요청이 들어왔을 때 onUnhandledRequest(request, print) { if (request.url.includes("_next")) { // next가 내부적으로 처리하는 url이기 때문에 msw가 처리할 필요 없음 그래서 return return; } print.warning(); }, }); worker.use(...handlers); (module as any).hot?.dispose(() => { worker.stop(); }); console.log(worker.listHandlers()); }) : Promise.resolve(); export function MSWProvider({ children, }: Readonly<{ children: React.ReactNode; }>) { // If MSW is enabled, we need to wait for the worker to start, // so we wrap the children in a Suspense boundary until it's ready. return ( <Suspense fallback={null}> <MSWProviderWrapper>{children}</MSWProviderWrapper> </Suspense> ); } function MSWProviderWrapper({ children, }: Readonly<{ children: React.ReactNode; }>) { // use 사용해서 promise 실행 기다리고 children return use(mockingEnabledPromise); return children; } 제 추측으로는 MSWProvider에 있는 Suspense때문에 ssr 이 안되는 것 같은데, 맞는지 궁금합니다. 그리고 맞다면 next 사용시 msw로 데이터를 mocking 하게 되면 ssr 확인을 어떻게 해야 할까요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 그대로 했는데 제 선택자는 선택이 되지 않네요. 어디를 고쳐야 하나요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 문제1번을 풀었는데 좀 달라서요..답은 나오는데 역시 틀렸다고 보는게 맞겠죠?
안녕하세요~ 닭가슴살 과제 해보던 중 첫번째 상품만 출력되어 문의드립니다. 돌려보면 대부분 첫번째 상품만 출력되지만, 어쩔 땐 애매하게 10개정도 출력이 될때도 있고, 좀 복불복이더라구요.. 무엇이 문제일까요?ㅠㅠ from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from bs4 import BeautifulSoup import time import pandas as pd data = [] #크롬 드라이버 생성 driver = webdriver.Chrome() # 페이지 이동 driver.get("https://search.shopping.naver.com/search/all?query=%EB%8B%AD%EA%B0%80%EC%8A%B4%EC%82%B4") html = driver.page_source soup = BeautifulSoup(html, 'html.parser') #스크롤 전 높이 last_height = driver.execute_script("return document.body.scrollHeight") while True: #스크롤 끝까지 내리기 driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") #잠시 대기해줘야, 한번만 작동하지 않고 무한반복함 time.sleep(2) #스크롤 후 높이 new_height = driver.execute_script("return document.body.scrollHeight") #비교 (if, break문) if new_height == last_height : break #스크롤 전 높이 업데이트 last_height = new_height products = soup.select(".product_item__KQayS") for product in products: # 상품명 name = product.select_one(".product_title__ljFM_").text # 상세페이지 링크 link = product.select_one(".product_title__ljFM_>a").attrs['href'] # 가격 price = product.select_one(".price_num__Y66T7").text.split('원')[0].replace(',','') print(name, link, price) data.append([name, link, price])
먼저 좋은 강의 감사합니다. Airflow Limitation 내용 중 Inefficient for Short Tasks 라는 말씀 하셨는데요. 실무에서 Datapipeline 을 구성할때 해당 Task 을 잘게 자르게 되는데, 혹시 경험적으로 기준 시간은 어느 정도 수행 시간 이상으로 Task를 나눠야 효과적일까요?
안녕하세요. 제네릭 하한 바운드(super) 관련해서 질문 드립니다. 상한 바운드(extends) 같은 경우에는 현재 실무에서도 유용하게 사용하고 있는데요. 다만 하한 바운드는 실무에서 한번도 사용해본 적이 없습니다. 하한 바운드는 결국 Object까지 거슬러 올라갈 수 있기 때문에 이점이 없다고 생각하고, 보통은 상한 바운드로 해결이 되었기 때문인데요. 혹시 하한 바운드에 대한 활용 사례를 간단히 설명해주실 수 있으실까 해서 질문 드립니다!
안녕하세요 강사님 질문이 있습니다. fallback 상태일때는 SEO가 적용이 되지 않는것은 이해가 됐는데 서버에서 요청한 페이지(book/4)를 내려주면 결국 해당 페이지에 대한 SEO가 다시 잘 적용이 되는데 굳이 fallback 상태일때도 SEO를 신경써줘야하는 이유가 있나요?
안녕하세요 강의 듣다가 문득 궁금한점이 생겨서 질문드립니다. ArticlePageResponse 클래스에 List<ArticleResponse> articles; 를 구성으로 하여 클래스를 생성해주셨는데 ArtlcieResponse를 상속하여 만들어진 ArticlePageResponse를 활용하여도 상관 없을까요?? 자바, 스프링을 동시에 공부하고 있다보니.. 주니어의 허접한 질문에 답변해주시면 감사드리겠습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] Thread 의 yield 함수에 대해서 질문드립니다 . 양보를 할지 말지 에 대한 hint만 주는것이고 스케쥴링이 알아서 양보 여부에 대해 정한다고 하셨는데 만약에 양보를 하게되면 que의 제일 뒤로 가게 되는건가요? 만약에 que에 10개의 일이 쌓여있으면 양보를 하게되면 10개가 다 끝나고 실행 되는 건지 아니면 1~~n개가 실행되고 그다음에 실행 되는 건지는 모르는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요! 항상 좋은 강의 감사드립니다. BlockingQueue는 스레드가 동시에 접근하였을때 동시성 제어를 위한 자료 구조인데 세마포어 개념도 동시에 스레드가 접근 하였을때 가능한 스레드 수를 제어하는 개념인 것을 공부하였습니다. 어떤 상황에서 BlockingQueue 를 쓰고 어떤 상황에서 세마포어를 쓰는게 더 좋을까요? 락을 획득하였을떄 Queue 는 FIFO 구조이므로 순서를 보장해주고 싶을 떄 BlockingQueue 를 쓰는게 좋나요? 세마포어는 스레드가 직접 자원을 획득하기 전까지 기다리니까 동기이고 비동기는 큐에 넣고 다른 일을 하러 가는 즉 호출한 함수가 처리 결과를 기다리지 않는 비동기여서 동기/ 비동기 차이를 구분하고 싶을때 쓰는게 둘을 구분해서 쓰는게 좋을까요?
안녕하십니까, 강의에서 배운 평가지표를 이용하여 anomaly detection을 진행하고자 합니다. 문제는 다음과 같습니다. anomaly detection에서는 TN(이상이 없다고 잘 예측함)비율이 압도적으로 많은 상황입니다. 제 생각에는 ROC-AUC에서 FN 비율이 높아져도 FP비율이 낮다면, 여전히 ROC-AUC에서는 높은 성능을 보인다 생각했습니다. 따라서 FN에 linear하게 반응하는 F1-max를 사용하고자 했습니다. 하지만 주변에서 다음과 같은 답변을 받았습니다. Anomaly detection을 위핸 manual threshold가 문제라는 것 같네요. 해당 부분 분명히 문제가 맞습니다. 하지만 이 부분이 AUROC라는 평가지표가 잘못되었다라는 주장을 하기에는 적절한지 아직 의문입니다. AUROC는 다양한 threshold를 두어 종합적으로 평가하기 때문입니다. 개인적으로 TN의 비율이 압도적인 것은 anomaly를 탐지하는 AD에서는 문제가 되지 않는다고 생각합니다. AUROC에서 역시 TN은 사용되지 않습니다. 모델이 모든 샘플에 대해 normal이라고 말하거나 혹은 그 반대여도 역시 AUROC는 낮아집니다 물론 F1-max도 중요하지만, 제 생각에는 여전히 AUROC로 평가하는 것은 유의미합니다. 하여, 의견이 궁금하기에 글 남깁니다. 이상입니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하십니까 선생님, 영속성 컨텍스트의 변경 감지에서 질문있습니다. 강의 내용 중 엔티티 클래스에는 가급적 Setter를 사용하지 말라고 하셨는데(특히 실무에서) 변경 감지라는 게 엔티티를 조회하여 영속성 컨텍스트에 저장을 해야 이 영속성 컨텍스트의 스냅샷을 통해 엔티티 필드의 값에 변경이 일어났을 때 update를 시키는 것이고 결국 엔티티의 필드를 수정 해야 하는데 그럼 필드를 수정하기 위해선 또 결국 Setter를 사용할 수밖에 없는 것 아닌가요???