2012年7月10日のブックマーク (3件)

  • Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary

    最近立て続けにレースコンディション問題に遭遇したのでメモ。 レースコンディション(競合状態)とは、複数のプロセスやスレッドが共有リソースに対して何らかの操作をする際に、処理のタイミングによって結果が異なってしまう状態のこと。よくトランザクションの解説の際に銀行口座の例として紹介されるおなじみのやつです。 今回は、アプリケーションの書き方によって発生するレースコンディションと、MySQL のテーブル定義時の制約不足で発生するレースコンディションについてそれぞれ紹介したいと思います。 どちらの場合も共有リソースはDB で、条件を満たすと意図しない形でデータが保存されてしまいます。 サンプルアプリケーション サンプルアプリケーションとして、簡単なアクセス解析機能付きの短縮URL ツールを考えます。 アクセス解析機能として、以下のような機能を持つとしましょう。 URL毎 にクリック数を計測できる

    Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary
  • Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! : melborne.github.com - Ruby クロージャ - ソースコード備忘録を読んで 自分のRubyにおけるブロックと変数の理解が怪しいことがわかった でちょっと普通とは違うアプローチからの整理を試みて 理解できた気がするので書いてみます 誤りを教えてくれればうれしいです ローカル変数 プログラムコードはプログラマの意思をインタプリタに伝えるものだ Rubyでは オブジェクトに処理を依頼する形でプログラムを組成するけど そのとき変数はプログラマが 対象のオブジェクトを指し示すためのラベルとして用いられる すなわち変数はオブジェクト参照ラベルだ 複数の手続きブロッ

    Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! - hp12c
  • sessionに有効期限を設定する時の試練 - ザリガニが見ていた...。

    Railsを使っていて自分で直接cookieを設定するという状況はほとんどなく、大抵はsessionをハッシュ感覚で、便利に利用してきた。Rails2.0以降はsessionの保存先はデフォルトでcookieになり、そのまま利用する限りcookieの有効期限は空欄のままなので、ブラウザを終了するまでsessionは保持されることになる。そして、次回ブラウザを起動すると、期限切れのcookie(その中にsessionが保存されている)は削除されている。 ほとんどの場合、上記デフォルト設定のまま使っていたか、またはrestful_authenticationなどに頼りきりだったので、いざ自分でsessionに有効期限を設定しようとした時、苦労してしまった。とても基的なことであるのに...。 config/environment.rbでの設定 2009-01-01 00:00:00まで有効にし

    sessionに有効期限を設定する時の試練 - ザリガニが見ていた...。