K.Sasada's Home Page

Diary - 2003 November

研究日記

霜月

_30(Sun)

考えてみれば(考えなくても)akrさんの前で rucheme の話をするのは無謀だった。

五月雨はあるが、六月雨ってあるんかな。

週間私の(略)がamazon本トップからなくなってる。締め切ったのかな。

エマヴィクトリアンガイド。高橋さんに参考文献として教えてもらったもの。なんの参考か、いまいちわかりませんが。


陰暦五月頃に降る長雨。梅雨。つゆ。さみだれ。[季]夏。

三省堂提供「大辞林 第二版」より

おぉ、なるほど。で、六月雨 / 四月雨は、やっぱりないか。七月雨 => 夕立、だとちょっと苦しいか。


Micky's security institute


2ch の Ruby板というものを久しぶりに見たんですが、Rava は誰でもできるというのは非常に同感です。ただ、それを作るようなやつはバカだ、というのは必ずしも真とは言えないと思います。私がバカじゃない、って言ってるわけじゃなくて。

ちなむと、JavaVM 関係の本って少ないから、その少ないのを読めば作れると思います。私は jvmspec第2版(日本語) しか読んでないんだけど、英語でもうちょっとあるような気が。


どうも、酔った勢いでとんでもないこと口走ったかもしれない。

_6(Sun Nov 30 07:21:47 JST 2003)

 梅雨

_n????n(Sun Nov 30 08:01:31 JST 2003)

 梅雨

_ささだ(Sun Nov 30 13:08:05 JST 2003)

 さすがに梅雨は思いついたんですが、六月雨を「つゆ」と読ませたりするのかな。

_kjana(Sun Nov 30 14:11:47 JST 2003)

 っていうか、五月雨の五月は旧暦だから今の六月頃。要するに五月雨は梅雨の長雨。

_6(Sun Nov 30 19:59:39 JST 2003)

さみだれ=梅雨は初耳でした。20へぇ進呈。

_29(Sat)

cvs co を別ディレクトリでやれば取得できるんだが、cvs update やっても効果がない(古いまんま)ってのは、なにがいけないんだろう・・・。


すみません、また寝坊・・・。


ヌル vs ナル。


またいいかげんな馬鹿な話ばかり(私は)してきたけど、よく覚えていない。

_バカ(Sat Nov 29 03:12:01 JST 2003)

 ロックファイルとかのせい? #cvs.lockとか?

_shiro(Sat Nov 29 05:16:28 JST 2003)

 sticky tagがついちゃってませんか。cvs update -Aを試してみては。(sticky tagは誰もが一度はハマるところのような気がする)

_たむら(Sat Nov 29 10:58:57 JST 2003)

 私は cvs update -PAd はクセにしてるなぁ

_ささだ(Sun Nov 30 02:23:11 JST 2003)

 今度からその辺注意してみます。

_28(Fri)

ちょっと仮眠しようと思ってちょっと寝たら,朝だった.ガーソ.

なんか,接近戦.>Ruby2.0/block local variables(略)

2人ってのはやっぱり少ないじゃん,とか思ったり思わなかったり.

なんか最近「独占広告〜」って Subject なメールがくるようになった。法改正でもしたんかな・・・。

6 と 13 がダメなら、順当に 20 しか無いじゃねーか、と気づく。

とりあえず、ウェブカメラは持っていきますが、使い方をよく知らない・・・。

椅子に座った nokada さんが足で器用に酒を飲む姿を想像してしまって。そして hack してたり。

ぜんぜんダメなコード書くし。メールに変なこと書くし。大切なメールを学校に置いてきてしまったし。しかも雨までふってるし。もうダメぽ。

いつもどおりじゃん、とか言われてしまうかも。いや、そうですね。ごめんなさい。

_27(Thu)

The 冬,って感じでとても寒い.

ReFe は前読んだのであんまり乗り気じゃなかったりするけどテーマとしては非常に順当.

