2004年 9月 (2)。

Last Modified: Tue Sep 21 07:53:52 EDT 2004 (09/21, 20:53 JST)

Sep 20 [Mon]


(11:00)
あいかわらずお人好しすぎるのだ、オレは…。

まあ、騙すよりは騙される側でいるほうが罪がなくていいのだけどね。

はて、なぜオレはそう考えるのだろう。か??

(11:07)
硬貨設定問題のつづき。じつはきのうの宿題の第 2問目はこうである: 出典はこちら
ある国では、客と店員が協力して、買い物のさいに使う硬貨の個数のがもっとも少なくなるように 買い物する。たとえば US で 24セントのものを買いたいときは、客は 24セント (硬貨6個) ちょっきりは 払わずに、わざと 25セント (硬貨1個) を払い、店員が 1セントのおつりを返すのだ。こうすることにより 「客の出した硬貨の数」 と 「おつりに含まれる硬貨の数」 の和が最小になる。 与えられた価格分布において、この和の期待値を最小化するような硬貨の金額を設計せよ。
ちなみにこの場合はさらに最小化する変数が 1個増える。 これも定式化は簡単なんだけどね。探索空間がデカい。

ところでこの教授は Scientific American にパズルの記事を 書いているので有名らしいのだが、日経サイエンスにも掲載されてるのかな??

(14:23)
ようするに、モノモラーって、あれな。「まぶたにできるニキビ」な。 非常厄介。まあそんな厄介でもないんだけど、左目だけ一重になってしまった。 新山は「1.5重」なのであるが、これはときどき一重になったり二重になったり、 ときにはわずかに「二重か?」と思える微妙なスジが入ったりためである。 しかし確率的には一重の時間のほうがやや長そうなので、1.3重ぐらいかもしれない。

内輪うけはアナタを巣喰ってくれますか??

(14:31)
HTML のパーザ (Python) をあれこれいじくってたら HTML charset 名と Python codec 名を両方とも encoding と呼んでいて混乱する。 たとえば "x-sjis" は charset名ではあるが codec 名ではない。 変数名でも混乱しそうなので、もうこれからは "encoding" という名前は 使わないことに決定。"charset" と "codec" で使い分けよう。
(15:21)
Collins parser をまたいじっている。N-best 解が出るとうれしいというので、 あれこれ見てみるが、やっぱ汚いわ、この人のコード。とゆーか、原理的に N-best って 出るのだろうか。beam search すれば近似は出そうだが、かなり遅くなりそうだなあ。 で、なんでオレは好きでもない統計 (=いんちき) パーザをいじってるんだろ…? じつに不毛度が高い。
(16:51)
気が散ってきたときの新山の行動:

その他の成果:
google://てまえポン/ (1軒)

(20:14)
「ハーイ! 45th 通りに HP のワークステーションが沢山捨ててあるのを発見したよ! まだ PIII も入ってるよ!」 というメールが ML に流れた。

なんなんだこいつらは。拾いに行くやついるのかな?

(21:23)
今日はかなり早い晩ごはんだ。tkrd,いまどっかの国の首相がNYにきてるのか? 日本がジョーニン理事国になるために菓子折り持って国連に来たのだろうか? どうでもいいけど、涼しくなってから来るのがむかつく。鍋は暑いうちに打て! だいたいジョーニン理事国になるとなんかいいことあるのだろうか。 なんんか、あちこちの国からフンだりけったりされそうな感じがするのだけど。 そもそも「常任なんとか」「常務なんとか」って名のつく役職になるとろくなことがない という印象があるのだが (といっても新山が知ってる唯一の例は「生協の常務理事は タイヘンそうだった」ということだけだが)、常任と常務って意味的にどう違うのだろう??

いまでもあの方々は「鍵持ち」をやらされているのだろうか。

(23:01)
ほわーお。まだ 11時なのに、もうねむいや。

寝ちゃおうかな。

