2005年 1月 (3)。

Last Modified: Mon Jan 31 20:20:03 EST 2005 (02/01, 10:20 JST)

Jan 31 [Mon]


(09:40)
こわい夢だった。なにやら新興宗教に目ェつけられて、 かれらに追っかけまわされるという夢である。覚えているかぎりでは、 物語は (というか夢は) まず、新山がすでに「施設」にいるところから始まる。 そこはどっかの山奥にある和風の建物で、どうやってそこに 連れてこられたのかわからないが、とにかくオレは逃げ出すのに必死になっていた。 しかしまわりにはすでに洗脳されてしまった (妙にポジティブな) 人々が目を輝かせており、 非常にコワイのである。そのあと場面は変わってなんとか実家にたどりつくのだが、 うちの父がきて「最近、なんかヘンなのが家のまわりをうろついてるみたいだ」という。 見るとアヤシゲなお守りやら草やらが玄関の前にいつのまにか置かれていたりして、 夢の中だけどこれはさすがにゾーーーっとしたよ。新山は現実の世界では それに類することはまったく経験していないのだけど、これはオウムなどの 見聞きしたニュースが影響しているんだろうか? それにしてもいまさら何?

つーか、最近の夢ではだいたいヤバいことばかり置こる。 目がさめてから「リセットされててよかった!」と思うことが多い。 むかしはこんなじゃなかったような気がするけどなあ? これは現在のオレの微妙な焦りを省庁しているのか何か。

(13:00)
COMPUTER SCIENCE COLLOQUIUM

Friday, February 4, 2005 - 11:30 a.m.
Room 1302 Warren Weaver Hall
251 Mercer Street
New York, NY 10012-1185

Speaker: Andries van Dam, Brown University

Title: Immersive Virtual Reality in Scientific Visualization

さっき廊下を通りかかったら、Ralph が IBM 製の電動タイプライタで フォームをがっちゃんがっちゃん打っているのに出くわした。ビックリ! 「わーお! これ動くんだ!?」と言ったら、「そうだよ、こいつはじつに信頼性があっていいんだ」という。 すばらっし。このタイプライタには前から目をつけていたのだが (キータッチが非常にいいので)、 通路の真ん中に放置してあるし、てっきりもう動かないガラクタだと思っていた。 今度ためしてみよー

(14:47)
いつのまにか Oren's 値上がったよね、10セントウほど。
(16:15)
また windows xp のプリンタ設定ですったもんだ。もう何度目? lpd を指定したのになぜかプリントできないのである。 おまけに、lpd 経由でちゃんと印刷できているムラカミさんの設定をみると ポートが何も指定されていない (のに、なぜか印刷可能)。謎だ。 結局、どうやってもできず、今日はあきらめた。 ムカつc.
(20:07)
W-2 が無事とどいたのでひと安心。あるいは壱あんしん。

google://島インフルエンザ/ (736Ken)

Jan 30 [Sun]


(19:16)
ダウンタウンへ行き、餃子を食ってチンゲンサイなどを買う。 とくにどうということもない一日。

Web を検索していると、ときどき新山が決して使うことのないであろう ソフトウェアのページが沢山みつかる。それは Windows 用の 「シェアウェア」というやつで、html をテキストに直すとか、 swf から mp3 を抽出するとかのツールだが、 一体誰がそんなもんに $30 も払うんだよ?? っていうのが沢山ある。で、英語版に限定すると、フリーで (Windows用で) そういうツール (テキストエディタなど) をさがすのは大変むずかしい。 あるのかもしれないが、シェアウェアがどこでもスゲーめだっているのである。 しかし、日本って「フリーソフトウェア」では全然めだたない国だが、 じつは Windows 用の「フリーウェア」はすごく多い国じゃないだろうか。 しかも見つけやすい。あんまり最近の事情はしらないが、Windows では 圧縮ツールにしてもエディタにしても vector かなんかで、フリーでそこそこのものが 揃うことが多かった。どれも日本人が作った日本語オンリーな バージョンで、おそらく英訳したら大ウケだろう、と思うものも結構あった。 しかし英語ではかなりクダラナイものまで全部シェアウェアである。 これは単なる新山の錯覚なのか、あるいは本当にこういう差があるのか、 オレにはあんまりきちっと判断できないのだけど、日本のフリーウェアが多いのは 「ソフトウェアに金なんか払う必要ない」というアジア的な思考によるためだろうか? それとも日本人のほうが拝金主義じゃないということなのか。

しかし、日本の一般人が所詮は MS におんぶにだっこなのに対して、 米国では本当に「OS レベルから」フリーでやろうとしている人が多いから、 単にスケールの違い、ということなのかな。よりラディカルに考えれば、 アプリケーションだけフリーになってもしょうがないのだから。

(20:52)
オラオラでって??
(22:06)
すでにあるものを改造すればホメてもらえる人ってうらやましい。

うそ。ほんとは、ちっともうらやましくない。

どうでもいいけど、アドリア海ってどこだろう??

(01:19)
さっそく Mac Mini の筐体のなかに PC の中身を入れたやつがいるそうだが、 逆に Mac Mini の中身をふつうの PCI カードスロット 3個ぶんぐらいの スペースに押しこんで「Mac も使える PC」にすることはできないのかな。

てくるで、このあいだ話してるときに、うっかり「BGM」という単語を 使ったら「BGM って何?」と真顔で聞きかえされた。こちらでは日本製の あcろnymは使えないのことが多かろい。

Jan 29 [Sat]


