python

super() について

コメントやトラックバックで指摘されたとおり、下記の考察は完全に誤りです。後日 Python3 の super について記事を書きますhttp://d.hatena.ne.jp/w_o/20081205#p2 うーん…↓このぐらいに書けないものかな… class Base: def __init__(self): super().__init_…

委譲があれば継承がいらない?

引き続き、Pythonistaによる http://d.hatena.ne.jp/w_o/20081204#p2 への反論 で、Rubyはmoduleを使って委譲ができるので、クラスの継承が必要無いのであまり関係無い。 意味が判らなかったんだけど、http://synth.jp/pg/2007/04/ruby_10.html のことかな。…

Pythonにコンストラクタなんて構文は無いし、親クラスを呼び出す構文も無い

http://d.hatena.ne.jp/w_o/20081204#p2 まず…って書こうとしたら追記してあった。superの件に関しては、Pythonの人は、「やりかたはひとつがよい」と言ってるので、複数の書きかたができるPythonは悪であると言えるだろう。 これ、よく誤解されてるけど、「…

親クラスのコンストラクタ

http://d.hatena.ne.jp/w_o/20081203#p1 Pythonで親クラスの__init__を呼ぶルールって酷いと思うのだけど、これPython信者たちはなんて言って褒めてるのかな… * super(Type, self)というのが意味不明すぎ * 自分のクラスを書かないといけない * 忘れると死亡…

mercurialをsubversionクライアントとして使う

hgsvnはsvnへのpushへの対応が完了しないまま開発が停滞しているっぽいんだけど、hgsvn意外にもmercurialをsubversionクライアント化するextensionがあった。http://www.bitbucket.org/durin42/hgsubversion/wiki/HomeBazaarに比べて軽快だったmercurialだけ…

Bazaar 1.8 Released

出た。 http://doc.bazaar-vcs.org/bzr.dev/en/release-notes/NEWS.html#bzr-1-8-2008-10-16 http://bazaar-vcs.org/Download 個人的には、bzr+ssh:// を使ったときにエラーになる場合があるバグが修正されたのが大きい。

Bazaarがいい感じ

Bazaarの開発速度、というかリリースサイクルがすさまじいな。現在1.8rc。1.5くらいのころは、Mercurial/Gitと比べると、helpをはじめとする簡単なコマンドの反応速度が遅くてイライラしていた。1.7ではイライラしない程度に早くなってる。大規模なリポジト…

なんとなく擁護してみる

http://anond.hatelabo.jp/20080731154801 インデントうぜー。ブロックの終端がわからんしワンライナーかけないし。 だよね、2chにコード張るときに実態参照しないとインデント消えるし。 ちょっとした事を片付けるなら、ワンライナーよりも対話モード。 ア…

tracebackをログに残す場合のお約束コード

import traceback try: ... except: log.error(traceback.format_exc()) raise 例外は、こまめにチェックするよりも、あえてチェックしない方が良いことがある。 とくに、例外をcatchしておいて、結局自作の情報量が少ない例外を再送出するのは最悪。 エラー…

ipythonの()無し関数呼び出し

Pythonでは、関数呼び出しには()が必要。これは、関数とオブジェクトの区別が無いPythonにおいて、オブジェクトの参照と関数callとを明確に分けるという点で可読性に寄与している。 しかし、インタラクティブシェルで「お試し」中には、カッコを使うのが面倒…

ipythonのdoctest_mode

「普通のPython インタラクティブシェルのほうが、そのままdoctestにコピペできるから楽」 それ、doctest_modeでできるよ! In [26]: %doctest_mode *** Pasting of code with ">>>" or "..." has been enabled. Exception reporting mode: Plain Doctest mo…

ipython tips

Python Code Readingの後の懇親会で少し話題になっていたので公開。 ipythonで、便利だと思う機能の列挙1. 補完 タブキーで補完してくれる。まぁ、これは誰でも知ってるだろう。2. コマンドを実行できる !を使えば、Pythonの外のプログラムと連携が可能。そ…

loglevelは正の整数でないといけない

getoptで-vの数だけloglevel -= 10してたらハマった。 >>> import logging >>> logging.getLogger('root') <logging.Logger instance at 0xb7d12cac> >>> log = _ >>> log <logging.Logger instance at 0xb7d12cac> >>> log.debug('foo') >>> log.setLevel(10) >>> log.debug('foo') No handlers could be found for logger "root" >>> im…</logging.logger></logging.logger>

getoptモジュール

from getopt import getopt import sys opts, args = getopt(sys.argv[1:], 'v') for opt in opts: print opt python opt.py -vvv ('-v', '') ('-v', '') ('-v', '')うん、ちゃんと - をつけてくれてるんだな。vをいっぱいつけるとログレベルを上げられる。

標準jsonモジュール

Python 2.6とPython 3.0から、標準ライブラリにjsonモジュールが追加された。 追加されたモジュールの元が何か調べてみたら、simplejsonだった。これからPython2.5でjson使うときも、simplejson使う事にしよう。

