めんどくさいmock.patch()

unittest.mock モジュールを正しく使って関数を置き換えるというのは以外と難しいもので、Pythonの名前空間について、しっかり把握できてないとうまくいかないことがある。 単純なケースでは、テスト対象のコードが参照している名前で置き換えてやればいい。…

Console IME対応パッチ

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

実のところ、私はあんまり reStructuredText /Shinx が好きではない。Markdown と比べるとシンプルさで劣り、TeXと比べると印字品質で劣る。この辺の中途半端さが、restを愛せない大きな理由だが、もう一点、日本語の文章を書くのに適切なマークアップ言語で…

PowerPointは僕らのIllustratorだ

普段、図を書いたりすることはそれほどないが、書くときは適当にPowerPointを使って書いてしまうことが多い。このページの図 なんかもPowerPoint製で、けっこう綺麗な図を手軽にかけるので重宝している。 書くのが簡単なのはいいんだけど、書いたあと、画像…

動的型言語の使いどころ - その2

先日、動的言語の使いどころ という記事を公開してしまった。公開して「しまった」というのは、じつはあの記事はもうしばらく寝かしてから公開するつもりで、まだ未完成だったためだ。なんで公開するつもりがないエントリが公開されてしまったかというと、エ…

動的型言語の使いどころ

型宣言というのは良い物だ。型が明確なら、実行速度は型情報がない場合と比べて100倍も200倍も高速になるし、エラーチェックだってできる。リファクタリングも簡単だ。 型がないほうがいいという人は、昔の、まだプロトタイプ宣言がなかった頃のCコンパイラ…

OS Xの Vim で IME 制御

