120418 tokyo node5_lin_qonnodejs

19
東京Node学園 5時限目 LT @tanaka_733

Upload: -

Post on 24-May-2015

376 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: 120418 tokyo node5_lin_qonnodejs

東京Node学園 5時限目 LT @tanaka_733

Page 2: 120418 tokyo node5_lin_qonnodejs

Twitter: @tanaka_733

お仕事 ◦ Node.js でアプリ書いたり

◦ Javaのライブラリ作ったり

◦ Rubyのコード読んでいじったりしてます

趣味 ◦ Silverlight/Windows Phone 7 アプリ

◦ Kinect 触ったり

◦ というわけで、趣味ではWindowsユーザーです

ブログ: 銀の光と碧い空

2012/04/18 東京Node学園 5時限目 LT

Page 3: 120418 tokyo node5_lin_qonnodejs

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

Page 4: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

で、 LINQってなに?

Page 5: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

Page 6: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

違います・・・

Page 7: 120418 tokyo node5_lin_qonnodejs

Language INtegrated Query

.NET Framework 3.5 より導入

様々な種類のデータ集合に対して標準化された方法でデータを問い合わせることを可能にする、言語に統合された機能

2012/04/18 東京Node学園 5時限目 LT

Page 8: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

Page 9: 120418 tokyo node5_lin_qonnodejs

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

Page 10: 120418 tokyo node5_lin_qonnodejs

npm版あります ◦ https://github.com/mihaifm/linq

これで、 ◦ npm install linq

で使えます!

サンプルの実行は ◦ node sample¥tutorial.js

2012/04/18 東京Node学園 5時限目 LT

Page 11: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

JavaScript なのに UpperCamelなのは、 neucc さんご本人も後悔してました・・・

Page 12: 120418 tokyo node5_lin_qonnodejs

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

Page 13: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

Page 14: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

出力結果: 0:1 1:2 2:3

範囲指定で、 列挙を作成

列挙の要素:value 位置:index を引数に取る関数を作用させる。 ラムダ式を文字列でも渡せる

Page 15: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

出力結果: 商品A:品川 商品A:新宿 商品B:丸の内 商品C:ほむほむ

第2引数で、inner のkeyを指定 第3引数で、outer のkeyを指定 Keyが等しいものでJoinした結果に作用させる関数が第4引数

Page 16: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

Page 17: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

偶数の時はcontinue で処理をスキップ 6より大きくなったら処理を中断して、ループを抜ける

出力結果: 1:foo 3:foo 5:foo

Page 18: 120418 tokyo node5_lin_qonnodejs

2012/04/18 東京Node学園 5時限目 LT

ToInfinity で無限リストを作成! =>これを実行できるということは遅延リストになっている

出力結果: 57

Page 19: 120418 tokyo node5_lin_qonnodejs

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