Rwiki に,((<nantoka11/20nantoka|URL:http://nantoka>)) ってやったらエラー.スラッシュはダメらしい.

NTFS のセキュリティ機能と落とし穴.irc で聞いた話.知らんかった.なんか便利に使えるんだろうか.

いつもいつもつっこみどころが多くてすみません。

Tierra入門(/.j)。やばい、面白すぎる。こんなことやった人がいるんだなぁ。

命令セットを小さくすることでロバストにできるってのがよくわからんけど。コドンとかいわれてもよくわからないし。

目的へ至る方法が数限りなくあるから、ってことなのか。要するに無効な命令を少なくする、と。まぁ、このモデルだと似たようなものがないとまずい気がするけど。

_アフォー(Thu Nov 27 21:53:25 JST 2003)

 NTFSの話、いつ読んでも「いまさら、オマエ何言ってるんだ」

_Yuya(Fri Nov 28 01:23:19 JST 2003)

 Tierra入門。私も/.Jで見かけて読みふけってしまいました。

_こーのいけ(Fri Nov 28 05:03:11 JST 2003)

 Tierraか・・・懐かしいなあ。最初に知ったのは高校時代だったんじゃないかな。

_KM(Fri Nov 28 10:16:46 JST 2003)

 人工生命ねぇ... 個人的にはライフゲイムを以って,ある意味で究極だと思っているので,ヒューマンインタフェース技術としか捕えられないんだわ.激しく偏った見方ではあるけど.

_KM(Fri Nov 28 10:18:16 JST 2003)

 CoreWar について日本語で書かれたページって無いんですね.参考になるかと思ったのですが.

_26(Wed)

C で,何気なく a = b ? b : c; のところを a = b || c; と書いてしまった.もう C は使えない・・・.


この日記を某TMY先生が読んでいることが発覚.読んでるのならなんか書いてくださいよぅ.


数学セミナー,読んでみようとしたら,学科図書室には 2000年までのしかなかった.ガーソ.図書館まで行くか・・・.

そういえば,なんかbitの記事頼まれてなかったっけ,と振ってみる.


Ruby conference 2003.おお,高橋さんだ.


誰も逃げないのはさすがだなぁ.一応書いておくと,[ruby-dev:21955] block local parameters in Ruby2 の話です.前田さんのそのメールから引用.

  def foo
    x = 1
    iter do |x|
      p x # このxはブロックローカル
    end
    p x # このxはメソッドローカル
  end

私はそれよりも

  def foo
    iter do
      x = 1 # このxはメソッドローカル
    end
    p x # このxはメソッドローカルで,エラーにならない
  end

というのが気持ち悪いなぁ,と思ってるんですが,どうでしょう.

do/end だとそうでも無いか.

  def foo
    iter{
      x = 1 # このxはメソッドローカル
    }
    p x # このxはメソッドローカルで,エラーにならない
  end

私のいつものスタイルの,これだと気持ち悪いかも.なんだかんだいって C に毒されてるなぁ.


g77 の testsuite は,中を見ても何をやっているのかわからなかったので無視してました.体系だってなんかやってんのかなぁ?


rubyにおけるクラス再定義について,30秒くらい考えてみたけど無理(私には)っぽかったので諦める.そもそもrubyにはそんな機構が必要になるような場合は無いような気がしないこともない.一度永続化プールに置くって感じにすれば,シグネチャしか残らないんだったら中でなんとでもできるだろうしな.特異メソッドを置く感じになるのか.代わりに.うーん,シンプルじゃないな.

既存のオブジェクトのクラスを変更することって不可能,ですよね? 多分.

obj = A.new
obj.class #=> A
obj.nankasuru
obj.class #=> B

まぁ,クラスがいろいろ弄れるので,必要ないっちゃぁないのかもしれない.非効率でよければ,代替になる手段はいくつかある.非効率でなくてもある,,,かな.継承を考えなければなんとでもなるか.

一度 include した module ってはずせるのかな.


とても既にありそうだなぁ.google でひいても Symbol#=== って,ひっぱってこれないし調べられなかった.

class Symbol
  def ===(obj)
    obj.respond_to? self
  end
end

case "abc"
when :quack
  p "duck"
when :bowwow
  p "dog"
when :mew
  p "cat"
when :each
  p "Enumerable"
end

アヒルってこうやって鳴くのか.あと,犬の鳴き方調べて知ったけど,英語でも bow-wow って犬の赤ちゃん言葉なんだ.へぇ.


LDOCE4 を変換してみたものの,EBStudio というのは有料なものらしい(Free版で用は足りる気はするが,とりあえず有料版がほしいということにしておく.あと,1000円くらいなら払えるけど,まぁ払わないとしておく).なら,愛用している PDIC(これもほんとは有料だが,学生生活が終わってから払おうかなぁ,とか)の形式に変換してみようかなぁ,とか考えてみる.

まぁ,変換するスクリプトをたとえば作ってみると EBStudio の特別ライセンスとかいうので特別に有料版を貰えたりするらしい.というわけで,晴れて EBStudio が使えるようになる.

あれ?


萌えλ本.誰か,あの表紙絵を萌絵にしませんかね.売れますよ(誰に).

三井住友銀行なでしこ支店.さくら銀行のままならよかったのに(何が).

食料の備蓄がなくなって,あまりにひもじいのでコーヒー用砂糖を舐めだしてる自分.ダメだ.

と,頼んだらT氏が描いてくれた.カードがないから,セーフだよね,多分.


なんか,いろいろやりすぎて眩暈が・・・.でも,腹は減った.眩暈ってただの空腹か?

_mput(Wed Nov 26 09:54:32 JST 2003)

 gcc 限定だけど、 a = b ?: c; とか書けます。

_ささだ(Wed Nov 26 12:16:51 JST 2003)

 うわ,気色悪.ファーストクラスラベルとかは標準になって欲しいけど,これはなぁ・・・.

_KM(Wed Nov 26 15:58:38 JST 2003)

 「 a = b ?: c 」って b が長かったり函数呼び出しを含むような式とかだったりすると一旦変数に入れなくて済むのでうれしい

_ささだ(Wed Nov 26 16:03:02 JST 2003)

 素直に if 文使うなり一時変数使うんじゃ.読みづらいだけな気が.

_mput(Wed Nov 26 18:39:46 JST 2003)

 Ruby ではふつうはクラスが変わることはありませんが、 IO#reopen だけ例外で、クラスが変わります。

_青木(Wed Nov 26 20:45:27 JST 2003)

 モジュールのincludeは取り消せないけども、メソッドが着脱可能なのであんま意味なし。

_新潟のS(Wed Nov 26 23:25:32 JST 2003)

 恐れながら、bitの件です。1982年5月号(Vol.14、No.6) 中島秀之著 Portable Prolog Version1 の記事です。よろしくお願いいたします。

_なかだ(Thu Nov 27 09:40:28 JST 2003)

 たしかSymbol#===は却下されたはず。

_KM(Thu Nov 27 12:06:31 JST 2003)

 ついでに Message-Id: <20031104134223.48d65e20.ksmakoto@dd.iij4u.or.jp> に書いた bit の記事もSさん宛てということでヨロ m(__)m

_ささだ(Thu Nov 27 12:38:56 JST 2003)

 着てないけど?>KMさん

_KM(Thu Nov 27 15:27:43 JST 2003)

 コレ http://www.sampou.org/scheme/sicp/mailingList/msg01331.html

_ささだ(Thu Nov 27 16:06:11 JST 2003)

 そんなの Message-Id でわかるものなのですか.

_25(Tue)

cygwin をまた新しくインストール。デフォルトのセットに Ruby は入ってたが Python が入ってなかった。なんで?

しまった。ruby をコンパイルしようとしたら VC 入れてなかった。しゃーない、いれっか。


Octave for Win をインストールしたら、Cygwin の設定全部書き換えてやがる。ひでー。


今後、出てくるであろうリファクタリングツールで、ブロックローカル変数の問題とかは解決する。のかも。


LaTeX for writing papers in English。いい感じだ。


体の調子がスゲー悪い。

理系のための恋愛論 第119回 勝負の初デート。うーん。色々大変なんだなぁ(ひとごと)。


lambda-books のパートナーになるためにトップページを変更。


登校拒否をずる休みと言う教育学研究者はどうなんだろう.


あれ? gcc3.3.1 を見ても,gcj で利用するネイティブ関数群(クラス群)が見つからない.あれれ.Classpath で頑張るんだっけか.


そういえば,gosh の最近知った衝撃の新事実.C-d で終了しやがります.ずっと (exit) って書いてました.


尊敬するあおきさんに少しでも近づくために,賞味期限切れのレトルトカレー(期限今年7月)を食べました.でも,レトルトでパックされてるので,あんまりやばくなさそうです.あおきさんへの道は遠い.


某でFFネタをふられる.うー,懐かしすぎる.今更だけど,ロック(FF6)っておいしいよな.


大学・研究機関における情報セキュリティマネジメント(memo).上原先生は凄い人だ.この方も,尊敬.行ってみたいけど,大阪は遠い.

全然まったくこれっぽちも意味はないんですが,ペットの名前が「石xxxx郎」って何が入るんだろう.


自分で書いた英語部分,全部修正されて帰ってきた.まぁ,あたりまえなんだけど,うーん.それなりに鬱.


あたりまえだけど,readline で複数行って編集できないんだなぁ.なんかいい方法ないかな.

_Yuya(Tue Nov 25 11:12:02 JST 2003)

 そうなんです。大変なんです。ささださんは楽勝なんですね・・・羨ましい。

_ささだ(Tue Nov 25 11:51:11 JST 2003)

 その初デートが実現しないのでひとごとです。

_み(Tue Nov 25 17:21:32 JST 2003)

 登校拒否をずる休み、という教育学研究者が結構いるから日本の教育は崩壊した、って言ったら言い過ぎかなぁ、たぶん言い過ぎだろうね。

_fukumori(Tue Nov 25 21:44:41 JST 2003)

 上原先生の名前をここで聞くことになるとは…と勝手に昔を懐かしんだり。

_ささだ(Wed Nov 26 09:25:09 JST 2003)

 なにかとお世話になってるもんで.

_24(Mon)

xyzzy に scheme-mode を入れると嬉しくなってしまう人ってのはどれくらいいるものだろうか。俺くらいかもしれない。

そもそも、lis-mode であんまり困ってなかったりする。define のインデント部分さえ直れば、あとはいいんだけど(その直し方は、よくわかってない)。

ただ単に、便利な機能を知らないだけかもしれない。Meadow で scheme-mode を動かしてみると、なにやらいくつかコマンドがバインドされている。うーん、どうしたもんかな。


なんか、うちの Win2k 末期症状か。google の検索ボタンが押せない。でも、日記更新ボタンは押せる。

もう、再インストールするか。これだけの期間、よく長持ちした、と誉めるべきなのかもしれない。大体1年か。ついでに、各種ソフトのアップデートでもするか。いい加減 explzh のお金払わないと・・・。


再インストール完了。あとは各種ドライバにソフトウェアに・・・。ウザ。


地震速報を見て思ったんだけど、将来は地震予報とかになって、「あと3分後に地震が起きます」とかになるんだろうか、とか思ったけど、多分いわないよな、3分後じゃ。


とりあえず落ち着いた気がする。意外とさっさと終わった。レジストリいじるソフトとか、その辺を最近使ってなかったからかな。

いっそ cygwin もアップデートするか。開発環境一式も。いっそ、.Net 入れるか。研究室アカデミックライセンスな VS.Net って、学生の家に入れていいんだろうか。研究室マシンだけだったかな。わかんないんで、やっぱり VC6.0。

C# さわってみたいから、.Net Framework だけは入れとこうかなぁ。どうしよ。

あ、Java とか、P/ECE 開発環境とか、一切設定やってないな。どしよ。最近どちらもやってないが。いや、Javaは入れないとまずいか・・・。1.31 入れとこう。すでに入っているので、パスを通すだけでいいのかもしれない。

しかし、HDDをチェックすると、いろんなファイルが出てくる。iria とか、懐かしいなぁ。もうぜんぜん使ってない。wget でさくっといけるしな。最近は。


再インストールしたら、某Nの某Dという燃える名作ゲームの動画が見れるようになっていた。ブラボー。これだけでも再インストールした意味があった。姫様が、なんか仕事してるように見える。

しかし、こんなに熱い動画だったんだな。プレイ中に見たかった。もう一度最初からやってみようかしらん。でも、Helloなんとかはやり直す気がしない。あれは長すぎる。Dは3人だから、まだマシ。

_23(Sun)

電車。乗って、すぐ眠って、起きたら降りる駅、の次の駅 に到着してた。

危なかった。もう一つ先に行っていたら帰れなかった。


FC会員特別先行予約、もう終わってたのか。無念。なんか最近そっちに気が回ってないな。FF11 もやってないし。

そういえば,来年用のスケジュール帳用意しないとな.12月までしかない.ないと,結構困る.次は,少し探してみよう.


Texinfo形式のページ。明日にでもこれを変換しとこう。


初等ロリータ指向(×嗜好)プログラミング(Welcome to the world of hascup)。コレだ!(何が)

しかし、yuasa では萌えない気がします。ロリータ評価関数のパラドックスかぁ。世の中には不思議が一杯ですね。

私は、変数名には hoge なシチュエーションに hoe を使いますけど。だって、一字少なくて楽でしょ。


ケーキを食べて糖分補給。糠分じゃなくて。


エクスプローラが死ぬので、仕事にならない。

なので、いいファイラはないかなぁ、と探してみる。

  • xyzzy は、一つ一つファイルをひらいてしまうのがいくない(C-x k で閉じるのが面倒)。
  • WinFD。昔は FD を使ってたから、と思って利用してみるも、しっくりこない。面倒。
  • あふ。よくわかんなかった。
  • DYNA。フォルダ移動時のファイル名補完が欲しい。他のにも言えるけど。やってるのみつけられんかった。

あと、ファイラ表示したままで Viewer を表示してくれるのが欲しい。ファイラ上でDOS窓動かしたい。そういうのは見つけられなかった。

どうしよう・・・。

全部再インストールしたほうがいいかな。


VM Ware が欲しくなった。学割2.5万円。買ってしまうか。靴を諦めれば買えるな。

_DYNAユーザ(Mon Nov 24 01:45:33 JST 2003)

フォルダ移動時のファイル名補完…あればフォルダを深く辿っていくときに便利かもしれないです。 それとVM WareのライバルVirtual PCは値段が下がるという話ですが、どうでしょう。

_ささだ(Mon Nov 24 02:59:21 JST 2003)

 Virtual PC って、あんまり評判聞かない気がするんですが、どうなんでしょうね。

_DYNAユーザ(Mon Nov 24 12:03:10 JST 2003)

Microsoft Virtual PC 2004からLinux/BSDサポートが消える こんな話もありますが、Windows版が出たのが結構最近なので単純に使っている人が少ない…というレベルだったりしないですかね。

_22(Sat)

フルバ13巻、買わせないと。

OPM-A3を買う。さすが3000円。

眠い・・・。やっぱ10時は速い。

修復インストールするも、IE/Explorere エクスプローラが落ちる現象は続く。困ったなぁ。この糞忙しいときに。

sicp を読み進めていくと,ruchemeのために頭を悩ませていた評価モデルについて,なんと簡単に書かれていることか.不勉強.

どうでもいいんだけど, (reverse ''1) ;=> (1 quote)


def let(*args)
  yield(*args)
end

let(1,2,3){|a,b,c|
  p a,b,c
}

let ってこんな感じなのかなぁ.ちょっと(?)解りづらい.

def let(**args)
  yield(**args)
end
let(a: 1, b: 2, c: 3){|a,b,c|
  p a,b,c
}

こんな感じになるのかなぁ... なんか全然違うな,これは.

つうか,yield に keyword parameters って入るんだろうか.


今日の感動したScheme.(by 新潟のSさん)

(define f
  (let (function-local ..) ..)
    (lambda (..) (..))))

Ruby Hacking Network. Natto かもしれない.

_なかだ(Sat Nov 22 10:01:55 JST 2003)

 エクスプロレレ?

_21(Fri)

クラス数と、メソッド数の調査。

stat_p = lambda{
  stat = Hash.new(0)
  stat[:maxmc] = ['', 0]
  
  ObjectSpace.each_object{|obj|
    if obj.class == Class
      stat[:num] += 1
      stat[:pubc] += obj.public_instance_methods(true).size
      stat[:pric] += obj.private_instance_methods(true).size
      stat[:proc] += obj.protected_instance_methods(true).size
      c = obj.public_instance_methods(true).size +
          obj.private_instance_methods(true).size +
          obj.protected_instance_methods(true).size
          
      stat[:c]    += c
      
      if stat[:maxmc][1] < c
        stat[:maxmc] = [obj.inspect, c]
      end
    end
  }
  p stat
  puts "Avarage: #{(stat[:c])/Float(stat[:num])}"
}

stat_p.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
}

stat_p.call

起動した直後。{:proc=>0, :num=>182, :pubc=>9082, :pric=>12919, :c=>22001, :maxmc=>["String", 203]} で、Avarage: 120.884615384615。

色々読み込んだ状態で、{:proc=>118, :num=>956, :pubc=>60438, :pric=>143326, :c=>203882, :maxmc=>["WEBrick::HTTPUtils::FormData", 321]} で、Avarage: 213.265690376569。

300 methods per class と考えておくと余裕? moduleを考えてないからなぁ。

Object にメソッドを追加しても、たかだか 1000個のクラスにしか影響を与えない。

Module でやってみた。

{:proc=>0, :num=>16, :pubc=>72, :pric=>192, :c=>264, :maxmc=>["Kernel", 110]}
Avarage: 16.5

...

{:proc=>14, :num=>169, :pubc=>630, :pric=>441, :c=>1085, :maxmc=>["Kernel", 114]}
Avarage: 6.42011834319527

しかし、たくさんたくさん警告が出るな。


すごいクラス。

class C
  ObjectSpace.each_object{|obj|
    if obj.class == Module
      include obj
    end
  }
end

p C.ancestors
p C.public_methods(true).size
p C.private_methods(true).size
p C.protected_methods(true).size

色々読む前。

[C, Comparable, Enumerable, Precision, Errno, FileTest, File::Constants,
Signal, Process, Process::UID, Process::GID, Process::Sys, Math, GC,
ObjectSpace, Marshal, Object, Kernel]
70
180
0

