Python

フォームの扱いをどうしよう。

classを元にしたアプローチは、フォームに値を設定するのが面倒なことに気付いた。 さてどうしようか。 formは特別扱いでもいいかな。 ... <form name="searchForm" ...> <input type="text" name="name"/> <input type="checkbox" name="public"/> <select name="job"> <option value=""></option> </select> </form> ... template.forms["searchForm"].values = {"name":"aodag"} 問題…

Elementのlocal-name

どうやって取得するんだろう。 prefixとQNameは取得できるから。 localName = e.tag[len(e.prefix + ":"):] とでもやればいいのか? と、思ったらe.tagではprefixが名前空間に展開されている。 ってことは、nsmapを参照しないといけないのか。 e.tag[len("{" …

追記

考えてみたらoptionの内容はdictよりtupleのlistの方が良いな。 dictだと順序が保持できない。 リスト内包表記で手軽に生成できるってのが、本当の理由だったりする。

flexable

名前はtypoじゃないよ http://cheeseshop.python.org/pypi/flexableflexable is template engine with simple data structure. That is made up of str, unicode, dict, tuple, list and Element.

lxmlを使ったpush型テンプレート

webstringが結構よさげだったのだが、少し気になる点があった。 構造化したデータモデルをプッシュするのが少し複雑な気がする。 classが指定されているエレメント内のclassを使ってプッシュできない。 エレメントの出現順序に依存している部分がある。 もう…

webstringとマイクロフォーマット

webstringはマイクロフォーマットと相性がよさそうだな hatomに従っているhtmlはwebstringを経由してみると、全く違いが出てこない。

webstring

http://psilib.sourceforge.net/webstring.htmlcElementTreeとlxmlをエンジンにしているテンプレートエンジンのようなもの。 普通のテンプレートエンジンと趣が異なる。 通常はテンプレート内にタグやスクリプトレットを埋め込み、ロジック層やコントロール…

Python クックブック

http://www.oreilly.co.jp/books/9784873112763/

DeliveranceをWSGIFilterとして使う

まあ、entory-ponintがあるので、PasteDeployで設定しとこう [filter:deliverance] use = egg:Deliverance#main theme_uri = file://%(here)s/deliverance/theme.html rule_uri = file://%(here)s/deliverance/rule.xml とりあえずstatic-appで試そうとした…

東海Workshopの写真

age http://photozou.jp/photo/list/111448/333231

Workshop懇親会の後

巫女居酒屋が混んでいて入れなかったのが残念だ

東海Python Workshop01大盛況にて終了

30名の参加してくださり、大盛況に 正直、東海でいったい何人集まってくれるのだろうと考えていましたが、 杞憂に終わりました。 これまで東海地区ではPythonの集まりがあまりなく、 集まった人たちのなかでも、「やっとPythonの話ができる」という人も多く…

ToscaWidget 続き

さて前回は値をFormWidgetに設定して表示させた。 後は受け取る側の処理だ。 素の状態のWSGIアプリケーションで取得できるのは、GETのクエリ文字列やPOSTのコンテンツボディだけ。 dictになって渡ってくるわけではない。 これは、入力内容が必ずしもurlencod…

ToscaWidgetも試してみる(結局Paste)

サンプルが動きませんorz File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ToscaWidgets-0.1a2dev_r2777-py2.5.egg/toscawidgets/middleware.py", line 47, in __call__ environ['paste.registry'].register(toscawid…

PythonPasteの仕組み(っていうかsetuptools)

PasteDeployはWSGIアプリケーションの配備設定をiniファイル形式で書けるのだが、この裏ではどんな仕組みを使っているのか。 PasteDeployで設定ファイルに記述するときに、egg:Paste#wsgiutilsと書くと、Paste egg のentory_points.txt内からwsgiutilsを探し…

urlrelay

http://cheeseshop.python.org/pypi/urlrelay/0.6 ni先生から教えていただいたモジュール Colubridよりさらに、シンプルなWSGIディスパッチャ。 ところで、サンプルコードはデコレータに@がついてないのだが。 URLパターンとHTTPメソッドで実行するWSGIアプ…

Deliverance

http://www.openplans.org/projects/deliverance/ ルールベースで、テーマファイルとコンテンツファイルの内容を入れ替えたりできるフィルタ。 プロキシサーバーとして使うことも出来るし、WSGIミドルウェアとして使うことも出来る。 XPATHを使ったルールベ…

pingpong

erlangの軽量プロセスの説明に良く使われているpingpongの例をPython threadingで書いてみる。 # -*- encoding:utf-8 -*- """ """ from threading import Thread from Queue import Queue def ping(times, queue): """ """ for i in xrange(times): print "s…

東海 Python Workshop 01

登録人数が25名になりました。 LTネタもだんだん集まってきています。まだ、参加登録可能。 興味があるかたはPyJUG Workshopの登録ぺーじまで。 http://www.python.jp/Zope/workshop/200705

東海 Python Workshop01

やります。 http://www.python.jp/Zope/workshop/200705/

WSGI関連メモ

使うと思われるもの Paste Flup Twill py.test wsgiauth Colubrid Genshi FormEncode ToscaWidgets SQLAlchemy Pasteはwsgiアプリケーションを構築する時に便利なユーティリティ、ミドルウェア。config関係をどうしようかと思っていたが、これが一番親和性が…

FizzBuzzワンライナー

どうしてプログラマに・・・プログラムが書けないのか? 親分もやっているようなので参戦 print "\n".join([{0:"Fizz"}.get(i%3,"")+{0:"Buzz"}.get(i%5,"") or str(i) for i in range(1,101)]) 97バイト

twPrototype

twPrototypeはPyPIに2.4用のeggしか置いてない。 とりあえず2.5にインストールするために、eggを落として解凍してsetup.pyをでっちあげる。 #!/usr/bin/env python from setuptools import setup, find_packages setup( name="twPrototype", version="1.5dev…

wsgiauthでopenid

wsgiauthはopenid認証にも対応してます。そのまま使おうとしても足りないものがいくつか。 - python-openid - python-urljr - python-yadis 以上のモジュールが必要。 pypiに登録されてるのでeasy_installですぐ入れられます。簡単な使い方 from wsgiauth.op…

マージソート

id:Voluntasとの会話で出てきたので書いてみた #!/usr/bin/env python def mergesort(a): if len(a) in (0, 1): return a p = len(a)/2 f, b = a[:p],a[p:] return merge(mergesort(f), mergesort(b)) def merge(a, b, result=[]): if len(a) == 0: return r…

wsgiauth でBasic認証

WSGI認証ミドルウェアライブラリwsgiauthを使ってBasic認証 http://cheeseshop.python.org/pypi/wsgiauth ドキュメントが見つからない*1ので、ソースから使い方をチェック。 from wsgiauth import basic realm = "wsigh auth test" def authfunc(env, user, …

BearutifulSoup 使ってみたよ

id:kadoppe の人がYahooSearchをやってたので便乗 http://d.hatena.ne.jp/kadoppe/20070330/1175247772 # -*- coding: utf-8 -*- import urllib import urllib2 import pyexpat from BeautifulSoup import BeautifulSoup class YahooSearchRequest (object):…

immutableクイズ

http://www.nishiohirokazu.org/blog/2007/03/immutable.html 西尾さんとこにimmutableクイズ リスト(のようなものまでOK?) をハッシュのキーにするコードの中間を埋める. hashをなんとかすればいいので、__hash__を入れ替えてみる >>> x = [0] >>> x.__hash…

mod_wsgi 試運転してみていた

公式リリースがまちどおしいmod_wsgiをsvnから取って動かしてみてました。 導入はとても楽だった。 ./configure && make && make install でいいと思う。 僕はmakeしたあと手動でmod_wsgi.so をコピーしたけど。 (ちなみにlinuxだと.libsのしたにmod_wsgi.so…

wsgi environ

ドキュメントには書かれていないが, requestオブジェクトのenvironアトリビュートからWSGI環境辞書にアクセスできる. WSGIミドルウェアはこの辞書に情報をのせてくることが多いので要チェック