キラカー (お気楽'er)

キラキスト
(23:06)
TA の xiaojian から「みなさん、宿題の締め切りまであと 2週間ありますが、 そろそろ始めましょうね」というメールがきた。

なんてやさしい TA だ!!

(00:47)
ほんとに拾ってきた奴がいたらしい。 「いま彼女と二人して漁ってきたよ、PIII × 3個と、 ついでにナイスな椅子もゲットした!」とかいってる。 とくにすごいのは「彼女と二人して」ってところだ。

Sep 19 [Sun]


(08:55)
ナカヨク教。
(11:23)
寒いしおまけにカゼがつよい。まるで 10月中旬の陽気だ。 きょうは長袖を着ている。

ところで、けさ起きたら左目のマブタがはれぼったくやや痛かった。 見てみると、モノモラーができたらしい。まだこれがソレであるという 100% の 確信はないが、なんとなくそんな感じだ。

しかし、モノモライ…。記憶に残っているかぎりでは新山はモノモライに なったのはこれが初めてであるので (もしかすると子供のころには一度なったことあるかも しんないが)、なんとなくウレシイような気。もする。

まあこれは初めてウオノメができたって喜んでるようなもんで。

(13:41)

  \
    \
      \すべり落ちた__ 。
(15:23)
さむいなあ今日は。

午後は Heuristic Problem Solving の宿題をやってすごす。 この授業はなかなかユニークで、ようするに先生が毎週数学パズルを学生に出し、 学生はそれをプログラミングして解く、ということをくりかえすのだ。すげー楽しそうでしょ。 今回のパズルは最初のやつで、「硬貨の設計 (Mint)」である。これは簡単にいえば、以下のような問題だ:

ある国が 5種類の硬貨を市場に流通させるとする。 政府は流通させる (生産する) 硬貨の数をなるべく少なくすませたいが、 これは各硬貨の金額をいくらに設定するかによって変わってくる。 たとえば US では 1, 5, 10, 25セントの 4つの硬貨を使っており (1ドル硬貨は無視する)、 EU では 1,2,5,10,20,50 セントの硬貨を使っている。 物価の分布が与えられたとき、最適な硬貨の金額をデザインするプログラムを書け。

まず、最初に「ユニット問題」を解かねばならない。各硬貨が特定の金額のとき、 ある値段の品物に対して最適な (もっとも使う硬貨の少ない) 払い方を見つけるのは、 じつはそんなに単純でない。最初、「でかい方のコインから使ってきゃいいんじゃないの?」と考えたが、 これは間違っていた。たとえば「1セント硬貨、30セント硬貨、50セント硬貨」という 変態な組み合わせの硬貨しかない世界で、60セントの品物を買うことを考えると、 50セント硬貨を使うのは間違いなのだ。なぜならそうすると残る 10セントはぜんぶ 1セント硬貨で 支払わねばならないから、11枚必要になってしまう。けれど 30セント硬貨を使えば 2枚ですむ。 基本的にこれは動的計画法に還元できるため、実際にはそんなにむずかしくない。

さてこのように「ユニット問題」は簡単に解けるのだが、問題はすべての考えうる金額の 組み合わせの中での最適解を探さねばならない、ということである (5種類の硬貨にそれぞれ 1〜99セントまでの異なる金額を割り当てるので、… いくつだ? 99C5 = 7000万通り、計算してみたらたいしたことなかった) 。 最終的にはこれは探索問題に帰着できるのであるが、問題は探索空間が デカすぎて何らかのヒューリスティックを使わないと最適 (に近い) 解を見つけられない、 ということだ。だから唯一の最適解を見つけるのが目標ではなく、いかに 最適解に近づけるか? が重要になる。そして各学生はこれで競争するわけだ。 まあ、今回の宿題だと Brute force でもできそうな気配なのであるが…。

(17:44)
ふげーーー、やなこと聞いちゃったよ。

てくるで、今更ながら iTunes Music Store を使ってみたが、 すげー。これ、バケモノ的に便利。こんなんではうっかり月に 何十ドルも使ってしまう人がいても不思議ではない。しかし… どうもあんまり音がよくないような気がする。ビットレートも 128k だ。 基本的にこういうのはヘッドホンとかいいスピーカで聞いちゃいけないのかもしんない。

Sep 18 [Sat]


(09:50)
マタ寝坊。明け方、窓をたたく雨音と雷のあまりのうるささに目がさめる。 その後眠れず。ようやくましになったのでウトウトしてたら、こんんな時間。

ぜんぜんカンケイないが思い出したこと。きのう、うちのビルの 1階に某G社のチラシが貼ってあった。 例のロゴのせいで目立つ。そして「われわれ G社が大学にくるよ! そしてキミをさがしているよ!」と書いてある。 いつもこんなところにポスターを貼ったりしないのになんでこいつらだけ特別扱いなんだろ。 MSが同じことやったら大ブーイングだと思うけど、なんでみんな G には目をつぶっているわけ? やつらはべつに正義の味方なんかじゃないぞ。

(13:25)
ぐはーーまだ風がつええ
(15:55)
きょうは、サムい death!! それなのにアロハーなシャツを着ている自分は、アホであり math!! ところで(tkrd)まえまえからハンケチ (どうゆう組み合わせた”!!) とまないたを時間がアレば買いたいと思って居ゐのですが、 自分は、こんな天気で、ほんたぅーに外出するで show か?? だれにもわかりません。knowbodyknows 今日のバカ度 == いつものバカ度。照明終了。l

いや、ほんとに。シュナダフウムウ。

なんですってqェーー−-

google://シュナダフウムウ/ (1軒)

(22:50)
ああそれとサイフだ、サイフ。古い
(23:02)
オレは濃いソバ湯が好きであるよそうあるよ以上。

East village に「蕎麦屋」 (NE) という有名な蕎麦屋 (一般名詞) があるが、 このあいだ久しぶりにそこへ行ったのだが、いちおう味はいいのだけど、 ソバ湯が薄くて不満だった。まあ、普通は日本の蕎麦屋でもあのくらいなんであるが…。

蕎麦によっては、もっと、トローっとした感じの蕎麦湯になる。 NY の「蕎麦屋」は、生意気にもいちおう手打ちで、いつもヒスパニック系の あんちゃんが蕎麦を打っている。しかし蕎麦粉は安曇野産だという。 ふん。新山は蕎麦に関しては圧倒的に「新潟派」である。 しかも津南町じゃないとだめだ! (長野の蕎麦と新潟の蕎麦は感触がやや違う、これホント) で、オレはいったい何の話をしているかというと、ひさびさに「苗場そば」を 入手してソバ湯を飲んでいる (うまいソバ湯はそれ自体に味があるので、 何も入れずにそのまま飲めるのである)。でもなんかやっぱちょっと 日本と違うぞ。くさみがある。水のせいだろうか。

Sep 17 [Fri]


(11:50)
あいかわらず、ムカつくページをなぜわざわざ見たり、 リンクしたりする人がいるのか理解できない。 マゾなのだろうか。

google://師弟バンク/ (1軒)

おお! いま発見したが 「検索結果: 1件」というよりも「1軒」を使ったほうが なんかいいぞ!

(12:46)
そういえば今日はころきああったんだ。忘れてta
(17:36)
講習会終了。まあ相手は日本人だったので説明に不自由はしなかった。 しかしこと Python のことになるとつい情熱的に喋ってしまう癖はなんとかせねべねるめい。

資料はこっちら: http://www.unixuser.org/~euske/doc/python/tutorial0917.html

(18:25)
106 lives, 11 skips. オレにはこれが限界だ。?
(21:04)
ふとした出来心で Collins parser を cdb 使うよう改造したら一瞬で起動するようになった。 こりゃ便利。しかしよくプログラムを読んでいくと、彼のプログラムの書き方って表層は キタナイけど構造は以外ときれいである。まー、といってもしょせんはいんちきパーザだが! (いんちき、というのは、人間の思考プロセスをほとんどすっとばしているという意味で、 基本的にこの定義だと統計的手法は全部いんちきってことになる。まあこんなことは一部 (全部?) の方々の 前じゃとても言えませんガ…)
(21:37)
moutukareta, kaeru.

Sep 16 [Thu]


(08:08)
また落ちこむ夢を見てしまったのでここには書かない
(13:58)
突然あすの午後にニワカ Python 講習会をやることになったので、 てきとう資料作成。

(23:56 長いので unixuser に移動: あとでリンクはること)

タプルは意図的に避けた。最初からすべての機能を紹介しないほうがいい。なんかまだあるかな〜 (15:46)

(16:22)
んmくなってきた
(17:31)
google://オレのこの/
(23:45)
書くこと忘れまし。多

さいきんさー、あっちこっちのポートで web サーバ上げてんだよね。 うちだと 8080 はもう使用中だから使えないとして、 いま 7777 と 8000 と 8888 でも上がっている (といっても bind は 127.0.0.1 だが)。 ブックマークに "localhost:8000" とかいうのが山ほど入っているのはなんかヘンだ。

ところで IDLE をいじっていたら「indent-region」の逆は「dedent-region」っていうの? 「ででんとリージョン」ってなんかカッコいいじゃん。

(01:10)
TCD (Total Cost of Development) という概念はすでに MS が考え出していたのか。 彼らのもくろみはどうでもいいとして、新山は TCD(Python + 他の言語A) のほうが、 TCD(言語A のみ) よりも小さくなると思う。だからどうした。だからなんだ。え?

Sep 15 [Wed]


(09:46)
またもや朝になるとノドガイダグダッダ。 あー、今朝は 10時半までに行かなきゃイケネーんじゃねえか。くそったれ
(13:27)
やっとミーチィングが終わった。つかれる。ケッキョキ遅刻しました。

あんなに長く (2時間) 続くなんてよ〜。しかもオレは興味がないのになんか興味あるような フリをしなければならず、ああいう場は大変しんどいのである。 おまけに寝不足なうえに朝メシを食わずに出席したので、もう最後のほうに なると頭がクラクラして正常な思考ができなくなっていた。

昼メシを買いにいったら Univ. Pl. に法輪効の連中が沢山いて、 なんかみんな地ベタに座って、天に向かって祈りをささげている。 こいつらを根だやしにしたい中国政府の気持ちがわかるような気がした。

(15:01)
うわ、カッコイー。 (もうカッコよくありません、9月17日現在)

どうでもいいが、今日は授業があるので nylug-meeting に出れない。 なんか面白そーなトピックなのに〜〜

(22:07)
データベースの授業から帰ってきていまシャワーあびたとこ。 これからセキネ社の仕事を片付けなければなんねえが、まあおカネもらってんだから やるこたやんないとな。たとえ一時的にアホでも (遅刻するとか)、 最後に「元は取れた」と思ってもらえればいいのだ。それにしても学期が 始まってからはほんとうに忙しい。しかし授業に出ると非常な充実感がある。 こんなに毎日充実してていいのだろうか? なんかそのうちバチがあたるんじゃないか? とも思うが、 まあ「食えるときに好きなだけ食っとけ」というのが新山家のポリシーであるので、だ。
(00:16)
なに来週は NYJavaSIG があるって? もういいよ

Sep 14 [Tue]


(09:02)
ノドがいたいのは花粉症のせいなのか、あるいは何かべつの ヤバい要因によるものなのかはわからない。しかしどうでもいい。
(11:52)
サイボウズ流「メール対応、虎の巻」! より引用:
その 5. お客様の書いた文章より長い文章で返答せよ。
        熱心さがお客様に伝わる。

ああそう。これには笑った。ほかの項目もかなりアホなのだが、こいつはとくにひどい。

日本式上げ底文化がここにもある。 「冗長なメールは (相手にその分だけ読む時間を取らせるから) 失礼だ」 と思って、いつもなるべく語数を減らすようにしているオレは一体どうなる? (けど重要なポイントは落とさないようにしたいので神経つかうのに)

ふつう、日本人は上げ底の包みなんて気にせず捨てるから、 こういうことを言う人はきっと相手の言うことをそもそもちゃんと 聞いるかどうかあやしいし、自分の言うことも適当にカサをふやしているのだろう。 まるでオレが学部のときにやった課題レポート水増し作戦みたいなことを 仕事でやっているわけだね?

まあ、日本語の敬語体系そのものが上げ底文化の一種といえばいえるかもしんないが。

(14:54)
あ〜〜〜〜、練習しとくべきだった。sqk
(16:51)
スイッツァーらんどから例の高い高い COLING のプロシーでぃんぐs が届いた。 以外と早いのね。船便だからもっとかかると思ってたのに。

しかし、CD-ROM があるのでぜんぜん必要ない紙の物体であった。 (必要なところだけ印刷すりゃいいわけだし、いまさら重い本をウンウン言ってコピー機するやつはいない) もったいないのう。おまけにそれを 5000円近くかけて送ったオレの人生はさらに無駄。

(18:28)
最近テストしている p2p風システムモニタをみていると、なぜか新山のマシンだけがある時だけ 負荷の高い状態になっていた。そのときオレは Python を実行していたことになっている。ハテ? 今日はなにも実験してないのにな? と思った。

Solarwolf だった。バレバレぞ。

(02:42)
やっと帰ってきた。あーーーー、疲れた。

LispNYC のイベントに行ってきたのである。 でも、こんなに遅くなるとは思っていなかった。トークのあとに 1av のバーで飲んでいたのだが、当然、 「今 Lisp で何やってるの?」という話になりまさあね。それで「いやー昔 Scheme 使ってたんだけど、 いまは Python のほうが気にいっててね」といったら…

「なにィイ? Python だァア!?」

一斉に攻撃開始。ほぼ、向かうところ敵なし。の、逆。みんな 「なぜあんな言語を使うんだ! Lisp のほうがあきらかに圧倒的にすべての面において優れている!」 という。孤立無煙。いやー、さんざんイジめられましたよ。以下、 新山が受けた罵倒を ここに記しておく (忘れないうちに):

あれま。こんなにあったね。とにかく彼らの Python に対する敵意はものすごかった。 なんかもうこれはアレだよ…オレ一人だけ「異教徒」あつかいなのな。 ま、楽しかったからいいんだけど (最後は「おいユースケース、帰るからリムジン回せ」)。

しかし、彼らの多くは本当は Lisp を使いたいのに、毎日の仕事では嫌々 Java や C++ を使わねばならない境遇に置かれているのだった。みんな、ストレスたまってんだろなー。 ここからも Lisp がマイノリティであることをひしひしと感じる。しかし彼らは「Python, Java を ふくむすべての言語はどんどん Lisp 的な機能をとり入れてきており、 いずれすべての言語は Lisp に回帰する」と信じているらしいが、まるで共産主義みたいだな、 と言っておいた (中国人と話すと、「いつか世界が共産主義のよさをわかるときがくる」と 思っている人がいて驚く、全員ではないが)。実際、彼らは「人間はみんな (マクロを設計できるほど) 賢い」と 仮定してそうなので、じつにサヨクと共通項が多そうだ、というのは以前ここにも書いたけど。 相手に好き勝手言われていると、こっちもなんの気がねもなくキツいことが言えるからやりやすい。

でも彼らはそれなりにちゃんとしたことも言っている。 たとえば、新山は Lisp (Scheme) でどんな構文でも同じように見えてしまうのがイヤで、 Python だと違うものは見た目が違って見えるからいいんだ、と言ったのだが、 彼らは「でもそれはライブラリ呼び出しには当てはまらない、Python だって 全然違うライブラリ呼び出しの見た目は同じじゃないか」という。 たしかにそうだ。それでもオレは文字列操作や数値計算などのプリミティブな操作は 違って見えたほうが好ましい、と考えるが、べつに Lisp 的なやりかたを全否定しているわけじゃない。 用途によると思う。しかしライブラリの問題はどんな言語でも起こりうるだろう、 というと、彼らは「いや Lisp はそうじゃない、Lisp はほかの言語よりもずっと 抽象化がしやすいから、自分が『何を解くか (what to solve)』に専念できる、 なぜお前は Python のような『どう解くか (how to solve)』しか書けない言語を使うのか」といわれた。 そうかなあ? いや、むしろオレは抽象的な解法なんていつもあるとはかぎらないと思う。 時にはより即物的な匂いのする解法を、より直感的な文法で書きたい。 Python を使う理由のほとんどはコレだ。オレが解く多くの問題は抽象度がそんなに高くないからかもしれない。 まあ、たしかに超巨大プロジェクトでは Allegro CL がいいかもしれないということは認めるよ。速いしね…。 そして彼らはとにかくマクロの使用をやたらと強調する。マクロが使えない言語は 言語として認めないのではないかとすら思った。

さいしょ、彼らがなぜそんなにマクロにこだわるのか わからなかったが、彼らのいう「プログラム」のほとんどが業務用のバカでっかいソフトで、 ただひたすら仕様を実装するのが仕事、ということがわかると、まあそれはうなづけるのかもしれない。 Java のような言語でマクロが使えないと、いざどっかのモジュールが仕様変更したときに (単純な関数の変更では) 対応できないというのだ。マクロのおかげで Lisp はどんな変更にも 柔軟に対処できる、と彼らは主張するが、それをいうなら OO だって目的は同じところ (=変化に柔軟に対応できる) を 目指しているはずである (ちなみに新山は「OO もマクロもダメなときはダメだ」と考える)。 でも連中あくまでマクロこそが本命だと考えてるらしく、「プログラミング言語は OOと高機能マクロの 両方を備えるべきだ、どっちも完璧なのは CommonLisp だけだ」という。 Paul Graham もマクロが本命で OO は嫌いらしいからな (ちなみにマクロはデバッグが地獄じゃん、 といったら、彼らは「Lisp のマクロは C なんかのそれよりもカシコイので、そんな問題は出ないんだ」といっていた。 眉唾)。

ちなみにきょうのトークは Scheme だったが、ここの人々はあきらかに 「CommonLisp が一番エライ」と思っているようだった。 「なにより CL には美しい標準がある!」と彼らはいう。 彼らにいわせれば「Scheme なんか仕様書が小さいだけで、あれだけじゃ何にも書けやしない、 結局ライブラリを全部書かなきゃいけなくて、他人が別の環境で書いたコードは全然共有できない」というのだ。 最近は SRFI があるからいいんじゃん? というと「あんな付け焼刃な規格は全然ダメだ、 SLIB のほうがまだよくできている」と言われた。そんなに CL の規格って整っていたっけなあ? Lisp は名前空間が 2個ある (関数と変数で別々) のはどうなの、あれは混乱するんだけど、と尋くと、 彼らは「あれが分かれてるおかげで関数名と変数名の衝突を心配せずにすむだろ」という。 そーんなこと、めったにあるもんじゃないじゃん? と思ったのだが、彼らはなんでも見境なく 短いマクロにしてしまいそうだからそのへんが問題になるのかもな。

いやー、そういうわけで 4時間ちかく喋っていたのだが、最後は後腐れなく握手して 「次のミーティングも絶対来いよ!」といいつつ別れた。喋りすぎて声が枯れてた。でも楽しかった。 日本でこんな濃い議論ができる集まりはあるだろうか?

トーク自体は Java と Scheme をいかに組み合わせるか? という話で、これはなかなか面白かったのだが もう書くヒマがない。それにしても Java で書かれた Lisp/Scheme 実装の多いこと多いこと。 冗談ぬきで数十もあるらしいよ。さて寝なきゃ。宿題まだやってねーよ! todo: jatha, jscheme, kawa, linj, stella,

Sep 13 [Mon]


(07:48)
いきあたりバッタリ
(08:16)
がーーーん… (Solarwolf のゲームオーバ時のピアノ音で)

バナナのヘタが 3つともとれてしまった。

バナナのヘタが弱いとなぜこまるかという議論について

うちでは Bonita のバナナを房で買ってあるのだが、 いま 1本食そうとして房からもぎ取ろうとしたら、ヘタに一緒についてた 別のやつ (ユニット) のヘタの根っこの部分 (本体とヘタとの付け根のところ) が 黒ずんで弱っていたらしく、そこがポきっと折れて中身がむきだしの状態になってしまった (まだ完全に分離はしていない、一部の皮でつながっている)。取ろうとした バナナ自体は無事である。「ふげー」と思って、そんじゃあ中身が見えちゃった ヤツから先に食うべえと (傷んじゃうからね)、その弱くなったやつを もぎ取ろうとしたら (そいつの皮はまだヘタにくっついてるので、ヘタごと 分離したほうが早かろうと思ったのだ)、その衝撃で 別の2本のやつがボこットトレタ。 「ふんぎょえー!」と思ったが、もうあとの祭りである。 一夜にして (より正確には、一瞬にして) 都合 3本のバナナを 食わねばならないハメに追いこまれたのだが… しょうがないので 2本はここで食って、1本は大学に持っていくことにスルホン酸。 ったくよう。バナナのヘタは強くしろ!! 証明終わり。

(11:18)
wa-wa- 間に合わない
(17:56)
間に合わないのにネムい。ネムくなったら Solarwolf をやる。 さいきん、かなり上達してしまった。しかしいつもすぐ飽きるのでそんなには進まない。

最近のバージョンアップで、このゲエムにはそれなりに奧行きがでてきたと思う。 ひとつは隕石の追加で、こいつは弾よりもノロくて進路を妨害するので 最初かなりジャマだったのだが、じつは敵 (?) の撃つ弾は「隕石に当たると消える」ので、 隕石の進路が読めればこいつをタマよけとして使うことができる (ただし隕石自体に触れるとボカーンとなりますが)。そしてパワーアップアイテムの追加。 こいつは取らずに放っておくと次の面に「持ち越せる」ので、上手く使うと時間ぎれのところを 防ぐことができる。ただしあまり長い時間たつとそのうち勝手に消えてなくなるので注意。 使いどきが問題だ。先のほうへ進むとタマの数が半端じゃなくなるので (画面上に常時 20〜30個は出るようになる)、取りたくてもそこまでたどりつけずに死ぬ。

なによりも意地悪な変更は 30面以降に出てくる「隠れ爆弾」の追加である。 こいつは最初エサ (四角いやつ) のように見えているのだが、 一度その上を取ると「シャキーん」というような音とともに 爆弾に変わるのだ。新山は黄色や赤のエサを取るのに同じところを何度も行ったりきたりすることが 多いのだが、この隠れ爆弾のせいですっかりその戦略は変わってしまった。いまやひき返したとたん ボガーンとなる。激コワいね! これにひっかからないように効率よくエサを取るには、 なるべく「一筆描き」に近い経路をとる必要がある。しかし弾が多いとこれは簡単にはいかない。 かくして「1面もクリアできずに 3機やられてゲームオーバー」が頻発することになるのだった。 いや、すげえゲームだよ。Windows 版も Mac 版もあるのでぜひやるべし。

(20:09)
おいんく (oink)
(00:17)
ヨォーー あのさァ…。

なんでおんなじ健康保健カードが 2コくるの??

いまとり出して隅から隅まで調べたが寸分たがわず一緒である。番号もとうぜん一緒。 これはいったいなんなんだ?? バックアップ用なのか。

どうでもいいことであるが、今あるところであるものを見たら、ひどかった (身内に見られたらヤバイのできちんと書かないでおく)。 このホラブルなインターフェイスはなに?

まあいいや、オレには関係ない… (両手、両耳)

ボゴシティ!  ブルシットネス!!

(00:48)
おーおーおー、また放っとけない人がいるのですca?

Sep 12 [Sun]


(09:51)
CHARS_KANSUJI = {
  u'0':0, u'1':1, u'2':2, u'3':3, u'4':4,
  u'5':5, u'6':6, u'7':7, u'8':8, u'9':9,
  u'0':0, u'1':1, u'2':2, u'3':3, u'4':4,
  u'5':5, u'6':6, u'7':7, u'8':8, u'9':9,
  u'〇':0, u'零':0, u'一':1, u'二':2, u'三':3,
  u'四':4, u'五':5, u'六':6, u'七':7, u'八':8,
  u'九':9, u'十':10, u'百':100, u'千':1000,
  u'万':10000, u'億':100000000, u'兆':1000000000000L,
  u'京':10000000000000000L,
  u'壱':1, u'弌':1, u'弍':2,
  }
CHARS_IGNORE = u',、,'

def parse_chnum(s):
  (n1, n2, n3) = (0, 0, 0)
  for (i,c) in enumerate(unicode(s)):
    if c in CHARS_IGNORE: continue
    try:
      digit = CHARS_KANSUJI[c]
    except KeyError:
      break
    if digit < 10:
      # n1: "〇", ..., "九"
      n1 = n1*10 + digit
    elif 10 <= digit and digit < 10000:
      # n2: "十", "百", "千"
      if n1 == 0:
        n1 = 1
      n2 += n1 * digit
      n1 = 0
    elif 10000 <= digit:
      # n3: "億", "兆", "京"
      n3 += (n2+n1) * digit
      (n1, n2) = (0, 0)
  else:
    i += 1
  return (i, n3+n2+n1)

新山は if のあとに break や continue を書くときは、 インデントせずにそのまま右につなげて書く。この例ではうまくいっていないが、 こうすると break や continue がピョコンと右にはみ出て、 そこからループの終端までひとっとびであることが見た目にわかりやすいのだ。 つねに制御構造が視覚的にわかりやすいコードを書こうとしているのだけど、 それはいつも可能なことなのかはわからない。

Python の宣伝文句をもうひとつ思いついた。「目にやさしい言語」というものだ。 あきらかに Perl や Ruby は目にやさしくない。

ちなみに新山が Ruby を嫌いな根本的理由というのは、目にやさしくないことよりも、 「節操がない」からである。Perl と Python の間にはあきらかに思想的な差異が存在し、 これらの言語をスイッチするときには (大げさな言い方をすれば) 考え方を変えなければならない。 それはデータ構造の設計とかそういうたぐいの考え方ではなくて、ある意味、 Perl と Python ではプログラミングに別種の「覚悟」とでもいったものが必要になる。 しかし、Ruby はこの 2つと比べると とくに明確な設計理念といったものはなく (しいて言えば「オブジェクト至高を徹底させる」 ということくらいだが、これはメリットにもデメリットにもなるし、実用性とは 直交する概念なので無視する)、はっきりいえば、何の思想もないように見える。 「思想」という言葉がおおげさに聞こえるとしたら、「覚悟」と言いかえてもいい。 したがって、なぜ Ruby を使うのか? という理由は、「ここがこれと比べてこう書けるから」的なこまかい機能的な差異の 列挙に終わる。実際おそらくほとんどの人は Ruby を Better Perl としてしか 使っていないだろう。そういう人は言語の機能だけに興味があって、その根底にある 考え方はどうでもいいと思うのかもしれない (あるいは、そもそも技術の中に思想が 存在しているということに気づいていないかだ)。が、オレはどうも作者の考え方が 端的に現れている道具のほうが好きらしい。qmail を使っているのも そういう傾向を反映しているといえる。逆に、つねに中庸でありたいと思う人にとっては Ruby のような思想のない言語のほうがいいのかもしれないが、Ruby は 中庸というよりはむしろ無節操に見える。そもそも、言語に中庸なんてものはありえないのだ。 “技術者は技術力を持ってその思想を証明しなければならない”。 プログラミング言語では、技術 = 機能と読みかえることができるだろうか。 言語がそういった思想から完全に独立できると思っているやつがいたら、 そいつはかなりアホだ。自然言語もまた同じ (もっともこのことは、新山は最近まで わかっていなかったのだけれど)。

しかしそう考えると、Ruby が日本で流行ったのはその無色さも関連しているのかもしれない。 なぜなら日本では個人が自分で自分の思想を考えだすことは法律で禁止されているので (他人から借りてくるのは許される)、つねに無思想的な「誰からも嫌われない」ものが 好まれるのである。そういったものが人気を博そうとすると、だいたい「いいとこどり」「多機能化」に終始するね。 しかし機能をいくら足しても決して近づけない場所というのがあり…あるいはこう考えることもできる。 思想は機能をつけ足すことによって表現できるのではなく、 機能を削ることによって表現されるものなのではないか? なにを足しなにを足さないかというところにかなりのウェイトがあるような気もするが、わかんない。 言語にかぎらず、日本製品に「よくできている」ものは多いが、 それもこうした傾向のあらわれなのか? 「よくできている」からといって「よい」とはかぎらない。 「よくできただけ」のものでなく、真に「よいもの」を作るためには、 なにか技術や機能とは別のものが必要なように思えるが、いずれにせよその判断にはかなりの 主観を含むことはまちがいない。それが思想ということなのだろうか? じつにアイマイだ。 とにかく、今のたいていの日本人は (新山をふくめて) そういった主観的・個人的な方向に 踏み込むのを怖れるので、いつまでたっても「いいもの」は作れそうにない。昔はどうだったか知らない。 技術大国の日本かもしれないが、ある意味「技術だけ大国」の日本だ。 まあ、これからもずっとそうなんだろうなあ。そして心中国家。

(15:14)
なぜ葛ゼリーがうまく固まらねーんだよう。このクズが。
(16:11)
ところでてくるでいきなりフレあマーけっと (fleamarket) の話だるが、 なぜかうちのすぐ前にも「Fleamarket Sat or Sun when not rainy」という 看板がかかっていて、土日にはほんとに蚤市をやっているのだ。 といっても、マンハッタンにあるような、 たいていの人が「蚤市」と聞いて連想するようなご立派なものではなくて、 ただ家の前に机を出して、そこに 10個ぐらいの品物をならべて、 おばちゃんがその前でボーっとしている、というだけのもの。 住宅街だからべつに休日に大して人通りのあるわけでもなし、 あんなので売れるんかね? と思うが、べつに売れなくても困らないんだろうな、 ああいうのは。むしろおばちゃんの日なたぼっこが目的かもしれない。 でもなんとなくああいうのはいいと思う。なんかね。 自分もいつか歳くって悠々自適になったら (本当になるんか? という心配はあるが… あっちこっち走りまわっているうちに氏ぬんじゃないかと怖い)、ああいう 「趣味商売」をやりたいもんだと思う。喫茶店とかよさそうだよな。 日に客が 10人来るかこないかって感じの (しかもほとんどは知り合い)、 超内輪向け喫茶店とか。東京にもそういう店がときどきあるし。 で、「プログラムの添削承ります」とかヤバそうな看板を出しておき、 「お前その変数の使い方はなあ…」とかいって客に説教するガンコおやじになるのである。 うわ、それ楽しそうじゃんか。
(22:31)
そのページを見た私は「?」マークを 20個ぐらい出した後、強制終了した。

Sep 11 [Sat]


(11:21)
ああそうか今日は 11日だったのか…。

おとといあたりから、また WTC 跡地で 2本の光の線が空に向かってのびている。 しかし最近はこのところ曇ってるので、光はあんまり高くまで到達しない。 ま、どうでもいいけれども。

(11:54)
Python 的課題 その 45445。漢数字をパーズして整数に変換する関数 parse_chnum を 作ることを考える。この関数は先頭に漢数字をふくむ文字列を受けとり、その値 n (int あるいは long型) と 漢数字列の文字数 length (int型) を (length, n) のようなタプルで 返すものとする。漢数字には 2種類の表記があり、ひとつは「億」などの桁の指定を 使う方法と、もうひとつはアラビア数字の記法をそのまま漢数字に置きかえたものがあるが、 どちらも受けつけるようにすること。なお、数値中の読点やカンマは無視する。
>>> parse_chnum('千六百四十万二千四百四十壱円也')
(13, 16402441)
>>> parse_chnum('五、六七〇、〇〇〇、〇〇〇年')
(13, 5670000000L)
>>> parse_chnum('二億四千万の瞳')
(5, 240000000)
答えはあした書きます。
(17:34)
おっっ、いつのむにか中国版と香港版と台灣版ができてる!
(19:23)
ソフトウェアの名前だけを思いついた。 "Linoscape (りのすけーぷ、らいのすけーぷ)" というのだ。 ありそうな名前だが、Google しても一件もひっかからない。しかしあまりにカッコよすぎるので 自分の作ったソフトウェアの名前としてはボツにするつもり。なんか、印刷系の ソフトに使ったらいいように思える。

うまいのものは早く喰え、と。

(00:12)
遅くなってしまった。
いま部屋の窓からは、WTC 跡地から昇っている光の筋が見える。
きょうの夜はすっきりした天気なので、光の筋は上空高くまでよく通ってい
る。だから光の先端を目で追おうとすると、頭をほぼ真上に向けることになってしまう
(85゜ぐらい?)。光は下のほうではかなり焦点を細く絞ってあるらしいが、上に行くにしたがって
その境界がぼやけていき、先端はほとんど空と同じ色になっていて見えない。
しかし WTC ってこっからけっこう遠いのに (3km以上ある)、ほぼ鉛直まで行ってるってことは、
光の先端は tan 85゜× 3km ≒ 上空 30km ぐらいまで見えているってこと?
これだけ真上まで見えるのは、空気が相当よく澄んでいるからな
のか。

Yusuke Shinyama