2009-01-01から1年間の記事一覧

日本語のdocstringはunicode literalで書こう

# coding: utf-8 def foo(): """ほにゃらら""" 一般的にdocstringと言われていて標準的に使われるドキュメント形式なんだけど、上記のように通常の文字列として書いた場合は (Python 2.xでは) byte string になり、utf-8でエンコードされているという情報が…

Expert Python Programming

eBookにて購入。いいなこの本。 チュートリアルを読み終えてしばらくPythonを触った人〜独学でPythonパッケージをPyPIに登録するようになった人まで、入門者を除く広い層にお勧めできる。 Pythonって、標準で、Python以外の言語は使えるプログラマ向けチュー…

Visual Studio 2010 ではATLやMFCの入手コストが上昇する

Visual Studio 2010 は SKU (Editionの数) を整理することがこの間発表された。 これで困るのが、Visual C++ Standard Editionを使っていた人。ATL/MFCとx64コンパイラのサポートがExpress Editionにはなく、Visual Studio 2010 ではStandardがProfessional…

Python2.xでは __str__ が unicode を返しても良い

ソースはこれ: http://mail.python.org/pipermail/python-dev/2006-December/070238.html例えばパスをwrapするオブジェクトを作るときに、パスをunicodeで扱うのであれば、その文字列表現もunicodeにしたい。 そのオブジェクトに文字列表現を与えるとすると …

今週の成果

builtin の compile() 関数に encoding オプションをつけた IPythonやIDLEといったPython製Pythonインタラクティブシェルは、compile()関数を使ってユーザーが入力したコード片をコンパイルするんだけど、そのコード片をutf-8のコンテキストでコンパイルして…

なぜbzrはhgより遅いのか

(hgの部分をgitに置き換えてもOK) bzrとhgを比較するベンチマークだと、特にcloneにおいてbzrが遅い。 bzrとhgにおける、リポジトリとブランチの扱いの違いについて まず、bzrは色々な使い方に対応できるようにしようとしてリポジトリとブランチと作業ツリー…

TortoiseBZRの新型キャッシュを実装した

bzr

TortoiseBZRはTortoiseSVNの動作を移植しているんだけど、TortoiseSVNが各ディレクトリに管理ディレクトリを作るのに対してbzrは作業ツリーのトップにしか管理ディレクトリを作らないので、TortoiseSVNのキャッシュ構造だとすごい無駄なことをしていた。作業…

Qtの新しいbinding PySide

PySide – Python for Qt RiverbankのPyQt4と別のQt Python binding. Nokiaが出資しているらしい。 PyQt4がGPLなのに対して、LGPLで使えるPython bindingがほしかったけどRiverbankとの交渉がまとまらなかったので新プロジェクトが立ち上がったらしい。 まだ…

s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い

http://groups.google.com/group/comp.lang.python/browse_thread/thread/314a3043ea63319f/ unicode vs s.decode unicodeはLOAD_GLOBALで、s.decodeはLOAD_ATTRでスタックに積まれる。で、LOAD_GLOBALの方が速い。 さらに言えば、何度もデコードを行うので…

KeePass 2.08 がリリースされてた

KeePass 2.08 がいつの間にかリリースされていて、しかもとうとう2系が安定版になっていた。 おもしろいのが、2系は.NETになってmonoにも対応しているところ。今までは KeePass 1系をWindowsで、 KeePassXをLinuxで使っていたけど、統合できそう。

TortoiseBZRのWindows2000対応

bzr

TortoiseBZRのコンテキストメニューがWindows 2000環境で上手く動かないという報告があった。 TortoiseSVNの中身を見てみると、Windows 2000でコンテキストメニューにアイコンを表示しないようにしてあった。Windows 2000には何か問題があるらしい。 Tortois…

Addメニュー

bzr

TortoiseBZRでAddメニューを出すには、バージョン管理されていないファイルがあるディレクトリでコンテキストメニューを表示すれば良かった。 バージョン管理されていないファイルを選択して右クリックしても "add" メニューが出なかったので、出るようにし…

bytearray の罠

mutableなクセにメソッドはstrと同じくout-placeという中途半端なbytearray. strとの違いは変更が可能 In [4]: ba = bytearray('foo') In [5]: ba[1] = 'O' In [6]: ba Out[6]: bytearray(b'fOo') というだけだと思っていたのだが、実はこんな所にも変更が I…

勝手に採点 (Re: 自分ならこう書く - pythonでA*)

