2日目も参加。国際会館駅についたのがぎりぎりになってしまったので、一番はじめの途中から入ってしまった。ちょっとこれはもったいなかった。あと英語があんまり頭に入らなくて、ちょっとこれはやばいと思うのでなにかせねば。
とりあえずSutureとScrawlsはチェックしておこう。
あと丸善ジュンク堂ブースでみんなのGo言語【現場で使える実践テクニック】を購入。
- 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太,稲葉貴洋
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/09
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Fearlessly Refactoring Legacy Ruby
- Justin Searls
- 途中から入った……
- testdouble/suture: 🏥 A Ruby gem that helps you refactor your legacy code
- Guided Rose Kata
- いくつかのテストに関するものを総合的にあつかえるgem
How to create bindings 2016
- Kouhei Sutou
- Binding?
- Demo
- 拡張ライブラリ
- Cで書かれたRubyライブラリ
- Libffi
- 手書きや自動生成での拡張ライブラリの説明
- 自動で生成しても、使いやすくするためには手で書く必要もある
- 手書きや自動生成のlibffi
- 自動生成の違い
- OSS gateとClearcode boothの宣伝
- 速度面はどうか?
- C++のクラスとか構造体とかをマッピングするときはどうするの?
- GIで面倒見てくれる
- rubyから数値配列つくるときは自動変換してくれる?
- それらも自動変換してくれる
- Macでもつかえる?
- 使えます 例:rabbit
- GIだと登場人物増えるけどトラブルシューティング大変じゃない?
- 私ぐらいになると大丈夫(どっ)
- CとRubyと元の
- SWIGも建前上は全言語いけるのでは?
- 現実的には各言語のCライブラリつかわないとつらいものもある
- GIの場合は動的に作られる=>でかい場合はロードに時間がかかる?
- でかいgtk3ですぐ
- 速度は?
- Giだと結構オーバーヘッド食う
- GIを覚えるコストはどのくらい?
- rdocのフォーマット覚える程度なので軽いと思う
How DSL works on Ruby
- SHIBATA Hiroshi
- rake
- make like
- DSL
- DSL in gem
- rakeのコードリーディング
- capistranoはrakeを継承 => capistranoはrake拡張(capistrano3から)
- Thorはrake関係なし
- Thorクラスの中にDSL関連の実装を詰め込んでいる
- Bundler
- Rakeの話
- DSLのつらさを改善するtips的なこととかアドバイスあるか?
Learn Programming Essence from Ruby patches
- Mitsutaka Mimura
- プログラミングの知識
- 言語仕様やライブラリの使い方
- アルゴリズムとか
- これらの勉強の仕方は?
- 本を読む
- 実プロジェクトと教科書との乖離
- Programming Technics
- 本を読む
- これらの勉強の仕方は?
- パッチを読んで勉強!
- Why patch?
- コードベースが小さい(対象箇所わかりやすい)
- コミットメッセージなどの情報がある
- わかるところが選択できる
- パッチでライブラリの使い方やアルゴリズムもわかる!
- Why patch?
- Rubyのパッチを読もう => 多少はRubyの中身をしらないと大変
- Ruby Under a Microscope
- doc/extention.rdoc
- slide
- Example
- st_tableに対するパッチ
- Hashを作ったときなど大事な構造体
- hashのキーが衝突する場合 => Rubyだとチェイン法をつかっている
- そのためのst_table_entry内のnext
- パッチではオープンアドレッシングに変更
- st_tableに対するパッチ
- パッチ単体だと動きがみえないときもありそう
Web Server Concurrency Architecture
- Kirk Haines
- Web Server
- Shellでも作れる
- Scrawls
- Pluggable IO Engine
- Pluggable HTTP parsing
- Single Threadでもベンチの結果はわるくない
- ネットワークのレイテンシも短いし、この結果だけだと落とし穴がある
- Concurrency
- Multiprocessing
- 実装はシンプル
- プロセスの管理大変、リソース共有も大変
- Mutlithreading
- 管理は楽でライトウェイと
- ロックの問題とかThreadは難しい
- そのあたりはいっぱい記事あるのでそっち読んで
- Event Driven
- はやいしリソースにもやさしい
- 不利な点を聞き逃した
- 多分一般的に言われてるやつ
- Multiprocessing
- 他のRubyウェブサーバを説明
- 細かい数値がおおかったので、資料として公開してもらえるといいな
- 話としては基礎的なところからWebサーバにおけるConcurrencyを説明、Scrawlsでそれの違いを数値として表してみるというところ
Pwrake: Distributed Workflow Engine based on Rake
- Masahiro TANAKA
- NArrayの作者
- 今年になって進捗あり
- Pwrake
- rake拡張
- 並列分散して実行
- 例:天文での画像
- 複数の画像を連結して一つの宇宙の画像にする
- 並列で処理できる
- ワークフローを記述する言語
- Rakeのいいところ
- Pwrake
- Master nodeとWorker node
- ThreadとFiber
- ThreadはやはりややこしいのでFiberを使うようにした
- 非同期IOが必要……
- File sharing
- NFSなども検討してGfarmFile Systemを採用
- 計算ノードのローカルストレージを束ねる
- Meta Data Serverがスケーラブルでない
- ここでこけそうな
- NFSなども検討してGfarmFile Systemを採用
- ローカリティを考えたスケジューリング
- IOで別ノードのファイルを読んだり、書いたりすると遅くなっちゃう
- DAGを使ってグラフを分割、ローカリティを上げる
- 提案手法で何もしない場合より性能があがった
- 耐障害性
- Master失敗だと再実行
- Workerは落ちてもワークフロー全体は止めない
- 別のノードで実行
- あるノードで実行に失敗しつづければ、障害発生として別ノードで実行
- 採用例
- Inputがファイルに特化している?
- その通り
- 各ノードの生存はどうやって監視している?
- 監視はしていない
- 一つだけ処理失敗したときのとかは?
- そこまででとまる
- Gfarm File Systemがなくても動く?
- 動きます
Modern Black Mages Fighting in the Real World
- Satoshi "moris" Tagomori
- メタプログラミングのユースケース
- fluentd
- OSSのログコレクター
- ロゴがかわった(目立たせるため)
- 黒魔術
- 例の黒魔術師
- v0.14でネームスペースがかわった
- クラスヒエラルキーが綺麗に整理された
- 0.12ではクラスによってemitメソッド内の呼び出しがことなる!
- ややこしい
- 非常に問題が多い
- 3rdパーティのプラグインがfluentdのコアを直接呼び出す
- fluentd側で処理がやりにくい
- ドキュメントも書きにくい
- 3rdパーティのプラグインがfluentdのコアを直接呼び出す
- 0.14
- エントリーポイントを分割する
- コアのメソッドを上書きさせない
- コールスタックが一本道になる
- エントリーポイントを分割する
- 0.12でのプラグインはどうするか?
- そのまま動く必要がある => 死
- 0.12が動くコンパチビリティーレイヤーを用意
- コンパチビリティーレイヤーで3rdパーティの呼び出してるメソッドを判定して切り替える
- 黒魔術!
- moduleを動的に生成してemitメソッドをはやす
- あるメソッドの前後ろにフックをつけられるようmoduleをincludeしたりextendしたりする
- pluginのlifecycle
- Module::Prepend
- singleton_classをさらにprependする => 真っ先に呼び出されるメソッドができる
- 正直よくない!
- v0.14用のプラグインにバージョンアップを心がけてください
- ただユーザに不利益を被ることはあってはならないので、黒魔術でもなんでもやる
- 呼び出しは複雑、あれを設計するときどうした?
- 図を書き出した、そもそも0.12の動作について理解ができてなかったので書き出した
- OSSとか後方互換性がんがんこわしていくこともあるけど、プラグイン書き直しと考えることは?
- 0.14の機能を0.12にバックポートすることは?
- そもそも機能を増やすのが無理だったので、バックポートはできない
- 性能への影響は無視できる
- 無視できる
SciRuby Machine Learning Current Status and Future
- Kenta Murata
- enumerable-statistics.gem
- ベンチがめっちゃはやい、すごい
- Rubyで機械学習したい => Rubyでデータサイエンスをしたい
- SciRuby開発したい人来てください
- 機械学習、なぜ?
- データからビジネスの意思決定したい
- データがでかくなってきたので、機械学習で傾向を知りたい
- いくつかライブラリはある
- liblinear
- rb-libsvm
- decistiontree
- 実用にはほど遠い
- real world Machine Learning
- データでかい、欠損値ある、どのアルゴリズムがあうのかわからない、比較しないといけない
- Scikit-learn
- Future SciRuby
- Scikit-learnのようにしたい
- 直接Scikit-learnそのものを使えるようにする
- Juliaの例
- 直接Scikit-learnそのものを使えるようにする
- Scikit-learnのようなものを作る
- 難しい
- Cython-like systemが必要
- rebex
- Numerical array
- Scikit-learnのようにしたい
- いろいろ活動しはじめているので、参加してください
おまけ
今日も美味しかったです。