Python のクロージャとレキシカル変数を使ったシングルトンっぽいもの

実際にはシングルトンではなくて、共有インスタンスを返すメソッドを実装する、ってだけなんだけど。

class A(object):

    @staticmethod
    def shared():
        instance = A()
        A.shared = staticmethod(lambda: instance)
        return instance
  1. 共有インスタンスとなるオブジェクトを生成し、レキシカル変数にバインドする
  2. このオブジェクトを返す無名関数で、元の関数 shared を置き換える

何が嬉しいかというと、共有インスタンスを参照するための変数(今回の場合は instance)を関数外から不可視にできること。変数のスコープが必要以上に広いと不安になります。実行時に遅延インスタンス化されるのが嫌なら、クラス定義の直後に一度呼び出すなりすればいいと思う。

gist:290628 に doctest とか追加したものを置いてあります。

Google AppEngine で Django 1.1 を使う

Google AppEngine の SDK および実行環境には、Web アプリケーション・フレームワークの Django がプリインストールされている。

しかし、デフォルトで有効になっているのは 0.96 という相当古いバージョンだ(もっとも、Google AppEngine リリース時点では、これが最新のバージョンであった)。すでにサポートも終了しており、バグや脆弱性の修正もされないため、できれば最新の 1.0/1.1系列を使いたい、という人が大半だろう。

しかし、これまで、バージョン 1.0 以降の Django を Google AppEngine で使うのは骨の折れる作業だった。

Go

Io と並んで、自らの検索能力が試される名前の Go ですが、実用性と簡潔さを兼ねそなえた言語設計は好感がもてます。

伊坂幸太郎「ラッシュライフ」

すでに本棚の肥やしと化していた「ラッシュライフ」を読了した。「オーデュポンの祈り」に引きつづき二冊目の伊坂幸太郎なので、一応、刊行順に読んでいることになる。もっとも、著者の本が文庫化されはじめた時期に衝動買いして、そのまま積んでいたというだけなのだが。

Sphinx 0.6.2 にアップグレードしたときのメモ

約一年ぶりに Sphinx を最新版に...しようとしたら色々苦労したので、変更点や手順をメモとして残しておく。

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. ...
  7. 36
  8. 37
(186 記事)

Want fries with that?

Open Source Projects