(16:18)
いままで、あるファイルがずっと "LICENCE" になってて、 今日ふと「やべえ! これは typo だ! はずかしー」と思ったら、 じつは license でも licence でもよかった。 でも c が 2つ続くのは入力しにくいので自分はこれからも license を使うことにする。
(20:42)
きょうは激寝坊して、ひさしぶりの部屋の掃除をし、ついでにスニーカーを洗う。 この天気じゃ乾くのに時間かかりそうだな。そのあと雑貨と食料品の買いだしを 終えたら、もう日暮れどきになっていた。来週はかなりあったかいらしい (0℃越え!) ので、ようやくこの地獄のようなサムさから逃れられるのか? つうか、今年もけっきょくコート必要なかったな。考えてみればオレは 「下着 + 薄手シャツ + デニムのジャケット」だけでよく耐えてるよな。 アメリカンにはやたらと冷房的寒さに強いのもいるが、彼らとてホントに寒いときは やっぱ防寒具をちゃんと着るわけで、よく「お前そんなカッコで寒くないの?」と 言われる (まあ、これは日本にいたときから言われていた)。 寒いですよ! でも、ヤセに限って薄着なのが多いような気がするんだけど、 これは論理的に考えれば逆じゃないか?

そういえばきのうはまた MoMA に行き忘れた。 金曜の夕方はタダなのでいつか行こうと思っているのだが…。 つうか、そんなことやってり場合じゃなかったね。

(21:10)
そこには波形が置いてあった。

Jan 28 [Fri]


(08:53)
うふゆう (おはようと言いたかった)。

いつもさ、思うんだけどさ、朝このページを書いてるときは そんなに 1日 数十行も書く気なんかぜんぜんないのよ。 ところがなぜか夜になってみるといっぱい書かれているのな。 一日をひとことで終わらせられたらどんなにかいいだろう、とは思う。が、 残念ながらそれをするにはオレの中の余白は小さすぎる。ふぇるまっと

(09:59)
ところでキミは「稽古」のことをなんで「稽古」というのか知っていたかっ!
(名) -スル 「古(イニシエ)を稽(カンガエ)る」の意
なーんと! つまりつまり稽古とは「昔のこと」を習うものでなければ いけなかったのである。つまりつまりプログラミングはもう昔 (=60年代) のものだから、 これからは「お稽古」というコトバをつかってもいいのね。 しかし芝居はなぜか「稽古」というのにプレゼンの練習はなぜ稽古とは呼ばないんだろ?
(10:55)
冷凍庫の中からコンニチワ。

きょうは日がさしても全然気温が上がんない。 日が当たっているのに、道路の氷はまだ石みたいに固く灰色になっている (温度が低いので氷は白くないのです)。

ちなみにオレは、ひらがなで書いたときは「こんにちは」という表記をふつう使うが、 なぜかカタカナのときは「コンニチ」のほうが好きだ。 なんか、「ワ」の部分がいかにも「ワ」ってかんじでいいのである。 意味が不明だって? ああーそうですよねーオレもですよオレもですよ奇遇だね奇遇だねさようならさようならもう来るな。 この「ワ」っていう文字は、ぜったい擬口文字 (口の形をまねている) だと思う。 そう信ずることにする。おしまい

こういうクダラヌことを書くからアレがアレしているのだ。

(アレ1 = 容量, アレ2 = 増加)

(13:45)
勝手に広報部、おわっちゃったんですね。
(14:19)
沈黙による饒舌性。

ところで今日(こんにち)のころきあについて。 "generation" とかいう単語が入ってたので、なんかこれは線型代数の 専門用語なのかと思っていたら、行列演算をするライブラリをほんとに 自動で生成するという研究なぬであった。 この行列演算アルゴリズムというのは奥が深く、たとえば逆行列を求めるだけでも 10種類以上の異なる手法があり、用途やアーキテクチャによって それぞれ適不適があるのだそうな。たとえば スパコンなどではわざわざ行列演算に 特化したメモリアーキテクチャを持たせたりしているが、これで 極限までスピードを追求するにはそれなりのアルゴリズムが必要である。 また激しく並列化されたハードの場合はそのアルゴリズムも並列化可能なものでなければならない (おもしろいことに、並列処理の効率は CPU の utilization が高いほどいいとされている、 つまり「ヒマな CPU」が少なく全員をつねに忙しくさせておけるのがいいアルゴリズムとされているのだ)。 そういえば、この分野はいまだに FORTRAN が使われていたりするな (それはちっとも奥が深いことにならないが、FORTRAN ってのは変数が全部グローバル割り当てなので スピードを追求するにはいいらしい)。で、今日の研究のキモはこういう 行列演算のアルゴリズム (というか、最終的に「ほしい結果」) を 形式仕様言語で書いて、それを自動的に手続き型コードに落とすというものだった。 で、この手のライブラリは「テストによる正当性」ではなく、 「形式的な正当性 (formal correctness)」が欲しいと。 これも行列演算に限っているから成功しているといえる。まず初期化があって、 ある決まった (予測可能な回数の) ループがあって、それが終わると結果ができている、という枠組みは あらかじめ定められている。ここにループ条件と不変式 (invariant) を与えるといろいろな 制約条件を考慮しながらコードができるのだが、つまり「知識」としての計算手法は 不変式のかたちで (ある程度は宣言的に) 与えられるわけだ。逆にいえばそれを知っていないと ダメなのだが、逆にそれさえできればあとは異なるアーキテクチャのために手続きに直す部分は 自動というわけね。いまの段階ではまだ複数のアルゴリズムを出力するだけで、どれが 並列システムに向いているかとかまでは判定できないらしいが、将来的にはそういうことも 考えているといっていた (もっともそれは彼の担当ではないらしいが、プロジェクト全体としては)。 でも不変式って簡単に書けるものじゃないよ。不変式ってのはループ中で使われる変数をなんらかの形で ふくんでいなければならないのだが、この場合は行列を decompose する方法を指定しなければいけないので かなりやっかいだと思う。…まあ、こういうのを使うのは数学屋さんだと思うので 彼らはそういう書き方になれているのかもしれないけど。 コード生成の研究という意味ではおもしろかったが、新山は行列演算にはまったく興味がないのだった。 一部の人々とは違うから!

