안녕하세요 강사님, 복습하는 과정 중에 Page Router 기준으로 SSR + 프리패칭 + Hydration 흐름을 제가 이해한 대로 정리해보았는데, 이게 맞는지 확인 부탁드립니다. 사용자가 /a 페이지에 있을 때 <Link href="/c" prefetch> 가 있으면, 브라우저는 백그라운드에서 /c.js (코드 스플리팅된 JS 청크)만 미리 받아 캐시에 저장해둔다. → 이 단계에서는 HTML이나 데이터( getServerSideProps 결과)는 가져오지 않는다. 사용자가 실제로 /c 를 클릭하면, 서버가 getServerSideProps 를 실행해서 데이터를 패칭하고, 그 결과를 반영한 SSR HTML + JSON을 브라우저에 내려준다. 브라우저는 HTML을 먼저 렌더링해서 FCP가 나오고, 이어서 캐시에 있던 /c.js 를 실행한다. 그 후 React가 HTML과 JS를 매칭시켜 Hydration을 수행하여 이벤트 핸들러를 연결한다. 즉, SSR 페이지 전환 시 1. User 클릭 → (서버) HTML 생성 및 데이터 패칭 → (브라우저) HTML 렌더링 → JS 실행 → Hydration 이고, 프리패칭은 그 전에 JS만 준비해 두는 과정으로 이해했습니다. 제가 이해한 흐름이 맞을까요? 머메이드로 도식화하자면 다음과 같습니다 . 위가 맞다면, 빠른 페이지 전환을 위해하는 프리패칭을 했지만 결국 데이터 패칭 및 HTML을 서버에서 다시 그려오는데 빠른 전환이 가능한건지 궁금합니다. 혹시 여기서 놓치고 있는 부분이나, 실제 네트워크 요청에서 다른 점이 있다면 알려주시면 감사하겠습니다!
2-3 강 7분~ 안녕하세요. Cursor Rule 관련 부분이 질문이 있습니다. 7분 무렵보면 AI 가 자동 초안을 생성하여 일관성을 향상시켜준다고 하였는데, 이것은 외부 파일을 이어 받아 프로젝트를 진행할때 필요한 과정인건가요? 만약 제가 혼자서 처음부터 끝까지 Cursor 에서 작업을 한다면 따로 Cursor Rule 을 만들 필요까지는 없는건지 아니면 그 경우에도 일관성을 위해 어느정도 코드를 만들어 놓은 상황에서 이것을 진행하여 AI 가 조금 지나고 났을때 잊지 않게 해야하는지 궁금합니다.
weekly retention 구하기 과제 해 봤습니다. 처음에 알려주신대로 두 가지 방법 1) EXTRACT 과 2) DATA_TRUNC 을 써서 각각 해 봤는데 일을 자르는 기준이 달라서 그런지 첫 데이터는 값이 같은데 1주가 차이나는 시점부터 데이터들의 값이 미세하게 차이가 나더라구요. 그리고 차이를 계산할 때도 INT 타입이라 DIFF_DATE 대신 그냥 컬럼끼리 빼는 방법으로 계산해야 됐습니다. 만약 이게 동일 년도 내에서만 해야하는 분석이라면 어떤 방법이 더 좋은지 궁금합니다. WITH base AS( SELECT DISTINCT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM `advance.app_logs` WHERE event_date BETWEEN '2022-08-01' AND '2022-11-03' ) , first_week_data AS( SELECT *, MIN(week_date) OVER(PARTITION BY user_pseudo_id) AS first_week FROM ( SELECT user_pseudo_id, event_date, -- DATETIME_TRUNC(DATE(event_date), WEEK(MONDAY)) AS week_date, EXTRACT(WEEK FROM event_date) AS week_date FROM base ) ), week_diff_data AS ( SELECT *, -- DATE_DIFF(week_date, first_week, WEEK) AS week_diff (week_date-first_week) AS week_diff FROM first_week_data ), first_week_value_data AS( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY week_diff) AS first_week_value FROM( SELECT week_diff, COUNT(DISTINCT user_pseudo_id) AS user_cnt, FROM week_diff_data GROUP BY ALL) ORDER BY week_diff ) SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_value),3) AS retention FROM first_week_value_data
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 풀이 시간에 SELECT distinct u.name, u.email FROM users u JOIN orders o on u.user_id = o.user_id WHERE o.quantity > 1; 한 번의 주문으로 상품을 2개 이상 구매한 고객의 쿼리는 중복제거를 해주셨는데요, SELECT u.name AS 고객명, u.email AS 이메일 FROM users u JOIN orders o on u.user_id = o.user_id JOIN products p on o.product_id = p.product_id WHERE p.category = '전자기기' '전자기기' 카테고리 상품을 한 번이라도 구매한 고객은 중복제거를 해주지 않았더라구요. 하나의 그룹에 고객이 두명이 나오는 게 이상해서 이 경우 distinct 혹은 GROUP BY u.name, u.email을 추가해주어 중복제거 해주면 될까요? distinct 와 GROUP BY 중 어떤걸 사용하는 게 더 좋을까요? 집계함수를 사용하지 않으니 distinct가 더 나을까요?
노랭이 문제분석 경로 링크 : 사용 권한이 없거나 삭제 또는 이동되었을 수 있습니다. 링크를 확인하고 다시 시도하세요. - 페이지를 찾을 수 없음 이라는 창으로 뜨는데요, 경로 확인부탁드려요! https://empty-coriander-983.notion.site/750c3d6b636e46eb95059f475afdba22?v=c3cce66658c641c8a4240bac0382e736&pvs=4
안녕하세요, krag 라이브러리가 pip 서버에는 등록이 되어있는데 상세한 정보는 찾을 수가 없어서 문의드립니다. 일정 한도 내에서는 무료로 사용할 수 있는 Gemini API를 통해서 검색 성능을 평가중에 있는데, 중간중간 NaN값이 나오길래 추적해봤더니 API 분당 호출 수가 초과해서 값을 호출받지 못하는 경우가 생기더라구요. time.sleep을 걸고싶어도 이게 함수 자체로 전체 데이터프레임을 순회하는지라.. 혹시 delay를 넣을 수 있는 옵션이 있을까요?
TypeError: 'int' object is not callable TypeError: 'float' object is not callable 에러 나는데 뭐가 문제일까요? 정수형에서 실수형으로 변경, 실수형에서 정수형으로 변경되는걸로 이해 했는데..ㅜㅜ c=0.7 print(int(c)) b=6 print(float(b))
훌륭한 강의를 설명해주셔서 감사합니다. 벌써 2주차를 끝내고 계속 복습중인데, 문득 궁금증이 생겼습니다. 만약 API 를 끌어왔을때 Cursor 가 잘못된 값을 추출한다고 가정했을때에는 그 가능성에 대비하기 위해 Cursor AI 한테 검토를 다시 해봐줘. 라고 말을 해야할까요? 아니면 Cursor AI 한테 애당초 시킬때 꼼꼼하게 제약들을 많이 걸어둬야할까요 ? 팁이 있으시다면 알려주시면 감사드리겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요, 영한님. 강의를 수강하던 중 아우터 조인과 관련하여 고민이 생겨 질문드립니다. 아우터 조인의 기준 테이블은 질문의 의도에 따라 선정해야 함을 배웠습니다. 그러나 LEFT JOIN 사용의 편의성과 1:N 관계에서 발생하는 행 중복을 피해야 한다는 원칙이 서로 충돌하는 상황에서 어떤 기준을 우선하여 테이블을 선정해야 할지 판단이 서지 않아 문의드립니다. 이 두 가지 원칙이 상충될 때, 어떤 기준으로 우선순위를 결정하고 쿼리를 설계해야 하는지 영한님의 실무 팁에 대해서 바쁘신 와중에 답변해주시면 진심으로 감사하겠습니다.
김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 스크린샷과 쿼리문은 다음과 같습니다. .CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, order_date DATETIME DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT '주문접수', CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customers(customer_id), CONSTRAINT fk_orders_products FOREIGN KEY (product_id) REFERENCES products(product_id) );
안녕하세요 정환님 강의를 듣다 우연히 궁금한 점이 생겨 문의드립니다. 제가 리액트 > 타입스크립트 > next.js 까지 쭉 듣고있는데요! 파일명을 짓는 기준이 궁금하여 문의드려요 리액트 컴포넌트파일명을 지을때는 맨 앞글자가 대문자가 기준인 것으로 알고있었는데 next.js 에서 ${페이지}.tsx 로 지으실때는 search-layout.tsx global-layout.tsx 이런식으로 대시방식을 사용하시는것같더라구요!! 혹시 현업에서 사용하는 파일명짓는 기준이나 일반적인 react,next.js에서 사용하는 파일명 기준이 있을까요?? 실무를 겪어보지 못해 잘 몰라서 해당건 질문드립니다,,,,,, 강의 항상 잘 듣고있어요 감사합니다 🙂
"django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database 'default'." Custome User Model 을 사용할 때, 그냥 migrate를 하게 되면, 위와 같은 에러가 나는 경우가 있음. (일단 저는 났음..ㅠ) ※ 해결 방법 config/settings.py에서 'django.contrib.admin' <-- 이 부분 주석처리 config/urls.py에서, path('admin/', admin.site .urls) <-- 이 부분 주석 처리 저의 경우에는 이렇게 하니까 해결되었습니다.