学んだことまとめ 2011/10/31〜11/4 このエントリをはてなブックマークに登録

2011年11月09日

もりもりもりもり / , , ,

まえがき

久方ぶりの、もりもりです。

         ,. -‐””'””¨¨¨ヽ
         (.___,,,… -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |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 向きの機能ですね。


ruby の Digest のベンチマークを取ってみた

  • SHA2 が結構遅い。SHA1 と 倍くらい違う
  • SHA2 と SHA256 は同じ結果になるのに、なぜか結構差が出る
  • 1.9.3-p0 は REE-2011.03 より 2 割くらい速い

現在開発中のサービス内で使うワンタイムトークンの生成に使うハッシュ関数を、どれにしようかと迷って調べてみました。
SHA2 と SHA256 で差がでるのは、SHA256 で呼び出すと C のコードが直接実行されるけど、SHA2 で呼び出すと ruby のコードが間に入るからってことですかね。


PDF <=> JPEG 変換ベンチマーク

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 にダウングレードするのが今のところ正解なんでしょうか。。。


rbenvruby-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 だった

残念です。


HTML5TEST

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を使うことにしたようです。


ErikDubbelboer/phpRedisAdmin – GitHub

最近 Redis を使うことが増えてきたので、開発用に使う管理ツールを探してみました。

あとがき

来週の当番はいっしーです。ご期待ください。
(と、プレッシャーをかけておく)

クレイについてもっと知りたい方は…

  1. クレイの3つの強みを見てみる。
  2. WEBシステムのことなら何でもご相談ください。

「いいね!」で応援よろしくお願いします!

このエントリーに対するコメント

コメントはまだありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


トラックバック

we use!!Ruby on RailsAmazon Web Services

このページの先頭へ