(18:28)
寒すぎくならないうちに (←日本語的にある、で、) ぶじ買い物をすませへいってきた。 なにか変ですか?? どうにか助かったような気がする。

でも助からないような気もする。

助からられない。

(22:28)
じつはあなたに悟られないように、あらん限りの力をふりしぼっているのです。

All your belongings are based on us.

sorenisitemo samui.

Jan 27 [Thu]


(11:28)
朝から偏頭痛でテンション低り。 誰かおれを殺してくれーー 11111
(11:46)
あっ、治ってきた。よかった。

元気になると途端にいつものハイテンションに戻るのがオレのいいところ。 (と、自分で思っている馬鹿)

(15:09)
「WinMX 示談金詐欺」をみて思うこと。 メールの SPAM でもそうだが、日本人をターゲットにした phisching には共通した点がある。 それは「あなたは何々に違反していますので、すみやかにお金をお払いください」 という点。つまり日本人は「違反」という言葉に弱いのだった。 今、これをよんでいるあなたは違反しましたよ。 ホラ弱いこと弱いこと。あなたの左目は違反ですよ。 ホラホラびびった。もうひとつの効果ある言葉として「みんなが迷惑しています」というやつだ。 あなたがいまクリックしたマウスによって、みんなが迷惑しました。 これを「あなたのしていることは間違っている」などと書いてしまうと かなり脅迫感がうすれてしまう。なぜか。結局のところ、すべての日本人 (ええそうです、これは文字どおり「すべての日本人」を意味しています、 たったいま生まれた人もあと 5秒で死ぬ人も、ブラジルにいる人も月面で働いている人も含めてすべてです) は 何も本質的な善悪などわかっていないのだ。ええ、すべてですよ! やばい暴走気味。
(15:45)
とくに理由があるわけでもなく、白いミニチュアカーネーションを買った。 このあいだの教訓を生かす必要があると感じたので、花屋のおやじに 「長持ちする花はどれか?」と聞いたところ「そこにあるミニチュアカーネーションか、 あるいはなんとかデイジー (実際にはフランスギク) だ」というので。 白を選んだのにとくに理由はない。ピンクって気分でもないし。 今回は web でいろいろ調べたので長持ちさせる自信がある! でもどうなるかわからないけれど。 この部屋ホントに空気悪いからさー。ちなみに、花屋によっては いまの時期はフランスギクは売ってないことも多い。ガーベラならいつもあるのだが、 新山はガーベラって下品そうで嫌いだ。名前まで下品だ。 PATH 駅から大学にくるまでには 3つの花屋があり、きょうは 6av. にある 花屋に寄ったのだが、ここにはちゃんとフランスギクがあった。 ちなみにここは店員が東欧系の太ったおっさん 2人でやっており (花屋の店員は大抵おっさんである)、 店そのものが狭いのでとてもむさくるしい。

買いすぎたのでオフィスにきてからあちこちにくばる。おれってヘンな奴。

(16:10)
COMPUTER SCIENCE COLLOQUIUM

Friday, January 28, 2005 - 11:30 a.m.
Room 1302 Warren Weaver Hall
251 Mercer Street
New York, NY 10012-1185

Speaker: Paolo Bientinesi,  The University of Texas at Austin

Title: Toward a Final Generation of Linear Algebra Libraries
今週はあんまりわかんなそうだけど一応でとく。
(16:33)
ざっと Googl た限り日本語でこのことについてふれているぺーじは 1つもなかったのでここに書いておく。

Firefox を起動すると次のようなメッセージがでる場合がある:

Extension System Warning: Failed to set up default extensions files
probably because you do not have write privileges to this location.
While you can run Firefox like this, it is recommended that you run it
at least once with privileges that allow it to generate these initial
files to improve start performance. Running from a disk image on MacOS
X is not recommended. *** loading the extensions data source

このような場合、なぜか Extension Manager で 拡張機能 が使えなくなる。 (keywords: Firefox, Extension Manager, 使用 不能, 使用 不可能, 使えない, 使う方法)

この問題の解決方法: root で一度 firefox を起動し、終了する。 次回から一般ユーザで起動してもこのメッセージは消え、Extension も利用できるようになる。

以上です。

(18:03)
サムイから外でたくない
(23:38)
うごーーー寒かった寒かった。

nylug みーてぃんぐ。きょうのゲストは Elliotte Haroldさんで、 XML 界ではそれなりに有名なのか? じつはこの人の XML in nutshell はオレも 持ってんだよな。話はおおまかに XML のアプリケーションをどうやって ブラッシュアップするか、というような内容だが、この人は 「XML 原理主義者」だった。いわく、XML のバージョンは 1.0 から絶対に 上げるべきではない (1.1 への改訂はひどい騒ぎだったそうな)。 XML をいじるときはかならずまともなパーサを通し、Perl スクリプトや 正規表現でちょろっと処理しないこと。XML の文法 (entity とか processing directive) は たとえ使わなくてもすべて想定しておくこと。というのは XML は あくまで標準化されているからいいのであって、あらかじめ正規表現で 読める程度のいいかげんな仮定でやりはじめると、いざというときに (人がテキストエディタでじかに変更したりするなどの) ツブシが効かないからだという。SAX になるべく固執せよ、そうすればそんなに遅くならないから。 また XML はあくまで XML なのであり、 これがいつも「階層化された辞書」だとは思わないこと (辞書と違って、エレメントの順序が 重要なことがあるし、同じエレメントが何度も出てくることもある)。 いわく、SOAP は XML の標準に厳密に従っておらず (例: entity が使えない)、あれは MS が XML を独自支配しようとしている 「歪曲規格」だ (まあ、ヤツらのいつもやってることだが)。 基本的にこの人は XML にあまり余計な意味論を入れるべきではなく、 きちんと Validate する必要もなく、ただ XPath かなんかで「いいところだけ取りだして使い、 あらかじめ規定することは最小限におさえる」という立場のようだった。 だから W3C の Schema はほとんどの場合オーバーヘッドでしかないし、 JPEG なんかを XML にするのは頭オカシイ、という。全体的に、この人の 態度はまともなように見えた。しかし、これはあとから気づいたのだが、 XML の話というのはどうしても宗教っぽくなるのである。 なぜなら XML 自体はただのフォーマットであり、 問題はそれをどう使うかということなので、自然と「べき」論が多くなるのだろう。 なるべく属性は使うな、ともいっていたな。その後 TGIF に移動して 飲み会したが、結局 XML が一番向いていたのは RSS だけじゃないか、というようなことを 言っていた。彼いわく、Semantic Web は・・・・・であるという。まあ、それにもだいたい同意。 RSS にしろ HTML にしろ、問題をバッサリ単純化して「もうこれしかやらない!」ということで うまくいっているように見える。つねに問題を拡張するより切りすてたほうが うまくいく (少なくとも人気はでる) というのはぬんとぬく示唆的だと思った。ぬんとぬく。