自分ならこう書く - pythonでA* - ラシウラより def astar(init, goal, nexts, distance=lambda path: len(path), heuristic=lambda pos: 0): import heapq queue = [] checked = [init] heapq.heappush(queue, (distance([init]) + heuristic(init), [init]…

TortoiseBzr のシェル拡張のバグ

bzr

http://msdn.microsoft.com/en-us/library/bb776094%28VS.85%29.aspx GetCommandString() の idCmd は、QueryContextMenu の中で InsertMenuItem 等で設定した id ではなくて、その id と QueryContextMenu の引数の idCmdFirst とのオフセットが渡される?…

今日の成果

bzr

例外クラスがformat stringにbyte stringを使っていたので、"%s" % (foo,) みたいな部分で foo.__unicode__ ではなくて foo.__str__ が呼ばれてしまっていた。 __str__ を使うとunicodeのパスをutf8にencodeしてしまうクラスがあり、Windowsでエラーを出すと…

Pythonは他の言語の慣習の持ち込みを嫌う

拡張引用構文覚えた! こういう経験があると、たかが「List = list」ごときで何を大げさなと思ってしまうけど、Pythonista的にはこういうのも受け入れられないんだろう。 Pythonistaはtypedefすら拒絶する? (Re: Python での組み込み型をより自然な名前にす…

Windows で symlink がまだできない

bzr

Windows XP 以下では、symlink (reparse point)はディレクトリに対してしか使えない。 Windows Vista では、symlinkがディレクトリにもファイルにも使えるようになった。が、管理者権限が必要になるのでアプリケーションで使うには何とかしないといけない。…

Putty で nc を使った多段ssh

ncある限りぼくはどこまででもいけるッ! - (ひ)メモこの ProxyCommand を puttyごった煮版で利用してみる。 まずは、踏み台サーバーに普通に対して普通にputtyでログインできる状態を作り、適当なセッション名をつけて保存する。 コマンドラインから "plink…

file.encoding の convention が判らない

http://docs.python.org/library/stdtypes.html#file.encoding file.encoding The encoding that this file uses. When Unicode strings are written to a file, they will be converted to byte strings using this encoding. In addition, when the file i…

Re: Re: ”sep”.join(list) が気持ち悪い理由

「Re: "sep".join(list) が気持ち悪い理由」 http://d.hatena.ne.jp/kwatch/20090716/1247717055 みんなー、トラックバックって知ってるよねー!? 他人のとこに長いコメント書くくらいなら自分のブログに書こうぜ!#隠れてコソコソ陰口叩かれるぐらいなら超長…

len が py3k でも 関数のままである理由

結局は http://d.hatena.ne.jp/methane/20090702/1246556675 なんだけど、ソースを提示しておく。まず、Python FAQにはこんな風に書いてある。 http://www.python.org/doc/faq/general/#why-does-python-use-methods-for-some-functionality-e-g-list-index-…

unladen swallow 2009Q2がリリースされてた

http://code.google.com/p/unladen-swallow/wiki/Release2009Q2 後で試そう。

MessagePack 0.1.1 リリース

会社のBlogでも告知しているんだけど、会社のBlogはPythonistaのアンテナにあまり登録されていない気がするのでこちらでも告知しておく。 http://dsas.blog.klab.org/archives/51456004.htmlMessagePackはjson相当の機能をもつけれどもjsonと違いバイナリフ…

hg-fixutf8 更新

mercurial 1.3 が出て、本家 hg-fixutf8 が動かなかったので、適当に更新してみた。 http://bitbucket.org/methane/hg-fixutf8-jp/ 変更点はめんどくさいから履歴参照。 もともと強引なfixutf8拡張がさらに強引になった。bzr使えって言えたらいいんだけど、b…

len が関数になっている理由

http://d.hatena.ne.jp/pashango_p/20090702/1246550203 len()がリストのメソッドでないのも同じ理由です。 オブジェクト指向的に考えれば、リストのメソッドであるべきなのに、わざわざビルトイン関数にしたんです。 「オブジェクト指向的に考えれば、リス…

bzr-explorer 0.4 翻訳

bzr

bzrのスタンドアロン型GUIとしてハイスピードで開発されている bzr-explorer. 0.4がもうすぐ出ると言うことで、Launchpad上での翻訳に参加してみた。 Launchpad遅いけど、他のプロジェクトで使用した訳語が候補に出てくるのは強みだな。あとは、翻訳対象の語…

hg-fixutf8 を改造してみた

hg-fixutf8 は、出力しようとしているutf-8文字列の中に、現在のコードページで出力できない文字が存在した場合、SetOutputCP(65001) して utf-8 をそのまま出力する。 でも、これ、実際にやってみるとコードページを切り替えるときにコンソールの内容が化け…

Multi Arch Support in Karmic

https://wiki.ubuntu.com/MultiarchSpec 64bit 環境に移行するのが面倒な理由のうち、32bit 環境で動くバイナリをビルドするのが面倒、32bit でバイナリ配布されているアプリケーションを利用するのが面倒、という理由はこれが実現されれば解決するな。そも…

そんなに Array.join がいいのか

「(ruby|javascript)でstr.join(array)、pythonでlist.join(str)」http://blog.livedoor.jp/dankogai/archives/51226075.html ここではlistを継承したListクラスをこさえて、そこにjoinメソッドを追加しているが、listに直にメソッド追加する方法はないのだ…

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。