클라우드 컴퓨팅 & NoSQL 384

빠르게 훝어 보는 node.js - #11 Socket.IO 3/4 (1:1 귓속말 구현)

빠르게 훝어보는 node.js#11 - Socket.IO (3/4)조대협 (http://bcho.tistory.com) 앞서 작성한 대화방 http://bcho.tistory.com/896 에 이어서 이번에는 1:1 귓속말 대화가 가능한 기능을 추가해보자 귓속말이 가능한 대화방이번에는 특정 사용자가 다른 사용자에게 귓속말을 보내는 기능을 가지는 대화방을 만들어보자. 이를 통해서 특정 클라이언트 소켓에 메세지를 어떻게 보내는지를 배울 수 있다.이 대화방의 기능은 다음과 같다.Ÿ 대화방에 입장하는 손님들은 자동으로 대화명을 부여 받는다.Ÿ 사용자는 대화명을 바꿀 수 있다.Ÿ 사용자는 대화 수신자의 대화명을 선택하여 특정 사용자에게 귓속말을 보낼 수 있다.코드를 보면서 설명하도록 하자.app.js var ex..

빠르게 훝어 보는 node.js - #10 Socket.IO 2/4 API 요약

빠르게 훝어보는 node.js#10 - Socket.IO (2/4)조대협 (http://bcho.tistory.com) Socket.IO APIsSocket.IO는 이밖에도 다양한 이벤트를 전달할 수 있는 API를 제공하는데, 이에 대해서 살펴보자.여기서 사용하는 socket이라는 객체는 io.sockets.on('connection',function(socket){에 의해서 callback function에 의해서 전달된 인자임을 미리 명시해둔다. 1. 이벤트 보내기 받기먼저 소켓으로 또는부터 이벤트를 보내고 받는 방법부터 알아보자.앞에 예제에서도 봤지만 가장 간단한 방법은 Ÿ * 이벤트 보내기 socket.emit('이벤트명',{메세지});현재 연결되어 있는 클라이언트 소켓에 “이벤트명”으로 “{메시..

빠르게 훝어 보는 node.js - #9 Socket.IO 1/4 - socket.io 기본 및 채팅 만들기

빠르게 훝어보는 node.js#9 - Socket.IO (1/4)조대협 (http://bcho.tistory.com) 웹의 발전과 함께, 클라이언트의 요청에 대해서 응답만을 하는 단방향성이 아닌 양방향성의 웹 사이트가 유행하게 되었는데, Socket.IO는 자바스크립트 모듈로, 양방향 통신이 가능한 웹사이트를 구축하기 위해서 HTTP 클라이언트로 푸쉬 메시지를 보내줄 수 있는 모듈이다. 넓은 브라우져 지원성과 사용의 편의성 때문에 널리 사용되고 있고, node.js가 인기 있어 지는 이유 중의 하나는 socket.io 때문이 아닐까 한다.배경Socket.io를 설명하기 전에, 웹에서의 푸쉬 개념에 대해서 이해할 필요가 있다. 웹은 기반적으로 클라이언트에서 서버로 가는 단방향성이지만, 채팅과 같은 실시간 ..

무료 node.js 개발툴.

node.js용 개발도구가 여러가지가 있다.Eclipse와 IntelliJ를 개발한 JetBrain의 WebStorm 과 같은 상용툴이 있지만, Eclipse의 경우, 자바기반이라서 무겁기도 하고 속도도 느리고, WebStorm은 금전적인 부담이 있다. 근래에 MS에서 node.js용 Viual Studio 플러그인을 제공하는데 Native 기반이라서 빠르기도 하고, 무료로 사용을 할 수 있는 장점이 있다. 먼저 Visual Studio 2013 Web 버전을 설치한후 (무료)https://nodejstools.codeplex.com/ NTVS (Node js Tool for Visual Studio) 를 설치하면 된다소개 동영상은 https://www.youtube.com/watch?feature=pl..

빠르게 훝어 보는 node.js - #8 mySQL 연동

빠르게 훝어보는 node.js#8 - MySQL 연동조대협 (http://bcho.tistory.com) NoSQL이 근래에 유행이기는 하지만, 데이터간의 관계를 표현하고, 트렌젝션에 일관성을 보장하는 RDBMS는 아직까지는 서버쪽에서는 필수적이다. node.js는 대표적인 오픈소스 RDBMS인 MySQL은 지원한다. 몇가지 MySQL연동 모듈이 있기는 하지만, 여기서는 가장 많이 사용되는 node-mysql 모듈에 대해서 소개하고자 한다.node-mysql은 오픈소스로 https://github.com/felixge/node-mysql 에 코드가 공개되어 있다.mysql 모듈을 사용하려면 npm install mysql 명령을 이용하여, node-mysql 모듈을 설치하자.mysql에 대한 설치와 사용..

