Sooey

2013-01-19 06:26:14 +0900

Railsのセッションシークレットトークンをより安全に扱うようにしましょう、という話。

Railsアプリケーションの脆弱性をチェックしてくれるツール brakemanがアップデートして、年末年始にかけてアナウンスされたいくつかのRailsの脆弱性に対応しました。

アップデートしてスキャンしたところ、config.secret_tokenの値がバージョン管理の対象になっているということでHighな警告がされました。

Phusionのブログエントリで5通りほどの対応策とおすすめ度が紹介されていて、5つ目の「環境変数の値があればそれを、なければデフォルト値を」というやつが、おすすめ度は低いけどHerokuで動かすアプリについては都合がよさそうなので採用することにしました。

config/initializers/secret_token.rb

Foo::Application.config.secret_token = ENV['SECRET_TOKEN'] || 'fallback_token_for_development'

のようにして、コマンドラインからHerokuの変数を設定。

$ heroku config:set SECRET_TOKEN=`bundle exec rake secret`

2013-01-12 18:42:22 +0900

Railsプロジェクトに外部のコードに対する依存性を増やす際は、その増えるコードが本当に問題を解決することになるのかよく考えてみよう、という提案。

このエントリで言っている依存性は、gemなどの外部ライブラリのほか、他のプロジェクトからlib/にコピーしたコードや、標準のライブラリをrequireすることも含むみたい。

依存性を減らすことで、Railsの新しいバージョンへのアップデートが容易になり、長期的に見たメンテナンス性も向上するという話。わかりやすい例としてこんな話が書かれていた。

It will also give you less trouble with interdependencies when you try to upgrade. For example: Rails needs Rack 1.4, but Resque requires Sinatra and Sinatra doesn’t run on anything newer than Rack 1.3.

2013-01-11 16:04:10 +0900

2010年の10月からInstagramを使っているユーザーが、その早期のユーザーベース拡大のポイントを4点まとめていた。とくに目新しいことはないけど、記録として。

4 Ways Instagram Hacked Early Growth « Adam Breckler

  1. デフォルトで公開
    • 当時はユーザーの投稿した写真はデフォルトでプライベートにするサービスが多い中、早い段階で公開状態をデフォルトとして選択した
    • これによって、ユーザーはPopularセクションから他のユーザーの写真を探すのが容易になった
  2. 非対称のフォローモデル
    • ユーザー同士のフォローの仕方をFacebook風ではなくTwitter風にしたことが奏功した
    • 面識のないユーザーであってもフォローできることは利用の拡大に繋がった
  3. スピードを武器として使った
    • 写真のアップロードを競合のアプリよりも早いタイミング行うような実装
  4. 複数のSNSをまたいだ投稿
    • TwitterやFacebookなどの既存の巨大ネットワークと連携することで、写真の流通にレバレッジを効かせた