120418 tokyo node5_lin_qonnodejs
TRANSCRIPT
東京Node学園 5時限目 LT @tanaka_733
Twitter: @tanaka_733
お仕事 ◦ Node.js でアプリ書いたり
◦ Javaのライブラリ作ったり
◦ Rubyのコード読んでいじったりしてます
趣味 ◦ Silverlight/Windows Phone 7 アプリ
◦ Kinect 触ったり
◦ というわけで、趣味ではWindowsユーザーです
ブログ: 銀の光と碧い空
2012/04/18 東京Node学園 5時限目 LT
Nodeをまっとうに始めたのが昨年末
boundio を操作するAPI nBoundio を作ったり ◦ REST API1つだけだけど。。。 ◦ https://github.com/tanaka-takayoshi/nBoundio
Linq にpull request 出したり ◦ https://github.com/mihaifm/linq/pull/2
OSコマンドを叩くNodeアプリ作ったり ◦ 微妙にknockout.js 使ってみたり ◦ https://github.com/tanaka-takayoshi/OSTools
細々とgithub上で活動しています
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
で、 LINQってなに?
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
違います・・・
Language INtegrated Query
.NET Framework 3.5 より導入
様々な種類のデータ集合に対して標準化された方法でデータを問い合わせることを可能にする、言語に統合された機能
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
linq.js - LINQ for JavaScript ◦ http://linqjs.codeplex.com/ ◦作: neuecc さん Microsoft MVP for C# http://neue.cc/2011/08/22_340.html
◦ jQuery対応版とかも含まれてるよ
CodeplexはMS系のOSSホスティング ◦Gitにも対応したよ!
2012/04/18 東京Node学園 5時限目 LT
npm版あります ◦ https://github.com/mihaifm/linq
これで、 ◦ npm install linq
で使えます!
サンプルの実行は ◦ node sample¥tutorial.js
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
JavaScript なのに UpperCamelなのは、 neucc さんご本人も後悔してました・・・
Enumerableをグローバルオブジェクト から外したため、 文字列での解釈ができなかった。
.Where("this.From($).Distinct('$.Value').Count() == 5") ◦ Sample¥tutorial.js L173
Lambdaをバインドすることで対応しています ◦ return new Function("$,$$,$$$,$$$$", "ret
urn " + expression).bind(Enumerable);
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
出力結果: 0:1 1:2 2:3
範囲指定で、 列挙を作成
列挙の要素:value 位置:index を引数に取る関数を作用させる。 ラムダ式を文字列でも渡せる
2012/04/18 東京Node学園 5時限目 LT
出力結果: 商品A:品川 商品A:新宿 商品B:丸の内 商品C:ほむほむ
第2引数で、inner のkeyを指定 第3引数で、outer のkeyを指定 Keyが等しいものでJoinした結果に作用させる関数が第4引数
2012/04/18 東京Node学園 5時限目 LT
2012/04/18 東京Node学園 5時限目 LT
偶数の時はcontinue で処理をスキップ 6より大きくなったら処理を中断して、ループを抜ける
出力結果: 1:foo 3:foo 5:foo
2012/04/18 東京Node学園 5時限目 LT
ToInfinity で無限リストを作成! =>これを実行できるということは遅延リストになっている
出力結果: 57
Reactive Extension というものもあったり ◦ LINQがデータ操作のクエリ化であるのに対し
Rxはイベントのクエリ化
これもJavaScript版があります ◦ http://msdn.microsoft.com/en-us/data/gg577609
◦ このページはRx全体のページです
そして、最初からnpm版も ◦ http://search.npmjs.org/#/rx
2012/04/18 東京Node学園 5時限目 LT