2009-06-25

wxPython の Event.Skip()

wxPython のことなど。別に中学生と張り合っているわけではありません。張り合ってませんったら。



Ctrl+X とかの、キー押下イベントをキャッチしたいのです。でも TextCtrl を使っているので、特定のキーコンビネーション以外は通常通り処理したいわけです。まさか全てのパターンでの処理は書きたくない。



ウィジェットのほうを探しても見つからないなぁと思ったら、Event オブジェクトに Skip() メソッドというのがありました。

This method can be used inside an event handler to control whether further event handlers bound to this event will be called after the current one returns.

このメソッドをイベントハンドラ内で使用すると、そのイベントハンドラ終了後、既にバインドされている他のイベントハンドラでも処理するかどうかを制御できる。

ウィジェットではなくて、Event オブジェクトのメソッドなのですね。なるほどなぁ。



import wx

class App(wx.App):
    def OnInit(self):
        frame = Frame()
        frame.Show()
        return True

class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title="my frame")
        self._text = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        self._text.Bind(wx.EVT_KEY_DOWN, self._handlekey)
        wx.BoxSizer(wx.VERTICAL).Add(self._text, flag=wx.EXPAND)

    def _handlekey(self, event):
        if (event.GetModifiers()&wx.MOD_CONTROL and
            event.GetKeyCode()==ord("X")):
            print "^X pressed"
        else:
            event.Skip() # <= ここ

if __name__ == "__main__":
    app = App(redirect=False)
    app.MainLoop()


2009-06-23

中学生ハカー

Python Code Reading 10 に行ったら、若いハカーがいました。中学生で、Java やってて、Python に興味を持ち始めて、ゆくゆくは OS を作りたいらしく、カーネルの勉強会にも顔を出しているとか。ブログを覗いてみると、Java のマルチスレッドプログラミングに言及していたりするわけです。うひゃあ。おっちゃんは、中学生のとき並列処理とか知らなかったよ。



プログラミングだけではなくて、テニスなんかも嗜むという男前な少年です。応援したくなります。困ったことがあったら、おっちゃんに言うてみ、と。自分が成しえない夢を託してしまいそうです。



で、森博嗣の「有限と微少のパン」を思い出しました。

子供に夢を託した方が、自分が夢を実現するよりも楽だからだ。(p.200)

確かに。OS を作るという一点にしても、彼のほうが遙かに実現確率が高いです。まあ私は彼の父親ではないし、OS開発どころか、父親や夫というポジションを得ることさえ成しえなさそうですが。



パトロンっていうのも似たような立場なんでしょうけれど、自分が何をしているか分かっている点で、健全なのかも知れません。私は、お金も知識も与えられないので、応援だけしています。ってゆーか、中間試験と高校受験はやっとけ、少年。



と、油断させておいて、彼が試験に忙殺されている隙に、こっそり thireading と multiprocessing モジュールのコードを読んでみます。






2009-06-11

Deskography

