2009年3月31日火曜日

sax with HTMLParser

expatでShift_JISが扱えればベストなのですが、どうにもならない

<?xml encoding="Shift_JIS"?>

これが書いてあると引っかかるので、本文をutf-8にして回避することもできない。
んがー、どこもめ。
一行目削るしかないかなー。

2.6のxmlパッケージにはexpat以外のXMLパーサがないのが不思議。
xmllibはdeprecatedついてるけど、パーサはまだ生きている。
ココから引っ張るか、あるいはmarkupbaseからがんばるかな。
xml.sax.saxutils.XMLGeneratorを使いたいから、頭が痛い。

saxの構文は面倒くさいし、sax風のXMLFilterを書くのが一番早いかも。

つらい。
意外とPythonは不便。
Jythonに乗り換えたくなってきた。


あと、なんか知らんけどRailsの仕事が舞い降りてきそうだ。
すべて明示的に書いてきたPython文化から、暗黙文化に移るのはかなり抵抗がある。
でも1.9とcapとmerbには興味があるので、ひさしぶりにRuby触るのもいいのかもしれないな。

2009年3月27日金曜日

Real World Django

Real World Django

LJWorldcom運営における体験談か。
Modelをハードコーディングするなとか、拡張性にまつわる話。
スケーリングや構成にまつわる話など、興味深い。
PDFだけじゃなくて、お話も聞きたいなー。
Podcastとか公開してほしい。


昨日、駅前でホットペッパーの人が武富士の人に怒られていた。
何をしたのか知らんけど、駅前ばら撒きの一日の長というやつか。
けんかするなら端っこでしてほしかった。

2009年3月18日水曜日

parrot 1.0.0

http://www.parrot.org/news/2009/Parrot-1.0.0

きっと何かが起こっていると思うけど、何が起こっているのかわからない。
早くつながるといいなー

2009年3月12日木曜日

Seasar2

ためしてみた。
軌道に乗れば確かに結構早いですね。
HotDeployすばらしい。
しかし、開発はGroovyで進めて、
後にテストしながらJavaに移行すればHotDeploy同然なのではないかと思うのです。
ずっと書きやすいし。
Groovy大好きです。

サクサクとそこらじゅうに書いてあるけど、サンプルがちっとも見つからない。
さくさくならそれこそDjangoのように掃いて捨てるほどサンプルが出るはずなのに。
最初のマニュアルはあるけど、何もわからない人向けと、用語がわかる人のどっちつかずで
中途半端。
非常に読みづらい。
だれもサンプルを作ってくれなくても、サクサクならBlogやWikiぐらい作っておいておけばいいのに。

たとえば、EclipseのPluginで必要なものは何かを一望できる場所がない。
JEE対応Eclipse3.3以降で、
・Kijimuna
・Dolteng
・SAStrutsPlugin
・PropertyEditor
が必要と、さっと書いてあれば進めるのに、インストールの仕方を逐次読まなければならない。
初心者に親切だと思うかもしれないけど、書いてあるとおりに進めても完成しない。
突然、状況にあわせて書き換えろと書かれる。

どうせならEclipseもDIもわかる人にSeasarはどう便利なのか訴えるページを書けばいいのに。
ない。


Doltengで作ったプロジェクトはFreemarkerでコンパイルエラー発生しますね。

NetBeansのゆくえ

Tor Norbye's Weblog
JRubyもだめなのかなー。
やっぱりSunってJavaFXに本気なんだね。
NetBeansには期待してたんだけど、完成は遠いですね。
たまにアップデートして試用してますけど、重いし落ちるし。
Torがいなくなるのは残念です。

さて、いつかの安定のために、みんなつかってフィードバックしてあげてください。
dailyがHudsonから落とせて、すぐ試すことができます。
NetBeans Wiki: Python

2009年3月10日火曜日

good bye fabric

paramikoがCTRモードに対応していないので、別れることにした。

どうしてもparamikoを使いたい人、
あるいはIncompatible ssh serverと出てしまう人のための記録。

pycryptoを最新版にしましょう。

paramiko.transport._cipher_info.update({
'aes128-ctr':{ 'class': AES, 'mode':
AES.MODE_CTR, 'block-size': 16, 'key-size': 16 },
'aes256-ctr':{ 'class': AES, 'mode':
AES.MODE_CTR, 'block-size': 32, 'key-size': 32 },
})

Capistranoって便利なのかな。
でも、とりあえずbashでいくわ。

2009年3月2日月曜日

10 minutes topic

http://d.hatena.ne.jp/CortYuming/20090224/p1


def deal(member, data):
"""
>>> deal(3, "123123123")
['111', '222', '333']
>>> deal(4, "123123123")
['12', '23', '31', '12']
>>> deal(6, "012345012345012345")
['000', '111', '222', '333', '444', '555']
>>> deal(4, '111122223333')
['123', '123', '123', '123']
>>> deal(1, '012345012345012345')
['012345012345012345']
>>> deal(6, '01234')
['', '', '', '', '', '']
>>> deal(2, '')
['', '']
"""
from itertools import izip, cycle
a = [''] * member
for d, m in izip(data[:len(data) - len(data) % member],
cycle(range(member))):
a[m] += d
return a


見ないようにしたのに、似たような回答になってしまった。
本当は初期値を準備せずにうまいことやりたかったんだけど。
たとえばreduceは、どんな理論か知りませんが、適切に初期値を準備してくれますよね。
文字列の += もいやな感じ。
行数を増やさずにjoinにしたい。

ワンライナーがかけるようになりたい。