色々読んだ後で。

[C, TkUtil, TkCore, TkComm, TkComm::Event::TypeNum, TkBgError, TkConsole, TkMacR
esource, TkManageFocus, TkPalette, TkTreatTextTagFont, TkWinDDE, IRB, Test::Unit
::UI, IRB::ExtendCommandBundle, IRB::ContextExtender, Scanf, RubyToken, Shell::E
rror, Readline, Sync_m, ExceptionForMatrix, Shellwords, Logging, MonitorMixin, M
onitorMixin::Accessible, MonitorMixin::Initializable, Mutex_m, Observable, OpenU
RI, OpenURI::Meta, OpenURI::OpenRead, Open3, OptionParser::Completion, OptionPar
ser::Arguable, OptionParser::Acceptables, Ping, Singleton, Module::SingletonClas
sMethods, PP::PPMethods, Digest, TSort, WEBrick::HTTPAuth, WEBrick::HTTPAuth::Au
thenticator, WEBrick::HTTPAuth::ProxyAuthenticator, WEBrick::HTTPAuth::UserDB, R
esolv::DNS::OpCode, Resolv::DNS::RCode, Resolv::DNS::Label, Resolv::DNS::Resourc
e::IN, YAML, YAML::Syck, YAML::BaseNode, RUNIT, YAML::BaseEmitter, Test, Test::U
nit, Test::Unit::Util, Test::Unit::Util::Observable, RUNIT::Assert, Test::Unit::
Assertions, SOAP::Processor, Timeout, Socket::Constants, HTTP, HTTP::Status, HTT
PAccess2, WebAgent::CookieUtils, ParseDate, OpenSSL, OpenSSL::Cipher, OpenSSL::D
igest, OpenSSL::Netscape, OpenSSL::PKCS7, OpenSSL::PKey, OpenSSL::Random, OpenSS
L::SSL, OpenSSL::X509, Buffering, OpenSSL::SSL::SocketForwarder, NKF, Kconv, Dev
el, FileUtils::Verbose, FileUtils::NoWrite, FileUtils, Logger::Severity, Devel::
Logger::Severity, Google, Benchmark, WEBrick, WEBrick::HTMLUtils, WEBrick::HTTPU
tils, WEBrick::HTTPStatus, WEBrick::HTTPServlet, Fcntl, Etc, WEBrick::Utils, WEB
rick::Config, WEBrick::AccessLog, DRb, DRb::DRbUndumped, DRb::DRbProtocol, DRb::
DRbServer::InvokeMethod18Mixin, CGI::QueryExtension, CGI::TagMaker, CGI::HtmlExt
ension, CGI::Html3, CGI::Html4, CGI::Html4Tr, CGI::Html4Fr, Exception2MessageMap
per, Finalizer, Config, Find, Forwardable, SingleForwardable, SOAP::Mapping, SOA
P::Mapping::TraverseSupport, REXML::Encoding, REXML::Encodingses, REXML::EntityC
onst, SOAP::SOAPModuleUtils, SOAP::SOAPBasetype, SOAP::SOAPCompoundtype, SOAP, R
EXML::Functions, SOAP::Marshallable, SOAP::Mapping::MappedException, SOAP::RPC,
SOAP::SOAPEnvelopeElement, XSD::XMLParser, ERB::Util, ERB::DefMethod, REXML, REX
ML::StreamListener, REXML::Node, REXML::Parsers, REXML::Namespace, REXML::XMLTok
ens, Google::Each, XSD::Charset, Iconv::Failure, URI, URI::Util, URI::REGEXP::PA
TTERN, URI::Escape, URI::REGEXP, XSD::XSDDateTimeImpl, TclTkLib, TclTkLib::Event
Flag, TclTk, Comparable, Enumerable, Precision, Errno, FileTest, File::Constants
, Signal, Process, Process::UID, Process::GID, Process::Sys, Math, GC, ObjectSpa
ce, Marshal, Object, PP::ObjectMixin, XSD, Kernel]
456
417
7

メソッド数は、あまり増えない。


先週置きっぱなしにしていた傘が、今日見たら無くなっていた。新しい、いい傘だったのに・・・。鍵もかけていたんだけど(2桁の番号鍵だけど)。非常に腹がたつな。


ミップス・テクノロジーズは、MIPSRアーキテクチャへの 新しいマルチスレッド拡張で、システム性能を大幅に向上 この辺、具体的な内容に詳しい人いませんかね。セールストークだけで、具体的なのが書いてなくて。

あと、こんなアーキテクチャのほかの奴、ってどっかにないかなぁ。


class C
  def m1
    p :m1
  end
  c = C.new
  c.m1
  def m2
    p :m2
  end
  c.m2
end

#=>
:m1
:m2

へぇーへぇーへぇー。前も見た記憶がないこともない。


ruby で、test を強制する方法はないかを考えてみたけど思いつかなかった。

ああ、new を変えちゃえばいいんだ。


最近、家の Win2k 、IE を起動しようとすると IE が強制終了する。ローカルフォルダを見ようとしても落ちるので、非常に困る。

そろそろ再インストールしろ、っていうお告げかなぁ。面倒くさいなぁ。

しかし amazon、まだ独占中か。


なんとなく、isupper の実装について考えてみる。まぁ従来は文字種の表でやってるんだろうけど、現状のプロセッサにおいて、未だにそれは速いのか? キャッシュミスが起こるより、条件分岐2回の方が安かったりしない? まぁ、is* とか使うシチュエーションなら、何度もキャッシュに載ってるときに呼ぶだろうから(予測)、一度のキャッシュミスも十分ペイする気はするが。

そういえば、見たことないな。glibcでも見てみよう。う、今手元にない。


C Driveが残り7MB切ってた。ありえねー。いいマシンが欲しい。

gcc 3.3.1 追加。

_ほげ(Sat Nov 22 00:26:06 JST 2003)

 「is*...」←君って某掲示板の愛読者?

_t15u(Sat Nov 22 02:44:05 JST 2003)

 (unsigned)(x-'A')<26と条件分岐1回にするという話を聞いたことがあるようなないような

_なかだ(Sat Nov 22 05:46:32 JST 2003)

 非ASCIIとかlocaleを考えなけりゃ、それが速いかも。

_ささだ(Sat Nov 22 09:06:21 JST 2003)

 ああ、そうかぁ。なるほど。

_Renee(Fri Feb 03 23:30:35 JST 2006)

anyone know how long a normal sex should last? i&#039;ve read on <a href=&#039;http://www.fetish-facesitting.info&#039;>http://www.fetish-facesitting.info</a> that 9-10 minutes..

_Alexander(Sat Feb 04 00:41:07 JST 2006)

site interesting and useful. Has come, was surprised with quantity of the information. Has added in the selected works, and I suggest you to exchange references. In advance thanks, write

_John(Sat Feb 04 00:44:12 JST 2006)

Interesting site, it is well written. Registration not so was pleasant, and with scripts of a problem. Let&#039;s vary references, or banners. Write, how solve

_Alex(Sat Feb 04 00:51:48 JST 2006)

