ブックマーク / shokai.org (4)

  • 橋本商会 » NodeにLindaを実装した

    艦これの冬のイベントやりながらcoffee書いてたらLindaができた。おかげで三隈大和大鳳以外全部集まったけどコミケに行けなかった。 前にRubyで実装したこれ Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした を Node+Socket.IOで実装しなおした。 https://npmjs.org/package/linda-socket.io RubyよりNode+coffeeの方が並列処理書きやすい。特に体よりもテスト、coffee+asyncにだいぶ助けられた。あとなんだかんだでEventMachineに気を使って書くのが疲れる。 Node版はタプルに配列が使えないようにした。全部Object(hash)にした。流れているデータを読んで意味がわかりにくいのと、request-response形式で返すタイプの時にマッチングがしにくいため

    rrreeeyyy
    rrreeeyyy 2014/01/06
  • 橋本商会 » Ruby初級入門という勉強会やりました

    まず全員Ruby2.0.0をインストールさせつつ、俺がRubyの色々なことを紹介したり、ライブコーディングした。 今日の資料です Rubyそこそこ使ったことある人と全く使ったこと無い人が半々だった。 使ったことある人は前半がためになったとのこと。 ない人は後半のArrayやHashにsortやuniqやreverseなどをチェーンしていったり、mixやmaxやfindなど痒い所に手がとどくの良かったようだ。 スライドを前日からtwitterで公開していたら、@shigeyas先生からgem紹介にpryとawesome_printがあったほうがいいのでは、というツッコミがあって追加した。 「gemの使い方を調べる」のところでpryとawesome_printを使って色々調べるのも追加した。 教育体験のせいで1時間以上のスライドでも3時間ぐらいあれば作れるようになってしまった。 実演 最後にぶ

    橋本商会 » Ruby初級入門という勉強会やりました
    rrreeeyyy
    rrreeeyyy 2013/07/23
  • 橋本商会 » RubyのlambdaやProcとblock渡しとコールバック関数

    先日のRuby初級入門2013で事前に「Rubylambdaとかblockとか教えて」と言われていたけど、どうみても初心者向けの内容ではないので無視していたので解説する lambda{ コード }とProc.new{ コード }の差がよくわからない ここ読め RubylambdaとProcの違いは? – QA@IT rubylambdaとprocの比較実験 – Qiita [キータ] まとめると 内部でreturnした時と、引数の数が違うときの挙動が違うそうです block渡しを使ったイベント登録について do 〜 endブロックで渡された処理はすぐにyieldで返さなくてもいい block渡しを受け取れる関数を宣言する方法 例えば、フィボナッチ数列を次々と生成する場合を考える。 フィボナッチ数列は無限に続くので、計算が終わらない。 無限に終わらない処理は結果をreturnで返せない

    rrreeeyyy
    rrreeeyyy 2013/07/19
  • 橋本商会 » Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした

    Lindaは1990年ごろに出来た言語。 タプルスペースという共有メモリ空間でタプル(オブジェクト)を共有して、in/out/rd/inp/rdpという命令で操作する事で大抵の並列処理が記述できるという物。 仕様は単純なんだけどセマフォなどのロック機構やジョブキューも超簡単に記述できる。いわば分散並列処理のための最小セット。 既にCやJavaの実装があり、Rubyでも咳さんのRindaがある。 で、今回作ったLinda gemではタプルのマッチング判定とオンメモリのタプルスペースの読み書き機能と、それぞれのテストコードしか実装されていない。 複数のプロセスからタプルスペースに接続して読み書きする機能は実装されていない。 マッチングは配列タプルは要素の前方一致、Hashタプルは自身のKeyとValueが相手に全部含まれていればtrueとしている。 Linda RocketIO Linda g

    rrreeeyyy
    rrreeeyyy 2013/05/27
  • 1