NodeJS
-
VSCode에서 Jest Debug 설정NodeJS 2023. 5. 31. 13:58
VSCode에서 Jest Debug 설정 테스트 케이스를 실행 중 에러가 발생했습니다. 이를 해결하기 위해서는 console.log 만으론 부족하여서, jest + debug 처리를 해보았습니다. 시작하기 vscode에서 왼쪽에 run to debug 버튼을 클릭하여, Run and Debug 버튼을 클릭하여 .vscode 디렉토리 와 launch.json 파일을 생성합니다. launch.json 파일은 아래와 같은 설정을 가집니다 . { "version": "1.0.0", "configurations": [ { "type": "node", "request": "launch", "name": "Jest: current file", "program": "${workspaceFolder}/node_modul..
-
nestjs-pino 로깅 처리NodeJS 2023. 5. 30. 13:58
nestjs-pino 로깅 처리 상황 정리 위와 같은 WEB 환경에서 Some logging의 경우 Request(요청) 정보가 없기 때문에 동시 다발적인 이벤트의 로그들을 추적하기가 불가능 합니다. 이를 nestjs-pino 이용해서 각 로그별로 동일한 요청의 경우 연결 처리 할 수 있도록 작성합니다 nestjs-pino에서도 적혀 있지만, pino-http모듈을 nestjs에 녹인 프로젝트입니다. 필요 모듈 정보 nestjs-pino : nestjs와 연동 처리된 모듈 pino-http : pino 로그에 request, response 정보를 bind 처리한 모듈 file-stream-rotator : 파일 스트림을 기반으로 파일의 생명주기를 관리하는 모듈 pino-pretty : pino 로그의 ..
-
Node.js 메모리 옵션NodeJS 2023. 5. 29. 13:54
Node.js 메모리 옵션 테스트 케이스를 로컬에서 돌릴때는 문제 없었는데, 운영에서 실행하니 메모리 부족 오류가 발생했습니다. 오류 로그 [1516:0x56a6a70] 93701 ms: Scavenge 1952.6 (2079.2) -> 1939.9 (2079.2) MB, 5.0 / 0.3 ms (average mu = 0.309, current mu = 0.242) task [1516:0x56a6a70] 93740 ms: Scavenge 1953.1 (2079.2) -> 1940.6 (2079.2) MB, 5.0 / 0.2 ms (average mu = 0.309, current mu = 0.242) task [1516:0x56a6a70] 93799 ms: Scavenge 1956.1 (2079.2) ..
-
Nodejs 동작 훑어보기NodeJS 2023. 5. 27. 12:17
Single Thread??! nodejs는 Single Thread로 동작하지만, Asynchronous I/O(libuv) 를 지원합니다. What APIs use which async mechanism? Kernel Async TCP/UDP server and clients, pipes, dns.sresolveXXX Thread Pool fs.*, dns.lookup, pipes NIX Only UNIX domain sockets, TTY input, NIX signals Windows Only Child Process, TTY input, TCP servers How to work on libuv? libuv는 운영체제의 커널을 추상화해서 비동기 API를 지원 libuv의 비동기 API를 처리 방..
-
SLACK 봇 알림 처리NodeJS 2023. 5. 26. 11:17
SLACK 봇 알림 처리 생각보다 간단하게 curl을 통해서 app에 알림을 발송할 수 있는 API가 제공 되네요. 전체 코드 바로 가기 준비사항 Slack app (Incoming WebHooks) 설치 python3 설치 실행 환경 설정 _env 의 이름을 .env로 변경 후 API 주소와 채널정보를 입력합니다. # .env 파일 예시 SLACK_URL=https://hooks.slack.com/services/test/test/test SLACK_CHANNEL="#알림테스트" 모듈 설치 python3에서 사용하는 모듈을 설치 합니다. $ pip install -r requirements.txt 실행 $ python3 index.py weekday 실행하면, 안내된 메시지를 확인 할 수 있습니다. 아..
-
npm 모듈 tgz 형식으로 다운로드 받기NodeJS 2022. 12. 20. 17:48
npm 모듈 tgz 형식으로 다운로드 받기 특정 npm 모듈을 로컬에 받으려고 npmjs를 아무리 찾아보아도 못찾고, stackoverflow를 검색하니 명령어를 찾았습니다. 명령어 # 다운로드 url 확인 $ npm view [모듈명@버젼] dist.tarball # 직접 다운로드 $ npm pack [모듈명@버전] 예제 # 다운로드 url 확인 $ npm view react-mui-validation dist.tarball https://registry.npmjs.org/react-mui-validation/-/react-mui-validation-0.2.0.tgz # 직접 다운로드 $ npm pack react-mui-validation npm 명령어를 이용하면 url을 얻거나, 직접 다운 받을 수..
-
nestjs에서 특정 시간동안 게시글 / 댓글 / 대댓글 등록 제한 처리NodeJS 2022. 12. 12. 17:40
nestjs에서 특정 시간동안 게시글 / 댓글 / 대댓글 등록 제한 처리 24시간을 기준으로 게시글, 댓글, 대댓글에 대한 등록 제한처리 요청을 어떻게 처리해야 할지 고민을 했습니다. nestjs의 모듈 중에 Rate Limiting를 보게 되었습니다. 해당 모듈의 기능은 brunte-force 공격에서 보호하기 위한 기능이지만, 이를 수정하여 제가 원하는 동작을 하게 처리 하였습니다. 원하는 동작 필요한 라이브러리 설치 # throttler 설치 $ npm i --save @nestjs/throttler ioredis scalout으로 서버가 여러대일 경우에도 제한이 동일하게 하기 위해서 redis에 throttler정보를 적재하도록 하였습니다. throttler-storage-redis.service..
-
nestjs에서 config모듈을 이용한 설정 관리NodeJS 2022. 12. 9. 16:39
nestjs에서 config모듈을 이용한 설정 관리 nodejs에서는 dotenv 라는 모듈을 이용해서 설정 파일을 관리 하였습니다. nestjs는 config라는 모듈을 제공하고 있는데요. 간단하게 사용법을 알아봅니다. 설치 @nestjs/config 모듈은 내부적으로 dotenv 모듈을 사용하고 있습니다. $ npm i --save @nestjs/config 사용 사용법은 imports에 ConfigModule.forRoot()을 추가 하면 됩니다. // app.module.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ConfigModule.forR..