개발(58)
-
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 -
Lerna, Yarn workspace를 사용해보자.
개요 기존에 있었던 repo를 확장할 일이 생겼다. 이에 따라 자료 조사를 하던 중 Lerna를 알게 되었고, 이를 활용하여 구축 및 활용해보자. Lerna란? Lerna 공식 github를 보면 multiple project를 관리하기 위한 tool이라고 설명되어 있다. multiple packages를 하나의 repo에서 관리하기 위한 기능들을 제공한다. hoist를 통해서 공통으로 사용하는 패키지들을 한데 모아서 관리할 수 있게 도와준다. (이 부분은 추후에 설명하겠지만 yarn의 workspace를 활용하려고 한다.) Basic commands 1. bootstrap 현재 repo에 있는 모든 package들을 bootstraping한다. dependency와 link를 모두 install한다. ..
2021.04.11 -
RxJS - 공부 환경 셋업
개요 미뤄왔던 Reactive stream 관련을 공부해두려고 한다. 현재 node 기반으로 진행 중이니, RXJS를 통해서 한 번 익혀보도록 하자. 무작정 읽기만 하다간 진도가 안나갈 것 같아서 operator별로 살펴보고, 실습을 먼저 해보는 형태로 진행하려고 한다. 환경 우선 내가 설정한 개발 환경은 다음과 같다. Dependencies // package.json 일부 "dependencies": { "rxjs": "6.6.3" }, "devDependencies": { "@types/jest": "26.0.20", "@types/node": "14.14.31", "jest": "26.6.3", "ts-jest": "26.5.2", "ts-node": "9.1.1", "typescript": "4..
2021.03.01 -
로컬 환경에서 sandbox hadoop cluster를 docker로 띄워보자
개요 hadoop cluster를 로컬에 설치해서 테스트해보기에는 제약사항들이 많다. 그래도 맛보기 정도로 기능을 테스트해보고 싶을 때에는 sandbox hadoop cluster를 활용해서 테스트할 수 있다. 요구사항 docker 12GB 메모리 설치 방법 Install guide를 참조해보면 docker쪽 memory 설정을 12GB 이상으로 조절해준다. ( 기본적으로 사양이 매우 높다. ) Download 에서 hdp 를 다운로드 받는다. 압축을 풀어보면 docker-delpy-{VERSION}.sh 파일이 있을 것이다. 해당 스크립트를 실행해주자. 아래와 같이 hosts 설정을 해준다.echo '127.0.0.1 sandbox-hdp.hortonworks.com sandbox-hdf.hor..
2021.03.01 -
Nest.js - query param validation이 잘 안될 때
개요 nest.js에서 query param을 class로 넘길 때, validation을 체크하면 잘 안 이루어진다. 해당 부분에 대해서 해결할 수 있는 방법을 알아보도록 하자. 예제 아래와 같은 API를 작성했다고 가정하자. class Test { @IsOptional() @IsNumber() a? : number; @IsNumber() b!: number; } @Controller('/todos') export class TodosController { @Get('/') test(@Query() custom: Test): string { return "hello world!"; } } 그리고 다음과 같이 curl을 보내보자 curl --location --request ..
2021.02.20 -
Nest.js 탐험기 - logging을 winston과 함께 사용해보자.
개요 이번 시간에는 logging을 적용해보려고 한다. winston을 사용해보려고 한다. Setup 우선 logging을 적용하기 위해 다음과 같이 설치해준다. yarn add winston winston-daily-rotate-file; winston Node 진영의 대표적인 로깅 라이브러리이다. 다양한 transport layer를 사용할 수 있고, 또한 custom하게 implementation이 가능하다. winston-daily-rotate-file의 경우에는 logrotate를 설정하기 위해서 사용했다. 코드를 작성해보자! 1. configuration 등록 우선적으로 winston을 먼저 셋팅해두자. import * as winston from 'winston'; import..
2021.02.12