Mercurialのhgwebdir.cgiでsyntax highlightする。

http://d.hatena.ne.jp/methane/20080331/1206968345 で言ってた、hgwebdir.cgiでsyntax highlightが有効にならない問題の解決方法。hgwebdir.cgiに以下の2行を加える。 import hgext.highlight hgext.highlight.demandimport.enable() ただし、cgiで動かす…

pysqliteのtext

DBにpysqliteを使ったPylonsアプリで、UTF-8の文字列突っ込んで取り出すとunicodeになってた。 SQLAlchemyの設定を調べて、convert_unicodeはデフォルトでFalseのハズなのになぁと思っていろいろ弄ってみたんだが、そもそもpysqliteがunicode文字列返すのな。…

vimのオートインデントがPythonのコメント行でカーソルを先頭に戻してしまう問題の解決法

普段vim7.1の自前ビルドを使っているんだけど、Pythonのソースコードを書くとき、コメント行を書こうとして、行頭に#を書いた瞬間にインデントが無くなって行が左端に行ってしまい、>>とか==とかでも修正できなかった。 set cinkeys= とか set noautoindent,…

Mercurial 1.00のsyntax highlight

.hg/hgrcの[extensions]にhighlight = って書いておけば、hg serveでは普通にsyntaxhighlight使えるんだけど、hgwebdir.cgi経由だと有効にならない。 流し読みしてみた感じだと、hgコマンドでは[extensions]を見てextensionをloadするけど、wsgiapp経由のと…

pythonrc

Windowsの設定 [環境変数] PYTHONSTARTUP=%HOME%\.pythonrc.py [.pythonrc.py] import os import sys import os.path import rlcompleter import readline readline.parse_and_bind("tab: complete")PYTHONSTARTUPを設定すると、インタラクティブシェルでデ…

PythonでGmailにIMAP経由でアップロードしてやんよ

経緯 いまさらだが、ローカルにためてたメールをGmailにアップロードしてみた。最初はThunderbirdでIMAP4の設定をして、Thunderbirdで選択+移動でアップロードしていたのだが、(1)ときどきConnectionが切れる、(2)時々Gmailがエラーを返す、ために移動が止…

hgsvn

subversionで管理されたオープンソースソフトのソースを持ってきて、修正&ローカルバージョン管理したい。svkが一般的なんだろうけど、リポジトリのコピーをローカルに作ってbrunch作ってってなんだか面倒くさそう。 そもそも複数のバージョン管理ソフトの…

PyDotよりPyGraphviz

PyDotを使ったら、 digraph G { A [label="hoge"]; A -> B; }をparseして状態をリストしたら、['"A"', 'A', 'B']となった。ソースを見たら、バグではなくて意図的にしているらしいのだが、なぜ '"A"' になるのか判らない。 PyGraphvizを使うと、普通に ['A',…

PythonのParser

Pythonのソースコードパッケージの、Grammer/Grammer というファイルに構文の定義がある。 Parser/ 内に、pgenというプログラムがあり、pgenがGrammerを元にParserを自動生成する。 IronPythonのソースコードを見ると、Parser.csが自動生成されていて、自動…

setuptools

IPythonをインストールしてみる。 前は自分でダウンロードしてsetup.py installしてたけど、今回はeasy_installを... >easy_install ipython Searching for ipython Reading http://cheeseshop.python.org/pypi/ipython/ Reading http://ipython.scipy.org R…

ちょっとした問題

Djangoをインストールした環境で >>> help() help> modules Please wait a moment while I gather a list of all available modules... Traceback (most recent call last): File "<stdin>", line 1, in <module> ...snip... File "C:\Python25\Lib\site-packages\django\co</module></stdin>…

Djangoでの/media/の扱い

昨日の日記にトラックバックで解説していただきました。 http://www.everes.net/2007/apr/06/django-admin-media/

Djangoの管理画面はDjango内蔵サーバー限定?

Djangoのチュートリアルを自宅でやってみたときは、まったく問題なかった。 で、会社でApache+Djangoの環境を構築してみたら…管理画面が素っ気無い。cssが404 Not Found。 Apacheの設定かApatcheとDjangoをつなぐ部分でURLの設定ミスがあるんじゃないかとい…

docutilsと日本語ファイル名

日本語ファイル名のテキストファイルをdocutilsに読ませると、変なエラーで止まることがある。 たとえば、-sオプションを使ったとき。 TODO: -sの日本語ファイル名対応パッチを作って送る.

docutilsとeast_asian_widthとSimpleTable

reStructuredTextで、テーブルを記述する方法に、SimpleTableとかGridTableがある。SimpleTableならこんな感じ。 ==== ==== ほげ ほげ ==== ==== がお がお ---- ---- ふー ふー ==== ====で、reStructuredTextの標準処理系であるdocutilsのparserは、east_a…

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