月別アーカイブ: 2012年3月

EmacsでPythonソースコードのインデントを深くor浅くする技

EmacsのPython-modeの小技。

Pythonはインデントが命。
ある範囲のコードのインデントを一括して深くor浅くしたくなることがよくありますね。
try~exceptで例外処理を入れたくなった時とかね。

そんな時のステキな技。
インデントを一括して深くor浅くしたい範囲を指定して C-c > で深く、 C-c < で浅くなるぜ。
地味だけど、すげー便利。

Pythonで/dev/urandomから乱数をゲットしてみた

Pythonで暗号論的に正しい乱数を取得する必要があったので/dev/urandomから乱数を取得してみた。
最初からos.urandom()なんてそのものズバリな関数があるので、こいつを使うぜ。
試しに128ビットの乱数を取得してみた。

>>> import os
>>> random128bitdata = os.urandom(16)
>>> random128bitdata
'\x19\x96\xfe\xd5J\xf7\xd1\xb1B|Y\xbd\xe01\xe2\xdd'

うむ、取得成功。

ちなみに16進表記にしたければbinasciiモジュールで変換すると便利。

>>> import binascii
>>> binascii.hexlify(random128bitdata)
'1996fed54af7d1b1427c59bde031e2dd'

さらに、文字列でなく数値で欲しいならこんな感じで。

>>> int(binascii.hexlify(random128bitdata), 16)
34014713054242549678150113052966642397L

そう、int()の第二引数は基数を指定できるのだ