<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja"> 
  <HEAD>
    <title>Akihito Nagata's Page</title> 
    <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    <META http-equiv="Content-Style-Type" content="text/css">
    <meta name="keywords" content="akihito,nagata,ocaml,java,unix,linux,postgresql,html,stylesheet,cgi,thesis,type">
    <meta name="description" content="Akihito Nagata,プログラミングやlinuxなどのtips">    
    <meta name="robots" content="all">
    <link rel="stylesheet" href="/~ganat/stylesheet.css" type="text/css">
    
    <style type="text/css">
      
      h1.titlecounter { background-color : white;
                        color: navy;
                        font-style : italic;
                        padding : 10px;
                        text-align : right;
                       border-style : none none solid none;
      }
      div.history { border-style : none;
                    border-width : 1px;
                    border-color : red;
                    padding : 0px;
                    margin : 0px;
      }
      li { margin : 5px; }
      div.date { background-color : #0fbf9f; 
                 font-weight : bold;
                 color : white; 
                 text-align : right;
                 font-style : italic;
                 margin : 0px; padding : 1px;}
      .blue {
        color : blue;
      }
      
    
    </style>
  </head>
  <body>
    <table summary="table" border=0 cellspacing=0 cellpadding=0>
	<tr>
	  <td valign="top">
	    <table summary="table" border=0 cellspacing=0 cellpadding=0>
		<tr>
		  <td>
		    <!-- 左上の画像 -->
		    <table summary="table" border=0 cellspacing=0 cellpadding=0>
			  <tr>
			    <td width=10><img alt="*" src="/~ganat/images/borders/pic_border_lt.jpg"></td>
			    <td width=120 style="background-image : url(/~ganat/images/borders/newpic_border_t.gif);">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			    <td witdh=10><img alt="*" src="/~ganat/images/borders/pic_border_rt.jpg"></td>
			  </tr>
			  <tr>
			    <td><img alt="*" src="/~ganat/images/borders/pic_border_l.jpg"></td>
			    <td><img alt="*" src="<!--#exec cgi="/~ganat/cgi-bin/todayimage.cgi"-->"></td>
			    <td style="background-image : url(/~ganat/images/borders/newpic_border_r.gif);vertical-align : top;">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			  </tr>
			  <tr>
			    <td><img alt="*" src="/~ganat/images/borders/pic_border_lb.jpg"></td>
			    <td style="background-image : url(/~ganat/images/borders/newpic_border_b.gif);text-align:left;">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			    <td><img alt="*" src="/~ganat/images/borders/newpic_border_rb.gif"></td>
			  </tr>
		      </table>
		  </td>
		</tr>
		<tr>
		  <td class="menu" valign="top">
		    <!-- MENU -->
		    <div class="menutitle"><img alt="menu" src="/~ganat/images/menutitle.jpg"></div>
		    <div class="menu"><table width="140">
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/index.html">Top Page</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/ocaml/ocaml.html">Ocaml</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/java/java.html">Java</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/diary.html">Theses</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/presentation.html">Presentation</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/survey/index.html">Survey</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/unix/unix.html">Unix Tips</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/memo/index.html">Memo</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/link.html">LINK</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/cgi-bin/nagabbs/nagabbs.cgi">BBS</a></td></tr>
</table>
</div>
		  </td>
		</tr>
	    </table>
	  </td>
	  <td>
      <table summary="table" border=0 cellspacing=0 cellpadding=0>
		<tr>
		  <td valign="top" style="text-align : center;">
		    <!-- 題名 -->
		    <!-- <div class="title">GANAT PAGE</div> -->
		    <img alt="Akihito Nagata's Page" src="/~ganat/images/title.gif">
		  </td>
		</tr>
		<tr>
		  <td>
		    <!-- メイン -->
		    <table summary="table" border=0 cellspacing=0 cellpadding=0>
			<tr>
			  <td width="10"><img alt="|" src="/~ganat/images/borders/vline_t.jpg"></td>
			  <td></td>
			  <td></td>
			</tr>
			<tr>
			  <td style="background-image:url(/~ganat/images/borders/vline.jpg);"><img alt="|" src="/~ganat/images/borders/vline.jpg"></td>
			  <td><div class="main">
    <div style=" padding-left : 30px; padding-right : 30px; padding:10px;background-color : white;">
      
      <table>
	  <tr>
	    <td><img alt="*" src="images/robo1.gif"></td>
	    <td><h1 class="titlecounter">Akihito Nagataの<br>ページへようこそ<br>You are <!--#exec cgi="cgi-bin/count.cgi"-->th Comer!</h1></td>
	    <td><img alt="*" src="images/robo2.gif"></td>
	  </tr>
      </table>
      東京大学 理学部情報科学科 米澤研究室<br>
      永田 章人が管理するページです。
      
      <address>
	なんでもいいのでメール下さい。
	<a href="mailto:ganat@yl.is.s.u-tokyo.ac.jp">Akihito NAGATA</a>
      </address>
      <hr>
      <div class="history">
	<ul>
	  <li><div class="date">(2003.6.30)</div>
	    <p>
	      「これは眠い日だ。」
	    </p>
	    <p>
	      前略  小林先生。<br>
	      月曜はいつも御指導頂ける日なのですが、
	      今週は論文が進んでなくて申し訳ありません。<br>
	      風邪を引いたり、ワドラーの本読んだり、
	      全体ミーティングの資料作成したりしていたため、論文が進んでなくて申し訳ありません。<br>
	      そして今もプログラミングコンテストなんぞに手を出してしまっております。<br>
	      何卒御慈悲を。
	    </p>
	    <p>
	      今日は、相変わらず
	      「ちょこちょこっとプログラムいじって、遺伝で回して淘汰されるのを待つ。」 
	      の繰り返し。<br>
	      「ちょこちょこっといじる」部分も遺伝にすりゃよかったのかも。<br>
	      段々よくなっては来たものの。手入力に到底追い付かないのが寂しい。
	      なんで手入力でどうにかなるような問題出すんだ、プログラミングコンテストじゃないじゃないか。
	      ってな具合に会話もついつい問題に対する文句ばっかりに。
	    </p>
	    <p>
	      それにしても眠い。数えてみると４０時間くらい連続稼働してる。<br>
	      ずっとディスプレイを見ているからか、頬を熱いものが流れていて止まらない。<br>
	      ちょっとだけ会った部活の後輩の一言目が「疲れてますね。」だった。<br>
	      
	      あまりにも眠いので世代数を大きくして睡眠。密度の高い睡眠を行なった。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.29)</div>
	    <p>
	      今日も朝起きて学校に来てみる。お、一番乗りか。とりあえず一人でやってても寂しいので誰か来るまで、論文のイントロを書くことにしてみた。<br>
	      ２、３時間 論文に費やすことができた。<br>
	      さらに１時間ゲーセンに費やすことができた。<br>
	      大岩さんやっときた。
	    </p>
	    <p>
	      話し合った結果、
	    <ol>
	      <li>重み付きダイクストラでスタートからゴールまでの道を決定。</li>
	      <li>ダイクストラで得られる点列を制御点としてスプライン曲線を引く</li>
	      <li>壁にぶつからないように、一生懸命制御点の数を減らす。</li>
	      <li>ここまでくれば、「スプライン曲線の上を大岩さんが一生懸命走って、ゴールまでにかかったステップ数を返す」という関数を評価関数とし、
		スプライン曲線の制御点を遺伝子として、遺伝アルゴリズムで頑張る。
	      </li>
	    </ol>
	    というアルゴリズムに決定。実装した。
	  </p>
	    <p>
	      でもなかなかうまくいかない。
	      突然変異の変異の仕方とか、交叉の割合とか、大岩さんの走り方とかいろいろ試してみる。<br>
	      このあたりで本日終了だっけかな？<br>
	      いったいどこからどこが本日なのかわからない一日だった。
	    </p>
	    <p>
	      そう言えば今日は４年生と夕飯を食べにいきました。まめ氏とよこ氏。<br>
	      誘いに乗ってくれてありがとう。<br>
	      大岩さんと４人で食べにいったんだけど、夕飯参加者のうち７５％がＴＳＧであることが判明した。ものすごくだまされた感。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.28)</div>
	    <p>
	      誘われるがままにICFPプログラミングコンテストなるものに参加。<br>
	      朝９時に問題発表らしいので、朝の１０時に学校に来て問題を読んでみた。
	      レースのシュミレータ。というか人工知能の分野に入るのだろうか。
	      よくわかんないけどこりゃおもしろい。という問題。
	    <p>
	      それはそれとしてoiwaさんが来ない。なにやってんのかな。１０時くらいに来るっていうから僕も１０時に来たのに。来た。社長出勤。お昼ですね。
	    </p>
	    <p>
	      雑談しながら基本的なツールを作る。<br>
	      ツールはすぐできたけど、戦略がよくわかんないので昼飯を食べながら相談しよう、
	      ついでにどうせ今ごろ相談してるだろう３、４年チームも誘ってみよう。と思って地下へ。<br>
	      行ってみたけど、誰も誘われてくれずに残念。<br>
	      多分主な原因は社長のお腹が空いたのが３時頃だったため、もう昼の時間じゃなかったから。
	    </p>
	    <p>
	      なんとなーく戦略が決まって適当に実装し始める。<br>
	      普段しない数値計算のプログラムで非常に新鮮。連続系アルゴリズムを思いだしますね。
	    </p>
	      午後８時頃、cocoaさんが来た。こういうのはなんというのだろうか。筆頭株主出勤か。<br>
	      皆様マイペース。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.27)</div>
	    <p>
	      「悲しい時」
	    </p>
	    <p>
	      かなり大きなバグが見つかった。<br>
	      最初の方のデータ構造変えなきゃいけないから、大量に書き直しだよ。
	      あーあ。ご苦労さまです。一気に疲れた。
	    </p>
	    <p>
	      と思ったら、根本的に間違ってることがわかった。<br>
	      論文読み直して、また勉強。これを最初に考えたTofteさんはすごいな。
	      バグが見つかる度に論文の注意点を読み直す毎日。<br>
	      でも、とりあえず完成した。あってるのだろうか。あやふや。
	    </p>
	    <p>
	      風邪は直った気がするけど、まだ喉が痛い。ので、静かにしてる。
	      静かだ自分。
	    </p>
	    <p>
	      今週末は本気で忙しくなりそうです。<br>
	      別に今週さぼってたわけでもないし、風邪引いても毎日学校に来てたのに。<br>
	      やらねばならんことが３つ重なった。
	      さて全てうまく行くのだろうか。部活に行くなんて夢のまた夢か↓。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.26)</div>
	    <p>
	      「僕の勘が正しければ、・・・だ！」というような主張はトートロジー。<br>
	      会話にこういったトートロジーを暗に混ぜることで、口が強い人になれるのではないかと思う。
	    </p>
	    <p>
	      昨日は、栄養をつけねば！と思ってカボチャのシチューを作った。<br>
	      作り過ぎないように気を付けてはいたが、出来上がりはなぜか大量。
	      食べ切れないと思ったけど、頑張って食べ切った。腹いっぱい。
	      おかげで栄養満点で、風邪が直ってきた感あり。よかったよかった。<br>
	      あと、ルゥをダマにならずに作ることができるようになりました。
	      よかったよかった。
	    </p>
	    <p>
	      ワドラーの Functional Programmingを武市先生が訳した本を読む。<br>
	      ふーん。すごく楽しい。<br>
	      やっぱり関数型ってのは素晴らしいな。
	      こういう数学的な関数型プログラミングと、手続き型でちゃちゃっと書くプログラミングは、
	      建築学と日曜大工ぐらいの差がある気がする。<br>
	      椅子を作るくらいなら日曜大工で十分だけど、日曜大工では高層ビルは建てられない！
	    </p>
	    <p>
	      バニラコカコーラをお裾わけしてもらう。<br>
	      基本的にコーラだけど、後味が・・・。
	      コーラと生クリームを混ぜたような・・。
	      自分で買おうとは思わない。
	    </p>
	    <p>
	      週末は忙しそうなので、今のうちに全体ミーティング発表の資料作り。
	    </p>
	    <p>
	      なーんか red-carpetを起動すると xemacsがフリーズする確率が上がる気がする。<br>
	      なぜこう不安定になってしまったのか。← unstableなパッケージを入れてるからか。あーあ。
	    </p>
	    <p>
	      ミュージックステーションに t.A.T.u が出るようだ。見たいかも。
	    </p>
	    <p>
	      そうだった、彼の名は "Duke"。<br>
	      <img src="/~ganat/images/todays/duke.jpg"><br>
	      ありがとういっちょう。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.25)</div>
	    <p>
	      「λという字は人と人が支え合って…」
	    </p>
	    <p>
	      頭痛が長引いてて 午前５時に目が醒める。
	      朝ご飯を作ろうと思ったら、ニンニクとキムチしかない。
	      ニンニクをホイル焼きにして、
	      ご飯を炊いて食べる。今日は人と話さないようにしなくては。
	    </p>
	    <p>
	      gnome-panel と nautilusがたまにセグメンテーションフォルトを起こす。
	      勘では CORBAあたりでヘマをしてる気がするんだけど、たまにしか起きないバグは原因追求が難しいので諦めた。
	    </p>
	    <p>
	      t.T.A.u の黒髪の方は ジュリア という名前らしい。ジュリア派。
	    </p>
	    <p>
	      Think Padの ACアダプタが壊れた。
	      風邪により喉が非常に痛い。今日はもう帰ろう。
	      家でぐたりとコーディングと発表の資料作りだな。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.24)</div>
	    <p>
	    「風邪が悪化。」
	    </p>
	    <p>
	      昨日どうやら風邪を引いてしまった模様なので、
	      寝る前に薬を飲もうかどうか迷っていたら、
	      勢い余って 百薬の長を 飲んでしまった。<br>
	      そしたら朝、熱と頭痛が。失敗。
	    </p>
	    <p>
	      Sunの人からJavaのマスコットキャラのストラップをもらった。
	      嬉しいです。誰かこいつの名前を教えて下さい。
	    </p>
	    <p>
	      ニュースステーションを見てて思ったこと。<br>
	      "決定力"って言葉がどうも気になる。<br>
	      あたかも普通の言葉のように使っているけど、そんな言葉本当にあるの？<br>
	      最近になるまで聞いたことなかった。gooの辞書にはのってない。
	      なんかサッカー関連の番組見てる時にしか耳にしないんですけど。<br>
	      意味を推測すると、"得点を取るべきところでちゃんと取れるような力"のよう。<br>
	      いったい何を決定するの？ カビラがいつも嬉しそうに「決定力不足」って言ってる。
	      確かに「シュートの正確さに欠ける」というよりも「決定力不足」って言った方が勢いはある気がする。<br>
	      変なの。
	      これってもしや噂の<a href="http://www.1101.com/otona/index.html">大人語</a>の一種か？
	      僕的にはアグリーしかねる。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.23)</div>
