inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

[2]_[인프런 빅쿼리 빠짝스터디 3주차] 리텐션 과제와 추가 문제 풀이

미해결

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

유저 상태 new user # User Status 정의 -- "우리 서비스를 이용하는 유저들의 주차별 상태가 어떻게 되나?" /* 1. New User: 해당 주차에 처음 방문한 유저 2. Current User: 지난주에도 방문했고 이번 주에도 방문한 유저 3. Resurrected User: 지난주에는 없었는데 이번주에 다시 방문한 유저 (첫 방문은 아님) 4. Dormant User: 지난주까지는 있었는데 이번주에 방문하지 않은 유저 */ # New User: 해당 주차에 처음 방문한 유저 -- '유저의 첫 방문 주'와 '유저별 이벤트 발생주'가 같은지 확인 -- 같으면, 1 -- 아니면 0 ## '유저의 첫 방문 주' with user_first_visit as ( select user_pseudo_id, date_trunc(min(event_date), week(monday)) as first_visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' group by 1 ) ## '유저의 모든 방문 주' , user_event_week as ( select distinct user_pseudo_id, date_trunc(event_date, week(monday)) as visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' ) ## 첫 방문 주와 모든 방문 주 중 같은 데이터가 있다면 '방문(=1)' , new_user_table as ( select ufv.user_pseudo_id, ufv.first_visit_date, uew.visit_date, if(ufv.first_visit_date = uew.visit_date, 1, 0) as new_user from user_first_visit as ufv inner join user_event_week as uew on ufv.user_pseudo_id = uew.user_pseudo_id group by 1,2,3 ) select first_visit_date as week, sum(new_user) as new_user_count from new_user_table group by 1 order by 1 current user # User Status 정의 -- "우리 서비스를 이용하는 유저들의 주차별 상태가 어떻게 되나?" /* 1. New User: 해당 주차에 처음 방문한 유저 2. Current User: 지난주에도 방문했고 이번 주에도 방문한 유저 3. Resurrected User: 지난주에는 없었는데 이번주에 다시 방문한 유저 (첫 방문은 아님) 4. Dormant User: 지난주까지는 있었는데 이번주에 방문하지 않은 유저 */ -- Current User: 지난주에도 방문했고 이번 주에도 방문한 유저 -- 유저별 모든 방문 주 구하기 -- 모든 방문주 - 전주 방문 데이터 = 1 --> current user ## 유저별 모든 방문 주 구하기 with user_visits as ( select user_pseudo_id, date_trunc((event_date), week(monday)) as visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' group by 1,2 ) ## 유저의 전주 방문 데이터 , prev_user_table as ( select user_pseudo_id, visit_date, lag(visit_date) over(partition by user_pseudo_id order by visit_date) as previous_visit_user from user_visits ) ## 모든 방문주 - 전주 방문 데이터 = 1 --> current user select visit_date as week, count(distinct user_pseudo_id) as current_user_cnt from( select distinct user_pseudo_id, visit_date, date_diff(visit_date, previous_visit_user, week) = 1 as current_user from prev_user_table ) as base where current_user is not null group by 1 order by 1 resurrected user # User Status 정의 -- "우리 서비스를 이용하는 유저들의 주차별 상태가 어떻게 되나?" /* 1. New User: 해당 주차에 처음 방문한 유저 2. Current User: 지난주에도 방문했고 이번 주에도 방문한 유저 3. Resurrected User: 지난주에는 없었는데 이번주에 다시 방문한 유저 (첫 방문은 아님) 4. Dormant User: 지난주까지는 있었는데 이번주에 방문하지 않은 유저 */ # Resurrected User: 지난주에는 없었는데 이번주에 다시 방문한 유저 (첫 방문은 아님) ## 유저별 모든 방문 주 구하기 with user_visits as ( select user_pseudo_id, date_trunc((event_date), week(monday)) as visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' group by 1,2 ) ## 유저의 전주 방문 데이터 , prev_user_table as ( select user_pseudo_id, visit_date, lag(visit_date) over(partition by user_pseudo_id order by visit_date) as previous_visit_user from user_visits ) ## (첫 방문이 아님) + (모든 방문 주 데이터 - 이전 방문주 > 1) = Resurrected User -- 첫 방문이 아닌 유저 : 'previous_visit_user is not null' -- 첫 방문이었으면 previous_visit_user가 null이었을테니깐. select visit_date as week, count(user_status) as Resurrected_User from ( select user_pseudo_id, visit_date, previous_visit_user, case when previous_visit_user is not null and date_diff(visit_date, previous_visit_user, week) > 1 then 'Resurrected_User' else null end as user_status from prev_user_table ) as Resurrected_User where user_status is not null group by 1 order by 1 dormant user # User Status 정의 -- "우리 서비스를 이용하는 유저들의 주차별 상태가 어떻게 되나?" /* 1. New User: 해당 주차에 처음 방문한 유저 2. Current User: 지난주에도 방문했고 이번 주에도 방문한 유저 3. Resurrected User: 지난주에는 없었는데 이번주에 다시 방문한 유저 (첫 방문은 아님) 4. Dormant User: 지난주까지는 있었는데 이번주에 방문하지 않은 유저 */ # Dormant User: 지난주까지는 있었는데 이번주에 방문하지 않은 유저 ## 모든 방문 데이터 with base as ( select user_pseudo_id, date_trunc((event_date), week(monday)) as visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' group by 1,2 ) ## 유저의 다음 방문주 데이터= , next_visit_date_table as ( select *, lead(visit_date) over(partition by user_pseudo_id order by visit_date) as next_visit_date from base ) ## Dormant User -- Dormant User? -- 다음주 방문 데이터가 null 이거나, -- next_visit_date > 1 week가 아닌 유저 , Dormant_User_table as ( select *, case when next_visit_date is null or date_diff(next_visit_date, visit_date, week) > 1 then 'Dormant_User' else null end as Dormant_User_data from next_visit_date_table ) select visit_date as week, count(Dormant_User_data) as Dormant_User_data_cnt from Dormant_User_table group by 1 order by 1

  • sql
  • bigquery
  • 빅쿼리
  • 빠짝스터디
  • 인프런
