2007-12-31

Virtual Python

Web アプリの練習でもしようと思いまして、CGI(今さら)にすることにしました。で、借りているサーバには Python 2.4 が入っているのですが、これだと Python 2.5 に標準で入っている SQL 関連のモジュールだとかを個別にインストールしないといけません。さらに、easy_install 使うときも、やれ PYTHONPATH がどうしたとか知る必要もあります。いや、知ればいいのですが、許してください。怠惰なもので。



Virtual Python なるものを見つけました。基本的に Python へのシンボリック・リンクを、~/bin/python に作ってくれて、ついでに ~/lib も作ってくれます。この python で easy_install すれば、ローカルフォルダにモジュールをインストールしてくれます。すごーい。



SQLObject とか Genshi とか使うと、もうほとんど Python プログラミングって感じではないですね。ライブラリ呼んでるだけ。



2007-12-30

村上龍 / 愛と幻想のファシズム

上下巻を読了。好き嫌いで言うと、「希望の国のエクソダス」や「五分後の世界」がいいですね。この手の作品を読んでいると、無力感に襲われます。

[...]誰でも幸福になることはできる、だが貧乏人には快楽はない (上巻 p.61)

恐らく腹を立てているに違いないが、金持ちはケンカをしない。ゆう然と見ているだけだ。 (上巻 p.287)

かっこいいな、金持ち。必死ではない、というのは生きやすさという点での、重要なファクターなのかも知れません。

情報のない人間は、情報があればどんなものでもそれにとびつく (下巻 p.309)

ネタをネタと、的。この小説の中で、スーパーハカーが世界をシミュレーションして可視化したら豚の耳の絵になる、そこに神の力を感じる、みたいな話が出てきます。そんなもん軸と可視化方法によったら、なんとでも写像できるだろうよ、と突っ込みそうになります。



ただ、金融だとか戦闘の話になると、私は知らないことだらけなので「へぇ」と感心してしまいます。たぶん、ちょっと知識のある人が読んだら、そんなわけあらへんやろうという気分になることでしょう。




愛と幻想のファシズム〈上〉 (講談社文庫)



愛と幻想のファシズム〈下〉 (講談社文庫)



2007-12-29

アルカディア

最近、銀座のバー「テンダー」に行きました。お目当ては、新橋さんの「アルカディア」。ずーっと飲みたいなぁと思っていたのですが、タイミングを逃していました。カウンターに座ったら、隣の人が既に飲んでいたり、作ってもらうおうかなぁと思ったら隣の人が注文してしまったり。



コーヒーリキュールに、卵黄、生クリーム、メロンリキュールをシェイクするのですが、予想以上に甘ったるくなかったです。もっと、でろでろした味だと思っていました。うまー。



2007-12-28

風邪ひいてまんねん

今日(27日)から有給休暇だったのですが、鼻水と頭痛のため、ひたすら寝ました。何をやってるんだか。夕方になって仕事がのこっていることを思い出し、しばし勤労。明日からは自由研究にいそしみます。



2007-12-25

レンタルサーバ vs 自宅サーバ

わーい Web アプリデビュー、と思っていたのですが、借りているレンタルサーバに、Python 2.5 や SQLObject がインストールされていませんでした。レンタルサーバを自力でセットアップしたり (SQLObject をインストールする etc)インストールをお願いしたり(Python 2.5 とか)するのと、自力でサーバたてるのと、どっちがコストがかからないかというトレードオフです。データ転送量はたかが知れているという前提で。



レンタル料 vs 電気代ですね。手間の種類は違いますが、どっちに転んでも同じくらいの手間がかかりそうです。サーバ管理のことなんて、ほとんど知らないし。



2007-12-24

O/R マッパーが、データベース入門の敷居を下げる仮説

みんなの Python Web アプリ編」をちまちま読んでいます。これまでデータベースとかよく分からないよ、と思ってずっと避けてきたのですが、排他制御的なこともやってくれると書いてあったのでちょっと触ってみましたが、やっぱり面倒だなぁと思いつつ読みすすめていって、O/R マッパーの章に突入し、そう言えば TurboGears で使ってる O/R マッパーって何だっけ、と SQLObject を見つけました。わー、すごい。これ分かりやすい。(書籍で紹介されている simplemapper.py は見ただけ)