<!--	    <p>
	      「何を計算するか。どう計算するか。」
	    </p>
	    <p>
	      手続き型言語に染まってしまって、
	      どうも関数型言語でうまくプログラミングが出来ないって人が、
	      関数型プログラムを書けるようになる方法を考えた。
	    </p>
	    <p>
	      プログラムを書く時は、それがどんな規模であったとしても頭の中で設計をする。
	      そのときにプログラムがどのように動作するかを考えては駄目で、
	      プログラムが何を計算するかを考える。
	      今日はもう疲れたので例とかは後日。
	    </p> -->
	    <p>
	      夜中に２１４で論文書いてて、４階に上がろうとしたらこけて、階段に麦茶をぶちまけた。<br>
	      でも、ちゃんとふきましたよ。
	    </p>
	    <p>
	      「User-Agentのログをとってみた。」
	    </p>
	    <p>
	      とある人にUser-Agentのログをとってみると面白いと言われたのでとってみる。<br>
	      確かにおもしろかった。
	      どうせIEばっかりなんだろうと思ってた。
	      確かにIEは多いけど他にもいろいろ。
	      クローラーとかアンテナとかはちゃんとUser-Agentに書いてあるんですね。
	      知らなかったブラウザもいっぱい来るし。
	      User-Agentなんていくらでも偽装できるから正しいかどうかは別として、楽しかった。<br>
	      クローラー多い。
	    </p>
	    <p>
	      微妙に体調を崩した。<br>
	      やっぱり３０時間ぐらい頑張って、２日に一回大量に寝るという実行モデルは体を壊しやすい。<br>
	      わかっちゃいたけど。でも自然とこの体勢になってしまう。駄目だ。<br>
	      明日からは健康的な生活をするぞ。と思うけど明日は来ない。
	    </p>
	    <p>
	      一昨日、かぼちゃの煮つけを多少失敗した。
	      落しぶたしてほっとけばいいやって思ってたら、そのまま忘れて水分がみんなとんでってしまった。
	      濃い味だった。以後気をつける。<br>
	      材料が余ったので今日はこれから帰ってにくじゃが作る。
	    </p>
	    <p>
	      と思ったら誘われるがままに学食へ。まぁいいか。適当。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.22)</div>
	    <p>
	      「寝過ぎだ。」
	    </p>
	    <p>
	      今日はかなり寝た。昨日の夕方、日が落ちる前に帰って、準備してすぐ寝てしまって、
	      途中なんどか起きたり御飯食べたりしたけど合計２０時間くらい寝た気がする。
	      疲れてたのか。おかげで今や元気いっぱい。
	    </p>
	    <p>
	      というわけで今日はなんにもやってないです。
	      今から元気いっぱいに研究の作業をします。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.21)</div>
	    <p>
	      なんと今日は土曜日だったのか！朝メールして気付いた。曜日感覚が。
	    </p>
	    <p>
	      今日は４年生向けの情報理工のガイダンスがあったようで、
	      そのガイダンスに参加した情報系の陸上部のランチ会に誘われてついていく。
	      新規性に欠けるメンバー。<br>
	      しかも悲しい話題。元気出せカ○オ！ 明日がある。
	    </p>
	    <p>
	      カテゴリ論の勉強をした。<br>
	      対象と操作があったときに、良く考えると、その対象と操作の組自体を対象とすることができる。
	      その新しい対象対する操作を考えることができて、そこから導かれる定理やらがいろいろ。<br>
	      もう一回よく考えると、その対象と操作のペアも対象と考えることが出来る。<br>
	      という感じによくわからないうちにどんどん高階になっていく世界だった。<br>
	      さっきまで対象としてた抽象的な概念が具体例だったり。なんとなーくわかるという世界だった。<br>
	      そんなに高階にしちゃって、Fixed Pointはないの？と思った。
	    </p>
	    <p>
	      多値関数は魅力的だ。
	      Ocamlだと純粋に多値関数はできないからタプルでごまかすけど。<br>
	      多値関数を使うと複数の再帰を一つにまとめたり、関数の定義を一つにまとめたり出来る。
	      多値関数と、 Lazy eval とか Memoizationを組み合わせると、最適化ができる気がするんだけど。
	      よく考えるとad hocなのしか思いつかない。なんかないかな。
	    </p>
	    <p>
	      ４１５室に蚊がいる。金鳥リキッド買ってください。
	    </p>
	    <p>
	      Ximian Red-Carpet に、 現在のインストールされているパッケージを検証し、
	      正しくないところを見つけて自動的にパッケージを削除・追加してくれる機能があった。
	      すごい。おかげで自分のマシンは健康な体になりました。
	    </p>
	  </li> 
	  <li><div class="date">(2003.6.20)</div>
	    <p>
	      「Ximian!!!」
	    </p>
	    <p>
	      Ximian Evolution に続いて、Ximian Desktop と Red Carpetをインストールしてみた。<br>
	      Ximian Desktopは基本的には gnome だけどなんかレスポンスが速いような気がします。これは嬉しい。 Nautilus もなんだか快適。あと、メニューの内容が違ってたり、Windowsキーを押すとメニューがでてきたり。ぱっと見の違いはそんなとこか。これから細かく探します。<br>
	      Red Carpetはパッケージマネージャ。
	      Redhat からも Ximianからも更新情報とパッケージがとってこれて、しかもパッケージ管理の履歴が見られる優れ物。
	      インストールの履歴ってたしかに欲しかった機能だ。
	      rpmにはこの機能はない気がするから Red Carpetが自前で履歴取ってるのかな。<br>
	      Ximian いいなぁ。どうやら gnome の作者が作った会社のようだ。
	      すごいな。もっと早いうちに Ximian にしとけばよかった。
	    </p>
	    <p>
	      今日はちょっとコーディングが進んだ。
	      でも今日は遅く起きたので、むしろ今からが本番。
	      がんばらねば。<br>
	      Pretty-Print の使い方がわかった。
	      まだ全てではないけど、あとは試行錯誤すれば大丈夫そう。
	      しかし、なぜPretty-Pringって名前なのか。そんなにPrettyなのか。
	    </p>
	    <p>
	      今日はDDOSの踏台を見た。
	      昨日は転送メールがぐるぐるまわってしまう事件もあった。
	      どっちも人間が気付いて対処してたけど、こういうのを自動的に見つけるのは難しいんだろうと思う。
	      しかも検出できたところで、一つのホストだけで止めるのも難しいし。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.19)</div>
	    <p>
	      「 <a href="http://gourmet.yahoo.co.jp/gourmet/restaurant/Kanto/Tokyo/guide/0401/WV-TOKYO-8BBVM001.html">たいこ茶屋</a> 」
	    </p>
	    <p>
	      にいってきました。<br>
	      学校から歩いていこうと思うとちょっと遠いけど、自転車ならそれほど遠くない距離。<br>
	      ランチの食べ放題してきました。
	      まぐろとかつおの刺身が食べ放題でした。
	      あと、米とか味噌汁とかサラダなんかも。<br>
	      刺身おいしかったです。ねぎとろみたいのもあった。<br>
	      魚ばっかり大量に食べた。頭がよくなったかも。<br>
	      今までに行った食べ放題の店と比べてみると、かなり上位にランクインしそうな感じ。
	      ８００円だし。<br>
	      久しぶりに食べ過ぎて苦しくなった。
	    </p>
	    <p>
	      ４１５室のエアコンを自動にしておくと、たまに暖房になる。設定温度を２３度にしても暖房になる時がある。<br>
	      暑いよ。もう自動にしてあげない。
	    </p>
	    <p>
	      推論器のコードを大幅変更。ちょっと型の定義を変更したらどうしてもいろいろ伝搬していく。<br>
	      最初からSchemeの関数型をcurry化するかどうか迷ってて、結局 curry化したんだけど、いらないリージョンが増えて大変なのと引数を任意個とれる関数が表現できないなと思ってcurry化をやめた。curry化した方が奇麗と思ってやったんだけど、対象言語が schemeだから合わなかったかな。
	    </p>
	    <p>
	      Evolution 1.4 を使ってますが、全然問題なし。文字化けしてたのも直せたし、なにより1.2に比べて起動が速い。
	      多少軽い気もする。<br>
	      ただメールを新規作成するときに新しい窓を開くのがやたら遅い。なんでだろう。
	      gtkhtml3 のせいかな。
	      XIMとうまく連携できてないっぽいし。やっぱ gtkhtml3 が悪いっぽい。<br>
	      gtkhtml1 の日本語表示のバグが全然直んないし。パッチもうまくあたらず自分で訂正した。
	    </p>
	    <p>
	      Metacity の新しいテーマが出てた。嬉しい。さっそく乗り換え。
	      Metacityのテーマは結構みやすくて良い物が多い。と思う。
	      それに比べて gtk2のテーマはどれもイマイチだ。なんでかなぁ。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.18)</div>
	    <p>
	      某所で触れられていた<a href="http://www.charamil.com/">キャラミル研究所</a>というところで、ツキアイゲノム(いわゆる性格診断)というのをやってみた。<br>
	      質問の中に「わがままである。」ってのがあったので、「 YES 」を選んだら、結果に「少しわがまま」って書いてあった。うーん当たってる。<br>
	      僕のオモテゲノムは「<a href="/~ganat/images/charamil.png">クール</a>」のようだ。初めて言われた。そんなこと。
	    </p>
	    <p>
	      昼飯に久しぶりにメトロに行った。
	      見た感じフランス人の人が、ライスと味噌汁に粉チーズをかけていた。<br>
	      おいしいの？それ。
	    </p>
	    <p>
	      わかってきた。<br>
	      Ocamlで型推論器を作ってる時に、面倒な時は refとか mutableで副作用をもちいてプログラミングするけど、
	      そういうのは lazy evalならば副作用を使う必要がない場合が多い。<br>
	      副作用がなくとも lazyならほとんどのプログラムは副作用なしに書けるというわけでしょうかワドラーさん。
	      Ocamlでも lazy evalあるけど、使うの面倒だし。
	    </p>
	    <p>
	      またここのHPのカウンターが壊れた。こないだ直したばっかりなのに。
	      おかしいなと思ってソースを見てみたら、ロックをとるファイルの名前が違ってた。
	      そりゃ駄目だ。直した。
	    </p>
	    <p>
	      昨日隠しておいた失敗事がやっぱりばれた。すみません。それ壊したの僕です。<br>
	      そんな力をいれて使うべき道具が、そんなにやわいとは思わずに力いっぱいにぎりました。<br>
	      でも、まだ使えそうだし。どうにか。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.17)</div>
	    <p>
	      「今日は気合いをいれてコーディング」
	    </p>
	    <p>
	      コーディングはだらだらやるより目標を決めて一気にやると一気に進む。
	      夜中にネットワークのない２１４に籠ってコーディング。
	      推論器がなんとなくできた。<br>
	      本日は根の深そうなバグに到達して終了。
	      これからコードをみやすくなるように書き換えつつデバッグ。
	      やっとリファクタリングの本を読む時がきた。
	    </p>
	    <p>
	      Micro$oftさんから米澤先生へ、誕生日のケーキが届く。<br>
	      <img src="/~ganat/images/todays/ycake.jpg"><br>
	      優しいなMicro$oft。４１５の学生に比べて<br>
	      そのあと遅れを取り戻すかのようにお祝いしました。
	      先生おめでとうございます。<br>
	      でもケーキは学生が食べてしまう親不孝ぶり。すみません。おいしかったです。<br>
	      来年こそは。
	    </p>
	    <p>
	      今日は昼前に大失敗をしてしまったが、
	      ４１５の学生の多くの人には、まだばれていないので明かしません。
	      この時間差を利用して言い訳を考えておきます。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.16)</div>
	    <p>
	      アブストラクトがやっと完成。
	    </p>
	    <p>
	      したので提出します。よかったよかった。次は論文の本編を完成させねば。
	      あと、推論器もやんないと。忙しい。忙しいだけで特に書くこともなし。
	    </p>
	    <p>
	      再来週の発表が突然あたってしまった。でもこの頃ずっと発表してなかったからいい機会かも。
	      急に忙しくなったな。研究の進捗でもいいけど、それはきっと中間発表前にはやることになるので、
	      できれば別のことをしたい。
	    </p>
	    <p>
	      使ってるノートがスクリーンセイバーから帰ってこなくなった。
	      なんか最近急に調子が悪くなり始めたような。
	      本当に重要な時に駄目になるのだけは勘弁してほしい。
	    </p>
	    <p>
	      OIOIで靴を買い損なったので靴が欲しい。
	      ABCマートに行ってみたけどなんかイマイチ。
	      でも普通にOIOIとか行くと高いし。
	      どっかいい店はないものか。<br>
	      あと簡易でいいからアイロンも欲しい。これはハンズで売ってるのか。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.15)</div>
	    <p>
	      「小学校の時の友達と会う。」
	    </p>
	    <p>
	      小学校３年からの友達が東京で就職したようなので、一緒に飲む。<br>
	      もう１４年のつき合いか。
	      ちょうど当時の担任の先生が新任の先生で２４歳だった。もうそんな年か、と思ってしまう。やだやだ。
	      小学校からのつき合いは幼馴染み？どっちかというと腐れ縁な気が。もはや気を使わなくていいから楽でいい。
	      相変わらずあの勢いに勝てないけど。<br>
	      また飲みましょう。
	    </p>
	    <p>
	      学校に来てみたら、HPのカウンタが壊れてた。<br>
	      ソフトウェアは使い続けるとガタが来る。
	      定期的なメンテナンスが必要。
	      Perlで書かれた手抜き工事プログラムは特に。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.14)</div>
	    <p>
	      「初キムチチャーハン。」
	    </p>
	    <p>
	      今日は部活に行こうと思ったけど、あまりにも眠いので寝てしまった。
	      でもかわりに最近、家で不足気味だったティッシュとか風呂の洗剤とかトイレの洗剤とかまとめて買う。
	      充実の我が家。
	    </p>
	    <p>
	      今までおいしいチャーハンを作るために、日々鍛錬をしてきたが、
	      今日は趣向を凝らしてキムチチャーハンを作る。
	      キムチだけだと寂しいので安かった鶏のムネ肉を入れることにした。
	    </p>
	    <p>
	      先に卵を軽くいためておく。強火にして油でキムチをいためて、
	      適当にミンチにした胸肉をいれて、熱いご飯を投入して米にうまい油をすわせる。
	      卵を加えて、酒と胡麻油をひょいひょいっといれて出来上がり。
	    </p>
	    <p>
	      <img src="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/images/todays/charhan.jpg"><br>
	      ちゃんと米がぽろぽろとほぐれた、かなりうまいキムチチャーハン。
	      われながら金を払ってもいいと思う出来。
	      皆様食べにおいでませ。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.13)</div>
	    <p>
	      アクセスログが変だった原因は、ロックの取り方が間違っていたと判明。
	      直しました。
	    </p>
	    <p>
	      <a href="http://www5b.biglobe.ne.jp/~a_daichi/google/">こんなもの</a>を発見した。
	      おもしろい。ナイスアイデアですね。著作権とか大丈夫なのかな。
	      でも、googleを勝手に自分のサイトにのっけてる人はいっぱいいるし。
	      googleが許してるのかも。
	      なんか他にも<a href="http://sapporo.cool.ne.jp/yossy_google/misc_google.html">いろいろ</a>あるみたい。へぇ〜。
	    </p>
	    <p>
	      <a href="http://www.ximian.com/products/evolution/">Evolution</a>のバージョンを1.4に上げました。<br>
	      gtkhtml3がいい感じ。表示が速くて True Type Fontがきれいになった気がする。
	      メール一覧部分の文字の大きさが変えられないとか、
	      ショートカットバーのみ日本語が文字化けしてるとか多少不満は残るけど、
	      1.2に比べて使いやすくなった気がします。
	      Ximianはデザインもいい感じだし。頑張ってください。<br>
	      Ximian Desktop も興味深いけど、rpm以外のパッケージで入れるのがちょっと抵抗あり。
	      ただでさえ不安定なrpmがさらに脅かされそうで。<br>
	      はやく gnome 2.4がでないかな。
	    </p>
	    <p>
	      ちょっとだけ、prologの勉強をした。IOが意味不明。
	      論理型言語でIOを書こうとすること自体が意味不明なのかもしれないけど。<br>
	    </p>
	    <p>
	      夜。エアコンつけると寒い。切って窓を開けると暑い。どうしたらいいんだ。
	      蒸すし、やっぱりエアコンか。<br>
	      エアコンを25°C に 設定すると寒い。26°C に設定すると暑い。どうしたらいいんだ。<br>
	      エアコンの冷房と暖房とドライはどう違うの？ 冷房で40°C にしても暖房にはならないのか。
	      冷房してるとどっかで水蒸気が結露すると思うんだけど、それがドライではないのですか？
	      じゃあ、自動ってのはなんなんですか？ どういう基準で冷房暖房ドライを切替えるのですか？
	      これが最近効かなくなったファジーコンピュータというやつか。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.12)</div>
	    <p>
	      「t.A.T.u は 黒い髪の方が好きだ！！！」
	    </p>
	    <p>
	      アクセスログがちゃんと働いてない。<br>
	      うちの↑のカウンターは一日に何種類のIPアドレスが見に来てるか、
	      でカウントしてるんだけど、なんか微妙にうまく動いてなさそうな
	      ことが判明。一日に80種類くらいきてるっぽいんだけど、
	      50くらいしかカウントされてないみたい。<br>
	      なんでかなー。全然原因がわからず。この50/80っていう曖昧さが
	      原因をわかりづらくしてますね。暇を見つけてデバッグせねば。
	      プログラムが Perl で書いてあるってのがデバッグする気を無くさせる。
	      Pythonとかで書き直そうかな。
	    </p>
	    <p>
	      今日はちゃんと研究をする。型推論器のデバッグ。まずデバッグのための表示関数を充実させる。
	      それで実際に型推論してみてデバッグですが、
	      型がSoft TypeとRecursive TypeとRegion が組合わさったものが出てくるので、
	      読むのが大変だった。
	      ほんの数行のプログラムが推論して型付きで表示すると10倍くらいにふくれる。<br>
	      そういう状態で一生懸命デバッグしたので、
	      まだ完全にデバッグができたのかどうかは不安ですが、
	      とりあえず現段階まででは望み通りの出力をしてくれるようになった。
	      明日からは次の段階に進めます。
	    </p>
	    <p>
	      相変わらずアブストラクトに苦しみつつ、
	      Region Inferenceの生みの親である<a href="http://www.it-c.dk/people/tofte/">Mads Tofteさん</a>のページを眺めて見た。
	      初めて顔を見ました。思い描いてたイメージと違う。
	      なんかもっとごつくて恐い人をイメージしてた。
	      でも、なーんかどっかで見たことあるような。気のせいか。
	      でも、なーんか。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.11)</div>
	    <p>
	      「式」と「計算」とは何か？
	    </p>
	    <p>
	      「計算」を抽象化すれば「式」になる。
	      「式」は値を対象としていて、それは「計算」順序とか「計算方法」には依存しない。<br>
	      例えば <span class="string">" 20 * 3.14 "</span> とプログラム中に記述してあったら、
	      コンパイル後には <span class="string">" 62.8 "</span> という定数に変わっているとか、 
	      <pre>