레스 댓글 1 좋아요 0 조회수 123

[1]_[인프런 빅쿼리 빠짝스터디 3주차] 리텐션 과제와 추가 문제 풀이

미해결

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

[종합 느낀점] 1. 날짜 데이터 변환 함수, 날짜 데이터로 추출 하는 함수 등 문제 풀 때 사용하는 함수를 까먹어 애를 먹었습니다. 2. 테이블 조인시 첫 테이블을 잘못 선택하면, 쿼리가 길어지고 꼬인다는 것을 느꼈습니다. 3. 지표가 어떤 지표느냐에 따라 해석 방법이 달라진 점도 알게 됐습니다. [문제 풀이 소요 시간] 1번 문제 : 30분 2번 문제 : 12분 3번 문제 : 12분 정답이면서도 확장성 있는 쿼리를 작성하다가는 영원히 못풀겠더라고요.. 그래서 최대한 쿼리 작성을 마무리 짓는데 초점을 뒀습니다.. ㅠㅠ [new_users] 위와 같은 시각화 결과가 나왔습니다. 눈에 띄는 데이터로는 두 가지가 있습니다: 1. 10월 new users 상승 상승 추정 이유: 1. 새로운 마케팅 전략 시행(시기가 추석 근처이니깐 추석을 기념해서 배달앱 쿠폰 지급?) 2. 12월 new users 하락 하락 추정 이유: 1. 연말 모임으로 인한 배달 수요 감소 (사실 감소세는 10월달에 고점을 찍은 이후 쭉 하락세이지만, 그 이유를 단정짓지는 못하겠습니다..) [Current User] 위와 같은 시각화 결과가 나왔습니다. 눈에 띄는 데이터로는 세가지가 있습니다: 1. 9월 중순 이후 Current User 상승 상승 추정 이유: 1. 새로운 마케팅 전략 시행(시기가 추석 근처이니깐 추석을 기념해서 배달앱 쿠폰 지급?) 2. 12월까지 꾸준한 상승 상승 추정 이유: 1. 기존 유저의 긍정적인 경험이 이어져서 서비스에 잔류 2. 마케팅으로 유입된 신규 유저도 긍정적인 경험을 해서 서비스에 잔류 3. 12월 Current User 하락 하락 추정 이유: 1. 연말 모임으로 인한 배달 수요 감소 [Resurrected User] 'Current User' 해석과 비슷할 거 같습니다. [Dormant User] 1. 9월 -> 10월 급격한 상승 상승 추정 이유: 1. 앞선 이유과 같음. 추석 관련 이벤트 실시. 2. 그러나 계속 상승이 이어지지 않은 점을 고민해 봐야 함. 2. 10월 -> 11월 말 유지 유지 추정 이유: 1. 마케팅으로 긍정적인 경험을 한 기존·신규 유저 잔류 2. 하지만 입소문이 나서 계속 상승하지는 않음. 3. 일부 유저만 잔류하고, 나머지 신규 유입 유저는 이벤트만 맛보고 이탈. 3. 12월 급격한 상승 상승 추정 이유: 1. 연말에 배달 수요가 감소할 것을 예측해 새로운 마케팅 전략 실시 주차별 리텐션 # 리텐션 정의 -- "우리 서비스를 이용한 사람들이 현재는 얼마큼 이용하고 있을까?" /* 1. 무슨 데이터가 필요할까? - 유저 - 날짜 왜 이런 데이터가 필요할까? 이에 대한 답변: '사람들'이니깐, '유저'를 인식할 수 있는 데이터가 필요하다. '현재'이니깐, '시간'을 인식할 수 있는 데이터가 필요하다. ## 1. 유저별 첫 방문 주 구하기*/ with first_visit_table as ( select user_pseudo_id, date_trunc(min(event_date), week(monday)) as first_visit_date from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' group by 1 ) /*2. 처음 이벤트를 발생 시킨 주는? - 무슨 데이터가 필요할까? 1. 첫 이벤트 발생 날짜 2. 유저 - 왜 이런 데이터가 필요할까? 이에 대한 답변: '이벤트'는 주체가 있어야 발동 되는 거니깐 '유저' 데이터가 필요하다. 또 이벤트 발생이란 결과에는 '날짜'라는 개념도 포함 되어 있기 때문에, '날짜' 데이터가 필요하다. 그중에서도 '처음 이벤트를 발생한 주'의 데이터가 필요하다. 3. 유저가 이벤트를 실행한 주는? - 무슨 데이터가 필요할까? 1. 유저 2. 이벤트 이름(선택) 3. 이벤트 발생 날짜 + 중복제거 왜? 목적이 모든 유저의 리텐션이기 때문에. 중복 제거를 하지 않으면, 모든 유저가 발생시킨 모든 이벤트가 보이기 때문에 가독성이 안 좋기 때문에. - 왜 이런 데이터가 필요할까? 이에 대한 답변: 처음 이벤트를 발생시킨 날짜와 비교하기 위해서 ## 2. 유저별 이벤트 발생 주 구하기*/ , user_event as ( select distinct user_pseudo_id, date_trunc(event_date, week(monday)) as user_event_week from `advanced.app_logs` where event_date between '2022-08-01' and '2022-12-31' ) /*4. '유저가 이벤트 실행한 주 - 유저가 처음 방문한 주' - 무슨 데이터가 필요할까? 1. 유저 2. 첫 이벤트 발생 날짜 3. 이벤트 발생 날짜 4. (이벤트 발생 날짜 - 첫 이벤트 발생 날짜) - 왜 이런 데이터가 필요할까? 이에 대한 답변: 처음 이벤트를 발생시킨 날짜와 비교하기 위해서 ## 3. 유저별 이벤트 발생주와 첫 방문주 차이 구하기*/ , diff_week_table as ( select fvt.user_pseudo_id, fvt.first_visit_date, ue.user_event_week, date_diff(ue.user_event_week, fvt.first_visit_date, week(monday)) as diff_week from first_visit_table as fvt left join user_event as ue on fvt.user_pseudo_id = ue.user_pseudo_id order by 2, 4 ) /*5. 주차별 유저수 구하기 - 왜 위와 같은 생각을 했는가? 이에 대한 답변: 주차수에 따른 유저수를 알아야만 첫 주차에 비해 얼마큼 유저가 이벤트를 발생시키지 않았는지 알 수 있으니깐. - 무슨 데이터가 필요한가? 이에 대한 답변: 1. 이벤트 발생 차이 주 2. 중복 없는 유저 수 ## 4. 주차별 유저수 구하기*/ , unique_user_cnt_table as ( select diff_week, count(distinct user_pseudo_id) as unique_user_cnt from diff_week_table group by 1 order by 1 ) /*6. 모든 행에 첫 주 유저수 적용하기 - 왜 위와 같은 생각을 했는가? 이에 대한 답변: 첫 주 유저수로 주차마다 달라지는 유저수를 나누면, 리텐션을 구할 수 있기 때문에. - 무슨 데이터가 필요한가? 이에 대한 답변: 1. 이벤트 발생 차이주 2. 주차별 중복 없는 유저수 3. 모든 행에 적용하는 첫 주 유저수 ## 5. 모든 행에 첫 주 유저수 적용하기*/ , first_visit_week_data_table as ( select *, first_value(unique_user_cnt) over(order by unique_user_cnt desc) AS first_visit_week_data from unique_user_cnt_table order by 1 ) ## 6. 리텐션 구하기 | 주차별 유저수 / 첫 주 유저수 select *, round(safe_divide(unique_user_cnt, first_visit_week_data), 2) as retention_rate from first_visit_week_data_table

  • bigquery
  • 빅쿼리
  • sql
  • 빠짝스터디
  • 인프런