ちなみに、SOAP (と RSS) の正式名称にはじつは正式な定義がなく (MS はあとになって定義をとり消した)、 Simple Object Access Protocol の略だ…というのは「俗説」なのだそうな。ホントかな? ああ、atmarkit にも書いてあった

それから、どうでもいいが、Ubuntu のオヒシャル CD をゲットした。4.10 Install が 1枚で、 Live CD が 1枚。なんか、すげーちゃんとしたパッケージで、まるでどっかのちゃんとした 会社がやってるみたいだよ! (いや、本当にちゃんとした会社がやってるのだろうが、 Linux では「ちゃんとした会社」はかえってアヤシイという直感がある) でも、自宅ではリブートしたくないから試せない。

(01:32)
芸能人って、結婚して、離婚するまでが仕事なんでしょ?

Jan 26 [Wed]


(07:47)
ヤツがいいヤツだということは、わかっているのだ。った
(11:14)
雨の音って好き。 サーーーーーーーーーーーー……………

ガーソ! いまのは雨の音じゃなかった!

(11:47)
変化する値を一定の上限・下限の範囲におさえたい場合に新山がよくやる方法:
lowerbound = max
upperbound = min

x = lowerbound(MIN_VALUE, upperbound(MAX_VALUE, x))
max とか min を直接使ってもいいんだけど、直感と逆なのでまちがえやすくない?
(12:31)
人の集まるところには spam も集まる。あるいは善意をアテにしているところに spam が集まるのか?
(13:08)
YACY: p2p-based distributed Web Search Engine だって差。どうやって動いてんだかまだわかんないけど、 たいして興味もないのであまり追跡しない。
(15:59)
うわお〜〜まだ半分しか終わってねえ。そんなんでどうするよ明日キミ。 それよりも、オレのほうも全然終わってないんだけど、こんなんでどうするよ明日オレ。 どうでもいいけど (だぅーーーでも!) 足他からまた寒くなる。あ、まちげた。明日からまた寒くなる。 これはこれはイヤダナー。
(20:29)
もう C のプログラムなんか書かないことに決めた。

Jan 25 [Tue]


(09:59)
Google Video すごい。 米国ではほとんどの番組 (CM含む) に closed caption がついているので、 こういうまねができるのだろう。ろうあ者を人間あつかいしない日本では絶対ムリな話だ。 それにしても、 tv-card をつないで 1日じゅう ntsc-cc をはしらせれば何百kb という コーパスが収集できてしまうので、番組の caption をコーパスとして使えたら…グヒヒ、 という考えは言語屋なら誰でも思うだろう。 ようするに、Google がすごいというのは「著作権クリアできてすごい」って意味である。 やつらは地球上の文字が書いてあるところならもうなんでも検索対象にするだろうからね。 そのうちに「Google・看板」とか、「Google・医療カルテ」なんてのが出てくるにちげえねえ

究極の Google はおそらく「Google・SETI」だ。宇宙からくる電波を 10GHz にわたって検索可能!

(11:47)
末尾に「。」がついてない文はヨッパラった雰囲気のときに書いたことを示します

読点が、やたらと多い文は、アホってる気分のときに、書いたことを、示します。

(もちろん生理的には、ヨッパらっていないのがだ)

誤字脱字が医用に多いかったり、漢字へんけんを間違えたりする場合は、なんでしょうね。 なんでしょうねこれは。あと異様に以上に同じことをおなじことをくりかえしくりかえすの
こと。

そして改行。

新山のかくすべてのメッセージにはこのようなメッセージがふくまれているのにもかかわらず、 それに気づかないのはあなたのせきんんだ。つまり multipart ってことですカ??

(13:09)
合衆国政府、IBM の PC 部門売却を禁じるかも?
(15:23)
ガサガサガサガサガサガサガサガサガサガサ!

ねむいとパスワードを打つのがおそくなる。 てくるで、ガサ入れのことを「ガサ入れ」というのは、 これはガサガサと音をたてて手入れされるからなのか? それともガサツに手入れされるからなのか? 大辞林によると「てきやなどの隠語。『さがす』の『さが』の倒語。家宅捜索。」だそうだが、 するとこれってそんなに新しい語じゃないのな。しかしもうすこし新しい日本語スラングだと 語源のわからんものが結構ある。たとえば「ブッチする」とかだ。 こういうのをカヴァーしている辞書はどっかにあると思うのだがカモクにして知らない。

