VIOPSで発表

参考
id:syuu1228さんやid:koichiiseさんに会って色々話したり,知らない人とも交流ができてとても楽しかったです.皆さんありがとうございました.
スライドはslideshareに上げたけれども,何故かフォーマットがおかしくなってるようです.あしからず.

『仮想化インフラワークショップ04 〜クラウドDAY〜』にて発表します

 招待講演という形で、「現役高校生が実装するSkip Graph with Erlang」と題した発表を行うことになりました。P2P構造化オーバーレイネットワークの一つであるSkip Graphと並列プログラミング言語Erlangについて話す予定です。

16:20-17:20  詳解!クラウド技術 〜システム構造から見る技術理解〜
B: 現役高校生が実装するSkip Graph with Erlang (千々和 大輝 氏)
 今年のInterop2009クラウドコンピューティングコンペティションに応募し、最終選考を通過してライブデモを実施した「範囲検索ができるキーバリュー型データストア」は、Skip GraphアルゴリズムErlangという並列処理用関数型で実装したシステムである。本セッションではこの実装を行なった本人である現役高校1年生の千々和大輝氏によるシステムや実装について解説する。
http://www.viops.jp/viops-meetings/viops-4-workshop.html

 NTTコミュニケーションズ株式会社や株式会社ライブドア、ヴイエムウェア株式会社などの大手企業の方々によるクラウドコンピューティング最新動向や管理手法に関する講演も行われるようなので、この辺の技術を本気で勉強したい人は是非参加してみると良いと思います。
 自分は18:00から行われる懇親会にも参加する予定なので、見かけたら声を掛けてもらえると嬉しいです。

日 時: 09年12月11日(金) 10:00〜17:30 (開場 9:30)
場 所: 横浜市港北区日吉4-1-1 慶應義塾協生館2F 藤原洋記念ホール
     慶應義塾協生館東急東横線東急目黒線 日吉駅より徒歩1分
     横浜市営地下鉄グリーンライン 日吉駅より徒歩1分
http://www.viops.jp/viops-meetings/viops-4-workshop.html

セキュリティ&プログラミングキャンプ2009

言語組に参加してきました。
僕は『Ruby1.9GCにおける効率的なメモリ管理』というのをやりましたが、それはまた別のエントリーで。

キャンプ中の様子は既に色々なブログでまとめられているので、キャンプで出会った人たちとの思い出の一部を書きます。

  • ぱすた(id:Pasta-K)
    • 会った瞬間、ぱすただと分かった
    • 結構おもしろい
    • Ruby1.9処理系をいじって、if文の条件分岐時のbooleanにより音を鳴らすというハックをしていた
    • Endeavorほしい
  • ういさん(id:uiureo)
    • ぱすたと一緒に来た。新幹線が一緒だったみたい
    • イメージとは全然違う人だった
    • Rubyにinf予約語を追加するハックをしていた
    • Macうらやましい
  • まんでるさん(id:mandel59)
    • Linux
    • pastakとuiureoが来る前から一緒に話してた
    • 会社見学のバスの中でも隣だったので、修学旅行のこととか話した
    • Linuxカーネルをいじって、非推奨ロックを使用している部分を修正してた
    • 集合写真撮るとき肩を組んだ
  • 井上さん(id:InoHiro)
    • 髪型で分かった
    • 筑波ACの面白い人
    • Ruby1.9にheapサイズを変更するオプションを追加してた
    • Erlangはやってたほうがいいよ。」
  • 稲付さん
    • 結構無口な人
    • 課題を一緒にやった
    • キーボード打つのが速くて、カーソルの移動は行番号指定
    • vimを使わせるとすごいことになりそう
  • 矢口さん(id:yayugu)
  • 長田さん
    • 演算子メソッド名に全角が使えない問題を修正した
    • あまり話せなくて残念だった
  • 金井くん(id:CanI)
    • 中学3年生
    • これまた面白い人
    • pastakよりも背が高かった
    • 計算上定数となるマクロを変数に格納してRuby1.9処理系を高速化
  • 徳網さん(id:pokutuna)
    • 自称、笑顔がチャームポイントな人
    • かなりセキュアなオプションを追加
    • いろいろ喋った
  • 林さん(id:takuto_h)
    • Cyanの作者
    • 筑波大ACを受験するらしい
    • 文法追加の課題を選択するだろうと思っていたら、パフォーマンス向上の課題だった
    • not-equalの条件分岐のバグを修正して高速化

