自分メモを実況する試み。
「有益なことは書きません」みたいなエクスキューズがある記事はたいてい有益だったりしますが、僕のこのメモは本当に有益なことは書きませんよ。
Chef
- エンジンヤ〜ド
- いろんな種類のサーバがいる
- AWS - EC2, EBS local Vagrant(production <- staging)
- /data -> /data snapshot
- これが典型的
- App を増やす
- Chef
- 最初はAMI, AppにはNginx, Unicorn/PHP, ...
- chefを用いればnginxのバージョンを指定できる
- デプロイユーザを作る
- database.yml/memchache.yml をChefテンプレートで作る, source で元のテンプレートを指定できる、とくべつなAttributeも指定できる
- chef solo 使う
- キャッシュsvが二ついる
- あらゆる変更をまずステージングに適用して、プロダクションに反映
- Code deployment
- 開発
- Mac上に同じだけVMを作る
- VirtualBox 便利
- vagrant box コマンド
- chef soloをプロビジョナに指定
- chef recipeが、ベーグラントにも本番にも使えるよ
- githubとかで指摘し合えるよ
- attirubutes jsonとかIPとかいろいろ指定できる
- 設定をいじるのがローカルでできる(ので好きな環境、好きなエディタでできる)、(って言った?)
- box探し方
- トークのために作ったボックス http://crigor.com/rubykaigi/ veewee便利
- alternatives VMWare?
- あとはEYの宣伝
RubyMotion
- RubyMotionとは
- めっちゃ使われてます
- Basecamp - 37signals, RubyMotionが無かったらリリースできなかったわ〜
- Pragprogにあるよ
- Rubymotionによるラッパ一覧のページがある
- your favorite editor is vim
- you can use emacs if you want :)
- RubyMine benri
- cocoapods is benri - 1599 pods結構多い
- demo - ルビーモーションを使った際のワークフロー
- スタック
- Objective-C も動的, RubyMotionはruntimeそのものの上で実行(ブリッジではない)
- RubyMotionのオブジェクトはそのまんまObj-Cのオブジェクトだよ、なので相互実行がものすごく楽
- 一部RubyオブジェクトはNSのやつを継承
- GVLないよ!
- Grand Central Dispatch, thread扱いが楽い
- コンパイラ
- スライド見た方がいい感じ
- AST を作る(ルビーの配列で表現できる、ripper)
- LLVM IR
- https://twitter.com/ainame/status/339978413802680320
- ASTとLLVM-IRのコードを交互に見続けるのがつらいw
- アセンブリ〜
JRuby
- JVM が進歩するとJRubyも進歩して便利
- 1.7.0 めっちゃはやい
- JVMを直すように言う、直るのを待つ、最適化、のループ
- JRubyのベンチのご紹介、rbxやRuby C-extより高速(Java extやばいw)
- JVMのリリースには時間がかかるので、進歩し続けないと
- Next major release
- Ruby2(現状の1.8, 1.9サポート), Java7 / modularity
- 2014年春かな
- バージョン名、JRuby 9000(9k) くるー
- またIR / Intermediate Representation
- ASTは最適化にはプア
- やっぱりスライド見ればいい事例になってしまった
- 別実装の工夫がたくさん見られてよい会議だ
- GSoc -> Dalvikコード生成をやるプロジェクトがある
- IR化の現状、1.8/1.9のテストはグリーン、JITバイトコードを部分的に生成
- 起動が遅い、IRインタプリタもそんなに早くない、JITをより早くできるはず
- 起動高速化のためにいろいろ工夫している。。。IR文字列を保存するとか
- メソッド本体の遅延読み込み、割と定義されても使われないメソッドって多い
- Nailgun JVM
- C API やめろ, FFI フィッフィ 便利(JRuby team でメンテ) or XNI を実装している、実験的
- 同時実行性
- Ruboto, Shoes 4 RSence ちゃんと作る気あるらしい(Google SoC 2013)
Ruby's root
- rootおじさんだ。。。
- Rubyに関わる基幹っぽいサーバ群のルート権限がある
- コミット権の取り方説明、便利。電子署名難しかった
- Github ruby/ruby, たとえば document 直すプルリクしてもいいんだよ
- ci.hsbt.org すてき
- padrino-framework 青いんだぜ!!!!!!!!!1
- ruby-lang.org のroot権限
- stable の tarball の切り替え...マジで鯖管業務だ
- FTPの鯖管
- MLの管理
- Rubyist magazine
- ルビマのルビー更新業務、HikiのRack化、記事あるよ
- bugs.ruby-lang.org
- asakusarbでメンティナンス, debian, system ruby, rails
- ML連携機能を最新のRedmineで動くようにする
- big news
- ruby-lang.org のRadiant CMS -> Jekyllllllllになった
- 承認お願いします
- postmodernさんじゃないっすか https://github.com/ruby/www.ruby-lang.org/
- mina つこうてみた(fork依存はあるけど良い)
- ruby-lang org 各言語メンテナ募集
- 日本語もなんとかしてくれ、ライブラリ、インストール
Bundler
- heroku本β版
- コミュニティっぽい人だ
- 1.0時代
- sinatra一個で17秒
- SpecFetcher でspec一覧を取ってくる
- 1.2MB ある
- Marshal されたルビーオブジェクト
- Gem Specifications
- ram 足りねーwww
- 1.2時代
- 高速
- gemcutter API endpoint
- 必要なgemを取る、その依存情報をぶん回す、最終的に全部解消される
- DEBUG=1
- rubygems.org was a 1 box
- down、bundler APIのトラフィックばかり
- bundler API を止める
- API endpoint, Sync code by polling, webhooks
- TABELS rubygems versions dependencies, スーパークエリジョイン
- 新しいgemをキャッシュする
- yankされたgemをマークする
- 自作のコンシューマープーリング
- bundler-api on github
- 利用サービス紹介
- PagerDuty - また電話か!
- papertrail
- Librato
- skylight.io
Refinements
- 利用者すくなっ→「意外といる」
- 2.1 で警告消すかも
- Refinementsとは
- toplevelだけのusing
- 互換性の保持のために使えるけど、「互換性のためにrefinementsができたのにrefinementsは互換性が保証されない!」ウッ
- 昔の挙動をリファインヌする
- 内部ディーエスエルをハッキーにしたい
- packrat parser - 一つ一つがモナド
- モナドについてはHaskell guy に聞け
- PEGパーサの例
- RaddDjur
- ルビー内部ディーエスエル事例
- bind >>=
- ret
- モナドだ
- こっからがリファインメント
- ルby組み込みオブジェクトと文法をハックして、DSLのように使えるようにしたい。String, Symbol, Range
- ファイル単位でアクティベーーーション
- ブロック単位でアクティベートしたかった
- instance_eval の引数にusingオプションをアレする
- instance_evalがすごい突飛感→DSLによく使うし。。。selfを切り替えるんだからいいのでは
- 可読性のヤバさ: やばい
- パフォーマンスあっ