node(7)
-
[Nest.js] class validator 관련 tip
개요 class validator관련 tip들을 정리해보려고 한다. 기본 type checking에 대해서는 잘 활용할꺼라서 여러가지 변형에 대한 케이스들을 적어보려고 한다. 이외에도 class validator에서는 다양한 기능들을 제공하므로 문서를 참조해보자 1. ValidateIf 특수한 decorator라 별도로 추가했다. 해당 validation을 진행할지 여부를 별도로 조건을 설정 가능하다. 예를 들어서 아래와 같이 public한 feed에 대해서 반드시 tag입력이 필요할 경우 아래와 같이 설정할 수 있다. export class FeedRequest { @IsOptional() @IsBoolean() isPublic?: boolean; @ValidateIf((r) => r.isPublic ..
2023.02.14 -
[RXJS] from vs of 차이
개요 from 과 of의 차이를 알아보자. from 먼저 공식 문서를 보면 다음과 같다. Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object. array 또는 array-like object를 observable로 전환해준다. from([1,2,3]) .forEach(item => console.log(`case 1: ${item}`)); // case 1: 1, case 1: 2, case 1: 3 Promise또는 observable like object를 변환해준다. function promisify(item: T): Promise { re..
2022.06.27 -
Node.js - 필요없는 code 정리하는 법
개요 기능적 확장을 계속하다 보면 프로젝트에 사용하지 않는 모듈 또는 code들이 생겨난다. 이러한 파일들은 지속적으로 쌓이게 되면서 나중에는 어떤 코드들이 현재 쌓여있는지 알 수가 없게 된다. 이를 혁신적으로 도와주는 친구가 있는데, madge라는 친구가 있다. 흔히 madge의 경우에는 circular dependency를 찾기 위해서 많이 사용하고 있는데, 쓸데없는 코드를 찾는데도 도움을 줄 수 있다. 예제 // package.json { "scripts": { "check:orphans-check": "npx madge --orphans --extensions ts ./src" } } 사용법은 간단하다. 위와 같이 scripts에 등록해서 주기적으로 체크를 해주면 된다. 주의점은 실제로 사용하지 ..
2022.03.02 -
Clinic.js를 사용해보자
개요 Clinic.js는 runtime을 분석하여 application의 문제점을 쉽게 찾아낼 수 있게 해주는 module이다. 1. 기존 debugging 1.1. --inspect 또는 --inspect-brk 옵션 사용 1. application 실행 아래의 명령을 통해서 application을 실행해준다. (source map file이 있는 경우 해당 option을 넣어주면 이슈 확인에 편리하다.) node --inspect-brk --enable-source-maps main.js 2. chrome://inspect에 접근해서 inspect를 클릭한다. 3. CPU 또는 memory profile을 이용한다. ( 자세한 사용법은 공식 문서가 더 잘나와 있으므로 참고하는걸 추천한다. ) 2. C..
2021.05.01 -
Node.js event loop 정리해보기
개요 node의 event loop에 대해서는 개략적으로만 알고 있었는데, 이번 기회에 한 번 정리해보려고 한다. 구조 우선 해당 블로그에 내용이 잘 정리되어 있어 내용은 링크로 대체한다. https://sjh836.tistory.com/149?category=710138 Microtask queue, task queue 기본적으로 Node.js는 event queue를 통해서 task queue를 관리를 하고 있는데, 단일 event queue로 관리되는 것이 아니라 각각의 역할에 따라서 queue가 존재한다. 가장 크게는 microstask queue와 task queue로 나눌 수 있다. task queue는 기본적으로 application의 로직들의 처리를 담당하고 있고, microtask que..
2021.01.03 -
Nest.js 탐험 2 - API 작성해보기
1. 개요 이전 글 malgogi-developer.tistory.com/2에서는 Nest.js 개발 환경 설정 및 개략적인 구조를 살펴 보았다. 이번 글에서는 Nest.js를 통해서 실제로 API를 작성해보려고 한다. 로컬에 Mysql을 Docker로 셋업해서 진행해보도록 하자. 2. Docker 환경 셋업 및 Mysql 띄우기 Docker는 컨테이너 기반의 가상화 환경을 제공한다. Docker를 이용하게 될 경우 쉽게 개발환경 셋팅 또는 리얼 환경을 구축할 수 있게 도와준다. docs.docker.com/get-docker/ 아래의 사이트에서 로컬에 Docker를 설치해주도록 한다. 그리고 docker-compose도 설치해주도록 한다. docs.docker.com/compose/install/ do..
2020.12.13