Deskography という、デスクの写真を公開するシンプルなサービがあります。いやもうそれだけ。それ Flickr (r


ミニマリズムに憧れるので、



とかが好きです。なかなか、ここまでそぎ落とせませんが、そぎ落としたいと思っています。そのうち、私のデスクもアップロードするかも。



2009-06-10

Presentation Zen: The Video

Presentation Zen のビデオが出ました。ブログに書かれている内容とかなり重複しているので、特に新しい知見があるわけではないです。





YouTube: Presentation Zen: The Video

ですが、このプレゼンがうまいです。いやまあ、こんなかっこいい状態でプレゼンする機会なんて、私にはないのですが、それにしてもうまいです。あと、トピックが後ろにぽわーんと出てきて、ぽわーんと消えていくエフェクトもかっこいいです。

夏頃にちょっと気合いの入ったプレゼンをする機会がありそうなので、参考にしてみます。





2009-06-09

シュレッダーはさみ

ネットで買えるものは、基本的にネットで買うという生活をしています。特に、書籍と雑誌。領収書だとか、送り状みたいなものをずーっと保存していてもしょうがないので、捨てるわけですが、今までそのまま捨てていました。誰も私の個人情報なんぞほしがらないだろうし、本気でほしければすぐに調べられると思うからです。



ですが、別に「私の」情報が欲しい人はいなくても、「誰かの」情報が分かればいいという人はいるでしょうし、そういうときにゴミってなぁ、と思いはじめました。というわけで、シュレッダーはさみを購入。



紙がつまりやすいですが、必要にして十分です。



切り刻んだ紙をスキャンして合成すれば、簡単に復元できることは知っています。切り刻んでいない紙と差があればよいのです。ジャングルで虎に遭遇したとき、虎よりも速く走る必要はなくて、一緒に居合わせた人よりも速く走れればよい、という考え方です。我ながらゆがんでいます。






2009-06-02

Things のタグづけが発散してきた

GTD 実践ツールとして Things を使っているわけですが、以前に採用した方法が発散してきました。



重要なプロジェクトには★、急ぎのプロジェクトには☆、とタグ付けをしていましたが、これがいまいちです。★と☆が MECE になっていません。これが混乱の元凶でした。



というわけで、☆を廃止。今週するプロジェクトには★をつけます。で、★のついているプロジェクトの中から、最大でも3つくらいまで Today (これも Things 上では黄色い★マークがつく)をつけておきます。



こうしておいて、まず Today のタスクに集中します。で、Today が全部なくなったら、次の3つを選ぶ。と。さて、どうなることやら。



2009-06-01

俺の話を聞け - プレゼンを聞いてもらうには

Python Code Reading も 10 回目があるようで、わくわくです。前回の 08 で、私にとって最大の難関は、勉強会とは言えども、非職業プログラマがプログラマ相手にプログラミング言語の話をする、という状況をどう克服するか、でした。実績が明確な人や有名な人であれば、こんなこと気にしなくてよいです。プログラマではなくても Tim O'Reilly だったりね。



そんなわけで、自己紹介の段階でなんとしてでも、話くらいは聞いてやってもいいか、という内容を入れておかねばと思ったわけです。内容に異論や批判はあってもよいのです。めげますけど。けど聞いてもらえないと議論のテーブルにもあげてもらえません。わざわざ平日の夜に集まってもらったのに、ぼーっとしてただけ、というのは申し訳なさすぎます。せめて「聞いてたけど、それは違うんじゃあ」と思ってもらいたい。というわけで、2つの内容を自己紹介に入れておきました。



ひとつめは Python 1.x → 2.x への移行らしきものを見たことがある、ということです。オライリーの Python 本を読んだとき、1.x と 2.x の違いについても触れられていましたし、大学のサーバにも 1.6 と 2.1 の両方が入っていましたし、Python 2.x 非対応のライブラリなんかに遭遇してソースをいじったこともあります。日本で Python が流行りだしたのはもっと後の時期だったので、時期(時間ではない)という点だけを見ると、ちと話を聞いてもらえそうな気がしました。実際、1.x から 2.x への移行は初心者の私にも大した問題ではなかったです。



もうひとつは「ソフトウェアの機能ではなく、ユーザのベネフィットを伝える」という仕事をしている(ことがある)、ということです。Python 3.0 の新機能リストや変更点は python.org あたりにいけばすぐに分かりますし、個々の新機能の使いどころは PEP や雑誌にも載っていました。で、じゃあ、ユーザにとって総合的に何が嬉しいのか?というは意外となかったりするわけです。一方、仕事ではそれを伝えることを求められるのですね。伝えられているかは別にして。で、それを Python でやってみました、という話です。



という前振りのあとで、「Python 3.0 のベネフィットは読みやすさと書きやすさ」である、という乱暴なテーマで話したわけでした。ちゃんちゃん。