본문 바로가기

개발 이야기/NodeJS10

Nodejs 파일 읽어 Promise 다루는 방법 어느날 로그파일을 읽어 json으로 가져와야 하는 과제(?)가 주어졌습니다. 또한 로그 파일이 생각보다 큰 경우도 존재합니다. fs모듈의 readFile과 같은건 파일 전체를 메모리에 올려버리기 때문에 메모리 사용량이 엄청 늘어납니다.(대용량 비추) 음.. Nodejs의 fs와 event-stream이라는 stream을 쉽게 사용할수 있도록 도와주는 라이브러리를 이용해서 특정 파일을 읽어서, 객체화하는 방법을 정리합니다. 순서는 아래와 같습니다. 파일 스트립으로 읽기 chunk 단위로 수행하고자하는 작업 수행 stream을 promise로 변경 async await로 promise를 제어 01. 파일 스트림으로 읽기 const fs = require('fs'); const es = require('eve.. 2019. 11. 28.
초간단 Express + Mysql 환경 셋팅 Nodejs로 Mysql 연동 방법을 알아봅니다. Express 프레임워크를 사용해서 간단한 API 서버를 만들려고합니다. mysql이라는 라이브러리를 설치해 사용하면 됩니다. 01. mysql 라이브러리 설치 npm install --save mysql 02. config.js 파일 작성 ./config.js const config = { host : '***************.rds.amazonaws.com', user : 'username', password : 'password', port : 3306, database : 'dbname', connectionLimit : 10 }; module.exports = config; 위와 같이 config정보를 따로 파일로 관리하였습니다. (미리 구.. 2019. 5. 14.
NodeJS 콜백을 사용한 비동기 제어 흐름 패턴 참고문헌 : NodeJS Design Pattern Second Edition 동기식 프로그래밍 스타일을 사용하다가 Node.js와 같은 비동기 api일반적으로 사용되는 플랫폼에 적응하는 것은 쉽지 않다.일반적인 실수 하나가 call back hell이다. 간단한 동작도 가독성이 떨어지게 하고, 관리하기 힘들게 한다. 아래와 같은 방법을 통해 비동기 코드를 얼마나 쉽고 간단하게 만드는지 알아본다. - 규칙과 패턴을 적용- Async같은 제어흐름라이브러리를 활용 01. 비동기 프로그래밍의 어려움불행히도 모듈화, 재사용성, 유지보수성과 같은 특성을 희생시키면 금방 콜백이 중첩되고 코드가 엉망이된다. 01-1. 간단한 웹 스파이더./index.js12345678910111213141516171819202122.. 2019. 3. 9.
NodeJS 동작 방식과 개념 정리 01. NodeJS 란?NodeJS란 싱글 스레드 기반으로 동작하는 고성능 비동기 네트워크 서버이다.기반언어는 자바스크립트이다. NodeJS가 자바스크립트로 만들어졌다는게 아니라, 자바스크립트로 프로그램을 작성한다는 의미이다. NodeJS는 C++로 만들어졌으며, 비교하자면 JVM과 같은 런타임이다.(JVM의 특징과는 많은 차이가 있다.) 02. 웹브라우저 엔진(V8)과 NodeJS자바스크립트는 웹브라우저에서 동작하는 언어이다. NodeJS는 웹브라우저에서 사용하는 자바스크립트 엔진을 따로 구성시켜 자바스크립트로 프로그램을 돌린다는 것이다.NodeJS의 엔진구조를 검색해보면 다양한 이미지들이 나온다. 03. 싱글스레드와 비동기JVM에서 구동하는 애플리케이션은 스레드나 프로세스를 만들어 동작하는 방식이다... 2019. 3. 2.
NodeJS 인기있는 Logging 모듈 Winston Nodejs로 Express 서버를 만드는데 Debugging 용도로 console.log를 사용했었다. 그냥 이게 편하고 익숙해서...ㅎ 하지만 Project를 실제 수행하다보면 서버의 동작을 파악하거나 오류를 찾아야 할때 로그파일을 뒤져보는 것이 가장 1순위일 것이다. Nodejs로 Log를 남기고 관리하는 모듈은 많이 있다. morgan, winston 등등... 두가지를 함께 사용하는 것도 가능하다. 하지만 여기서는 가장 인기 있는 winston 라이브러리를 사용하는 방법을 간단하게 소개한다. 01. npm으로 설치하기아래 명령어로 설치 가능하다. 1npm install --save winstoncs 02. winston.js 작성로그를 관리하는 모듈을 따로 패키지 형태로 작성하려한다.우선 아래와.. 2019. 2. 20.
NodeJS validate로 요청 데이터 검사 웹서버를 만드는데 요청 데이터 검사를 간편히 해주는 모듈이 있다. 바로 validate다. https://www.npmjs.com/package/validate validate 이외에도 validator, express-validator 등 요청 스키마 검증 모듈을 많이 있는듯 하다.(validator는 가장 많은 다운로드수를 기록하고 있었지만, 단순히 json형태의 data만 다룬다고 생각하고, json 스키마를 간단히 검사할 수 있는 걸 찾다보니 validate를 택하게 됬다... 과연 베스트 일지는 잘..) (아래 방법은 node 프로젝트가 이미 존재 한다.) 01. vaildate 모듈 설치아래 명령어로 설치 가능하다.1npm install validate --savecs 02. 코드 작성예를 들.. 2019. 2. 11.
NodeJS Express 간단한 서버 만들기 이전 포스트에서도 Express를 사용해본적이 있지만... 정리 할겸 다시 한번 01. Express란?Node로 http 서버를 개발 할려고 하면 Express 모듈을 사용하면 간편히 할 수 있다.완전 생짜에서 시작할려면 뭐 이것저것, url path mapping, 세션관리 등 할꺼 많고 복잡하게 구현해야할 것을 Express는 간편히 구축 할수 있도록 도와준다. 특징은 아래와 같다.견고한 라우터고성능높은 테스트 커버리지redirect, caching 다수의 템플릿 엔진 지원컨텐츠 네고시에이션(?)신속한 앱 개발 간단하게 npm으로 설치 후, nba 선수 프로필을 제공 하는 기능을 만들어 보자.(nba라는 npm 패키지 사용) 02. express 설치아래 명령어로 express 설치 가능하다. (제.. 2019. 2. 11.
우분투에 Nodejs설치 하기 윈도우에선 그냥 https://nodejs.org/en/ 에 접속해서다운받고 설치하면 알아서 잘 설치된다. 리눅스에서는 위의 다운로드 상세 페이지에서 해당하는 바이너리를 일단 다운 받아야한다.(터미널 열어서 다운받는 방법도 있지만 인터넷이 안되는 환경에서는 어차피 바이너리 파일을 옮겨야하기 때문에 나는 이렇게 설치를 진행했다...) 위와같이 node-v8.11.3-linux-x64.tar.xz 파일이 다운로드 됬다. 다운받은 파일을 /usr/local/lib 폴더로 옮겼다.(파이썬은 리눅스Ubuntu16.04설치 할때 자동으로 설치된거다) 그후 아래의 명령어로 압축을 풀어주자xz -d node-v8.11.3-linux-x64.tar.xztar xvf node-v8.11.3-linux-x64.tar nod.. 2018. 7. 28.
NodeJS MongoDB 연동하기 (NodeJS, Yarn, MongoDB 설치됨) 먼저 프로젝트를 생성.(React프로젝트 할꺼기 때문에 create-react-app으로 생성해봄) 원하는 디렉토리가서 cmd창 열고, 아래와 같이 명령어 치면 된다.C:\mynode>create-react-app simpleboard 프로젝트 명은 대문자 입력이 안됨.. 이러면 기본적인 react project 폴더와 module들이 생성된다. 기본적으로 위와 같은 구조로 프로젝트가 생성된다. 파란색 표기 부분처럼 server(express + mongodb)를 따로 폴더를 둬서 관리. 먼저, /server/main.js를 아래와 같이 만든다. 123456789101112131415161718192021222324252627282930var expres.. 2018. 6. 30.
NodeJS 시작하기 Node의 특징구글의 V8 자바스크립트 인터프리터(C++로 작성됨)를 기반으로 한다.비동기 I/O(특별한 동기화 메서드도 있긴하다)파일, 네트워크 소켓 등의 저수준 유닉스 API, Http에 대한 바인딩한다.API가 비동기적이기 때문에 이벤트핸들러로 API를 처리한다. 위의 내용 외에 많은 특징들이 있지만, 워낙 방대하기에 http://nodejs.org 들어가보는걸 추천 Node설치먼저 설치 파일을 다운받아야 한다. https://nodejs.org/en/ 여기 들어가면 위와 같은 화면이 나오고 설치 파일을 다운 받을 수 있다. 현재 10.버젼 까지 나왔나보다..꾸준히 개발되고 있구만... Node로 간단한 HTTP 서버 만들어보기원하는 디렉토리에서 server.js파일을 만들고 아래와 같이 코딩하였다.. 2018. 6. 23.