(16:06)
日本語の「障害者」について文句をいう人がいるのと同じように、 英語の cripple と culprit が似ていて区別できねい! と文句をいう人はいないのか? すくぬくともオレは混乱した。というか cripple はもう使われない表現だからいいのか。 clipper とも似ていて、なにか関係があるんではないかと思わせる。 まあ、もともと「障害者」は事故語らしいからな。このように人為的ミスにより 言語に内在してしまった単語をバグという。
(19:35)
ほかの人の   (あと書くこと忘れた)
(20:50)
きょうは、あたかい。きのうより、ずっと、あたかい。(といっても零下だが) 明日はずっとあったかくなる予定だが、木曜日からまた -16℃ とかいう死にそうな (死の) 予報が出ている。 てくるで、最高気温が最低気温より低くなることは物理的に不可能だということをキミは知っていたかっ。 さいこう気温。

ところで、ついに Google にも「てくるで」の権威として認められました。

(22:13)
きょうの成果はこれ。

(00:05)
でも、ホムサは、目がさめたときに大切なのは、ねむっている間にも、
だれかが自分のことを考えてくれていた、ということがわかることなんだ、
といいました。
-- “ムーミン谷の十一月”

誰でもいちばん最初にした失敗がいちばん重要だ、と思うだろう。

(00:27)
てくるで。

六本木ヒズルにひとこと言いたい: まだやってたの?

Jan 24 [Mon]


(07:38)
よのなか病。

さて今日はいつごろオレは家から出ればいい (= 家から出られるほど十分アッタカクなる) のでしょうか。

カタカナびょう。

(08:39)
ゴハン食うと激ネムくなるというこの体質をどうしちゃったほうがよろしいんでしょかね。。。

  1. メシ食うな。
  2. ・・・
(12:16)
さささささささささささささささささささささささささささささ
ささささささささささささささささささささささささ
さささささささささささささささささ
さささささささささささささささささささささささささささささささささささ
さっっ
っ  っ

てくるで google news は社説とか中国大使館のお知らせとかまで掲載するってのはちょっと、さ。 それってニウスなの??

(12:47)
AQUAINT corpus の NYTimes 2000/02/11 (記事ID NYT20000211.0229) はヘンだ。 "Test to NYT." という文だけが 100個ぐらい続いている。
(14:10)
ひさびすりに .emacs をいじろうとしたら、 ちっともわからんかった。Python の filter に相当する関数はなに? string.startswith に相当する関数はどこ? 皆目見当つかず。絶対どっかにあるはずだと思うのだが、いろいろ検索しても見つからん。 elisp は古い (=悪しき) Lisp の風習をうけついでいるので名前のつけ方に一貫性がない。 フランス語みたいな言語だよな (←てきとう君)。しょうがないから自分でつくったよ。
(defun filter (proc x)
  (let ((r nil))
    (dolist (e x r)
      (if (funcall proc e)
          (setq r (cons e r))))))

(defun startswith (s prefix)
  (and (<= (length prefix) (length s))
       (string= prefix (substring s 0 (length prefix)))))
で、これで何をしたかったかというと「ファイル名を補完するときに ange-ftp をロードするのやめやがれチクショウ!」ということである。以上。
; disable ange-ftp completion
(setq file-name-handler-alist
      (filter
       (function (lambda (x) (not (startswith (symbol-name (cdr x)) "ange-ftp"))))
       file-name-handler-alist))
(14:58)
ふーん、こんなのあるんだ。
(15:45)
きょう一番びっくりしたニュースは「ニホンの中学生の 18% が『死者は生き返る』と思っている」ということだ。 これってすごいね。

Ken Anderson のニュースがあちこちから流れてくる。 Spam conference の壇上で JScheme について話しているときに死んだらしい。 "collapsed mid-sentence" というから、しゃべっているうちに倒れたということなのかな。 べつに茶化すわけではなく、死ぬ直前まで Scheme について喋っていたというのは 真の Scheme プログラマといわねばならない。

(18:33)
NSI (ぬすい) とは何の略か?

いや〜おもしれ〜!

(22:29)
ハラペコぁー
はらぺこァーのままで帰ってきて、ようやくシチーを作りあげた。
ほんたぅーは予告どおりカツをげるつもりで鶏肉を買ってきたのだけど あまりに寒いため急拠シチューに予定変更する。これは敗北か? 敗北ではない(定義により) ! なぜならなぜだから! さいきん自分の聞きわけの悪くなっているようの気のするだが、 これはまだ謎めいているぶんだけまだいい。そうでない場合:

ハラへった。さっさと食おう。なんたって、狂牛病の牛肉エキスたっぷりの某社製シチーだmonne!

(22:37)
おっ、このニンジンうまいよ今日は (こんにちは)。
(01:51)
プラスチックに
きまって
ますよ

Jan 23 [Sun]


(13:33)
やば。今日はマンハッタン行かなきゃ。
(14:28)
てくるで、誰も書いてないらしいから書かないが、 Windows 用の IDLE で u"あ" などを直接 Unicode として解釈させたい場合 (現状では u'\x82\xa0' などになってしまう) は、以下のようなパッチをあてる:
--- PyShell.py.orig     Sun Jan 23 14:28:07 2005
+++ PyShell.py  Sun Jan 23 14:28:21 2005
@@ -587,14 +587,14 @@
         self.more = 0
         self.save_warnings_filters = warnings.filters[:]
         warnings.filterwarnings(action="error", category=SyntaxWarning)
-        if isinstance(source, types.UnicodeType):
-            import IOBinding
-            try:
-                source = source.encode(IOBinding.encoding)
-            except UnicodeError:
-                self.tkconsole.resetoutput()
-                self.write("Unsupported characters in input")
-                return
+#        if isinstance(source, types.UnicodeType):
+#            import IOBinding
+#            try:
+#                source = source.encode(IOBinding.encoding)
+#            except UnicodeError:
+#                self.tkconsole.resetoutput()
+#                self.write("Unsupported characters in input")
+#                return
         try:
             return InteractiveInterpreter.runsource(self, source, filename)
         finally:
