묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결GSAP의 ScrollTrigger를 활용한 포트폴리오 제작
scrolla 질문
안녕하세요, 강사님.다름이 아니라 스크롤라 반복이 되지 않아서 질문 드립니다.알려주신대로 펑션으로 스크롤라를 호출하고 인덱스 파일에 애니메이트도 선언했습니다만, 처음에만 애니메이션이 작동하고 스크롤을 내렸다 올릴 땐 작동하지 않습니다.스크롤을 초기화 해야 되는걸까요?챕터마다 넣어주신 캡쳐 파일에선 저랑 다른 부분을 찾기가 어려워 질문 남깁니다!
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
2주차 과제 제출
문제 1.SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_visit_month, LEAD(visit_month, 2) OVER (PARTITION BY user_id ORDER BY visit_month) AS nnext_visit_month FROM advanced.analytics_function_01문제2.SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_visit_month, LEAD(visit_month, 2) OVER (PARTITION BY user_id ORDER BY visit_month) AS nnext_visit_month, LAG(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS previous_visit_month FROM advanced.analytics_function_01문제3.SELECT *, SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date, order_id ) AS cumulative_sum_by_user문제 4.SELECT *, AVG(amount) OVER (ORDER BY order_date, order_id ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS last_5_orders_avg_amout 총정리 연습문제문제 1.SELECT *, COUNT(query_date) OVER (PARTITION BY user ORDER BY user) AS total_query_cnt FROM advanced.query_logs문제2.WITH table AS ( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) SELECT *, RANK() OVER(PARTITION BY week_number ORDER BY query_cnt) AS team_rank FROM table QUALIFY team_rank = 1문제3.WITH table AS ( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) SELECT *, LAG(query_cnt) OVER (PARTITION BY user ORDER BY week_number) AS prev_week_query_cnt FROM table문제4.WITH query_count_table AS ( SELECT *, COUNT(*) AS query_count FROM advanced.query_logs GROUP BY ALL ) SELECT *, SUM(query_count) OVER (PARTITION BY user ORDER BY query_date) AS cululative_query_count FROM query_count_table문제5.WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07' , 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL UNION ALL ) SELECT *, LAST_VALUE(number_of_order IGNORE NULLS) OVER (ORDER BY date) AS last_value_orders FROM raw_data문제6.WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07' , 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ), filled_data AS ( SELECT * EXCEPT(number_of_orders), **LAST_VALUE**(number_of_orders **IGNORE NULLS**) OVER (ORDER BY date) AS number_of_orders FROM raw_data ) SELECT *, AVG(number_of_orders) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg FROM filled_data문제 7.WITH base AS( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_name, user_id, user_pseudo_id FROM advanced.app_logs WHERE event_date = '2022-08-18' AND user_pseudo_id = "1997494153.8491999091" ), diff_data AS( SELECT *, #이전 이벤트 시간과 현재 이벤트시간의 간격을 SECOND 초단위로 구하기 / second_diff를 기반으로 새로운 세션의 시작일지 아닐지 판단 DATETIME_DIFF(event_datetime, prev_event_datetime, SECOND) AS second_diff FROM ( SELECT *, # 직전 이벤트 시간을 prev_event_datetime으로 만들기 LAG(event_datetime, 1) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS prev_event_datetime FROM base ) ) SELECT *, SUM(session_start) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_num FROM( SELECT *, CASE WHEN prev_event_datetime IS NULL THEN 1 WHEN second_diff >= 20 THEN 1 ELSE NULL END AS session_start FROM diff_data ) ORDER BY event_datetime
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 2주차 과제] 윈도우 함수 연습 문제
2주차윈도우 함수 - 탐색 함수프로덕트 측면에서 윈도움 탐색 함수를 활용해서 할 수 있는 것?어떤 user가 앱/웹에 접속한 후, 어떤 화면으로 이동했는지를 알 수 있음. 즉 시간의 흐름에 따른 행동을 볼 수 있음(다음 ROW의 Page를 확인 가능)엡 로그 상에서 직전 이벤트와 현재 이벤트가 동일한 것들을 필터링할 수 있음(LEAD한 값과 기존 컬럼과의 비교). 같은 Page를 연속으로 접근한 경우 하나로 처리해서 ‘퍼널’을 구할 때 활용할 수 있음.리텐션 쿼리를 작성할때 기준점을 만들 수 있음(유저의 첫 접속일, FIRST_VALUE 이용)2. 윈도우 함수의 번호 지정 함수코드 작성(윈도우 함수 Frame)# 윈도우 함수 Frame 연습 문제 SELECT *, SUM(amount) OVER() AS amount_total, # over안에 아무것도 들어가지 않는 경우도 있음!, 전체의 SUM. SUM(amount) OVER(ORDER BY order_id) AS cumulative_sum, SUM(amount) OVER(PARTITION BY user_id ORDER BY order_id) AS cumulative_sum_by_user, AVG(amount) OVER(ORDER BY order_id ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING ) AS last_5_orders_avg_amount FROM advanced.orders ORDER BY user_id 3. 윈도우 함수 연습 문제코드 작성# 문제 1) 사용자별 쿼리를 실행한 총 횟수를 구하는 쿼리 작성. # 단 , GROUP BY를 사용해서 집계하는 것이 아닌 데이터 우측에 새로운 컬럼 생성. SELECT *, COUNT(query_date) OVER (PARTITION BY user) AS total_query_cnt FROM advanced.query_logs order by user, query_date # 문제 2) 주차별로 팀 내에서 쿼리를 많이 실행한 수를 구한 후(먼저 집계 한 후) # 실행한 수를 활용해 랭킹을 구해주세요.(윈도우 함수 활용) # 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요. **문제의 의도 : 원본 데이터는 1 row 마다 데이터가 있고, 그걸 집계해서 사용(GROUP BY) => 그 다음에 윈도우 함수 사용.** with query_cnt_by_team AS ( SELECT EXTRACT(week from query_date) AS week_num, team, user, COUNT(query_date) AS query_cnt -- RANK() OVER(ORDER BY) FROM advanced.query_logs GROUP BY ALL ) SELECT *, RANK() OVER(PARTITION BY week_num, team ORDER BY query_cnt DESC) AS rk FROM query_cnt_by_team QUALIFY rk = 1 ORDER BY week_num, team, query_cnt DESC # 문제 3) (2번 문제에서 사용한 주차별 쿼리 사용) 쿼리를 실행한 시점 기준 , # 1주 전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리를 작성. with query_cnt_by_team AS ( SELECT EXTRACT(week from query_date) AS week_num, team, user, COUNT(query_date) AS query_cnt -- RANK() OVER(ORDER BY) FROM advanced.query_logs GROUP BY ALL ) SELECT *, LAG(query_cnt,1) OVER(PARTITION BY user ORDER BY week_num) AS last_week_query_cnt FROM query_cnt_by_team # 문제 4) 시간의 흐름(query_date)에 따라 일자별로 유저가 실행한 누적 쿼리 수를 작성해주세요. Fram 관련 문제(누적합) 누적 쿼리 : 과거의 시간부터(UNBOUNDED PRECEDING)부터 현재까지(CURRENT ROWS) Frame의 Default 값 : UNBOUNDED PRECEDING ~ CURRENT ROWS => 출제 의도 SELECT *, SUM(query_cnt) OVER(PARTITION BY user ORDER BY query_date ) AS cumulative_sum, SUM(query_cnt) OVER(PARTITION BY user ORDER BY query_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum2 FROM ( SELECT query_date, team, user, count(user) as query_cnt FROM advanced.query_logs GROUP BY ALL ) QUALIFY cumulative_sum != cumulative_sum2 ORDER BY user,query_date # 문제 5) 다음 데이터는 주문 횟수를 나타낸 데이터입니다. # 만약 주문 횟수가 없으면 NULL로 기록됩니다. # 이런 데이터에서 NULL 값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리를 작성. 출제 의도 : null을 제외하고 연산하고 싶을때는 IGONORE NULLS 활용!! WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) SELECT *, LAST_VALUE(number_of_orders IGNORE nulls) OVER(ORDER BY date) AS last_value_orders FROM raw_data # 문제 6) 5번 문제에서 NULL을 채운 후, 2일 전~ 현재 데이터의 평균을 구하는 쿼리를 작성(이동평균) 출제 의도 : Frame을 지정할 수 있는가? WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) , filled_date AS ( SELECT *, LAST_VALUE(number_of_orders IGNORE nulls) OVER(ORDER BY date) AS number_of_order FROM raw_data ) SELECT *, AVG(number_of_order) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg FROM filled_date # 문제 7) app_logs 테이블에서 Custom Session을 만들어 주세요. # 이전 이벤트 로그와 20호가 지나면 새로운 Session을 만들어 주세요. # Session은 숫자로 (1,2,3,---) 표시해도 됩니다 # 2022-08-18일의 user_pseudo_id(1997494153.8491999091)은 sessio_id가 4까지 나옵니다. session을 구할 때 쿼리가 길어질 수 있음. 하루에 접속을 여러번 하는 서비스 => session 기반이 좋을 수 있고, 아니라고 하면 일자별 유저 집계가 나을 수 있음. - 세션 정리 - 이전 이벤트 로그와 현재 이벤트 로그의 diff => 초나 분을 구한다 - 그 기준을 가지고 기준보다 높으면 새로운 세션이라고 생각한다 - 첫번째 값엔 null이 있을 수 있어서, 이 부분도 챙겨야 한다.=> 1로 바꿔준다(Case 문 활용) - 새로운 세션, session_start 값을 기반으로 누적합 => session_num이 된다! with base AS ( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_name, user_id, user_pseudo_id, FROM advanced.app_logs -- WHERE -- event_date = '2022-08-18' -- AND user_pseudo_id = '1997494153.8491999091' ORDER BY event_timestamp ), diff_date AS ( SELECT *, DATETIME_DIFF(event_datetime,prev_event_datetime, second) AS second_diff FROM ( SELECT *, LAG(event_datetime,1) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS prev_event_datetime # event_datetime이랑 prev_datetime을 빼서 20초가 넘으면 새로운 세션으로 정의. # 20초가 넘지 않으면 기존 세션 / DATETIME_DIFF() => 차이를 구할 수 있음. FROM base ) ) SELECT *, SUM(session_start) OVER (PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_num FROM ( SELECT *, CASE WHEN prev_event_datetime IS NULL THEN 1 WHEN second_diff >= 20 THEN 1 # session을 나누는 기준 초. 데이터 탐색하면서 결정. 보통 앱 록느에서는 30초, 60초 등으로 정함. ELSE 0 END AS session_start # 세션이 시작되됨을 알리는 session_start FROM diff_date )
-
미해결
mysql_mof 공격 질문
이전 질문의 연장선 입니다. 말씀 주신대로 win XP랑 apmsetup을 주어진 실습 파일로 설치해도 connection timedout이 발생하여 질문 드립니다. 현재 환경은 VMware 17 Pro Kali 6.8.1 amd 64 / 10.10.10.7 WinXP Professional 입니다. /10.10.10.8 ping 명령어로 양방향 통신이 가능한걸 확인했습니다. 이전에설명대로 password: apmsetup, rhost: winXP ip 주소, username: root로 설정했지만 같은 에러가 발생하는데 따로 고려할 수 있는 부분이 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
train , test 채우기
15:10~13초 부분인데.. 왜 train하고 test 데이터를 같이 채워야 하나요>?
-
해결됨PowerApps 2단계, 우리 회사에 필요한 모바일 앱 만들기
이미지 업로드 불가
Power apps 에서 첨부이미지 삽입 후 등록 하였으나 Sharepoint 에 이미지만 업로드 되지 않습니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
네트워크 오브젝트 설정
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요 안녕하세요 선생님 Hero에게 network Object 넣었을때 hash값이 저는 0이고 선생님은 다르네요 그래서 Default network Prefabs 에 자동으로 추가되지않아서플러스 버튼 눌러서 추가하면 정상 작동되긴하나 선생님이랑 방법이 틀려서 찝찝합니다 뭐를 실수하고있는건가요
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 2주차 과제] 윈도우 함수 연습 문제
--윈도우함수(Analytics Function) - 탐색 함수 : LEAD, LAG, FIRST_VALUE(유저들의 첫 방문일은 언제인가요?), LAST_VALUE - 탐색 함수 연습 문제 - 번호 지정 함수 : ROW_NUMBER, RANK - 집계 분석 함수 : AVG, SUM - 데이터의 범위를 제한하고 싶은 경우 : Frame 설정 - ROWS BETWEEN UNBOUNDED PRECEDING AND FOLLOWING - 윈도우 함수 조건 설정 : QUALIFY - 연습 문제 RANK() OVER (PARTITION BY 학년 ORDER BY 키 DESC) AS 학년 별 키 순위 SELECT user_id , visit_month , LEAD(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month , LEAD(visit_month,2) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_visit_month , FIRST_VALUE(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) --얘는 NULL을 포함해서 값을 가져옴 , FIRST_VALUE(numbers IGNORE NULLS) OVER(ORDER BY date) AS first_num , LAST_VALUE(numbers IGNORE NULLS) OVER(ORDER BY date) AS last_num , RANK() OVER (PARTITION BY product_type ORDER BY revenue DESC) AS rank --중복이 있으면 1위 같이 부여하고 3위를 줌 --상위 30%를 뽑고 싶을땐 이거 사용 , DENSE_RANK() OVER (PARTITION BY product_type ORDER BY revenue DESC) AS rank --중복이 있으면 1위 같이 부여하고 2위를 줌 , ROW_NUMBER() OVER (PARTITION BY product_type ORDER BY revenue DESC, id) AS rank --중복이 있으면 랜덤으로 숫자 1,2를 줌 , AVG(revenue) OVER(PARTITION BY product_type) AS avg_revenue , SUM(revenue) OVER(PARTITION BY product_type) AS sum_revenue FROM Table Frame: 1) 우리 회사의 모든 주문량은? 2) 특정 주문 시점에서 누적 주문량은? 3) 고객별 주문 시점에서 누적 주문량은?(누적 100만원 이상 회원 => 골드 등급!) 4) 최근 직전 5개의 평균 주문량은? - PRECEDING : 현재 행 기준으로 이전 행 - CURRENT ROW : 현재 행 - FOLLOWING : 현재 행 기준으로 이후 행 - UNBOUNDED : 처음부터 또는 끝까지(사전적 의미 : 묶이지 않고 제한되지 않음) ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING : default)파티션내 모든 값을 가져오겠다는 의미 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING : 현재 행과 그 앞뒤 한 행씩을 포함해서 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW : 파티션의 처음부터 현재 행을 포함한 평균 SELECT order_id, order_date, user_id, amount, SUM(amount) OVER (PARTITION BY user_id) AS amount_total FROM advanced.orders WHERE 1=1 QUALIFY amount_total >= 500 --이게 이제는 가능 문제 1) user들의 다음 접속 월과 다다음 접속 월을 구하는 쿼리를 작성해주세요. SELECT user_id , visit_month , LEAD(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_1step_visit_month , LEAD(visit_month,2) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_2step_visit_month FROM advanced.analytics_fuction_01 ORDER BY user_id, visit_month 문제 2) user들의 다음 접속 월과 다다음 접속 월, 이전 접속 월을 구하는 쿼리를 작성해주세요. WITH raw as ( SELECT user_id , visit_month , LEAD(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_1step_visit_month , LEAD(visit_month,2) OVER (PARTITION BY user_id ORDER BY visit_month) AS after_2step_visit_month , LAG(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) AS before_1step_visit_month FROM advanced.analytics_fuction_01 ORDER BY user_id, visit_month ) --LEAD는 다음, LAG는 이전(밀리고 당긴다고 생각하니 살짝 헷갈림) --3) 간격구하는 쿼리 SELECT user_id , visit_month , after_1step_visit_month - visit_month as diff FROM raw ORDER BY user_id, visit_month -- 4)첫번째, 마지막 방문월 SELECT user_id , visit_month , FIRST_VALUE(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) as first_visit_month , LAST_VALUE(visit_month) OVER (PARTITION BY user_id ORDER BY visit_month) as last_visit_month FROM advanced.analytics_fuction_01 ORDER BY user_id, visit_month --Frame 연습문제 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING : default)파티션내 모든 값을 가져오겠다는 의미 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING : 현재 행과 그 앞뒤 한 행씩을 포함해서 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW : 파티션의 처음부터 현재 행을 포함한 평균 select SUM(amount) OVER () AS amount_total --ORDER BY는 적는 순간 위에서부터 현재행까지 되는것 같음 , SUM(amount) OVER (ORDER BY order_date, order_id ) AS cumulative_sum , SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date, order_id) AS cumulative_sum_user --same SUM(amount) OVER (ORDER BY order_date, order_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS amount_total , SUM(amount) OVER (ORDER BY order_date, order_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum , SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date, order_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum_user , AVG(amount) OVER (ORDER BY order_date, order_id ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING AS last_5_avg --본인 값은 포함 안함 FROM advanced.analytics_fuction_01 --연습문제 7개 --업로드 예정 1) 사용자별 쿼리를 실행한 총 횟수를 구하는 쿼리를 작성해주세요. 단, GROUP BY를 사용해서 집계하는 것이 아닌 query_logs의 데이터의 우측에 새로운 컬럼을 만들어주세요. select user , team , query_date , count(query_date) over(partition by user) as total_query_cnt , count(*) over(partition by user) as total_query_cnt --이것도 되는지 확인 from advanced.query_logs 2) 주차별로 팀 내에서 쿼리를 많이 실행한 수를 구한 후, 실행한 수를 활용해 랭킹을 구해주세요. 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요 with raw as ( select user , team , extract(week from query_date) as weeks --week() 작동안됨 , count(*) as total_query_cnt --, count(user) as total_query_cnt --명시해주기 from advanced.query_logs group by 1,2,3 ) select * , rank() over(partition by weeks, team order by total_query_cnt) as team_rank from qualify rn=1 3) (2번 문제에서 사용한 주차별 쿼리 사용) 쿼리를 실행한 시점 기준 1주 전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리를 작성해주세요 with raw as ( select user , team , week(query_date) as weeks , count(*) as query_cnt from advanced.query_logs group by 1,2,3 ) select * , lag(query_cnt) over(partition by team, user order by weeks) as prev_week_query_cnt -- , lag(query_cnt,1) --디폴트 from raw 4) 시간의 흐름에 따라, 일자별로 유저가 실행한 누적 쿼리 수를 작성해주세요 with raw as ( select user , team , query_date as query_date , count(*) as query_cnt from advanced.query_logs group by 1,2,3 --group by all 해줘도 됨 ) select * , sum(query_cnt) over(partition by team, user order by query_date) as prev_week_query_cnt --default frame: unbounded preceding and current row from raw --qualify로 프레임 넣은것과 아닌것이 실제로 차이가 나는지를 더블체크 해보는 습관을 들이자 --정말 데이터가 내 생각대로 생겼는지 확인해보는 작업은 중요하다는 생각 5) 다음 데이터는 주문 횟수를 나타낸 데이터입니다. 만약 주문 횟수가 없으면 NULL로 기록됩니다. 이런 데이터에서 NULL 값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리를 작성해주세요 WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) SELECT * , last_value(number_of_orders ignore nulls) over(order by date) as new_number_of_orders --요 접근법 생각해낸거 강의 덕분 FROM raw_data 6) 5번 문제에서 NULL을 채운 후, 2일 전 ~ 현재 데이터의 평균을 구하는 쿼리를 작성해주세요(이동 평균) WITH raw_data AS ( SELECT DATE '2024-05-01' AS date, 15 AS number_of_orders UNION ALL SELECT DATE '2024-05-02', 13 UNION ALL SELECT DATE '2024-05-03', NULL UNION ALL SELECT DATE '2024-05-04', 16 UNION ALL SELECT DATE '2024-05-05', NULL UNION ALL SELECT DATE '2024-05-06', 18 UNION ALL SELECT DATE '2024-05-07', 20 UNION ALL SELECT DATE '2024-05-08', NULL UNION ALL SELECT DATE '2024-05-09', 13 UNION ALL SELECT DATE '2024-05-10', 14 UNION ALL SELECT DATE '2024-05-11', NULL UNION ALL SELECT DATE '2024-05-12', NULL ) , total as ( SELECT * except(number_of_orders) , last_value(number_of_orders ignore nulls) over(order by date) as new_number_of_orders --요 접근법 생각해낸거 강의 덕분 FROM raw_data ) select avg(new_number_of_orders) over(order by date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_avg from total 7) app_logs 테이블에서 Custom Session을 만들어 주세요. 이전 이벤트 로그와 20초가 지나면 새로운 Session을 만들어 주세요. Session은 숫자로 (1, 2, 3 ...) 표시해도 됩니다 2022-08-18일의 user_pseudo_id(1997494153.8491999091)은 session_id가 4까지 나옵니다 with raw as ( select event_date , DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime --new , event_name , user_id , user_pseudo_id from advanced.app_logs where event_date = '2022-08-16' ) , date_diff as ( select *, lag(event_datetime) over(partition by user_pseudo_id order by event_datetime) as prev_event_datetime from raw ) , total as ( select * , DATETIME_DIFF(event_datetime, before_event_datetime, SECOND) as second_diff , case when second_diff is null then 1 when second_diff >= 20 then 1 --20 seconds else 0 end AS session_start from date_diff ) select * , sum(session_start) over(partition by user_pseudo_id order by event_datetime) as session_id from total
-
미해결데이터 드리븐 그로스 마케팅 - 고객 중심의 문제 해결력 업그레이드
고퀄리티의 좋은 강의 감사합니다 :)
수강평 작성했습니다 🙂 노고가 담긴 템플릿과 강의교안 jsyooon0126@gmail.com으로 공유주시면 너무너무 감사드리겠습니다!
-
미해결스프링 핵심 원리 - 기본편
컨테이너에 등록된 모든 빈 조회 질문
ROLE_ APPLICATION으로 등록한 빈만 출력했는데 ROLE_INFRASTRUCTURE 의 결과가 나옵니다김영한 강사님은 bean에 직접등록한 아래 5줄만 출력이 됩니다. 저는 왜 추가로 위에 5줄이 뜨는건지 궁금합니다ㅠㅠ
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 2주차 과제] 윈도우함수 활용과 null 다루는 법
강의 문제 탐색 함수, Frame 연습 문제 (1~3)1번SELECT user_id, visit_month, LEAD(visit_month,1) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_month, LEAD(visit_month,2) OVER(PARTITION BY user_id ORDER BY visit_month) AS the_month_after_next FROM `avdanced.analytics_function_01`2번SELECT user_id, visit_month, LEAD(visit_month,1) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_month, LEAD(visit_month,2) OVER(PARTITION BY user_id ORDER BY visit_month) AS the_month_after_next, LAG(visit_month,1) OVER(PARTITION BY user_id ORDER BY visit_month) AS last_month FROM `avdanced.analytics_function_01` FrameSELECT -- 1번 모든 주문량 SUM(amount) OVER() AS amount_total, -- 2번 특정주문시점 누적주문량 #SUM(amount) OVER(partition by order_date) AS cumulative_sum, SUM(amount) OVER (ORDER BY order_date) AS cumulative_sum, -- 3번 고객별 주문 시점에서 누적 주문량 #SUM(amount) OVER(partition by user_id) AS cumulative_sum_by_user, SUM(amount) OVER(partition by user_id ORDER BY order_id) AS cumulative_sum_by_user, -- 4번 최근 직전 5개 평균 주문량 AVG(amount) OVER(ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS last_5_orders_avg_amount, AVG(amount) OVER(ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS last_5_unbounded_orders_avg_amount, AVG(amount) OVER(ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS all_orders_avg_amount FROM `avdanced.orders` 윈도우함수 연습문제(1~7)1번SELECT user, team, query_date, count(user) over(PARTITION BY user) AS total_query_cnt FROM advanced.query_logs ORDER BY query_date, user2번WITH query_cnt_by_team AS ( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) SELECT *, RANK() OVER (PARTITION BY week_number, team ORDER BY query_cnt DESC) AS rk FROM query_cnt_by_team QUALIFY rk = 1 ORDER BY week_number, team, query_cnt DESC3번WITH query_cnt_by_team AS ( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) SELECT *, LAG(query_cnt, 1) OVER (PARTITION BY user ORDER BY week_number) AS prev_week_query_cnt FROM query_cnt_by_team ORDER BY user, week_number4번SELECT query_date, team, user, query_cnt, SUM(query_cnt) OVER (PARTITION BY user ORDER BY query_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum FROM ( SELECT query_date, team, user, COUNT(user) AS query_cnt FROM advanced.query_logs GROUP BY ALL ) ORDER BY user, query_date5번WITH raw_data AS( SELECT DATE'2024-05-01'AS date,15 AS number_of_orders UNION ALL SELECT DATE'2024-05-02', 13 UNION ALL SELECT DATE'2024-05-03', NULL UNION ALL SELECT DATE'2024-05-04', 16 UNION ALL SELECT DATE'2024-05-05', NULL UNION ALL SELECT DATE'2024-05-06', 18 UNION ALL SELECT DATE'2024-05-07', 20 UNION ALL SELECT DATE'2024-05-08', NULL UNION ALL SELECT DATE'2024-05-09', 13 UNION ALL SELECT DATE'2024-05-10', 14 UNION ALL SELECT DATE'2024-05-11', NULL UNION ALL SELECT DATE'2024-05-12', NULL ) SELECT date, IF(number_of_orders is null , last_value(number_of_orders IGNORE NULLS) OVER(ORDER BY date asc), number_of_orders) AS number_of_orders_not_null FROM raw_data;6번WITH raw_data AS( SELECT DATE'2024-05-01'AS date,15 AS number_of_orders UNION ALL SELECT DATE'2024-05-02', 13 UNION ALL SELECT DATE'2024-05-03', NULL UNION ALL SELECT DATE'2024-05-04', 16 UNION ALL SELECT DATE'2024-05-05', NULL UNION ALL SELECT DATE'2024-05-06', 18 UNION ALL SELECT DATE'2024-05-07', 20 UNION ALL SELECT DATE'2024-05-08', NULL UNION ALL SELECT DATE'2024-05-09', 13 UNION ALL SELECT DATE'2024-05-10', 14 UNION ALL SELECT DATE'2024-05-11', NULL UNION ALL SELECT DATE'2024-05-12', NULL ), filled_data AS ( SELECT * EXCEPT(number_of_orders), LAST_VALUE(number_of_orders IGNORE NULLS) OVER (ORDER BY date) AS number_of_orders FROM raw_data ) SELECT *, AVG(number_of_orders) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg FROM filled_data7번WITH base AS( SELECT event_date, event_timestamp, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_name, user_id, user_pseudo_id, DATETIME(TIMESTAMP_MICROS(LAG(event_timestamp) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp)), 'Asia/Seoul') AS before_event_datetime FROM advanced.app_logs WHERE event_date = '2022-08-18' AND user_pseudo_id = '1997494153.8491999091' ), session_info AS( SELECT *, TIMESTAMP_DIFF(event_datetime, before_event_datetime, SECOND) AS second_diff, CASE WHEN TIMESTAMP_DIFF(event_datetime, before_event_datetime, SECOND) >= 20 OR TIMESTAMP_DIFF(event_datetime, before_event_datetime, SECOND) IS NULL THEN 1 ELSE NULL END AS session_start FROM base ) SELECT *, SUM(session_start) OVER (PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_id FROM session_info ORDER BY event_date, event_timestamp;
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
메일 확인 부탁드립니다.
이메일로 자료 요청을 했으나 계속 받지 못하고 있습니다.메일 확인 부탁드립니다. (swh0107@gmail.com)
-
미해결김영한의 실전 자바 - 중급 2편
stack구조관련질문
package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } public void pop(){ System.out.println(history.pop()); } } 문제와풀이3 -stack시간 수업에관한 질문입니다 stack구조의 경우 마지막에 넣은 입력이 pop()을 하면 나오는데 이경우는 마지막 전에 입력한것이 나옵니다 이유가뭘까요??
-
미해결김영한의 실전 자바 - 중급 2편
컬렉션프레임워크 Stack 관련질문
package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } } ////////////////////// package collection.deque.test.stack; public class BrowserHistoryTest { public static void main(String[] args) { BrowserHistory browser = new BrowserHistory(); // 사용자가 웹페이지를 방문하는 시나리오 browser.visitPage("youtube.com"); browser.visitPage("google.com"); browser.visitPage("facebook.com"); // 뒤로 가기 기능을 사용하는 시나리오 String currentPage1 = browser.goBack(); System.out.println("currentPage1 = " + currentPage1); String currentPage2 = browser.goBack(); System.out.println("currentPage2 = " + currentPage2); System.out.println(browser); } } 위의 goBack 메서드 실행코드가 Pop()인데 currentPage1 에서 facebook이 출력이되지않고 google이 출력되는 이유가 궁금합니다 스택구조는 마지막에 입력한것이 나오게 되어있는데 그 전에 입력한것이 왜 나오는 이유가 궁금합니다
-
해결됨오브젝트 - 기초편
ReservationService 구현에서 SRP에 대해서 질문이 있습니다.
안녕하세요. 좋은 강의 만들어주셔서 감사합니다.강의를 보다가 마침 평소에 고민하던 내용이 있어서 질문 드리게 됐습니다. 5-4. 애플리케이션 객체 추가하기 강의를 보던 중 외부에서 직접적으로 각각의 도메인을 호출하지 않고 ReservationService를 만들고 외부에서는 reserveScreening()를 호출해서 예약을 하는거로 이해했습니다. reserveScreening()에서 customer 조회, screening 조회, 예약 등록 등의 작업을 하고 있는데 이 경우에 SRP를 위반하는게 아닌가 하는 의문이 있었습니다.헷갈리는 부분은 함수 하나에 여러 가지 동작이 있고 변경 될 여지가 많으니까 SRP에 위반 되는게 아닌가? 싶다가도 ‘예약을 하는 하나의 역할’이니까 SRP를 위반하는게 아니지 않나? 라는 생각으로 머리속에서 빙글빙글 돌고 있습니다. 평소 개발을 할 때 Service layer의 역할에 대해서 애매한 부분이 많았는데 SRP를 준수하려고 하나의 기능만 넣어야 된다고 생각하면서 개발을 하다보면 Controller의 역할이 많아지고 Service는 깔끔해졌지만 막상 보면 Service에서 하나의 기능을 구현한다기보다는 각각의 Service의 함수를 Controller에서 조합 해야 사용할 수 있고 비즈니스 로직을 Controller에서 파악할 수 있는 등의 문제가 있었습니다. reserveScreening()의 역할처럼 어떤 범위까지가 Service 하나하나의 기능으로 정의하는게 맞는지 궁금합니다. 또 다른 고민은 Respository에서 데이터를 조회할 때 Controller에서 Repository를 바로 조회하지 않도록 항상 Controller->Service->Repository의 순서로 호출을 하려고 하다보니까 간단하게 id로 데이터를 조회할 때에도 Service에 함수를 생성하고 함수 내부에는 Repository를 호출해서 그대로 return 하는 정도의 함수를 생성하게 되는데 이런 역할도 Service에서 가지고 가는게 맞는지 궁금합니다. 조금 추상적인 질문이 될 수도 있을 것 같은데 영호님이 생각하시는 Service layer의 역할에 대해서도 조금 알려주시면 좋을 것 같습니다. 다시한번 좋은 강의 만들어주셔서 감사하고 다음 강의 기다리고 있겠습니다.감사합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
drop_duplicates() 함수 문의
중복 제거 함수에서 subset 없이 바로 keep='last'해도 되나요?-> drop_duplicates(keep = 'last') subset과 keep 서로 앞뒤 바뀌어도 되는 건가요?-> drop_duplicates(keep = 'last', subset = [~])
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 2주차 과제] 윈도우 함수 연습 문제
강의 2-4: 연습 문제1user들의 다음 접속 월과 다다음 접속 월을 구하는 쿼리를 작성해주세요.SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_visit_month, LEAD(visit_month, 2) OVER(PARTITION BY user_id ORDER BY visit_month) AS second_next_visit_month FROM `bqmaster.advanced.analytics_function_01` ORDER BY user_id 강의 2-4: 연습 문제2user들의 다음 접속 월과 다다음 접속 월, 이전 접속 월을 구하는 쿼리를 작성해주세요.SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_visit_month, LEAD(visit_month, 2) OVER(PARTITION BY user_id ORDER BY visit_month) AS second_next_visit_month, LAG(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS previous_visit_month FROM `bqmaster.advanced.analytics_function_01` ORDER BY user_id 강의 2-4: 연습 문제3user가 접속했을 때, 다음 접속까지의 간격을 구하시오.SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) - visit_month AS next_visit_month_diff FROM `bqmaster.advanced.analytics_function_01` ORDER BY user_id -- 서브 쿼리 활용 SELECT user_id, visit_month, next_visit_month - visit_month AS next_visit_month_diff FROM ( SELECT *, LEAD(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS next_visit_month FROM `bqmaster.advanced.analytics_function_01` ) ORDER BY user_id 강의 2-4: 연습 문제4이 데이터셋을 기준으로 user_id의 첫번째 방문 월, 마지막 방문 월을 구하는 쿼리를 작성해주세요.SELECT *, FIRST_VALUE(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS first_visit_month, LAST_VALUE(visit_month) OVER(PARTITION BY user_id ORDER BY visit_month) AS last_visit_month FROM `bqmaster.advanced.analytics_function_01` ORDER BY user_id 강의 2-8: 연습 문제1amount_total, cumulative_sum, cumulative_sum_by_user, last_5_orders_avg_amount 컬럼 구하기SELECT *, SUM(amount) OVER() AS amount_total, SUM(amount) OVER(ORDER BY order_id) AS cumulative_sum, SUM(amount) OVER(PARTITION BY user_id ORDER BY order_id) AS cumulative_sum_by_user, AVG(amount) OVER(ORDER BY order_id ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS last_5_orders_avg_amount FROM `bqmaster.advanced.orders` ORDER BY order_id 강의 2-11: 연습 문제1사용자별 쿼리를 실행한 총 횟수를 구하는 쿼리를 작성해주세요. 단, GROUP BY를 사용해서 집계하는 것이 아닌, query_logs의 데이터의 우측에 새로운 컬럼을 만들어주세요.SELECT *, COUNT(user) OVER(PARTITION BY user) AS total_query_cnt FROM `bqmaster.advanced.query_logs` ORDER BY query_date 강의 2-11: 연습 문제2주차별로 팀 내에서 쿼리를 많이 실행한 수를 구한 수, 실행한 수를 활용해 랭킹을 구해주세요. 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요.SELECT *, RANK() OVER(PARTITION BY week_number, team ORDER BY query_cnt DESC) AS team_rank FROM ( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(user) query_cnt FROM `bqmaster.advanced.query_logs` GROUP BY ALL ) QUALIFY team_rank = 1 ORDER BY week_number, team 강의 2-11: 연습 문제3쿼리를 실행한 시점 기준 1주 전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리를 작성해주세요.SELECT *, LAG(query_count) OVER(PARTITION BY user ORDER BY week_number) AS prev_week_query_count FROM ( SELECT user, team, EXTRACT(WEEK FROM query_date) AS week_number, COUNT(user) query_count FROM `bqmaster.advanced.query_logs` GROUP BY ALL ) ORDER BY user, team 강의 2-11: 연습 문제4시간의 흐름에 따라, 일자별로 유저가 실행한 누적 쿼리 수를 작성해주세요.SELECT *, SUM(query_count) OVER(PARTITION BY user ORDER BY query_date) AS cumulative_query_count FROM ( SELECT *, COUNT(user) AS query_count FROM `bqmaster.advanced.query_logs` GROUP BY ALL ) ORDER BY user, query_date 강의 2-11: 연습 문제5다음 데이터는 주문 횟수를 나타낸 데이터입니다. 만약 주문 횟수가 없으면 NULL로 기록됩니다. 이런 데이터에서 NULL 값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리를 작성해주세요.SELECT date, LAST_VALUE(number_of_orders IGNORE NULLS) OVER(ORDER BY date) AS number FROM raw_data ORDER BY date 강의 2-11: 연습 문제65번 문제에서 NULL을 채운 후, 2일 전 ~ 현재 데이터의 평균을 구하는 쿼리를 작성해주세요(이동 평균)SELECT *, AVG(number) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg FROM ( SELECT date, LAST_VALUE(number_of_orders IGNORE NULLS) OVER(ORDER BY date) AS number FROM raw_data ) ORDER BY date 강의 2-11: 연습 문제7app_logs 테이블에서 Custom Session을 만들어 주세요. 이전 이벤트 로그와 20초가 지나면 새로운 Session을 만들어 주세요. Session은 숫자로(1, 2, 3) 표시해도 됩니다.WITH base AS ( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, event_name, user_id, user_pseudo_id FROM `bqmaster.advanced.app_logs` ), add_before_datetime AS( SELECT *, LAG(event_datetime) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS before_event_datetime FROM base ), add_second_diff AS ( SELECT *, DATE_DIFF(event_datetime, before_event_datetime, SECOND) AS second_diff FROM add_before_datetime ), add_session_start AS ( SELECT *, CASE WHEN second_diff IS NULL THEN 1 WHEN second_diff >= 20 THEN 1 ELSE NULL END AS session_start FROM add_second_diff ) SELECT *, SUM(session_start) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_id FROM add_session_start ORDER BY event_datetime
-
해결됨남박사의 파이썬으로 봇 만들기 with ChatGPT
한국 수출입 은행 API 가져올시 오류 발생
Requests 모듈을 이용하여 HTTPS 사이트 방문시 나타나는 오류인거 같아 r = requests.get(url, verify=False) 위와같이 verify=False 를 추가해줘야 오류를 무시하고 가져오는것으로 보입니다.
-
미해결홍정모의 따라하며 배우는 C++
컨테이너 클래스 피드백 부탁드립니다.
#include <iostream>#include <vector>using namespace std;class IntArray {private: int m_length = 0; int* m_data = nullptr;public: //생성자 IntArray(const std::initializer_list<int> &list) :m_length(list.size()){ m_data = new int[m_length]; int i = 0; for (auto n : list) { m_data[i++] = n; } } //copy constructor IntArray(const IntArray& copy) :m_length(copy.m_length){ for (int i = 0; i < m_length; i++) { m_data[i] = copy.m_data[i]; } } IntArray operator = (const IntArray source) { if (this == &source) { return *this; } delete[] m_data; m_length = source.m_length; if (source.m_data != nullptr) { m_data = new int[m_length]; for (int i = 0; i < m_length; i++) { m_data[i] = source.m_data[i]; } } else { m_data = nullptr; } return *this; } friend ostream& operator<<(ostream& out, IntArray& arr) { for (unsigned i = 0; i < arr.m_length; i++) { out << arr.m_data[i] << " "; } out << endl; return out; } //reset void reset() { delete[] m_data; m_length = 0; m_data = nullptr; } //resize void resize(int new_length) { if (m_length == new_length) { return; } int* len = new int[new_length]; int temp = m_length > new_length ? new_length : m_length; for (int i = 0; i < temp; i++) { len[i] = m_data[i]; } delete[] m_data; m_data = len; m_length = new_length; } void insertBefore(const int& pushNum, const int& indexNum) { if (indexNum<0 || indexNum > m_length) { return; } int* temp = new int[m_length + 1]; for (int i = 0; i < indexNum; i++) { temp[i] = m_data[i]; } temp[indexNum] = pushNum; for (int i = indexNum; i < m_length; i++) { temp[i + 1] = m_data[i]; } delete[] m_data; m_data = temp; ++m_length; } void remove(const int& indexNum) { if (indexNum<0 || indexNum >= m_length) { return; } int* temp = new int[m_length - 1]; for (int i = 0; i < indexNum; i++) { temp[i] = m_data[i]; } for (int i = indexNum + 1; i < m_length; i++) { temp[i - 1] = m_data[i]; } delete[] m_data; m_data = temp; --m_length; } void push_back(const int& num) { resize(m_length + 1); m_data[m_length - 1] = num; } //소멸자 ~IntArray() { if (m_data != nullptr) { reset(); } }};int main(){ //초기화 IntArray my_arr{ 1,3,5,7,9 }; cout << my_arr << endl; // 10을 인덱스 1앞에 : 1, 10, 3, 5, 7, 9 출력까지 my_arr.insertBefore(10, 1); cout << my_arr << endl; // 인덱스 3 제거, 메모리 제거까지? 1 10 3 7 9 my_arr.remove(3); cout << my_arr << endl; // 사이즈 추가? 1 10 3 7 9 13 my_arr.push_back(13); cout << my_arr << endl; return 0;}insertBefore, remove에서 for문을 두번씩 사용하고 전체적으로 for문으로 많이 사용하는게 좀 걸리긴하는데 더 나은 방법이 있으면 얼마든지 알려주시면 감사하겠습니다!!
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
회원 탈퇴 후, 로그아웃 미실행
안녕하세요 강사님회원탈퇴는 정상적으로 처리되서 팝업까지는 올라오는데로그아웃이 실행되지 않습니다.. 😭 https://github.com/KMSKang/react