時間の都合で書けませんでしたが、他の参加者や講師、チューターの方々にも色々教えてもらいました。
ありがとうございました。

      • -

余談ですが、id:yuzuharaさんとid:InoHiroさんに筑波大AC受験のコツを、id:nishiohirokazuさんに未踏ユース応募のコツを教えてもらいました。
がんばります><

8/22にdFukuoka分散処理勉強会を開催

http://sites.google.com/site/dfukuoka41/

分散処理技術全般に関する勉強会です。
現在世界中に注目されているクラウドコンピューティングやノード間の協調を容易にするRPCなど、様々なテーマを扱っています。

   ・クラウドコンピューティング
   ・分散ファイルシステム
   ・Key Value Store
   ・P2P
   ・アドホックネットワーク
   ・グリッドコンピューティング
   ・RPC
   ・並列プログラミングモデル
   ・分散リポジトリ
   ・負荷分散
   ・etc....


テーマ: 分散処理全般
日時: 2009/08/22 14:00
場所: 九州工業大学。詳しいこと(部屋番号など)はメールでお知らせします
参加方法: http://sites.google.com/site/dfukuoka41/recuitment


皆さんの参加をお待ちしています。
また、発表者も絶賛募集中です。

耐障害性の高いConsistent Hashingを実装してみる

GitHub - dchiji/Cradle: Consistent Hashing


とあるプロジェクトの一環で作ったプログラムで、突然あるノードが落ちても一瞬でネットワーク再構成/データ復旧することが可能な程度の耐障害性が特徴です。
Consistent Hashingということで、当然のことながらデータ保持時の負荷分散もサポートしています。
実用に耐えるのは難しいかもしれませんが、簡易KVSとして試用しても良いレベルだと思っています。


利用するにはErlang処理系をインストールしておく必要があり、テストにはR12B-5を使用しました。

使用方法

準備

src/dssg.erlをダウンロードして

$ erlc dssg.erl

を実行しておきます。

新規ノードを立ち上げる

start関数を引数無しで呼び出すことにより、新規ノードを立ち上げることができます。
また、ノード追加時に必要なノード名を得るためにnode関数を呼び出します。

$ erl -sname hoge
Erlang (BEAM) emulator version 5.6.5 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
(hoge@daiki-eeepc)1> dssg:start().
true
(hoge@daiki-eeepc)2> node().
'hoge@daiki-eeepc'
ノードの追加

node関数を呼び出して得たノード名(ここでは 'hoge@daiki-eeepc')をstart関数の引数にすることでネットワークにノードを追加することができます。

$ erl -sname foo
Erlang (BEAM) emulator version 5.6.5 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
(foo@daiki-eeepc)1> dssg:start('hoge@daiki-eeepc').
true
データのput/get

ノードを立ち上げた状態でputv(Key, Value)もしくはgetv(Key)を呼び出すことで、値のput/getを行うことができます。

(hoge@daiki-eeepc)3> dssg:putv(a, hogehoge).
{<0.37.0>,
 {put,1337672431590932383376536722780050290890528640001,a,
      hogehoge}}
(hoge@daiki-eeepc)4> dssg:getv(a).          
{ok,{1337672431590932383376536722780050290890528640001,
     hogehoge}}
ノードのleave(終了方法)

^Cをすると

BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
       (v)ersion (k)ill (D)b-tables (d)istribution

と表示されるので、「a」キーをタイプして処理系を終了させます。