まえがき
久方ぶりの、もりもりです。
(.___,,,… -ァァフ| あ…ありのまま 今 起こった事を話すぜ!
|i i| }! }} //|
|l、{ j} /,,ィ//| 『学んだことまとめが当番制になったので毎週更新されると
i|:!ヾ、_ノ/ u {:}//ヘ 思ったらいつのまにか2週間経っていた』
|リ u’ } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ’eラ , タ人 な… 何を言ってるのか わからねーと思うが
/’ ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ 催眠術だとか超スピードだとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
それでは、先週の学んだことまとめです。
まとめ
Ruby, Rails 関連
RSpec Mocks 2.7 – RSpec – Relish によると、stub / mockはそのうちdeprecatedになって消えるとのことなので、doubleを使いましょう。
rr を使えってことかと思ったんですが、rspec 自体に double というメソッドがあるんですね。
capistrano-unicorn
unicornのstart時に、BUNDLE_GEMFILE=#{current_path}/Gemfileを付けてくれない。一度テストしたところ影響が見られなかったが、観察を続ける
こちらの記事の件ですね。
やはり付けないとダメなようで、pull request を送ったとのことです。
capistranoのdeploy/assets
capistrano 2.8以降なら、Capfileの下の行をアンコメントするだけでrake assets:precompileしてくれる
load ‘deploy/assets’
知らずに自分で after ‘deploy:update_code’, ‘deploy:precompile_assets’ なんてやってました。
mongoid の INHERITANCE が便利だった。
ActiveRecord の STI に相当するものですが、これはたしかに MongoDB 向きの機能ですね。
- SHA2 が結構遅い。SHA1 と 倍くらい違う
- SHA2 と SHA256 は同じ結果になるのに、なぜか結構差が出る
- 1.9.3-p0 は REE-2011.03 より 2 割くらい速い
現在開発中のサービス内で使うワンタイムトークンの生成に使うハッシュ関数を、どれにしようかと迷って調べてみました。
SHA2 と SHA256 で差がでるのは、SHA256 で呼び出すと C のコードが直接実行されるけど、SHA2 で呼び出すと ruby のコードが間に入るからってことですかね。
- RMagick で PDF の各ページを JPEG で出力
読み込みに時間がかかる。- QuickMagick で PDF の各ページを JPEG で出力
クイックだから早いかと思ったら、とても遅い。- RMagic で複数の JPEG を 一つの PDF にまとめて出力
pdf → jpgよりだいぶ早い。
JPEG ⇒ PDF が速いのは、PDF のパースにかかるコストが大きいってことですかね。
動作確認環境(integration)を構築しているが、stylesheet_link_tagとjavascript_include_tagがそれぞれ/stylesheets/…と/javascripts/…に展開されてしまうために、ブラウザがcssとjsを取得できない。本来なら両方とも/assets/…になるはず。
config/application.rb に require “sprockets/railtie” が足りなかったようです。
dokipen/ruby-querystring – GitHub
ハッシュからクエリストリングを生成するためのライブラリ。
同名のパラメータが複数あるクエリストリングを生成するのに使った。
- 例
QueryString.stringify({:a => ["hoge", "fuga"]}) #=> a=hoge&a=fuga
オプションによって出力フォーマットを変えられるので、便利そうです。
Ruby 1.9.3-p0 関連
先月末に Ruby 1.9.3-p0 がリリースされました。
先週は日報にも 1.9.3-p0 についていくつか書かれていたので、トピックを分けてみます。
ruby-1.9.3-p0 が出たので RHEL5/6 用の x86/x64 用 RPM を作成
Momonga Linux の spec ファイルをベースに、CentOS 5(x86,x64) / CentOS 6(x64) / Scientific Linux 6(x86) の環境でビルドしたものです。
他にも色々置いてありますが、お使いの際は自己責任でお願いします。
ruby-1.9.3-p0 が出たので早速 rvm upgrade 1.9.2-p290 1.9.3-p0 した
- gemset を引き継ぐところでちょくちょくエラーになる、けど止まらずに最後まで終了。
多数のファイルが 1.9.2-p290 を見るようになったままになっていたので、全 gem を再インストール中、therubyracer のビルドに失敗する。どうやら clang がダメっぽい。- therubyracer のビルド時だけ、一時的に rbconfig.rb の CC と CXX を gcc-4.2 と g++-4.2 に変更してビルドしてみたら通ったけど、こんなんでいいのか・・・?
- なんか色々動かないっぽい。一旦戻すべきか。。。?
- rvm が Xcode 4.2 が入ってる環境では強制的に clang を使うように設定してしまうので、該当部分を llvm-gcc-4.2 を使うように変更してみた。
⇒ rbconfig.rb で gcc-4.2 を使うようにした時とたぶん同じ状態
コンパイラは問題ないけど、ruby 1.9.3 に対応できてない gem がいくつかあるっぽい。
- ruby-debug-base19
ビルドはできるけど、シンボルが見つからなくてロード時点で落ちる- fabrication
spork と組み合わせた時に Fabricate でブロックする- 結局まだ早いってことで 1.9.2-p290 に戻した
rvm が clang を強制する件については、最新のコードでは clang を使わないように変更されていました。
そもそも「Xcode 4.2 users – please be warned – in case of any compilation issues downgrade to Xcode 4.1 and reinstall your rubies.」という警告が出るので、4.1 にダウングレードするのが今のところ正解なんでしょうか。。。
rbenvとruby-buildでruby-1.9.3をインストールする
- configureにオプションを渡すにはCONFIGURE_OPTSを使う
CONFIGURE_OPTS="--enable-shared --with-opt-dir=/usr/local" rbenv install 1.9.3-p0- ruby-debugはlinecache19とruby-debug-baseをrubyforge.orgから(!)ダウンロードしてインストールする
最近は rbenv + ruby-build が流行っているようですね。
ruby-debug-base19 と linecache19 はここにある gem なら 1.9.3-p0 に対応しているようです。
HTML5 関連
LiveMinutes
参考になるかも、と思ったら、肝心の共有部分は Flash だった
【残念です。】
HTML5 API チェッカーもありますね。
HTML5には、ブラウザ(ユーザ)を守りつつcross domain XHRを許可する Cross-Origin Resource Sharing という仕組みがあり、これを利用することでcross domainファイルアップロードが可能になる。
『徹底解説 HTML5 APIガイドブック コミュニケーション系API編』の第3章に詳しく書かれている。
ビジュアル系API編、マークアップガイドブックもオススメです。
iPad だと動画の始まるタイミングがずれるのが再現しない。
- speedlimit
シミュレータで 3G 回線のスピードにしたりできるので便利。
だが再現せず。
HTML5 の video タグでの件なんですが、回線速度ではないとすると、CPU パワーの問題でしょうか。。。
その他
node.jsのredis client
githubで調べたらいっぱいあってどれがいいんだろうか。
https://github.com/mranney/node_redisを使うことにしたようです。
最近 Redis を使うことが増えてきたので、開発用に使う管理ツールを探してみました。
あとがき
来週の当番はいっしーです。ご期待ください。
(と、プレッシャーをかけておく)
このエントリーに対するコメント
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
- トラックバック
「いいね!」で応援よろしくお願いします!