What that problems.(I would like that you have corrected problems with scripts. And some menus do not work! del to it of attention. Thanks!

_Liza(Sat Feb 04 00:53:55 JST 2006)

Good site. The answer пожалуста on pair questions. It is the small test, I shall be grateful if will answer.

  • how many you spend time on the Internet?
  • What for you the Internet means?
_Billy(Sat Feb 04 00:55:49 JST 2006)

Hi! I invite on my site: <a href = "http://www.total-store.info/">www.total-store.info</a> Best site for the fans of fishing! Thank!

_Barby(Sat Feb 04 00:57:16 JST 2006)

Hi! The parents, where all for children whether to learn in want? <a href="http://www.ultra-store.info">http://www.ultra-store.info</a>

_20(Thu)

並列処理プログラミングの授業が受けたい・・・。半年くらい、みっちりと。知識足りなさ過ぎ。


strcpy と strcat で間違えてはまってた。情けねー。


年が一個増えた。干支ふた周り目。

ちょうど、生まれた年の bit を見る機会が。本質的にはあんまり変わってないのかなぁ。Simula の記事があるのがなんとも。


../prog を更新。


PLT Spy なら、やっぱり Gauche in Ruby かなぁ。って、逆か。まぁ、PLT は環境が凄いからな・・・。

Ruby-in-Gauche。普通に Ruby 書いて Gauche から呼び出せばいいような。やっぱり、Ruby で色々入出力とかハンドリングして、gauche で問題を解く、というのがいいと思う。Haskell でもなんでもいいけどさ。

拡張可能な言語の話って、こういうものが目的なんでしょうか。そういうものではない? すみません、あんまり論文読めてなくて。違うパラダイムの言語を、処理系拡張によって利用可能にする、しかも効率的に、って話しだとおもったんですが。


もうちょっと、Scheme to Ruby Compiler を考えてみる。完全に同等なものはできるだろうか。末尾再帰とかはループに展開できるか。んー、やっぱり今度考えよう。goto 無いときついかな?


最近、やっと英語を読んでて眠くならなくなってきた。読もうとすると良く眠れたんだ、これが。


本top100。1〜5位独占って、何これ・・・。見たことないけど。


最近は電車にも広告塗るのか。中央線で見る。

_アポォ(Thu Nov 20 01:05:50 JST 2003)

 やりましょうか?個人授業で、でも...

_ささだ(Thu Nov 20 17:55:37 JST 2003)

 ぜひ。

_shiro(Thu Nov 20 20:13:54 JST 2003)

 RubyでVM書いちゃえば何でもできるでしょう>Scheme to Ruby。でもSchemeプログラムの構造をRubyに逐一マップしようとするとややこしくなるかも。

_ささだ(Thu Nov 20 20:25:11 JST 2003)

 前者は今やってて(停滞気味)、後者ができないかな〜、と考えてみまして。えんどうさんに後者やらんと、とか昔言われた覚えが。既存の C への変換手法とか全然知らないので、それを知ると世界が違って見えるのかなぁとか思ったり。

_Rubyちゃん(Thu Nov 20 22:34:04 JST 2003)

 ふ、ふた回り目って、13才なの? \(@o@)/

_ささだ(Thu Nov 20 23:19:21 JST 2003)

 あ、3順目? 今日から24やってるんですが(24初心者)。

_shiro(Thu Nov 20 23:30:07 JST 2003)

 Rubyがtail call optimizationをやってくれないのでしたら、Schemeプログラムをほぼその形でRubyにマップするのは無理でしょう。メタクラス使ってメソッドにラッパーをかませるようなことが出来るなら、メソッド呼び出しを自動的に全部トランポリンに変えてやれば出来なくはないですが。なお、ここでVMと言っても別にレジスタマシンだとかインストラクションセットだとか考える必要はあまりなくて、例えば各変数フレームをオブジェクトにしてつないどいて、プログラム自体はCPSして実行するとかも含みます。

_ささだ(Fri Nov 21 00:16:29 JST 2003)

 うんうん。そんな感じで、効率いいの、つくれないかなぁ。

_19(Wed)

  • Ruby2.0spec まつもとさんの発表の仕様部分だけをまとめたもの。
  • Ruby2.0VM まつもとさんの発表のVM部分だけをまとめたもの。

キーワード引数ってどうやって実装するんかなぁ。__send__ とかどうなるのかなぁ。


誰も使う人がいない(ささだ調べ)chm 追加。


ruby-talk:85151 [Rite] Byte-Code Compiler in Ruby からのスレッド。

私もそう思ってます。とりあえず実験用だけでも。

で、そのツリーつながりで ByteCodeRuby をダウンロードしてきて、命令セット見てみたんだけど、少ないよね、これじゃぁ。

なんだかんだと命令を追加すると、私みたいに50個くらいになってしまうが。


def foo() yield(:foo) ; end
def bar() yield(:bar) ; end

a = 1
foo{|a|
  a = 2
  bar{|b|
    p a    # これは?
  }
}
p a # これは、Ruby2 では 1, 現状は 2

さて、ruby2 ではどうなる?

普通に上のブロックのブロックローカル変数になるか(2 を出力)。

これがないと、

10.times{|i|
  10.times{|j|
    i と j でなんかする
  }
}

が書けませんしねぇ。かけないようにすると、実装は素敵に楽になりそうだけど。まぁいいか。

ブロックは直近のブロックへのリファレンスとメソッド(ローカル変数を保持している場所)へのリファレンス、2つをもつことになるのかな。あと自分自身のブロックローカル変数と、コード領域へのポインタ。4つになったった。3番目のは要らないか。3つ。入った。

p2 = p = nil
p1 = Proc.new{|a|
  p2 = Proc.new{|b|
    p = Proc.new{|c|
      p b
      p c
    } unless p
  }
  p2.call(:b)
}
p1.call(:a)
p.call(:c)
p2.call(:bb)
p.call(:cc)

#=>
:b
:c
:b
:cc

これが、:bb が出るようになると、実装は楽っぽい。でも、やっぱこれじゃダメかぁ。


って、

p = 1
p p # => 1

できるんだ。


Net Video Recording System 『Weekly NeVIO』(/.j) すげー、とか思ったんだけど、なぜインターネットにつながってるんだろう。


p2 = nil
p1 = Proc.new{|v|
  l1 = v
  p2 = Proc.new{
    p l1
  } unless p2
}

p1.call(:a)
p2.call
p1.call(:b)
p2.call

#=>
:a
:a

最後は :b にならないのは、こういうもの?

そういうものか。そうかそうか。l1 は最初に p1.call されたときの l1 とは違うものなんだな。

でも、これを、そういうモノにすると、実装がとても楽になるし、ブロック変数がO(1)で見れるようになる。これで困る場面って、あとスレッド? まぁ、綺麗じゃないけどさ。


class A1;end;class A2;end

class B < A1
  def m() puts "b1"; end
end

b1 = B.new

class B < A2
  def m() puts "b2";end
end

b2 = B.new

p b1.class
p b2.class
b1.m
b2.m
p(b1.class == b2.class)

#=>
B
B
b1
b2
false
t.rb:12: warning: already initialized constant B

うーん。

  1. これでいいのか。
  2. だめならどうするべきか。

def m(C);end => ERROR へぇ〜。まぁ、そらそうか。


t氏曰く、「Pia Parrot」。

想像が付かない。

開始時に3種類の言語が選べたりするのかな。


Dynamic Productivity with Ruby。あまり目新しくはないなぁ。

_18(Tue)

やっぱり、ペアプログラミングっていいな。就業時間中はウェブで日記とか見ちゃいかんよ。IRC とかも。

なんとかする方法は無いものか。仮想ペアプログラミング?


ruby-talk で RCR の話で盛り上がってるのがすげー羨ましい(英語読めないしー)んですが、日本語でそういうところ、どっかにないかなぁ。

Free Visual C++ Command Line Tools(ruby-talk:85104)。C# コンパイラだけかと思ったら、C Compiler までついてたのか。もう、VC買わないでいいんじゃないですか? パソコン教室の。


しかし、なんで私の日記には匿名の人が多いのかな。うーん。


shiroさんに紹介頂いた Paul Wilsonのsurvey って、GCの話じゃなくてメモリ割り当てについての話なんですね。なるほど、基本だ。でも、こんなの読んだこと無かったです。不勉強。

しかし、150の論文へのリファーって・・・。全部読んだんだなぁ、この人たち。スゲー。


どうでもいいけど、急に Linux カーネルとか触りたくなってきた。FreeBSD とかも。いいマシンと、VMWareが欲しい。

ついでに一ヶ月くらい暇が・・・。


なぜか英語書いてるのが楽しくなってきた。なぜだろう。末期症状?

楽しい単語を翻訳させるのが流行ってるみたいなんですが、そんな単語の翻訳結果を知っているという事実が楽しい。


帰りたいのに帰れないー。家で夕飯食べたい。

やっと終わった。なんで自分で調べないで・考えないで人に聞くかなぁ、とか言って自分を振り返って青くなってみたり。

_匿名希望(Tue Nov 18 16:13:47 JST 2003)

 でわ私とリモートペアプログラミングしませう。IRCで連絡しつつWikiあたりにコードをぶちこんで。

_seis(Tue Nov 18 16:14:38 JST 2003)

 ECLIPSEにあるけど虚しいだけよ>仮想ペアプログラミング?

_KM(Tue Nov 18 18:00:14 JST 2003)

 (メールが不調なのでココに書きます m(__)m )大学の図書館にある資料のコピーをお願いできますでしょうか.今週末の SICP で渡してもらえればいいのですが,共立出版の『bit』の記事で,1979 年 7 月号掲載,竹内郁雄先生の「差をとって儲けよう」という記事です.実費+α程度は出しますので

_ささだ(Tue Nov 18 18:29:35 JST 2003)

 いや、人の目を感じてウェブめぐりとかして遊ばないことが大切なので。ECLIPSE のあれでは抑止力にならないかと。

_ささだ(Tue Nov 18 18:29:56 JST 2003)

 では、一緒に論文を書いてください。

_ささだ(Tue Nov 18 18:34:14 JST 2003)

 了解しました。やったー、今週の飲み代浮いた〜♪

_こーのいけ(Tue Nov 18 20:12:39 JST 2003)

 あれは最適化なしバージョンだったような記憶があります。それからC++の標準ライブラリがついてないとか。そもそもコマンドラインツールが欲しいだけならgccで良いわけで。製品の価値はIDEとドキュメントにあるのです。それにどうせMSDNAAで破格のお値段ですし。

_匿名希望(Tue Nov 18 20:12:54 JST 2003)

 匿名というより、「匿名希望」というハンドルネームです :)

_ささだ(Tue Nov 18 20:15:38 JST 2003)

 最適化無しだとは思いますが、前までは1万5千円だったっけ。スタンダードエディション。まぁ、たしかに gcc でいいっちゃいいですか。ちなみに、PC室一個で MSDNAA 使ってるんですかね。10万で70台? いいですねぇ。

_17(Mon)

re !~ str って知らんかった・・・.

On Lisp


chm(MS Windows用 HTML File)化。Windows でこれらを使っている人がいれば、どうぞ。できれば、(HTML Help化に関する)ツッコミとかもらえるといいかも。

もちろん、ドキュメントなどのライセンスは GPL、なんでしょう。きっと。この場合、変換プログラムも晒さないとダメなのかしらん。言われれば晒します、って言っといて逃げとこう。

texi2html は、@verbatim を理解してくれなくてハマッタ。


私も RITE の話聞いてみたい・・・。再来週高橋さんのお話が楽しみ。


木村さんに texi2html の新しいのを教えてもらったので、そいつに移植。おー、綺麗な perl だ。


perl の名前空間がわからない。require した先に設定があって、それは require 元では有効になってないっぽい。

そうやって設定させてるのに、それだと設定できないようだ。どうしようかな。perl が新しくなって、仕様が変わったのかな?


追加。

KI's Unofficial GNU Manual Translation Project より。

さて、いつ読むんだろうか。

スタイルシートを設定して、パステルな gnu。なんかイイカモ。どうも、いかめしいイメージがあるから。

Gauche リファレンスマニュアルのスクリーンショット パステルな gauche(謎)。

自分のコンテンツが増えた感じがして、気分がいい(違)。他人のふんどしプログラミング?


天文シミュレーション用計算機 GRAPE-6 増強により再び世界最高速に(/.j)。はて、どんな計算機なんだろう。


GPL ね、GPL なソフトのドキュメントは。


なんというか、人間オチを考え始めたら負けですね。


故あって、大学院前期課程を中退することになりました。そうしたら、来年の金が無いことに気づく。マジで無い。どうしようかな。サラ金ってのも間抜けだしな。


でかいね、さすがに。


Virtual Machine Design and Implementation in C/C++。ぐぅ、ほしいなぁ。読みたいなぁ。

あれ、あんまり評判良くないな・・・。


HTML Help の人は Naruto が好きらしい。恐るべしジャパニメーション。


あれ、書き途中なのを消しちゃったのかな。

あおきさんの日記に書いてある 1bit reference count って、ruby-dev:13372 のことですかね。知らない言葉でした。まだまだ修行が足りない。

カウントアップするためのオーバーヘッドと、共有するオブジェクトを一個作るコスト(と、それの後始末のコスト)、どっちが高いか、ってところですかね。やってみないとわからない、のかな。どこかにそんな実装ありますかね、論文とか。

でも、ネイティブスレッド化する場合、全てのアクセス(カウントアップ)にロック取らないとまずいような気がするので、やっぱりコストのほうが高くなりそう。うーん、アプリケーションにもよるか。どうなんだろうな。うーん。カーネルなスレッドだと、やっぱダメぽ。それとも、アーキテクチャごとにアトミックなアクセスなロック機構を用意? んー、デッドロックしそうなので却下、かなぁ。

ちなみに、上記リンク中の 1 って、 0 のとき(リファーされてないとき)の間違いじゃないのかな? 思い違いかな?(後付け:2 bit counter なら 1 でいいのか)

関係ないんですが、一応賞味期限でgrepってたんですが、意外にエントリ数少ないですね。もうちょっと頑張って貰わないと(何を)。


ネイティブスレッド化について30秒くらい考えて見ると、(効率をとても重要視するのなら)カーネルのスレッドを利用した 2level thread modelにするしかないのかなぁ、とか思う。でも、泥沼だよな、きっと・・・。

プリエンプティブの契機は従来どおり SIGALRM か。

うー、他の実装を知らないので発想が貧困だ。そもそも、効率はとりあえず二の次だろう。rubyは。

_KM(Mon Nov 17 19:39:10 JST 2003)

 葡萄六っていつのニュースですか,ってのは置いておくとして,図書館で杉本大一郎先生の「専用計算機によるシミュレ−ション」と「手作りス−パ−コンピュ−タへの挑戦」に目を通すべし.前者は大学院の教科書な水準.後者はブルーバックスの良書.

_ささだ(Mon Nov 17 20:01:34 JST 2003)

 あぁ、そんなの難しくて読めません。

_maeda(Mon Nov 17 23:49:17 JST 2003)

 リファレンスカウントが0ならゴミですがな。1bitカウンタのときは『0…参照が1箇所から。1…参照が2箇所以上』ですね。

