기본 콘텐츠로 건너뛰기

node.js 로 만드는 좀 더 본격적인 TCP Server

서로 에코만 하는게 부족하다면 유닉스의 wall 채팅을 구현해보자. 사실 이것만 되면 누가 접속했는지도 알고 누가 누구한테 무얼 보낼 수 있는지도 아는 셈이므로 채팅방을 하든지 온라인대전 격투게임 서버를 만들던지 바카라(어이쿠 위험한 단어) 서버를 만들던지 엠엠오알피지 서버를 만들던지 알아서 주무르면 된다. 자 그럼 이 대단한 서버의 코드를 보자 var clients = []; require('net').createServer(function(socket) {   socket.on("connect", function() {     clients.push(socket);   });   socket.on("close", function() {     clients.splice(clients.indexOf(socket), 1);   });   socket.on("data", function(data) {     var sender = this;     clients.forEach(function(client) {       if (client !== sender) client.write(data);     });   }); }).listen(1337,"0.0.0.0"); 네트워크 프로그래밍 좀 해본 사람이라면 다리에 힘이 턱 풀릴 정도로 허무한 코드라고 할 수 있겠다. 코드를 위에서부터 말로 쭉 설명하자면 1. 빈 접속자 배열을 만든다. 2. connect 할때마다 접속자 배열에 해당 소켓을 추가한다. 3. close 하면 socket 의 위치를 찾아(indexOf) 해서 떼어낸다(splice) 4. data 즉 접속자로 부터 입력을 받으면 자기 자신이 아닌 다른 모든 소켓에게 쓰기를 한다. 5. 이 모든 것을 1337번 포트에 연...

node.js server pattern

에코 서버 3줄이면 된다는 걸 증명하기 위해선 require('net').createServer(function(socket) {   socket.pipe(socket); }).listen(1337,"127.0.0.1"); 요정도면 충분. 접속/서버메시지/접속종료 구현은 require('net').createServer(function(socket) {   socket.on("connect", function() {     socket.write("hello\n");   });   socket.on("close", function() {     console.log("closed");   });   socket.on("data", function(data) {     socket.write("usay:"+data);   }); }).listen(1337,"127.0.0.1"); 이정도면 충분하겠다.

DotCloud 에서 Redmine 수정 후 Push 하였을때 발생하는 오류에 대한 대처법

http://www.redmine.org/boards/2/topics/11085 구글링해보았다. a key is required to write a cookie containg the session data 오류인데 당황하지 말고 $ dotcloud ssh redmine.redmine (redmine.redmine 은 나만 이렇게 쓰고 있으니 알아서 변경하시길) 로 들어가서 $ cd current $ rake config/initializers/session_store.rb 해주면 끝.

redmine project 식별자(identifier) 변경

보통은 식별자를 Admin모드에서 바꿀 수 없다. 하지만 누구나 실수는 하는 법. mysql 을 뒤져보니 간단하게 바꿀 수 있더라. $ dotcloud ssh redmine.db $ mysql -uroot -p<암호> mysql> use redmine; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------------------------+ | Tables_in_redmine                   | +-------------------------------------+ | attachments                         | | auth_sources                        | | boards                              | | changes                             | | changesets                 ...

dotcloud 에 redmine 등록 후 Domain 도 연결해보자

redmine 을 dotcloud.com 에 올렸습니다. 무료니까요. 이후 할것들이 몇가지가 있다. 하나는 Domain 연결이고 나머지 하나는 mail notification 인데 차근차근 보자 잘 등록했다면 list 를 보았을때 $ dotcloud list redmine:   - db      (type: mysql; instances: 1)   - redmine (type: ruby; instances: 1) 라고 나올 것이다. http://docs.dotcloud.com/guides/domains/ 가이드대로 $ dotcloud alias add ramen.www www.example.com 형식으로 써보자 어플리케이션명이 redmine 이고 모듈도 redmine 이니까 $ dotcloud alias add redmine.redmine www.<니가 쓰는 도메인> 형식이 되겠다. 아래와 같이 나오면 정상. Ok. Now please add the following DNS record: www.<니가 쓰는 도메인>. IN CNAME gateway.dotcloud.com. 내 경우엔 서브도메인으로 쓰고 싶어서 $ dotcloud alias add redmine.redmine redmine.<내 도메인> 형식으로 썼다. 브라우저에서  http://redmine.<내 도메인> 으로 접근했을때 CNAME Alias 를 줘서 호스팅 서비스쪽에서 gateway.dotcloud.com 을 바라보게 하고 gateway.dotcloud.com 에서 해당 어플리케이션으로 연결되게 하는 구조다. netfirms.com 이란 곳에서 도메인 호스팅을 받고 있는데 관련 설정을 보면 이런 식이다. CNAME (Alias) A CNAME record (also known as an alias record) is a subdo...

redmine 을 dotcloud.com 에 올렸습니다. 무료니까요.

PaaS(Platform as a Service)의 시대입니다. 지금 배타고 물들어올때 잽싸게 올라타자 하는 마음으로 http://www.dotcloud.com 에 계정을 하나 만들어놓았습니다. 소프트웨어(ex.ASP) 뿐만이 아니라 플랫폼마저도 빌려쓰는 세상이라니 좋은 세상입니다. 자 바로 본론입니다. 먼저 http://dotcloud.com 에 가입하시고 http://docs.dotcloud.com/firststeps/install 에서 cli 도 설치하고 기본 준비를 하세요. 이런건 패스합니다. 읽어보면 멸치라도 할 수 있어요. 봐도 모르시겠다고요. 그럼 Backspace : ) 현재는 Free Plan 뿐입니다만 너무도 훌륭한 서비스입니다. http://yanitime4u.fluxflex.com/56 를 보고 해보니까 쉽더군요. 근데 보실 필요는 없어요. 왜냐면 이 아래에 쓸 내용도 같은 내용이니까요 :) https://www.dotcloud.com/settings/ 에서 유저명을 바꿔주세요. API Key, Username,First name, Last name, E-mail address 순으로 있죠? 두번째 Username을 바꿔줍니다. 최종 우리가 사용할 URL은 http://redmine-<Username>.dotcloud.com 이 될테니까요. 일단 지금 홈디렉토리라고 가정하고 복사하고 붙여봅니다. 현재 최신버전인 redmine 1.2.1 을 사용합니다. $ mkdir redmine $ cd redmine $ wget http://rubyforge.org/frs/download.php/75097/redmine-1.2.1.tar.gz $ tar zxvf redmine-1.2.1.tar.gz 일단 압축을 풀으셨으면 디플로이할때 걸리적거리니까 redmine-1.2.1.tar.gz 일단 지워주고 dotcloud.yml 파일을 만듭니다. 우리는 redmine 을 쓰고 mysql을 db로 쓸테니...