というわけで、みんPy Webアプリ編 p.123 の dbpole.py を、SQLObject を使って書き直してみました。



ちゃんと SQL も分からん奴が、O/R マッパーなんて使うなと先輩方に言われそうですね。set メソッド発行するたびに UPDATE してるとか、まあいろいろ富豪的に過ぎるところもあります。ですが、こうやって入門の敷居が下がっていくことで、技術というのは使われるようになるのでしょうねぇ、とてきとーなことを言ってみる。



# coding: utf-8

import sqlite3
import sqlobject
from httphandler import Request, Response, get_htmltemplate
import cgitb; cgitb.enable()

form_body = u"""
<form method="POST" action="/cgi-bin/dbpole.py">
  好きな軽量言語は? <br />
  %s
  <input type="submit" />
</form>"""

radio_parts = u"""
<input type="radio" name="language" value="%s" />%s
<div style="border-left: solid %sem red; ">%s</div>"""

class LanguagePole(sqlobject.SQLObject):
    language = sqlobject.StringCol()
    value = sqlobject.IntCol()

def incrementvalue(lang_name):
    item = None
    for item in LanguagePole.select(LanguagePole.q.language == lang_name):
        item.value += 1
    if not item:
        i = LanguagePole(language=lang_name, value=1)

sqlobject.sqlhub.processConnection = sqlobject.connectionForURI("sqlite:/path/to/db")
try:
    LanguagePole.createTable()
except:
    pass

content = ""
req = Request()
if req.form.has_key("language"):
    incrementvalue(req.form["language"].value)
lang_dic = {}

for pole in LanguagePole.select():
    lang_dic[pole.language] = pole.value

for lang in ["Perl", "PHP", "Python", "Ruby"]:
    num = lang_dic.get(lang, 0)
    content += radio_parts % (lang, lang, num, num)

res = Response()
body = form_body % content
res.set_body(get_htmltemplate() % body)
print res




2007-12-23

この冬一番

さすがこの冬一番の寒さ、エアコンつけてても寒気がするし関節まで痛いよ、年をとると寒さに弱くなるなと思っていたのですが、どう考えても風邪の症状なので、寝てました。11時間くらい。随分、よくなったので、お出かけです。



2007-12-21

江國香織 / いくつもの週末

仕事で片道1時間ほど電車に乗って出張しました。電車に乗る前に、買った本です。

東京とアワーというものは、昼間みてもちっともきれいではないのに、夜みるとどうしてあんなに素晴らしいのだろう (p.64)

ああ、それは本当にそう思います。職場も自宅も東京タワーに近いのですが、昼の東京タワーは見てられません。でも、夜の東京タワーはよいです。とくに近くから見たときの、あの太い鉄の紅白の脚の照らされ具合。

幸福にしたりされたりする方が、教育したりされたりするよりずっと素敵だ。(p.141)

ふーん。




いくつもの週末 (集英社文庫)



2007-12-20

Python で CGI

みんPy Webアプリ編を買いました。前半は CGI を使っていて、こういうの大事かも。TurboGears みたいなフレームワークや、Plone みたいなのを使うのは確かに簡単です。が、安価なレンタルサーバでデーモンを走らせられるところって少ないと思います。少なくとも私は見つけられませんでした。なので、CGI で、っていうのは重要。いや、金払うとか、自宅サーバにすればいいんですが、まあほら。あと、この本には認証についても簡単に触れられていて、なかなかプログラミングしたくなる本です。




みんなのPython Webアプリ編 [みんなのシリーズ]



2007-12-08

Python for S60 が認証済アプリケーションになっている

Python for S60 が認証済アプリケーションになっていました。手持ちの Softbank の Nokia 端末にインストールできるんでは? と色めきたってインストールしてみたら、あっさり成功。fubuki.py も使えました。でも、もう Wiki で TODO 管理してないんですよねぇ。