2013-01-01から1年間の記事一覧
Python Advent Calendar 2013 の六日目です。Python3.4 で導入された PEP 442 -- Safe object finalization の解説を簡単に。 Pythonのメモリ解放処理 Pythonでは、処理中に使われなくなったオブジェクトを検出し、自動的に開放するようになっている。他のオ…
Ubuntu 13.10 で普通にVMWare Fusion 6 の VMWare Tools をインストールしようとすると、 /vmhgfs-only/inode.c:1893:29: error: ‘struct dentry’ has no member named ‘d_count’ int dcount = dentry->d_count; こんな感じでエラーになってしまう。 こちら…
PyCon APAC 2013 での発表資料です。 Introduction to cython from Atsuo Ishimoto
unittest.mock モジュールを正しく使って関数を置き換えるというのは以外と難しいもので、Pythonの名前空間について、しっかり把握できてないとうまくいかないことがある。 単純なケースでは、テスト対象のコードが参照している名前で置き換えてやればいい。…
Windows用のコマントプロンプトの置き換えアプリ Console の、IME対応パッチ版 パッチ https://github.com/atsuoishimoto/console2-ime バイナリ 2013-07-06版(Console 2.00 b148用) https://github.com/atsuoishimoto/console2-ime/releases/tag/console-2-…
以前、ジェネレータが循環参照の一部になっている場合、メモリが開放されなくなるケースがあるという エントリ を書いた。 最近、この仕様が 問題となっていた ようで対策が検討されていたが、ついにトランクにコミットされたようだ。 http://bugs.python.or…
実のところ、私はあんまり reStructuredText /Shinx が好きではない。Markdown と比べるとシンプルさで劣り、TeXと比べると印字品質で劣る。この辺の中途半端さが、restを愛せない大きな理由だが、もう一点、日本語の文章を書くのに適切なマークアップ言語で…
普段、図を書いたりすることはそれほどないが、書くときは適当にPowerPointを使って書いてしまうことが多い。このページの図 なんかもPowerPoint製で、けっこう綺麗な図を手軽にかけるので重宝している。 書くのが簡単なのはいいんだけど、書いたあと、画像…
先日、動的言語の使いどころ という記事を公開してしまった。公開して「しまった」というのは、じつはあの記事はもうしばらく寝かしてから公開するつもりで、まだ未完成だったためだ。なんで公開するつもりがないエントリが公開されてしまったかというと、エ…
型宣言というのは良い物だ。型が明確なら、実行速度は型情報がない場合と比べて100倍も200倍も高速になるし、エラーチェックだってできる。リファクタリングも簡単だ。 型がないほうがいいという人は、昔の、まだプロトタイプ宣言がなかった頃のCコンパイラ…
Vimで挿入モードから抜ける時に英数入力に切り替える を参考に、KeyRemap4MacBook を使って、ESCを押したらIMEを抜けるように設定。元のままだと、Ctrl+[ で抜けた時に効果が無いようだったので、private.xml ファイルに設定を追加した。 <root> <list> <item> <name>LeaveInsMode w</name></item></list></root>…
お前ら、Python3 だと、みんな大好き全角数字使えるの知ってた? >>> int('100') 100 >>> int('100') 100 >>> int('100', 16) 256 ってことは、これがエラーになるのはバグじゃないか? >>> int('FF', 16) Traceback (most recent call last): File "<stdin></stdin>…
Pythonで浮動小数点数を使って大きな値の計算をすると、 >>> 1e100 * 1e100 1e+200 >>> 1e200 * 1e200 inf >>> 1e200 ** 1e200 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range') >>> 1e1000 </module></stdin>…
以前、Mockライブラリの説明記事 でこんなことを書いた。 コンテキストマネージャで patch() を使う場合、複数のオブジェクトを同時に置き換える時に def test(): with patch('testapp.func1') as m1: with patch('testapp.func2') as m2: with patch('testa…