레스 댓글 1 좋아요 0 조회수 174

mvc 패턴 질문

해결됨

[React 1부] 만들고 비교하며 학습하는 React

안녕하세요 강사님 강의는 단일 페이지에 대해서 mvc 패턴을 잡을 때 하나의 페이지를 대상으로 controller views helpers.js, main.js, storage.js, Store.js를 만드셨는데 여러개의 페이지가 연결된 상황에서 여러 페이지를 동시에 작업하는 경우.. 폴더 구조가 어떻게 되는 건지 궁금합니다. 그러니깐.. 하나의 helpers, 하나의 storage, 하나의 Store.js를 만들고 거기 안에 여러 페이지에서 쓰는 로직들을 다 때려박는건지 아니면 각각의 페이지에 대해서 폴더를 만들고 helpers, storage, Store 같은 것을 각각 다 따로 만드는건지 현업에서 프로젝트는 어떻게 진행하는건지 궁금합니다!

  • react
  • mvc
이재은 댓글 2 좋아요 0 조회수 232

1. 클래스와 데이터 ppt 26p 오타인가요?

미해결

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 클래스와 데이터 26p 최상단 Student students = new Student[2]이 옳바른 문장인것인가요? 강의 내용처럼 객체로 배열을 만드는 상황이라면 Student[] students = new Student[2] 이렇게 바꿔야되는 것이 아닌지 궁금합니다.

  • java
  • 객체지향
