daemonfreaks.com

関西オープンソース2006とPythonista懇親会

posted by jun-g at 日, 19 11月 2006 10:36 JST

昨日18日は予定どおり関西オープンソース2006に行ってきたよ。

これまた予定どおり寝坊して昼過ぎに起きたので、現地に到着したのは15時ぐらい。13時からの「Plagger入門」と「プログラミング言語Haskell」どっち聞こうかなぁ、とか迷ってたけど、そもそもどっちも聞けねーよ、みたいな。

やや迷いながらもなんとか展示ブースのある部屋に到着。今年はメイドさんがいた。「あんまり話かけないでね」オーラをゆんゆん出しつつ、展示ブースを足早に見てまわって適当に資料をもらってから、セミナーをやってる5Fに移動。

ちょうど「オープンソースERP Compiereの技術と日本での事例」というのをやっていたので、潜り込んで聞いてみた。うちの会社の場合、ERPが担うべきシステムもすべてお手製で作っていて、業務側からの要望で入れた痒いところに手が届く機能が大量に実装してあったりするので、SAPだろうがこういったオープンソースERPパッケージだろうが、外部製のシステムに入れ替えるのは大変だろうなぁ、という印象(当り前か…)。ただ、そもそも僕自身が「一般的なERPでは(例えば受注管理、在庫管理などの)業務はこういうフローで処理する設計になっている」みたいなセオリー的な事を知らないので、そういった事の参考にはできるかなぁ、と思った。セオリーがあるのかどうかは知らないけど。

次はお目当ての「Pythonのオブジェクト指向入門」を聞いた。立見出まくりで大盛況。Python人気あるなぁ。セミナーの内容は、リストなんかの組込み型を使って、Pythonではクラスはこうなってますよー的な内容を検証かつ説明。「クラスは型」というのは確かに目からウロコやったかも。セミナー終了後、PyJUG Workshop運営部会の活動報告。いよいよ関西でも勉強会開催か?的な流れになっているので楽しみ。

次は「Webアプリケーションのアクセシビリティ入門」を聞いた。職場で「アクセシビリティ!ユーザビリティ!」と声高に叫んでるのに、自分で作ったページがアンチ読み上げブラウザな作りになっている事が発覚してしまった。不勉強を反省。職場のWEBデザインチームにアクセシビリティの勉強をさせる事にしようっと。

で、本日の真の目的である「Pythonista懇親会」に参加。対人恐怖症なので、酒の力を借りつつも楽しく過ごさせて頂きました。話相手になってくれた皆様、ありがとうございました。SH1.2 PYBLOSXOMのshunuhsさんにお会い出来た事と、柴田さんに「みんPy」にサインを頂けた事が最大の収穫、というかこれが闇の目的だったので、目的達成っと。セミナー講師の森さんと幹事(かつ同僚)の古畑さんは超GJという事で、皆様お疲れさまでした。

みんPyサイン

HOSPITAL NIGHT at TRIANGLE

posted by jun-g at 日, 19 11月 2006 09:33 JST

HOSPITAL NIGHT

17日の夜は予定どおりHOSPITAL NIGHTに遊びに行ってきたよ。

で、お目当てのHIGH CONTRASTのプレイは、ハッキリ言って最高すぎた。最初から最後まで全部ツボ。本当に最後の一曲まで楽しめた。腰痛の事なんて忘れて激踊りまくり!大興奮!ここまで楽しませてくれるDJは本当に久しぶりなので、感動した!

一方、「HIGH CONTRASTよりいいよ」という噂をちょろっと聞いていたもう一人のゲストDJ、LOGISTICSのプレイは、地味すぎて全然ダメやった…。あれはムリ。名前とは裏腹にどこにも持っていってくれなかったぜ、みたいな。

それにしてもTRIANGLEはやっぱりあんまり好きになれんな…。フロアの横幅が狭くて、前に行く人とバーに戻る人が何度も行き来するから落ち着いて踊ってられん。横に広かったらもうちょっとマシなのに。

関西オープンソース2006

posted by jun-g at 木, 16 11月 2006 23:58 JST

明日17日と明後日の18日、南港ATCにて関西オープンソース2006が開催される。去年までは開催場所が堺筋本町の大阪産業創造舘だったので、金曜日は昼から(本町の)職場を抜け出して遊びに行ったりできたけど、今年は南港なのでさすがに抜け出して遊びにいくわけにもいかず、金曜は諦めて土曜日だけ遊びに行くことにした。

Python関連は「Pythonのオブジェクト指向入門」というプレゼンと、PyJUGのブース出展がある。夜はPythonistaの懇親会があるとのことなので、こちらも事前に申し込んでおいた。楽しみ〜。

あ、そういえば明日(17日)の夜はHOSPITAL NIGHTがあるんやった。土曜は寝坊しないように気をつけないと。

トラックバックスパムが

posted by jun-g at 水, 15 11月 2006 20:49 JST