きっと、たぶん、おそらくこのやり方は正しくない。
(16:58)
あらたしい発見をした。Ctrl + PageUp/PageDown でタブ切り換えができるのをきみは知っていたかっ。 しかしこれがデフォルトの FireFox の機能なのかどうか定かではない。Extension の仕業ってことも、 ありうる。でももうめんどくさいからどっちでもうう (「どっちでもいい」と売とうとして間違えタ!)。

ところで仮死子と宏子 (なんか字が違うような気がするが…浩子だったっけ?) の ユー・ガッタ・メール合戦はどうしちゃったの? ポカリ風呂と WASP の富雄さんとの関係は? ホントにどうでもいいけど、まえに「ピョーーーーーーーーーーーーートル大帝」とかの文字列で適当に検索したら ナカガワさんのページに偶然ヒットしてすげーウケてしまった。 「ー」の数までぴったし一致したというこの奇跡。すばらかしいね。そういえばナカガワさんとは 語感感覚が一致することがわりと多い。たしか初めてお会いしたときに「どぶろくっていいですよね (語感が)」という 話をした記憶があるし、このピョーーーーーーーーーーーーーーーーーーーートル! にもそういう符合を感じる。 でも今はそのページももうない。まあ archive.org とかにいけばあるかもしんないけど もう URL忘れたし、だいたい archive.org とか使う奴は負け犬だ!

(18:12)
けんきゅう日誌

意味の等価性をいうとき、時制や aspect のちがいはどれほど重要になるのか。 たとえばある記事では "The president announced ..." といい、別の記事では "The president has announced ..." といっていたとする。この 2つの表現に意味的な違いは どれほどあるのか? またそれを客観的に議論することはできるのか? 対象を新聞記事に限ればある程度の一般化は可能かもしれない。 関連文献をさがさなければ。こんなのは言語学でもあまり研究されてなそうだが、 そもそも aspect に関する研究自身にいろいろな流派? のようなものがあるのだ。 たとえば英語には時制はあるけど aspect はないとか、かんとか。 でも、仮定法だったらどうなるの? "would have been ..." のような表現は 新聞記事でもときどき現れる。新山はこの手の素性が表層的な語法から直接 取り出せるとはあまり思わないのだが、それでも統計はとらねばならない。

以下は New York Times の記事 1年分からとりだした約5万文について (各記事の先頭 1文のみを使用)、 その根っこにある base VP (のようなもの) をぬき出したものである。メジャーな言いまわしは以下のとおり:

  14623 VBD
   2865 VBZ
   2356 AUX:is
   2348 VBZ TO:to VB
   1719 VBP
   1637 AUX:are VBG
   1213 AUX:has VBN
   1164 AUX:was
   1035 AUX:are
    977 VB
    715 AUX:'s
    695 MD:will VB
    691 AUX:is VBG
    590 AUX:was VBN
    530 AUX:have VBN
    504 VBN
    409 VBD TO:to VB
    359 AUX:has
    286 AUX:had
    242 AUX:has AUX:been VBN
    238 AUX:was VBG
  ...
このデータはもっと詳しく調べる必要がある。どれとどれの組み合わせは区別すべきで どれは区別すべきでないか。恐しいことに、これは eq(記事内容, 表現, 引数1, 引数2, ...) のような関数になっている。 先頭の文だけをとってきたのは、文脈を考慮する必要がないからである。 あと、類似記事の間ではどうなっているかのデータも取ること。
(20:40)
あーーー、死ぐかと思った。サムくて。 空はよく晴れているからまた明日の朝は寒さのあまり死人が出ると思われる。 ほんたうは、夕食は、予告したとおりカツをげる予定だったのだが、 メシを食いにいくことになってしまい料理できず。敗北といえば敗北だが、 まえに La Guardia Pl. にあったなんとかいう中華料理屋が、いつのまにか 名前が変わって、ベトナム料理屋になっていた。野菜がたくさんとれたので、まあよしとるす。
(22:03)
きょうの写真。雪たくさん。

新しいラメカを買ったので、さいきん写真ばっかとってる。な

Jan 22 [Sat]


(08:17)
うーさぶさぶ。今日あすは一日じゅう外に出たくないな。
(08:42)
「うまさ」と「うまみ」は違うよね。「やさしさ」とは言うけど「やさしみ」とは言わないよね。 「おかしさ」と「おかしみ」は違うだろうか?
(09:49)
てくるで。

おととしの夏にACL札幌で、ある本を見つけたのだが、 その本がいつのまにかド有名になっている ことがこのあいだ判明した。いまや東京でもあらゆる本屋にある (おもに福祉・介護関連のコーナーだが、なんで新山がそんなところをあさっていたかは秘密)。 新山が見つけたときはまだ発売されて間もないころで、おそらく北海道ローカルにしか売ってなくて (「北海道の本」というコーナーにあったのだ)、「オーがんばっとるね」と思い、 じゃあ地方でしか買えなそうな本でも買っていくかな、と思って買ったのだが、もう地方の本じゃなくなってしまった。 まあ、この本が売れようと売れまいとどうでもいいのだけど、内容は結構泣けますね。 厚くて重いからこっちには持ってこなかったけど。

(11:14)
nandaなんだ OpenBSD って Zaurus でも走る のか!

www あt openbsd.org って、来るのはほとんど spam ばっかだ。当然のことだけど。

(16:07)
毎度 LL のときに司会してた Ken Anderson が亡くなったらしい。 たしかに、この間 LL4 で見たときはもうかなりフラフラしていた。
(19:31)
ほへー (安堵のため息)。

