東京Node学園 1時限目 : ATND
var memo = {
opening: [ {
speaker: '@meso',
title: 'ご挨拶 / 5分でわかるNode.js',
contents: [
'http://tng1.mesolabs.com/',
'キーワードはイベント駆動, 非同期(non blocking)',
'簡単に早い非同期サーバが書けるよ!'
]
} ],
main: [ {
speaker: 'masuidrive',
title: 'ECMAScript5時代のJavaScript再入門',
contents: [
'JSON support / map, forEach / Objectの拡張 / strict mode など',
'IE8 はECMA 5にだいぶ遅れてる 使えない子',
'JSLintを使おう SVN, Gitコミット時などにチェック',
{
'非同期処理かきやすい': [
'インデント深くなるのがアレ',
'そこでDeferred',
'エラー処理もイイカンジで書ける'
]
},
{
'ObjectのGetter, Setter': [
'プロパティへの代入、参照のときの処理を指定',
'内部で持つ値を整数値だけにしたりできるよね'
]
},
'freeze, seal アクセス権限の制御など',
'Object.create() プロパティ設定してObject生成?',
'その他 Arrayにイテレータ,Object.ke ys() など便利機能が多数',
{
'Test!': [
'HTTP経由でテストしてると時間かかる',
'Jenkins使ってるひと色々教えて!',
]
}
]
}, {
speaker: '@koichik',
title: '『非同期プログラミングの改善』のエッセンス',
contents: [
'Node本書いてます',
{
'非同期プログラミング': {
'イベントリスナ スタイル' : 'hoge.on("fuga", function())',
'コールバック スタイル' : 'hoge.fuga("piyo", function(err, data))'
}
},
{
'問題': {
'コールバック' : '深いネスト',
'エラーハンドリング' : '例外処理を各コールバック内でやると散在'
}
},
'アクターとコールバックを分離',
'無名関数とコールバックを分離し、コールバックは「次」の無名関数(アクター)を呼ぶ',
'ライブラリ: "フロー制御モジュール"を用意しよう',
'ライブラリ中でArrayで無名関数を保持、順番にメソッドを呼ぶ',
'これでネストと無名関数の問題は解決',
'エラー時のルーティング エラーが起きたら以降の処理を全部すっ飛ばせば良い',
'さらに別のイディオムも。続きは書籍で!'
]
}, {
speaker: '@Jxck_',
title: 'Test It!',
contents: [
{
'nodeのtest': [
'assert: 失敗したらAssertionErrorを吐くよ',
'test framework: それぞれのtest成否を集計する',
]
},
'npm test: common.jsに沿ったtest framework',
{
'should': [
'いわゆるBBD style?',
'Objectのprototypeを利用',
'メソッドチェインでテストが書ける'
],
'expresso': [
'パラレルでtest可能、シリアルでもok',
'coverageもとれる',
'httpサーバのテスト書きやすい'
],
'nodeunit': [
'割と簡単に使えるunittest framework',
'setup, teardown可能',
'基本的には直列実行',
'Sandbox機能'
],
'vows': [
'http://vowsjs.org/',
'非同期なものをテストするのに長けてる',
'topic, batch',
'event emitterをtriggerしてやる',
'@koichikの連載を読むべし'
],
'tobi': [
'ブラウザシミュレート型',
'Test::WWW::Mechanize的な?',
'jQueryセレクタを使ってassertionしたり'
]
},
'その他 sinon, gjslint, node-dev とかもろもろ たくさん'
]
} ],
LT: [ {
speaker: '@hakobera',
title: 'Kinect + node.js + Audio Data API でテルミンみたいな楽器を作る',
contents: [
'kinnectから TCP/IP -> node server -> socket.ioでブラウザに',
'kinnect.js',
'libfreenectのJavaラッパーでRhinoを動かしてその上で実行',
'device side javascript'
]
}, {
speaker: '@ndruger',
title: 'node.jsによるマルチプレイヤーネットワークゲームの可能性',
contents: [
'いきなりデモ',
'クライアント側をいじるだけで同じものが3Dでできたり',
'簡単に作れる時代になってるよ!'
]
} ]
};