2007-10-21

kid テンプレートから出力すると、jQuery の append() メソッドが使えなくて困った

web.py + Kid + jQuery を使っていると、jQuery の append() メソッドを呼び出しても、期待した副作用が起こらなくてびびりました。結論から言うと、kid.HTMLSerializer を使えば解決です。



やろうとしたこと:



以下のようなテンプレートがあったとします。ファイル名を foo.kid としましょう。



<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#">
  <head>
<title>foo</title>
<script src="jquery.js"></script>
<script>
  function bar() { $("#myparagraph").append(", World!"); }
</script>
  </head>
  <body>
<p id="myparagraph">Hello</p>
<input type="button" value="Press Me" onclick="bar()" />
  </body>
</html>


このテンプレートから、以下のような Python コードで HTML を出力します。実際にはテンプレートにパラメータを渡して、web.py 経由でブラウザにレスポンスしますが、まあ、それはよいとして。



template = kid.Template(source=file("foo.kid").read())
print template.serialize()


期待した動作は、ボタンをクリックすると、「Hello」と表示されている p 要素に「Hello, World!」と表示されることでした。が、何も起こらず。



なんで?:



(1) テンプレートからの出力が実は XML で、(2) jQuery の append() メソッドは XML ドキュメントには使えない(どこに書いてあったかは失念)から。



で、どうするの?



Python コードを以下のように、HTMLSerializer を使うように変更するとおっけー。



template = kid.Template(source=file("foo.kid").read())
serializer = output=kid.HTMLSerializer(encoding="utf8")
print template.serialize(output=serializer)


ふーむ。AJAX への道は険しい...。



2007-10-08

ファミコンゲームのジェットマン vs ジュウレンジャー

YouTube をだらだら見ていたら、ファミコンソフトのジェットマンとジュウレンジャーのレビューをしている動画がありました。笑える。ジュウレンジャーってちょうどバブル崩壊のころだったと記憶しています。そういう時代背景と、ゲームのクオリティに因果関係があるのか知りませんが(今年までテレビゲームを持ったことがなかった)、まあ関係ありそうだなと勝手に思っています。



レビューでは、ジェットマンは神ゲー、ジュウレンジャーは糞ゲーみたいな感じで、話が進んでいきます。確かにジェットマンは面白そうですね。ジュウレンジャーはボーナスステージとエンディングが絶望的です。







あとニコニコ動画にもありました。レビューした本人がアップしてないような気もしますが。





2007-10-01

愛することは技術か

何かを好きになるために努力すること」より

「天職」とか「運命の人」みたいなのがあって、そういうのに出会えさえすれば落雷に打たれたように好きになれる、というのって違うなーと思うんですよね。

えー! 嫌いになるのには理由がいろいろとあるのですが、好きになるときにはあんまり理由はないんじゃないかなぁというのが、個人的な感覚です。納豆だと「くさい、ねちょい、まずい」とか。でも、ゴルゴンゾーラはくさくてねちょいけれど、好きです。



でも、

エーリッヒ・フロムは「愛することは技術である」と言ってます

だそうなので、そういうことなのかも知れません(主体的判断ゼロ)。



就職してからやっている仕事は、割と好きです。失敗や、ストレスや、嫌なこともありますが、基本的には好きです。ただし、これは技術や努力によって好きになったのではなくて、「『好きだ』と思わないとやってられない」という自己欺瞞が隠れているかも知れないという難点もあります。いや、もちろん好きでやっているんですよ。念のため。