Monday, March 23, 2009

Traveler's Notebook Passport Size

以前から気になっていたトラベラーズノートパスポートサイズが出たようだ。
普段は超整理手帳を使っており、普通のサイズを持つ必要はないが、メモ取りのためにこのパスポートサイズは買ってみるのもいいかも。

Wednesday, March 11, 2009

とうとうポメラを購入

去年さんざん迷った末に今まで購入を見合わせていたポメラ(白)を購入した。今いろいろイジって遊び中...


英語キーボードではないとか、ControlとCaps Lockを入れ替えられないとか、Emacsキーバインドじゃあないとか、いろいろ不満はあるものの、こういった製品は今これしかないことからすると仕方ないか。

とはいえ、前にも書いたとおり「良い割り切り」で本当に良い製品だと思う。

Python: zipサイコー

プログラムを書いていると、一つのループで複数のコンテナ型(配列やリスト)にアクセスしたいときがある。これまでは整数でループを回して、その整数を使って添え字アクセスをしていた。しかし、Pythonでzipを使えばもっとスマートになることが分かった。


a_list = ['a', 'b', 'c', 'd', 'e']
b_list = ['A', 'B', 'C', 'D', 'E']
zipped = zip(a_list, b_list)
for x, y in zipped:
print x, y # a, Aという組み合わせでe, Eまで表示される


こんな感じで簡単に使えるなんて、やっぱりPythonサイコー。

Saturday, March 07, 2009

Django: objects.get_or_create()

DjangoのModelを最近使っている。Modelでunique属性を有効にした場合、同じ属性を持つレコードをsave()するとIntegrityErrorが帰ってくるので、これまではこれをキャッチしてobjects.get()を実行し、最終的にインスタンスを取得していた。しかし、これだと一つのレコードで4,5行位は使ってしまう。

いろいろ調べてみると、objects.get_or_create()という関数があり、これはレコードが存在していれば取得し、無ければ作成する、というもの。これだと1行で簡単に上に書いた処理を実行することができる。

Django本のP.142のサンプルでは、この関数の戻り値が1つ(インスタンス)という記述になっているが、その後(インスタンス、レコード作成のTrue/False)という2つの戻り値に変更になっているようだ。

Djangoはすばらしいのだが、ネットや書籍の情報を見るときには、1.0対応かどうかを意識する必要がある。