일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이벤트 루프
- 스크럼
- 소켓
- benchmark
- express
- ngrinder
- java
- Router
- 자바
- node
- nodejs
- scrum
- Stream
- 노드
- 개발자
- 지식 그래프
- RDF
- Django
- 스레드
- socket.io
- Python
- 노드js
- Groovy
- Knowledge Graph
- 예제
- C++
- 스크럼 마스터
- node.js
- 파헤쳐보자
- 특징
- Today
- Total
목록노드 (11)
라봉이의 개발 블로그
서론 Node.js는 싱글 스레드 이벤트 루프를 사용한다고 알려져있습니다. 따라서 Node.js는 싱글 스레드(?)이다. 라고 잘못 아시는 분들도 종종 있구요. 하지만 Node.js는 이벤트 루프가 싱글 스레드에서 동작 한다는 것이지 내부적으로 스레드풀을 두어 I/O 작업에 스레드를 사용할 수 있도록 합니다. 이를 통해 병렬적으로 작업을 진행할 수 있는 것입니다. 확인을 위해 간단하게 node.js의 http 모듈을 사용해 서버를 띄워보도록 하겠습니다. 간단한 서버 코드 동작시켰을 때 화면 그리고 ps -M 명령어를 사용하여 스레드의 개수를 확인할 수 있습니다. (Mac OS 환경) 총 7개의 내부 스레드가 있는 것을 확인할 수 있다. 위의 사진에서 보다시피 현재 간단한 Node.js 프로세스인데 총 7..
다음과 같이 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에서 동기식을 사용한다는 것은 매우 비효율적이므로 따로 적지는 않겠다. ..
socket.io란?? socket.io는 websocket 프로토콜을 지원하는 네트워킹 라이브러리이다. 비동기 이벤트 방식으로 "실시간"으로 간단하게 데이터를 주고받을 수 있게 만든 라이브러리이며 정말 쉽게 만들 수 있지만 강력한 기능들로 하여금 다양한 서비스를 만들 수 있다. 서버 사이드에서는 아직 node.js에서만 가능하고 클라이언트 사이드에서는 javascript가 가능한 곳, 브라우저 심지어 스위프트나 자바 안드로이드도 가능하고 C++11도 가능한 것으로 보인다. socket.io 깃허브 주소 위에서 설명했듯 socket.io는 Websocket 프로토콜을 사용한다. 원래는 웹 브라우저에서 양방향으로 자유롭게 데이터를 교환하기 위해서 WebSocket이란 개념이 나왔고 그것을 구현할 수 있도록..
그동안 노드js를 사용하면서 항상 머리 속을 맴돌았던 질문이 있었다. 노드는 어떻게 돌아가는 거지? 노드는 왜 싱글 스레드인거지? 뭐가 대체 싱글 스레드인걸까?? 궁금증에 못이겨 노드js 공식 홈페이지의 문서를 뒤젹거리며 찾아본 결과를 정리해보고자 포스팅을 시작했다. 문서 내용을 가져온 내용이 있기 때문에 직접 Node.js 공식 문서를 보는 것도 좋은 방법일 것 같다. Node.js 공식 문서: https://nodejs.org/ko/docs/ 블로킹과 논블로킹 살펴보기 먼저 블로킹과 논블로킹에 대해 알아보도록 하겠습니다.블로킹: 호출되는 함수가 자신의 작업을 마칠 때까지 제어권을 넘겨주지 않고 대기하는 방식논블로킹: 호출되는 함수가 바로 제어권을 넘겨줘서 다른 작업을 진행할 수 있도록 하는 방식 No..
이전 포스트 : http://psyhm.tistory.com/7?category=654716 저번 포스트에서는 route paths와 parameters에 대해 조금 더 살펴보았다. 이번엔 대망의 middleware에 대해서 살펴 보도록 하겠다. Middleware docs를 보면 middleware에 대한 설명이 나와있다. "Middleware functions are functions that have access to the request object (req), the response object (res), and the next function in the application’s request-response cycle." 미들웨어 함수는 req(요청) 객체, res(응답) 객체, 그리고 어..
이전 포스트 : 2018/03/04 - [Node.js/express] - Node.js express를 파헤쳐보자-3: static file, path 객체 저번 포스트에서는 static file과 path 객체에 대해서 알아보았다.express가 어떻게 정적 파일(static file)과 path 객체가 무엇이고 어떻게사용하는 지 정말 간략하게 살펴보았다. 이번 포스트는 이전 포스트에서 다루었던 router를 좀 더 살펴보도록 하겠다. Route paths 이전에 Router는 url의 path와 http method로 handler를 달리 할 수 있다고 설명하였다. 이 Route paths에 대해 조금 더 설명을 하고 싶었다. express 문서를 보면 다음과 같은 구문이 있다.express 문서:..
이전 포스트 : http://psyhm.tistory.com/5 저번 포스트에서는 router 객체와 render란 무엇인가에 대해 공부했었다. 이제 정적 파일(이미지 파일, javascript 파일, css 파일) 등을 express 서버가 어떻게 제공하는 지 알아보자. 정적 파일(Static files) express가 static files(정적 파일들)을 제공하기 위해선 express.static 미들웨어를 사용해야 한다. 사용 방법은 다음과 같다. express.static(root, [options]); root는 정적 파일들이 위치한 경로를 string 타입으로 적으면 되고 options는 속성을 키값으로 한 객체를 넣으면 된다. options는 다음 테이블에서 확인 가능하다. 속성 설명 타..
이전 포스트 : http://psyhm.tistory.com/2 저번 포스트에서는 express란 무엇인지, 그리고 express-generator로 스켈레톤을 생성해보고 생성한 프로젝트를 곧바로 돌려보는 것까지 했었다. 그렇다면 이제 어떻게 돌아가는 지 코드를 보며 살펴볼 차례이다. router 객체 저번 포스에서 프로젝트를 구동하고 http://localhost:3000/ 을 웹브라우저에 입력하게되면 다음과 같은 화면을 볼 수 있었다. 그리고 이 화면은 views/index.ejs 파일이 렌더링 된 것이라고 했고, 렌더링하는 로직은 routes/index.js에 있었다고 했었다. 일단 routes/index.js를 보자 // index.js file var express = require('expre..