やっとセンタクから帰ってきてぬくぬく。もう外に出ないぞ。 きょう日中の気温は -10℃前後からずっと上がらず、 寒さで地下のランドリーがブッコワれたらしいので (おそらく水道管破裂だろう)、歩いて 3分ほどの近くのコインランドリーに 出かける。ところがすごかった。 大...雪...警...報 ! すでに歩道には 20cm ぐらい雪がつもっていたが、スニーカーで平気。 なぜならあまりに寒くてコナ雪なので、衣服についてもぜんぜん濡れないのだ。 手でパサパサと払い落とせてしまう。道路では車が人の歩くほどの速度で走っている。 TV をつけると、しきりに「外へ出るな」といっている。 空港はほぼ全滅。高速道路もマヒ状態らしいが、マンハッタンではまだ人が歩いているらしい。 これは明日は行ってみなきゃな。きょう 1日雪はふりつづけたが、これは明日も午後まで 続く予想。TV で "Winter Wallop" というタイトルを見かける。PATH は動いてんのかな。 だとしたら、たいしたもんだな。ボストンあたりはさらにひどいらしい。 「外気に長期間ふれないこと」「ペットが死ぬので家に入れるように」とかいってる。

(19:52)
問題. ある整数 (符合つき) を表現する最小のビット数を求めなさい。

新山の解答:

# return the number of required bits for x.
def needbits1(x, signed=False):
  if signed:
    n = 1  # for sign
    if x < 0:
      x = -x-1
  else:
    n = 0
    assert 0 <= x
  while 1:
    n += 1
    x >>= 1
    if x == 0: break
  return n

assert needbits1(0,0) == 1
assert needbits1(0,1) == 2
assert needbits1(1,0) == 1
assert needbits1(1,1) == 2
assert needbits1(2,0) == 2
assert needbits1(-2,1) == 2
assert needbits1(-3,1) == 3
assert needbits1(127,0) == 7
assert needbits1(127,1) == 8
assert needbits1(128,0) == 8
assert needbits1(-128,1) == 8
assert needbits1(-129,1) == 9
assert needbits1(-6380,1) == 14

これは効率のいいコードなんだろうか。わからない。 ループが入っているのがイヤなのだけど、もっと効率的にする方法はあるのだろうか。

(21:28)
きみは、かんじき (橇) をはいたことがあるか。むかし兎狩りにいったとき 斑尾の山中で使ったことがあるが、すぐに挫折した。 あれはたいして便利でない。歩幅がデカくなるので大股で歩かねばならないうえに、 雪が凍りはじめた斜面では激スベル。むしろ、斜面ではめりこんでくれる深い長靴のほうが安全だ。 おまけに、あれを使っても水の上は歩けない。
(02:37)
小学校のときの知り合いからいきなり実家に電話がかかってくるってのは、 考えられる可能性としては宗教とア○ウェイと、あとなんだ?
(05:08)
Flash Player のバグでオレは悪くないということをつきとめるのに今の今までかかった。 これじゃまた寝不足 (つーか、中也逆転) だ。ばか。

Jan 21 [Fri]


(12:51)
"Inclement weather" を "Increment weather" と読みまちがえた。天気を 1増やしてどうすんだ?
(13:18)
きょう、「鼻歌おじさん」をみた。 これについてはいつかここに書こうと思っていたが忘れていた。 うちのビルにはあんまり人が普段使わない出入口があるのだが (どちらかというと非常口に近い)、 そこにもちゃんと守衛のおじさんは座っていて、入るときにカードを見せなければならない。 で、そのおじさん (おばさんのこともある) は日替りなのだが、ときどき、 「いつも鼻歌を歌っているおじさん」がやっているのを見かける。 誰が入ってこようとも、とにかくズーっと「♪んーーんーんんーーんーーー」と鼻歌をうたいつづけている 丸メガネをかけた中年のおじさん (そりゃ、おじさんはその定義からして中年だ)。 新山がエレベーターを待っているときもずっと歌っている。 しかも、これがなんとなく、モノ哀しげな曲。背中をまるめて座っているのでその容貌も 哀愁を感じさせる。でも同時に「ひたすら鼻歌うたっている」というのがなんとなくおかしく、 新山はいつもこの人がいるとニタニタしてしまう。鼻歌おじさん、いーなあ。
(14:35)
ころきあ。Java 1.5 からサポートされた Generic のための自動リファクタリングに関する研究。IBM。 これまでの Java コンテナクラスっつーのは中に入っているオブジェクトが区別できず、 基本的にはいつも Object 型を入れて、 取りだすたびに Integer 型やら String 型に downcast しなければならなかった。 しかしこれは型変換をミスったときに ClassCastException (だっけ? そんなやつ) が発生するので、 ミスが起こりやすいしコードも見にくくなる:
v = Vector()
v.add('foo')
x = (Integer) v.get(i)  ← まちがい
Generic を導入すると、Vector が自分の型を「知っている」ことになるので、 いちいちキャストする手間がはぶける:
v = Vector<String>()
v.add('foo')
x = v.get(i)
しかし、Java 1.5 の Generic ってのは基本的に静的なチェックのためだけのもので、 べつにそれを使おうと使うまいと生成されるバイトコードに本質的な差はないし、速度も変わらない。 単にソースの見やすさが改善するだけなのだ (もちろんこれは重要である)。 今までと同じ Object を直接格納する方法も依然として使えはするが (この場合は「型が指定されない Generic」として扱われる)、1.5 からは 大量の warning が出るようになったんだそうな。 ところが、すでに大量にある既存の Java コードをこれに合わせて人手で書き換えるのは えらい手間である。ミスも起きやすい。というわけで、今日の研究は 「既存の Javaコードを食わせると、自動的にリファクタリングし、 Generic 宣言を使えるところは使用し、余計な型変換を削除するソフトウェア」なのであった。 ようするに既存のコードと、以下のような Generic の使える関数のセット (基本ライブラリはだいたいこのように書き直されている) を与える:
class MyIterator implements Iterator<T> {
  public T next() { ... }
}
で、プログラム中にこんなのがあると:
v = Vector()
v.add('foo')
for (i = MyIterator(v); !i.end(); i = i.next()) {
  String x = (String) i.get();
  ...
}
これは型推論をつかって v が Vector<String> であり、 したがって i も MyIterator<String> でなければならない、ということを推論する (ただし本当に Vector の型が動的に変化するような場合は Generic は 使えないので、なにもしない)。型推論はすでによく研究されてきた方法で、グラフに変換してから操作する。 その後コードを書き直す:
v = Vector<String>()
v.add('foo')
for (i = MyIterator<String>(v); !i.end(); i = i.next()) {
  String x = i.get();
  ...
}
彼らはこの変換を既存のいろいろな (公開されている) Java コードに適用させて試した。その結果、平均して約半分の downcast が削減でき、それにともなう warning の数もほとんどなくなるそうな。 なお、これは Ecripse 3.1 に塔載されることが決まっているそう。