昨日、一昨日と大量のトラックバックスパムを喰らってしまった。昨日は仕事が終わって家に帰ってきたのがAM2:30頃で、それから大量のスパムに気付いて、慌てて削除したんだけど、このまま放置してたら今日も喰らっちゃうだろうなぁ、と思ったので、眠かったけどとりあえず急いでtrackback.pyを修正してスパム避けを実装しておいた。

--- trackback.py.orig	Wed Nov 15 02:58:41 2006
+++ trackback.py	Wed Nov 15 03:12:36 2006
@@ -87,6 +87,16 @@
         message = "A trackback must have at least a URL field (see http://www.sixapart.com/pronet/docs/trackback_spec )"
 
         if form.has_key("url"):
+            try:
+                import urllib
+                ret = urllib.urlopen(form['url'].value)
+                target = ret.read()
+                ret.close()
+            except:
+                target = ""
+            if not config['base_url'] in target:
+                print >> response, tb_bad_response % "Please paste any links to your blog."
+                return 1
             from comments import decode_form
             decode_form(form, config['blog_encoding'])
             import time

いわゆる言及リンクのないトラックバックは受け付けないようにしたかったんだけど、trackback.py内で当該エントリのURLを取得する方法を調べる余裕がなかったので、結局ここのサイトのURLがあればオッケーという適当な作りに。送信元ページ内のチェックもかなり適当。週末時間が取れたらもうちょっとちゃんと書き直す。つもり。

Pythonでミクシィ日記に投稿

posted by jun-g at 日, 12 11月 2006 18:19 JST

ミクシィ日記はチラシの裏扱いしているので「友人まで公開」にしている。でもそうしてると数少ないマイミク達はどうしようもないチラ裏日記ばかり読んでしまってこのブログを全然読んでくれない為、僕について「このゲス野郎め!」みたいな印象しか受けなくなってしまうという問題が考えられる。これは大問題!!

という事で、前の「vimでpyblosxomのエントリを書いてアップロードするvimスクリプトをpythonで書いた」を拡張して、「uploadEntry()」を実行したらエントリをアップロードしつつミクシィ日記にもタイトルとURLを投稿するようにしてみる事にした。

まずは同じような事考えてる人いないかな〜という事でググってみると、そのものズバリ「mizzy.org - ブログを書いたら mixi 日記に自動投稿」というエントリを発見。しかしPerlだった。うーん。ということで検索キーワードに「python」を加えて探してみたら、lirisさん作の「MIXI Pythonライブラリ」と、それをsetomitsさんがメンテナンスした「mixi python ライブラリ」を発見。素晴らしいっす。しかし、ライブラリには日記投稿系のメソッドが実装されていなかった…。めげずにもうちょっと調べてみると、Perlの「WWW::Mixi」には投稿系のメソッドも実装されているということで、これを参考にしながら、日記投稿メソッドを自分で実装することにした。

まずは「mixi python ライブラリ」からpymixiをダウンロードして展開。BeautiluSoupUniversal Encoding Detectorも必要、との事なのでインストール。僕はFreeBSDを使っているので、ports treeから、

# cd /usr/ports/www/py-beautifulsoup/
# make install clean
# cd /usr/ports/textproc/py-chardet/
# make install clean

でインストール完了。とりあえず動くか試してみる。

$ python mixidiary2txt.py -u MAILADDRESS -p PASSWORD

まったく問題なく動いた。という事で、元となっているクラスモジュール「mixi.py」に日記投稿用メソッドを追加する作業に。とりあえずWWW:Mixiのリファレンスを読むと、最低限必要なパラメータは

idミクシィID。
diary_titleタイトル。
diary_body本文。
submit画面遷移用パラメータ。
編集画面->確認画面遷移時の値は「main」。
確認画面->投稿時の値は「confirm」。

という事がわかった。後、クロスサイトリクエストフォージェリ対策(と思われる)ランダムトークン「post_key」が確認画面で発行されるので、確認画面から「post_key」を取得する必要がある事もわかった。

つー事で、「mixi.py」のクラス「MIXI」に以下を追加。

    def _post_diary(self, mixiid, title, body, submit="main", postkey=""):
        params = urllib.urlencode({"id": mixiid,
                                   "diary_title": title,
                                   "diary_body": body,
                                   "submit": submit,
                                   "post_key": postkey})
        try:
            f = self.opener.open("%s/add_diary.pl" % MIXI_BASE_URL, params)
            data = f.read()
            f.close()
            return BeautifulSoup.BeautifulSoup(data)
        except:
            return None

    def post_diary(self, title, body):
        soup = self._post_diary(self.mixiid, title, body)
        if soup == None:
            return False
        postkey = soup.find("input", {"name": "post_key"})["value"]
        soup = self._post_diary(self.mixiid, title, body, "confirm", postkey)
        if soup == None:
            return False
        return True

Pythonから使うには、

from mixi import MIXI
m = MIXI()
m.login(MAILADDRESS, PASSWORD)
m.post_diary("日記タイトル", "日記本文")

でOK。

これにて問題解決!!

<<  Page 120 of 127  >>