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

inspectでマクロもどき

inspect.currentframeを使うと、関数の呼び出し元のモロモロにアクセスできます。ローカル変数の辞書にも。すると、呼び出し元に好き勝手に変数を追加、つまりマクロ的なことが出来ちゃいます。 def def_getter(*names): frame = inspect.currentframe(1) lo…

Windows上のPythonインタラクティブシェルでタブ補完する

WindowsでPython2.6のインタラクティブモードでタブ補完をしたい場合に使うバッチ - 試行錯誤と創意工夫(S!アプリ開発日記+α) によると、PYTHONSTARTUPに適当に追加すればよいそうです。 PYTHONSTARTUP環境変数に指定されたスクリプトは、インタラクティ…

HTMLを可愛く出力

HTMLを丸ごと書くと大変なので、自作WEBページでは、一部を自動生成しているのですが、できれば、読みやすいHTMLを出力したいものです。 いわゆるpretty print lxmlやBeautifulSoapには、HTMLを可愛く出力する関数・メソッドがあります。 まず、BeautifulSou…

ED 化物語

高校時代の友人が訪ねてきた。彼に付き合って入った、某アニメ・コミック関連商店 CDの陳列棚には、こうかかれていた 【OP 化物語】【ED 化物語】 「オープニング化ものがたり?エンディング化ものがたり!? い、一体、どんなアニメなんだ!?」 私は友人に…

PyQt4でシンタックスハイライト

PyQtでテキストの色分け表示をする方法を調べた。次のページを参考にした。 http://doc.trolltech.com/qq/qq21-syntaxhighlighter.html とりあえず、Pythonの3連クオテーションの文字列をハイライトした。だが、長いテキストになると反応が鈍く、実用にはな…

MUGENクローン製作中

PythonでMUGENクローンを製作中です。大学が長〜い夏休みなので、ダラダラと。 しかし、完成する兆しがありません。 式のパースにYACCを勉強したり、設定ファイルでパラメータ名と型を効率よく定義するためのDSLを作ったりなんだリしてるうちに、かれこれ1…

CmpToKeyをCythonで

名前順でソート(XPスタイル) で引用したCmpToKeyを、Cythonで書きなおしてみた。 参考: Cythonを使ってみた - loooo まず本体 #encoding:utf-8 #cmp_to_key.pyx from functools import partial cdef class _K(object): cdef readonly cmp, obj def __cin…

アセンブラを知らない子供たち

という名のページ がありました。 昭和63年生まれの私は、当然、アセンブラを知りません。十進BASIC → C++ → Delphi → Turbo C++ → Python と進んできたので。 10年ぐらいしたら、『C言語を知らない子供たち』でしょうね。 趣味グラマの私は、Python拡張は…

かえ〜ってきたぞ!かえ〜ってきたぞ〜!

投票すませて帰ってきました。

名前順でソート(XPスタイル)

glob.glob()で得られるファイル名の順番は、名前順ではないことに注意。001.jpg, ... , 100.jpgの画像フォルダ内をglob.glob()して得たリストの順番は名前順ではない。list.sort()すればいいけれど。 peroonの日記 しかし、list.sort()すると、1.jpg, 10.jpg…

とおいみやこにかえらばや

おかげさまで大学院に合格しました。明日21日には、タイトルの通りです。returnは、9月になります。 知り合いでこのブログを読んでいる方はいないと思いますが、一応。

基数の定義

倉田令二朗・篠田寿一の「公理論的集合論」の基数のところを読んでいて、 ちょっと引っかかった所がありました。 「公理論的集合論」では、こんな定義になっていました。 集合XとYの間に全単射が存在するとき、XとYは対等(X〜Y)と言う。 整列可能定…

さよならIE6 - Firefox の IE6化

IE6 No More という運動が始まったそうです。 友人と私のWebページ (訪問者は友人のパイナップル目当てですが)の、 ここ1ヶ月の訪問者のブラウザを調べた所、26.20%もの人がIE6を使っているようでしたので、 うちのページも、IE6 No Moreに参加する事にし…

あなたの「耳年齢」測ります (2)

あなたの「耳年齢」測ります で書いたスクリプトを実行ファイルに変換してみました。 exeだからって、どういうわけでもないのですが、一応公開します。 Webページ 一応ついでにsetup.pyと本体ソースも掲載。 #encoding:utf-8 #setup.py from distutils.core …

