TokuLog! - の構造と解釈 -
ここは綺麗に表示されないので、TokuLog!の方がおすすめですよ。2005-04-02(Sat)
■ もうちょっと続けます
昨日のはもちろんネタです。が、chalow な日記を終わるのは本当です。
↓ここに移動します。 http://tokuhirom.dnsalias.org/~tokuhirom/tokulog/
2005-03-29(Tue)
■ 肉の日リリースですよ
http://tokuhirom.dnsalias.org/~tokuhirom/wiki/inamode4
というわけで、イナモデ4 0.1.1 リリースです。
Cheetah 使うようになったのが最大の変更点かと。
- イナモデ4自身はクリッピングできないようにした
- Clipping 時に via 表記をつけるようにした
- Bloglines/ i-know.jp からの referrer は無視
- Cheetah で富豪的に
- pre の中で箇条書が効いている問題に対処
- 編集ボックスの大きさを「大きい」の状態に固定
- ブログとして使いやすいようにした
2005-03-25(Fri)
■ Bloglines の Clip it! を書換える
http://livemark.jp/dev/archives/2005/03/bloglinesaae.html
LiVEMARK では Bloglines の Clip it! なリンクを LiVEMARK にブックマー クするようにしてしまう JavaScript を開発した模様。
これはイイですね。Bloglines で Clip しても、ポケット一つ原則に反し てしまうし、使いにくかったので使ってなかったんですが、これは良いか も。
via: http://tokuhirom.dnsalias.org/~tokuhirom/inamode4/462.html
2005-03-23(Wed)
■ CherryPy はそのまま見せても大丈夫?
http://www.cherrypy.org/wiki/CherryPyProductionSetup
50hits/sec 以下で、HTTP/1.1 や SSL を必要としないサイトなら大丈夫 だそうな。
そうでなければ Apache の裏で動かすべし。
2005-03-22(Tue)
■ 認証系は結局 CSAuthenticate 使うことにした
自分で実装するのもアホらしい故。
[py] class ViewOnly:
pass
class Admin(CSAuthenticate):
pass
cpg.root = ViewOnly() cpg.root.admin = Admin() [/py] みたいなイメージで。
オブジェクトを使ってるから継承でなんとか出来るんだよなぁ。難しく考 えすぎてた。
んで、イナモデの場合には、Admin の方に doEdit とかを実装すればいいっ てこった。
■ cherrypy2 と認証
CherryPy を使うことにした一つの理由は認証系だが、
from cherrypy.lib.csauthenticate import CSAuthenticate
を使えばよさげ。
[src]
> csauthenticate.py <
class CSAuthenticate
def _before def checkLoginAndPassword def generateSessionId def doLogin def doLogout def logoutScreen def loginScreen
[/src] みたいな感じのモノになっている。
どうやって使ったらいいのか、資料を漁ってはみたものの、見つからない。 Cherrypy wiki を漁っても、「Recipie に CSAuthenticate の使い方を登 録しよう」という TODO が登録されているだけだ。
仕方がないので、ソースコードを眺めてみる。
ふーむ。継承すればいいだけっぽいな。
……できた。が、サイト全体に認証が必要になってしまっているっぽい。 うーん。ソースを見た感じでは、外部からツッツいても、かける範囲を 「美しく」変えるのは難しいっぽいなぁ。
継承しないで、doLogin と doLogout を呼んで使おうかなぁ。その場合で も、内部構造に激しく依存するなぁ。CSAuthenticate._before() の中身 が重要だからなぁ。というか、色々問題ありすぎる。
HTML がライブラリの中に直書きされてたりとか……。自分で書いた方が いいかも。
「ログインしていれば管理者向けの画面が見える」仕組みを作ろうとして いるのであって、ページそのものに認証をかけるつもりは無いので、 CSAuthenticate は向いてないのだ。
「POST されてきたユーザIDとパスワードを使ってログインする」のと、 「ログインしているかどうかを判断する」のと、「ログアウトする」の3 つの機能が欲しいのだ。
■ イナモデ5とcherrypy
cherrypy base でホゲホゲと書き直し中。というか、大体出来た。コード の総量は 570 行。うち、空行は 108 行。
ところで、こねくりまわせばこねくりまわすほどコードは短かくなるわけ だが、アプリケーション特有な部分が存在することからそれにも限界があ り、一定以上の短さにはならない。これを言語のエントロペーと呼ぶ、と かいう話を誰かがしていそうだと思った。
cherrypy が CGIKit と比べて優れているなぁ、と思ったのは URL が予測 できるところ。SEO 的に見て、? が含まれる URL は嬉しくないので。
■ cherrypy
ほげほげと cherrypy でプログラムを書いてみる。なかなか面白い。 cgi.py を使って書くよりはずっと楽だなぁ。
しかし、debug 用に log を取りたいのだが、これは
from cherrypy import _cpdefaults
して
_cpdefaults._cpLogMessage('hoge', 1)
とかやるか、logging で別個に取るしか無いのかな。
自分で logging 使うのは面倒だし、プライベートメソッド呼びまくるの も美しくないし。どうしたものか。
GET メソッドの場合は unquote してくれないという罠。urllib.unquote を自分で呼べ、ということか?ただ単に未実装なだけのような気もする が……。
2005-03-21(Mon)
■ CherryPy
CherryPy について勉強してみる。なかなか良い感じである。cherrypy1 の時にはコンパイルとか必要で、使いにくいと感じていたのだが、 CerryPy2 は良い感じだ。
CherryPy2 も大体把握できた。
Cheetah + SQLObject + CherryPy2 が全部使えるようになったので、本題 の Subway に入れるぞ。
2005-03-20(Sun)
■ 犬年齢
http://www.strout.net/python/dogyears.py
犬の年齢は人間の7倍だそうな。
[esc] <script type="text/javascript" language='JavaScript'> function dogyear() {
var realage = document.getElementById("realage");
var dogage = document.getElementById("dogage");
dogage.innerHTML = realage.value*7;
} </script> <form action="#" onsubmit="dogyear()">
<input type="text" name="realage" id="realage" value="20" /> <input type="submit" value="calc!" />
</form> <div id="dogage"></div> [/esc]
■ 文字列の並びを逆にする方法
http://tokuhirom.dnsalias.org/~tokuhirom/effectivepython/moi
んんー。びみょ。やっぱり string.reverse が欲しいな。
■ PyGoogle
http://tokuhirom.dnsalias.org/~tokuhirom/effectivepython/moi
使いやすくてよさげ。何に使うかってことが最大の問題だけども。
とりあえず使いたくなった時にすぐ使えるように Effective Python に書 いておいた。

