gzip.GzipFile がその必要もないのに
seek() と tell() を中で使っているせいで、
ストリーム (pipe とか、socket とか) からくるデータが展開できない、という問題が発覚した。
なんで? コマンドの gzip はできるのに。しょうがなく RFC1952 を読んで gzip をファイル形式を学習したあと
gzip.py にパッチをあて、ストリームでもちゃんと展開できるようにした。
Sourceforge にパッチを提出しようと思ったら、すでにほとんど同じのを誰かが この 3月に提出していた。くそーーーーー!! ところでこれ、2.4 には apply されないのかな?
そんで、まあ、ナゼコノヨウナモノガ欲しいかトイウト、
以下のような「gzip encoding をサポートする urlopen」が書きたかったからなのよ。
まあね、いろいろとね。
from gzipstream import GzipFile
from urllib import FancyURLopener, addinfourl
class MyURLopener(FancyURLopener):
def __init__(self, *args, **kwargs):
FancyURLopener.__init__(self, *args, **kwargs)
self.addheader('Accept-Encoding', 'gzip')
return
def open(self, url, data=None):
x = FancyURLopener.open(self, url, data)
if ('Content-Encoding' in x.headers) and ('gzip' in x.headers['Content-Encoding'].lower()):
return addinfourl(GzipFile(fileobj=x.fp), x.headers, x.url)
return x
そのご久しぶりに Astor の BN へ寄ってみる。 このあたりの書店にはいつもおしゃれなカレンダーが沢山あるのでたのしい。 THE NEW YORKER の漫画カレンダー、いいよね。 オレも来年のカレンダーは何にしようかな。ところで BN の雑誌売り場では New Type 米国版がビニ本扱いになっていなかった。同じように少年ジャプン米国版も ビニ本扱いになっていない。これらは紀伊國屋でさえビニ本扱いなのに、なぜだ? BN にくるような客はそもそもジャパニメなんか読まんから放ってあるということなのか。 ま、それはいえるかも。
どうでもいいが、オレは日本のアニメがダメだとは思わないが、 「アニメは日本が世界に誇る文化ですっ!」とか力んでいってる人もどうしようもないアホだと思う。 なんでそんなにリキむの? いままで日本でさんざバカにされてきたから海外で認められることで 溜飲を下げたいということなんだろうか。しかし、宮崎ハヤオがいっくらがんばっても、アニメが西洋で 「知識人のためのステレオタイプ教養セット」に組み込まれることは決してないだろうよ。 そもそも「世界に誇ら」ないと気がすまない、という時点で、 そもそもアニメを暗黙のうちに卑下しているように見えるのだけど、 彼らはそんなことには気づいていないのだろう。そんなこといったら日本には目立たないけど 優れた文化が他にも沢ぁーく山あるのにな。あまりにもそのことに気づいている人が少なすぎる。
いやーーーーすごい台風でしたねええ
こんなものを書いたら、自分が今もっている知識をすべて さらけ出すことになりそうだ。
Mac ユーザのくせに見た目より機能で選んでしまうとは敗北だ。
きょうの予定: 23:00 から停電。
てくるで (ところで)、 毎朝 9時〜10時ごろにはうちのネットワークがよくキレることがわかった。
けさのトークは MS Research の人の spam の話だった。基本的に、対策そのものは既存の話の 組み合わせだったが、統計がおもしろかった。いまや spam のために時間が無駄になっていると 感じるユーザが半分以上おり、7割以上がそれを不快に思っている。 にもかかわらず 7% ものユーザは実際に spam の広告で モノを買っている! MS はもちろん spam の削減にとりくんでおり、Hotmail で spam 撃退の 協力者 (spamかhamか? を分類させる) を募集したところ、全体の 10% ものユーザが協力した。 Hotmail みたいな巨大なメールシステムで 10% のユーザつったら、これはすごい量ですよ。 だから MS には現在、数百万通の spam の学習用データがあるらしい。 spam の発信源でいま問題となっているのは Open relays でも Open proxies (ほんらい SSL に接続するはずの CONNECT コマンドで 25/tcp に接続する) でもない。「乗っとられたマシン (Zombies)」だ。 こいつらは一般の ISP からくるしアドレスが変わるので追跡がむずかしい。 そしてかなりの発信源がロシアと中国に集中している。spam の半分以上は 国際的なものであり、米国の法律だけでは規制できない。そしていまや spam はメールだけではない、IM上の spambot (SPIM)、掲示板の spam、 そしてブログロの spam など。みんなこのあいだの CitiBank を装った spam の話をしていたから、あれはやっぱりみんな来たんだな。
頭がシャキっとしないので昼飯は dosa にする。 ついでに「サトウキビのジュース」なるものがあったので、 珍しくきょうは公園にすわってリスを見てナゴミながら、もそもそとドサを食う。
てくるで、slashdot に Google Print の話が出ている…
と、思ったら、まだ時々切れるみたいだね。くそーーー comcast め!!
台風がくるぞ〜〜〜。怖いぞ〜〜。オレのまわりじゃ空はもうまっくらだ!! (ホントにホント、夜だから。)
もう今日はオレは絶対家から出ないぞ〜〜〜“ “ “。
以上
とくに意識しているわけでもないのだが、最近やたらと気どってないか? オレ。 なぜかいまはハーブティーに Mackays のマーマレード (甘味ひかえめでいいんだ、これが) を 加えて飲んでいる。これ、カモミールとかラベンダーそのものだとキツすぎて飲めないのだが、 ミントが入っていると匂いが緩和されて飲めるようになる。もちろん効き目なんぞは最初から アテにしていないぞ!
こっちは Alpha-Beta-pruning までやってるのになんでランダム先方に巻けるんだ!! どう考えても探索部分にバグがあるのは明らかなのだが。
さふいえば思い出した。きのうの授業で「Heisenbug (不確定性バグ)」の話を聞いたのである。 つまり観測が系に影響を与えるので、 バグの原因をつきとめようと思うとそいつはどっかへと雲散霧消してしまう。よくあること
あとほかにもなんかあったと思うけど…
一回目は不戦勝で勝ち上がった新山だったが、2回目も 相手が途中でクラッシュするという脱力な勝ち方。 はじめて双方マトモに動いた 3回目は負けた。相手は Java や C++ だったが、 おそろしいことに前もって計算されたテーブルまでもっていた。ぎゃふん! こっちは学科のマシンが遅いので (Psyco は Sun じゃ動かねえしよ)、 それにあわせるために探索空間をいかに減らすかに苦労したのに、その手があったか。 まあいい。今日は一日じゅうこればかりやっていたためにもう疲れたよ。帰ろ
オレはあいかわらず「いかにアイデアをアホくするか」というところにこだわっているらしい。 最初から、いかにも勝ちそうな方法を一直線にやる、というのがダメなのである。 なんか無粋 (むいき) なんだな…。まあしかし、この調子ではオレは敗北者の道をつき進むのは間違いない。
ちなみに、tcpserver はやはり役に立った。
さて、ゆうべは久しぶりに「日本からはじめて NY に来た人の気分」というものを エミュレートできてちょっと新鮮だったのだが、たいていの人は NY はもうちょと キレイな所だと思っているらしく、あまりのバッチさにショックを受けるらしい。 たしかに、おシャレでもなんでもねーよな、こんな街。ただバッチいだけ。 しかもすべてがバッチい。パリとか観光客の来る所だけは一応きれいにしてあるのに、 NY は全般的にどこも同じような「バッチさ」なのである。それでも、まあ誰しも一度は この「想像と現実とのギャップ」に驚いてみるべきなのかもしれない。
ぜんぜん関係ぬいが、きょうふと思ったことのひとつに、「NYと日本との『ぶら下げ文化』の違い」とでも いうものがある。オレはもう慣れてしまったのだけど、NY ではみんなモノ (とくに食い物) を ぶら下げずに、手に持ったまま歩くのである。みんなコーヒーでもベーグルでも、 「持ったまま」歩く。これはデリなどでなにか物を買うと、たいてい紙袋に入れることが多いためだ。 日本のコンビニで必ず出されるポリエステルの袋 (米語では「プラスティック・バッグ」と呼ばれる) とは違って、 これには「把っ手」がついてなので、ぶらぶら持つことはできない。おまけにコーヒーや惣菜なんかが 入っているとヘタに揺らしたらこぼれるので、結局持つしかない、ということが多い。まあ CDウォークマンを「持って」歩いてる人を見たときはさすがに驚いたけど、これもごく一般的な風景だ。 とにかく、NY ではちゃんとした鞄などはぶら下げても、食べ物はぶらさげないという風潮があるように 見える。まあ、こまかいことだけど、そういうことで。
(きのうの Adam のトークより勝手引用)
あ〜〜ーやべーやべーーいやなこと思い出してきちゃった。
対立するふたつの思想がある:
「ヘンな奴だが優秀だ」と思われるのと、「優秀だがヘンな奴だ」と思われるのと、 どっちがいいのかね。このふたつは同じではない! このふたつは同じではないぞよ! まあオレは、新山はこのうちのどっちでもないですが。
ぶーな ずぃーうぁ どんぬれ (おはようございます, Sir)
いま見てみたら、長野より寒いでわないか。 札っ幌でもくんぬにサムくないらすいずぉ。
(ムカつかない、笑えない、不安にならないというその一線のみにおいて)
Friday, October 1, 2004 - 11:30 a.m. Room 1302 Warren Weaver Hall 251 Mercer Street New York, NY 10012-1185 Speaker: Joshua Goodman, Microsoft Research Title: Stopping Spam
最近、世界が横長なんだよね。どうにかなんない。なんない。あそ。
基準、基準、基準、基準、基準、基準、基準、
基準、基準、基準、基準、其准、基準、 。
。
エレベッタにのったら、中で板を切っているおじさんが仕事していた。 なんでまたこんな所 (=てくる)で。
親切だし頭では「いい人」だということはわかっているがどうやっても生理的に 絶対好きになれない人というのは世の中には疑いもなく存在する。 で、向こうも運よくこっちを嫌ってくれれば文句ないのだがそうならないととても状況は不幸だ。 もー、いくら悪人扱いされてもかまわんからとにかく顔も見たくない頼むたのむ許してくれ、 という人は実際にいる。それは例えればこういうことだ。たとえば人間語を理解する、 とても親切なヒル (蛭、ヤマビル、黒色で口はオレンジ) がある日とつぜんきさくに話しかけて きたとしても絶対仲良くなれないだろうというのと同じである。おまけにこの感覚はとても個人的なものなので、 たいていの人に説明してもわかってもらえない。完全に無駄。とにかく世界は分離するしかないの! それにしても、おかしいのは自分がそいつの「どこ」を嫌いなのか、全然はっきり説明できないことだ。 どこか特定の部分に反応しているようにも見えるし、あるいは圧倒的に すべてが嫌いのようにも見える。おまけにいくら考えても自分と全然似ていないので、 同族嫌悪でもない。どうするのか。
"blogger" を日本語入力モードで打つと「ぶろっげr」になる。 まるでこの世のキタナラシイモノをすべて濃縮したかのような名詞だね!
多くの人が、それを見たとき混乱する。 しかし混乱することこそが正しい解答なのだということもありうるさ↓↓
-不毛 ''
` ` 不毛 " 不毛 -
不毛 . - 不毛
不毛 不毛 -"
不毛
'` 不毛 ' 不毛
- 不毛 不毛
不毛 . 不毛 -
どう思う?
google://ヨノナッキブ/ (スペリング修正候補で「ヨノネッキブ」が出てくるがこれまた非存在的バカ候補)
「もしかして」「ともすると」「ややもすれば」「去りにけらしな」
いっこ矛盾。
(再) ケッキョキ、これが一番まともなやり方のような気がする。
class switch:
def __init__(self, value):
try:
return getattr(self, value)()
except AttributeError:
return self.__default__(value)
class mycases(switch):
def a(self):
print "aho"
def b(self):
print "boke"
def c(self):
print "chobi"
def __default__(self, value):
print "i don't know:", value
mycases("a")
mycases("x")
クラスを、たんなる「手続きの集合」として扱うのは案外すきなのだ。
しょせん名前クーカンですからね。
しかしこんなことばかりいっているとゲンゴァー
(言語のウンチクばかりたれていてアプリケーションを書かない人間) になるぞ。
ゲンゴァーにはならないようにしなければならないようにしなければならないようにしけなれべならない。
ぜひとも!
オレってもしかすると自分の想像以上に症候群かもしれない。
ほとんどの 2相ロックでは、デッドロックは非常に少ない数の トランザクション間でしか起こらない。Tay のパフォーマンス分析の 仮定を利用して、これがなぜ真であるかを説明せよ。
新山の直感では、k-トランザクション間でデッドロックが 起こるためには、それぞれのトランザクションが k個の変数を 循環的にロックしなければならないが、この確率は k が増えるに つれて指数的に減少するだろう、だからほとんどのデッドロックは 2トランザクション間でのみ起こり、3トランザクション間での デッドロックはそれよりもずっと少ないだろう、というものだった。 しかしこれを定量的に言うのはむずかしく、その定式化でずっとハマっていたのである。 Tay のパフォーマンス分析の仮定というのは、すべてトランザクションが 同一数のロックにアクセスし、しかもアクセスの分布は一様である、というごく単純なもので、 実際にはこれは一般的ではない (ほとんどのデータベースには、データが活発に書き換わる "hot spot" が存在する)。しかしこれを使うとかなり分析は楽になるのだが、 デッドロックは一発で起こる状態ではなく 「プロセス」が入ったものなので、考慮するパラメータがさらに多そうなんだな。 といって仮定をこれ以上増やしても泥沼になるだけなのでやめて、 「確率の上限」を議論するという方式に切り換えた。つまり、kトランザクション間での デッドロックが起こるためには、まずそれら k個のトランザクションが すべて共通の項目に対してアクセスしようと思わなければいけない。 データベース全体に D個の項目 (まあ、レコードと考えてもらってもいい) があるとすると、アクセス一様分布の仮定のもとでは、ある トランザクションが偶然同じ項目をアクセスしようと思う確率は 1/DCk である。これが複数のトランザクションで起こり、 さらにデッドロックが起こるためにはこれらが正しい順序 (?) で 循環を引き起こさねばならないのだから確率はさらに低くなる。 だから確率の上限は (1/DCk)k に比例するだろう、 という感じの答えにした。合ってるかどうか知らないが、オレこういうのは苦手なんだよ。
なんだほ。
てくるで、データベースの授業で習ったことで新山が一番驚いたことのひとつが、 デッドロックはいい、ということだった。 OS の世界ではデッドロックは絶対避けるべきものとされているのだが、 パフォーマンスよりもデータの正当性をなにより重視するデータベースの世界では、 デッドロックは何かおかしなことが起こっていることを示してくれる「いいもの」なのである。 へー、そういうもんかい?
なぜかこういうとき素数を選んでしまうのはおれが病気だから?
このビョーキを「素数病」と名づけよう。だからどうしたかというと!
(「麻痺」をおもわず「麻雀」と読んでしまわないように注意)
class switch:
def __init__(self, value, eqv=lambda x,y:x==y):
for name in dir(self):
if name.startswith("__"): continue
f = getattr(self, name)
if callable(f) and f.func_defaults and eqv(f.func_defaults[0], value):
return f()
return self.__default__(value)
# usage
class mycases(switch):
def a(self, value="a"):
print "aho"
def b(self, value="b"):
print "boke"
def c(self, value="c"):
print "chobi"
def __default__(self, value):
print "i don't know:", value
mycases("a")
mycases("x")
アホらしー。 しかしもうちょっと一般化すれば汎用パターンマッチとして使えそうな気はする。 じっさい、Queequeg では正規表現で似たようなことをやっているしな。
class switch:
def __init__(self, value):
try:
return self.cases[value](self)
except KeyError:
return self.__default__(value)
# usage
class mycases(switch):
def do_a(self):
print "aho"
def do_b(self):
print "boke"
def do_c(self):
print "chobi"
def __default__(self, value):
print "i don't know:", value
cases = {"a":do_a, "b":do_b, "c":do_c}
mycases("a")
mycases("x")
しかしどちらにせよあまり使わなそうだ。
てくるで (ところで) チャイナタウンの CitiBank には中国語で 「萬國賓通銀行」って書いてあるのだけど、「賓通 (もしかすると別の字かもしれない)」 って一体何だろう??
(追記: じつはこれは「宝」の旧字で「賓」じゃなくて「寶通」が正しかったらしい)
ひゃっほう。
てくるでいつも思うのだがサイトの 侯国 広告によく
Windows の 洗濯 選択フォームやボタンを真似した絵を描いてあるのがあるよな…。
あれってやっぱダマされてクックリする奴いるから置いてあるんだよな…。
アホあ!
#!/bin/sh exec xmms -p "`wget -qO- http://www.smoothjazz.com/scast_hi.m3u`"
setBounds() が
実行されるタイミングが多少ズレて、その結果アプレットが完全に初期化されてない状態で
開始されてしまいエラーがでる、という状態らしかった。ほんらい正しいイベント駆動の
手続きにしたがってないのがいけないのだが、Windows だとこれでも動いてしまうのだろう。
で、このプログラム自体はクライアントであり、外部のサーバに接続して競争するので、
学生は各自サーバプログラムを用意しなければならない。これのサンプルが Python で
書かれているのだが、これまた読みだしたらヘボくて修正したくなってしまう。
ああ、ここまで来るとオレも立派なキチガイだな。
けっきょき、また今日も hoboken経由となる。ふんげa.
秋の朝っていいよね。
ほんじつのトラブル:
ちなみに画面に表示されているのは xdm だが、新山は古い xdm のシンプルな画面が好きなので、 リソースをいじってわざとレトロな雰囲気に戻してある。花瓶の花は本物。
きょうの emerge: