トップ 追記

TokuLog! - の構造と解釈 -

ここは綺麗に表示されないので、TokuLog!の方がおすすめですよ。
2000|01|02|
2003|02|03|04|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|

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 つの機能が欲しいのだ。

空行を数えるワンライナー

 ruby -e 'puts ARGF.readlines.find_all{|x| x=="\n"}.length' *.py

こんな感じで。

イナモデ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 に書 いておいた。