東京Node学園 5時限目 LT
       @tanaka_733
   Twitter: @tanaka_733
   お仕事
    ◦ Node.js でアプリ書いたり
    ◦ Javaのライブラリ作ったり
    ◦ Rubyのコード読んでいじったりしてます
   趣味
    ◦ Silverlight/Windows Phone 7 アプリ
    ◦ Kinect 触ったり
    ◦ というわけで、趣味ではWindowsユーザーです
   ブログ: 銀の光と碧い空


                           東京Node学園 5時限目 LT   2012/04/18
   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上で活動しています


                                 東京Node学園 5時限目 LT   2012/04/18
で、
LINQってなに?

     東京Node学園 5時限目 LT   2012/04/18
東京Node学園 5時限目 LT
                   2012/04/18
違います・・・
東京Node学園 5時限目 LT
                   2012/04/18
 Language INtegrated Query
 .NET Framework 3.5 より導入

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




              東京Node学園 5時限目 LT   2012/04/18
東京Node学園 5時限目 LT   2012/04/18
 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にも対応したよ!

                       東京Node学園 5時限目 LT   2012/04/18
 npm版あります
◦ https://github.com/mihaifm/linq
 これで、
◦ npm install linq
   で使えます!
 サンプルの実行は
◦ node sample¥tutorial.js


                     東京Node学園 5時限目 LT   2012/04/18
JavaScript なのに UpperCamelなのは、
neucc さんご本人も後悔してました・・・



        東京Node学園 5時限目 LT   2012/04/18
 Enumerableをグローバルオブジェクト
  から外したため、
  文字列での解釈ができなかった。
 .Where("this.From($).Distinct('$.Value')
  .Count() == 5")
    ◦ Sample¥tutorial.js L173
   Lambdaをバインドすることで対応しています
    ◦ return new Function("$,$$,$$$,$$$$", "ret
      urn " + expression).bind(Enumerable);


                           東京Node学園 5時限目 LT   2012/04/18
東京Node学園 5時限目 LT   2012/04/18
範囲指定で、   列挙の要素:value
列挙を作成    位置:index
         を引数に取る関数を作用させる。
         ラムダ式を文字列でも渡せる

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

                    東京Node学園 5時限目 LT   2012/04/18
出力結果:
                  商品A:品川
                  商品A:新宿
                  商品B:丸の内
                  商品C:ほむほむ




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



                     東京Node学園 5時限目 LT   2012/04/18
東京Node学園 5時限目 LT   2012/04/18
出力結果:
                              1:foo
                              3:foo
                              5:foo
偶数の時はcontinue で処理をスキップ
6より大きくなったら処理を中断して、ループを抜ける




                     東京Node学園 5時限目 LT   2012/04/18
出力結果:
                            57


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




                     東京Node学園 5時限目 LT   2012/04/18
   Reactive Extension というものもあったり
    ◦ LINQがデータ操作のクエリ化であるのに対し
      Rxはイベントのクエリ化
   これもJavaScript版があります
    ◦ http://msdn.microsoft.com/en-us/data/gg577609
    ◦ このページはRx全体のページです
   そして、最初からnpm版も
    ◦ http://search.npmjs.org/#/rx




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

120418 tokyo node5_lin_qonnodejs

  • 1.
  • 2.
    Twitter: @tanaka_733  お仕事 ◦ Node.js でアプリ書いたり ◦ Javaのライブラリ作ったり ◦ Rubyのコード読んでいじったりしてます  趣味 ◦ Silverlight/Windows Phone 7 アプリ ◦ Kinect 触ったり ◦ というわけで、趣味ではWindowsユーザーです  ブログ: 銀の光と碧い空 東京Node学園 5時限目 LT 2012/04/18
  • 3.
    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上で活動しています 東京Node学園 5時限目 LT 2012/04/18
  • 4.
    で、 LINQってなに? 東京Node学園 5時限目 LT 2012/04/18
  • 5.
  • 6.
  • 7.
     Language INtegratedQuery  .NET Framework 3.5 より導入  様々な種類のデータ集合に対して標準 化された方法でデータを問い合わせるこ とを可能にする、言語に統合された機能 東京Node学園 5時限目 LT 2012/04/18
  • 8.
  • 9.
     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にも対応したよ! 東京Node学園 5時限目 LT 2012/04/18
  • 10.
     npm版あります ◦ https://github.com/mihaifm/linq これで、 ◦ npm install linq で使えます!  サンプルの実行は ◦ node sample¥tutorial.js 東京Node学園 5時限目 LT 2012/04/18
  • 11.
    JavaScript なのに UpperCamelなのは、 neuccさんご本人も後悔してました・・・ 東京Node学園 5時限目 LT 2012/04/18
  • 12.
     Enumerableをグローバルオブジェクト から外したため、 文字列での解釈ができなかった。  .Where("this.From($).Distinct('$.Value') .Count() == 5") ◦ Sample¥tutorial.js L173  Lambdaをバインドすることで対応しています ◦ return new Function("$,$$,$$$,$$$$", "ret urn " + expression).bind(Enumerable); 東京Node学園 5時限目 LT 2012/04/18
  • 13.
  • 14.
    範囲指定で、 列挙の要素:value 列挙を作成 位置:index を引数に取る関数を作用させる。 ラムダ式を文字列でも渡せる 出力結果: 0:1 1:2 2:3 東京Node学園 5時限目 LT 2012/04/18
  • 15.
    出力結果: 商品A:品川 商品A:新宿 商品B:丸の内 商品C:ほむほむ 第2引数で、inner のkeyを指定 第3引数で、outer のkeyを指定 Keyが等しいものでJoinした結果に作用させる関数が第4引数 東京Node学園 5時限目 LT 2012/04/18
  • 16.
  • 17.
    出力結果: 1:foo 3:foo 5:foo 偶数の時はcontinue で処理をスキップ 6より大きくなったら処理を中断して、ループを抜ける 東京Node学園 5時限目 LT 2012/04/18
  • 18.
    出力結果: 57 ToInfinity で無限リストを作成! =>これを実行できるということは遅延リストになっている 東京Node学園 5時限目 LT 2012/04/18
  • 19.
    Reactive Extension というものもあったり ◦ LINQがデータ操作のクエリ化であるのに対し Rxはイベントのクエリ化  これもJavaScript版があります ◦ http://msdn.microsoft.com/en-us/data/gg577609 ◦ このページはRx全体のページです  そして、最初からnpm版も ◦ http://search.npmjs.org/#/rx 東京Node学園 5時限目 LT 2012/04/18