K.Sasada's Home Page

Diary - 2003 December

研究日記

師走

_31(Wed)

「ハリー・ポッターと炎のゴブレット」終わり。

疲れた。長かった。字、大きいんだけどなぁ。しかし、わかりやすくていいや。ラブラブしてるのがいい(何が)。

タバコ嫌い・・・。

コソーリ。すーぱーくりえーたーのyu-yaさんが素敵なものを作ったので晒しておく。ruby 1.8 nodes。brubyの成果物ね。

1.8 になって、既存のノード構造が変わったとかの部分があれば、教えてください。きっとすーぱーくりえーたーがなんとかしてくれます。

犯罪発生マップ。うーん、うちの近所でも結構あるもんだなぁ。

いまさらになって、やっと頭が回ってきた。ヤレヤレ。

なんとなく、emacs と vi を混ぜて使ってると、vi のほうがいいかなぁ、とか思ってしまった。ナンテコッタ。

22時過ぎ。やれやれ、こんな時間まで学校にいるとは・・・。

皆様、よいお年を。

_30(Tue)

オブジェクト・コード・インサーション技術。Rational Purifyが持ってる特許って、これのことだったんですかね。

インラインキャッシュはインラインキャッシュでよかったそうです。いい加減とり頭だな、俺。PICっていって、Polymorphic Inlune Cache ってのもあるそうで。

でも、メソッドの高速化がどれほどRubyの高速化に寄与するか不明、というかいみねーんじゃねーか、って話がありましたよね。個人的にはショボーン。

どこかにサルでもわかる selector namespace の議論ってないですかね。要求仕様と、その効率的な実装に関して。

メソッド名からのディスパッチテーブルの検索は、たしかに CLOS とかでは必然ですが、Ruby みたいな、まぁそっちでのスタンダードっぽいのでは異例かと思います。というわけで、先日の実験(どれくらいメソッド名が被っているか、数えてみた。) をやったわけですが(案の定反応はないわけですが)。もちろん、こんなものあったって、実装の役にたつわけでも何もないわけですが。

rubyだとどうなのかな。


while などに redo 使えるって知らなかった。

to_s と to_str などってどうやって使い分けるもんなんだろう。


今年は おおむね幸せな年だったらしい。幸せすぎる人もいたらしい。

はてなダイアリーのキーワード、本文中にリンクを張られるとうっとうしいから、文末にでも、関連する(かもしれない)キーワード一覧、みたいにまとめてくれないかなぁ。すらどの関連リンクみたいなのでも。

16年度未踏ソフトウェア創造事業PMを推薦しよう。まつもとさんがPMになったら・・・。ごにょごにょ。そんなひまねーだろうなぁ。そもそも、応募側な気がする。まぁ、湯浅先生や伊知地さんみたいな人も居るわけだけど。

_青木(Tue Dec 30 01:14:59 JST 2003)

 あ、そうそう、Rational云々はそれです。

_まつもと(Tue Dec 30 04:36:12 JST 2003)

 to_sは一般的な文字列化。to_strは文字列のように振る舞わせたい引数用です。

_ささだ(Tue Dec 30 11:23:54 JST 2003)

 [ruby-dev:2737] Re: convert to String ですか。すみません、調べもしないで。分けるとどの辺が幸せになれるのか実感できてないのですが、文字列として振舞わせたくない場合もきっとあるんでしょうね。

_青木(Tue Dec 30 14:45:15 JST 2003)

 nilが代表的やね。nil.to_strを定義しちゃうと昔の挙動になる。

_29(Mon)

某リ終わり。何やってんだ俺・・・。でも、さすがのクオリティ。

_あひる(Mon Dec 29 23:31:53 JST 2003)

 リコッ(ry

_28(Sun)

飲みすぎた。

岸本さんご馳走様でした。


更新してなかったらしい。

大掃除で捨てるというので、13ヶ月分のちゃ○を読む。頭がクラクラする。


模倣犯、映画を見る。中居氏の起用はだめなんじゃないかと思う。彼の最後のシーンは意味不明。失敗ではないだろうか。

最後の最後で、ビデオの録画が切れていた。机をバンバンたたく。しょうがない、レンタルビデオに頼るか・・・。


某Rの某Rをやる。某リトルみたいな感じで、音楽ネタ。システムは凝ってていい。

しかし、音楽ネタはいいんだが、実際の歌がついていけてない・・・。いい加減そのへんをなんとかしてほしい・・・。

_26(Fri)

26日ですねぇ・・・。

xyzzy: C-x w を始めて知った。ガーン。今まで start . してた。って、自分で作ったんだっけか・・・。

なんか、リファクタリングばっかりやって、必要な機能の追加をやってない気がする。さて、どっちが早いのかな。

(defun my-execute-nanika2 (list)
  "拡張子やモードを見て、対応したプログラムを走らせて見たり 2"
  (let* ((buffer (selected-buffer))
         (rfile  (get-buffer-file-name))
         (file   (concat (pathname-name rfile) "." (pathname-type rfile)))
         (type   (and file (pathname-type file)))
         (f      #'(lambda (a b) (eq 0 (string-matchp b a))))
         (exec   (and type (assoc type list :test f))))
    
    (if (not exec)
        (progn
          (setq exec (assoc mode-name list :test f))
          (and exec (setq type mode-name))))
    
    (and exec (setq exec (cdr exec)))
    (cond
     ((stringp exec)
      (progn
        (if (buffer-modified-p) (save-buffer)) ; セーブしてから
        (execute-subprocess (format nil exec file))
        (set-window (get-buffer-window buffer))))
     ((consp exec)
      (funcall (eval exec))
      )
     (t (message (concat "やりたいことがねーっす : " (string type))))
     )))


    
  

(global-set-key '#\C-2
                #'(lambda () (interactive)
                    (my-execute-nanika2
                     '(("tex" . "platex ~A")
                       ("rb"  . "ruby -wd ~A")
                       ("ruby". "ruby -wd ~A")
                       ("html". "start ~A")
                       ("pl"  . "perl ~A")
                       ("scm" . "gosh ~A")
                       ("txt" . "t2n ~A")
                       ("c|cpp". "make")
                       ("lisp". #'(lambda () (eval-buffer (selected-buffer))))
                       ))))

何がどう変わったのかよく覚えてないんですが、まぁ一応。

食料はないし雨がふってきたし、でヒモジイ。さっさと帰ればよかった。

石垣島・・・。

今はまっているコード。

u[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)] = hir___ADD(hir___ADD(hir___ADD(hir___ADD(u[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)],hir___MULT(c[(hir_t_int )0],r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)])),hir___MULT(c[(hir_t_int )1],hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)],r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]))),hir___MULT(c[(hir_t_int )2],hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)],r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(i3,(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i1,(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(i2,(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]))),hir___MULT(c[(hir_t_int )3],hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(hir___ADD(r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)],r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___SUB(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___SUB(i1,(hir_t_int )1),(hir_t_int )1)]),r[hir__LowerBound(hir___ADD(i3,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i2,(hir_t_int )1),(hir_t_int )1)][hir__LowerBound(hir___ADD(i1,(hir_t_int )1),(hir_t_int )1)])));

読めるかこんなもん!!

これを見て、あああれね、ってわかった人はHPCな人だ。多分。

_あひる(Sat Dec 27 18:09:45 JST 2003)

 どこがかわったの?>exec nanika

_ささだ(Sun Dec 28 00:51:29 JST 2003)

 忘れた。

_25(Thu)

1.8.1 おつかれさまです。


そういえば、金がない、とか言っていたのが解決されたのが発覚。極極一部の方にはご心配おかけしました。

これは感謝しないといけないことなのかもしれない。30万はでかいしな。


Python チュートリアル。素晴らしい!


青木さん RDoc大好きで「好きな娘にはいぢわるしちゃう」疑惑。

情報ソース。有力な情報通(某うさん)の証言:

るどっくたんはぁはぁ。なので大好きに違いない。


コミットもしたし、帰ろう。疲れた・・・。


「貸金庫」。うーん。ここでやめるのか。