정의석 댓글 2 좋아요 0 조회수 136

탐색 순서 질문

미해결

Do it! 알고리즘 코딩테스트 with JAVA

영상에서 탐색 순서가 1 > 3 > 4 > 6 > 2 > 5 로 되어있는데 왜 5 > 2 가 아닌 2 > 5가 되는지 궁금합니다. 진행 되는 순서가 노드를 넣고 > 노드를 꺼내고 가 맞지 않나요? 아님 2 > 5로 되어도 상관 없는건가요?

  • java
  • 코딩-테스트
  • 알고리즘
겁많은 김앙리 댓글 1 좋아요 0 조회수 167

쿼리 로그 출력 관련 질문

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] MemberApiController.java MemberService.java 쿼리 실행이 select - update - select가 로그에 출력될꺼라고 예상 했는데 실제 로그는 select - update 까지만 출력되는데 이유를 알 수 있을까요?

  • java
  • spring
  • spring-boot
  • jpa
Jhs 댓글 1 좋아요 0 조회수 93

app-router route handler 에러 처리방법

미해결

한 입 크기로 잘라먹는 Next.js

import { type NextRequest, NextResponse } from 'next/server'; import { fetchData } from '@/shared/apis/fetch-data'; import type { IAcademyCreateDTO, IPostEnrollAcademyResponse } from '@/shared/types/acadmy'; export async function POST(req: NextRequest) { const body = (await req.json()) as Promise<IAcademyCreateDTO>; const data = await fetchData<IPostEnrollAcademyResponse>('/api/v1/academies', 'POST', body); if (!data.isSuccess) { return NextResponse.json( {}, { status: 500, statusText: data.message, }, ); } return NextResponse.json(data); } 서버에, 에러시 아래와 같은 데이터 구조를 준다고 했을떄 위의 방식처럼, 에러 핸들링을 하는 것이 맞는지 궁금합니다... Route Handler의 보편적인 에러처리 방식이 너무 궁금합니다!! (직접 에러 메시지를 작성하는것이 아닌 서버에서 내려주는 에러메시지를 화면에 표기하고 싶습니다.) export type CommonResponse<T = unknown> = { code: string; isSuccess: boolean; message: string; result: T; };

  • react
  • typescript
  • next.js