プレスバーガー算術

おいしそう・・・いや、不味そう?歯ごたえはありそうだ

あなたの「耳年齢」測ります

ご存知の方も多いと思いますが、「モスキート音」というのがあります。何年か前、テレビでやっていました。 年を取るほど高音は聞き取れなくなるので、 蚊の羽音のような高い音は、オヤジは気にならないが、聞こえる若者にはすごく耳障り。 といった代物です…

どうでもいいじゃん、",".join(seq)でもseq.join(",")でも

チョット前に、なぜjoinメソッドは、 ["a", "b", "c"].join(",") ではなく、 ",".join(["a", "b", "c"]) なのか? ということが、盛んに書かれていたみたいですが・・・ Pythonの文字列連結(join)にまつわる議論 まとめと考察(1) そろそろ'-'.join(seq)に…

C言語を教えてはいけない

「Rubyは洗脳言語」とは、どういうことか?と、思って調べていたら、『C言語の洗脳』なる記事を見つけました。 C言語はプログラマなら誰でも一度は習うだろう言語だが、本当は、C言語は抜群に優れた万能言語ではないと言うお話。 C言語の洗脳 (上の元ネタ)…

アッカーマン関数

アッカーマン関数(アッケルマン関数・Ackermann function)という関数があります。 def ack(m, n): """アッカーマン関数""" if m == 0: return n + 1 elif n == 0: return ack(m - 1, 1) else: return ack(m - 1, ack(m, n - 1)) 一見、ちょっと奇妙なだけ…

イテレータのコピー

イテレータはコピーできない。 >>> import copy >>> def it(): ... for i in xrange(10): ... yield i ... >>> list(it()) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a = it() >>> b = copy.copy(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> Fil</module></stdin>…

埋め込みPython?プリプロセッサ?テンプレートエンジン?

MUGENと言う格闘ゲームエンジンで遊んでいるのですが、キャラクターやステージを自作しようとすると、出来はともかく、スクリプトの記述に繰り返しが非常に多い。 何十回も書くのは面倒なので、Pythonでどうにかできないか、と、作ってみました。 まず、埋め…

list.sort : sorted random.shuffle : shuffled?

配列のシャッフル を見て、 リストを変更するlist.sortに対し、新たなリストを返すsortedがあるように リストをシャッフルするrandom.shuffleに対応する、「shuffled」関数を作ってみました。 from __future__ import print_function import random from tim…

random.shuffled

前稿でshuffled関数を作りましたが、randomモジュールはPythonで書かれているので、(C言語で書かれたarrayやcStringIOと違い)後から関数を好き勝手に追加できます。 >>> import random >>> def shuffled(x): ... x &#061; list(x) ... random.shuffle(x) .…

Pythonによるデザインパターン

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)を読みました。 私はPythonでばっかり遊んでいるのですが、PythonとRubyとは基本は同じ機能のように見えるので、Pythonによるデザインパターンに翻訳してみようと思います…

マクローリン展開によるsin関数(Python)

マクローリン展開によるsin関数 に触発されて、Pythonでも同じ事をやってみました。 ・・・と言っても、Haskellの直訳はしません(できません)。 書いてみたら、イテレータ・ジェネレータだらけに・・・。 #sin.py from __future__ import ( with_statement…

実装継承を使うタイミング

いまだに継承を使うタイミングが分からない 委譲より実装継承を使う、というかStrategyよりTemplate Methodを使うのは、 クラス独自の機能追加が必要なときではないかと思います。 pythonのthreading.Threadクラスは、 runメソッドをオーバーライドすると、 …

タスクトレイに格納されるアプリの例 wxPython

from __future__ import ( with_statement, division, print_function, ) import wx class Frame(wx.Frame): def __init__(self, parent=None): wx.Frame.__init__(self, parent) # タスクトレイに入れるアイコン self.ico = wx.Icon("dw.ico", wx.BITMAP_TY…

Convention over Configuration パターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) "Convention over Configuration(Co…

Convention over Configuration パターン (2)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) CoCで重要なのは、まず規約を良く練…

終わったパターン

これで「Rubyによるデザインパターン」のPython訳は終わりです。我ながらひどい出来ですが、それでも来てくださる人がいたようです。ありがとうございました。 「実戦に勝る練習は無し」と、どこかで聞いたことがあります。 きっと、その通りなのでしょう。 …