�ȑO�uCoffeeScript �������Ă݂��v�Ƃ����l�^�������܂����� CoffeeScript �� node.js �Ŏg�����Ƃ��ł���̂� node.js �ɓ���Ď����Ă݂܂��B
�܂��̓O���[�o���C���X�g�[���B
$ sudo npm install -g coffee-script
CoffeeScript �̃\�[�X�������܂��B
$ vi test.coffee
alert "hello"
����Ȋ����B
CoffeeScript �� �S�R�킩��Ȃ��A���Đl�� ���̃T�C�g���Q�l�ɂȂ�Ǝv���܂��B
[�Q�l]
CoffeeScript���ĂȂH
�R���p�C������� js �t�@�C�����ł��܂��B
$ coffee -c test.coffee
�ł��� js �t�@�C�������Ă݂܂��B
$ cat test.js
(function() {
alert("hello");
}).call(this);
������ JavaScript �ɂȂ��Ă܂����B
node.js �ɂ� express �Ƃ��� Web �t���[�����[�N������ ������g���ƊȒP�� Web �V�X�e���̐��`�����邻���Ȃ̂� �����Ă݂܂��B
���̃T�C�g���Q�l�ɐi�߂܂����B
[�Q�l]
Node.js�iExpress�j�A�v���̐��`�������������� - �A�C���V���^�C���̓d�b�ԍ�
express ���O���[�o���C���X�g�[���B
����� express �R�}���h���g����悤�ɂȂ�܂��B
$ sudo npm install -g express $ express -v 2.5.8
"-g" �I�v�V�����ŃO���[�o���C���X�g�[���ł��B
��L�̃T�C�g�ł���Ă�悤�� hoge �Ƃ����A�v�����쐬���܂��B
$ express hoge $ cd hoge $ sudo npm link express $ npm install jade
express �� jade ������Ă��܂��B
express �́A�O���[�o���C���X�g�[�����Ă���̂Ń����N�œ���܂��B
��������ƃV���{���b�N�����N���쐬����܂��B
����ł������`���ł��܂����B
���������������Ă݂܂��B
$ node app.js
Express server listening on port 3000 in development mode
�|�[�g 3000 �� Web �T�[�r�X���N�����܂��B
http://127.0.0.1:3000/
���̂悤�ȉ�ʂ��\������܂��B
�\�[�X���C�����ĕ\���� "Welcome to Hoge" �ɂ��܂��B
�\�[�X���C�����邽�т� ���� Web �T�[�r�X���N������͖̂ʓ|�Ȃ̂� �����I�Ƀ����[�h���Ă����R�}���h�����܂��B �������L�̎Q�l�T�C�g�̒ʂ�ł��B
node-dev ���O���[�o���C���X�g�[�����܂��B
$ sudo npm install -g node-dev
node �R�}���h�̑���� node-dev �R�}���h�ŋN�����܂��B
$ node-dev app.js
Express server listening on port 3000 in development mode
Web �T�[�r�X���N��������Ԃ� �\�[�X���C�����܂��B
�o�[�W�����������Ă��邹���� ��L�̎Q�l�T�C�g�Ƃ͈Ⴄ�t�@�C���ł����B
$ vi routes/index.js
/* * GET home page. */ exports.index = function(req, res){ res.render('index', { title: 'Express' }) // "Hoge" �ɕύX };
Web �T�[�r�X���N�������R�}���h�̕�������� �\�[�X��ύX�������Ƃɂ���� ���X�^�[�g���Ă���悤�ł����B
$ node-dev app.js Express server listening on port 3000 in development mode [INFO] Restarting Express server listening on port 3000 in development mode
�A�N�Z�X���Ă݂܂��B
http://127.0.0.1:3000/
�\�����e���ς��܂����B
�Ƃ肠���������܂ŁB�m���ɊȒP�ł��ˁB
node.js �� mongoose ���C���X�g�[�������̂� node.js ���� MongoDB �̒l���擾���Ă݂܂��B
���̃T�C�g���Q�l�ɐi�߂܂����B
[�Q�l]
mongoose���g����mongodb�ɃA�N�Z�X���Ă݂� - A Peak Never Ending !
�܂� MongoDB �Ƀf�[�^��o�^���܂��B
$ mongo MongoDB shell version: 1.2.2 url: test connecting to: test type "exit" to exit type "help" for help > use memo switched to db memo > db.memos.save({title:'test title1', body:'test body1'}) > db.memos.save({title:'test title2', body:'test body2'}) > exit
�f�[�^�x�[�X�� memo�A�R���N�V������ memos �ɂ��܂��B
node.js �̃X�N���v�g memo.js �����܂��B
��L�̎Q�l�T�C�g�̃X�N���v�g�����̂܂ܓ\��t���܂��B
$ vi memo.js
/* * Mongoose�Ńf�[�^�����o���ĕ\������e�X�g */ var mongoose = require('mongoose'); // �X�L�[�}��` var MemoSchema = new mongoose.Schema({ title: String, body: String }); // ���f���Ƃ��ēo�^ var Memo = mongoose.model('Memo', MemoSchema); // mongodb�ɐڑ� mongoose.connect('mongodb://localhost:27017/memo', // memo�̕����̓f�[�^�x�[�X�� // �R�[���o�b�N�ŃG���[���̏�����������݂����B function(err) { if (err) { console.log(err); } else { console.log('connection success!'); } } ); // find���ăR���\�[���ɏo�� Memo.find({}, function(err, docs) { if(!err) { console.log("num of item => " + docs.length) for (var i = 0; i < docs.length; i++ ) { console.log(docs[i]); } mongoose.disconnect() // mongodb�ւ̐ڑ���ؒf process.exit() // node.js�I�� } else { console.log("find error") } });
���s���Ă݂܂��B
$ node memo.js
connection success!
num of item => 2
{ _id: 4f73edfbb7c76c517dc7eb16,
title: 'test title1',
body: 'test body1' }
{ _id: 4f73edffb7c76c517dc7eb17,
title: 'test title2',
body: 'test body2' }
node.js ���� MongoDB �̒l���擾�ł��܂����B
����ŁA�ł��邱�Ƃ̕����L����܂����B
��ƃ����ł��B
�O��� node.js �̑����ł��B
����� mongoose �����܂��B
mongoose �� node.js ���� mongodb �� ORM ���ۂ��A�N�Z�X���邽�߂̃��C�u�����ł��B
mongoose �̃C���X�g�[���ɂ� npm ���g���܂��B npm �́A�O��� node.js �̃C���X�g�[���œ����Ă��܂��B
$ which npm
/usr/local/bin/npm
�v���L�V�F���K�v�Ȋ����Ƃ�����Ƒ�ςł��B
�܂� npm �Ƀv���L�V�̐ݒ�����܂��B
$ npm config set proxy http://USER:PASSWORD@SERVER:PORT
�v���L�V���g�������� DNS �������Ȃ��Ă����v�������肵�܂��� npm �ł͉��̃T�C�g�ɏ����Ă���悤�ɖ��O�̉������ł����ăG���[�ɂȂ��Ă��܂��܂����B
[�Q�l]
Proxy������npm�C���X�g�[�� :�_���l�ԃI�����C��
DNS ��ݒ肷�邩 /etc/hosts �ɐڑ���� registry.npmjs.org ��lj������肵�đΉ����܂��B
mongoose �̃C���X�g�[���B
$ npm install mongoose
�E�E�E�Ǝv������A�܂�����G���[���o�܂��B
npm http GET https://registry.npmjs.org/mongoose npm ERR! Error: connect ECONNREFUSED npm ERR! at errnoException (net.js:670:11) npm ERR! at Object.afterConnect [as oncomplete] (net.js:661:19)
���̃T�C�g�ɏ����Ă���悤�� https ���Ƃ��܂������܂���B
[�Q�l]
WindowsXP + �v���L�V����npm���g�� - �l�p�v���O��
�z�[���f�B���N�g���� .npmrc ���ł��Ă���̂ŕҏW���܂��B
$ vi ~/.npmrc
�v���L�V�̐ݒ肪�����Ă���̂� ���̍s��lj����܂��B
registry = http://registry.npmjs.org/
���� 1 �x�C���X�g�[���B
$ npm install mongoose
���x�͐������܂����B
��ƃ����ł��B
�܂��A�\�[�X���_�E�����[�h�B
$ wget http://nodejs.org/dist/v0.6.14/node-v0.6.14.tar.gz
�𓀁B
$ tar xzvf node-v0.6.14.tar.gz $ cd node-v0.6.14
configure �B
$ ./configure
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : yes
Checking for library util : yes
Checking for library rt : yes
Checking for fdatasync(2) with c++ : yes
���̊��ł� �ŏ� ���̂悤�ɃG���[���o���̂� libssl-dev ���C���X�g�[�����܂����B
Checking for openssl : not found Checking for function SSL_library_init : not found Checking for header openssl/crypto.h : not found /home/odin/node-v0.6.14/wscript:374: error: Could not autodetect OpenSSL support. Make sure OpenSSL development packages are ...
$ apt-get install libssl-dev
make �� make install �B
$ make $ sudo make install
node �R�}���h�����s���Ă݂܂��B
$ node > 3 + 5 8 > var a = 3; undefined > console.log(a); 3 undefined
����ŏI���ł��B