Vimで挿入モードから抜ける時に英数入力に切り替える を参考に、KeyRemap4MacBook を使って、ESCを押したらIMEを抜けるように設定。元のままだと、Ctrl+[ で抜けた時に効果が無いようだったので、private.xml ファイルに設定を追加した。 <root> <list> <item> <name>LeaveInsMode w</name></item></list></root>…

Python3 の数値型

お前ら、Python3 だと、みんな大好き全角数字使えるの知ってた? >>> int('100') 100 >>> int('100') 100 >>> int('100', 16) 256 ってことは、これがエラーになるのはバグじゃないか? >>> int('FF', 16) Traceback (most recent call last): File "<stdin></stdin>…

Macbook Air OS X 10.8.2 のふしぎ

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>…

Python 3.3 からの with 文

以前、Mockライブラリの説明記事 でこんなことを書いた。 コンテキストマネージャで patch() を使う場合、複数のオブジェクトを同時に置き換える時に def test(): with patch('testapp.func1') as m1: with patch('testapp.func2') as m2: with patch('testa…

Pythonで++i

この間、Pythonで変数のインクリメントないよね、って話がでた。こんなのだ。 i = 99 ++i print i ちなみに、Pythonでも ++i や --i と書くことはできる。書くことはできるが、Pythonでは ++ や -- はインクリメント/デクリメント演算子ではなく、単項の + …

Python3.3のdecimalが馬鹿っぱやい件

Python 3.3 では decimalモジュールがC言語で実装され、10進浮動少数演算が馬鹿っぱやになりました。単純なニュートン法で平方根を計算してみると、 def newton(n): guess = n/2 better = (guess + n/guess)/2 while better != guess: guess = better better…

PyConJP 2012 ハンズオン資料

PyCon JP 2012 hands-on FlaskによるWebアプリケーションの実装とプログラミングツール from Atsuo Ishimoto

Pandocでblockdiagを使う

最近、ドキュメント生成ツールとして Pandoc をちょっと試している。Markdownで手軽に書けて、reStructuredTextよりも好みだ。Pandocというのは「ドキュメント生成ツール」ではなく、正確に言えば「ドキュメント変換ツール」だ。MarkdownからHTMLやPDFへの変…

execとローカル変数

先日のPyCon JPで、私はまたもやってしまったのである。Hands on の講師という大役を引き受けておきながら、間違った演習用のスクリプトを書いてしまった。昔からの思い込みを元に、大雑把な実験だけで書いてしまったのである。何を間違えたかというと、Pyth…

PythonはDSLが苦手?

PythonはDSLが苦手でしょうか、って話をチラッと目にした。あんまりDSLって知らないけど、そんなに得意ってことはないんじゃないかと思う。Pythonってのは構文的に遊びが少ないように考慮して作られてるし、そもそもPythonは「実行可能な擬似コード」って言…

UbuntuのPyCharmでアンチアイリアスを有効にする

最近、買うんじゃなかったと思い始めているPyCharmですが、Ubuntuでアンチアイリアスを有効にする設定方法のメモ。[pycharm]/bin/pycharm.vmoption、または[pycharm]/bin/pycharm64.vmoptionに、以下の一行を追加する -Dawt.useSystemAAFontSettings=on

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制する について

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制するについてC言語の教科書にでも出てきそうなこんな基礎的なスクリプト import sys for l in sys.stdin: print l が動かない!って文句を言いたくなる気持ちは、非常によく理解できる。Unix的…

Cygwinのmintty上でコマンドプロンプトを開く

Cygwinをminttyで使っていて、本物のコマンドプロンプトでコマンドを実行する必要があるとき、いちいち別のコマンドプロンプトを開いてcdするのが面倒なときがある。こんなとき、 $ cygstart cmdとすると、cygwin上のカレントディレクトリでコマンドプロンプ…

python.jpの明日はどっちだ

最近「PYJUGって何なの?」「網元衆って何なの?」「何してるの?」「誰なの?」 って話を聞く機会が多いように思えます。 Pyjug-discussへの投稿も凄く減っていますし また網元衆が再編成されて5年も経っています。 外から見ていると、そろそろ運営が実態に…

Pythonのトレース情報を表示する disptrace ってのを作ってみた

Pythonには実行したスクリプトの行番号なんかを表示するtraceモジュールというのがあって、デバッグの時などうまく使うとデバッガでブレークポイント仕掛けるより効率的にデバッグできるときもあったりするんだけど、いまいち低機能で使いにくく、あんまり使…

Ubuntuをスリープさせても、マウスが動いただけで復帰してしまう件

最近、Thinkpad君にドッキングステーションをつけてデスクトップとしても使っているが、スリープ中ちょっとでも机にふれてマウスが動くとすぐ目を覚ましてしまう。敏感過ぎるだろ!夜泣き激しすぎて育児ノイローゼになるわ!っということで、Ubuntu 12.04 で…

BeProudでの仕事を終えて

昨年11月から参加させていただいていた BeProud でのプロジェクトは6月いっぱいで一区切りということになり、私のBeProudでのバイトもいったんお休みということにさせていただいた。 当初は3月ぐらいまでという予定だったのだが、プロジェクトの都合と、居心…

あなたの知らないPython3の秘密

関数の引数は最大255個まで def f(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p4…

Zipファイル一個で実行可能なPythonアプリケーションを作ってみる - 第2夜

さて、先日 http://d.hatena.ne.jp/atsuoishimoto/20120503/1336050988 を紹介したが、Flaskアプリケーションの Blueprint 機能を使うと正しく動作しないようだ。Blueprintでは独自にテンプレートや静的ファイルのディレクトリを指定できるようになっている…

Zipファイル一個で実行可能なPythonアプリケーションを作ってみる

アプリケーションを作成して配布するとき、配布するのは複数のファイルやディレクトリではなく、ファイル一つだけで済ませることができたらそれに越したことはないだろう。Pythonには cx_Freeze や py2exe のような、プラットフォーム固有な実行可能ファイル…

安くて便利なだけの電子書籍に未来はあるか!?

紙の本に負けないくらいの“わくわく感”を、電子書籍ならではのオリジナル機能を用いて実現できたとき、ぼくたちはもっともっと電子書籍を読みたくなるはずだと思うのです。 http://www.appbank.net/2012/03/28/iphone-news/387513.php 本のワクワク感を実現…

pykf 0.4をリリースしてみるなど

ひさしぶりに pykf をリリースした。pykf 0.4では、特に機能追加などは行っていないが、Python3対応となっている。Python3で使う局面はそんなに多くは無さそうだけど…一応注意しておくと、Python3ではpykfが扱うのは文字列ではなくbytesだ。Python3の文字列…

Python Developers Festa 2012.03 出陣記

毎度おなじみ Python Developers Festa 2012.03 にお邪魔してきた。会場をご提供頂いた Oracle 様、また丸一日おつきあい頂いた @yokatsuki様には心からお礼を申し上げます。@voluntas が迷惑かけてほんとすんません。さて、今回はPython2から3への移行の話…