Programming/NodeJs
-
(mac)NVM 설치 및 Node 버전 관리하기.Programming/NodeJs 2023. 2. 19. 23:23
nvm은 Node.js의 다양한 버전을 관리하고 전환할 수 있도록 해주는 유용한 도구로써 nvm을 설치하는 방법은 다음과 같다. 1.Homebrew 설치하기 (만약 Homebrew가 이미 설치되어 있다면 이 단계를 건너뛰세요) 터미널을 열고 다음 명령어를 입력합니다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2.nvm 설치하기 터미널을 열고 다음 명령어를 입력합니다. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 3.nvm 적용하기 터미널에서 다음 명령어를 입력하여 nvm을 사용할..
-
Node.js와 이벤트루프Programming/NodeJs 2022. 4. 4. 09:49
•노드js는 C++로 작성된 자바스크립트 런타임(언어가 구동될 수 있는 환경)이며 내부에 V8 엔진과 libuv를 가지고 있다. 그래서 브라우저가 아닌 로컬에서 자바스크립트를 실행 가능/자바스크립트 런타임은 노드가 있다. *구성 Node.js -------------------------------------------- Node.js core Library | Node.js Bindings -------------------------------------------- V8 Engine | libuv •싱글 스레드 논 블로킹 = 하나의 스레드로 동작하지만 I/O 발생시 비동기로 처리 가능 / 이는 이벤트 루프의 덕분으로 싱글 스레드로 여러 비동기 작업을 논블로킹으로 수행 할 수있다. •libuv는 C+..
-
Node Stream Read,Writable (대용량 파일 읽기-2-)Programming/NodeJs 2022. 3. 13. 10:30
지난 시간에 이어서 작성하는 글이다. Node에는 그냥 Stream 뿐만아니라 Readable, Writable Stream이라고하는 Node Ver0.10 부터 도입된 새로운 스트림 인터페이스가 존재한다. 해당 함수는 기존 data에 기반한 스트림이 가지는 읽을 타이밍과 한번에 얼마나 읽어들일 것인지에 대한 제어가 불가했다는 점을 개선한 기능이다. Readable 스트림은 대표적으로 데이터를 읽어들이기 위한 함수를 제공하는데, read(size) 함수라고 한다. 매개변수에서 추측 가능하듯 이는 읽어 들일 크기를 의미하며, 스트림에서 한번에 몇바이트를 읽을지 크기를 제공하는 함수이다. 이러한 편리한 함수들이 존재하는데 그 종류를 몇개만 나열해보자면, read([size]): 스트림에서 String, Bu..
-
Node Stream (대용량 파일 읽기)Programming/NodeJs 2022. 3. 3. 23:39
우연찮게 개발 직군 테크 인터뷰 도중 받은 질문에 대해 궁금증이 생겨서 찾아보게 되었다. 그동안 용량이 고만고만한 작은 파일들은 읽고 쓰기를 많이 해보았지만 아주 대용량인 파일을 어떻게 처리하겠느냐에 대한 질문을 막상 받자 드는 생각은 파일을 쪼개야하지 않을까 였는데, 구글링 해보니 5분만에 어찌해야하는지 알 수 있었기 때문에 블로그에도 정리를 해본다. 우선 기존의 Nodejs를 활용한 파일 읽어오기 방식은 파일 시스템을 이용하여 const fs = require('fs'); fs.readFile('example'(data,err) => {}); 대략 이런식으로 파일 자체를 읽어 오는 방식이였다면, 새로이 알게된 것은 바로 Stream 함수이다. 이를 활용한다면 바로 const fs = require('..
-
(mac)node 버전 관리하기.Programming/NodeJs 2022. 2. 11. 23:22
너무 시대를 앞서간 것일까 개발을 진행하는데 관련 패키지가 사용 중인 노드 버전에서 지원하지 않는다 하여 다운그레이드를 진행하게 되었다. 터미널을 오픈하여 node -v를 통하여 현재 노드 버전을 확인하고 brew search node를 통하여 현재 사용 가능한 노드 버전을 확인한다. 사용 중이던 노드의 버전을 brew unlink node를 통하여 해제하고 새로 사용할 노드를 brew install node@(희망 vesion 입력)하여 설치한다. 이후 brew link node@(희망 version 입력)하여 연결 하면 끝난다. could not symlink 어쩌고 하는 에러가 발생한다면 sudo chmod 776 /usr/local/lib를 입력한 다음 brew link --overwrite no..
-
Winston.js를 이용한 Logging System 구축Programming/NodeJs 2022. 2. 10. 12:18
winston.js(https://github.com/winstonjs/winston)와 winston-daily-rotate-file(https://github.com/winstonjs/winston-daily-rotate-file)를 사용하여 Express.js에서 Logging System을 구축하였다. 내가 원하는 부분에서 에러가 발생 시 원하는 내용을 커스텀하여 따로 Log FIle로 남길 수 있는 점이 좋은 것 같고, winston-daily-rotate-file을 이용하여서 원하는 날짜 형식과 로그 파일의 최대 사이즈 및 최대 보관 일수를 정할 수 있는 점이 매력이다