묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
FPGA 8장, vitis 실행 오류
Vitis에서 Run을 실행하면 다음과 같은 에러가 뜨는데 보드 연결선을 다시 연결도 해봤고 베이스 주소 확인했는데 같았습니다.또 어떤 문제 때문에 이러한 실행 오류가 발생하는걸까요?
-
해결됨게임 엔진을 지탱하는 게임 수학
"섹션 1 - 선형성 13:14 " 함수와 사상의 차이에 대해 헷갈리는 부분이 있습니다!
안녕하세요 교수님!"섹션 1 - 선형성 13:14 " 위치에함수와 사상의 차이를 듣다가 생긴 의문이 있습니다.사상인지 아닌지는 "함수가 전사함수 단사함수냐 따라 다르다" 는 거짓 이라 생각했습니다.예를들어 실수 벡터 공간이 있고,선형변환 후 영공간으로 낮아지는 행렬이 있으므로치역은 0(영벡터) 하나로만 대응 되고정의역 공역 집합의 대수 구조는 동일하므로때문에 단사 함수든 아니든 상관없이 사상이다.영공간으로 낮아지는 행렬은 사상이 맞다 생각했습니다. 따라서 위처럼 결론을 내려도 문제가 없을까요?f : x ↦ x^{1/2}는 비록 집합이 다르더라도사상 관계가 맞다. 는 참이라 생각했습니다.정의역은 실수 집합이고 공역은 복소수 집합(양수면 실수, 음수면 복소수)인것 처럼 비록 둘다 다른 집합이더라도실수 집합도 복소수 집합도 체의 공리가 만족하는 대수 구조이므로정의역과 실수 집합이 다르더라도 "체" 라는 대수 구조가 동일한 집합인 점에서 위 함수는 "사상" 이다.이렇게 결론을 내려도 문제가 없을까요?이 두가지가 궁금했던 이유는함수 종류와 집합에 따라 함수를 사상이라 부를 수 있는가 없는가 헷갈렸습니다..감사합니다!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
색션 4 - 조회기능 구현에 makeDiv관련 질문 있습니다.
makeDiv를 써서 화면 구성을 했는데 컴포넌트를 쓰는것과 저렇게 불러오는것의 차이가 있을까요?
-
미해결
[인프런 빅쿼리 빠짝스터디 2주차] 윈도우 함수, FRAME설정, QUALITY
-- 윈도우 함수 집계 및 frame 연습 문제 -- My answer SELECT *, sum(amount) over (order by order_id rows between unbounded preceding and unbounded following) as total_amount, -- 전체 합을 구하고 싶을 때, over () 안에 아무것도 작성 안해도 됨 sum(amount) over (order by order_date, order_id rows between unbounded preceding and current row) as cumulative_sum, -- sum(amount) over(order by order_id) 로만 해도 ok sum(amount) over (partition by user_id order by user_id, order_date 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 avg_5_last FROM `advanced.orders` ORDER BY order_id; -- MEMO -- -- OVER() 안에 아무것도 들어가지 않는 경우도 있음 -- 연습 문제 1번 -- 사용자 별 쿼리를 실행한 총 횟수를 구하는 쿼리를 작성해주세요. -- 단,GROUP BY를 사용해서 집계하는 것이 아닌 query_logs의 데이터의 우측에 새로운 컬럼을 만들어주세요. SELECT *, COUNT(*) OVER(PARTITION BY user) as use_query FROM `advanced.query_logs`; -- # data 확인 SELECT *, COUNT(*) OVER(PARTITION BY user) as use_query FROM `advanced.query_logs` order by user; -- 연습 문제 2번 -- 주차 별로 팀 내에서 쿼리를 많이 실행한 수를 구한 후, 실행한 수를 활용해 랭킹을 구해주세요. -- 단,랭킹이 1등인 사람만 결과가 보이도록 해주세요. -- Q) 주 차를 뽑는 함수..? : extract 활용 -- partiton by column 잘 생각하기! with add_weeknum as( select *, extract(week from query_date) as week_number from `advanced.query_logs`), count_query as( select *, count(user) over(partition by week_number, team, user order by week_number, team, user rows between unbounded preceding and current row) as query_total from add_weeknum) select user, team, week_number, rank() over(partition by week_number, team order by query_total desc) as rank_query from count_query qualify rank_query=1 order by week_number; -- # 간단한 답 -- # 윈도우 함수 대신, GROUP BY를 쓰면 절차 줄일 수 있음! with query_total_cnt as( select extract(week from query_date) as week_number, team, user, count(query_date) as query_total from `advanced.query_logs` group by all ) select *, rank() over(partition by week_number, team order by query_total desc) as rank_query from query_total_cnt qualify rank_query=1 order by week_number; -- 연습 문제 3번 -- (2번 문제에서 사용한 주차 별 쿼리 사용)쿼리를 실행한 시점 기준 1주 전에 쿼리 실행 수를 별도의 컬럼으로 확인할 수 있는 쿼리를 작성해주세요. -- partiton by column 잘 생각하기! with add_weeknum as( select *, extract(week from query_date) as week_number from `advanced.query_logs`), count_query as( select *, count(user) over(partition by week_number, user order by week_number, team, user rows between unbounded preceding and current row) as query_total from add_weeknum order by user, week_number), week_query as( select distinct user, team, week_number, last_value(query_total) over (partition by user, week_number order by week_number, team, user) as week_total_cnt from count_query order by user, week_number) select *, lag(week_total_cnt,1) over (partition by user order by week_number) as last_query from week_query order by user, week_number; -- 연습 문제 4번 -- 시간의 흐름에 따라, 일자 별로 유저가 실행한 누적 쿼리수를 작성해 주세요. -- # WITH 구문에서 윈도우 함수 대신, group by를 사용하는 것이 더 간단할 듯 with daily_query as( select distinct user, team, query_date, count(*) over (partition by user, query_date) as query_count from `advanced.query_logs` order by user, query_date ) select *, sum(query_count) over (partition by user order by user, query_date rows between unbounded preceding and current row) as cumulative_query_count -- # order by 구문이 있고, frame 구문은 없을 때 frame의 default 값 : rows between unbounded preceding and current row from daily_query order by user, query_date; -- 연습 문제 5번 -- 다음 데이터는 주문 횟수를 나타낸 데이터입니다. 만약 주문 횟수가 없으면 NULL로 기록됩니다. -- 이런 데이터에서 NULL 값이라고 되어있는 부분을 바로 이전 날짜의 값으로 채워주는 쿼리를 작성해 주세요. -- Q) 5월 12일은 어떻게 처리? / 이틀 전 주문량으로 대체? -- # LAST_VALUE & IGNORE 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 *, case when number_of_orders is null then lag(number_of_orders,1) over(order by date) else number_of_orders end as number_of_orders_re FROM raw_data order by date; -- 답안 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 number_of_orders_re FROM raw_data order by date; -- 연습 문제 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 ), newdata as( SELECT *, LAST_VALUE(number_of_orders IGNORE NULLS) OVER(ORDER BY date) as number_of_orders_re -- 수정한 부분 FROM raw_data order by date) select date, number_of_orders_re, avg(number_of_orders_re) over (order by date rows between 2 preceding and current row) as moving_avg from newdata order by date; -- 연습 문제 7번 -- app_logs 테이블에서 CustomSession을 만들어 주세요. 이전 이벤트 로그와 20초가 지나면 새로운 Session을 만들어 주세요. -- Session은 숫자로(1,2,3…) 표시해도 됩니다. 2022-08-18일의 user_pseudo_id(1997494153.8491999091)은 session_id가 4까지 나옵니다. -- Q) session_start id 어떻게....???????? -- # 처음에는 datetime diff의 누적 합을 생각했음 with event_data as( select event_date, event_timestamp, datetime(timestamp_micros(event_timestamp), 'Asia/Seoul') as event_datetime, event_name, user_id, user_pseudo_id from `advanced.app_log` where user_pseudo_id='1997494153.8491999091' order by user_pseudo_id, event_datetime ), before_eventtime_add as( select *, lag(event_datetime,1) over (partition by user_pseudo_id order by user_pseudo_id, event_datetime) as before_datetime from event_data order by user_pseudo_id, event_datetime ) select *, datetime_diff(event_datetime,before_datetime,second) as second_diff from before_eventtime_add order by user_pseudo_id, event_datetime; -- 답안 -- # event_datetime이랑 before_datetime을 빼서 20초가 넘으면 새로운 세션으로 정의한다. with event_data as( select event_date, event_timestamp, datetime(timestamp_micros(event_timestamp),'Asia/Seoul') as event_datetime, event_name, user_id, user_pseudo_id from `advanced.app_log` where user_pseudo_id='1997494153.8491999091' order by user_pseudo_id, event_datetime ), before_eventtime_add as( select *, lag(event_datetime,1) over (partition by user_pseudo_id order by user_pseudo_id, event_datetime) as before_datetime from event_data order by user_pseudo_id, event_datetime ), diff_data as( select *, datetime_diff(event_datetime,before_datetime,second) as second_diff from before_eventtime_add order by user_pseudo_id, event_datetime ) select *, sum(start_id) over (partition by user_pseudo_id order by event_datetime) as session_num from( select *, case when second_diff is null then 1 when second_diff>=20 then 1 else 0 end as start_id from diff_data);
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
video_call - 플러그인 설치하기 중 에러
FAILURE: Build failed with an exception. * What went wrong:A problem occurred configuring project ':agora_rtm'.> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl. > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace. If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.BUILD FAILED in 2sError: Gradle task assembleDebug failed with exit code 1플러그인 세팅이 끝나고 에뮬레이터에 흰 화면이 뜨면 된다 하셨는데, 저런 에러를 뱉었습니다. 처리 하는 방법이 콘솔에 여러 사이트를 알려주길래 비벼봤는데, 잘 안되더라고요. 에러를 처리 하는 방법을 알려주시면 감사하겠습니다!
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
FPGA 8장 vitis run 실행 오류
빌드는 정상적으로 동작하는데 run을 실행하면 해당 오류가 나옵니다.혹시 파일이 누락되었나 싶어 보는데 폴더 내에 정상적으로 ps7_init.tcl 파일들은 존재하는 거 같아요,혹시 경로지정이 안됐거나 해결하는 방법이 있을까요? 버전은 2023.2 사용중입니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
회원탈퇴 기능을 추가하려고 합니다.
홈화면 우측 상단 삼단메뉴 바를 통해 로그아웃 기능이 있는데 회원탈퇴 기능은 없는 듯 하여 로그아웃 버튼 아래에 회원탈퇴 버튼을 추가 하고 싶습니다. 어느 코드창에 추가하여야 하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
테스트 오류 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] The object is already closed [90007-224]org.h2.jdbc.JdbcSQLNonTransientException: The object is already closed [90007-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:566) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.message.DbException.get(DbException.java:188) at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1422) at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:511) at hello.jdbc.service.MemberServiceV2.accountTransfer(MemberServiceV2.java:34) at hello.jdbc.service.MemberServiceV2Test.accountTransfer(MemberServiceV2Test.java:65) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)> Task :test FAILEDMemberServiceV2Test > 정상 이체 FAILED org.h2.jdbc.JdbcSQLNonTransientException at MemberServiceV2Test.java:651 test completed, 1 failedFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/Users/user/Desktop/jdbc/jdbc/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 1s4 actionable tasks: 1 executed, 3 up-to-date 이런식으로 오류가 나는데 구글링해도 도저히 원인을 못찾겠네요ㅠㅠ 도와주세요 ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 메시지 소스사용 에러
@SpringBootTest public class MessageSourceTest { @Autowired MessageSource ms; @Test void helloMessage(){ String result = ms.getMessage("hello", null, null); Assertions.assertThat(result).isEqualTo("안녕"); } }코드 실행시 에러 발생인텔리제이jdk 11로 빌드 하였습니다 org.opentest4j.AssertionFailedError: Expecting: <"??"> to be equal to: <"안녕"> but was not. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
-
해결됨실전! FastAPI 입문
INFO sqlalchemy.engine.Engine ROLLBACK
swagger 로 opt 생성, 검증 api 실행을 했더니 sqlalchemy.engine.Engine ROLLBACK 로그가 출력이 됩니다. 원인을 모르겠습니다...로그INFO: Application startup complete. INFO: 127.0.0.1:63654 - "GET /docs HTTP/1.1" 200 OK email-validator not installed, email fields will be treated as str. To install, run: pip install email-validator INFO: 127.0.0.1:63654 - "GET /openapi.json HTTP/1.1" 200 OK 2024-10-31 14:25:27,367 INFO sqlalchemy.engine.Engine SELECT DATABASE() 2024-10-31 14:25:27,367 INFO sqlalchemy.engine.Engine [raw sql] {} 2024-10-31 14:25:27,369 INFO sqlalchemy.engine.Engine SELECT @@sql_mode 2024-10-31 14:25:27,369 INFO sqlalchemy.engine.Engine [raw sql] {} 2024-10-31 14:25:27,369 INFO sqlalchemy.engine.Engine SELECT @@lower_case_table_names 2024-10-31 14:25:27,370 INFO sqlalchemy.engine.Engine [raw sql] {} 2024-10-31 14:25:27,372 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2024-10-31 14:25:27,377 INFO sqlalchemy.engine.Engine SELECT user.id, user.username, user.password, todo_1.id AS id_1, todo_1.contents, todo_1.is_done, todo_1.user_id FROM user LEFT OUTER JOIN todo AS todo_1 ON user.id = todo_1.user_id WHERE user.username = %(username_1)s 2024-10-31 14:25:27,377 INFO sqlalchemy.engine.Engine [generated in 0.00018s] {'username_1': 'admin'} INFO: 127.0.0.1:63658 - "POST /users/log-in HTTP/1.1" 200 OK 2024-10-31 14:25:27,603 INFO sqlalchemy.engine.Engine ROLLBACK INFO: 127.0.0.1:63664 - "POST /users/email/otp HTTP/1.1" 200 OK 2024-10-31 14:26:02,514 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2024-10-31 14:26:02,514 INFO sqlalchemy.engine.Engine SELECT user.id, user.username, user.password, todo_1.id AS id_1, todo_1.contents, todo_1.is_done, todo_1.user_id FROM user LEFT OUTER JOIN todo AS todo_1 ON user.id = todo_1.user_id WHERE user.username = %(username_1)s 2024-10-31 14:26:02,514 INFO sqlalchemy.engine.Engine [cached since 35.14s ago] {'username_1': 'admin'} INFO: 127.0.0.1:63671 - "POST /users/email/verify HTTP/1.1" 200 OK Sending email to admin@fastapi.com! 2024-10-31 14:26:12,519 INFO sqlalchemy.engine.Engine ROLLBACK src/database/repository.pyfrom typing import List, Optional from fastapi import Depends from sqlalchemy import select, delete from sqlalchemy.orm import Session from database.connection import get_db from database.orm import ToDo, User class ToDoRepository: def __init__(self, session: Session = Depends(get_db)): self.session = session def get_todos(self) -> List[ToDo]: return list(self.session.scalars(select(ToDo))) def get_todo_by_todo_id(self, todo_id: int) -> ToDo | None: return self.session.scalar(select(ToDo).where(ToDo.id == todo_id)) def create_todo(self, todo: ToDo) -> ToDo: self.session.add(instance=todo) self.session.commit() self.session.refresh(instance=todo) return todo def update_todo(self, todo: ToDo) -> ToDo: self.session.add(instance=todo) self.session.commit() self.session.refresh(instance=todo) return todo def delete_todo(self, todo_id: int) -> None: self.session.execute(delete(ToDo).where(ToDo.id == todo_id)) self.session.commit() class UserRepository: def __init__(self, session: Session = Depends(get_db)): self.session = session def get_user_by_username(self, username: str) -> User | None: return self.session.scalar(select(User).where(User.username == username)) def save_user(self, user: User) -> User: self.session.add(instance=user) self.session.commit() self.session.refresh(instance=user) return user src/service/user.pyimport random import time import bcrypt from datetime import datetime, timedelta from jose import jwt class UserService: encoding: str = "UTF-8" JWT_SECRET_KEY: str = "f002393019e8776398370aa671767b860b702854724591cd0da5fc97bda3daf1" JWT_ALGORITHM: str = "HS256" def hash_password(self, plain_password: str) -> str: hashed_password: bytes = bcrypt.hashpw( plain_password.encode(self.encoding), salt=bcrypt.gensalt() ) return hashed_password.decode(self.encoding) def verify_password( self, plain_password: str, hashed_password: str ) -> bool: return bcrypt.checkpw( plain_password.encode(self.encoding), hashed_password.encode(self.encoding) ) def creat_jwt(self, username: str) -> str: return jwt.encode( { "sub": username, "exp": datetime.now() + timedelta(days=1), }, self.JWT_SECRET_KEY, algorithm=self.JWT_ALGORITHM ) def decode_jwt(self, access_token: str) -> str: payload: dict = jwt.decode( access_token, self.JWT_SECRET_KEY, algorithms=[self.JWT_ALGORITHM] ) return payload["sub"] @staticmethod def create_otp() -> int: return random.randint(1000, 9999) @staticmethod def send_email_to_user(email: str) -> None: time.sleep(10) print(f"Sending email to {email}!") src/api/user.pyfrom fastapi import APIRouter, Depends, HTTPException, BackgroundTasks from cache import redis_client from database.orm import User from database.repository import UserRepository from schema.request import SignUpRequest, LoginRequest, CreateOTPRequest, VerifyOTPRequest from schema.response import UserSchema, JWTResponse from security import get_access_token from service.user import UserService router = APIRouter(prefix="/users", tags=["USER"]) @router.post("/sign-up", status_code=201) def user_sign_up_handler( request: SignUpRequest, user_service: UserService = Depends(), user_repository: UserRepository = Depends(), ): hashed_password: str = user_service.hash_password( plain_password=request.password ) user: User = User.create( username=request.username, hashed_password=hashed_password ) user: User = user_repository.save_user(user) return UserSchema.from_orm(user) @router.post("/log-in", status_code=200) def user_log_in_handler( request: LoginRequest, user_service: UserService = Depends(), user_repository: UserRepository = Depends(), ): user: User | None = user_repository.get_user_by_username( username=request.username ) if not user: raise HTTPException(status_code=404, detail="User Not Found") verified: bool = user_service.verify_password( plain_password=request.password, hashed_password=user.password ) if not verified: raise HTTPException(status_code=401, detail="Not Authorized") access_token: str = user_service.creat_jwt(username=user.username) return JWTResponse(access_token=access_token) @router.post("/email/otp") def create_otp_handler( request: CreateOTPRequest, _: str = Depends(get_access_token), user_service: UserService = Depends() ): otp: int = user_service.create_otp() redis_client.set(request.email, otp) redis_client.expire(request.email, 3 * 60) return {"otp": otp} @router.post("/email/verify") def verify_otp_handler( request: VerifyOTPRequest, background_tasks: BackgroundTasks, access_token: str = Depends(get_access_token), user_service: UserService = Depends(), user_repo: UserRepository = Depends(), ): otp: str | None = redis_client.get(request.email) if not otp: raise HTTPException(status_code=400, detail="Bad Request") if request.otp != int(otp): raise HTTPException(status_code=400, detail="Bad Request") username: str = user_service.decode_jwt(access_token=access_token) user: User | None = user_repo.get_user_by_username(username) if not user: raise HTTPException(status_code=404, detail="User Not Found") background_tasks.add_task( user_service.send_email_to_user, email="admin@fastapi.com" ) return UserSchema.from_orm(user)
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 2 - 랭체인(LangChain)으로 나만의 ChatGPT 만들기
Quickstart 오류 - Query Analysis Quickstart 기초 예제 실습
안녕하세요제공해주신 수업노트 실행시 오류가 나서 문의 드립니다from langchain_community.document_loaders import YoutubeLoader urls = [ "https://www.youtube.com/watch?v=HAn9vnJy6S4", "https://www.youtube.com/watch?v=dA1cHGACXCo", "https://www.youtube.com/watch?v=ZcEMLz27sL4", "https://www.youtube.com/watch?v=hvAPnpSfSGo", "https://www.youtube.com/watch?v=EhlPDL4QrWY", "https://www.youtube.com/watch?v=mmBo8nlu2j0", "https://www.youtube.com/watch?v=rQdibOsL1ps", "https://www.youtube.com/watch?v=28lC4fqukoc", "https://www.youtube.com/watch?v=es-9MgxB-uc", "https://www.youtube.com/watch?v=wLRHwKuKvOE", "https://www.youtube.com/watch?v=ObIltMaRJvY", "https://www.youtube.com/watch?v=DjuXACWYkkU", "https://www.youtube.com/watch?v=o7C9ld6Ln-M", ] docs = [] for url in urls: docs.extend(YoutubeLoader.from_youtube_url(url, add_video_info=True).load())혹시 오류 수정된 소스를 제공 받을 수 있을까요?감사합니다
-
미해결
HpBarWidget 관련 질문이 있습니다.
다음 사진을 보고 AddToViewport를 호출시켜야 위젯이 보여진다고 이해했습니다. 그런데HpBarWidget은 따로 AddToViewport를 호출 시키지 않았음에도 왜 보여지는거죠?컴포넌트 위젯에 담을때 알아서 AddToViewport를 호출시키는 걸까요?아니면 AddToViewport함수는 위젯이 보여지는 게 아니라, Viewport 화면상에 보여지게 할때 쓰는걸까요?이게 맞다면 위젯이 단순히 보여지게 하는 건 Viewport를 따로 호출시키지 않아도creatwidget 호출 후 초기화될때 자동으로 되는걸까요?그리고 꼭 AddToViewport를 쓰지 않아도 NativeConstruct는 호출 돠는걸로 알고있는데 저 주황색 화살표에 의미는 뭐죠?
-
미해결
도메인 설계 질문드립니다.
도메인 설계 질문드립니다.레포지토리 계층에서 항상 엔티티와 매핑되는 정보를 조회하는게 아니라 그룹함수를 사용해 데이터를 뽑을 수 있잖아요. 결과를 담는 VO 객체를 별도로 만들어야 할까요? 아니면 DTO를 만들어야 하나요파라미터가 5개 이상 될 수 도있는데, 파라미터도 VO나 DTO를 따로 만들어야 하나요? 만들어야 한다면 VO로 해야하나요 DTO로 해야하나요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증의 순서를 지정하고 싶습니다.
이렇게 @GroupSequence 를 사용해서 검증의 순서를 정하고싶은데 예를 들자면 클라이언트에서 이메일을 작성할때 "ㅇㅇ" 이런 식으로 작성을 하면 @NotBlank 가 통과가 되고 @Email 이 실행이 되어야 하는거 같은데 실행이 되지 않습니다 그리고 실행이 안되는줄 알았지만 아래 아이디 비밀번호를 입력 하게되면 이때 형식에 맞지 않다는 오류 메시지가 나오게 됩니다, 어떻게 해야 할까요..package hello.instar.validation; import jakarta.validation.GroupSequence; import jakarta.validation.groups.Default; @GroupSequence({Default.class,ValidationGroups.NotBlankGroup.class, ValidationGroups.EmailGroup.class,ValidationGroups.SizeGroup.class, }) public interface ValidationSequence { }@NotBlank(groups = ValidationGroups.NotBlankGroup.class) @Email(groups = ValidationGroups.EmailGroup.class) private String email;
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증에 실패하면 addForm 으로 다시 보낼때 왜 리다이렉트 안하는가요 ?
@Controller @RequestMapping("/validation/v2/items") @RequiredArgsConstructor @Slf4j public class ValidationItemControllerV2 { private final ItemRepository itemRepository; private final ItemValidator itemValidator; @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v2/addForm"; } @PostMapping("/add") public String addItemV6( @Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증에 실패하면 다시 입력 폼으로 이동 if(bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); return "validation/v2/addForm"; //TODO 이거는 왜 리다이렉트 안하지 ? } //에러에 안 걸려서, 이후는 성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; } }위 코드에서 TODO 부분인데요검증에 실패했을때 addForm 으로 다시 보내는데, 리다이렉트를 안하더라구요그러면 브라우저에서 새로고침하면 POST 를 보내게 될텐데상품 등록 폼으로 다시 보내는게 목적이라면 리다이렉트를 하는게 더 좋아 보이는데요 혹시 리다이렉트 안하는 이유가 있을까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
github 공개 업로드 질문
김영한님 강의를 따라하면서 실습한 코드를 github public 레포로 올려도 되나요 ?업로드 해도 되는 항목과 업로드 하면 안되는 항목이 궁금합니다 실습하면서 따라 작성한 코드다운로드 받은 코드강의자료 pdf 파일강의자료 pdf 일부분 캡쳐 (예, spring mvc 구조 그림, 회원가입 도메인 요구사항 ERD) 감사합니다
-
해결됨스프링 시큐리티 OAuth2
SPA의 로그인 페이지 사용하면서 자체 인가 서버 구성하는 법
SPA로그인 페이지 사용 아직 시도중이지만 시큐리티필터체인의 http. .... .login() .loginProcessingUrl()로 해결 볼 수 있을 거 같아서 자세한 질문은 삭제하겠습니다..!
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[인프런 빅쿼리 빠짝스터디 2주차] 윈도우 함수, FRAME설정, QUALITY
윈도우 탐색 함수 연습문제(1) 연습문제 1-- 문제 1) USER의 다음 접속월, 다다음 접속 월 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) 연습문제 2-- 문제 2) USER의 다음 접속월, 다다음 접속 월, 이전 접속 월 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` 윈도우 함수 FRAME 연습문제연습문제 (1~4)SELECT -- 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) 연습문제 1-- 연습문제1) 사용자별 쿼리 실행 횟수 WITH base AS( SELECT user, team, query_date, COUNT(*) OVER(PARTITION BY user) AS total_query_cnt, FROM `avdanced.query_logs` ) SELECT * FROM base(2) 연습문제 2-- 연습문제2) 주차별 팀내 쿼리 실행한 수 (RANK 1만 보이도록) WITH base2 AS( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(*) OVER(PARTITION BY EXTRACT(WEEK FROM query_date) ,user ORDER BY EXTRACT(WEEK FROM query_date) ) AS query_cnt, FROM `avdanced.query_logs` ORDER BY EXTRACT(WEEK FROM query_date) ) SELECT DISTINCT *, RANK() OVER(PARTITION BY team,week_number ORDER BY total_query_cnt DESC) AS team_rank FROM base2 QUALIFY team_rank = 1 ORDER BY week_number, team강의자료의 코드-- 2) 주차별로 팀 내에서 쿼리를 많이 실행한 수를 구한 후, 실행한 수를 활용해 랭킹을 구해주세요. 단, 랭킹이 1등인 사람만 결과가 보이도록 해주세요 -- 주차별로 개인당 실행한 쿼리 횟수 -- 위 쿼리 횟수를 기반으로 랭킹 -- 랭킹을 기반으로 필터링(랭킹=1) -- 문제의 의도 : 원본 데이터 => 1 row마다 데이터가 있고, 그걸 집계해서 사용. GROUP BY => 윈도우 함수 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 : 윈도우 함수의 조건을 설정할 때 사용 QUALIFY rk = 1 ORDER BY week_number, team, query_cnt DESCCOUNT의 윈도우 함수 대신에 GROUP BY를 사용하는 풀이도 있다는 것을 알게 되었다! 너무 어렵게 생각하지 말기!(3) 연습문제 3WITH base2 AS( SELECT EXTRACT(WEEK FROM query_date) AS week_number, team, user, COUNT(*) OVER(PARTITION BY EXTRACT(WEEK FROM query_date) ,user ORDER BY EXTRACT(WEEK FROM query_date) ) AS query_cnt, FROM `avdanced.query_logs` #QUALIFY team_rank = 1 ORDER BY EXTRACT(WEEK FROM query_date) ), base3 AS( SELECT DISTINCT *, RANK() OVER(PARTITION BY team,week_number ORDER BY query_cnt DESC) AS team_rank FROM base2 QUALIFY team_rank = 1 ORDER BY week_number, team ) -- 연습문제3) 쿼리 실행 시점 1주전 쿼리 실행 SELECT DISTINCT *, LAG(query_cnt,1) OVER(PARTITION BY user ORDER BY week_number) AS prev_week_query_count FROM base2 GROUP BY ALL ORDER BY user, week_number(4) 연습문제 4--연습문제4) SELECT *, SUM(query_count) OVER(PARTITION BY user ORDER BY query_date) AS culmulative_query_count, SUM(query_cnt) OVER(PARTITION BY user ORDER BY query_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum2 FROM( SELECT DISTINCT *, COUNT(user) OVER(PARTITION BY query_date, user) AS query_count, FROM `avdanced.query_logs` ) ORDER BY user,query_date QUALIFY 로 조건설정을 하여 두 값이 같은 지 비교하는 법이 인상깊었던 문제 (QUALIFY cumulative_sum != cumulative_sum2) (5) 연습문제 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 ) --연습문제 5) null에 이전 값 삽입 SELECT raw_data.date, IF(raw_data.number_of_orders IS NULL, LAG(raw_data.number_of_orders,1) OVER(ORDER BY date), raw_data.number_of_orders) FROM raw_data강의풀이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 ), -- LAG로 직전 값 가져오면 되지 않을까? -- number_of_orders가 null이면, before_number_of_orders를 가져와라! -- 아래 쿼리는 어려운 방법 -- 그 다음 방법 : LAST VALUE를 쓰자! => 값이 없으면 NULL이 뜬다! -- FIRST_VALUE, LAST_VALUE => NULL을 포함해서 연산 -- 출제 의도 : NULL을 제외해서 연산하고 싶으면 IGNORE NULLS을 쓰면 된다! -- SELECT -- *, -- IF(number_of_orders IS NULL, before_number_of_orders, number_of_orders) AS filled_orders -- -- Number of arguments does not match for function IF. Supported signature: IF(BOOL, ANY, ANY) at [89:3] -- -- False일 때 인자를 추가하지 않아서 생긴 오류 -- FROM ( -- SELECT -- *, -- LAG(number_of_orders) OVER(ORDER BY date) AS before_number_of_orders -- FROM raw_data -- ) 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 -- Syntax error: Expected keyword DEPTH but got identifier "filled_data" at [104:6] : WITH문을 두개 작성했는데 WITH 쉼표 쓰고 구분! )LAST_VALUE, FIRST_VALUE를 사용하는 풀이 법에 대하여 알게 됨(6) 연습문제 6WITH 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 ), null_is_lag AS( --연습문제 5) null에 이전 값 삽입 SELECT raw_data.date, IF(raw_data.number_of_orders IS NULL, LAG(raw_data.number_of_orders,1) OVER(ORDER BY date), raw_data.number_of_orders) AS number_of_orders FROM raw_data ) -- 연습문제 6) 이동평균 SELECT *, AVG(nl.number_of_orders) OVER(ORDER BY nl.date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg FROM null_is_lag AS nlFRAME절을 사용할 때, AND를 기준으로 앞에는 뒤의 값보다 반드시 이전 행을 가리키는 구문이 와야 함!(7) 연습문제 7-- 1. TIMESTAMP → DATETIME -- 2. SECOND_DIFF 생성 : uSER로 묶어서 - -- 3. SESSION_START생성 : USER로 묶어서 LAG(DATA,1)이 NULL이면 1, SECOND_DIFF가 20이상이면 +1 -- 4. SESSION_ID생성: SESSION_START가 1일 경우 SESSION_ID +1, NULL일 경우 LAG(DATA,1) WITH add_date AS ( -- 1. TIMESTAMP → DATETIME SELECT event_date, event_timestamp, DATETIME(TIMESTAMP_MICROS(event_timestamp)) AS event_datetime, event_name, user_id, user_pseudo_id, LAG(DATETIME(TIMESTAMP_MICROS(event_timestamp))) OVER(PARTITION BY user_pseudo_id ORDER BY event_timestamp) AS before_event_datetime FROM `avdanced.app_logs_temp` --,UNNEST(event_params) AS param -- FROM 절 안에서 UNNEST를 사용 WHERE event_date ="2022-08-18" AND user_pseudo_id = "1997494153.8491999091" ), add_diff AS ( -- 2. SECOND_DIFF 생성 : uSER로 묶어서 - SELECT *, DATE_DIFF(event_datetime, before_event_datetime,SECOND) AS second_diff, FROM add_date ), add_session AS( -- 3. SESSION_START생성 : USER로 묶어서 LAG(DATA,1)이 NULL이면 1, SECOND_DIFF가 20이상이면 +1 SELECT *, IF(second_diff IS NULL OR second_diff >=20, 1, NULL) AS session_start FROM add_diff ) -- 4. SESSION_ID생성 *, SUM(session_start) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_num FROM add_session ORDER BY event_datetime user_id와 user_pseudo_id는 다르다. (계정이 존재하면 USER_ID, 없어도 USER_PSEUDO_ID를 통해 활동기록이 남는다.)IF문은 행 단위로 작동, SUM은 특정 파티션에 대한 누적합을 계산함으로 아래 코드가 작동하지 않음 SUM(session_start) OVER(PARTITION BY user_pseudo_id ORDER BY event_datetime) AS session_numCTE를 사용하는 것과 서브쿼리를 사용하는 방법 중 상황에 맞게 적절히 혼용할 수 있다는 것을 알게 됨!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
디버깅모드 에러
ErrorDecoder를 이용한 예외 처리강의 15:00 에order_service: url: http://ORDER-SERVICE/order-service/%s/orders exception: order_is_emptyda: User's order is emptyimda2이렇게 설정하고 http://127.0.0.1:8000/user-service/users/[userid]돌리니까디버깅모드에서 getProperty가 Invalid expression : ) 로 표시됩니다 resume 하면 제대로 postman에 적용되긴합니다. 거의 똑같이 썻는데 왜 저는 저렇게 디버그 모드에서 invalid expression이라고 떠서 확인을 못하게 뜰까요 스프링부트3.3 jdk 17입니다 intellij
-
미해결스프링 시큐리티 OAuth2
claims 공개/비공개 개념 질문
{ "sub" : "1234567890", "iss" : "onjsdnjs.com" // 등록된 클레임 "exp" : 192630000 "https://onjsdnjs.com/claims/job" : "developer" //공개 클레임 "userId" : "leaven" // 비공개 클레임 "username" : "onjsdnjs" }공개와 비공개 개념이 있습니다.어디에 혹은 어느 대상에 공개를 한다는 것인지 설명이 없어 문의 드립니다.