おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

しびれにくい正座の方法

今日は法事のため実家に帰っていました。

お寺からお坊さんが来てお経を読んで。その後お墓参り。もう慣れたものです。が、正座だけは慣れません。座っている間は足の感覚がなくなるくらいでなんとか耐えられるのですが、正座から解放された直後のしびれは「馬鹿なの?死ぬの?」ってくらいきつい。せっかく故人を偲ぶために法事をしているのだから、自分の足のことばかり気にかけてられないですよね。なのでしびれにくい正座の方法を調べてみました。

しびれない正座の仕方、座布団のマナー - [暮らしの歳時記]All About

上記の記事によると、

  • 足首で円を作り、その中にお尻をおさめるように座る
  • 指先はなるべく座布団の端に寄せる
  • 親指を重ね合わせて時々上下を入れ替える

と良いらしいです。これを覚えて次回からは楽しく(?)法事に臨みたいと思います。

JavaScript: The Good Partsを読んでる

少しずつ(一日30分〜1時間くらい)読み進めています。

今日は4章を読んだのですが、サイ本だとわかりづらかったクロージャの概念がすんなり理解できました。
サイ本をざっと読んだ後にこの本を読むといいかも。

今週のEdge Rails

Riding Rails: This Week in Edge Rails

上記の記事を意訳したのでメモ。

トランザクションをネスト

  • トランザクションをネストできるように。
  • ネストする時は:require_newオプションが必要。オプション指定がないと親のトランザクションの一部と見なされる。
  • 内部ではsavepointsとかいうのを使ってるらしい
  • このトランザクションはテスト中のfixtureで使われてる?らしい
User.transaction do
    User.create(:username => 'Admin')
    User.transaction(:requires_new => true) do
      User.create(:username => 'Regular')
      raise ActiveRecord::Rollback
    end
  end
User.find(:all)  # => Returns only Admin

MemacheStoreのエンハンス

MemCacheStore使用時のパフォーマンスを改善

callbackを仕様通りに直した

ActiveRecordのドキュメントに「ActiveRecordbefore_*系のcallbackがfalseを返したら、その後の全てのcallbackとそれに紐づいたアクションはキャンセルされる。」と書いてあるけど現行バージョンではそれは動作しなくなっている。もしbefore_updateやbefore_createをキャンセルしても、after_saveは動いてしまう。2.3ではドキュメント通りになっている。

TimeWithZoneで小数秒

  • TimeクラスやTimeWithZoneクラスはxmlschemaメソッドを持つ。
  • xmlschemaメソッドXMLフレンドリーな文字列で時間を返すメソッド
  • 下記のように、xmlschemaメソッド引数で指定した値まで小数点以下を表示するようにした。
Time.zone.now.xmlschema(6) #=> "2009-01-18T14:12:56.935478Z"

jsonのキーを仕様通りに

  • json.orgには、キー値は文字列じゃないとダメと書いてある
  • そしてダブルクォートでくくれと書いてある。
  • なのでその通りにした。

2.2だとこう

{1=>2}.to_json #=> "{1: 2}"

edgeだとこう

{1 => 2}.to_json #=> "{\"1\": 2}"

テストのリファクタリング

テストをいろいろリファクタリングしたらしい

Object#tryを変更

Object#tryはこんなメソッド

def try(method)
  send method if respond_to? method
end

そんなObject#tryのふるまいをちょっと変えた

  • プライベートメソッドではNoMethodErrorに
  • オブジェクトがnilなら常にnilを返す