일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 소켓
- 파헤쳐보자
- Stream
- 이벤트 루프
- node
- 스크럼
- nodejs
- socket.io
- RDF
- 지식 그래프
- node.js
- 노드js
- scrum
- 개발자
- 스레드
- java
- 스크럼 마스터
- C++
- ngrinder
- benchmark
- express
- 자바
- Django
- Python
- Groovy
- 예제
- 특징
- Knowledge Graph
- Router
- 노드
- Today
- Total
목록Node.js (18)
라봉이의 개발 블로그
Socket.io Socket.io란 WebSocket을 기반으로 클라이언트와 서버의 양방향 통신을 가능하게 해주는 모듈입니다. Socket.io를 사용하기 위해선 서버와 클라이언트 모두 Socket.io 라이브러리가 필요합니다. socket.io 문서를 보면 client에서 socket.io 라이브러리를 html script로 불러올 때 다음 코드를 작성하도록 하게 합니다. 문제는 Node.js 서버 개발 시에는 저런 파일을 정적(static)으로 제공한 적도, 저 파일을 만든 적도 없는데 사용할 수 있다는 것입니다. socket.io 서버 위에서 작성한 코드는 웹 클라이언트에서 상대 경로에 있는 socket.io.js 파일을 서버 측에 요청하는 코드입니다. 그렇다면 Node.js 서버에서는 stati..
Nestjs란 Nest.js는 nodejs에서 새로 떠오르는 프레임워크입니다. 공식 페이지를 가보면 Nestjs를 다음과 같이 소개하고 있습니다. Nestjs는 효율적이고, 안정적이며, 확장에 용이한 서버 어플리케이션을 구축하기 위한 진보된 nodejs 프레임워크입니다. 효율성 개인적으로 써보면서 nestjs가 효율적이라고 느꼈던 점은 규모가 있는 프로젝트에서의 생산성이라고 생각합니다. nestjs 문서의 Nestjs 프레임워크의 철학 구문을 보면 나타나 있습니다. nestjs는 typescript의 적극적인 도입, DI(Dependency Injection), IoC(Inversion of Control), Module을 통한 구조화 등의 기술을 통해 생산적인 개발이 용이합니다. 안정적 Nestjs는 ..
이전 포스트: node.js express 5. middleware란? 미들웨어 정의, 미들웨어 유형 저번 포스트에는 express의 미들웨어 개념을 알아봤습니다. (시간이 꽤 오래 지나버렸다..) 이번에는 express의 오류 처리 방법에 대해 알아보도록 하겠습니다. 이 포스트에 대한 내용은 express 공식 페이지에서 더 자세하게 알아볼 수 있습니다. express 오류처리 에러 핸들링 404 에러 처리 express는 미들웨어 중간에 오류가 발생하면 다음 에러 처리 미들웨어로 error 객체를 넘겨 error를 처리할 수 있도록 만들었습니다. 다음 코드는 app.js의 맨 밑에 있는 코드입니다. // 라우터 등록 app.use('/', indexRouter); app.use('/users', us..
서론 Node.js는 싱글 스레드 이벤트 루프를 사용한다고 알려져있습니다. 따라서 Node.js는 싱글 스레드(?)이다. 라고 잘못 아시는 분들도 종종 있구요. 하지만 Node.js는 이벤트 루프가 싱글 스레드에서 동작 한다는 것이지 내부적으로 스레드풀을 두어 I/O 작업에 스레드를 사용할 수 있도록 합니다. 이를 통해 병렬적으로 작업을 진행할 수 있는 것입니다. 확인을 위해 간단하게 node.js의 http 모듈을 사용해 서버를 띄워보도록 하겠습니다. 간단한 서버 코드 동작시켰을 때 화면 그리고 ps -M 명령어를 사용하여 스레드의 개수를 확인할 수 있습니다. (Mac OS 환경) 총 7개의 내부 스레드가 있는 것을 확인할 수 있다. 위의 사진에서 보다시피 현재 간단한 Node.js 프로세스인데 총 7..
자바스크립트로 소스 코드를 작성하다보면 다음과 같은 일에 직면하게 된다. function foo(callback1) { callback1(function (callback2) { callback2(function(callback3) { callback3( … );// 계속해서 탭이 늘어난다. }); }); } 맞다. 바로 ‘콜백헬’이라고 불리우는 일이 발생한다. 콜백헬이 발생하면 여러가지 단점이 생긴다. 그 중 제일 좋지 않은 단점은 극악의 가독성이다. 단순히 위의 코드만 보아도 남들이 읽기 힘들어 보인다. 이런 경우를 방지하기 위해 여태 promise 패턴을 적용했었다. 하지만 promise 패턴도 단순히 콜백을 호출하는 것보다는 가독성이 좋아지지만 마찬가지로 그닥 좋지 않은 가독성을 보여준다. 먼저 ..
nodejs에서는 express-session이란 모듈을 통해 사용자 인증을 구현하는 방법이 존재한다. 이 express-session은 쿠키를 통해 sessionID를 클라이언트에게 전달하고, 클라이언트가 cookie를 통해 서버에 요청시 쿠키의 sessionID를 키 값으로 이용, session store에 있는 세션 객체를 가지고와서 사용자의 중요한 정보를 가지고 온다. 필자가 express-session으로 구현해 놓은 서버(사이드 프로젝트용)에 급하게 sessionID를 쿠키 대신 http header에 전달하게 되었기 때문에 로그인 시에 response.body에 sessionID를 전달해야 했다. 그 방법을 급하게 알아본 결과 그런 방법은 존재하지 않았다... 하지만 이에 굴하지 않고 방법을..
필자는 여태 Node를 구동하면서 console.log를 이용해 로그를 남기며 디버깅을 진행하였다.좋은 방식은 아니지만 대충 확인만 하는 것들은 그런 방식으로 로그 데이터를 쌓았다. 하지만 Express를 사용하며 웹서버를 만들면서 로그를 체계적으로 쌓기 시작하면서 문제가 하나 발생했다.로그를 남길 때 모두 하얀색 이었기 때문에 눈이 매우 아팠던 것이다. 따라서 터미널 창에 색깔을 입힐 수 있는 로그 모듈을 찾았는데 chalk 모듈이다. 자세한 내용은 다음 docs에서 살펴보세요. npm사이트 하지만 필자의 경우 webstorm 콘솔 창에서는 색이 변했지만 pm2로 동작시킨 로그 내용을 tail로 추적했을 땐 색이 변하지 않았다.해결법은 다음과 같았다. 1. node --color => --color 옵..
다음과 같이 find종류인 findOneAndUpdate, findByIdAndUpdate 쿼리를 이용하여 컬렉션에 존재하는 스키마의 데이터를 업데이트 하는 일이 주어졌다고 하자. 다음은 스키마 정의 부분이다. const userSchema = new mongoClient.Schema({ name: { type: String, required: true, unique: true }, category: { team: Number, categoryType: String }, gender: { type: String, enum: ["male", "female"], required: true }, createOn: Date }); 다음은 name이 kkki인 원래의 document이다. { category: {..
Node.js에서 stream이란 "스트리밍 데이터로 작업하기 위한 추상적인 인터페이스"라고 공식 문서에 나와있다. 뭔 소리일까..? 일단 stream이란 개념을 짚고 넘어가야 될 듯 싶다. stream이란 일종의 추상적인 개념인데 입출력 기기나 프로세스, 파일 등 어디로 가는 지, 어디로 나왔는 지 상관없이 통일된 방식으로 데이터를 다루기 위한 가상의 개념이다. 그러니까 stream을 정의하기란 너무나 모호하다. Node.js에서 많은 Object들이 stream Object 이다. 예를 들어서 http 서버의 request나 process.stdout도 stream 인스턴스이다. stream들은 읽을 수 있거나(readable), 쓸 수 있거나(writable) 혹은 둘 다(both)가 될 수 있다...
nodejs의 기본 모듈 중 하나인 fs는 file system의 약어이다. 말 그대로 fs 모듈을 이용해 파일 시스템에 사용되는 기능들을 사용할 수 있다. fs는 표준 POSIX 함수와 비슷하게 만들어놨기 때문에 예전에 리눅스 프로그래밍을 배운 필자로서는 fs모듈이 매우 흥미롭게 다가왔다. 모든 파일 시스템 연산은 동기식과 비동기식이 존재하는데 비동기식은 모두 연산이 완료되었을 시 마지막 argument에 callback으로 전달한다. callback의 첫번째 argument는 예외처리가 담긴 변수인데 예외가 없을 시 undefined나 null이 반환된다. 동기식의 오류처리는 try/catch로 잡을 수 있다고 하는데 nodejs에서 동기식을 사용한다는 것은 매우 비효율적이므로 따로 적지는 않겠다. ..