ついつい (not '()) ;=> #f を失念してしまう。

そういえば、こないだ ruby に #f って書いてはまった。

_KM(Thu Dec 25 09:34:50 JST 2003)

 ご心配しました(あれれ?).ところで「昭和10年から17年まで、上位10位は一文字名前だけ。」っての,自分の父と伯父たちが丁度その時代なので帰省したらきいてみます.祖父のポリシー(趣味)のような気がしなくもないけど,それを確かめるには戦時中まで時間旅行をする必要があったり (^^;

_ささだ(Thu Dec 25 15:20:30 JST 2003)

 まぁ、年中金はないので忘年会はごちそうさまです。

_24(Wed)

今日の目標。なるべく日記を巡回しない。


年賀状なんて何年も出してないなぁ・・・。


くりすますおめでとう!おめでとう

(そういう日じゃないし・・・)


あぁ、Java に Mix-in がほしい。

1600行のクラスをガンガン分割してんだけど、どこにもいけない部分が。うーん。

なんだかんだで今日は帰れそうにないな・・・。サンタさんは大学に来てくれるんだろうか。


おめでとおおおおおお 楽しいクリスマスを演出するために今日は缶詰もついてる! 豪華だね! びばくります! いやっほーーーーー!!


せめて家で寝たい。

_arton(Wed Dec 24 22:22:45 JST 2003)

 JavaでAOPってのがあるんだから、笹田さんがJavaにMix-inてのを作られたらどうでしょう?(まじめモード)

_ささだ(Wed Dec 24 23:04:10 JST 2003)

 すでに akr さんとか一杉さんとかが。だけど、使わせてくれって言っても(そのプロジェクト的に)無理なんですよね。多分。標準じゃないと・・・。

_arton(Thu Dec 25 00:21:34 JST 2003)

 自分で作れば(or 手を入れれば)プロジェクトの実装の1部ということには。

_ささだ(Thu Dec 25 07:57:20 JST 2003)

 それは魅力的デス・・・。でも、それだけの力量はないです・・・。

_み(Thu Dec 25 11:18:53 JST 2003)

 Mix-in と言ったら Flavor。違うのかな?

_23(Tue)

というわけで、テッド・チャンの「あなたの人生の物語」を読みました。温泉の帰り、高橋(maki)さんに飛行機の中で教えてもらったんですが、今ごろやっと。

なんか教訓じみて、というか、宗教的というか。まぁ、楽しむところはそこじゃないんだろうけど、そういうところが気になってしまって。

まぁ、楽しかったです。

へー、テクニカルライターなのか、この人。何系について書いてるんだろう。


ハッピーマンデーは、私を駄目人間にしている気がする。もともと駄目だから関係ないって?


明治生命 名前ランキング2003(/.j)。もちろん演算子とか構築子とかは居ないが、「〜子」が19位で初出か・・・。

名前ベストテンの読み方。5位、7位を順番に読んで笑ってしまった。「あおいもえ」

しかし、なんかアレとかで聞く名前ばかりというか。そちらが世情に合わせているのか。

男性名前履歴、昭和10年から17年まで、上位10位は一文字名前だけ。そういうのが流行ったんだろうか。


shiroさんに教えてもらった。GTEdit(Gesture-based Tree Editor)

すげー、面白すぎる。

(どちらも熟練者を用意したとき)emacs な人とどっちが速くプログラミングできるんだろう。

研究としたとき、どこが研究範囲なのかわからんな。技術的課題とか。論文読めって?


US-ASCII.rb ですが、ちょうど先週、 irc でまさにそこの話があがってたんですよね。-'EOL' でも、\#{num} でもかまわないとは思うんですが(私は'EOL'にしたけど)、なんで報告しなかったかというと ruby-core:1960 03/12/15 で nokadaさんがその変更が要らないパッチを作っておられたから、あー、もう要らないのねー、とか思ってたんですが、結局かわりませんでしたね。1.8.1 はきっとこのままなんだろう。

あのとき言っておけばよかった。


サンタさん、どうか私にプログラミングの能力を授けてください。もしくは、もうちょっと集中力を。(*1)


名前ネタですが、私は自分の名前が大好きです。お母さんありがとう(父案は元気だったらしい。それは、ちょっと・・・)。鶴(略)な親戚がいれば言うことなかったんですが。まぁ、おかげで(略)には(略)でした。


*1 神頼みしてる時点で駄目だという罠。それより、サンタさんは神なのか?
_なひ(Tue Dec 23 19:06:12 JST 2003)

 なんでも言っておかないと。

_ささだ(Tue Dec 23 22:21:28 JST 2003)

 今度からそのように。why_ 氏には直接メールしたんですけどね。

_なかだ(Wed Dec 24 00:04:55 JST 2003)

 syckにもまだ何か?

_ささだ(Wed Dec 24 09:26:12 JST 2003)

 いや、なかださんが直した Marshal::*_VERSION の話です。MAJOR_VERSION まで指定していいかはちょっと疑問でしたが。

_み(Thu Dec 25 11:17:13 JST 2003)

 名前ねぇ…いいではありませんか…人並みの名前なら。小学生のときは名前でイジメられ、先生は年度始めはまともに読んでくれず、未だ「本名ですか?」

_22(Mon)

今回のアルゴリズム解析特論の問題は、ある配列(長さN)について、ワーキングエリアを用いずに(k個)ローテートする方法を求め、そのオーダーを求めよって話。

ワーキングエリアが0なら解けるわけ無いので、定数のワーキングエリアで、だな。


家族団欒が予想外に低いなぁ。


計算機室を見ていると、席取りをしている人がいる。まぁ、それは心情的にわかる(とっておきたい、という気持ちはわかるという意味であって、他人に迷惑かけていいということに対してわかるというわけじゃない)んでどうでもいいんだけど、そいつらはロックもかけずに、ただほったらかしにしている。馬鹿じゃねーか、こいつら。


33333ヒットした 2003-12-22-1-17-9-40 *.asahi-net.or.jp MSIE 6.0 Windows NT 5.0 な人、おめでとうございます。なんか下さい。


まーじゃーんさーばー。

_21(Sun)

rubyでhttpからダウンロードする何かでエラーが。よくわかんなかったんで、面倒だから wget に丸投げすることにした。


「理解」。反応速度についての言及が、根拠もなくすげー速くなっているが、これはどうか。上位意識による知覚を認めるためには、それにともなうオーバーヘッドもあってしかるべきではないのか。

「ゼロで割る」。落ちがわからない・・・。

「あなたの人生の物語」。人間の知覚でこれが可能になるとは思えないんだが。


なんてことだ、ロードオブザリング 二つの塔、DVD を借りてきたつもりなのに、一部だった。うあー。なんてこった。


朝日新聞で、「今年の本ベスト3」みたいな企画があったんだけど、意外と文学文学してなかった。しかし、世の中ではこういう本が売れるのか。


Gauche リファレンスマニュアル: オブジェクトシステム。CLOS みたいな Gauche のオブジェクトシステムの解説書。実装つき(マテ)。再定義プロトコルは必読かもしれない。(HTMLHelpj,e版)

と、一応貼っておこう。0.7.3 用ドキュメント。遅ればせながら、リリースご苦労様です。0.8のときには、もっと増えてるんだろう。すごいなぁ(とか言ってみるテスト)。


そういえば、shiroさんに教えてもらった Orthogonal

Orthogonal is an unusual computer language in which your program flow can go sideways. In actuality in can go in just about any direction you could want.

サンプルコードに爆笑。実は、「あなたの人生の物語」を読んでいたときこれをちょっと思い出した。


まつもとさんのところで貼ってあった論文は、なぜか以前にダウンロードしてた。覚えてないってことは(いや、ちょっと掠った気はする)、読んでないんだよな。しかし、どこで知ったのかな。うーん。


しかし、学校のネットワーク遅すぎ。何が起こった(起こってる)んだろう。工学部他学科の人に聞いても、同じような状況らしい。農工大、電通大とか、その辺のラインが死んでる? 電通大でこれ見てる人がいたら、そちらはどうか、教えてもらえませんか。

pdf ダウンロードするにしても、1kb/sec とか出ると、なんとも。


昨日ワタシの誕生日だったの..でもひとりぼっち..こんなのいやだよ。めるからよろしくね。

こんなメールがどこぞの携帯から届く。まぁ、SPAM紛いのものだろう。

しかし、わからないことが一つ。「めるから」って何だろう。本気でわからないんですが、どこかの方言でしょうか。「メールするから」の略か? しかし、文脈にあわない気がする。


えんどうさんに Servlet Garden: Gotta lettin' Ant work を教えてもらう。


「七十二文字」。そこで止めるなー!

_maeda(Sun Dec 21 13:36:13 JST 2003)

 テッド・チャン、いいですな。でもグレッグ・イーガンのほうがずっと好き。

_ささだ(Sun Dec 21 14:26:30 JST 2003)

 読み終えてから書こうと思ってたんですが、「あなたの人生の物語」は高橋(maki)さんに以前薦めて頂いたので、図書館で借りました。グレッグ・イーガンという方の作品で読んでおけ、っていうのありますか?

_maeda(Sun Dec 21 14:38:43 JST 2003)

 イーガン,私は「順列都市」でづがーんと来ました。短編集「祈りの海」もなかなか。

_ささだ(Sun Dec 21 15:04:37 JST 2003)

 ありがとうございます。今度読んでみます。

_fukumori(Sun Dec 21 22:18:27 JST 2003)

グレッグとくると僕はベンフォードの方を思い出します。「夜の大海の中で」から「輝く永遠への航海」まで、20年かけて続いたシリーズが好きだったのですが、軒並み絶版なのが残念。

_kjana(Mon Dec 22 04:06:08 JST 2003)

Slammer 発生っていう話はあったけど、五日前の話はあんまり関係無さそうだ。 <http://www.tateoka.org/~tate/diary/20031216e/index.html#exp>

_20(Sat)

投票のデータは yaml なんだけど、項目を追加しようとしたとき、微妙に面倒くさい。項目の配列と投票数の項目を、別々の配列にしちゃったから。今になって後悔。

さて、まぁこういう失敗は私のようなダメプログラマにはよくあるのだけど、ならそれをリカバーするためにはどうすればいいか。つまり、データの下位互換性を持たせつつデータを拡張すること。

しかし、編集のしやすさを考えてデータ構造をデザインするってのも面白いな。編集のしやすさと、データ構造自体の良質さ、というのはどれくらい相関関係があるもんなんだろうか。

require 'yaml'
class A
  def initialize
    @a =
    [[1,2],
     [3,4]]
  end
end
p YAML::load(A.new.to_yaml)

#=>
#<A:0x2b51990 @a=[[1, 2], [3, 4]]>
/usr/local/lib/ruby/1.8/yaml.rb:160: warning:
  incompatible marshal file format (can be read)
	format version 4.8 required; 4.6 given

はて、これは仕様か?

へぇ、yaml.rb 内で、ver.4.6 の Marshal format なバイナリを作って、そいつを Marshal::load してるんだな。だけど、ruby側は ver.4.8 がほしいので、警告、と。

ruby の ChangeLog を見ても、MARSHAL_MINOR でひっかかんないなぁ。

4.6 から 4.7 に上がったのがこれ(http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/marshal.c.diff?r1=1.49&r2=1.50)なのか。

なんとなく、無理やり 4,8 に変えたら警告出なくなったけど、多分そうしちゃいけない理由があるんだろうなぁ。って、ぱっと見た限りないような気もする。ダメな理由もあるような気がする。少なくとも、4.6 固定なら警告は出ても、空のオブジェクト表現は固定されるもんなぁ。


cl = lambda{ ... }
cl()

で call してくれるとどうなるんだろう。


まつもとさんはやっぱりスゲー人なんだと再認識した。実際に行ってみるという発想なんて、全然思い浮かばなかった。先日、NTT関係の人と飲んだんだけど、「まつもとさんは憧れだよね〜」と言っていた(と言っていた)。Javaなところらしいけど。


何軒か文房具屋をまわっているんだが、求めるスケジュール帳がない。帯に短したすきに長し。どうしよう。来年になってしまうぞ。

  • monthly であること
  • ポケットに入ること
  • 開きやすいこと(リングで閉じてある)
  • ある程度紙質がいいこと

そんなに予定なんぞ無いので月の予定が見開きでさっと見ることができるものがいい。weekly とか daily なんて、書くことは無い。持ち歩くためにはでかいものなぞ論外。作業中は卓上カレンダーの代わりになること。そのためには開きやすくなければならない。monthly なので、薄っぺらだから、ある程度厚い紙でも嵩張らない。

今使っているやつは、偶然に出会ったんだが(時期が外れた半額セール)、具合がよすぎたのかもしれない。

うーん。家族に「自分で作れば」とか言われてしまった。うーん。

いまつかってるのは Hanadeka Club っていう、ペット写真つきカレンダーみたいなんだけど、ウェブサイトを見るとこの製品ラインナップはすでに終了してるっぽい。どうしたもんかなぁ。

_なひ(Sat Dec 20 10:24:21 JST 2003)

 1.8ではallocateを使うべきですね。-talkで突っ込んでください。

_なかだ(Sat Dec 20 11:26:04 JST 2003)

attr_writerもinstance variableもない、Exception#mesgのようなものがセットできません。 soap/marshal.rbみたいに、個別にallocate+initialize(...)という方法はありますが。

_19(Fri)

我ながらひがみっぽくてアレだな。

_n某(Fri Dec 19 22:08:54 JST 2003)

 なにが?

_ささだ(Fri Dec 19 22:12:21 JST 2003)

 「なにそれ。」

_なかだ(Fri Dec 19 22:48:22 JST 2003)

 100%…

_shiro(Sat Dec 20 06:12:41 JST 2003)

 友人とパーティーって選択肢は?

_maeda(Sat Dec 20 14:35:38 JST 2003)

DDA... こんなだっけ。

class Array
  def ddaset(count, value, fuzz = length / 2)
    if count > length then
      raise ArgumentError
    end
    for i in 0..length - 1 do
      fuzz = fuzz + count;
      if fuzz >= length then
        self[i] = value
        fuzz = fuzz - length
      end
    end
  end
end

a = Array.new(13, 0)
a.ddaset(5, 1)
p a
# => [0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0]

_18(Thu)

マックが多いのは、関東の人が多いのか、関西人の裏切り者が多いのか。

朝マクドとかマクドシェイク派はどれくらいいるんだろうか。


昨日の問題は、「均等である、綺麗に見える、とは何か」のモデル化が一番大変なのですかね。

1 と 2 の関係をどうするかが。

何の話かと書いておくと、まぁ学生なんで実験をやるんですが、あるCPUに対して、異なる種類の命令列を実行させて、その挙動を調べる、という実験です。たとえば、スーパスカラプロセッサでは、Simple ALU を利用する足し算をレジスタの依存関係が無いように死ぬほど並べておけば、その命令列を実行させたときのIPC(Instruction per Cycle)は、Simple ALU の数くらいにあがるだろうなぁ、という感じです。

で、ほかにも、Complex ALU(掛け算とか)とか、LD/ST 命令とか、その辺を、その足し算の列にある一定の割合で混ぜてやると、どんな挙動になるかなぁ、と。その命令列の生成ルーチンですね。C は ComplexALU を利用する命令数(具体的には掛け算の数)、M はメモリアクセスを行う命令数(具体的にはLD)でやってるんですが。

まぁ、そんな話でした。たとえば、全部の命令がメモリアクセスだったりすると、IPC は 1 に限りなく近くなるわけで(すべてキャッシュにヒットするとする)。全部掛け算だったりすると、IPCは悲しいことになるわけで(1回の掛け算に 12cycle かかるという計算でやってます)。

で、依存関係が絡んでくると、もう解析は(私の頭では)不可能なので、どうしたもんかなぁ。実際の場面では、依存関係バリバリにありそうだしなぁ。


先日の FMC 、とても素敵なんだが、ぱんださんとか流れると(人に聞かれてるときは)やばいかもしれない。


頭の中をまとめるために、要点をまとめて、複数の選択肢について、どれがいいか迷っているのならそれらの項目についてメリットデメリットをまとめるというのは、議論のたたき台として有効な手段だと思うんだが、それをやっといてと言ってやってきたものを見たことがない。

うーん。


私も何がなんだか全然まったく微塵もわからないのですが、世の中はすごいこと になっているんですね。「想像を絶する」っていうのが素敵。イタイだけだと思うんだけど。 何が人々をこれだけ駆り立てるんでしょうか。教えてえらい人。


昨日から走らせていたプログラムが駄目駄目だったことに、今日やってきて気づく。なんてこった。

うーん、頭が痛い。


PRO読み。IPSJ Transaction on Programming 2003/Nov, SIG 15(PRO 19)。面倒なので、著者名は省略。

IBMの人が多いなぁ。

■大域的なコード移動を使った複数式の実行コスト削減法

コード移動によってよりリッチな命令(「演算強度が軽い式」、MMX命令とかにもつながるのかな?)を使えるようにしましょう、という話。だと思うんだけど。IA64 の JavaJITコンパイルでやってみました、という話。まとめられるものをなるべくまとめましょう、って感じ。

■スレッド局所性を利用したJavaロックの高速化

「ロックを最初に獲得したスレッドが、そのあとでもロックを獲得する可能性が高い」という経験則から、最初にロックを獲得したスレッドに、そのロックを「予約ロック」として獲得させ、その「予約ロック」の対象スレッドはロック獲得・開放時に不可分命令などを利用しなくてもよくする、という話。

予約ロックを持っているスレッドとのデータレースを避けるための工夫が、とても強引で素敵(予約スレッドをサスペンドしてしまう!)。本当にこれでうまく動くんだろうか。コンパイラによる最適化を考えたりすると、うまくいかないときがあるような気がする。でも、こういう発想は私にはできなかったなぁ。すごい。

でも、その予約してるスレッドが入出力中とかシステムコール中だったりしたら、うまく suspend/resume できるもんなんだろうか。

JITコンパイルで埋め込んじゃうことも考えているのかぁ。たしかにメソッド呼び出しするとアレかもしれない。

■動的コンパイラにおける実行時経路情報の構造的収集手法の提案

JITコンパイラのような動的コンパイラで、実行パスの収集を効率よく行いましょうって話。

ノードプロファイル(各基本ブロックの実行頻度の測定)、エッジプロファイル(制御フローエッジの実行頻度の測定)とか、用語をはじめて知った。

どのメソッドをこれの対象にするかっていう、ホットメソッドの選択ってどうやるんだろう。ああ、このパスプロファイル自体が、もう一個上のプロファイル情報によってオン・オフされるんだ。

うーん、しかし、これだけ高精度なパスがとれたとして、有効に利用できるもんだろうか。つまり、収集コストに見合う最適化に利用できるんだろうか。ホットエッジ+静的解析でそれなりにいけそうな・・・。どうなんかな。

■アクションゲーム記述に特化した言語

発想が面白いなぁ。サーベイも面白い。

アニメーション記述言語ってのを全然見つけられなかったんだけど、ALICE とか Oblicq-3D ってのがあるのか。今度調べよう。

class の代わりに char ってのはアレゲだと思う。Excel つえー。仕様書にとどまらず、ゲームまで作るのか。

「雑魚キャラクタ」という単語が出てくる論文ってスゲー。

言語の要素として、「状態機械」「並行」「通信」の記述の容易さを挙げている。まさにオブジェクト指向。Ruby の記述はやっぱ向いてんじゃないかな? eval(再評価、再定義)やブロック関係をばっさり切って、最適化しやすい仕様にしてしまえば、幸せになれる人は居る気がする。

作ってる言語では、並列オブジェクトを簡単につくれるとか、通信はタプルスペースで行うとか。タプルスペースって簡単なのか。

しかし、差読者ってのはいかがなものかと。

■世代別GCの殿堂入りポリシー:mark/cons比の限界とスタックフレームからの到達性の利用

殿堂入りポリシーを、スタックの深い部分(上へ積んでいくモデルにおいて)から到達可能な奴は殿堂入りさせて、スタックの浅い部分、つまり最近積んだスタックからしか参照してないのは、さっさと死ぬだろうって話。

で、そこで問題になるのはどこからが「浅い」でどこからが「深い」なのか、ということ。前回のGCのときに存在していたフレームから到達可能なオブジェクトを殿堂入りさせる、とあるんだが、よくわからんなぁ。あ、つまり、ある程度長命なフレームってことか。なるほど。

GCの評価って、トレースデータをもとに行うのかー。なるほど、たしかに効率がいい。

評価結果、グラフが沢山出てきてるけど、何がいいたいのかイマイチわからない・・・。図5の読み方もわからん・・・。シミュレータの話は、スタック云々とは関係ないのか。理想的な世代別GCではどんな感じか、って話をしてるのか。そのためにグラフ15枚使うって豪勢だな。

実装してみたら遅くなった、と堂々と書いてあるのが凄い。なんで遅くなったのか、とかそういう考察が無いような気がするんだが、これでよかったんだろうか。理想的なGCのほうで評価されたってことなんだろうか。うーん。結びに「(本手法は)十分に可能性のある手法」だ、とあるが、その根拠が無いような気がするんだけど、気のせいだろうか。

うーん。


読んだら、PROの次のが来てた・・・。追いつかない。でも、今回のは6月に見に行ったやつやね。

ついでだ。これも読もう。IPSJ Transaction on Programming No. SIG 16(PRO 20)。

■状態機械を用いるフレームワーク記述言語FwMLの設計とXMLアプリケーションへの適用

Struts? 状態ももてるから違うか。

XMLを用いることで再利用性が増すっていうの、ほんとなのかな。より不自由なものに落とせば、インターフェースは共通化できるってことなのかな。

クロージャとかで全部できたほうが綺麗だったりしたりしなかったり。どうなんだろうな。

■実行環境が異なる2つのコード間の遷移を行う際の効果的な最適化手法

動いてるコード中で、どうやって(効率よく)別の実行環境へ遷移しましょうか、って話。インタプリタ実行からcompiled code への遷移とか、その逆とか。

これって、インタプリタ自体の命令列を、最適化するとか、そっち系にはいかないんだろうか。

■一般支配関係の効率的な検査法

支配関係のチェックの効率的な手法。コンパイルを速くやりましょうって話。

COINS。

そういえば、夏に車で送ってもらったのでした。ありがとうございます。

■A Concurrent Real-time Garbage Collector

大御所。著者紹介がなんか凄い。Lispマシン用に並列実時間GCをマイクロコードで書きました、って話。

どのプリミティブについてどうするか、とか、そういうのが載っているんだと思う。英語なので読んでない(ぉ。GCスケジューリングとかも考えるのか。

実時間Lispって、何に使うんだろう。ロボット制御?

■抽象高階書換え系におけるナローイング

ぜんぜん全然わかりません。おしえてえらいひと!


あー、腹減った。

頭悪いので理論ベースの話はわからん。


アップキャスト、ダウンキャストって言葉が、どっちがどっちなんだか、忘れる。

_アフォ(Thu Dec 18 21:18:09 JST 2003)

 DDAも、バナジーも、ax+by=c(given:a,b,c∈Z, x,y∈Z)も、ある種のスケジューリング問題も同じだよ、違うのは背景で、って言っちゃったら怒られるのかもね。制約条件は確かに違うんだけど。

_ささだ(Thu Dec 18 23:56:30 JST 2003)

 DDAとか、バナジーってなんですか? どこにかかるのかわからないんですが。

_shiro(Fri Dec 19 05:44:33 JST 2003)

アニメーション記述言語:インハウスでは色々あると思うけど、表に出てくるものが少ないんじゃないでしょうか。私も10年ほど前に手を染めていました。ここhttp://www.oyukibo.com/kohoan/ からダウンロード→ドキュメント。 研究会でもいいからペーパーにしとけばよかったなあ。

_KM(Fri Dec 19 09:32:32 JST 2003)

 DDAってのは離散微分解析,だっけかな.要するに「でじたるな線の曳きかた」.きのうの「均等に分布」のネタだね.あとこのへんのキーワードとしてはブレゼンハムでっか.アスキーラーニングシステムの「入門グラフィックス」か「実習グラフィックス」で勉強した記憶があります

_17(Wed)

あーあ、また恥をさらしてしまった。学部時代、何をやってたのかな、俺は。


N個の要素のリストがあり、0 で初期化されているとする。N個のうち、C個(C<=N)を1に変更したい。また、1の間隔はなるべく均等にならないといけないとする。

どう書くと綺麗にいけるだろうか。N=4, C=2 なら、0101 みたいな。割れりゃいいけど、割れないとどうなるか。

また、続いて M個、0 を 2に変更したい。同様に2の間隔は均等になるようにする。N=8,C=2,M=2 なら、01020102。

んー。

class Array
  def randomize
    lst = self.dup
    ret = []
    lst.size.times{|i|
      ret << lst.delete_at(rand(lst.size))
    }
    ret
  end
end

N = 8
C = 3
M = 3

def solve_randomize n,c,m
  lst = Array.new(n-c-m){0}
  lst.concat Array.new(c){1}
  lst.concat Array.new(m){2}

  lst.randomize
end

p solve_randomize(N,C,M)

保証が無いけど。randomize が微妙。

条件を一個忘れてた。N>=2C, N>=2M。

パターンをそれぞれ作って、位相を変換してやるのがいいような気がしてきた。

パターンを作るとき、量子化とか考えつきませんでした。ただ単に、適当に分割すればいいや、と。そうすると、たしかにあまりの部分で綺麗じゃないかもしれない。


4年生が入ってきたとき、「わからないことがあれば聞かないと、後で大変」という話をしてたんだけど、案の定大変になっている人たちが。まぁ、こんなもんかもしれない。

聞け、と言ったつもりなんだが、聞きづらいらしい。俺は聞かれたら「Googleしろ」とか、「これを読めばわかる」とか答えることが多いんだけど、それではダメらしい。ダメなのはダメなんじゃないかと思うんだが、まぁ、ダメらしい。来年は懇切丁寧にしてみるか。俺には無理なので、そう主張している現4年生にやってもらおう。

聞かない奴が悪い、とは思うんだが、どうなんだろうなぁ。

あと、どうやら聞くよりもこの日記を読んでいるらしい。日記を読んで疑問に思うことがあるなら、直接聞けばいいのに。わけがわからん。

あと、自戒を込めて書くんだけど、言葉に不注意な人が多い。人にものごとを伝えるときに論理的じゃない。自分語(アレ、とか 4 とか)で話す、意味不明な指示代名詞を多用する。聞いてるほうはたまったもんじゃないな。

いい加減、口をあけていても誰もえさをくれないことを納得してはもらえないものか。


stochastic って、初めて単語知りました。

def calc_pt n, m, i
  pt = Float(n)/m * i
  pt.round
end

def solve1 n,c,m
  lst = Array.new(n){0}
  if c != 0
    c.times{|i|
      pt = calc_pt(n,c,i)
      lst[pt] = 1
    }
    lst
  end
  if m != 0
    sc = c == 0 ? 0 : n/c + (n%c == 0 ? 0 : 1)
    # sc = c == 0 ? 0 : n/c 
    sm = n/m + (n%m == 0 ? 0 : 1)
    m.times{|i|
      pt = (calc_pt(n,m,i) + sc/2) % n
      if lst[pt] == 0
        lst[pt] = 2
      else
        lst[pt+1] = 2
      end
    }
  end
  lst
end

#p solve_randomize(N,C,M)
# p solve1(N,C,M)
size = 8
(size+1).times{|i|
  (size+1).times{|j|
    print "#{size*size}: #{i}, #{j} ::"
    p solve1(size*2,i,j)
  }
}

#=>
64: 0, 0 ::[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
64: 0, 1 ::[2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
64: 0, 2 ::[2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0]
64: 0, 3 ::[2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
64: 0, 4 ::[2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0]
64: 0, 5 ::[2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0]
64: 0, 6 ::[2, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0]
64: 0, 7 ::[2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0]
64: 0, 8 ::[2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0]
64: 1, 0 ::[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
64: 1, 1 ::[1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0]
64: 1, 2 ::[1, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0]
64: 1, 3 ::[1, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0]
64: 1, 4 ::[1, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0]
64: 1, 5 ::[1, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0]
64: 1, 6 ::[1, 2, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0]
64: 1, 7 ::[1, 2, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2]
64: 1, 8 ::[1, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0]
64: 2, 0 ::[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
64: 2, 1 ::[1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
64: 2, 2 ::[1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0]
64: 2, 3 ::[1, 0, 0, 0, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 2]
64: 2, 4 ::[1, 2, 0, 0, 2, 0, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0]
64: 2, 5 ::[1, 2, 0, 0, 2, 0, 0, 2, 1, 0, 2, 0, 0, 0, 2, 0]
64: 2, 6 ::[1, 2, 0, 0, 2, 0, 0, 2, 1, 2, 0, 0, 2, 0, 0, 2]
64: 2, 7 ::[1, 0, 2, 0, 2, 0, 2, 0, 1, 2, 0, 2, 0, 2, 0, 2]
64: 2, 8 ::[1, 2, 2, 0, 2, 0, 2, 0, 1, 2, 2, 0, 2, 0, 2, 0]
64: 3, 0 ::[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
64: 3, 1 ::[1, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
64: 3, 2 ::[1, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0]
64: 3, 3 ::[1, 0, 0, 2, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0, 2, 0]
64: 3, 4 ::[1, 0, 0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 2, 0, 0, 2]
64: 3, 5 ::[1, 2, 0, 2, 0, 1, 2, 0, 0, 2, 0, 1, 0, 2, 0, 0]
64: 3, 6 ::[1, 2, 0, 2, 0, 1, 2, 0, 2, 0, 0, 1, 2, 0, 2, 0]
64: 3, 7 ::[1, 2, 0, 2, 0, 1, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0]
64: 3, 8 ::[1, 2, 0, 2, 0, 1, 2, 2, 0, 2, 0, 1, 2, 2, 0, 2]
64: 4, 0 ::[1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]
64: 4, 1 ::[1, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]
64: 4, 2 ::[1, 0, 2, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0]
64: 4, 3 ::[1, 0, 2, 0, 1, 0, 0, 2, 1, 0, 0, 0, 1, 2, 0, 0]
64: 4, 4 ::[1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0]
64: 4, 5 ::[1, 0, 2, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 2]
64: 4, 6 ::[1, 0, 2, 0, 1, 2, 0, 2, 1, 0, 2, 0, 1, 2, 0, 2]
64: 4, 7 ::[1, 2, 2, 0, 1, 2, 0, 2, 1, 2, 0, 2, 1, 2, 0, 0]
64: 4, 8 ::[1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0]
64: 5, 0 ::[1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0]
64: 5, 1 ::[1, 0, 2, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0]
64: 5, 2 ::[1, 0, 2, 1, 0, 0, 1, 0, 0, 0, 1, 2, 0, 1, 0, 0]
64: 5, 3 ::[1, 0, 2, 1, 0, 0, 1, 2, 0, 0, 1, 0, 0, 1, 2, 0]
64: 5, 4 ::[1, 0, 2, 1, 0, 0, 1, 2, 0, 0, 1, 2, 0, 1, 2, 0]
64: 5, 5 ::[1, 0, 2, 1, 0, 2, 1, 0, 2, 0, 1, 0, 2, 1, 0, 2]
64: 5, 6 ::[1, 0, 2, 1, 0, 2, 1, 2, 0, 0, 1, 2, 0, 1, 2, 2]
64: 5, 7 ::[1, 2, 2, 1, 2, 0, 1, 2, 0, 2, 1, 2, 0, 1, 2, 0]
64: 5, 8 ::[1, 2, 2, 1, 2, 0, 1, 2, 2, 0, 1, 2, 2, 1, 2, 0]
64: 6, 0 ::[1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0]
64: 6, 1 ::[1, 2, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0]
64: 6, 2 ::[1, 2, 0, 1, 0, 1, 0, 0, 1, 2, 0, 1, 0, 1, 0, 0]
64: 6, 3 ::[1, 2, 0, 1, 0, 1, 2, 0, 1, 0, 0, 1, 2, 1, 0, 0]
64: 6, 4 ::[1, 2, 0, 1, 0, 1, 2, 0, 1, 2, 0, 1, 0, 1, 2, 0]
64: 6, 5 ::[1, 2, 0, 1, 2, 1, 0, 2, 1, 0, 0, 1, 2, 1, 2, 0]
64: 6, 6 ::[1, 2, 0, 1, 2, 1, 2, 0, 1, 2, 0, 1, 2, 1, 2, 0]
64: 6, 7 ::[1, 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, 1, 2, 1, 0, 2]
64: 6, 8 ::[1, 2, 0, 1, 2, 1, 2, 2, 1, 2, 0, 1, 2, 1, 2, 2]
64: 7, 0 ::[1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0]
64: 7, 1 ::[1, 2, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0]
64: 7, 2 ::[1, 2, 1, 0, 0, 1, 0, 1, 0, 1, 2, 1, 0, 0, 1, 0]
64: 7, 3 ::[1, 2, 1, 0, 0, 1, 2, 1, 0, 1, 0, 1, 2, 0, 1, 0]
64: 7, 4 ::[1, 2, 1, 0, 0, 1, 2, 1, 0, 1, 2, 1, 0, 2, 1, 0]
64: 7, 5 ::[1, 2, 1, 0, 2, 1, 0, 1, 2, 1, 0, 1, 2, 0, 1, 2]
64: 7, 6 ::[1, 2, 1, 0, 2, 1, 2, 1, 0, 1, 2, 1, 2, 0, 1, 2]
64: 7, 7 ::[1, 2, 1, 2, 0, 1, 2, 1, 2, 1, 2, 1, 2, 0, 1, 2]
64: 7, 8 ::[1, 2, 1, 2, 0, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2]
64: 8, 0 ::[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
64: 8, 1 ::[1, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
64: 8, 2 ::[1, 2, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0]
64: 8, 3 ::[1, 2, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 2, 1, 0]
64: 8, 4 ::[1, 2, 1, 0, 1, 2, 1, 0, 1, 2, 1, 0, 1, 2, 1, 0]
64: 8, 5 ::[1, 2, 1, 0, 1, 2, 1, 2, 1, 0, 1, 2, 1, 0, 1, 2]
64: 8, 6 ::[1, 2, 1, 0, 1, 2, 1, 2, 1, 2, 1, 0, 1, 2, 1, 2]
64: 8, 7 ::[1, 2, 1, 2, 1, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
64: 8, 8 ::[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

微妙に汚い。位相の調整をもうちょっとちゃんとやったほうがいいかも。

_shiro(Wed Dec 17 18:50:21 JST 2003)

 [0,1]の区間をC個に分割する値を、1/(N-1)ステップで量子化するって問題なんじゃないでしょうか。「均等」が誤差最小でいいのなら単純に格子点に近い方をとればいいし、もうすこしちゃんと散ってないといやならstocasticにサンプリングする感じで。  1とか2とかが混じってしかも重なってはいけないという場合は、誤差最小にするにはiterativeにやらないとだめかな。直接やる方法はあるかな。

_六(Wed Dec 17 19:18:12 JST 2003)

 ビットマップグラフィックの任意の2点に斜めの直線を引く時の処理を調べるべし。

_おだか(Thu Dec 18 02:25:42 JST 2003)

こんなリンク貼ったら誰かに怒られそうですが、質問への答え方。質問する方が無礼ならば、答える方も無礼でいい…というのだけは間違っていると思いたい。

_おだか(Thu Dec 18 03:13:40 JST 2003)

 自分が↑のようなこと書くのも(立場的に)間違っているとは思うんですけどね…。

_口が裂けても言えない(Thu Dec 18 03:43:29 JST 2003)

教育したり指導したりするのはかなり高度な技術だと思いますよ.後輩という"実験台"がいるうちに自分の指導力を高めておくのもお得かも. なぜか"先生"とよばれる人でも"指導"ができない人や生徒から学ばない人が多い・・・

_ささだ(Thu Dec 18 07:36:24 JST 2003)

 質問するほうが無礼ならば、答えなければいいだけな気がするが。

_ささだ(Thu Dec 18 07:41:22 JST 2003)

 はい。とても高度な技術だと思います。そうか、その練習台ってのは考えたこともなかったなぁ。私は教えるとき、どうも枝葉まで言及してしまって、容量オーバーにしてしまうらしい。でも、きちんとした理解のためには必要な知識だと思うんだけど。それを抑えて、相手がわかるように教える、か。やっぱり難しいなぁ。あと、「どうすればいいですか」って聞きにきた人に「〜〜やって」(たいていは面倒くさいこと)と言っても、ほとんどそのとうりしてきた人が居ない気がするのだけど、まぁこんなもんなのかなぁ。

_おだか(Thu Dec 18 15:06:08 JST 2003)

必ずしも面倒くさいことをやりたくないから聞きに行ってるわけではなくて、面倒くさいことを考えるための知識が足りないから聞きに行ってるつもりなんだけど、聞き方が悪いから勘違いされるのか…。

_16(Tue)

知らなかったんですが、FM Campanella。私のような同人音楽好きには嬉しすぎる。べるめいさんのファンなんで。いや、いい時代になったもんだ。

DrSchemeのウィンドウにフォーカスがあたると、マウス(トラックボールだけど)の反応速度が激しく落ちる謎現象。こないだやってたゲーム中でも同じようになったな。さて、どこがまずいんだろう。これは結構致命的に使いづらい。

エラーが出続け、なぜだ・・・と頭を掻き毟っていたところ、 make install してなくて、変更を反映してなかったことに気づく。なんかね、もうね。

Flash Crossword Puzzles for Studying English Vocabulary。うわ、全然解けない・・・。ダメダメだ。

きちんとこれが動くことをテストするのは簡単(原理的には)だろうけど、動いちゃいけないケースで動かないことをきちんと証明するのは大変だよなぁ。なんか方法論とかあるんだろうか。テストケースが膨大になりそうで。身近な言語処理系だと、そんな感じで非常に大変な気がする。そんなの無視ってことでいいのかな。

PDF、日本語フォントのメトリックスどうやって出してるんだろうとちょっといろいろ見てみたら、等幅決め打ちかぁ。TTFの場合は中を見ればいいのかもしれんが。Ryumin-Light の .afm とか、公開してくれればいいのに。あるかもしれないけど、みつけられなかった。

学内のネットワークが悲しくなるほど遅く、おうちプロキシ経由してるともっと悲しくなったので、プロキシ中止。しばらく悪いことはできません(普段からしてないって)。

大規模なネットワークの実験とかしてたりして。多分、どっかが壊れたんだろうな。

いつのまにか 30000 ヒットしてました。なんて暇人が多いありがたいことでしょうか。30000人目の人、何か下さい。リンク元を見ると、変わり映えがしない。


def +@
  p '+'
end

+

さすがに通らなかった ^^;

class A
  def +@
    print '+'
    self
  end
  def -@
    print '-'
    self
  end
end

a = A.new

++++++++++++++++++++++++++++++++++++++++++++++++++++++a; puts
------------------------------------------------------a; puts

結果。

++++++++++++++++++++++++++++++++++++++++++++++++++++++
------------------------------------------------------
t.rb:18: warning: useless use of +@ in void context
t.rb:19: warning: useless use of -@ in void context

もう一ひねり欲しい。

class TM
  def initialize(d = false)
    @s = 0
    @p = 0
    @m = Hash.new(0)
    @c = 0
    @d = d
  end

  def get
    @m[@p]
  end
  
  def set v
    @m[@p] = v
  end

  def up
    set get+1
  end
  def down
    set get-1
  end
  def zero
    set 0
  end
  
  def exec
    case @s
    when 0
      up
      puts get if @d
    when 1
      down
    when 2
      @p += 1
    when 3
      @p -= 1
    when 4
      print get.chr
    when 5
      zero
    else
      raise "unkown opecode #{@s} at #{@c}"
    end
    puts "exec #{@s} at #{@c}" if @d
    @s = 0
  end
  
  
  def +@
    @s+=1
    @c+=1
    self
  end
  
  def -@
    exec
    @c+=1
    self
  end
end


if $0 == __FILE__
######################################################


tm = TM.new #true

---------------------- tm
--------+++++-++++---------------------------------------------------- tm
---------------------------------------------------------------------- tm
--------------------+++++-++++---------------------------------------- tm
---------------------------------------------------------------------- tm
----------------------------------+++++-++++-------------------------- tm
---------------------------------------------------------------------- tm
----+++++-++++---------------------------------+++++-++++------------- tm
---------------------------------------------------------------------- tm
------------------------------------+++++-++++------------------------ tm
---------------------------------------------------------------------- tm
-------------------------------------------------------+++++-++++----- tm
---+++++-++++--------------------------------------------------------- tm
---------------------------------------------------------------------- tm
----------------+++++-++++-------------------------------------------- tm
---------------------------------------------------------------------- tm
-----------------------------------------+++++-++++------------------- tm
++++-++++------------------------------------------------------------- tm
---------------------------------------------------------------------+ tm
--------------+++++-++++---------------------------------------------- tm
-----------------------------------------+++++-++++------------------- tm
------------------+++++-++++------------------------------------------ tm
---------------------------------------------------------------------- tm
------------------------------+++++-++++------------------------------ tm
+--------------------------------------------------------------------- tm
-------------------------------------------------------------+++++-+++ tm
++++-++++------------------------------------------------------------- tm
--------------------------+++++-++++---------------------------------+ tm
-------------+++++-++++----------------------------------------------- tm
---------------------------------------------------------------------- tm
---------------------------------------------+++++-++++--------------- tm
-----+++++-++++------------------------------------------------------- tm
---------------------------------------------------------------------- tm
---------------------------+++++-++++--------------------------------- tm
---------------------------------------------------------------------- tm
-------------------------------------------------------+++++-++++----- tm
+++++-++++------------------------------------------------------------ tm

puts
######################################################
end

結果。

Just another Ruby Hacker

長いねぇ。

一応チューリングマシン等価じゃなくて全然ダメダメ。名前はねがぽじにしよう。おにいちゃんと呼んでも構いません。

もう、どっかにはありそうだが。

FAQ:

なぜ一行ごとに区切っちゃってるんですか?
大量の +- くっつけたらスタックオーバーフローったからです。
どうやって記述するの?
根性で。命令系はソースみりゃすぐわかります。
マルチスレッドには対応してるんですか?
してません。
まひるたんハァハァ
よそでやってください。

zero 要らなかったなぁ。右に移動すればよかった。

相変わらず、コーディング規約に思いっきり喧嘩売ってるな。

うーん、チューリングマシン自体を勘違いしてたなぁ。

ジャンプと入力要るかなぁ。ジャンプ・・・。うーん。ないとこまるか。なんか、まんまBrainFuck やなぁ。

命令列を含めて状態と考えるわけかな。うーん、よくわからんくなってきた。

ダメか。全然等価じゃないな。没。+- が入力にしかならんな。それだと面白くないしなぁ。やはり、慣れないことはするもんじゃない。

あれ、call/cc 使えばジャンプはできるか?

_shiro(Tue Dec 16 10:25:23 JST 2003)

 全部を網羅することは当然出来ないけれど、実装上のやばいところ(基本アルゴリズムでは無限ループに入るはずだから、特別なコードで対応しているとか)、それから運用上やばいところ(これを許したら危険な操作になっちゃう、とか)いくつか大事なポイントはあるので、それを押さえるようにするのが第一歩だと思います。

_6(Wed Dec 17 12:47:28 JST 2003)

 次は是非チューリングテストをパスするAI作りを

_15(Mon)

なんか、ちょっといじろうと思って、ちょっと簡単な変更をちょっと加えるだけで、4時間。才能無いのかもしれない。


某健康法を見る。うわ、コワ!


注文していた「Linuxから目覚めるぼくらのゲームボーイ! 」が品切れらしい。ハヤスギ。人気殺到なのか、部数自体少なかったのか。


なんとなく dmc の GCルーチン(Dで書いてあるらしい)を見てたら、Windows の GetThreadContext を利用していることを知った。うわー、こりゃ楽だわ。

Linuxはどうやってるんかなぁ・・・。

classのメンバのデフォルトのvisibility ってpublic なんか・・・。ダメっぽい。

わは、Linux版のGC見てたら、Windows版の処理しか入ってない。動かないよな、これ。 version (linux) を見落としてた。おお、やっぱりシグナル使うのか。うへ、アセンブラ直書きか・・・。なるほど、止まるときに、自分自身のスタックトップを格納しとくのか。まぁ、こうなるかな。で、全部止まるまではセマフォを見るってことで。

_shudo(Mon Dec 15 17:20:46 JST 2003)

全部止まるまではセマフォを見るってことで。

JavaのHotSpot VMは、それに加えて、各スレッドをGC safe pointという何箇所かの特定の箇所で止めるための工夫をしてます。

_ささだ(Mon Dec 15 18:23:36 JST 2003)

 pthread_cancel との兼ね合いでしたよね。たしか。

_ささだ(Mon Dec 15 20:17:58 JST 2003)

 あれ、キャンセルは関係なかったっけかな?

_14(Sun)

Visual C#.NETによるWebプログラミング入門―XML WebサービスとWebアプリケーション構築のノウハウ。知りませんでした。今度買ってもらおう。いまだにウェブアプリケーションってよくわからないんで。(いいのかそれで)


xyzzy ってジジーで定着なのかなぁ。次のとうひょうはこれで行くか。

いまさらな感がありますが、Magic word 'XYZZY'。外積かぁ。でも、発音は載っていない。


ふと気になって、Amazon.co.jp: 本: Rubyソースコード完全解説を見てみる。制作者がわがレビューかいてもいいんだろうか、とか。

この紹介記事を見て、はじめて関数、マクロリファレンスがあることを知った。ガーン。今回はがんばってちゃんと見るぞ。

次周は revolutions なんだろうか(やるのかそもそも)


shiroさんは HST なんだから、それをきちんと反映できるシステムにしとかないとあかんなぁ。>コメント どうやるんだろ。考えたことが無かった。うーん、無理か。


ヤンキーはヤンキーでヤンキーという言葉だと思っていたら、そうではなかったのか! 知らなかった。C-y だったのか。


def foo(*) か。なるほど。

class Proc
  def @+
    call
  end
end

+lambda{...}

とか考えてみたら、warning: useless use of +@ in void context。ruby-dev に、その辺の議論が色々。再定義されたら、とか考え出すと 判断しようがないので parserレベルで警告を出す実装に落ち着くのは当然な気もする。

なら、わかるようにしようじゃないか、ってことで def をやめて function と subroutine にしましょう!

ダメダメだ・・・。

でも、defun はあってもいいかも、とちょっと思ってしまった。

_shiro(Sun Dec 14 05:05:13 JST 2003)

 カリフォルニアからネバダに向かうハイウェイ15号線の途中、砂漠の真中に、xyzzyという通りへの分岐がある。見るたびに曲がって見たくなるのだが、とんでもないところに出たらいやなので我慢して通り過ぎる。

_arton(Sun Dec 14 12:47:08 JST 2003)

 おお、よろしくお願いします。でも想定読者は業務プログラマですから笹田さんのお役に立つかはわかりませんが。[hr] xyzzy = クレイジー?

_ささだ(Sun Dec 14 17:27:38 JST 2003)

 amazonでの評価、すごいですね。

_arton(Sun Dec 14 18:47:02 JST 2003)

 制作したのはあれだけ...その意味では確かに読者ですから良いのではないかと。(裏方仕事はされていますが)

_shiro(Sun Dec 14 18:54:13 JST 2003)

 発音はjargon fileに載ってたと思う>xyzzy

_ささだ(Sun Dec 14 19:09:26 JST 2003)

 /X-Y-Z-Z-Y/, /X-Y-ziz'ee/, /ziz'ee/, or /ik-ziz'ee/ ですか(xyzzy)。私は一番。

_なかだ(Sun Dec 14 21:04:09 JST 2003)

 二番目かなぁ。

_あひる(Mon Dec 15 00:58:47 JST 2003)

 えっくすわいぜっとぜっとわい 以外の読み方があったなんて on_

_(う)(Mon Dec 15 11:22:41 JST 2003)

 えくすわいじーじーわい。ってこっちの方がアンケートより盛り上がるってのも。

_13(Sat)

私のまわりで、たとえばあひる先生が D にはまっていらっしゃる。実際どうなんだろうな。Dも、処理系と非常に密接に絡んでて、他の DM以外が処理系を出すとはあんまり考えられないから、DMがこけたら終わりそうだけど。

Dの一番のいいところは契約だと思ってるんだけどどうなんだろう。Eiffle までギチギチにはやってないっぽいけど、

やはり、言語仕様よりもライブラリの豊富さとかってことなんかね。あと、日本語の情報量か。


pdf-writer を試す。日本語を出すには大変そうだなぁ。

pdf について、ちょっと調べてしまいました。PDFっていうか PSっていうか、フォント周りわけわかんねー。

pdf-writer は、簡単な構造化テキストを適当にレイアウトしてくれる機能を持っているようで。素晴らしい。日本語に対応できればなぁ・・・。

リファレンス、ダウンロードしても壊れてて見えない、とか言いやがる。

うーん、writer/*.rb を一個追加すれば日本語に対応できそうな予感。予感だけ。

ちょっと弄ったけど、Acrobat Reader が読んでくれない。やっぱり、ちゃんと理解しないとダメかも。


人の金で食う焼肉は旨いなぁ。ごちそうさまでした。

_あひる(Sat Dec 13 12:41:18 JST 2003)

 DMがこけないと信じて。ライブラリはコミュニティがもりもり書くと信じて

_shudo(Sat Dec 13 13:42:13 JST 2003)

 コードをたくさん書くことを「もりもり書く」って表現するの、なんかいいなあ。いただき。もりもりー

_fukumori(Sat Dec 13 14:36:28 JST 2003)

 私のまわりではD論にはまってらっしゃる方がいます。

_ささだ(Sat Dec 13 23:45:11 JST 2003)

 はまりたくないなぁ・・・。

_shudo(Sun Dec 14 02:52:51 JST 2003)

 「うぉぉぉ D論執筆は楽しいぜぇぇ!!!」っていう状態のことでしょうか?  それとも「うぉぉぉ ○○氏のD論面白すぎるぜぇぇ!!!!」っていう状態?>D論にはまる

_ささだ(Sun Dec 14 03:14:31 JST 2003)

 「うぉぉぉ、D論書けない〜、卒業できない〜」なはまり方だったら嫌だなぁ、とか。

_fukumori(Mon Dec 15 22:39:15 JST 2003)

 正確には、はまって「いた」かな。「『5日後にD論を提出せよ』なんて聞いてないよぉ」とかいうパターンです。某Mケソ方面。

_12(Fri)

最近私は Java とか C++ で、field_name_ みたいにしちゃってます。でも、やっぱりしっくりこない。m_field_name は全力で嫌なので、なんかいい方法ないかなぁ、とは思うんですが。field だけ CamelCase ってのもあるかとは思うんですが、CamelCase 嫌いなんですよね。method名は人に合わせて camelCase なんですが。

ローカル変数を lLocalVar みたいなのを見て頭がクラクラしました。そこでは fFieldVar だったな。

慣れれば幸せになれるのかなぁ。

フィールドは説明的、ローカル変数は3文字まで、ルールとかすると、、、きっと幸せにはなれないだろうなぁ。


旧聞ですが、ペットブームの陰に・・・4 〜 犬は113秒に1匹、猫は115秒に1匹が殺処分になっている! 〜 、中ほどの猫の写真。これは強烈でした。色々と考えてしまいました。

_11(Thu)

OOo 入れたら、.ppt を OOo で開くようになった。

入れ子たん追い上げ。

research と study ってどう使い分けるんだろう。

家のブレーカーが落ちた・・・。

_KM(Thu Dec 11 10:07:54 JST 2003)

 bit ,図書館はどうでした?

_ささだ(Thu Dec 11 12:05:01 JST 2003)

 図書館にはあるでしょう。

_n某(Thu Dec 11 16:45:09 JST 2003)

 範囲の広さと具体性

_青木(Thu Dec 11 19:34:29 JST 2003)

 偉そうにしたいときはresearchで謙虚に見せたいときはstudy

_ささだ(Sat Dec 13 03:31:43 JST 2003)

 謙虚なんで study になりました。

_10(Wed)

members.has_key?(...)

#=> nantoka.rb:1: English syntax error

こんなインタープリタは嫌だ。English grammar error かなぁ。


OSCAR というと早稲田の笠原先生 を思い出してしまう。


英語の参考書を買ってきました。さくっと読み終わりました。これでどうしろと。


bit を探していたら、ちょうどぴったり探している号が無い。どこの馬鹿がもってったんだ。

聞いてみたら、びっとがずらーっと並んでいるところを教えてもらって、よし、と思ったら BIT だった・・・。

_新潟のS(Thu Dec 11 07:33:38 JST 2003)

 お手数をかけて恐縮です。

_ささだ(Thu Dec 11 09:30:53 JST 2003)

 いや、Prolog のは見つけたんで大丈夫です。

_9(Tue)

髪の毛がとてもとても薄くなった

夢を見た。怖かった。


【Internet Week 2003レポート】OpenSource Way 2003(2) - 小倉氏講演 GPLと日本法の整合性。結局、結論は出ていません、って話なのかなぁ。はっきりして欲しい。


いいなぁ、評価DQN。

ナンチャラリーグってなんですか? ちょっとぐぐったんですがわかりませんでした...。

環境とかクロージャとか色々考えてて、事実ちょっと書いたりしてたんだけど、自信がなくて消したりしてたんですが。実行コンテキストって、execution contexts か。

たしかに、contextだけだといろいろ曖昧かも。


OOo とかは、pdf出力をどうやってんだろう。

デブサミ、を、デブミサ、と空目。怖いものを想像してしまった。

Under Translation of ECMA-262 3rd Edition。今度読んどこう。


Icon のマニュアル分厚いな・・・。


今月の RHG読書会、12/27 という押し迫った時期なのですが、もし飲み会でもこれるって方が居たら来ませんか。東京近辺の方。

と振ってみる。


机の上を片付けてしまった。久々にちょびっと広い。論文の山が出てきた。気が思い重い。

scheme の論文に数学的な証明(?)が載ってて引く。こういうのがスラスラ読めたらなぁ。

_n(Tue Dec 09 19:55:14 JST 2003)

 ぼうずにすればなーーーーーーーにもこわくなぁい。

_shudo(Tue Dec 09 20:01:35 JST 2003)

 そういう夢を見て、泣いて、起きたら本当に涙流してた。

_ささだ(Tue Dec 09 20:29:41 JST 2003)

 すみません、ちょっと笑ってしまった。

_8(Mon)

もう何年もほうっておいた FFX を再開。埃を被っていたPS2で。FF9 もまだ終わっていない(ラスボスが倒せていない)のだが、さっさとかたずけないと・・・。

やっていると、結構はまる。もう一度やり直したいなぁ。

全然しらなかったんだけど、Fate/stay night、通販受け付け終了かぁ。1/30なのに、さすがの人気。大番町も今年中だったのか。前作やってなかったんだけど。

最近、全然しらんなぁ。


まぁ、インタプリタ(として処理系が実装されてるのが一般的じゃないかなぁ、と想像しちゃうような)言語、ってことでしょうかね。


識別子たん一番人気。ハァハァしてんなよ!(しねーよ)

_7(Sun)

なぜか LEDA を使うことになったので、VC で使うためのメモ。

ライブラリ関係を、Makefile.ms あたりからひっぱってくる。-DWINMAIN を忘れずに。エントリポイントを main にしただけだと失敗。で、デモから graphwin/gw.c をコピペしたらさくっと動作。お〜、これは簡単。

The LEDA User Manual Version 4.2.1。さすがに見ないと作れない。

C++ の作り方を激しく忘れている。コンストラクタの使い方も忘れていた。やれやれ・・・。

GraphWin gw な gw 経由で edge の属性を変えるとアクセスバイオレーションだそうで・・・。なぜだ。何もできないじゃないか、これじゃ。

原因がわかった。GraphWin に属する G に対して edge を追加して、edge属性の変更を gw にやっていたからだ。やっぱり関連がいっぱいあるとわかりずれーな。


Javaをインタプリタ言語というのは抵抗があるなぁ。私が修行不足なだけかもしれない。


iff って誤植かなぁ、と思ってたら if and only if って意味だったのか。知らんかった。

とりあえず完成っと。プログラム作るのは簡単だが、あとはパワポだよな・・・。


tatteさんが日記で紹介していた(いや、ruby-optimizerで紹介してた)Rubyを使ってベンチマークとればいいかな。うん。


「へーきっ」

うわ、むかつく。こいつらすげーむかつく。

そういえばまだ cc 終わってなかったな・・・。さっさと終わらせないと。


あー、「こんなエラーが出ました。わかりません」って言われてエラー個所のPC見せられたってわかるわけねーだろーが! なんで質問の仕方がいまだに身につかないのかな・・・。

_shudo(Sun Dec 07 20:52:42 JST 2003)

 そもそも、インタプリタ言語とは何か?「インタプリタでしか実装できない言語」?(そんな言語はなさそう)「通常はインタプリタとして実装される言語」?「インタプリタとしての実装が最も適当な言語」?「最初の実装がインタプリタだった言語」???そんなわけで、もともと「インタプリタ言語」という言葉自体がかなり怪しい気がしてます。

_fukumori(Sun Dec 07 21:09:30 JST 2003)

 googleでの検索にて、「インタプリタ言語」と入れるところ、「インタプリンタ言語」と打ち間違えてしまいました。47件ヒットした…

_fukumori(Sun Dec 07 21:13:33 JST 2003)

調子に乗って今度は「インタプリンタ」だけで検索してみたら、情報処理学会の研究報告が検索結果のトップに出てきました。あれれ…

ファームウェアを利用したAPLインタプリンタの構成法および評価

LISPコンパイラとインタプリンタの処理速度の理論的比較

_mput(Sun Dec 07 23:11:49 JST 2003)

 「Java の VM だってバイトコードインタプリタやん。 Python とどこがちがうねん」という意味で「インタプリタ言語」と表現しているのではないでしょうか。私はそう受け取りました。

_maeda(Mon Dec 08 10:50:43 JST 2003)

 PythonやRubyやPerlをインタプリタ言語と呼ぶのも変な話だと思う。そりゃ言語じゃなくて現在の実装だよね。「インタプリタ言語」って、「手続き的アルゴリズム」とか「CD用交響曲」と同じくらい変。

_KM(Mon Dec 08 12:28:18 JST 2003)

 でも,“GOTO 50”で,とにかく行番号 50 から実行できちゃったりするような言語はやっぱりインタプリタ言語と呼びたい.小一時間呼びたい.

_ささだ(Mon Dec 08 14:08:37 JST 2003)

 RubyインタプリタであってインタプリタRubyじゃない、とか。

_6(Sat)

どれくらいメソッド名が被っているか、数えてみた。

mstat = lambda{
  mnames = Hash.new(0)
  cnum   = 0
  mnum   = 0
  ObjectSpace.each_object{|obj|
    if obj.is_a? Module
      (obj.public_instance_methods(false) +
       obj.private_instance_methods(false) +
       obj.protected_instance_methods(false)).each{|e|
         mnames[e]+=1
      }
      
      cnum+=1 if obj.class == Class
      mnum+=1 if obj.class == Module
    end
  }
  puts "#{cnum} classes and #{mnum} modules"
  mnames.map{|k,v| [v,k]}.sort.reverse_each{|v,k|
    puts "%-30s%4d" % [k,v]
  }
}
mstat.call  # 初期状態

$LOAD_PATH.each{|path|
  if path != '.'
    Dir.glob(path + '/*.rb').each{|f|
      p f
      next if /debug.rb$/i    =~ f
      next if /profiler.rb$/i =~ f
      next if /profile.rb$/i  =~ f
      
      begin
        require f
      rescue Exception
        p "fail: #{f}"
      end
    }
  end
}

mstat.call  # いろいろと読み込んでみたあと。

初期状態の実行結果。2以上の定義があるもの。

134 classes and 16 modules
to_s                            23
initialize                      20
inspect                         18
==                              16
initialize_copy                 12
[]                              11
eql?                            10
size                             9
hash                             9
<=>                              9
to_i                             8
to_a                             8
each                             7
&                                7
|                                6
to_f                             6
select                           6
include?                         6
+                                6
zero?                            5
to_int                           5
length                           5
clone                            5
^                                5
[]=                              5
<<                               5
-                                5
*                                5
~                                4
values_at                        4
truncate                         4
modulo                           4
divmod                           4
abs                              4
>=                               4
>                                4
===                              4
<=                               4
<                                4
-@                               4
%                                4
to_sym                           3
sort                             3
round                            3
replace                          3
reject                           3
quo                              3
pid                              3
member?                          3
index                            3
floor                            3
empty?                           3
div                              3
delete                           3
ctime                            3
coerce                           3
ceil                             3
call                             3
arity                            3
>>                               3
=~                               3
/                                3
**                               3
zip                              2
writable_real?                   2
writable?                        2
values                           2
upto                             2
uid                              2
trap                             2
to_str                           2
to_proc                          2
times                            2
tell                             2
symlink?                         2
switch                           2
succ                             2
sub!                             2
sub                              2
sticky?                          2
step                             2
status                           2
split                            2
socket?                          2
slice!                           2
slice                            2
size?                            2
sid_available?                   2
shift                            2
setuid?                          2
setgid?                          2
seek                             2
scan                             2
rindex                           2
rid                              2
rewind                           2
reverse!                         2
reverse                          2
remainder                        2
reject!                          2
readlines                        2
readline                         2
readable_real?                   2
readable?                        2
read                             2
re_exchangeable?                 2
re_exchange                      2
raise                            2
puts                             2
putc                             2
printf                           2
print                            2
pos=                             2
pos                              2
pipe?                            2
path                             2
owned?                           2
nil?                             2
next                             2
name                             2
mtime                            2
min                              2
match                            2
map                              2
load                             2
list                             2
last                             2
kill                             2
keys                             2
key?                             2
join                             2
integer?                         2
insert                           2
indices                          2
indexes                          2
id2name                          2
gsub!                            2
gsub                             2
grpowned?                        2
grant_privilege                  2
gid                              2
gets                             2
getc                             2
garbage_collect                  2
frozen?                          2
first                            2
file?                            2
fetch                            2
exit                             2
executable_real?                 2
executable?                      2
end                              2
eid=                             2
eid                              2
each_pair                        2
each_line                        2
each_byte                        2
dump                             2
directory?                       2
delete_if                        2
concat                           2
collect                          2
close                            2
clear                            2
chop!                            2
chop                             2
chomp!                           2
chomp                            2
chardev?                         2
change_privilege                 2
blockdev?                        2
binding                          2
begin                            2
autoload?                        2
autoload                         2
atime                            2

一個しか定義がないのが400個ほど。

やっぱり、名前がかぶってるメソッド数はあんまり多くない。

たくさん読んでみたら abort... うーん。

lib/1.8 以下をどかして再インストールしたら、通った。なんか変なもん混じってたかな。

2個以上定義がある関数に絞って。

627 classes and 123 modules
initialize                     219
to_s                            61
to_i                            50
reason_phrase                   42
inspect                         41
code                            41
==                              37
[]                              34
each                            25
hash                            23
to_yaml                         22
size                            22
eql?                            21
<<                              19
is_complex_yaml?                18
to_a                            17
name                            17
close                           17
+                               17
delete                          15
initialize_copy                 14
<=>                             14
-                               14
encode_rdata                    12
[]=                             12
terminate                       11
run                             11
pretty_print_cycle              11
length                          11
Raise                           11
Fail                            11
*                               11
|                               10
value                           10
scan                            10
flush                           10
add                             10
&                               10
zero?                            9
truncate                         9
path                             9
open                             9
match                            9
include?                         9
clone                            9
chmod                            9
_dump                            9
select                           8
rmdir                            8
read                             8
pretty_print                     8
mkdir                            8
join                             8
gets                             8
empty?                           8
ctime                            8
coerce                           8
/                                8
value=                           7
to_f                             7
symlink                          7
rm_f                             7
rm                               7
mv                               7
mkpath                           7
log                              7
link                             7
install                          7
cp                               7
===                              7
**                               7
writable_real?                   6
writable?                        6
utime                            6
to_yaml_type                     6
symlink?                         6
sticky?                          6
start                            6
split                            6
socket?                          6
size?                            6
setuid?                          6
setgid?                          6
send                             6
safe_unlink                      6
readable_real?                   6
readable?                        6
pipe?                            6
parse                            6
owned?                           6
options                          6
mtime                            6
move                             6
makedirs                         6
load                             6
grpowned?                        6
file?                            6
exist?                           6
executable_real?                 6
executable?                      6
do_GET                           6
directory?                       6
copy                             6
chardev?                         6
blockdev?                        6
atime                            6
accept                           6
abs                              6
^                                6
>>                               6
%                                6
~                                5
write                            5
unlink                           5
type_id=                         5
type_id                          5
to_int                           5
status                           5
stat                             5
shift                            5
seek                             5
search                           5
reject                           5
print                            5
pos                              5
name=                            5
message                          5
map                              5
lstat                            5
list                             5
has_key?                         5
ftype                            5
format                           5
error                            5
eof?                             5
divmod                           5
concat                           5
clear                            5
chown                            5
chdir                            5
address                          5
>                                5
=~                               5
<                                5
width                            4
warn                             4
values_at                        4
uri                              4
update                           4
touch                            4
to_str                           4
test                             4
system                           4
succ                             4
string                           4
rmtree                           4
rewind                           4
replace                          4
rename                           4
remove                           4
reload                           4
rehash                           4
readlink                         4
readlines                        4
readline                         4
puts                             4
push                             4
printf                           4
pos=                             4
pid                              4
output                           4
out                              4
options=                         4
notify                           4
next                             4
modulo                           4
min                              4
merge                            4
member?                          4
ln                               4
kill                             4
keys                             4
input=                           4
info                             4
index                            4
indent                           4
host                             4
header                           4
group                            4
getc                             4
foreach                          4
find                             4
exit                             4
exists?                          4
error?                           4
element_init                     4
echo                             4
each_line                        4
domain=                          4
domain                           4
doctype                          4
do_POST                          4
dirname                          4
debug?                           4
debug                            4
data                             4
config                           4
collect                          4
cmp                              4
cd                               4
call                             4
bind                             4
basename                         4
append                           4
alive?                           4
>=                               4
<=                               4
-@                               4
zone                             3
wait                             3
verbose=                         3
verbose                          3
upto                             3
ungetc                           3
uid                              3
transact                         3
to_sym                           3
to_proc                          3
to_obj                           3
to_id                            3
to_ary                           3
thread                           3
tell                             3
tee                              3
syscopy                          3
synchronize                      3
summarize                        3
strftime                         3
step                             3
sort                             3
shutdown                         3
set_passwd                       3
service                          3
sender                           3
sec                              3
scanf                            3
round                            3
rm_rf                            3
rm_r                             3
reverse                          3
request_uri                      3
request_method                   3
reject!                          3
real                             3
quote                            3
quo                              3
putc                             3
prompt                           3
port                             3
pop                              3
peeraddr                         3
path=                            3
parse_query                      3
offset                           3
numerator                        3
mkdir_p                          3
method_missing                   3
logger                           3
ln_sf                            3
ln_s                             3
listen                           3
level=                           3
level                            3
lazy_initialize                  3
last                             3
key?                             3
io                               3
info?                            3
hour                             3
glob                             3
gid                              3
getnames                         3
getname                          3
getaddresses                     3
getaddress                       3
get_row                          3
get_passwd                       3
floor                            3
first?                           3
first                            3
finish_all_jobs                  3
find_system_command              3
filename                         3
fetch                            3
expand_path                      3
exception                        3
evaluate                         3
escape                           3
enq                              3
each_name                        3
each_byte                        3
each_address                     3
dup                              3
dump                             3
do_OPTIONS                       3
div                              3
deq                              3
denominator                      3
delete_if                        3
cp_r                             3
cookies                          3
complete                         3
compile                          3
compare                          3
close_write                      3
close_read                       3
check_point                      3
ceil                             3
cat                              3
body                             3
binding                          3
arity                            3
arg                              3
add_failure                      3
add_error                        3
add_assertion                    3
absolute?                        3
abort                            3
__getobj__                       3
zip                              2
year                             2
yday                             2
wday                             2
warn?                            2
wait?                            2
version=                         2
version                          2
verbose?                         2
values                           2
userdb                           2
user=                            2
user                             2
unlock                           2
unknown                          2
unescape                         2
uid=                             2
tty?                             2
try_lock                         2
trap                             2
transpose                        2
tr                               2
tosjis                           2
tojis                            2
toeuc                            2
to_r                             2
to_name                          2
times                            2
timeout                          2
time                             2
text                             2
test_name                        2
syswrite                         2
sysread                          2
sysaccept                        2
sync=                            2
sync                             2
switch                           2
sub!                             2
sub                              2
string=                          2
stopped?                         2
stop_service                     2
stop                             2
stime                            2
status=                          2
stag=                            2
stag                             2
slice!                           2
slice                            2
skip                             2
singleton_method_added           2
single_character_display         2
simple                           2
signal                           2
sid_available?                   2
short_display                    2
short                            2
setup                            2
set_error                        2
send_request                     2
send_reply                       2
secure=                          2
secure                           2
sec_fraction                     2
script_name                      2
rpower                           2
root?                            2
rindex                           2
rid                              2
reverse!                         2
result                           2
reset                            2
require                          2
report                           2
reopen                           2
remainder                        2
relative?                        2
recvfrom                         2
recv_request                     2
recv_reply                       2
recv                             2
reason                           2
realm                            2
readchar                         2
readable_atfer_eof?              2
re_exchangeable?                 2
re_exchange                      2
rdiv                             2
raise                            2
query_string                     2
query                            2
pwd                              2
prune                            2
preproc                          2
pre_match                        2
pp                               2
postproc                         2
post_match                       2
polar                            2
permute!                         2
peek                             2
pattern                          2
path_info                        2
passwd                           2
passed?                          2
parse!                           2
parent                           2
original_resolv_send             2
order!                           2
on                               2
of                               2
num_waiting                      2
normalize                        2
nil?                             2
newof                            2
new_offset                       2
new                              2
nest                             2
month                            2
mon                              2
minor                            2
merge!                           2
members                          2
mday                             2
max                              2
matched                          2
map!                             2
main                             2
long_display                     2
long                             2
locked?                          2
lock                             2
lineno=                          2
lineno                           2
line_no                          2
keep_alive?                      2
keep_alive                       2
kconv                            2
jobs                             2
item                             2
isatty                           2
irb                              2
integer?                         2
insert                           2
inherited                        2
indices                          2
indexes                          2
image                            2
imag                             2
ignore_case?                     2
id2name                          2
id                               2
http_version                     2
hierarchical?                    2
hexdigest                        2
help                             2
guess                            2
gsub!                            2
gsub                             2
grant_privilege                  2
gid=                             2
getwd                            2
get                              2
garbage_collect                  2
fsync                            2
frozen?                          2
front                            2
flatten!                         2
flatten                          2
filter_backtrace                 2
fileno                           2
filename=                        2
file_name                        2
fcntl                            2
fatal?                           2
fatal                            2
fail                             2
expires=                         2
expires                          2
eof                              2
entries                          2
end?                             2
end                              2
encode                           2
emit                             2
eid=                             2
eid                              2
each_value                       2
each_resource                    2
each_pair                        2
each_key                         2
downto                           2
downcase                         2
direct_open                      2
dir                              2
digest                           2
dev                              2
delete_passwd                    2
default=                         2
default                          2
def_delegators                   2
def_delegator                    2
debug=                           2
day                              2
cutime                           2
cstime                           2
create                           2
count                            2
convert                          2
content_type                     2
connect                          2
conjugate                        2
conj                             2
collect!                         2
closed?                          2
close_on_terminate               2
class                            2
chop!                            2
chop                             2
chomp!                           2
chomp                            2
children                         2
check_uri                        2
check_scheme                     2
check_opaque                     2
check_insecure_method            2
check                            2
char_no                          2
change_privilege                 2
challenge                        2
call_callback                    2
broadcast                        2
breakable                        2
block_scanf                      2
binmode                          2
begin                            2
base                             2
autoload?                        2
autoload                         2
authenticate                     2
auth_type                        2
attributes                       2
at                               2
assert_send                      2
assert_respond_to                2
assert_not_nil                   2
assert_match                     2
asctime                          2
args                             2
angle                            2
addr                             2
active?                          2
abbrev                           2
String                           2

1 個しかないのが、1500個ほど。

いや、言いたいのは要するにシグネチャに対して、大して実行の選択肢はないってことで。それを確かめたかったというか。場所のローカリティがある程度高いことを確認したかったというか。

しかし、知らないメソッドばかりだ。


寝坊したので今日はお休み・・・。ごめんなさい。まぁ、飲み会は行かないつもりだったからいいか。


遠隔読書会。

問題 3.17
(define (count-pairs x)
        (let ((memo '()))
          (define (count x)
                  (cond ((not (pair? x)) 0)
                        ((memq x memo) 0)
                        (else
                         (set! memo (cons x memo))
                         (+ (count (car x))
                            (count (cdr x))
                            1))))
          (count x)))

(define y (let* ((y1 (cons 'b '()))
                 (y2 (cons 'a y1)))
            (cons y2 y1)))
(define z (let* ((z1 (cons 'a '()))
                 (z2 (cons z1 z1)))
            (cons z2 z2)))

(count-pairs y)
(count-pairs z)
;; 3.18
(define cl1
        (let* ((x '(1 '())))
          (set-cdr! x x)
          x))

(define y (let* ((y1 (cons 'b '()))
                 (y2 (cons 'a y1)))
            (cons y2 y1)))
(define z (let* ((z1 (cons 'a '()))
                 (z2 (cons z1 z1)))
            (cons z2 z2)))

(define (is-cl? lst)
        (define (iter lst passed)
                (if (pair? lst)
                    (if (memq lst passed) #t
                      (or (iter (car lst) (cons lst passed))
                          (iter (cdr lst) (cons lst passed))
                          #f))
                  #f))
        
        (iter lst '()))

(is-cl? y)
(is-cl? z)
(is-cl? cl1)

で、アイデア的には、すでにだれかがやってるとは思うのだけど、従来クラスなどに属していたディスパッチテーブルを、逆にシグネチャに持たせたらどうかな、って。結局総称関数ってことなんだけど。一般的にこれはどうなんだろうなぁ。


S屋鋪氏に薦められた猟奇的な彼女を見る。おお、こう落としたか。韓国な生活ってこんな感じなんですかね。


TVで宣伝していた「ファインディング・ニモ」。「ファイティング・ニモ」じゃないんだな。

と思ってぐぐったら結構ひっかかる。ファインディング・ニモDVD・CD・TVゲーム・ソフトウエア 好評販売中♪のDVDタイトルとか。ファイティング・ニモ カレンダー「ファイティング・ニモ スタンド」CL-334 なんかはタイトルからしてそうなってるな。


C#、コンパイルするのに generics の解決を実行時に行う必要があるんだろうか・・・。うーん。考えてること違うのかなぁ。

C++ はコード膨張がまずいってかいてあるけど、別にいいじゃん。今の世でそんなのきにするこっちゃないと思うんだがなぁ。制約が指定できなくたって、コンパイル時にテンプレートから特殊化されたやつが出力されるときにエラー吐けると思うけど。少なくともランタイムエラーじゃないんじゃ。試したことないからわからんけど。

Sather を調べてていて Sather Towerというのを知る。そうか、あれか。ちょうど休みの日だったらしく、昇れなかったんだよね。残念。しかし、日本語の資料はないっぽいか・・・。

CLOS in Context。参考になる。

CLOS のような処理系の最適化手法って、どっかに論文ないかなぁ。


某スレを見ていて笑った。Functional Ruby とか Typed Ruby とかつくるんかな。

_5(Fri)

tc-tutorial すでに訳があったのか・・・。俺なぞが下手な日本語書く必要なかった。

どうでもいいけど、元は消えたんじゃなくて移動したんです。移動先は・・・、学校に行かないと確認できない。本人に聞いたんだけど。

Xi の方かぁ。って、この方は以前あれでお世話になった方じゃないか。もっとよく調べろよ>自分 へぇ、なるほど。

ああ、なんかダメダメ。テストはまだ半分とおらず。


どうも、私は history を書くのが苦手。気が付いたら何をどう変更したかわからんくなってる。どうしたもんかなぁ。気が付くといろいろ変わっちゃってんだよな。


前にも書いた覚えがあるんだけど、また見て笑ってしまったので再掲。

/**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."

	- From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */

f2c.h の先頭部分より。


ko1@.. 宛てのメールは学校に来ないと読めません。いや、読めるんだけど読みません。なので、お返事が遅れてしまう場合があります。すみません。

百通超のメールを家で読みたくないだけなんですけど。でも、そろそろこれもやばいなぁ。


あぁ、流量多いなぁ。やっぱ血迷ったかなぁ。


Tiny CLOS Tutorial。移動先。


Sample: Index of Samples of MATHS Documentation さすがに ruby は無いな(笑)。

MLの仕様書、日本語ではない、のかな。 fun cmp x y = x < y で、 cmp "str1" "str2" ができないのは変な気がする。


rubyプラグイン。php で ruby だそうです。


貨物列車を見ると、いつも飛び乗ってみたくなる。一度やってみたいなぁ。

_なかだ(Fri Dec 05 20:10:56 JST 2003)

 流血多い?(空目)

_fukumori(Fri Dec 05 23:00:47 JST 2003)

型にうるさいML様のごきげんをとるには

fun cmp (x:string) y = x < y;

としなければならないワケであります。今回みたいに不等号くらいしか手がかりがないと、ML様は「この引数、型がよくわからんな、とりあえずintにしとくか」と勝手な推論をしてしまう次第。もう少し複雑な内容の関数になると、ML様の推理、じゃない、推論もズバズバ決まるようになるのですが…

_ささだ(Fri Dec 05 23:47:18 JST 2003)

 そのまま 'a -> 'a -> bool にしとけばいいのになぁ、とか思ったのですが。

_fukumori(Sat Dec 06 07:02:05 JST 2003)

言われてみればMLは多態関数(polymorphic function)が使えるハズなのに…と思い直して調べてみました。

『("<"や">"など(大小の)比較演算子については)引数の型は一種類に制限されるだけでなく、多くの場合、その型を指定しておく必要がある』(Elements of ML Programming p.145,"A Limitation on the Use of Polymorphic Functions"からのサボり訳)

だそうです。ちなみに

fun eq x y = (x = y); とか

fun neq x y = x <> y;

ならば、確かに "a -> "a -> bool になりますね…

_kjana(Sat Dec 06 14:26:26 JST 2003)

Haskell だと cmp x y = x > y の型は Ord a => a -> a -> Bool になりますね。 Ord a は順序関係が定義された型クラス Ord のインスタンスである型 a、だった かな。

_kjana(Sat Dec 06 14:28:18 JST 2003)

 だから cmp 1 2 も cmp "foo" "bar" も可能であるって書きたかったんだった。

_4(Thu)

_| ̄|○

一週間間違えた・・・。なんのために授業サボって新宿行ってんだ俺・・・。


70590 FORMAT (27X,I4,3H **,1(27X,I4,3H '',(I4,3H (()))                  09410403

なんじゃこりゃ・・・。

Fortranプログラムを見て、なるほど、ハンガリアン記法はいいかも、とか思ってしまった。

_み(Thu Dec 04 23:46:07 JST 2003)

 業務連絡です:shudoさん、maedaさん、プ*シン行きましょうよぉ〜。幹事会でも未登録なんでぇ。今回はゆがわらですよお〜。

_maeda(Fri Dec 05 08:03:24 JST 2003)

 あー,申し込み忘れてたけど,行きます.kiyamaくんはどうかな?

_shudo(Fri Dec 05 11:34:43 JST 2003)

 U田先生が「プ**ンは研究費で行くものじゃなくて、自分の財布で行くもの」とおっしゃってたのを思い出します。うーーん

_み(Fri Dec 05 14:32:19 JST 2003)

 どうもスマソです。もしお誘いメールがいいんちょうから行ってたら重ねてスミマセン。kiyamaさんは未です。ぜひご一緒に spa!

_ささだ(Fri Dec 05 17:14:53 JST 2003)

 SPA

_み(Fri Dec 05 17:29:55 JST 2003)

 うーん、SPAと書くとどっかの学会のになっちゃうから、小文字で歌えspa ←一般名詞ね…

_3(Wed)

(set-keyboard-coding-system 'euc-jp) のようでした。mic-paren で下線がつくようになりました。

いつもありがとうございます。


すみません、テストコード78年製じゃなかった。97年っぽい。ファイルの日付が、だからオリジナルはもっと前かもしれないけど。

で、テストなんですが、30% くらいでしたね。

・・・成功が。ガビーン、ダメスギ。

あれ、やっぱり copyright 1978 って書いてあるな。


100年いつも動いてた大きな時計でも私には凄いと思うのですよ。

古時計といえば、もえかんの続編というか、ちゃんとしたやつ出るのかな。コンシューマかな。卑怯だよなぁ。謎ばっかりで終わったし。雰囲気を楽しむもの、なのか。影のほうが良かったのになぁ。終のほうに寄ったばかりにあんなんになっちゃって・・・。


あぁ、じゃヴぁじゃヴぁ・・・。

学校に遅くまでいると、家で何もやる気力がなくなるな。7時には帰るようにしてみようか。

心が寒いのでなんとなく冬仕様。


http://slashdot.jp/comments.pl?sid=138276&cid=446707 より。

オープンソース陣営の布教活動で教化された経済産業省から ドコモにLinuxを採用するよう指導があったためです。

なんだかなぁ・・・。マジだったら、あほだ。


順当に「ぬる」ばっかり。次はなににしよう・・・。

いいなぁ、Modern Compiler Impl in XX。

_2(Tue)

今日やったこと。

  • screen の使い方をちょびっとかじった
  • emacs の使い方をちょびっとかじった
    • 色のつけ方を知った
    • キーバインドをちょっと変えた。C-z は undo じゃないと。
    • paren で (show-paren-mode t) 。でも、囲まれてる文字を全部 bold にしてほしい。
    • いろんなところから
  • putty の使い方をちょっとかじった
    • ウィンドウ広げたら、端末上ソフトのウィンドウも広がるんだ

putty で emacs に、Win上で変換した日本語を入力しようとすると、コマンドと間違われてしまう。はて。


12月になったら暇になる、なんて思ったのはなんかの妄想だったんかなぁ。

久々の重労働で腰が痛い・・・。

terminal(putty) での emacs、マウスが使えないというの以外は使い心地いいなぁ。ちょっと動作遅いけど。


最近、テストテストって感じでテストが大流行ですが、Fortran Compilerをテストするためのテストツールがあって、書かれた年を見たら 78年。俺が生まれる前だった。コメントに「このカードが〜」とか書かれているのがすげぇ。そうだよなぁ、F77 だもんなぁ。

とりあえず、その200個のテストを走らせて、帰る。朝には全部終わってるだろう。


手前味噌ですが、Tiny CLOS 入門 - Tiny CLOS Tutorial。CLOS じゃないけど。しかもまだ翻訳終わっていない。

_1(Mon)

玉突き事故ネタは面白かったですよ。


ふと、47氏は653番目に投稿していたら653氏と呼ばれていたか、考えてみる。


大変どうでもいいことだが、沙羅はHackerってより数学者じゃないか? あと忍者属性ってのはいかがなものか。


hacker
someone who secretly uses or changes the information in other people's computer systems.

LDOCE4 より。うーん。


今回の絵は Yahoo 素材から。

論文提出のための郵送代が無い。情けなさ過ぎる。銀行いかな。

なぜか学校の夜中のネットワークが細いような気がする。なぜだろう。

EBStudio って変換ツールだったのか。Viewer だと思ってた。pdic で何も考えずに見れるんだな。EPWING形式。

うぐ、混ざるとみずらすぎ。しかも絵のダンプコードが出てくる。どうしたもんかな。

chm のリンク切り。

とりあえず論文はこれでおしまい。freeze。

ああ、風呂でもはいってのんびりしたい。温泉行きたい。って、こないだ行ったか。でも、また行きたい。昨日温泉番組見たからかな。いいなぁ、まつもとさん。

十分寝てる(隔日)から、こんなこと言ってはバチがあたるか。

某相談員はいつも居ない、という文句をどこかで聞いたんだけど、相談員をやっていても誰も何も聞いてこない。「聞きたいときに居ない」法則は厳然としてあるんだろうが、ならば居なくても同じ?


スクープ:shudoさんは超能力者だった!


chm追加(切ってるけど)。

たとえば、gooleのマスコットきゃらでぐぐるたん、みたいなのを作ったとして、やっぱりアメコミ風なキャラなんだろうか。

誰か書いてくれませんかね。ググルタンだと、なんか怪獣みたいだな。

ぐぐるたん
約16件
ググルタン
約24件

居るもんですね。


Coins提言 - Coins みずらいです。

いや、見づらいとか、それ以前にシンボル管理の部分とか、結構アレで・・・。作ればわかるけど、あれはマズイ。正直。クラスの階層構造とか、フィールドの使い方とか、その辺。

未踏で COINS リファクタリングとかで通らないかな。通っても作業量は膨大で、合わないだろうな。

って、渡辺先生のところの人なのか ^^; 。

// 自分はろくに綺麗なもの書けないんですが。やっぱり大規模なものをきちんと書くのは大変、とかあたりまえのことを。


ary = (1..10).to_a
ary.reverse_each{|e|
  puts "ary  : #{ary.join(",")}"
  puts "elem:  #{e}"
  puts "shift: #{ary.shift}"
}

ary = (1..10).to_a
ary.each{|e|
  puts "ary  : #{ary.join(",")}"
  puts "elem : #{e}"
  puts "unshift: #{ary.unshift(e).join(",")}"
}
ary = (1..30).to_a
ary.reverse_each{|e|
  puts "ary    : #{ary.join(",")}"
  puts "elem   : #{e}"
  puts "unshift: #{ary.unshift(e).join(",")}"
}
p ary # kore

さて、これはどんな配列?

(use srfi-1)

(define ary (iota 30 1))
(define (1- x) (- x 1))

(define (iter ary idx)
        (if (> idx 0)
            (iter (cons (list-ref ary (1- idx)) ary)
                  (1- idx))
          ary))

(display (iter ary
               (length ary)))

gaucheで。

どんな、っていわれても、こんな、としか言えないよな。

逆順に、2^n をどんどん引いていったような値ができるのか。しかし、1- ってセンス悪すぎ。


西暦「2007年問題」について(/.j)。よく知らなかったけど、なら、20年毎に勘定系システムは総とっかえせにゃならん、ってこと?


99円ショップでキムチを買った。化学調味料の味しかしない・・・。というか、2ヶ月もたないキムチってどうよ。(賞味期限は来年1/7) 青木さんへのプレゼントのために、今から買って用意しとこうかなぁ。

_mput(Mon Dec 01 21:44:40 JST 2003)

 伊勢神宮は20年ですが、25年の神社もあるし、30年の神社もあります。ポイントは年数じゃなくて、「フルスクラッチすることでメンテナンスしつつノウハウを伝承する」ってところです。だいたい2000年問題でも明らかになったように、プログラムって何十年も動かすように設計されてないことがあるので、長期的に見たらずーっとメンテナンスしていくよりも適宜再設計したほうがTCOは安いかもしれません。

_ささだ(Mon Dec 01 22:16:45 JST 2003)

 さすがに年数に拘るところじゃないことはわかってたかも。何百年動くようなプログラムを作ってみたいもんだなぁ。

_mput(Mon Dec 01 22:51:52 JST 2003)

 神社でも残ってるやつは古いままですからプログラムでも可能かもしれません :-)

_shudo(Mon Dec 01 23:22:45 JST 2003)

 ハンドパワーです。

_shudo(Mon Dec 01 23:48:12 JST 2003)

何百年間動かすには、ハードウェアの寿命を超えて実行を続ける必要があるから、まず、マイグレーションが可能な言語?ランタイム?OS?を選ばないと。って、そういう話じゃない?

_ささだ(Tue Dec 02 00:08:56 JST 2003)

 自己修復可能なシステムから、ですかねぇ。その成果が「地球」だったりして。

_kjana(Wed Dec 03 16:33:48 JST 2003)

 すると答は 42 なわけですね、などとわかるようなわからないようなことを言ってみる :-)

_shiro(Wed Dec 03 19:00:11 JST 2003)

 遅い反応ですが; 著名な計算機科学者で、5000年動き続ける時計を作っている人がいたと思うのですが、どうしても名前とプロジェクト名が思い出せない…どっかでその人のキーノートスピーチを聞いたんだけど、どこだったかなあ。

_fukumori(Wed Dec 03 19:59:56 JST 2003)

Daniel Hillisですね。(かつてのThinking Machines社長だ。懐かしい)

ちなみに1万年時計みたいです。

http://www.longnow.org/about/board/hillis.htm

_shiro(Thu Dec 04 02:18:35 JST 2003)

 あーそうだ。Danny Hillisは浮かんだんだけど、5000 year clockで検索してたから引っかからなかったのか。

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2003/04/28 10:27:51 $