タグ

ブックマーク / blog.kyanny.me (8)

  • Single Page Application ではない場合 JavaScript コードのエントリポイントはどこにあるべきか? - @kyanny's blog

    仕事で中規模程度の Rails アプリケーションのコードベースをいじっている。このアプリはもともと app/assets/javascripts 以下に必要に応じて JavaScript ファイルを置き、適当なテンプレートファイルから直接 JavaScript の関数を呼び出したりしていた。ごく普通の Rails アプリである。 このアプリは CMS で、いわゆる「ブログの管理画面」みたいな用途で使われている。一部の機能はそれなりに込み入った UI 操作を必要としページ遷移なしに操作できる必要があるが、旧来のやり方では JavaScript コードの管理が間に合わなくなってきたので部分的に Backbone.js を導入し始めている。 最近悩んでいるのが、 Backbone.js なコードのエントリポイントをどのように呼び出すべきなのか?ということ。そもそも自分が Backbone.js

    Single Page Application ではない場合 JavaScript コードのエントリポイントはどこにあるべきか? - @kyanny's blog
  • rbenv のメカニズム - @kyanny's blog

    rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。

    rbenv のメカニズム - @kyanny's blog
  • Redis の maxmemory-policy について - @kyanny's blog

    Redis をキャッシュストレージとして利用する場合、 maxmemory によって利用可能なメモリの最大値を指定できる。 maxmemory の値を超えるデータの追加が発生した場合の振る舞いを maxmemory-policy によって指定できる。デフォルトの maxmemory-policy は volatile-lru で、 LRU アルゴリズムに従って古いキーの値が優先的に破棄される。 maxmemory-policy は数種類から選べるが、そのうち noeviction を選んだ場合、古いキーの値は破棄されず、新規追加はエラーとなる allkeys-lru または allkeys-random を選んだ場合、 expire の有無に関わらず、全てのキーの中から破棄対象が選ばれる その他を選んだ場合、 expire がセットされているキーのみが破棄対象となる という違いがある。実装

    Redis の maxmemory-policy について - @kyanny's blog
  • Jenkins に bundle update した上で Pull Request させる - @kyanny's blog

    皆さん bundle update してますか?ぼくは忙しさにかまけてついサボりがちなのですが先日何ヶ月ぶりかにやってみたらけっこういろんな gem がアップデートしててヒヤリとしました。 bundle update 忘れは今後もまたやってしまいそうだと思い、なにかこれを解決する方法がないか考えたところ、 マメにやるのは無理。余裕があればやるけど忙しくなったら忘れる。自分の意識が低くなっても破綻しない仕組みを作るべき 差分が小さくても Pull Request を出すのは悪くない。というか Pull Request は毎日全員が見るし放置されにくい bundle outdated の結果をメールするのもお手軽そうだけど、メールなんてどうせ見ない (pendaxes がいい例で、毎朝メールがきても痛くも痒くもない) ということで「Jenkins に毎週 bundle update したブラン

    Jenkins に bundle update した上で Pull Request させる - @kyanny's blog
  • Backbone.View - @kyanny's blog

    Backbone.View を読んだ。ざっと眺めただけ。 http://documentcloud.github.com/backbone/docs/backbone.html model: とか collection: とか tagName: とかは viewOptions というのに定義されてる selectorDelegate というやつで、 jQuery とかの selector の検索範囲を特定の DOM 要素以下に限定するようなのを使っていて、 this.$ にそれで得られたオブジェクトをバインドしている initialize, render は最初は空っぽな感じで、上書きして使うことが想定されている make というのがあって、動的に DOM 要素を作って返す。テンプレートが必要ないような小さい要素の場合に使う、みたいなメモがあるけどどう嬉しいのかよくわからず delegat

    Backbone.View - @kyanny's blog
  • Backbone.js のソースコードを読んだ - @kyanny's blog

    Backbone.js (annotated source code) のソースコードを読んだ。単なる趣味です。全体的に読みやすくて読んでて楽しかった。他人が読んで役に立つものでもないので、そういうのをお探しの方は Backbone.js Advent Calendar 2011 あたりをどうぞ。以下、読んで書いたブログ記事へのリンク集です。 Backbone.Events Backbone.Events (2) Backbone.Model Backbone.Collection Backbone.Router Backbone.History Backbone.View Backbone.sync Backbone.js Helpers 他

    Backbone.js のソースコードを読んだ - @kyanny's blog
  • 30days Album はどのようにして画像にアクセス認証をかけているか - @kyanny's blog

    30days Album は画像の URL にもアクセス認証を入れています - 刺身☆ブーメランのはてなダイアリー の技術的な解説。基的に 関西オープンソース 2008 30days Albumの裏側 のとおり。 ミドルウェアはこのスライドのときと比べてけっこう様変わりしている。 Perlbal は相変わらず使ってるけど。 リバースプロキシは nginx バックエンドに Apache (Passenger) と Perlbal 静的ファイルは nginx が配信 画像の URL は Perlbal にプロキシ 画像認証用の Perlbal Plugin がセッションストレージの Kyoto Tycoon に認証情報があるか問い合わせ それ以外にも提携している外部サービスのために特定の IP アドレスは素通りさせたりしている 画像ストレージは MogileFS なので X-REPROXY-

  • 気の利いたコマンドラインオプションの解釈の仕方 - @kyanny's blog

    rails-log-block-grep を書いてたときに、コマンドラインオプションの扱いにも「おもてなしの心」が大事だなと思うことがあったので書いておく。 grep(1) には --color というオプションがあって詳細は man 1 grep 読んでもらうとして、 [always|never|auto] のいずれかを指定するか、値は省略することもできる(その場合 auto がデフォルト)この挙動を Ruby 標準添付の OptionParser でどう書けば実現できるか、という話。 ふつうに opts.on を並べて opts.parse! してから pattern = ARGV.shift などとすると、コマンドライン引数の誤解釈がおこってしまい正常に動作しない。 --color オプションの引数を任意(必須ではない)にするだけではダメで、 parse! 後に ARGV が壊れてい

    気の利いたコマンドラインオプションの解釈の仕方 - @kyanny's blog
  • 1