빠르게 훝어 보는 node.js - #7 mongoose ODM 을 이용한 MongoDB 연동

빠르게 훝어보는 node.js#7- mongoose ODM 을 이용한 MongoDB 연동조대협 (http://bcho.tistory.com) 계정본이 http://bcho.tistory.com/1094 올라와 있습니다. Mongoose ODM을 이용한 MongoDB의 연동Mongoose는 MongoDB 기반의 nodejs용 ODM (Object Data Mapping) 프레임웍이다. 앞에서 mongo-native에 대해서 알아봤는데, 그렇다면 mongoose는 무엇인가? 쉽게 생각하면 mongo-native는 JDBC 드라이브러를 이용한 데이타 베이스 프로그래밍이고, mongoose는 자바의 JPA/Hibernate/MyBatis와 같은 OR Mapper와 같은 개념이다. 즉 mongodb 내의 데이타를..

빠르게 훝어 보는 node.js - #6 MongoDB 연동 (mongo-native)

빠르게 훝어보는 node.js#6- mongo-native 모듈을 이용한 MongoDB 연동조대협 (http://bcho.tistory.com 아래 글은 오래되서 monk를 이용한 방식으로 새로운 글을 작성하였습니다.새 글은 node.js 4.x , express 4.x 에서 기동하도록 작성되었습니다.링크 : http://bcho.tistory.com/1080Persistence 연동node.js는 DB나 NoSQL등의 연동을 지원하는데, 이 역시 철저하게 non-blocking io 방식으로 동작한다. 즉 db 연결 socket을 열어서 query를 던져놓고, query 결과가 오면 이벤트를 받아서 callback 함수로 처리하는 순서이다.그러면 여기서는 몇가지 persistence 연동 방식에 대해서..

빠르게 훝어 보는 node.js - #5 웹개발 프레임웍 Express 2/2

빠르게 훝어보는 node.js#5 - Express 2/2조대협 (http://bcho.tistory.comFile upload 및 download 처리Express는 파일 업로드 기능을 제공한다. Express 의 경우, 파일을 tmp directory에 업로드한후, 업로드가 끝나면 이벤트를 주는 형태이다. 그래서, 파일 업로드가 끝나면 파일 저장 디렉토리로 옮겨 줘야 한다. 그러면 간단하게 코드를 살펴보자. express에서 업로드되는 file stream은 multipart 형태로 업로드가 된다. 이 multi part request stream을 인식하려면, express세팅에 bodyParser 미들웨어를 사용함을 명시해줘야 한다.var app = express();app.use(express...

빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2

빠르게 훝어보는 node.js#3 - Express 1/2조대협 (http://bcho.tistory.comExpressnode.js는 여러 종류의 웹 개발 프레임웍을 제공한다.얼마전에 Paypal이 내부 시스템을 대규모로 node.js로 전환하면서 오픈소스화한 KarkenJS나 Meteo 등 여러가지 프레임웍이 있는데, 그중에서 가장 많이 사용되는 프레임웍 중하나인 Express에 대해서 설명하고자 한다.Express는 웹 페이지 개발 및 REST API 개발에 최적화된 프레임웍으로 매우 사용하기가 쉽다.프로젝트 생성먼저 express module을 npm을 이용해서 설치한 다음 express 프로젝트를 생성해보자.% express --session --ejs --css stylus myapp명령을 이..

빠르게 훝어 보는 node.js - #3 Event,Module,NPM

빠르게 훝어보는 node.js#3 - Event,Module,NPM조대협 (http://bcho.tistory.com비동기 이벤트 프로그래밍기존의 프로그래밍 언어들은 일반적으로 함수를 부르는 형태의 프로그래밍 구조를 가지고 있다. 이를 procedural programming model이라고 하는데, 코드가 순차적으로 실행되면서 함수를 호출하는 식의 구조를 가지고 있기 때문에 코드를 보면 코드의 수행 순서를 예측할 수 있다. node.js는 event driven programming 이라는 개념을 가지고 있는데, 이 개념은 특정 이벤트가 발생되면 미리 이벤트에 맵핑된 함수가 실행되는 형태이다. 즉 해당 함수가 언제 호출 되는지를 예측할 수 가 없다.var callback = function(data){..