0. 개발환경 nest : 10.2.1 class-validator: 0.14.0 * 참고 : class-validator - npm (npmjs.com) 1. 문제의 발생 // user.entity.ts @Entity('user') export class User extends CoreEntity { ... @ApiProperty({ example: '홍길동' }) @Column({ type: 'varchar', nullable: true }) @Length(2, 10) @IsString() public username?: string; ... } class-validator 라이브러리를 사용해서 'username' 필드의 Length를 제한하고, 예외의 경우를 넣어서 출력되는 메시지를 확인해보았습니다..
분류 전체보기

서론 오늘은 NestJS에서 파일을 업로드 받고, AWS S3에까지 저장하는 REST API를 공유해보려합니다. aws-sdk v2로 된 한국어 자료들은 많이 있는데, version3을 사용해서 만들어봤습니다. 일단 필자도 처음에는 aws-sdk v2를 사용해서, 파일 업로드 기능을 만들었습니다. 그런데, 서버를 run 할 때 version3으로 migrate해달라는 굉장히 거슬리는 문구가 뜨는 걸 볼 수 있었습니다. (node:2109) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023. Please migrate your code to use AWS SDK for Jav..

서론 프로세스간 데이터 전달을 위해서 DTO(Data Transfer Object) 사용한다. NestJS에서도 MVC layer간의 데이터 전달이나 request 요청을 받을 때도 DTO를 사용할 수 있다. 이때 한 Domain에 대해서, 여러 layer별로 dto는 조금씩 사용되는데, 모든 dto를 각각의 객체로 관리하는 건 어려운 일이다. 한 예시로 Register DTO와 Login DTO를 생각해보자. // register.dto.ts export class RegisterDto { email!: string; password!: string; username!: string; } // login.dto.ts export class LoginDto { email!: string; password..

왜 winston을 고르게 되었는가? NestJS에서 logging을 구현하는 방법에는 여러가지가 있다. 기본적으로 @nestjs/common에 내장된 logger가 있긴하지만, package에는 편리한 기능들이 구현되어 있다. pino, morgan 등 JS 진영에서 쓸 수 있는 여러 package들이 있는데, 본인은 templete을 만들기 위해 가장 대중적인 패키지를 찾고 싶었고, 'popular node js logging'로 구글링을 해본 결과 아래와 같은 자료를 찾을 수 있었다. 2023년 10월 기준으로 Winston이 많은 download를 기록하고 있었고, typescript를 지원하였기에 많은 레퍼런스를 기대하며 고르게 되었다. 구현 방식 Logger 불러오기 Logger를 불러오는 방..

문제 상황 AWS RDS를 사용하다가 프리티어 기간이 만료되어서 새로운 계정으로 DB를 옮겨야할 일이 생겼다. 문제는 현재 개발 환경상 사지방 PC 자체에서 각종 포트들이 막혀있어서, mysql workbench와 같은 상용프로그램을 사용할 수 없는 상태이다. 그래서 외부 리눅스 서버에 웹콘솔로 접속을해서 해당 DB의 Mysql Dump를 뜨고, 옮겨서 load를 해야하는 상황이다. 해결 방법 1. AWS EC2를 생성 및 mysql-client 설치 sudo apt update sudo apt install mysql-client 2. mysqldump 명령어로 덤프 파일 만들기 mysqldump -u -p -h > 위와 같은 형태로 덤프 파일을 추출할 수 있다. 아래는 예시이다. mysqldump -..

AWS Elastic Beanstalk(이하 EB)에는 서비스를 관리하기 위한 역할(Role)을 최초 애플리케이션 생성시 만들게 된다.Web Console로 EB를 생성하면 아래와 같은 화면을 볼 수 있다. 이때 '새 서비스 역할 생성 및 사용'을 선택하게 되면 자동으로 EB에 액세스하고 관리하는데 필요한 역할이 부여된 IAM을 생성하게 된다. 그렇다면 테라폼을 사용해서 EB를 생성할 때 iam을 어떻게 설정해줄 수 있을까. 문제 상황IAM설정을 해주지 않고 terraform apply를 하면, 권한이 없어 EB가 생성되다말고 롤백을 하게 되는 모습을 볼 수 있다. 아래 사진과 같이 상태가 'Unknown'으로 바뀌고 health check를 못하는 상태가 된다. 이벤트 부분을 보면 health che..

0. 개발환경 @nestjs/typeorm : 10.0.0 nest : 10.1.18 mysql 8.0.xx typescript : 5.1.x 1. 문제의 발생 @Entity('user') export class UserEntity extends CoreEntity { ... @Column({ type: 'enum', enum: Role, array: true, default: [Role.User], }) @IsString() public roles!: Role[]; ... } user.entity를 설계하는 과정에서 Role을 Enum array로 관리하고자 하였고, 코드상으로는 syntax적 문제가 없었다. 그런데 막상 npm run start:dev를 실행하여 mysql 서버상에 table 생성을 ..

오늘은 SQLD 합격 기념으로 어떻게 공부했는지 공부 방법과 꿀팁을 공유해보려고 합니다! 공부기간 공부는 총 일주일 내외로 하루에 3, 4시간 정도 공부한 것 같습니다.(풀 집중한 시간은 2시간?) 필자는 DB 전공수업을 듣지는 않았지만, 프로젝트를 하면서 SQL을 접해본 경험은 있었다는 점을 고려해서, 생전 처음 SQL을 공부하시는분은 2, 3주 정도를 잡으면 넉넉하게 합격하실 수 있을 것 같습니다. 공부방법 필자도 공부하기 전에 여러 블로그를 해보고 직접 몸소 검증해봤기 때문에 아래 ★순서대로★ 4가지 방법으로 공부하시면 충분히 합격하실 수 있을거에요~! 1. ★ ★ 구글링해서 SQLD 요약본으로 이론공부하기(2일 컷) 사실 SQLD를 위한 이론서를 하나 살까도 고민해봤지만, 뒤에 소개할 '노랭이책'..

백준 2493번 탑 문제 풀이입니다. 2493번: 탑 (acmicpc.net) 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 2009 정올 초등부, 고등부 문제입니다. 직전에 포스팅했던 '옥상 정원 꾸미기'와 유사점이 많은 문제입니다. 문제 요약 및 분석 오른쪽에서 왼쪽으로 레이저를 발사하는데 탑의 기둥부분(벽면)에 맞으면 수신이 되는 방식입니다. 높이가 다른 각 탑에서 발사한 레이저 신호를 어느 탑에서 수신하는지가 문제입니다. 이때 N = 5 x 10^5 으로 O(n)이나 O(NlogN) 안에는 들어와야..

백준 6198번 옥상 정원 꾸미기 문제 풀이입니다. 6198번: 옥상 정원 꾸미기 (acmicpc.net) 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 2006 USACO Silver 문제입니다. 개인적으로 문제 푸는데 이걸 스택으로 푼다는 걸 떠올리는데 오래걸렸던 것 같습니다. 문제 요약 및 분석 왼쪽에서 오른쪽으로 각 빌딩에 대해서 크거나 같지 않은 빌딩의 개수를 구하는 문제가 되겠습니다. 일단 입력을 보았을 때 N = 8 x 10^4 입니다. N^2으로 풀면 시간 초과가 날 것 같고 N이나 N..