일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- node
- 소켓
- RDF
- Python
- Knowledge Graph
- 자바
- C++
- Groovy
- benchmark
- 개발자
- Router
- 파헤쳐보자
- 이벤트 루프
- Stream
- nodejs
- 예제
- 노드js
- 지식 그래프
- scrum
- ngrinder
- 스크럼
- Django
- socket.io
- node.js
- 특징
- 스레드
- 스크럼 마스터
- 노드
- express
- Today
- Total
목록node.js (17)
라봉이의 개발 블로그
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..
이전 포스트: 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..
[ngrinder] 2Core, 2GB Node.js 서버 간단한 GET 테스트 (pm2 클러스터링 인스턴스 2개)(vuser- 99 test- 19,800) 사전 설정 Controller 스펙 기종: 한성 Bossmonster lv. 67 OS: Windows10 pro 64bit processor: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601Mhz, 4 코어, 8 논리 프로세서 RAM: 16.0 GB Agent 스펙 기종: MAC 애플 맥북프로 15형 레티나 리프레시 2015년형 (MJLQ2KH/A) OS: MAC Mojave processor: Intel Core i7 2.2 GHz RAM: 16.0 GB Target 스펙 OS: Ubuntu 14.04 pr..
[ngrinder] 2Core, 2GB Node.js 서버 간단한 GET 테스트(vuser- 99 test- 19,800, ) 사전 설정 Controller 스펙 기종: 한성 Bossmonster lv. 67 OS: Windows10 pro 64bit processor: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 2601Mhz, 4 코어, 8 논리 프로세서 RAM: 16.0 GB Agent 스펙 기종: MAC 애플 맥북프로 15형 레티나 리프레시 2015년형 (MJLQ2KH/A) OS: MAC Mojave processor: Intel Core i7 2.2 GHz RAM: 16.0 GB Target 스펙 OS: Ubuntu 14.04 processor..
자바스크립트로 소스 코드를 작성하다보면 다음과 같은 일에 직면하게 된다. function foo(callback1) { callback1(function (callback2) { callback2(function(callback3) { callback3( … );// 계속해서 탭이 늘어난다. }); }); } 맞다. 바로 ‘콜백헬’이라고 불리우는 일이 발생한다. 콜백헬이 발생하면 여러가지 단점이 생긴다. 그 중 제일 좋지 않은 단점은 극악의 가독성이다. 단순히 위의 코드만 보아도 남들이 읽기 힘들어 보인다. 이런 경우를 방지하기 위해 여태 promise 패턴을 적용했었다. 하지만 promise 패턴도 단순히 콜백을 호출하는 것보다는 가독성이 좋아지지만 마찬가지로 그닥 좋지 않은 가독성을 보여준다. 먼저 ..
다음과 같이 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이란 개념이 나왔고 그것을 구현할 수 있도록..