int fib(int n){ 
   if(n&gt;=2){ 
        return fib(n-1) + fib(n+2);
   }else{ return 1;}
}
</pre>はプログラム実行時に一度 <span class="string">"fib(20)"</span>が
	      「計算」されたら 20以下のフィボナッチ数は計算せずにテーブルのlookupを行なうとか。<br>
	    </p>
	    <p>
	      「式」と「計算」の違いは、もうちょっと現実的にいうと"最適化"とか"実装依存"という言葉の中に隠れているものです。<br>
	      本来(多分)、プログラマは「式」を書き、コンパイラが「計算」方法を決定するのが理想。<br>
	      アセンブラの「式」は「計算」とほぼ同義。<br>
	      高級言語ほど「式」と「計算」が別物になる。<br>
	    </p>
	    <p>
	      また Haskell の話になってしまいますが、
	      Haskellは プログラムにおける「式」と「計算」をより明確に区別して、
	      プログラマは「式」のみを記述できるように設計してある。
	      <br>
	      記述を「式」に限定することによって、「式」の表現力を高めることができるから、
	      Haskellで 自然数の集合(リスト) は
<pre>
let nat = 1:(map (\x -&gt; x +1) nat)
</pre>
	    という感じに定義できる。<br>
	    数学では簡単に自然数の集合 N とかいうけど、
	    多くのプログラミング言語ではそれを書くのは難しい。<br>
	    なぜかというとvon Neumann型のコンピュータで、
	    無限の要素を持つ集合をデータとして具体的に定義できないから。<br>
	    でも Haskellは書ける。それがどうやって実現されているかは全部コンパイラ任せ。
	    プログラマは気にする必要がない。
	  </p>
	    <p>
	      プログラマは「計算」を気にせずに、思った通りに「式」を書いてしまえるから、
	      ソースコードも非常に見やすい。<br>
	      Haskellはそういうことを目指した言語。
	    </p>
	    <p>
	      だけど、一般に理系というかプログラマというか古い技術者は、
	      それがどう動いているか気になって仕方がないので、
	      Haskellのコンパイラに聞いてみると「一部の評価を自動的に遅延評価で行なっているから」
	      という回答が帰ってくる。<br>
	      よって一般のプログラマは" Haskell = Lazy な言語 " という本質からはずれた理解をしてしまって、
	      "色物言語、遅い言語" という評価を与えてしまう。
	    </p>
	    <p>
	      なんてかわいそうな Haskell。 アセンブラ時代は終ったにしても、
	      C言語を使ってる人がまだ多い時代に、ちょっと先走り過ぎたか。 
	      まずは " Haskell = Lazy な言語 "
	      というイメージを壊すところから始めなくては駄目ですね。
	      マイナス地点からのスタートだ。 
	      「Haskell いい！」って言ってると宗教染みてるとまで言われるし。言語系の研究室なのに。
	    </p>
	    <p>
	      「Think pad から異音が！」
	    </p>
	    <p>
	      個人的に使わせてもらっている米澤研のノートパソコンから異音が。<br>
	      多分ハードディスクだと思うんだけど「ジー」っていいます。
	      ほっとくと直るんだけど、心配だ。
	      とりあえずノートの中のCVSを全部バックアップ。
	      どうしたもんか。
	    </p>
	    <p>
	      昨日に引続きデバッグ。寝書いたとしか思えないコードがいくつか。
	      そりゃバグる。ちょっとずつ進んできた。今週と来週で頑張ります。
	    </p>
	    <p>
	      最近 googleさんが頻繁にいらっしゃる。
	      今日１日だけで５種類のIPから来た。
	      頻繁に更新するサイトは優先度をあげて訪問するアルゴリズムらしいから、
	      日記書くようになってたくさん来てくれるようになったのかも。<br>
	      IPみてると２０並列くらいでクローリングしてるように見える。
	      大変ですな。
	    </p>
	    <p>
	      214でひとりでコーディングするのが結構好きだったりしたんですが、
	      最近はノートパソコンが配布された３、４年生が使っているため、
	      214に入りづらいことが多い。仕方ないから化学236でやるか。
	    </p>
	  </li>
	  
	  <li><div class="date">(2003.6.10)</div>
	    <p>
	      「靴が。」
	    </p>
	    <p>
	      先日のOIOIのバーゲンで買った靴のベルトが切れた。
	      ので、朝っぱらから上野のOIOIに行く。
	      10時に行ったらまだ開店してなかったので、アトレの本屋で1時間つぶす。
	      ようやくOIOIに入って文句を言ったら、交換か返品ということになった。
	      でも調べてもらったら代替品がないとのことなので、返品に。
	      靴がなくなってしまった。100円サンダルでの生活。
	      スニーカーなんて似合わない物を買ったのがいかんかったのか。
	      仕方ないからいつも通り陸上用の靴を買うか。
	    </p>
	    <p>
	      かなり久しぶり米研ランチ会！「学食で一番おいしいメニューは
	      赤門ラーメンだと大山さんが言うので、それを検証するの巻」。<br>
	      赤門ラーメンはすでに経験済みなのであんまり気乗りがしない。<br>
	      研究室まわりの4年生を誘ってみるけど敬遠されてしまった。<br>
	      中央食堂で大勢で赤門ラーメンを食す米澤研。
	      (と裏切って別の物を食べるずるい数名。)<br>
	      しかもその状況を部活の後輩３人に目撃された。<br>
	      そして胃もたれしながら帰る米澤研。<br>
	      疲れる午前だった。
	    </p>
	    <p>
	      そのせいか４年生ミーティングも全体ミーティングもなんか体がぐったりしてた。
	      テンション低くてごめんなさい。まぁ別にいいか。
	    </p>
	    <p>
	      夜。なんだかみんなで prologの勉強をする。相変わらず特徴的な言語だ。
	      factとruleを並べればいいんでしょって思ってたけど、Sytax error。原因わからず。<br>
	      頑張ってそのうち prologでなんか作ります。
	    </p>
	    <p>
	      最近また家の前で工事やってる。朝９時くらいからガリガリと。
	      うるさくて寝れやしない。２、３日で終わりそうだし、
	      とりあえず今日は学校に泊まるか。やることあるし。
	      ぷっすまが見れないのが残念だけど。
	    </p>
	    <p>
	      型推論器のデバッグ。バグがいっぱいだ。 
	      Soft Typeと Recursive Typeが組合わさるとなにがなんだかもう。
	    </p>
	    <p>
	      家の近くに２４時間やってるおいしい らーめん屋が欲しい。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.9)</div>
	    <p>
	      「寒い」
	    </p>
	    <p>
	      もう六月というのに寒い。六月はこんなに寒いんだっけ？ 半袖でいると寒い。
	      確か六月は夏なのに。冷夏ですか？いいけど、今は寒い。
	    </p>
	    <p>
	      住井さんがアメリカに行ってしまったので、ACM会報が代わりにもらえる。
	      自分で探さなくても新しい論文がいっぱい手に入る。楽だ。
	      論文をちゃんと読むとかなり時間かかるけど、適当に読む分なら全然時間かからないし。
	      ありがとう住井さん。<br>
	      <a href="http://diary.lycos.co.jp/view.asp?QnDiaryid=50274">住井さん日記</a>に最近アップされてた野球の写真の一番下の写真に写ってる人が
	      使っているナップサック、僕が使ってるのと同じものです。ぶれてますけど。<br>
	      っていう話を415室でしていたら、米澤研のマシンに住井さんが入って来ているのを発見。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.8)</div>
	    <p>
	      「たしか名前はプチなんとかだった気がする。」
	    </p>
	    <p>
	      秋葉原を散歩してたら、アイドルがいた。６〜８人くらいの女の子からなるグループで、
	      全員が違う制服を来て活動する模様だ。
	      女子校生アイドルが制服を来て秋葉原に来るのはなんか姑息な気がするけど、まぁいいや。
	      カメラ小僧というかカメラおっさんがいっぱい群がっていた。<br>
	      一応、芸能人にあったことになるのかな。<br>
	      秋葉原で芸能人を目撃したのは、
	    <ul>
	      <li>目覚しテレビの軽部さん</li>
	      <li>石原都知事</li>
	      <li>今回の女子校生アイドル</li>
	    </ul>
	    と３回目です。<br>
	    どれも芸能人なんだかそうじゃないんだかわかんない感じだ。
	  </p>
	    <p>
	      てんやで天丼を食らう。てんやはおいしいですね。自分でも天麸羅をあげてみたいけど、
	      あの大量の油をどうしたらよいかわからないからできない。中華鍋でエビチリが限度。<br>
	      天麸羅をさっくりおいしくあげるには、まず衣の小麦粉と卵と水を冷やしておいて、
	      あんまり混ぜ過ぎないように混ぜ合わせる。というのを知っている。美味しんぼで得た知識。
	      この知識が使えるのはいつの日か。
	    </p>
	    <p>
	      今日は一日全然集中できなくて、全然論文が進まなかった。駄目な日だ。あぁ。
	      文章書くよりプログラム書いてる方がいいなぁ。
	    </p>
	  </li>

	  <li><div class="date">(2003.6.7)</div>
	    <p>
	      「やきにくだ！」
	    </p>
	    <p>
	      遅く起きた夕。なんだかかなりよく寝た。
	      起きても頭が全然しゃきっとしないくらいぐったぁぁぁと。
	    </p>
	    <p>
	      その後、優雅にサンシャインを散歩した後、陸上部の同期の飲み会へGO。<br>
	      でも飲み会ではなくまったくの焼肉会だった。さすが。
	      焼肉は久しぶりな気がする。
	      2500円食べ放題でこんなにうまい肉が食えますか！？
	      いやーはじめちゃん、よい店を見つけましたな。
	    </p>
	    <p>
	      2次会はちゃんとした飲み。ビールビール。
	      皆大人になって、明日のことを考える人間になったので適当にお開きとなった。
	      ではまた秋頃に会うとしましょう。
	    </p>
	    <p>
	      帰宅後、酒の影響ですぐに寝てしまうが、午前４時頃に目が醒める。<br>
	      テレビをつけたら、
	      「放送禁止２」というのがやっていた。
	      父母と子供６人くらい？の 父による虐待のある大家族を写す
	      ドキュメンタリー番組だった。
	      娘を殴る父が衝撃的だったので目が離せなくなって見てしまう。
	      毎日、父の虐待により子供に傷が増えて行くのを母も他の家族も耐えるだけ。
	      家族が不幸になるのは悪霊のせいだといい出して、霊媒士に頼んでお払いをしてもらう。
	      でも実は、裏では母と娘が毎日の父の食事に少量のヒ素を混ぜ続けることによって、
	      悪霊の仕業に見せかけて父を殺してしまう。というストーリーだった。
	    </p>
	    <p>
	      後半までくればフィクションだなというのがわかるのですが、
	      最初の２０分くらいを見逃してしまったのと、最初は楽しそうな大家族だったし、
	      ドキュメンタリー風だったから、
	      よくある大家族番組かなと思って見ていたので、
	      最初は虐待もノンフィクションだと思いこんで真剣に見てました。
	      題名も「放送禁止」だったから、もう解決した事件かなとか考えて。
	    </p>
	    <p>
	      でも、今となって、よく考えると「長女：林檎、次女：蜜柑、三女：檸檬」
	      という不自然な設定だった時点で気付けたなと。  
	      でも酔ってた僕は「変な名前の大家族だなー」とそのまま流してしまった。
	      そのおかげで真剣にかなりリアルに番組が見れてよかったけど。
	      フジテレビにやられた感だ。おもしろかったです。
	    </p>
	    <p>
	      そのあと適当にザッピングしてたら、荒木飛呂彦が出てた。
	      はじめて動いている荒木を見ました。一気に幸せ気分になった。
	    </p>
	    <p>
	      今日一日遊んだので明日は論文書きます。<br>
	      モジラ1.4RC1に変えたけど、まだ調子悪い？  すでに２、３のバグに出会った。
	    <p>
	  </li>
	  <li><div class="date">(2003.6.6)</div>
	    <p>
	      相変わらずちょっとずつ monad の勉強をする。
	      カテゴリ論(圏論)がベースになってるそうなので、
	      米澤研に前からあるプログラミング意味論という
	      何度も挫折した本を読んでみる。
	      あと、ネットで見つけたワドラーの論文も読んでみる。
	      なんとなく見えてきた感じはある。やっぱり代数学は大事ですね。
	      よくわかんかったけど、とりあえずでも駒場で勉強しといてよかった。
	    </p>
	    <p>
	      クロスサイトスクリプティングについてちょっと勉強。
	      今まで掲示板を作る時には、ちゃんとそういうような
	      悪い作用が起きないようにしてきたつもりだったけど、
	      認識が甘かったということを実感した。
	      javascriptって恐ろしいですね。javascriptに限らず 
	      suexecとかと組み合わせると穴なんていくらでもありそうだし。
	      検証してくれるツールがあるとよいと思うけど、
	      どうやって検証したらよいやら。apache2.0のsuexecは
	      禁止事項がいっぱいあるけど、もっと言語のレベルで
	      どうにかならんもんか。
	    </p>
	    <p>
	      Curry Howard isomorphismで Recursive typeって何に当たるの？
	      と思って調べてみようとしたけどわからず。
	      とりあえず資料を印刷したのでこれからゆっくり調べる。
	      そもそも型の等価性ってのは何に対応してるのだろうか。
	      Curry Howardはすごいなぁ。
	    </p>
	    <p>
	      昨日、 帰り際にやたら疲れた顔をした3年生を発見。
	      うちの学科は確かに3年が一番忙しい。
	      がんばれー。ML演習でわかんないこととかあったら、
	      是非掲示板を活用してやってくださいまし。
	    </p>
	  </li>
	  <!-- http://lc.linux.or.jp/lc2001/papers/haskell-paper.pdf -->
	  <li><div class="date">(2003.6.5)</div>
	    <p>
	      また Haskell の話題。を１つ。
	    </p>
	    <p>
	      <a href="http://www.haskell.org/~petersen/haskell/lc2001.html">これ</a>
	      と
	      <a href="http://lc.linux.or.jp/lc2001/papers/haskell-paper.pdf">これ</a>。
	      ２つとも同じ内容。
	    </p>
	    <p>
	      なんだか emacsが古くさいので emacsを Haskellで書き直して、
	      さらにいろいろと機能拡張しようと Redhatの人が言っている。
	      本気？ でも2001年の資料で、今までそんな噂聞いたことなかったから、
	      つぶれちゃったかな？ 当然と言えば当然なんだろうか。
	    </p>
	    <p>
	      今日も朝からバイトやってきました。昼飯もおごってもらって良い日。
	      担当してたプログラムもだいぶ完成に近付く。
	      とりあえず今のところバグは出てない。
	      一通り試してみたつもりだから、あとはパフォーマンスの向上か。
	    </p>
	    <p>
	      でも、カーニハンとパイクの
	      <a href="http://www.ascii.co.jp/books/detail/4-7561/4-7561-3649-4.html">
		プログラミング作法
	      </a>
	      では、「最適化をするには？ ： 最適化はするな」って書いてある。
	      最近はプログラマは可読性とか設計の奇麗さを重視して、
	      最適化はコンパイラに任せるってのが主流みたいです。
	      そうもいってられない現場もあるとは思うけど、
	      多くの現場は最適化が必要ない場合が多い。
	    </p>
	    <p>
	      そうなるとやっぱり、堅固なプログラムが書けて、しかもコンパイラの最適化が効きやすい関数型言語の時代かな。と思ってしまう。 ひいき目かも。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.4)</div>
	    <p>
	      「 Scheme 掲示板はしんどい」
	    </p>
	    <p>
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/nagabbs/nagabbs.cgi">Perl</a>、
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/ocamlbbs/ocamlbbs.cgi">Ocaml</a>、
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/pythonbbs/bbs.cgi">Python</a>、
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/haskellbbs/bbs.cgi">Haskell</a>に引続き、
	      今度は <a href="http://www.swiss.ai.mit.edu/projects/scheme/">Scheme</a>で掲示板を作るのに成功しました。
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/schemebbs/bbs.cgi">これです</a>。 ソースコードは<a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/schemebbs/src.zip">src.zip</a>です。最低限の機能しかない上に、例外処理というか型チェックによるエラー処理はほどんどしてないです。動けばいいやって感じ。
	    </p>
	    <p>
	      Schemeの処理系は <a href="http://www.iro.umontreal.ca/~gambit/">gambit</a>でやりました。
	      なんでもよかったけど、これだとコンパイルが簡単にできたから。
	    </p>
	    <p>
	      Scheme掲示板はしんどかった。 
	      本来 Schemeってのはこういう用途に使うもんじゃないからかもしれないけど、欲しい関数が全然ない。
	      Haskellと違って、掲示板作る前から熟知してるってのはよかったけど、結構苦戦した。
	    </p>
	    <p>
	      融通の効かないIOと 何にもできない文字列処理関数群。
	      絶対に自分のコードは正しいのになぜか構文エラーを出す gambitコンパイラ。
	    </p>
	    <p>
	      ライブラリを探すのが面倒だったから、欲しい関数は全部自分で実装。
	      コンパイラ信用できないから、凝ったことはせずにできる限り標準の関数のみで普通の書き方でやる。
	      おかげでほとんどR5RSの標準ライブラリ以外を使わずに作ることができました。
	      標準関数以外で使ったのは、 多分getenvのみ。これは使わざるを得ないし。
	    </p>
	    <p>
	      できれば文字列単位で扱えるIOの関数と、正規表現ライブラリとまではいかないにしても 
	      もう少し便利な文字列処理の関数があってほしかった。
	    </p>
	    <p>
	      結論。Schemeは驚くほど cgiに向いてない。 Dynamic Typingってのもcgiに不向きな気がするし。
	    </p>
	    <p>
	      現在、僕が思う、CGIが書きやすいランキングは
	    <table border="1" style="border-collapse : collapse; border : solid 2px #333333; background-color : #f9f9ff;">
		<tr><th>1位</th><td>Python</td><td>CGIに有利なライブラリ豊富で、基本データ型もいい感じで、文字列処理も簡単。コードもきれいに書ける。</td></tr>
		<tr><th>2位</th><td>Ocaml</td><td>CGIライブラリは見つかる。基本的によい言語なのでなんにでも使える。ただ文字列処理がやや面倒。</td></tr>
		<tr><th>3位</th><td>Haskell</td><td>慣れればもう少し簡単に書けそう。よい言語だし。基本的にOcamlと似てるし。やっぱり文字列関連が面倒だけど。</td></tr>
		<tr><th>4位</th><td>Perl</td><td>僕はこの言語が嫌いだ。</td></tr>
		<tr><th>5位</th><td>Scheme</td><td>ライブラリが極端に少ない。やっぱりアルゴリズムを簡単に記述するときに有利な言語で、汎用言語ではないのかな。と。</td></tr>
	    </table>
	    という感じですね。でも CGI = 文字列処理プログラミング ってわけじゃないから、どっちかというと 掲示板を作るのに向いてるかどうかって感じかな。
	  </p>
	  </li>
	  <li><div class="date">(2003.6.3)</div>
	    <p>
	    <div style="vertical-align:middle; height=100px;font-size : large;">
	      「  <span style="position : relative;top : -5px;">燃</span>え<span style="position : relative;top : 5px;">よ</span>ペ<span style="position : relative;top : 5px;">ン</span>!!  」
	    </div>
	    <p/>
	    <p>
	      最近起きたことをいろいろと。その日に書けって思うけど書かなかったから。
	    </p>
	    <p>
	      サンダルを買った。研究室にいるとき用に。靴だと疲れるから。<br>
	      安いのを求めて上野を歩いたけど、どこも安くても1500円くらいだった。
	      以外に高いもんだと思ってたら、100円ショップにて発見。100円で購入。すばらしい。
	    </p>
	    <p>
	      今日の朝、 いきなり電話がかかってきて水道屋がやってきた。トイレのタンクを取り替えに。ゆっくり寝たかったのに。予期せずして久しぶりに朝のすがすがしさを感じるはめになった。
	    </p>
	    <p>
	      今の米澤研にはなぜかタブレットPCが1台ある。皆 興味をもっていろいろ試すけど、意外に使えない代物で飽きられてしまって現在は放置状態。<br>
	      ちょうど米澤件のノートPCが全部出払っているときに、先生の授業があり、
	      プレゼンの資料を表示するために仕方ないのでタブレットPCを使うことになった。
	      タブレットでプレゼンしたらかっこいいかなってな感じで、タブレットPC  汚名返上のチャンス。<br>
	      でも授業前にプロジェクタに映像が送れなくてトラブる。やっぱり駄目か、タブレットPC。<br>
	      なんとかプロジェクタで利用でき、授業は終った模様。<br>
	      授業後、先生がタブレットPCに興味を持つ。米研の学生はどう頑張っても
	      ペン入力で「澤」の字が出せないという話を聞いて、敢えてそれに挑戦する先生。
	      どうしても「纏」になってしまう先生。
	      粘る先生。飽きる先生。まさに米澤研的反応。さすが先生。<br>
	      タブレットPC放置状態。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.2)</div>
	    <p>
	      「Haskellはいいなぁ。」
	    </p>
	    <p>
	      なんかイテレータが気になる。イテレータってのはプログラムとかプログラミング言語に必須の機能ではないですが、最近ではよくある概念ですね。
	    </p>
	    <p>
	      もともとの意味は「iterate = 繰り返す」。
	    </p>
	    <p>
	      while文とか for文もそうなんだけど、もっと抽象的にとらえることが多い。 
	      Java だとデザインパターンにも入ってる java.util.Iterator ですな。
	      Ocamlだと List.iter とか Set.iter とか。どっちも集合から値を一つずつ
	      とってきて、その値を使って副作用のあることをする場合に使う。
	    </p>
	    <p>
	      感覚的には副作用を使う場合の List.map ってな感じでとらえてたけど、
	      関数型の決まり文句とも言うべき List.map と 副作用ってのはどうも相入れない感じがしてきた。 そもそも繰り返すってのは関数型にはない概念？ 
	    </p>
	    <p>
	      関数型にイテレータはないのか。Ocamlは ちょっと融通を効かせてるからあるのか。<br>
	      そう思って Haskellのイテレータを探してみたら、
	    <div class="blue">
	      " iterate f x == [x, f x, f (f x), ...]  "
	    </div> 
	    こんな感じでした。型は (a -&gt; a) -&gt; a -&gt; [a] です。
	    たしかにこれは iterate してるし、関数型だ。すばらしい。
	  </p>
	    <p>
	    でもこれをいつ使ったらいいのか。 OcamlのList.iterと同じ場面で使うのはMonadとの関連で無理そうだ。思いつくのは
	      <div class="blue">
	      " iterate succ 0  =&gt; [0, 1, 2, 3, ...] "
	      </div>
	    くらい？ 貧困な発想。とにかく純粋な関数型のイテレータは  ('a -&gt; unit) -&gt; 'a list -&gt; unit じゃないってことがわかったから今日はよしとするか。
	    </p>
	    <p>
	      あと、イテレータといえば。  Rubyの イテレータはこれがまた全く持って異質。別に繰り返しとか関係ないし。 謎は深まるばかり。
	    </p>
	  </li>
	  <li><div class="date">(2003.6.1)</div>
	    <p>
	      「五月祭にちょっとだけ行ってきた。そのあとHaskell掲示板が完成。」
	    </p>
	    <p>
	      午前中はバイト。自分の担当してるプログラムが一段落ついたかな。
	      とりあえず、バグが見つかるまではすることなしかも。
	      結構きれいに書けたと思うからデバッグも楽だ。
	      関数型プログラミング万歳。Javaだけど。
	    <p>
	    <p>
	      五月祭をやってたので、ちょっとだけ顔を出しました。もはや知り合いが店やってるわけでもないので、おいしそうなものを２、３つまむ程度。
	    </p>
	    <p>
	      <a href="http://www.yl.is.s.u-tokyo.ac.jp/~ganat/cgi-bin/haskellbbs/bbs.cgi">Haskell掲示板</a>がパワーアップ。今度こそ完成だ。ちゃんと新しい書き込み順に表示されるようになった。URL decodeを実装してスペースも日本語も使えるようになりました。 でもまだ 文字コード変換はサポートしてないです。<br>また nkf を外部プロセスで呼ぼうかな。自力で文字コード変換はしんどい。
	    </p>
	    <p>
	      Haskellをやって関数型プログラミングがますます好きになった。やってよかった。まだ理解しきれてない部分もいっぱいあるけど。<br>
	      monadがちょっとずつ見えてきた。まだ外枠だけだけど。ものすごくいい感じがただよっている。小林先生のResource Usage Analysys にも関係がありそうな。<br>
	      まだIOでしか使えないけど、これをもうちょっと一般化して、型で制御するにはどうしたらいいか勉強したい。<br>
	      やっぱり、とりあえずなんか小さいアプリケーションを書いてみると言語は覚えられるとわかった。
	    </p>
	    <p>
	      ショッキングなことが。 Ocamlの string がmutableだということを初めて知った。 <br>
	      今ごろ知ったこともショックだし、mutableなのもショックだ。<br>
	      そんなんで関数型言語と言えるのか。参照透過性はどうなるのか。簡単に書き換えられるし。しかも固定長って。配列で作ってますって言ってるようなもんじゃないか。ちょっと Ocaml好きが減少した。
	      <br>
	    </p>
	  </li>
	</ul>
      </div>
    </div>
  </div></td>
			  <td></td>
			</tr>
			<tr>
			  <td><img alt="|" src="/~ganat/images/borders/vline_b.jpg"></td>
			  <td></td>
			  <td></td>
			</tr>
		    </table>
		  </td>
		</tr>
	    </table>
    </td>
  </tr>
  </table>
    <div><a href="/~ganat/old/index.html">前のページはこちら</a></div>
  </body> 
</html>