김용민 댓글 1 좋아요 0 조회수 209

1-2 환경설정에서 마지막 실습 구문이 작동이 안돼요.

해결됨

초보자를 위한 BigQuery(SQL) 입문

강의 내용 따라서 테이블 생성에는 문제가 없었어요. 새 쿼리 탭에서 select * (쿼리에선 탭 1회) from 'basic.pokemon' order by id 로 작성하였는데 구문 오류라고 뜹니다. 데이터셋 이름도 basic이고 테이블도 pokemon으로 해두었는데 왜 이러는 걸까요? 혹시나 싶어 'bigquery101-441101.basic.pokemon' 으로도 시도해 보았는데 마찬가지로 구문 오류가 떴습니다. 데이터셋이나 테이블 이름에 space가 들어갔나 싶어, 테이블셋 세부 정보에서 테이블 ID 복사 기능으로 붙여넣어도 작동이 안되는 상황입니다.

  • sql
  • bigquery
  • 데이터-리터러시
전성배 댓글 2 좋아요 0 조회수 156

영상 문의

미해결

FastAPI 완벽 가이드

'FastAPI에서 StaticFiles 클래스를 이용한 정적 파일 다루기' 수업 끝에 url_for 다음시간에 알려주신다고 영상이 끝나는데, 해당 강의영상은 어디에서 볼 수 있을까요? ps. 수업 너무 알차게 잘 듣고 있습니다 :)

  • python
  • sql
  • sqlalchemy
  • FastAPI
백승민 댓글 2 좋아요 0 조회수 154

강의 요약본 확인 경로 문의

미해결

실습으로 손에 잡히는 SQLD(2과목)

POSIX 문자열 클래스 [:alnum:], [:lower:], [:upper:].. 강의하실 때 요약본 주신다고 하셨는데.. 요약본은 어디에서 확인할 수 있을까요?

  • sql
  • oracle
  • mssql
  • SQLD
KS J 댓글 2 좋아요 0 조회수 197

