묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[예시 코드 오타 제보]처형부탁한다
한다 제보를 KILL-9, 바란다 응답[제보 정보 수집중...🤖][KILL-9@user]$ cd 커리큘럼/섹션4/3장/작전1해킹 주문 데이터베이스 정찰 작전에서 프락치를 발견했다JdbcPagingItemReader 가 whereClause에 거짓 증거를 제출해서 혼란을 야기했다status = 'READY_FOR_SHIPMENT' 이고 not null 이어햐 하지 않을까 생각한다CANCELLED 가 아닌 것 같다다시 보니 작전에 혼동이 있는 것 같다 확인요망 🔥 유해 게시물 처형 작전 시스템에도 버그가 발견됐다전체코드에서 JpaCursorItemReader 에 queryString 조건이 잘못된 것 같다이후의 예시 코드들은 잘돼있지만전체코드 복사하는 녀석들이 많기 때문에 처리부탁한다[추가 처형 요청...💀][KILL-9@user]$ cd 커리큘럼/섹션3/2장/작전1글 쓰는 김에 한 녀석도 추가 제보하겠다FlatFileItemReader 고정길이 예제도 처형 부탁한다 소제목인 .columns() 예제 이미지가 정확하다하지만 예시코드라고 적혀있는 Range는 틀렸다 이것은 KILL-9 후보생의 혼란만 가중시킬뿐이다
-
미해결Real MySQL 시즌 1 - Part 1
LEFT JOIN 시 드라이빙 테이블을 왜 ALL로 읽나요?
10강 LEFT JOIN 주의사항 및 튜닝에서explain select u.id, u.name, uc.coupon_id, uc.use_ynfrom user u left join user_coupon uc on uc.user_id = u.i and uc.coupon_id = 3;위 쿼리의 실행계획으로type ALL 이 나왔는데요왜 u.id는 primary key인데 왜 index가 나오지 않고 ALL이 나오는 걸까요?left join 시 where 절에 조건이 없으면 드라이빙 테이블은 항상 ALL로 읽나요?혹시 u.name을 select절에 포함해서 ALL이 나오는걸까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
@nestjs/serve-static
안녕하세요 강사님, 'Static File Serving에서 옵션 추가하기' 강좌에서 @nestjs/serve-static 설치하는 과정에서 버전 문제 때문인지 의존성 충돌 문제가 일어나는 것 같습니다.혹시라도 다른 분들도 저와 같은 문제 겪으실까봐 글 작성합니다.-----------------------------------npm add @nestjs/serve-static 실행------------------------------------ 오류: npm add @nestjs/serve-static npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm error npm error While resolving: cf_sns@0.0.1 npm error Found: @nestjs/common@10.4.17 npm error node_modules/@nestjs/common npm error @nestjs/common@"^10.0.0" from the root project npm error npm error Could not resolve dependency-----------------------------------2. npm install @nestjs/serve-static@4.0.0 // 버전 맞춰서 설치------------------------------------ 브라우저 오류 발생: {"message":"Cannot GET /public/44f57f3f-7afa-4262-b2a3-13ee7053f920.jpg","error":"Not Found","statusCode":404}- npm run start: dev 오류 : no such file directory ~~\.index.html// 정확하지는 않지만 index.html 파일까지 찾아서 jpg 파일을 찾는 것 같아서 claude에게 물어봤더니...------------------------------------ 해결: @Module({ // 다른 모듈을 불러올 때 사용 imports: [ PostsModule, ServeStaticModule.forRoot({ rootPath: PUBLIC_FOLDER_PATH, serveRoot: '/public', serveStaticOptions: { index: false } }),이렇게 하니 해결 됐습니다... 이게 맞는건지 궁금합니다!! 일단 브라우저 요청했더니 jpg 사진은 잘 나옵니다!!코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
스케줄러
내가 시간이 없어 한 바퀴쭉 훑고 있는데 스케줄러를 활용한 배치 내용은 원래 없는 거냐?내가 못 찾는 거냐?아님 추가 예정이냐 답변 부탁한다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
dto 필드 기본값 이슈에 대해 질문드립니다.
안녕하세요!다음과 같이GET: http://localhost:3000/posts아무런 파라미터 값 없이 요청을 실행했을 때dto 객체의 기본 상태는 다음과 같고, 응답 결과로 아래와 같은 nextURL을 받을 수 있었습니다. "next": "http://localhost:3000/posts?page=undefined&order__createdAt=ASC&take=20&where__id__more_than=23"cursorPagination 이기 때문에 page를 사용하지 않지만 url에는 조립되는 이유가 로직에 값을 검증하는 부분이 없어서 그런 것 같은데요, 아래와 같이 값(dto[key])를 검증하는 것을 추가하니 문제 없이 동작하였습니다.if ( dto[key] // 값 검증 추가 && key !== 'where__id__more_than' && key !== 'where__id__less_than' ) { nextUrl.searchParams.append(key, dto[key]); }"next": "http://localhost:3000/posts?order__createdAt=ASC&take=20&where__id__more_than=23"그런데 강사님께서는 따로 검증하지 않고 진행하셨음에도 nextUrl 쪽에 page가 따로 붙어나오진 않는 것 같은데요, 어떤 차이에서 발생한걸까요?.. ㅠㅠ
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
직접 생성해서 사용하는 pipe class에 대한 질문입니다.
안녕하세요! DefaultValuePipe와 이번 강의에 나온 인자를 받는 Custom Pipe Class는 반드시 인자를 받아야 하는 구조이기 때문에 무조건 직접 생성해서 사용해야한다. 라고 이해하였는데 맞을까요? 또한, 강의에서 MaxLengthPipe와 MinLengthPipe 각각 @Injectable() 데코레이터를 붙여서 작성하셨는데, 직접 생성해서 사용하는거라면 굳이 필요없지 않을까 생각하여서 빼고 테스트 해보니 문제없이 잘 동작하는 것 같습니다. 특별히 붙여야만 하는 이유가 있는걸까요?!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Postman 다운로드
지금 강의를 순서대로 듣고 있는데 20강에 들어가보니 postman이라는 걸 사용하더라구요근데 20강 초입에 보면 이전에 다운을 했다고 하는데 혹시 몇 강에 있는지 알려주실 수 있으실까요..?그냥 제가 해보려고 다운을 해보니 계속 문제가 생기더라구요
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
row update 후 find의 기본 정렬에 대해 궁금합니다.
안녕하세요. 수업 열심히 잘 듣고 있습니다 (__) 다름이 아니라, postman 실습 할 때마다 느끼는게, 특정 id 값에 해당하는 값을 update 하였을 때, 별도의 정렬 조건 없이 find 하여 나오는 get 요청의 결과값 리스트에 항상 update 된 row이 최하단으로 정렬되어 나오는 걸 볼 수 있었습니다. 그래서 개인적으로 추측해보기에 updateColumn()으로 지정된 updatedAt이 row가 업데이트 될 때마다 같이 갱신되므로, find에 아무런 정렬 조건을 기재하지 않았을 때, updatedAt 기준으로 알아서 맞춰서 정렬을 해주나보다 싶었는데, updatedAt 컬럼을 삭제하고 데이터베이스 초기화 후 다시 해봐도 똑같이 update 된 row가 마지막에 나오네요. 실제로 실무에서는 order를 거의 기재를 하면서 진행 하기에 문제는 없겠지만, 이렇게 동작하는 이유에 대해 궁금합니다. 감사합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Docker Compose 파일 작성해보기 강의 관련 질문입니다~
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 도커 강의 해주시면서,"컨테이너"란, Dockerfile를 가지고서 생성하는 하나하나의 프로그램들을 컨테이너라고 설명해주셨는데, 그렇다면 도커의 이미지는 어떤 개념이라고 정의할 수 있을까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
onDelete의 set default 옵션에 대해서 질문드립니다.
강의 내용에서 "set default는 테이블에서 no action, cascade, set null, restrict 중 기본으로 설정된 값을 따른다"라고 설명해주셨습니다.하지만 제가 알고 있는 바로는 "부모 테이블의 row가 삭제될 때, 이를 참조하는 자식 테이블 row의 외래키는 부모 테이블에서 기본값으로 지정된 외래키를 가진다"라고 알고 있습니다.혹시 typeorm이 실제로 구현하고 있는 내용은 제가 알고 있는 내용과 다른 것일까요...?ㅠㅠ
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
pydantic model 기본
강의내용 5분 34초에서 "item-tags" : [1] 을 입력하니깐 Error 422 타입 에러가 생겼는데 이유가 무엇인지 궁금합니다.제 생각에는 List[str]이므로 List 안에 문자형이 와야 올바르지 않을까 라는 생각을 했습니다.그리고 1을 입력한 이유도 궁금합니다. 혹시 최신 버전의 Pydantic의 타입 검증이 더 엄격해진 이유일까요??
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
localhost:3000
localhost:3000 하는데 Home Page 가 안뜨고 Hello world 가 뜨는 이유가 뭔가요 ? 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
create_chat에서 빈 객체 보낼 때 ValidationPipe 예외 안 던지는 현상이 있습니다.
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 중 WebSocket에서 create_chat 이벤트에 빈 객체 {}를 보냈을 때, ValidationPipe가 예외를 잘 던져서 클라이언트(Postman)에서 exception 이벤트가 잘 발생하는 걸 확인했습니다.그런데 제가 강의 코드와 동일하게 다음과 같이 작성했는데요그런데 제가 Postman에서 {}만 보냈을 때는 ValidationPipe가 예외를 던지지 않고,exception 이벤트도 발생하지 않아서 디버깅에 꽤 시간이 걸렸습니다.CreateChatDto에 @IsDefined()를 추가하니까 그제서야 예외가 발생해서 Postman에서 exception이 감지됐습니다. 왜 강의에선 @IsDefined() 없이도 {}만 보내면 예외가 잘 발생하던데, 현재는 왜 @IsDefined()를 추가해야만 예외가 던져지는 걸까요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Node 설치했는데 NPM 버전 확인 안될때
PS C:\Users\devee> node -vv22.15.0PS C:\Users\devee> npm -vnpm : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files\nodejs\npm.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.위치 줄:1 문자:1+ npm -v+ ~~~ + CategoryInfo : 보안 오류: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess 라는 오류를 발견했을 때, PS C:\Users\devee> Get-ExecutionPolicyRestrictedPS C:\Users\devee> Set-ExecutionPolicy RemoteSignedPS C:\Users\devee> Get-ExecutionPolicyRemoteSignedPS C:\Users\devee> npm -v10.9.2 실행 정책 변경하자
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
Windows에서 수강하는 분들을 위한 노트
Windows를 사용하면서 fastAPI 서버를 WSL(Windows Subsystem for Linux)에서 구동하고, MySql 서버를 Windows상에서 구동하는 경우에는 fastAPI를 통해서 MySql에 접속할 때 오류가 발생하는 경우가 있을 수 있습니다.이는 fastAPI가 설치된 WSL와 MySql이 설치된 Windows가 별도의 머신으로 구성되어 서로의 localhost가 다르기 때문에 발생하는 문제입니다. 따라서 fastAPI에서 접속할 때 localhost가 아닌 Windows의 ip를 사용하여 접속(cmd창에서 ipconfig를 통해 확인)하셔야 합니다.올바른 ip를 입력하시더라도 접속이 거부될 수 있는데, 이는 MySql에 접속하는 계정명이 "root"가 아니라 "root@localhost"이기 때문일 수 있습니다. 이를 해결하기 위해서는 아래의 sql문으로 새로운 유저 ID와 패스워드를 지정한 다음 이를 통해 접속하시면 됩니다. CREATE USER 'fastapi'@'%' IDENTIFIED BY 'your_password';GRANT ALL PRIVILEGES ON . TO 'fastapi'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
해결됨절대강좌! 유니티6 - UGS를 활용한 백엔드 시스템 구축
[강의 요청] 간단한 2D RPG + UGS 활용 강의를 요청드려도 괜찮을까요?
목표가 '카피바라 Go' 정도의 2D RPG 게임을 만드는 건데, 혹시 괜찮으시다면 UGS를 활용한 2D RPG 게임 강의를 부탁드려도 될까요?유니티 관련 강의를 여러 개 들어봤지만 대부분 아쉬움이 컸던 반면, 강사님의 강의 스타일과 내용이 매우 만족스러워 이렇게 요청드리게 되었습니다.강의 내용으로 전투 시스템, 인벤토리 시스템, 퀘스트 시스템과 함께 UGS를 활용한 능력치 테이블 로드, 유저 데이터 저장, CCD 패치 시스템 등 실제 게임 개발에 적용할 수 있는 내용들을 포함해 주시면 큰 도움이 될 것 같습니다.꼭 UGS가 아니더라도 다른 서버를 활용하는 방식도 괜찮습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
tap() 안에서 async/await 쓸 때 트랜잭션 커밋이 제대로 안 되는 이유가 궁금합니다.
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. QueryRunner 커스텀 데코레이터 만들기 듣고 있는데 강의대로 return next.handle().pipe( catchError(async (e) => { await qr.rollbackTransaction(); await qr.release(); throw new InternalServerErrorException(e.message); }), tap(async () => { await qr.commitTransaction(); await qr.release(); }), );이렇게 코드를 짜면 포스트맨에서 응답으로 { "message": "QueryRunner Decorator를 사용할려면 TransactionInterceptor를 적용해야 합니다.", "error": "Internal Server Error", "statusCode": 500}이렇게 나옵니다. 그래서 tap 대신에 mergeMap(async (value) => { await qr.commitTransaction(); await qr.release(); return value; }), merge맵을 사용하면 문제가 해결되는데 강의에서는 tap을 써도 트랜잭션 커밋이 잘 되는 것처럼 보였는데, 설명 부탁드립니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
ConfigService.get<string>() 반환값이 string | undefined로 처리되어 TS 오류가 발생합니다
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 환경변수 적용하기 -1 듣고 있는데async registerWithEmail(user: RegisterUserDto) { const hash = await bcrypt.hash( user.password, parseInt(this.configService.get<string>(ENV_HASH_ROUNDS_KEY)), ); const newUser = await this.usersService.createUser({ ...user, password: hash, }); return this.loginUser(newUser); }this.configService.get<string>(ENV_HASH_ROUNDS_KEY 에서 string| undefined 형식의 인수는 string 형식의 매개 변수에 할당될 수 없습니다라는 에러가 뜹니다.강의에서는 위 코드에서 타입 에러가 발생하지 않던데, NestJS 버전 차이로 인해 타입 정의가 바뀐 걸까요? 해결방법이 궁금합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
jwtService.verify() 사용 시 ESLint 관련 경고가 발생합니다
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 rotateToken(token: string, isRefreshToken: boolean) { const decoded = this.jwtService.verify(token, { secret: JWT_SECRET, });여기를 비롯해서 다양한곳에서 Unsafe assignment of an any value라는 오류가 뜨는데 강사님 영상에서는 따로 이런 에러가 발생하지 않더라고요. 혹시 강의에서 ESLint 설정을 약하게 해두신 건가요? 아니면 verify 결과에 타입을 명시해줘야 하는 건가요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
decodeBasicToken() 사용 시 'void 타입 에러' 발생 원인 질문드립니다
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 알려주신 decodeBasicToken() 함수를 그대로 구현했는데요,다음과 같이 리턴을 명확히 하고 있음에도 불구하고,decodeBasicToken(base64String: string){ // 그냥 공식으로 외우면 됨 const decoded = Buffer.from(base64String, 'base64').toString('utf8'); const split = decoded.split(':'); if (split.length !== 2) { throw new UnauthorizedException('잘못된 유형의 토큰입니다.'); } const email = split[0]; const password = split[1]; return { // email: email, // password: password, email, password, }; }에서 이 함수를 사용하면 TypeScript가 다음과 같은 에러를 표시합니다:Argument of type 'void' is not assignable to parameter of type ...혹시 이 부분은 TypeScript의 일시적인 추론 문제일까요?리턴 타입을 명시하니까 에러가 사라지긴 했는데,강의에서는 따로 리턴 타입 없이도 문제없이 작동하던 것 같아서요!혹시 제가 놓친 부분이 있는지,아니면 단순히 타입스크립트 인텔리센스의 문제인지 궁금합니다 감사합니다!