でも Java じゃなあ。

どうでもいいけど Java 1.5 はいまや J2SE 5.0 って呼ぶのな。 Sun はいつもこういうことをする。バージョン番号底上げ君。Solaris もそうだし、 そもそも J2SE の 2ってのは一体どっから来たんだよ! このぶんだと Java (や Solaris) のメジャーバージョンが上がったときはいったいどんな 数字をつけるのだか予想もつかない (まあ、そんなことは未来永劫ないだろうケド)。 Solaris 3000 とかにするのか? あるいは Solaris 3333 とかか? それともそれとも「SolarisSolarisSolaris」とか 3回くり返すようになるのか?? なんか別なアレを思い出した。どうでもいいや。

(14:35)

K: 馬鹿な質問だが教えて。最近フリーランスになったが、 将来的な顧客になるかもしれない会社から仕事を依頼された。 友達が働いているので安く見積った: バックアップシステムの構築と メールゲートウェイの設置でハード料が $2000, セットアップとテスト料が $1200 (30時間×$40)。 そしたら向こうは「そんなに高いの!?」とびっくり。 自分の選んだ道はほんとに正しいのか自信がなくなった。

意見1: $40/時って安すぎるよ。きみのやっていることは価値があるんだから あまり値段をさげるべきでない。("stick to your guns")

意見2: この業界は競争が激しいからね。 でもそんなに安くてはここ(NY)では家賃も払えんね。そのビジネスモデルはあまり成功とは思えない。 自分を忙しくさせておくだけの顧客がほんとうに見つかるのか。月40時間だけ働くとして、 $40/時だと $1600 だろ。飢え死ぬよ :) stick to your guns.

意見3: ただ彼らは「値切りゲーム」をしてるだけじゃないかな。 オレは一度 $20/時 を要求されたことあるよ。値段を守るべきだ。

意見4: 彼らにいろいろ提案しすぎじゃないかと思う。こう考えたらどうかな。 まず彼らの予算内で、彼らが理解できることだけをやるシステムを納入すべきだ。 そのあと「こんなこともできる」と提案する。こうすれば彼らから次の仕事もくるし、 そのあいだにシステムの効果が現れてくれば信頼もされる。 彼らの「こいつに頼もう」guy になればいいんだ。

K: 安いのには同意する、まあいろいろあってね -- しかしポイントはつかんだ。 要するに、オレは間違ってなかったってことだ! ありがとうよ!

メーリングリストを読むのはときどきひどく勉強になる。いろいろな意味で。 それがいいメーリングリストである場合は。

(16:17)
つらいなあ最近…毎日サムくて…来週はよくなるっていうけど…
(18:17)
どうでもいい関数 range2list:
import re
PAT = re.compile(r'^([0-9]*)-([0-9]*)$')
def range2list(s, n0, n1):
  r = []
  for i in s.split(','):
    i = i.strip()
    if i.isdigit():
      n = int(i)
      if n0 <= n and n <= n1:
        r.append(n)
      else:
        raise ValueError('%d: must be in %d..%d' % (n,n0,n1))        
    else:
      m = PAT.match(i.strip())
      if not m:
        raise ValueError('%r: illegal number' % i)
      b = n0
      if m.group(1):
        b = int(m.group(1))
      e = n1
      if m.group(2):
        e = int(m.group(2))
      if e < b:
        (b,e) = (e,b)
      if b < n0:
        raise ValueError('%d: must be in %d..%d' % (b,n0,n1))
      if n1 < e:
        raise ValueError('%d: must be in %d..%d' % (e,n0,n1))
      r.extend(range(b,e+1))
  return r

実行方法:

>>> range2list('2,3,5-8,10', 1,10)
[2,3,5,6,7,8,10]
>>> range2list('-3,8-', 1,10)
[1,2,3,8,9,10]
>>> range2list('12-', 1,10)
ValueError
(20:16)
あーーー寒い。これからまた下がるらしいな、もう帰ってきちゃったからいいけれど。 ところで (てくるで) 児島からハガキが届いていた。 50円しかはってないのによくついたな。っつーか、それじゃ正直に払ったほうがアホじゃん!! 許すまじ。罰としてオレはこれを受信拒否して送り返すぞ! ついでに呪うぞ! ついでに、ついでに言わしてもらうと、アメリカの飯がマズいことを多くの人に わかってもらえてうれしい。ここは人の住む場所じゃないのだ!! わかったか!!!
1!!!

あー、カツどん食いたいなー。ないけど。 (こういうときにオレがどれほどむなしい思いをしているか、わかる人にはきっとわかっていただけるだろう)
っていうかあした鶏肉買ってきて自分でカツ作ろ。 自分の食いたいものも自分で作れないやつは人として失格だからよ。


Yusuke Shinyama