python

codecs.openにはwithステートメントが使えない

Python2.5以降で、withステートメントが使える。 with open('logfile', 'r') as logfile: logfile.write('hogehoge') こうすると、open()で開いたファイルのclose()を暗黙的に、確実に呼んでくれる。withなしだと、こんなふうになって、ちょっと見苦しい。 l…

オンラインKPT

今回のイベントでは「オンラインKPT」と称して、主に携帯から「いまのよかった!」という拍手を入力できるシステムを用意しました。いつも貼り物・アナログが人気なので、こういう試みがどう受け止められるか心配だったのですが、予想以上にみなさんが喜んで…

mercurialでignoreを指定する

Windows環境の話。 mercurial.iniに [ui]ignore=c:\home\hgignore.ini みたいに書く。 hgignore.iniファイルを作る。 mercurial.ini: [ui] username=yattom editor="C:\Program Files\Vim\vim71\gvim.exe" ignore=c:\home\hgignore.ini hgignore.ini: syntax…

__slots__

クラス定義で、インスタンスに自由に変数を追加できなくするには、__slots__を指定する。使える変数名をリストで渡す。 >>> class Foo(object): ... __slots__ = ['foo'] ... >>> f = Foo() >>> f.foo = 10 >>> f.bar = 20 Traceback (most recent call last…

Mercurial1.0入れた

いまさらですが、1.0も出たことだし、Mercurial入れました。プロジェクトではSubversion使ってるけど、個人レベルの作業で履歴を取るために。 Windows用バイナリをダウンロード http://mercurial.berkwood.com/ インストーラでインストール。PATHには自動で…

HtmlDiffでテキストの差分を表示

difflib(2.1以降)のHtmlDiff(2.4以降)を使うと、2つのテキストの差分を取得して、HTMLで簡単に出力できる。行単位だけでなく、文字単位の差分も明示してくれるので便利。withステートメント(2.5以降)を使うと、こんな感じ。 from __future__ import with_sta…

画像処理ライブラリ

Python Imaging Library (PIL)を試してみた。リサイズとか、すごく簡単。easy_install pil で入る。 import Image im = Image.open("foo.jpg") new_im = im.resize((1024, 768), Image.BICUBIC) new_im.save("foo2.jpg") (2008.3.18追記)たとえばrorateは回…

日本語のファイルを読み書きする

codecs.open を使うのが簡単。3番目のパラメータでエンコーディングを指定する。 from codecs import open in_file = open("before.txt", "r", "iso-2022-jp") out_file = open("after.txt", "w", "utf-8") for l in in_file: out_file.write(l) in_file.clo…

tracプラグイン/マクロ/パッチ一覧

Trac Hacksに登録されているプラグイン、マクロ、プロセッサなどに、日本語でひとこと説明をつけた一覧です。基本的にTrac-Hacks上の説明を読んで書いているので、実際に動かしていませんし、勘違いもあると思います。もともと10月くらいからちょこちょこ作…

Python Developers Camp 2008 冬

http://www.python.jp/Zope/PyLog/1201102994中です!わたしはおととしの秋のDevCampに参加したんですが、そのときは3日間Python漬けでとても濃くて熱い体験をしてきました。http://d.hatena.ne.jp/yach/20061003今回は役に立たないスタッフとして参加する予…

Tracプラグインの作り方

マクロは書いたことがあるけどプラグインをちゃんと作るにはeggにしないといけない。そのへんのこと。 http://trac.edgewall.org/wiki/TracDev/PluginDevelopment http://trac-hacks.org/wiki/EggCookingTutorial/BasicEggCooking API http://trac.edgewall.…

家サーバ

事情があって、trac0.11devとtrac0.10を並行稼動させることに。考えてみたら、いろいろと面倒くさそうだ。 tracをインストールするとlib/python2.4/site-packagesに入る。こちらはバージョン管理されてるのだけど、実行用のスクリプト(tracd, trac-admin)はb…

家サーバ

続き。 tracでsvnが使えない 昨日まで使えてたのに、使えないと言われた Pythonをmakeしなおしたのが原因らしい subversion を make install-swig-py しなおしたら直った これじゃないっぽい apache の再起動も必要 再起動時に、以下のどちらかでないとだめ…

家サーバ

続き。 vim aapから入れた。http://www.a-a-p.org/ports.html http://www.a-a-p.org/download.html ./configure --disable-darwin --enable-pythoninterp --enable-rubyinterp --disable-netbeans --enable-multibyte --enable-nls multi_byte, gettext がつ…

YAMLもどき in Python

YAMLって便利ですよね。でも実は、Pythonには言語仕様レベルで、同等の機能がある。config.py: PREFIX='>>' DELIMITER='----' class ACCOUNT: id = 'username' pwd = 'password' class DETAIL: name = 'J.Luser' email = 'jluser@foobar.com'main.py: import…

イベントハンドリング

http://d.hatena.ne.jp/yach/20070905 の続き。チャットメッセージの受信とかは、イベントで処理する。イベントは、_ISkypeEvents (https://developer.skype.com/Docs/Skype4COMLib/ISkypeEvents) で定義されている。win32com でCOMイベントを扱うには、以下…

PythonでSkype

Python Extension for Windows (pywin32; http://sourceforge.net/projects/pywin32/) と Skype4COM (https://developer.skype.com/Download) を使うと簡単にSkypeをPythonから操作できる。おっと、当然ですが Windows の話。クロスプラットフォームにするな…

tracのニコカレプラグイン(マクロ)

trac用のニコカレマクロを書きました。以下からダウンロードできます。NikoCaleMacro – Trac Hacks - Plugins Macros etc.ニコカレについてはhttp://www.geocities.jp/nikonikocalendar/index_ja.htmlをどうぞ。 インストール: .zip ファイルをダウンロード …

イベントとトークス

6/30のPython Workshop the Edge 2007に参加してきました。楽しかったですねー。で、感想はともかくとして、ライトニングトークスがあったのですが、急遽飛び入りでトークスやらせていただきました。いや、トーカーの渋川さんにあおられて、話したいネタもあ…

メソッドをインスタンスに対して動的に追加する方法

(クラスインスタンスにメソッドを動的に追加する方法について。クラスに対してメソッドを動的に追加するのは簡単かつ自明だけど、インスタンスに追加するのはひとひねり必要です。)Pythonのクラスインスタンスには自由にアトリビュートを追加できる。データ…

秋イベントの申し込み

オブジェクト倶楽部秋のイベントが、11/17(金)の夜にあります。実はもう申し込みを締め切ってしまったのですが、明日2日(木)の正午から、追加で10名だけ追加申し込みを受け付けることになりました。今回、100人弱しか入れない場所しか用意できず、とても残念…

みんPy写経会

昨日第1回がありました。参加者は5名。 http://qwik.jp/minpyshakyo/5.htmlPython初心者も多くて、なかなかいい感じです。本自体が、「Python入門」のみならず「プログラミング入門」に近いのも、幸いしてるかな。第2回以降からの参加も歓迎です。次回は10/…

easy_installのオプション(削除)

Or maybe you can use $ easy_install -m TurboGears to remove old version, and use $ easy_install -U TurboGears to force install new version

Python DevCamp 2006に行ってきました

というわけで3日間Python漬けになってきました。わりと黙々とプログラミングしている時間が多かったです。もっと他の人としゃべればよかったかも。 Webアプリスプリント Webチャットは、いちおう非同期で(ポーリングせずに)動くようになったものの、再接続し…

Python DevCamp 2006

明日から富士でおこなわれるPython DevCamp 2006に行ってきます。泊りがけでコーディング(+ドキュメント)ざんまいということで、とても楽しみ。http://nagosui.org/Nagosui/Misc/temporary-items/events/devcamp2006sここで、いくつかトラックと言うかコー…

**表記は便利だ

さて、この仕組みはどうやって実現されているかというと、turbogears/widgets/forms.py の CompoundInputWidget.params_for(self, item, **params)で実装されている。このメソッド自体はTableFormのテンプレートから呼び出される。こんな感じになっている(抜…

WidgetsのTableFormと、「**」表記について

WidgetsのTableFormは、複数のWidgetを詰め込んでフォームにできる。詰め込むのはもちろんINPUT要素になるようなWidgetで、たとえば以下のように書ける。(書いてる本からの抜粋) from turbogears import widgets class EditUserWidgets(widgets.WidgetsList)…

日付のパース

time.strptime(string, format)を使う。 http://www.python.jp/doc/release/lib/module-time.htmlstrftimeはdatetimeモジュールの各クラスにあるのだけど、strptimeはtimeモジュールにしかないので注意。 日付のパースは、こんな感じが楽かしら。 y,m,d,_,_,…

Pythonのコードサンプル

Pythonのライブラリのリポジトリとかコードカタログとかイディオムみたいのってどこにあるんでしょうか?と思ったので整理してみました。 PyPI – the Python Package Index · PyPI python.orgの中にある、いろんなパッケージのリポジトリ。有名どころとかい…

ファイルサイズを定期的に記録するPythonスクリプト

現行の進み具合を記録するために作成しました。Windowsのタスク(ってわかりにくい名前だよなあ。タスク定時実行の機能のことです)を使って、1時間おきに記録するようにしています。ファイルが大きくなれば、まあ仕事も進んでいるかな、と。 import sys impor…