_ささだ(Tue Nov 18 00:05:34 JST 2003)

 だから、0 じゃないんかなー、と(「リファーされてない」、は「参照が1箇所(自分からだけ・他からの参照が一度も起こっていない)」のつもりで)。って、2bit counter の場合は 1 でいいのか。

 2bit counter のときは、0: ゴミ、1: 一度も参照が起こってない、2: 2箇所、3: たくさん、か。おぉ、なるほど(遅い)。どの程度有効なんだろう。

_shiro(Tue Nov 18 19:26:37 JST 2003)

 GCとかの話は、基本としてPaul Wilsonのsurveyを押さえておくとよろしいのでは。http://citeseer.nj.nec.com/wilson95dynamic.html

_ささだ(Tue Nov 18 19:37:36 JST 2003)

 先日はお世話になりました。今回もありがとうございます。読みます。(うあ、78ページ・・・)

_16(Sun)

どうやらあれは Scm_MakeVirtualPort でポートを作ればいいっぽい。どこまでやればいいのかな。どれくらい安定してるのかな。利用例がないみたいだけど・・・。

typedef struct ScmPortVTableRec {
    int       (*Getb)(ScmPort *p);            // read-byte
    int       (*Getc)(ScmPort *p);            // read-char
    int       (*Getz)(char *buf,
                     int buflen,
                     ScmPort *p);             // read-block
    ScmObj    (*Getline)(ScmPort *p);         // read-line 
    int       (*Ready)(ScmPort *p);           // char-ready?
    int       (*Putb)(ScmByte b, ScmPort *p); // write-byte
    int       (*Putc)(ScmChar c, ScmPort *p); // write-char
    int       (*Putz)(const char *buf,
                     int len, ScmPort *p);    // write-block
    int       (*Puts)(ScmString *s, 
                      ScmPort *p);            // ??
    int       (*Flush)(ScmPort *p);           // flush
    int       (*Close)(ScmPort *p);           // close-(in|out)put-port 
    off_t     (*Seek)(ScmPort *p, 
                      off_t off, int whence); // port-seek 
    void      *data;                          // temporary?
} ScmPortVTable;

こんな対応関係だろうか。tell がないな。

getc/getb さえ実装すれば、read は受け付けてくれる・・・のかな。

gauche/char_*.h って便利だなぁ。

(define repl-count 0)

(read-eval-print-loop
 #f
 #f
 #f
 (lambda () (display (format "gosh[~D]> " (inc! repl-count))) (flush))
 )

お遊び。MIT Scheme だっけ、こんなの。


英語の texinfo を chm にコンパイルするようには出来た。あとは日本語処理か。jcode.pl の使い方の復習からかな・・・。


HTML Help Workshop というか hha.dll が死ぬ。メモリ管理が駄目らしい。どんなプログラミングしてんだか・・・。

おっきなヘルプをコンパイルしようとすると、エラーになるかも、(コンパイルを実行するとメモリ不足で強制終了する)だって。それは非常にマズイような。