next-auth의 refresh token rotation에 관한 질문입니다.

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요 next-auth로 토큰 갱신 로직을 개발하는 중에 해결되지 않는 문제가 발생하여 질문 드립니다. 현재 클라이언트에서 api 요청을 하면 middleware에서 const token = await auth(); 이런식으로 세션 정보를 가져와 accessToken을 헤더에 삽입하는 방식을 구현하였습니다. if (request.nextUrl.pathname.startsWith("/gateway")) { const session = await auth(); const accessToken = session?.accessToken; const { device } = userAgent(request); const localeFromCookie = cookieStore.get("dp_lang")?.value as string; const defaultLocale = getLanguageCodeFromLocale(localeFromCookie); request.headers.set("Accept", "*/*"); request.headers.set("Authorization", `Bearer ${accessToken}`); request.headers.set("Access-Control-Allow-Origin", "*"); request.headers.set("deviceType", "1"); request.headers.set("deviceId", getDeviceIdFromCookie(cookieStore)); request.headers.set("osType", getOsTypeFromCookie(cookieStore)); request.headers.set("User-Agent", device.model ?? ""); request.headers.set("locale", localeFromCookie); request.headers.set("language", defaultLocale); const response = NextResponse.next({ request: { headers: request.headers, }, }); return response; } 따라서 미들웨어에서 세션에 접근하는 순간에 jwt콜백이 실행되어 jwt 토큰에 저장되어 있는 토큰 expire 시간을 비교하여 만료여부를 판단 한 뒤에 토큰 갱신이 되도록 구현을 하였습니다. async jwt({ token, account, user }) { // Initial sign in if (account && user) { return { accessToken: user.accessToken, expiresAt: new Date( Date.now() + (user?.expiresIn ?? 0) ).toISOString(), refreshToken: user.refreshToken, serviceAvailable: true, }; } // Return previous token if the access token has not expired yet if ( new Date() < new Date(new Date(token.expiresAt as string).getTime() - 5000) ) { console.log("@@@@@@valid"); return token; } else { if (token.error === "RefreshTokenInvalid") { return token; } // Access token has expired, try tㄴo update it try { console.log("@@@@@@expired"); const refreshedTokens = await authApi.refreshAuthToken({ refreshToken: token.refreshToken as string, accessToken: token.accessToken as string, }); console.log("==========token refreshed========"); // reissue token return { ...token, accessToken: refreshedTokens.accessToken, expiresAt: new Date( Date.now() + (refreshedTokens.expiresIn ?? 18000) ).toISOString(), refreshToken: refreshedTokens.refreshToken ?? token.refreshToken, error: null, }; } catch (error) { console.error("Token refresh failed", error); if (error.status === RestApiErrorType.invalidTokenException) { return { ...token, error: "RefreshTokenInvalid", }; } return { ...token, error: "RefreshAccessTokenError" }; } } }, 기존에는 세션에 접근을 할때 next-auth의 jwt 콜백이 돌고 값이 리턴되면 쿠키의 session-token값에 암호화된 값들이 업데이트 되는 걸로 알고 있었는데 찾아보니 현재 세션에 접근하고 갱신하는 부분이 서버단에 있어서 쿠키가 업데이트 되지 않는다고 합니다. 따라서 현재 토큰이 만료된 후 한번에 3가지의 api 콜을 요청했을때 첫번째 api요청에서는 정상적으로 토큰 refresh가 요청이 되며 middleware에서 세션에 접근해 갱신된 토큰이 가져와져 요청이 성공되나 그 뒤 요청부터는 쿠키에 업데이트가 되지 않아서인지 세션에서 갱신 전 토큰이 가져와지는 현상이 발생하고 있습니다. 클라이언트에서 세션 업데이트 후 세션에 접근을 해야 쿠키값이 갱신이 된다고 하는데 다른 방법이 있는지 문의드립니다.

  • react
  • next.js
  • react-query
  • next-auth
  • msw
박지수 Jisu Park 댓글 2 좋아요 0 조회수 652

Check the render method of `SceneView`. 오류

미해결

따라하며 배우는 리액트 네이티브 기초

선생님 expo로 Aos 실행했을때 Check the render method of SceneView . 오류가 납니다. React Navigation 기능을 안쓰고 했을때는 오류가 안나는데 어떻게 해결하나요?

  • react
  • react-native
  • expo
mhlee 댓글 3 좋아요 0 조회수 375

React.memo 메서드관련 질문드립니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

10.3) 해당 강의에서 TodoItem 컴퍼넌트 리렌더링 실행 조건을 memo 메서드를 이용하여 커스터마이징할 때, if (prevProps.isDone !== nextProps.isDone) return false; 이 문구에서 prevProps.isDone 값은 기존값이니 이해가 되었는데 nextProps.isDone 값은 해당 TodoItem 함수 내에 onCangeCheckbox 함수가 선행으로 실행이 되어야 알 수 있는 값 아닌가요? 그 전에 실행이 안 되도록 memo 메서드로 TodoItem의 리렌더링을 막고 있는데 어떻게 isDone 값이 바꼈다고 판단해서 리렌더링이 되는건지 모르겠습니다.

  • javascript
  • react
  • node.js
댓글 2 좋아요 0 조회수 299

pdf파일 표 질문이요(저만 안보이는건지?)

해결됨

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 8번째 pdf파일 set의 주요 메서드 설명을(3page) 보고 있는 도중에, 글씨가 안 보이는 부분이 있어서 여쭤 봅니다. pdf파일로 열어서 보고 있는데 표 끝부분이 정확히 안나와서, 저만 그런건지 알고 싶어서 질문을 올립니다. 혹 저만 그런 건가요? 아니면 다들 똑같은신지요?

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
생각하는자 댓글 2 좋아요 0 조회수 177

source.next와 source.emit의 차이에 대한 질문입니다.

