목록노드 (6)
Dharma
어쩌다 보니 이메일 보내는 기능을 구현하게 됐습니다. 요즘 서비스 하나 만들려고 보면 이메일 보내기 기능은 거의 기본적인 기능이라 필수적으로 알아야 하는 부분이라고 볼 수 있습니다. 이 포스트는 두 부분으로 되어 있습니다. 1. SMTP 서버 설정하는 부분 2. Node.js 에서 이메일 보내는 부분 사실 2번은 무지 쉬웠습니다. nodemailer 라는 훌륭한 패키지가 존재하기 때문이지요. 1번은 너무나 쉽고도 오래된 이야기인지 오히려 관련 문구를 찾기가 어려웠습니다. 개발환경은 역시나 서버 사이드 이기 때문에 Ubuntu 12.10 버젼에서 테스트 했습니다. 1. Sendmail 을 설치해줍니다. $ sudo apt-get install sendmail Postfix 를 요즘 많이 쓴다고 하는데, 귀..
http://www.ziggytech.net/technology/web-development/experiences-with-node-js-porting-a-restful-service-written-in-java/ - 초간단 요약 - 기존의 자바 서비스하고 있던 부분의 일부를 node.js 로 포팅해서 두개를 벤치마크 해 봄. 자바는 멀티코어 환경에서 테스트하고 node.js 는 cluster 를 안쓰고 단일 코어에서 (아무것도 안하면 단일코어에서 도니 ㅎㅎ) 동작시켜봄 결과는 아래와 같음 씨피유와 메모리는 적게 쓰지만 (훨씬 적게..) 성능은 그리 낫지 않음. 이거저거 바꿔가며 테스트를 하던중 ORM 을 지원하는 Sequelizer 가 느리다는 것을 알아냄, node-mysql 로 바꾸고 나니 바뀐 내..
Node.js 와 express 를 이용해서 개발하다 보면 아쉬운 것이 한가지 있습니다. 본의 아니게 서버가 죽어버리는 일입니다. 물론 이런일이 발생하지 않게 에러 핸들링을 속된 말로 빡세게 해야 하지만 뭐 어떻게 알아서 그걸 다 하고 있습니까... (후다다다닥) 만약 서버가 죽는다고 하더라도 우아하게 재시작 된다면 (gracefully restart 라는 표현을 쓰더군요) 추후에 비슷한 에러가 발생하지 않도록 조치를 취해줄 수가 있습니다. 역시나 설치법은 무지 쉽습니다. npm 이 설치되어 있다고 가정한다면 $ sudo npm install forever -g 이러면 설치되고, 원하는 스크립트 서버를 띄워주고 싶다면 $ forever start app.js 하면 데몬 형식으로 구동됩니다. 아! 로그도 ..
What is this? 가 이것은 무엇인가요가 아닌 this 란 무엇인가요? 라는 말 장난을 쳐 둔 포스트의 내용이 있습니다. 객체지향 프로그래밍 (Object Oriented Programming) 언어에 보면 this 라는 애가 등장합니다. 여기서의 this 는 간단해서 Object 자신을 가르키고 있습니다. 다만 Javascript 의 this 는 이와 달라서 class 내에 선언된다고 해도 꼭 그 class 객체를 지정하지는 않습니다. 이 알송 달송한 javascript 의 this 를 체계적으로 잘 설명한 글 입니다. http://howtonode.org/what-is-this 왠만하면 번역을 해서 편하게 설명할 까 했는데 너무 양이 많아서 엄두가 나지 않는군요 ㅎㅎ;; 대신 결론 부분만 조금..
전통적인 프로그래밍 언어들에 있어서 프로그래밍 방식이란 순차적으로 실행되는 형식을 취합니다. 쉽게 말해서 var a = FunctionA () ; // 10 초 걸림 var b = FunctionB () ; // FunctionA 가 실행된지 10초 후에 실행됨 이러한 방식으로 앞에 실행된 것(FunctionA)이 완벽하게 끝나야지만 다음 것(FunctionB)이 실행됩니다. 너무나 당연한가요? 사실 순차적으로 실행되는 것은 Node.js 에서도 일반적인 방식입니다. 다만 약간의 차이가 있을 뿐입니다. Node.js 에서 위 함수가 실행되는 방식을 알아보기로 할까요? var a = FunctionA () ; // 10 초 걸림 var b = FunctionB () ; // FunctionA 가 실행된후 ..
Slime 이 무엇인지 Emacs 를 사용하시는 분들은 대충 아시리라 봅니다. REPL (Read Eval Print Loop)형태를 지원하는 언어에 대한 최적의 개발 환경이라고 보시면 됩니다. (물론 부정하는 분들도 많습니다) 저는 Common Lisp , Clojure 등을 Slime 을 이용해서 개발환경을 구축해 두었습니다. 이번에 프로젝트를 Node.js 로 진행하게 되어서 (Node.js 또한 REPL 을 지원합니다) Emacs + Slime 으로 환경을 구축할려고 알아보았습니다. 역시나 괜찮은 솔루션이 하나 등장하더군요. https://github.com/swank-js/swank-js Slime 은 Swank 라는 방식으로 각기 언어별로 소켓 접속이 가능한 방식으로 서버를 띄우면 Emacs ..