いろいろ調べてたら、nameへのリンク(file#name)がたくさんあると死んでた。ヲィヲィ。

どうやって回避するかねぇ・・・。

新しい hha.dll ではなおってるかも、とかあるので頑張って探してみようか。XPじゃないと動かないのかな。XPな人に頼んでみようかな。誰がいたっけ・・・。やっぱり一通りの環境をもってないと不便だ。


ぐわ、ファイルの指定をさぼらなければ、きちんとできるな。なんてこったい。でも、ダメダメには違いない。


大体できた。とりあえずこれはこの辺で。日本語に変換する場所も特定して、あとはやるだけ。

gcc.texi をちょっと変換させたら、やっぱりでかいのが出来た。さすが。perl の何かってあったかな。25M...。

あと、何かあったかなっと。今まで読まずにすませてきたもの、とりあえず変換してみようかな。

_こーのいけ(Sun Nov 16 19:17:25 JST 2003)

 Jcode.pmにしましょう。で,print jcode($str,'euc')->sjisで終わり。

_15(Sat)

大規模Web開発に向いた言語は何か

google が七五三。


で、オルタナティブはまだでないんですか。よく知らないんですが。


makeinfo / texi2html をソースからインストールしたら、cygwin からでも十分使えました。

texinfo から compiled html を吐く何かを作ればヒーローになれると思うんだがな。texi2html は5千行か。どうしようかな。perl だしな・・・。

誰か texi2html 読んだ人居ないですかね。これをrubyに移植すると大変そう。ToC 情報とインデックス情報だけあればいいんだよな。


perl、頭に何もついてない識別子ってなんなのかよくわかんない。


なんか、難しいこと考えなくても出来そうだな。完成度はアレとして。

GPLソフトの改造って、ライセンスのことで、何も頭を悩ませなくてよくて、いいかも。

_アフォー(Sat Nov 15 10:10:10 JST 2003)

 本当だ、あんなところに七五三!

_こーのいけ(Sat Nov 15 23:26:53 JST 2003)

 頭に何も無いのはファイルハンドルかサブルーチン呼び出しの省略形。 うーん。型グロブ使ってるしprintやopen上書き定義してるしちょっと厄介なコードですねぇ。ちょっとだけ。

_ささだ(Sun Nov 16 10:43:52 JST 2003)
  for $letter (@{$page->{Letters}})

とか

    $page->{First} = $Letters[0];

ってなんだろう、とか思ったんですが、無視することに決定。やりたいことはできましたし。

_こーのいけ(Sun Nov 16 19:14:45 JST 2003)

 ハッシュへのリファレンスから直接読んでるだけですね。%hに対して$h{'hoge'}とやるのを$h{hoge}と省略できるという奴です。 上はその中身が配列へのリファレンスになってるんで更に展開している,と。

_ささだ(Tue Nov 18 19:40:12 JST 2003)

 あー、なるほど。そういう省略は心臓に悪いから嫌だなぁ。ruby の %w(...) も同じようなもんか。

_14(Fri)

デジカメをつなげたらPCが落ちた。ウワ・・・。


昨日の風景。手書きはさすがにアレだろう、ということできちんと印刷したら誇大広告に。誇大広告1誇大広告2

さすがに T-engine 上で ITRON 以外を動かしている人たちはいなかったっぽい。ゲーム機(P/ECE)を持ち込んでいる人たちもいなかったっぽい。でも、反対側の人がインベーダーゲームやってたな。開聞

いろんな人が、いろんな興味を持っていることが面白かった。業種変われば興味も変わるか。


履修申告が6つのはずが3つしか出来ていないってのはどういうことなのかな・・・。

今日はなんかやってすぐ新宿。そのあと飲み。飲んでる暇あるのかって気はする。はぁ。


なんか無茶苦茶凄い日だった。

とりあえず、shiroさんの奥様は凄い人だ。

_KM(Fri Nov 14 09:52:15 JST 2003)

 インベーダーを動かしていたところは清水先生@東海大ですね?

_ささだ(Fri Nov 14 13:37:41 JST 2003)

 だったと思います。

_あひる(Fri Nov 14 18:44:35 JST 2003)

 例のP/ECEで動くRTOSですか?

_ささだ(Sat Nov 15 00:56:39 JST 2003)

 そう

_13(Thu)

;; はじめての hash
(define (show-all-symbols)
        (let ((searched '()))
          (define (show-symbols module)
                  (define (show module)
                          (hash-table-for-each (module-table module)
                                               (lambda (k v)
                                                 (display (list k v))
                                                 (newline))))
                  (unless (memq module searched)
                    (set! searched (cons module searched))
                    (display "## module :")
                    (display (module-name module)) (newline)
                    (show module)
                    (for-each show-symbols (module-imports module))
                    (for-each show-symbols (module-precedence-list module))
                    ))
          (show-symbols (current-module)))
        )

こんな感じですか。結局 apropos を書き換えるだけになってしまった。

イテレータとか述語に渡す引数の順番が、やっぱり混乱しますね。for-each と hash-table-for-each とか memq とか。修行が足りんかな。

クラスを見つけよう、と思って is-a? obj <class> ってやったら、ひっかからず。<gloc> ってのになっている。global location? そこから、中の値をとらないといけないのかな。eval したらエラーだしな。


昨日の風景。

手書き撤収風景

他の大学がパネルをどーんと用意しているにも関わらず、こんな感じの。貧乏くさくてよい。


ET2003二日目終り。

今日はなんか、終了後に軽食とビールが出てきたんだけど、その飯に群がる人の群れが凄まじかった。一瞬で飯消えてたし。あさましい・・・(含俺)。だって寿司だったし。

しかし、配膳してた、コンパニオンのおねーちゃん、「ハイエナみたいだよね」、とそのハイエナどもの目の前でおしゃべりしているのはどうかと思いました。「すみませんハイエナで」と答えてしまいそうになりました。

今日の戦利品はお茶とコーヒー。モノはなかった。


どっかに Gabriel benchmarks in Scheme ってないかなーって思ったら,あった.wiliki で発見.skimu さんありがとう.

_KM(Thu Nov 13 14:00:14 JST 2003)

  iTron → ITRON だってばさ

_アーパー(Thu Nov 13 17:07:46 JST 2003)

 組込みSchemeとかって京都の湯浅さんとかやってなかたっけ?ETにはないだろうけど

_今は昔(Thu Nov 13 18:07:43 JST 2003)

 久々にパラパラめくった、The Descriptor - a definition of the B5000 Information Processing System -, Feb., 1961. 40年前のBurroghs 5000のマニュアル。ALGOL用高水準言語マシンだけど、結構楽しめた

_ささだ(Thu Nov 13 19:47:24 JST 2003)

 iTron なんて書いてないしー。

_ささだ(Thu Nov 13 19:48:25 JST 2003)

 湯浅先生のところの、組み込みSchemeソフトウェア(LEGO Mindstorm用)ですが、組み込み用Scheme FPGAシステムを期待していたりしたんですが。

_ささだ(Thu Nov 13 19:49:37 JST 2003)

 どの辺が楽しげですか>ALGOLマシン

_アーパー(Thu Nov 13 21:11:55 JST 2003)

 ALGOLマシン←明日マニュアル渡します(全部英語! LEGO Mindstormは来年1月湯河原で本人から聞いてね

_ささだ(Thu Nov 13 21:17:09 JST 2003)

 一回早稲田で聞いてるんですけどね。湯浅先生のは。

_shudo(Thu Nov 13 21:46:48 JST 2003)

 ハイエナ結構!

_12(Wed)

おーわーらーなーいー。


横浜 くんだり のET2003 行ってきました.組み込みのイベント.

組み込み Ruby も組み込み Scheme もありませんでした.残念.

明日も行かなきゃいけない.大変.午後から.もし見てる人が居れば,農工大のブースに居るかもしれないのでコッソリ聞いてください.堂々と聞いてはいけません.コッソリです.


組み込みは素人なんですが,まぁ面白かったです.FPGAでなんとか,ってネタが多かった.

また,慶應山崎研では,SMTプロセッサを作って,実際にチップを発注したとか聞いた(他のブースで,「チップ作りはギャンブル」って文言が貼ってあったが,まさにそうだと思った.x千万円・・・.すげぇ).また,いろいろな研究データなんかも聞いてしまった.今度のSACSISネタらしい.非常に興味深い.

あとは組み込みLinuxネタ,組み込みシステム開発・開発支援ネタ,T-Engine,iTron系.WindowsCE 系は少なかった気が.テキサスインスツルメントのDSPブースがでかかった.ARM のブースでは Jazzele って単語が大きく出てたけど,説明が全然なくて萎え.

コンパイラのテスト屋さんってのがあるのは初めて知った.日本で一個だけらしい.一回テスト160万円らしい.15000のテストケースを走らせるらしい.


大学のブースが10個くらいあったんですが.なんというか,なんで他の大学は他の大学を回らないのかな? 他の大学のなんて見る価値が無いとでも思ってんのかね? スゲー不思議.俺は殆ど見て回った.話も聞いた.だって,企業ブースは面白くないんだもん.商品解説しかやってねーし.景品をもらいに,やっぱり回ったけど.(結構不作.面白いものはもらえなかった)

不思議.


なんか,common lisper が 6 人も居るのか? emacs もそうか.伝統的な Lisp は t なのかな.よく知らないけど.

考えてみると,emacs lisp, common lisp(xyzzy) 以外では scheme 処理系しか使ったこと無いな.


それだと,いつまでたっても選挙が終わらなかったりして.


現金なもので,HTML help にしたら,gauche がやっと頭の中に入ってきました.やっとオブジェクトシステムとか,モジュールとかが理解できてきた感じ.

#?=expr って,もうちょっと短くならないですかね.#=expr みたいな.目標は一文字なんだけど.

(d ...) を,標準にして欲しいかも,とか. #d expr としようとすると,2進数と被る.だから,#p expr とか.いっそ ##.

あと,__END__ があると嬉しかったりするけれど,全然 scheme 的じゃない.(exit) で済むんだけど,でも俺的終了の雰囲気(何)が出ない.#__END__ とかどうですかね.

exception 関係があとちょっと,という感じか.

CLOS の部分は,まだよくわかってないなぁ.define-generic/define-method あたりが空白なのが痛い.define-generic の存在意義ってなんだろう。

マニュアルなどについて,いろいろと考えることがあるけれど,まぁ今度のあのときにお伝えさせていただこう.

キーワードって何かと思ったら、キーワード引数に使うものか。使うのかな、キーワード引数なんて。

Identifier ってなんだろ。謎。


あと、リフレクションってどこまでできるんだろう。

遠藤さんに、モジュールイントロスペクション、クラスのイントロスペクションのページを教えてもらう。

例えば、現状で束縛されているシンボルのリストとか、そういうのって取れるのかな。構文のリストとか。

_shiro(Wed Nov 12 22:59:16 JST 2003)

 束縛はモジュールのハッシュテーブルにありまっす。構文も同じところ。aproposの実装が参考になるかも。__END__は、「ファイル末尾までコメント」というふうに解釈するなら自然に導入できるかなあ。ただ、'#'の後の文字ってのは貴重な資源なんで慎重に使いたいところ。'#?=' は、最初は '#?' だったんですが、例えばブレークポイントとか引数を表示するオプションとか後でいろいろ欲しくなりそうなので '#?' をデバッグ用に予約して次の文字で種別を指定することに。2〜3文字にしとくと便利なのは、デバッグ後にソースをスキャンしてデバッグスタブを取り除くのが便利なこと。1文字だと機械的にできないでしょう。あとSchemeはシンボルに使える文字が多いので、自由に使えるトークンがあんまり無いですね。

define-genericは明示的にジェネリックファンクションを定義するときにつかいます。TinyCLOSでは確か必須でした。Stklosではdefine-methodがその時点での束縛を調べて、同名のジェネリックファンクションが定義されていなければ、暗黙にdefine-generic相当の操作を行います。Gaucheでもそれを踏襲しました。ただ、これはトップレベルの束縛を操作するので、ポータブルに書くのは不可能です。

identifierはマクロ展開に使われるものです。ユーザにとってはあんまり必要ありません。identifierの名称は、hygienic macroの文献からとっています。

キーワードはCommonLispの影響ですね。

_ささだ(Thu Nov 13 08:37:36 JST 2003)

 いつもいつもありがとうございます。TinyClos では、add-method が代わりにやってくれる、と tc-tutorial にありました。

_11(Tue)

Rubyの文法ってよく知らないんですが、if cond then p 1 elsif !cond then p 2 else p 3 end こう書けるんですね。then なんて使ったことない。

Integer#[] を初めて知った。

nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 1 を、そうでなければ 0 を返します。

おぉ・・・。でも、きっと三日で忘れる。

{}[0] が普通に動いてちょっとびびる。でもあたりまえだった。

a   = [1,2,3]       # OK => a == [1,2,3]
a,*b = [1,2,3]      # OK => a == 1, b == [2,3]
a,(*b) = [1,2,3]    # OK => a == 1, b == [2]
a,(b,c) = [1,2,3]   # OK => a == 1, b == c == nil
(a) = [1,2,3]       # NG
(a,b) = [1,2,3]     # OK => a == 1, b == 2
(a,(b,c)) = [1,2,3] # OK => a == 1, b == 2, c == nil
((a,b,c)) = [1,2,3] # OK => a == 1, b == c == nil

難しい。


a == b == nil (a == b) == nil a == (b == nil) のどちらかになるだろうけど、自然な感覚だと全部一緒、とか、そんな意味にとってもらいたいような気がするけど、そうするにはどうすればいいんだろう。eqv? って、そういう点でいいな。

あ、 p(1 == 1 == 1) ってシンタックスエラーなんだ。不思議。

あれ? p(1 == 1 and 1 == 1) も駄目?

p(1 == 1 && 1 == 1) が true  アレレ。

p((1 == 1) and (1 == 1)) もエラー。んー?

p(begin (1 == 1) and (1 == 1) end) 、もとい p(begin 1 == 1 and 1 == 1 end) なら通った。あ、 p(( 1 == 1 and 1 == 1 )) でも通るのか。

p 1 == 1 and 1 == 1 も通るらしい。

世の中には不思議が一杯。


論語論具なんですが、小谷先生に聞いたところ、やりたいんだけどやる人がいないから保留中、なんだそうです。


m(def m(n)end) # OK
m(class A;end) # OK
m(1 and 1)     # NG

ちょっと不思議。


久々に積分なんて解いてしまいました。部分積分とか使っちゃって。スゴスギル。俺。もう全然覚えてねー。


つまんなかったんで更新。


計算機女学院。

構築子に迫る破壊子の陰謀。関数子の冒険。引数特定化子の活躍。

無理があるな。

他に子が付くのは・・・。


irc より。

反復子、型修飾子、記憶クラス指定子、区切り子、拡張子、入れ子、記述子。

分離子。代入子。選択子。


>ruby -e "p 1000000000000000000 ** 100000000000000000"
-e:1: warning: in a**b, b may be too big
Infinity

メモ。


ぐあー。家族が借りてきていた Matrix Reloaded が(返却期限内に)見れなかった。残念。


TrackIR2 Box Set。これでドット絵とか描いたら大変なことになりそう。

_mput(Tue Nov 11 08:35:24 JST 2003)

and は「文」です。「式」じゃないので、引数にできません。 でも () でくくったりすると式に還元されるので、引数になり得ます。 最後のやつはたぶん (p 1==1) and 1==1 と解釈されてます。

……とかいう話は、リファレンスマニュアルの「 Ruby の落とし穴」に書いてあったと思います。

_ささだ(Tue Nov 11 09:29:34 JST 2003)

 おぉ、なるほど。文にすると、何が嬉しくなるんだろう?

_なかだ(Tue Nov 11 10:56:50 JST 2003)

 andや&&は制御構造なので、優先順位が低いものもあったほうが嬉しい場合があります。

_maeda(Tue Nov 11 11:44:37 JST 2003)

 Ruby私にはムズすぎ。「奥が深い症候群」。Schemeだと(eqv? a b '())。あー分かりやすっ。

_maeda(Tue Nov 11 11:54:54 JST 2003)

 おっと、3引数以上のeqv?は規格には無いのか…数値の=は3引数以上もOKなのに。

_ささだ(Tue Nov 11 12:05:57 JST 2003)

 優先度の話はわかるんですが、なぜ && は式で and は文なのかなぁ、と思ったのです。文同士をくっつけたりとか、そういうことになるのかな。

_maeda(Tue Nov 11 12:15:04 JST 2003)

 Cだと「式に;をつけると文」に対し、Rubyは「文を( )でくくると式」なんだね。( )でくくらないといけない理由は分からない。難しいなあ。

_なかだ(Tue Nov 11 12:54:07 JST 2003)

 引数よりも優先度の低い式は、「文」と呼ばれることがあります。

_アポォ(Tue Nov 11 20:12:11 JST 2003)

 いっちゃん汎用であちらこちらに顔を出す 識別子 を忘れとるぞ

_アフォー(Tue Nov 11 20:15:46 JST 2003)

 識別子が名前や番号を唱えて、やっと世の中のものすべてが、それぞれ個別に認識できるようになりましたトサ

_アホォー(Tue Nov 11 20:17:44 JST 2003)

 先のくだりは、計算機女学院オブジェクト年クラス組の面々かなぁ

_向井(Tue Nov 11 20:21:41 JST 2003)

 演算子と修飾子は?

_six(Tue Nov 11 20:34:08 JST 2003)

 「子」じゃないと入学できないのか?

_ささだ(Tue Nov 11 20:37:02 JST 2003)

 大和撫子マンセー。

_shest'(Tue Nov 11 21:28:57 JST 2003)

 最近では「子」が付く名前のコは少ないんじゃないかと思うですよ

_fukumori(Tue Nov 11 22:34:41 JST 2003)

論語(こっちの方が良い名前に聞こえる :)もとい、論具の情報ありがとうございます。 保留中とはもったいない…と言っても、これだけでは分からない人の方が多いと思いますので、僭越ながらリンクなどを。

_ささだ(Tue Nov 11 22:36:37 JST 2003)

 ガーン。論具だったか。失礼しました。

_アフォー(Wed Nov 12 12:44:47 JST 2003)

 カナCobolにはじまり、日本語フォース、最近はオブジェクト指向日本語(OOJ)やドリトルなんてのもあったりする。どれも、まぁ面白いよね、とか、教育にはいいよね、とか言われているけど、大規模なプログラムを作る気には決してならないのであった。

_パッパラパー(Wed Nov 12 12:47:52 JST 2003)

 かくいうアタイも昔に日本語プログラミング環境みたいなことをなめたことがある。けれど、答えは否定的なのよねぇ...

_アーパー(Wed Nov 12 12:51:49 JST 2003)

 論具やドリトルは面白いと思ったのよ、言語モデルに適切にマッチしているから。C、Cobol、Forthの日本語的書き方しても、どうもなぁ。教育にいいとか言われてるけど、教えるのに本当に大変なのは、表層的な文字ではなくて、プログラムの考え方だったりするのよ。保守が楽とか、仕様書と一体化、なんて論理もあるけど、結局、わかりやすいかと言えばそうでもないのよ。う〜む...。

_後ろ向き(Wed Nov 12 12:53:47 JST 2003)

 まぁ、あまり、ここで書くべきことではなかったわね。失礼!

_KM(Wed Nov 12 14:17:18 JST 2003)

 小谷研で孔子をデータベース化するのかと想像してしまったではないか.責任トレ :-)

_maeda(Wed Nov 12 19:12:27 JST 2003)

 Mindとか。

_10(Mon)

はじめて Html Help を作ってみる。意外と簡単。まぁ、texi2html で既に整形されてるってのもあるが・・・。gauche のマニュアル。


なんとなく。Ruby は誰も使っていない機能ってのは、あんまり無いような気がするけど、Gauche は結構ありそうだなぁ、とか思う。


この場合、Lisper はどう答えるんだろう。なんとなく、括弧はつかないんじゃないかと思ったり。

( func a b c )
  ^^^^^^^^^^   ここだけ見て。

まぁ、好きに解釈してもらおう。

括弧を強制される言語は使いたくないなぁ、とか思ったりするけれど、C は書ける。染み付いちゃってんのかな。Java は書けないし。


prog を微妙に更新。


高階インタプリタって、なんかカッコイイですね。


小雨だと思って油断してたらもう濡れ濡れ。


ここだと AA が貼れないのか・・・。

             \ │ /
              / ̄\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            ─(゚ ∀ ゚)< はすけるはすける!
              \_/  \_________
             / │ \
                ∩  ∧ ∧ ∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ∩∧ ∧ ∩  \( ゚∀゚)< はすけるはすけるはすける!
はすける〜〜〜! > (゚∀゚ )/   |    / \__________
________/ |     〈    |    |
          / /\_」   /  /\」
           ̄       / /
                 ̄

難しい。選んだ単語に他意はありません。


->nantoka はあるけど、 <-nantoka は無い。

_maeda(Mon Nov 10 16:10:58 JST 2003)

 Rubyで誰も使ってない機能: redoとか。rescueと関係無いほうのretryとか。callccとか。

_ささだ(Mon Nov 10 16:53:47 JST 2003)

 どれもツカイマシタ! Rubyで有用なものを作っているかは謎ですが・・・。

_fukumori(Mon Nov 10 22:18:50 JST 2003)

 Smalltalk使いましょう。丸括弧をほどんど使わずにプログラムが書けます。

_shudo(Tue Nov 11 00:29:16 JST 2003)

 BASIC使いましょう。丸括弧を…ちょっとだけ使えばプログラムが書けます。PRINT "HELLO!"

_t15u(Tue Nov 11 02:13:45 JST 2003)

 Forthなんかどう?丸括弧はコメントだっけ。

_ささだ(Tue Nov 11 10:15:36 JST 2003)

 別に括弧恐怖症とか、そういうわけじゃないんですが・・・。

_9(Sun)

映画化されたファンタジー小説のヒロインってなんだろう、って悩んでしまったけれど、ハーマイオニーか。

あれはヒロインなのか、って話もあるが・・・。

うわ、これスゲー怖い話なんか。

一瞬さよならを(略)を想像したが。どうオチつけるのかな。


(define ??? 'unspecified-result)

ウワ・・・。

_8(Sat)

業務連絡。ごめんなさい。第3版なんてねーっス。ANSI Common Lisp と間違えていました。

あと、Common Lisp the Language, 2nd Edition で原文が手に入るようです。ps を pdf に変換できることを確認。1000ページを印刷する気にはなれないけど。


調査の結果、タブ幅を3にしている人は、128にしている人と同じくらい珍しいことがわかりました。


学研電子ブロックのIPv6モジュールを作ってみた(/.j)。スゲー、面白い。でもモジュールデカイな。

学研電子ブロックEX-150復刻版用拡張キット:光実験60、ってのがあったのか。買っちゃうかも。でも、結局やらないであそばせてしまいそう。


高校生相手に研究を説明するそうです。でもどーせ女の子なんて来るはず無いのでやる気0です。

何をしゃべろうかな。


意外に女の子がいてしまったりしたのでちゃんと喋りました。ちょっと嘘。


まずい、色々なことに対して果てしなくやる気が無い。この時期にこれはマズイ。


やっぱり、田中優美清春香菜ってのは凄い名前だ。

_maeda(Sat Nov 08 11:01:43 JST 2003)

 CLtL2、以前はHTMLでちゃんと読めたんだけど、今はcontentsほかいくつかのページが欠けてますね。indexからたどると本文はちゃんとあるんだけど。私はhtml.tar.gzを持ってきて、自分のPCにHTMLツリーを置いてます。

_ささだ(Sat Nov 08 18:40:59 JST 2003)

 今落としてみたんですが、node1.html という名前で contents はあるようでした。

_maeda(Mon Nov 10 16:13:31 JST 2003)

 昔は、自分のディスクでHTML展開しなくても、CMUのサイトで全部ちゃんと読めたんよ。

_ささだ(Mon Nov 10 16:46:48 JST 2003)

 なるほど、そういうことでしたか。

_7(Fri)

sum = [0,0]
ObjectSpace.each_object(Module){|m|
  next if m.ancestors.include?(Exception)
  #p m, m.ancestors
  sum[1] += m.ancestors.size
  sum[0] += 1
}
p sum[1]/Float(sum[0])

平均 4.427 。Exception の類を除くと 2.96 階層。もちろん、バージョンによって微妙に違うけど、大体こんなん。

要するに、昨日のあれは意味無しってことで。


すてプリ終り。このネタで何冊もどうやってひっぱんてんのかな。まぁ、綺麗に終わってよかったねってことで。


[SML 6355] Re: プログラムや論文に自国語を使うことの是非再び。このスレッド自体とても興味深いのですが。

スタックって1955年だったのか。へぇx18。(と関係ないところで感心)


そういえば、今週末は本学の学祭です。もし本学に興味のある人がいればお気軽にどうぞ。

もし本研究室に興味のある人がいれば、言ってくれればご案内したりしなかったり。


http://www.namikilab.tuat.ac.jp/~sasada/diary/200311.html#cc6-17 ですが、やっとアルゴリズムがわかった。うーん、なるほど。速そうだ。

_こうじ(Sat Nov 08 01:23:54 JST 2003)

 学祭行ってみたいのですが、遠いなぁ。関○宏って気になります。

_6(Thu)

if(...){
  return ...;
}
return ...;

と、

if(...){
  return ...;
}
else{
  return ...;
}

どっちがいいんだろう。なんとなく、後者がいいような気がする最近。


ちょっと速くなるかもしれない Object#kind_of? の、ruby レベルでの実装。

class Class
  attr_reader :__ancestors, :__depth
  
  def setup
    @__ancestors = self.ancestors.map{|k|
      if k.class == Class
        k
      else
        nil
      end
    }.compact[1..-1].reverse
    @__depth = @__ancestors.size
  end
  def kind_of_helper klass
    d = klass.__depth
    if self == klass or ((d < @__depth) && (@__ancestors[klass.__depth] == klass))
      true
    else
      false
    end
  end
end

class Object
  def kind_of2 klass
    if klass.class == Class
      self.class.kind_of_helper klass
    else
      kind_of? klass
    end
  end
end

#################################################
## Benchmark

class A;end
class B<A;end
class C<B;end
class C0;end
#
1000.times{|i|
  eval <<-EOS
  class C#{i+1} < C#{i}
  end
  EOS
}
klass = C1000
klass.setup
A.setup
B.setup
C.setup

obj = klass.new

require 'benchmark'
include Benchmark

LC = 10000

a = []
bmbm{|bm|
  bm.report{
    LC.times{
      obj.kind_of2(B)
    }
  }
  bm.report{
    LC.times{
      obj.kind_of?(B)
    }
  }
}
Rehearsal ------------------------------------
   0.078000   0.000000   0.078000 (  0.078000) # 改良版
   1.531000   0.000000   1.531000 (  1.531000) # 普通の
--------------------------- total: 1.609000sec

       user     system      total        real
   0.078000   0.000000   0.078000 (  0.078000) # 改良版
   1.547000   0.000000   1.547000 (  1.562000) # 普通の

ruby での実装なのに、20倍速くなりました! C で書き書きすれば、もっと速くなると思います。

・・・そもそも、1000個もクラス階層ツクンネーヨ! 損益分岐点は250階層くらい。ツクンネーヨソンナノ! うーん、数字のマジック(嘘)。

Cレベルで書いたら、どうなるかは不明。ivar 2個にアクセスするから、5階層くらいでミスすればペイするのか。条件分岐が増えるから、もっとかな・・・。

はじめの object.c いじり。やってみたら、誤差の範囲。やっぱり階層が低いと遅くなる場合が多かった。1割ぐらい。

VALUE
rb_obj_is_kind_of2(obj, c)
    VALUE obj, c;
{
    VALUE cl = CLASS_OF(obj);

    switch (TYPE(c)) {
      case T_MODULE:
      case T_CLASS:
      case T_ICLASS:
	break;

      default:
	rb_raise(rb_eTypeError, "class or module required");
    }
    
    if(c == cl){
	return Qtrue;
    }

    if(TYPE(c) == T_CLASS){
	static ID id;
	int od, td;
	VALUE v;
	if(id == 0){
		id = rb_intern("@__depth");
	}
	st_lookup(RCLASS(c )->iv_tbl, id, &v);
	od = FIX2LONG(v);
	st_lookup(RCLASS(cl)->iv_tbl, id, &v);
	td = FIX2LONG(v);
	if(od > td){
		static ID id;
		VALUE table;
		if(id == 0){
			id = rb_intern("@__ancestors");
		}
		st_lookup(RCLASS(c)->iv_tbl, id, &table);
		if(RARRAY(table)->ptr[td] == cl){
			return  Qtrue;
		}
	}
    }
    else{
        while (cl) {
	    if (cl == c || RCLASS(cl)->m_tbl == RCLASS(c)->m_tbl)
        	return Qtrue;
            cl = RCLASS(cl)->super;
        }
    }
    return Qfalse;
}

こんな書き方でいいのかなぁ。

static ID id = rb_intern("...") でいいのか・・・。

一応元ネタ


ごみ捨てに行くか迷ったが、人が居ないんで行かない。


オブジェクト指向言語におけるメッセージ送信の高速化技法を読んで。

あー、もっと早くこれ読んでいればなぁ。せめてあと2年早ければ・・・。なんか話には聞いた覚えが無いことも・・・。

やばい、キャッシュしかわからない・・・。動的な場合、ディスパッチ法ってメソッドが追加されるごとにサブクラスに対してその変更をディスパッチする必要があるような気がするんだけど。表の圧縮ばかり論じているが、表の更新のオーバーヘッドのほうがでかいんじゃないだろうか。表はハッシュにすりゃえーやん、とか思ってもみたり。

cecil というのは全然知らない。まずいなぁ。知らないことばかり。

静的解析はrubyでは無理だし。リテラル部分を頑張る、ってのはできるか。

VMの命令ディスパッチの問題と、OOのメソッドディスパッチは、本質的には同じ問題、なのかなぁ。レシーバが絡むので後者のほうがより難しいのか。

5章で述べている Cone(X) というのは Clone(X) の誤植? いや、Cone(X) でいいのか。なら、5.3 の Clone(X) が誤植か。


情報工学について学んでいるものとして、これは読まないといけないだろう、ということで古本屋で「ゲームセンターあらし」を買ってきて読む。

いや、スゲー。ムカデで炎でムーンサルトですよ。血まみれでゲーム。

どんなに舞台が巨大になってもゲームの解像度は変わらない。ドット、でかすぎませんか。

参考文献:ゲームセンターあらし必殺技大全集

_6(Thu Nov 06 04:30:27 JST 2003)

 文字数が少ないのは前者、見た目でわかりやすいのは後者 一長一短

_み(Thu Nov 06 07:41:08 JST 2003)

 僕はわかりやすさから後者に一票。

_なかだ(Thu Nov 06 10:06:40 JST 2003)

速度もありますが、__ancestorsをキャッシュしとくメモリスペース(ともちろんsetup)のコストとのトレードオフでしょう。 __depthだけ覚えておいて途中で打ち切る、というのは有効かも。

_t15u(Thu Nov 06 11:05:42 JST 2003)

 ifとelseが対等に感じたら後者、ifがエラーケースのようなときは前者にしてるです。

_maeda(Thu Nov 06 11:40:27 JST 2003)

 このへんとか オブジェクト指向言語におけるメッセージ送信の高速化技法

_KM(Thu Nov 06 12:25:36 JST 2003)

 私の場合意味で使い分けてます.純粋な函数なら後者,Ruby だったら return じゃなくて直に値を書きます.前者のコードは,エラーなら先頭で蹴って,でなきゃあれしてこれして,という,else が大きいとか手続き指向な時.

_ささだ(Thu Nov 06 12:34:30 JST 2003)

 PDF、落ちてないですね。図書室でコピーすると汚いから嫌なんですよね・・・。

_shudo(Thu Nov 06 13:25:20 JST 2003)

 情処のその小野寺さんの記事、えらく懐かしいです。OO言語の実装について全然知らなかった頃なので、へー、ほー、すごいなー、と随分楽しく読ませて頂いた記憶があります。

_maeda(Thu Nov 06 13:53:03 JST 2003)

 情処会員なら無料でPDFがダウンロードできます。

_ささだ(Thu Nov 06 14:09:40 JST 2003)

 ガーン、そうだったのですか・・・。図書室で延々と探してしまいました。しかも「論文誌」を。見つからないはずだ。

_kjana(Thu Nov 06 17:11:45 JST 2003)

@ancestors = self.ancestors.select {|k| k.is_a? Class and k != self}.reverse とか.あんまり変わらないか.

_kjana(Thu Nov 06 17:26:50 JST 2003)

Euslisp が何か面白いことしてたんじゃなかったっけかな.... 定数時間だったか O(logn) だったかでクラスの比較ができるっ ての.誤解か記憶違いかもしれないけど.

_ささだ(Thu Nov 06 18:49:16 JST 2003)

 クラスの比較って何するんだろ。

_fukumori(Thu Nov 06 20:55:16 JST 2003)

 「あらし」、コロコロコミックの連載第一回目から読んでました。思い起こせばROMとかRAMとかいう言葉を覚えたのもあのマンガからだったなぁ…

_shudo(Thu Nov 06 21:01:20 JST 2003)

 任天堂のゲーム&ウォッチ、親は買ってくれなかったなあ... たくさん持ってる友達にやらせてもらってたっけ。

_なかだ(Thu Nov 06 23:07:29 JST 2003)

 でも結局レバー動かすのね。当時のゲーム機ってCPUでチャタリングフィルタしてたのかなぁ。

_kjana(Fri Nov 07 15:50:57 JST 2003)

クラスの比較っていうのは変ないい方でしたね.オブジェクトの型 チェックの話といった方がまだ正しい.ということで,こんな話. <http://www.etl.go.jp/~matsui/eus/imp/implementation.html>

_ささだ(Fri Nov 07 20:24:15 JST 2003)

 そのページ見ても、アルゴリズムわかりません・・・。何やってんだろ。

_5(Wed)

教育方法の研究者が教育者として優れているとは限らない。


富豪的プログラミング。tab128

縮小するとわけがわかりませんね。


5万円下ろしてきました。なぜか財布の中には千円しかありません。何故でしょう。

答え:借金返済。


LDOCEの辞典かって来ました。最近の辞典には練習問題が CD-ROM で出来ちゃったりするのか・・・。スゲー。

この辞書ソフト、常時動かしておくには50MB食うのでちょっと、という気はする。

アクティベータってどうやって使うものなんだろ。

pop-up 辞書、辞書引きのタイミングが微妙。

_み(Wed Nov 05 13:43:41 JST 2003)

 確かに、教育の分野を研究してます、がいい先生ではないよね。

_shu(Wed Nov 05 17:20:51 JST 2003)

 研究方法の研究者が研究者として優れているとは限らない。…わけわか。

_4(Tue)

朝だよ・・・。

現在、工程管理の必要性を痛感しております。要するに、いつものごとく、仕事をほうっておいて、今泣いているわけですが。コンスタントにお仕事は進めていきたいものです。有能な管理者というのは、ほんと貴重ですね。

現在の私の状況は、上に管理者が居ない、要するに自己管理ってやつですか。なので、どうしても甘える。目を気にしない、というのはとても大変。


というわけでですね、有能な秘書が欲しいですね。秘書。あこがれますね、響きが。

秘書というと、目がキリっとしたバリバリ仕事ができるお姉さまタイプと、それと反対のドジっ娘があると思うんですが、私は後者がいいです。(次の投票はこれでいくか)別に妹がいいとか、(略)ちゃまと呼ばれたいとか、そういうわけではありません。秘書がイイのです。なお、後者がいい理由は、こんな朝っぱらからは書けません。それに、一応研究日記なので。

さて。ですが、世間一般では、前者のイメージが多いように思います。殻の中(略)のミュ(略)とかのイメージがぴったりって感じですか。でも、姉(略)のいる(略)のようなののほうがいいなぁ。ほのぼのしてて。まぁ、あれは姉(略)がその対になるようになっているからだとは思いますが。

そもそも、秘書なんだから、仕事ができてナンボなので、前者のイメージが大きいのですかね。

まぁそんなわけで秘書募集中です。ドジっ娘限定。


こんなこと書いてる間に仕事をしろ、って話もある。スミマセン。朝から何を書いてるかな。でも、徹夜あけなので、それなりにハイ。


ウェハースのお菓子を無茶苦茶潰してしまった。ウワーン。


話題(?)の英英辞典が生協にあったんで欲しかったけど札がないので買えなかった。無論、小銭をそれだけ持っているわけはない。うーん・・・。


世の中の 8% の人はタブ幅が128らしい。

残念ながら、xyzzyの上限値は32だった。秀丸ではそもそも2,4,8しか選べない。MSVC6.0では64。おぉ、凄いぞ VC6.0。

おぉ、emacs では 128 できた! でも、私はターミナルでしか使わないのでウィンドウ幅が80文字。なかなかシュールだ。1000まで設定できるのか。

_み(Tue Nov 04 12:33:05 JST 2003)

 お望みとあらば、しましょう工程管理!けれど、なぁ、企業ぢゃあるまいしなぁ...

_ささだ(Tue Nov 04 13:11:37 JST 2003)

 ドジ(略)じゃないので嫌です。

_み(Tue Nov 04 15:32:31 JST 2003)

 ↑の感性、正しいよなぁ。ワシもイヤや、工程管理されたら。

_み(Tue Nov 04 15:33:22 JST 2003)

 しかし、有能は秘書はいいよね。この響き。妙齢なご婦人の秘書なんて...セクハラかなぁ。

_ささだ(Tue Nov 04 18:49:41 JST 2003)

 先生が言うとセクハラじゃ。

_3(Mon)

日記なんだから一日の終りに書くものだよな・・・と一日のはじめに書く。んー。

家でごたごたあって、何も手につかず。いや、ごたごたを理由にしちゃだめだけど。まずいなぁ、色々。

そういえば、母親が車をはじめて買った。免許もこないだ取ってた。スゲー。負けてられん。


コーディング時のインデントを聞いてるんじゃないから、なんか外しちゃったなぁ・・・。

右から左へ書く言語は、マイナスになっちゃうのかしらん。


外国人のことを、外人というのは島国意識である、相当な差別的な発言である、と中学のとき、社会の先生に言われたのを、ふと思いだす。というか、私が外人と言った発言に対して晒し挙げたんだよな・・・。なかなかトラウマ。


どれくらい似ているか。焼きそばvs.ラーメン


異種族接近遭遇。異種族接近遭遇


今更だけど、写真撮影って難しい。


SEA-SPIN CMM[R] v1.1 Official Japanese <BR> - Printed Documents & Open PDF Page (in Japanese JIS) -(/.j)。よく知らないのでメモだけ。


やっとやっとやっとやっと頭がまわってきた。


財布から札が消えた! 事件。

犯人は俺だ!(即解決)


Xeon の結果が妙に悪いのは、キャッシュの追い出しが激しくなっちゃってるからぢゃないでしょうか。

釈迦に説法かも。

_金光雅夫(Mon Nov 03 06:49:37 JST 2003)

 今日は文化の日、曇りだけど、なんだかいい気分です。

_あぴる(Mon Nov 03 18:10:46 JST 2003)

 全く似てないような…>らーめん・焼きそば

_fukumori(Mon Nov 03 22:48:40 JST 2003)

 というか、袋に書かれた「守りつづけた5つの秘密」というのが気になりました。

_ささだ(Mon Nov 03 23:22:14 JST 2003)

 スーパーなどで確認してみてください>5つの秘密。袋裏面でばらしてます。守りつづけなくてもいいのかなぁ。

_こうじ(Mon Nov 03 23:23:28 JST 2003)

 でもサッポロ一番はうまいよなぁ〜。

_2(Sun)

頭がいろんな角度から腐ってる・・・。

エアマスター終り。無茶苦茶なまとめ方だな。まぁ、回数が足りないのはわかるが。

次は・・・。


アレとかナニとかアニメ化するんなら、デモンベインアニメ化してくれないかなぁ。


次の投票何にすっかな。何も思いつかない。


BitBlt は bit block transfer の略。

yunWkさんに教えてもらう。へぇ〜 x 13。


全日本就職活動選手権大会。

_shudo(Sun Nov 02 22:51:11 JST 2003)

 全日本 やまいどう 選手権大会。ちばしがさが!

_愛媛(Tue Jun 22 10:25:54 JST 2004)

 ばかになれる!!!!!!!

_aaahjknguimnkhjgmi(Tue Oct 05 12:08:32 JST 2004)

 ohnikmoklolkklll;;p;@pll.@l:p@j.pl:.lpjp.

_aaahjknguimnkhjgmi(Tue Oct 05 12:08:34 JST 2004)

 ohnikmoklolkklll;;p;@pll.@l:p@j.pl:.lpjp.

_aaahjknguimnkhjgmi(Tue Oct 05 12:08:36 JST 2004)

 ohnikmoklolkklll;;p;@pll.@l:p@j.pl:.lpjp.

_1(Sat)

えっと、Google様はなんでも知ってるらしいですよ>一ヶ月

月のはじめから何書いてんだ俺は・・・。

Google を MS が買収したがってるって、凄いですね。さすが金持ち。


4時から18時まで寝てしまった。

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