해결됨

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

안녕하세요. 강의 잘 보고 있습니다. 마지막에 와서 의문이 드는게 있어 질문 남겨봅니다. 첫 번째 예제 TestPublisherTestExample01 에서는 source.next 로 테스트를 진행했고, 세 번째 예제 TestPublisherTestExample03 에서는 source.emit 으로 테스트를 진행했는데요. emit의 경우 내부적으로 complete()을 통해 signal을 발생 시키는 것으로 이해했습니다. 그런데, 말씀대로라면 첫 번째 테스트에서 expectComplete() 이 통과하는게 이해가 가지 않아서요. 둘의 차이는 결국 Flux를 create 해주는 방식에 있는 것 같은데, 첫 번째 예제의 경우 zipWith을 통해 complete이 발생하는 걸까요? 잘 감이 오지 않는데, 설명해주시면 감사하겠습니다!

  • java
  • spring
  • project-reactor
  • webflux
azsxd34 댓글 2 좋아요 0 조회수 239

GitHub에 application설정 내용 push

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

강의를 다시 보며 개인적으로 복습하던 중 만약 MySQL까지 배포를 완료한 후에 깃허브에 코드를 올리게 되면 Repo가 Public이라서 application에 설정해둔 저의 DB정보와 password도 함께 보여지게 될 텐데 이를 방지하는 방법이 있을까요? Private일 때 배포하는 방법은 강의 내용에 없어서 아쉽지만ㅠ Public일 때 깃허브에 application 설정을 gitignore을 통해서 push하지 않아도 배포하는 데에 있어서 지장이 없는지 궁금합니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
박재성 댓글 3 좋아요 0 조회수 170

jdk 버전 관련해 질문이 있습니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

plugins { id 'java' id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' } group = 'hello' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } 제 프로젝트에 "toolchain { languageVersion = JavaLanguageVersion.of(21)" 라고 기술했는데요. 제 시스템에 설치된 jdk버전이 꼭 21 버전이어야만 빌드가 되더라구요. 자바 버전이 17이면, jdk가 17이상만 되면 빌드가 된다고 어디서 들었던 것 같은데, 혹시 툴체인이랑은 별개의 내용인건가요?

  • java
  • spring
  • mvc
  • spring-boot
댓글 1 좋아요 0 조회수 785

react app 생성하기에서 npm i 오류

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요 section04 폴더로 react 앱 만들기 실습에서 라이브러리들을 다운받기 위해 npm i 를 하려고 했는데, 아래 이미지와 같은 오류들이 발생합니다. 인터넷을 찾아보니 권한 문제때문이라고 하던데 단순하게 sudo npm i를 하면 되는 걸까요?

  • javascript
  • react
  • node.js
배현아 댓글 2 좋아요 0 조회수 321

js파일 업로드 요청

미해결

만들면서 배우는 리액트 : 기초

학습하는 환경이 내부망이라 <script src=" https://unpkg.com/react@18/umd/react.production.min.js " crossorigin></script> <script src=" https://unpkg.com/react-dom@18/umd/react-dom.production.min.js " crossorigin></script> <script src=" ">https://unpkg.com/babel-standalone@6/babel.min.js"></script> 위 js들을 직접 다운로드 받아 반입해야 하는데요.. 리액트 사이트에서 리액트 라이브러리는 다운로드가 되는데 babel은 다운로드가 안되네요;; js파일을 직접 다운로드할 수 있도록 학습용 코드 올려진 곳에 업로드 해주시면 감사하겠습니다.

  • javascript
  • react
스리에스 댓글 1 좋아요 0 조회수 155

블로그 글 작성

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 [질문 내용] 안녕하세요! 책으로 공부 할 땐 어려웠는데 영한님 덕분에 편하게 공부 하고 있습니다. 감사합니다. 다름이 아니라 블로그에 배운 내용을 작성 하려고 하는데 쓰레드 섹션 2,3의 경우 영한님 코드가 노출 되어도 괜찮나요?.. 출처는 당연히 남깁니다! 섹션 2,3 경우 코드가 많지 않아서 이걸 블로그에 올려도 될까 고민입니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
조희제 댓글 1 좋아요 0 조회수 250

인기 태그

인프런 TOP Writers

주간 인기글