Sooey

2011-02-23 00:56:59 +0900

年末に書いた職場環境に関する記事についてSelfkleptomaniacさんのところで反応をいただき、その中でジョエル・テストなどで有名なジョエル・スポルスキー氏の会社 Fog Creek Softwareの様子が垣間見えるビデオが紹介されていました。

素晴らしいですね。このような環境を贅沢と切り捨てるには、オフィス環境の改善にかかるコストほどにはプログラマの生産性が向上しないことを証明する必要がありそうですが、はたして…。

2011-02-15 13:07:30 +0900

GitHubのdefunktが作ったCIサーバ cijoeは、とても簡単に使えるので小さなプロジェクトではおすすめ(Jenkinsのような充実機能はありません)。

ためしに、巷で話題のamatsuda/kaminariのテストをcijoeで実行してみましょう。

まずはcijoeをインストール。

$ gem install cijoe

手元のSnowLeopard + Ruby 1.9.2だとkaminariのbundle install中にlinecacheのインストールでコケてしまうので、1.8.7を使います。

$ ruby -v
ruby 1.8.7 (2010-12-23 patchlevel 330) [i686-darwin10.5.0]

まず、ビルド対象のリポジトリをローカルに持ってきて、rake specが成功するところまで確認します。

$ git clone https://github.com/amatsuda/kaminari.git
$ cd kaminari
$ bundle install --path vendor/bundle
$ rake spec
...
95 examples, 0 failures

無事にテストが成功したので、cijoeでのビルド時に実行するコマンドをgit configで設定します。

$ git config --add cijoe.runner "rake -s spec"

cijoeコマンドの引数にワーキングコピーのパスを指定して起動します。

$ cijoe .
$ open http://localhost:4567/

ブラウザでhttp://localhost:4567/にアクセスすると、以下のようなページが表示されます。Octocat!

Continuous Integration with CI Joe | Flickr - Photo Sharing!

Buildボタンを押すとHEADが指すコミットに対してビルドが実行されます。適当に待ってからページをリロードしましょう。

Continuous Integration with CI Joe (Success!) | Flickr - Photo Sharing!

workedと表示され、無事にテストが成功しました。素晴らしいシンプルさ!

masterブランチ以外を対象にビルドしたい場合は以下のようにcijoe.branchを設定しておきます。

$ git config --add cijoe.branch deploy

他にもいくつか設定ができるので、README.mdをよく読んでお使いください。

2011-02-14 18:51:42 +0900

Railsのconfig/locale/*.ymlgreeting: 'hello %{object}'のようにするとハマるという話。

Railsでメッセージを国際化するためにconfig/locale/*.ymlを用意する際、

greeting: 'hello %{object}'

のようにInterpolationのキーにobjectという文字列を使うと、

I18n.t 'greeting', :object => 'world'

というコードを実行しても値が置換されません。i18n gemソースを読んでみたところ、以下のようにいくつかのキーが予約されており、tメソッド(translateメソッド)のオプションに含まれていた場合に値が除去されるようになっていました。

RESERVED_KEYS = [:scope, :default, :separator, :resolve, :object, :fallback, :format, :cascade, :raise, :rescue_format]

いつかまたハマりそうなので残しておきます。

2011-02-11 20:36:14 +0900

PinboardのファウンダーであるMaciej Ceglowskiさん(ポーランドの方ですね)へのインタビュー。

短めのインタビューなのでサラッと読めると思いますが、アプリケーションのパフォーマンスを上げるために心がけていることのうち以下の2点が目を引きました。

  • Use caching as a last resort, not as a fundamental design strategy. It's 2011 - unless you have millions of users, your app should be able to run fast with all caches disabled.
  • Use frameworks for prototyping, but build from the ground up once you know what you're building.

キャッシュ機構は最後の手段として設計のベースには含めておかないことと、フレームワークを使うのはプロトタイピングまで(実装すべきものが見えたら一から作る)、と。

Maciej Ceglowski | CrunchBase Profile