K.Sasada's Home Page

Diary - April 2003

研究日記

卯月

_30 (Wed)

仕事関係ではメモを取らない,というのに少しびっくりしました(逆だと思った).なるほど,そういう見方もあるのか.

鳥頭なのに,基本的にメモを取らない(取れない)人間なので,やっぱりメモをとる習慣を着けたいなぁ.

rucheme(scheme のへぼ実装),で,評価方法を正規順序にしてみる.引数をどうやって扱うか,って話ですけど.訳語は SICP 和田先生訳で.

(define (twice x) (+ x x))
(twice (+ 1 2))

; 作用的順序の評価(applicative-order evaluation) 
; 要するに通常の scheme の順序 =>
(twice (+ 1 2)) =>
(twice 3) =>
(+ 3 3) =>
6

; 正規順序の評価(normal-order evaluation)
; 非正格な言語みたいな =>
(twice (+ 1 2)) =>
(+ (+ 1 2) (+ 1 2)) =>
(+ 3 (+ 1 2)) =>
(+ 3 3) =>
6


;; もう一例
(define (first x y) x)
(first 1 (/ 1 0))

; 作用的順序 =>
(/ 1 0) をやって,zero diveded error

; 正規順序 =>
(first 1 (/ 1 0)) =>
1 ; エラーしない

うーん.だから? とか言われると非常に困るんですが.必要になるまで評価しない,要するに遅延評価が言語自体の規約としてやるわけで.

これに graph reduction(でいいんかな)とか付けると副作用の無い嫌なschemeになりそうだなぁ.

で,なんでこの機能が欲しかったんだっけ? 自分でも忘れてるな.

_28 (Mon)

Fully-functional Miniature Notebook Planned.タイトルだけを見て,副作用がないようなノートが開発されたのかと思ってしまった.

やまだあきらさんが日記でかかれていたインタビュー術!,本とは関係ないんですが,本を読むときってやっぱりメモなりを取るものなんでしょうか.全然そういう習慣がなく.だから,印象深いところしか覚えてないんだよなぁ.考えてみるともったいない話なのかなぁ.

これから学びたい言語は?.なんで最高得票数が1なのだろう.というか,Lojban と Charity は初めて知りました.Charity って,雨を降らせるための言語なんですか(絵だけ見てそういう).

就職の話をしてしまった.そうかぁ,のほほんと生きてちゃ駄目かぁ・・・.

うへぇ,モニタに10万か・・・.さすが人気ライター.

やっぱりPCはどうでもいいけど入出力装置には金かけるべきだよなぁ.あと,椅子.

Reduction order & infinite lists .べんきょー.

なるほど,double x = x + x のときに,double(1+2) とすると,(1+2) + (1+2) となって,(1+2) は一度しか評価されないが,plus x y = x + y のとき,plus((1+2),(1+2))としたときの(1+2) + (1+2)では(1+2)が2度評価される・・・のか? うーん,Haskell の実装見ないとわからんなぁ.これでいいなら実装の想像は付くんだけど,

う,注釈の仕様,2重丸括弧で包むのは駄目だな・・・.(*1)うぅ,ルールの一貫性がなくなってきた.

自分で言うのもなんだけど,rucheme 汚いなー.全部やり直すか.

どうでもいいけど,delay と lambda での,遅延評価の違い.

((lambda (x)
   (force x)
   (force x)
   ) (delay (begin (display 'nyo) (newline))))

((lambda (x)
   (x)
   (x)
   ) (lambda () (display 'nyu) (newline)))

; =>
; nyo
; nyu
; nyu

accumulater 的な,副作用のあるようなものだとどうなるんじゃろう.

(define (accum x)
  (lambda ()
    (set! x (+ x 1))
    (display x)
    (newline)
    ))

(define ac (accum 0))

((lambda (x)
   (force x)
   (force x)
   ) (delay (ac)))
(display "--\n")
((lambda (x)
   (x)
   (x)
   ) (lambda () (ac)))

; 結果 =>
; 1
; --
; 2
; 3

うーん,まぁそうなるか.全部 force してしまうような,まぁアレなんかはこういうことはしないんじゃろか.

外へ continuation で脱出するようなやつは,2度脱出しないのだろうか.汚い例だけど.

(define prm
  (delay 
    (call/cc (lambda (cont) cont))))

(let
  ((c (force prm)))
  (display 'outer)
  ((force prm) (display 'inner)))

; => 
; inner , outer という単語が並ぶ.つまり,(c (display 'inner)) ってやってんのといっしょ.

そんな難しくなさそう.って,例が変だ.

(define c ())
(begin
  (call/cc
   (lambda (cont)
     (set! c (delay (cont #t)))))
  (display "hello\n"))

(force c)
(force c)

; =>
; hello
; hello
; hello

あれ,飛んでる? てっきり #t #t って返るのかと思った.

・・・独演会ってなんだ.もう Rava で話すのはいやー.でも,ネタはそれくらいしかなかったりする.

すみません,恥ずかしながらコンビネータについて全然よくわかってません.勉強します.というか,ほんとに恥ずかしいんですが,λ計算とか,何が肝なのかよくわかってません.むぅ.誰か授業やってくれないかなぁ.

やばい,全然わからん.猿でもわかる計算理論,とか,どっかに無いものか.


*1 注釈のテスト.

_27 (Sun)

うーん,不思議な接点があったもんだ.もう陸上なんて思い出せないなぁ.

春の山吹.

ruby-talk 70111.そうかー,スレッド間でパイプ使っちゃうのか.

home page of GridFlow.んー,何するのかよくわからない.

ruby-talk 70175.あぁ,面白いなぁ.

def with(object, &block)
  object.instance_eval(&block)
end

with "abcdefg" do
  puts "My length is #{length}" #=> 7
end

しかし,流量多すぎだよ・・・.ruby-talk.


う,xyzzy の haskell-mode が欲しい・・・.meadow を入れてみたものの,やっぱり野暮ったくていけない.

今日はこれからライブ.2ヶ月楽しみにしていたライブ.


原宿まで行って来ました.ライブ.

ファイナルファンタジー(ゲーム)の曲をロックで生演奏,という企画だったんですが,素晴らしかった.妖星乱舞が生で聞けるとは思わなかった.いやー,ほんと凄い.

_26 (Sat)

今日も数学です。もう頭ぐちゃぐちゃです。

ついでに電源入れても反応しなくなってしまったノートPCをお店にもっていったのですが。

バッテリーを外したら元通りになってしまった。

こういうことはよくあることだそうです。とほほ。

_25 (Fri)

偉い人たちがたくさん.しゃべってることがわけわからん.生半可な知識じゃ通じねぇ.

なんか,頭の使わない飲み会がしたい.

あ,昨日あったキーボードはHHK Pro だったのか.欲しいけど,やっぱり高いなぁ・・・.

これから学びたい言語は?

Haskell が無いのがちょっと意外.出てるプログラミング言語,全部勉強したいとは思うんですが,それぞれ3日くらい集中してやれば文法くらいはわかるようになるのかなぁ.

今やりたいのはオブジェクト指向入門を読みながら Eiffelだったり.あと,話についていくために Haskell.

でも,やっぱり一番身に付けたいのは英語.仏語は第二外国語だったんだけど,もう忘却のかなたです.なんのために1年間やったんだか.

Ruby Shop(ruby-talk)ですか・・・.なかなか凄いセンスだ.紅玉,とか書かれてもなぁ.The Ruby Coreはちょっと欲しいかもしれない・・・.うーん,ほんとか? 夏とか,これなTシャツ着てコーディング? うーん.やっぱまつもとさんの顔写真?

オブジェクトの広場5月号.今月はインタビューないかぁ.うーん,よくわからない技術ばかりだー.

ソニー2002年度は当期純利益前期比7.5倍に - 電子機器、ゲーム、映画が牽引.うへぇ,7兆円ってなんだ.PS2を何個売ればいいんだろう.

たらいにかける青春.うーん.初心者にはようわからん技法でいっぱいですな.

結局渡辺製作所は名前かわったんですか.次は何ネタやるんだろ.

今後について,真剣に考えなきゃいけなくなった.はて,どうしよう.

久々に rucheme のソースを見たら,わけがわからん.でも,たらいまわすくらいは出来たらしい.しかし,ノーマルたらいは終わらない.

実験失敗.駄目駄目です.あーあ.北海道行けません.

というわけで,失意のうちに帰宅したんですが,雨ふってやがんの.失意の演出ですか,これは.荷物は重いし,もう踏んだりけったり.

同じ変数に束縛された〜,って引数なんじゃなかろうか.明日聞いとこう.


続・研究室内アンケート.

  • 英語 : 1
  • C/C++(セットらしい) : 1
  • Java : 3
  • SmallTalk : 1
  • Ruby : 2
  • CSS(Cascading Style Sheet) : 1
  • アセンブラ : 1
  • PHP : 1
  • XML : 1

あと3人? うーん,Java かぁ.オブジェクト指向を学びたいので Java を勉強したい,とか言われてしまった.Java でオブジェクト指向なぁ,やっぱり余計なものが多すぎるような気がするんだが.

_24 (Thu)

筋肉痛.

ショックだったこと.ジーパンが入らなかった.うう・・・.

小ささってのは,KB全体の意味で,たとえばテンキーが入っていようが10x10cm だったら,それは小さいってことで(使いづらいぞ,きっと).バーチャルキーボードというのを一度つかってみたいな.電車の中でプログラミング.

rubyist に聞け.これから学びたい言語は?

研究室アンケート.これから学びたい言語は?

  • 英語 : 1
  • C/C++(セットらしい) : 1
  • Java : 1
  • SmallTalk : 1

日本的意思疎通(圏外からのひとこと).面白いなぁ.論文の書き方は,日本人的書き方じゃ駄目なんだろうな.

_23 (Wed)

Realforce は使ってみたいのですが,高いのだよな・・・.

小型にこだわってる人は少ないのかな.私の場合,作業スペースを確保するには,普通のキーボードじゃおっきすぎるのですよね.むかし/.jで見た指にはめるだけでできるキーボードってどうなったんだろう(*1)

わ,上智大学って Sophia University っていうんだ.

ゼミの資料にサブスレッド,って言葉を使っていたらサラブレッドに見えてしょうがない.

久々に運動する.バトミントン.もう,体ぼろぼろ.

かえりませうかえりませう.Prolog の宿題もボロボロ.全然わかんない.うーん.


*1 記事が見つからなかった・・・.

_22 (Tue)

聞いてしまった手前,(いつもどおり)ROMを気取るわけにもいかず,入力デバイスを書いてみました.RWikiの練習,というより RD の練習ですか.


ruby-talk:69831.大学でRuby授業か.いいなぁ.てすとどりぶんな授業って凄い.

_21 (Mon)

たらいまわし関数.

どうしても closerクロージャ版とブロック版の速さの違い,というかプロトコルの違いがわからないので,色々調べてみた.そしたら,どっちも変わんないのね.なんで処理時間が同じじゃないんだろー・・・,ってすげー悩んでみたら,答えは lambda(Proc.new)が遅いってことなのね.

require 'benchmark'
LC = 1000000
def yloop
  puts Benchmark.measure{LC.times{
    yield
  }}
end

def b
  yield
end

def c cl
  cl.call
end

yloop{
  b{1}
}
yloop{
  c lambda{1}
}
yloop{
  c Proc.new{1}
}

結果,

  3.890000   0.000000   3.890000 (  3.969000)
 25.235000   1.047000  26.282000 ( 28.421000)
 28.312000   0.984000  29.296000 ( 31.141000)

あれ,これってもしかして常識でしたか? ^^;


うーん,まだまだ勉強が足りないよな.とりあえず Haskell な環境を探すか.

うーん,その前に NOVA にでも通うか ^^; でも NOVA じゃ教えてくれないだろうなぁ.違和感はあったんですよ,違和感は.とか言う.抑え,といわれて何がなんだか全然見当が付かなかった私はもっと駄目ですか,そうですか.そうか,だから切り札,とか書いてあったのか.

Proc.call と yield のコスト差よりも, Proc.new とブロック渡しのコスト差らしいです.多分.

とりあえず英語の勉強に ruby-talk 読んでみよう.


遅延評価,って知識習得とかと似てる?

  1. SICP読書会でたらいまわし関数の話題が出る
  2. 勿論理解しない(できない)
  3. 数日後,コーディング大会やってるのを見るが,よくわかってないのでぼーっと見るだけ
  4. 数日後,関係ない(私でもわかる)部分にアラはけーん
  5. 弄ってみる
  6. よくわかんないけど全然速いのが現れる
  7. しょうがないのでたらいまわし関数について考える(評価)
  8. (希望的将来)たらいまわし関数の話題が出たら,復習しないでもかっこよく答えることができちゃったりする?(聞かれてもなぁ・・・)

随分遅いよなぁ.

要するに,授業中は寝ていて,テスト前1時間でぐわっとやる(*1)とか,そういう.


ホームページの略でHPってのはよく見るけど,ウェブページの略でWPとかは見たこと無いなぁ.

google で見る(ウェブページ and WP)と,皆無というわけじゃないですか.


というわけで,改めて RHG飲み会読書会,大変面白かったです.来月も出られたらいいなぁ.


FKB8579 を愛用してるんですが(適度に安いし),Fn + Ctrl が CapsLock になる仕様だけは納得いかん.これ,なんとかして直らないかな.

そういえば,rubyist はキーボードどんなのを使ってるのかしらん.


closer に打ち消し線つけたらえろーじゃーって読めてしまった.

いわしの頭.うーん,おまじないですか,考えたこともなかった.なんかつけてみようかな.バグが出たときに備えて m(_ _)m とか・・・.


そういえば,クレジットカードを作らないといけないらしいんですが,どこがいいんだろう.


ただいま車輪の再発明中です.

これをダラダラやってたら12時だ・・・.うーん.しかもこれ失敗だなぁ,スパゲッティスパゲッティ.


*1 カンニングの準備とか,いろいろ.

_20 (Sun)

偉い人がたくさん居ました.

中田さん無事に帰れたんだろうか.

13時間寝てしまった.


原先生のすげーかっこいー.なんでこんなに速いのかようわからん,というか,たらいまわし関数自体理解していないのに首突っ込むのが敗因か.

_19 (Sat)

偉い人がたくさんくるんだろうなぁ・・・.がくがくぶるぶる.

_18 (Fri)

うー,今日さえ終われば一段落.

ノートPC(MURAMASA)に,ACアダプターさしても充電してくれなくなった(認識しない).こんな忙しいときに,なんで・・・. 修理に出すしかないのかなぁ・・・.

刹那さって,素敵な言葉だ.刹那さ炸裂.


http://www.dm4lab.to/~kjana/memo/memo200304.html#m20030415

Self って名前は見たことあるんですが,どんなのかはよう知らんもので.勉強します.

変数とメソッドをわける意味って,効率以外にあるのかなー,とか.いや,意味的なものとかもあるとは思うんだけど,なんとかならんのかな.

逆に,全部変数,メソッドなぞ無いってのはどうなのかな.意味がわからんな,我ながら.

変数という概念が消えると,どうなるんだろう.環境? うーん.

リファレンスって,よく出てくるけど,OOの枠の中では,なんか特異なのかも,とか思ってみたりする.うーん.無いと駄目なのはわかるんだけど.いや,単にリファレンス(ポインタ)ってオブジェクトじゃないなぁ,とか思ってみたり.それが変数でありスロットなんでしょうけれど.うーん,自分でも謎.さすが日記.


なんかヤヴァイので Todo を書いてみる.

  • 履修届(授業がー)
  • バイクプール利用届
  • 某第二稿
  • 某かめられでぃと,関係書類作成
  • クレジットカード作り,パスポート作り
  • 人工知能特論の宿題(ぷろろぐー)
  • 某線表引き(というか,作業さっさと続けないと)
  • note pc のしゅうり
  • RHG, SICP-reading(todo?)
  • FIT 原稿作り,Xeon弄り
  • おべんきょう

忘れないようにしないと.いい感じの todo 管理ソフト(ソフトじゃなくてもいいけど)は無いものか.

FIT って書いてますけど.FIT ってご存知ですか? 私はよく知りません(マテ).しかし,一つだけ知っている重大な事実があります.それは,開催地が北海道なのです! というわけで,がんばって書かないとなぁ,という感じです.しかも9月なので,まだ東京は暑いはずです.これ以上の無いモチベーションです.


はっかーな人たちは,やっぱりコーディングの量がはんぱじゃない気がする.精進せな・・・.

Lispマシン用キーボード ですか.どのキーを何に使うのかわからん.

20年後って何があるんかな.何がないんかな.プログラミングをしている自分はいそうだな.

5000人とっぱー どんどんぱふぱふー.2003-4-18-5-14-47-30 な infoweb の方,豪華商品をプレゼントしてください.


ACS再投稿終わり.かえるぞー.明日は1時か.

_17 (Thu)

あと1日.


うおー,Prolog たのしー.全然わかんねー.


日記は日記だよなぁ.主目的は,コミュニケーションツールとか,情報源とか,備忘録とかでは無いわけだ.それらに特化しだすと,日記じゃなくなるような気がする.

別に,それを否定するつもりもなんもないけど.そういえば,最近話題ごとにseparator入れるようになっちゃったなぁ.

なにいってんだかさっぱりわかんねー.でも,日記ってそういうもんじゃないのかなぁ(偏見).

でも,最近,自分の書いたことをgrepすることあるなぁ ^^;.少しは情報源として考えたほうがいいのかしらん.

しかし,いまだにわからないのが,なんで blog とかなんとか,こんな異様な熱気があるんだ? これがどうしてもわからん.なんで blog なんだ?

HTMLとかでも,利用者がよってたかって考察してる図,ってあったのかな,って思うんだけど.俺が知らないだけな気もするな.

_16 (Wed)

てんぱってるなー・・・.

ブラックブラック2袋目ー.コーヒーとちゃんぽーん.

_15 (Tue)

あたりまえのことなんですが。

t = 10
def t
  'method t'
end

p t() #=> "method t"
p t   #=> 10

こうなるわけです。

変数をメソッドにするような言語って、無いんだろうか。あってもいいと思うんだけど。変数は全部 attr_accessor したインスタンス変数みたいに、メソッドになるの。こうしたときの得失って何かな。もちろん、変数アクセスは遅くなるけど、それは、例えば言語仕様から最適化することを規定するとか。Java とかの setter, getter みたいなやつは云々してしまう、みたいな。

これで、得って出てくるかな。うーん、どうなんだろ。send で変数がもらえる、みたいな?(嬉しいのか? それ)

言語的に、こういう考えってどうなのかなー。なんとなく、面白い話になるような気がするんだけど。


健康診断.不健康極まりない生活なので,何いわれるやら.

・・・体重が 4% 増し.計算機科学で 4% の高速化,といっても面白くもなんともないが(*1),体重が 4% 増しというのはつらすぎる.

運動しないと.


「はらたいらさんに全部」という言葉は,まぁある世代には常識だと思うのですが,たとえば平成生まれのこどもには通じないわけで.

それとも,ことわざっぽく残ったりするんだろうか.


またまた突っ込み.

【レポート】Prescottに追加された新しい命令セットを探る より,次のコードを引用.

bool flag = FALSE; // 処理が完了したかどうか調べるフラグ
....
while(!flag) { // 別のスレッドがフラグを書き換えるまで無限にループする。
// 何もしない
}

これを,MONITOR,MWAIT 命令を使うとこうなる.

bool flag = FALSE;
...
MONITOR(&flag); // EAX = &flag, ECX = 0, EDX = 0, MONITOR EAX,ECX,EDX
if( !flag ) MWAIT();// EAX = 0, ECX = 0, MWAIT EAX,ECX 

正確にはこのようにするなる.

bool flag = FALSE;
...
while(!flag){
  MONITOR(&flag); // EAX = &flag, ECX = 0, EDX = 0, MONITOR EAX,ECX,EDX
  if(!flag){
    MWAIT();// EAX = 0, ECX = 0, MWAIT EAX,ECX 
  }
}

MONITOR, MWAIT はあくまでヒントなわけで.たとえば flag に 0 を代入したって MWAIT は実行を再開しちゃうだろうし,そもそもデッドロック回避のために,MWAIT はてきとうに実行を再開するんじゃなかろうか,とか思ってるんだけど(違うかもしんない).つか,このコード自身はIntelのマニュアルそのまんまなんだけどさ.

ただ,この記事では,

記のような処理を擬似的にMONITOR、MWAITを使って書くと次のようになる。

とあるので,擬似的だからループをいれなかったんだ,と言われるかもしんない.


お,慶応って B2 から研究室配属するんですか.スゲー.(うちは4年次からです)


プロジェクトXをはじめてまともに見ました.おー,こうやって煽るんだ(*2)

「コンピュータは飽きない」という言葉に非常に共感を覚えました.

自由,という言葉に非常に大きな意味を持たせていたように思いますが,FSFとかのこと,どう思ってるんだろう.

しかし,メール送信のテスト,あれはやりすぎだろう・・・.わかりやすいけど.

iTron って言葉を使わなかったのはなんでなんだろ.


*1 分野にもよりますが・・・.
*2 巷のFlash作品しか見たこと無かったんだけど,ぉぉ,あのまんまだ.

_14 (Mon)

日がかわった.

某なにをやってみたんだけど,学校でやるもんじゃないな,これ.

あまりに人間的な飯が食いたくてジョナサンへ行く.うーん,深夜料金10%.


うーん,Ruby の標準的なベンチマークソフトって,やっぱり無いのか知らん.自分で作ると,説得力がなさげ,とか思ったんだけど,まぁしゃぁないか.

構文木を,ちょっとダンプしたいと思い,そういえば RHG にそんなツールがついてたなぁ,と思い出す.ruby extconf.rb => extconf.rb:25:in `open': Permission denied - "rubynode.h" (Errno::EACCES).よく見ると ruby 1.7 専用.がびーん.1.6 な時代遅れはくるなというわけですか.うー.むぅ,どうしてくれよう.つか, Pragmatic Programmers がみつからねーとかいう.Google様に聞いてみると,おぉ,あおきさんがきちんと用意してくれているじゃないか.さすがです.

いや,こんなのがどうなるか見たかっただけなんですけどね.

def fact(n)
  r = 1
  n.times{|i|
    r *= i+1
  }
  r
end

nodeDump-0.1.7 の結果.

NodeDump V0.1.7

NODE_NEWLINE:  [t.rb:3]
  NODE_DEFN:  method 8289 (fact)
    NODE_SCOPE: 
      NODE_BLOCK: 
        NODE_ARGS:  count = 1
          additional default values:
        NODE_NEWLINE:  [t.rb:4]
          NODE_LASGN: 
            NODE_LIT:  Fixnum: 1
            Assign to LV 3 (r)
        NODE_NEWLINE:  [t.rb:5]
          NODE_ITER: 
            Iterator:
              NODE_CALL:  to method: 5329 (times)
              Receiver:
                NODE_LVAR:  LV 2 (n)
            Into:
              NODE_DASGN_CURR:  to dynamic variable 8313 (i)
            NODE_NEWLINE:  [t.rb:6]
              NODE_LASGN: 
                NODE_CALL:  to method: 42 (*)
                Receiver:
                  NODE_LVAR:  LV 3 (r)
                  Parameters:
                    NODE_ARRAY:  size = 1
                      NODE_CALL:  to method: 43 (+)
                      Receiver:
                        NODE_DVAR:  dynamic variable 8313 (i)
                        Parameters:
                          NODE_ARRAY:  size = 1
                            NODE_LIT:  Fixnum: 1
                Assign to LV 3 (r)
        NODE_NEWLINE:  [t.rb:8]
          NODE_LVAR:  LV 3 (r)

こんなかんじですか.うーん,わかりやすい.


今日の1時限目は金子先生の授業です.たしか.例のあれをお願いしてみよう.

テキストが J. Duato, S. Yalamanchili and L. Ni: Interconnection Networks - An Engineering Approach -, IEEE Computer Society Press, 1997. とのことなんですが,超並列の話?

そのまんま相互結合網の話,でいいのか.


Ruby の高速化,失敗.がびーん.


眠いのでかえる・・・.

_13 (Sun)

Tracking Assets in the Production of 'Final Fantasy : The Spirits Within'.河合さんの.

rucheme の方向性を,もう少しアプリケーション組み込み用途にも使えるよう努力したほうがいいのかしらん.

たとえば,

evaluator.timeout_eval s_exp,10 # 10秒間 でタイムアウトするS式の評価

こんな感じとか.あとセキュリティもいるか.どんな仕組みがいいんかな.

セーフレベル? 組み込み関数の中で使えるものを制限すればいいのか? それだけでいいの? うーん.


ぉ,RH7.3 って ruby 入ってないのか.up2date ruby やったら 1.6.7-2 とかいうのがインストールされたらしい.おお,ruby-libs ってなんだ.lib 以下を入れるパッケージか,なるほど.


また xeon 機のネットワークの遅さが気になる.ハブをいくつか(3つくらい?)経由してるからいけないのかしらん.50KB/s は遅すぎ.うーん,30mくらいのケーブルがあれば確認できるんだけど.


Linux の Xeon サポートとは,具体的に何をうたっているのだろうか.多分,ソースのコメントに Xeon という単語を入れて,プロセッサのタイプをきちんと Xeon と認識する,という話だと思う.論理プロセッサをきちんとプロセッサとして認識する,ということは,SMPサポートの時点で行えている.というか,ソフトウェアがわからは,論理プロセッサも物理プロセッサも区別無く利用することができるようになっている.だから Xeon は偉いということかも知れない(*1)

んで,本当にそうか,ということで,実験.Linux 2.4.5 でブートして top を見る.うん,きちんと4つ動いてる(Phi x 2 = Logi x 4).

本当に Xeon サポート,とうたうためには,HT を意識したスケジューリングが必要になるはずです.というわけで,今偉い人たちががんばっている,と.

さーて,PAPI サポートのカーネルを入れてあげないと.

cvs から取ってきた PAPI で make -f Makefile.linux-perfctr-p4 をやったらコンパイルエラー.いろいろと弄ったら通った.こんなんでいいんだろうか.

あれー,perfctr をインストールできない.なんでだろー・・・.カーネルインストールしなおしたら直った.なんだったんだ.

さて,小手調べに ruby用 PAPI インターフェースでもつけちゃおうかなぁ.意味無いかな・・・.


うお,むかつく.kernel オプション,SMPのプロセッサ抑制オプション,maxcpus かよ.maxcpu とか maxcpu とか,何度も reboot してしまったぞ.


うー,寝た.

そういえば,先日気づいたくだらない話だけど,Ruby でなんで定数の畳み込みしないのかなぁ,とちょっと謎だったんですけど.たとえば 1+1 だったら 2 ってさくっと計算してしまうとか.Integer.+ が数学の + とは限らないからなんですね.つまり,パース時には 2 になると確定することができない,と.なんでさっさと気づかないんだろう,私は.


はじめて gprof を使う.うわー,すげー.


でーたきゃっしゅミスが一桁減ってるのに,総実行サイクルが20%増.なんで? なんで? なんでデータキャッシュミスが減るのかもわからんし,それで実行サイクルが増えるのもわからん.


たまには毒を.

【IDF Spring 2003レポート】単なる90nm Pentium 4ではないPrescott より.

Photo09:これがどう利用できるか、というとSpin-WaitによるDead-Lock回避である。HyperThreadingで2つのスレッドが同時にSpin-Waitに入ると、永久に抜けないDead-Lock状態に落ちいる可能性があるため、必ずPause命令を使うべきという制限があったが、今後はMonitorで相手のスレッドの状態を確認したり、Mwaitで相手のスレッドと同期するといった形で、より柔軟にDead-Lock回避をインプリメントできるようになる。まぁ一般のアプリケーションには殆ど関係ない命令ではある

大嘘(だと思う,多分・・・).

まず,Spin-Wait に両方入ったって,デッドロックにはならんだろ(なるかもしれないけど,pauseによって解決はしないだろう).pause 命令は,あくまで論理CPUによる負荷削減のためにある(これにより,もう片方の論理CPUが楽になったり,消費電力がさがったりする). Monitor は,相手のスレッドの状態を確認するんじゃなくて,あるメモリへのアクセスを監視するため(のヒント)に使う.monitor に設定したアドレスへのロードが行われない限り,mwait してきたスレッドを待たせる(ヒントにプロセッサは使う).

んで,monitor 系命令を使えば,今まで不便だった同期が速くなる(はず)なので,一般アプリケーションに相当な恩恵があるような気がする.というか,私の今やってる研究がそれだ.これがほしーぞ.今,まさに.

とか偉そうに書いて,俺が間違っていたりして.うーん.ありえる.一応,マニュアルを見直したから,あってるんじゃないかしら.

ちなみに,この async thread,ほしー,今すぐほしー.というかクレー.今の Xeon の論理スレッド使いずらすぎるぞー.

違ってたら教えてください.謝ります(弱).


うーん,研究室に引き篭もりしてると,日記が伸びる伸びる.

某アニメ(*2)の某キャラ(*3)に某声優(*4)がつかないということで,悲嘆に暮れる人(*5)を見る.うーん,若いな.声優は全然わかんないんですが,やっぱりつらいんですか.おしえて声優の偉い人.

お,石原さん再選か.

今日の食料.カップめんいっこ.クッキー一袋(¥100).うーん,もうちょっとましなものが食べたい.


*1 論文として提出しているのは,このモデルだとSMPの十分なパフォーマンスを出すことができない! というものだけれど,とりあえずそれはおいといて.
*2 あの,だめになった某ゲーム機と同じ名前の.
*3 △心1にもおなじような名前のヒロインが居ましたな.
*4 よくしらない.サントラ聞いたことがあるが,ちょっとつらかった.
*5 しかも二人.

_12 (Sat)

up2date -u がおわんねー.8kb/sec ・・・さすがにデモ回線は遅いか.


そうか,妹が彼氏を連れてきたらとりあえず ruby のソースを書かせればいいのか.


私が教鞭をとったらきっとRHGを教科書にするんで,2冊じゃ効かなくなると思います.問題は教鞭なんぞとる予定がないことですけど.


HT について再考しないと.Linuxのソース読み直すかねぇ・・・.

最近,ブックマークを利用しないで,Googleでサイトを探すんですが,raa って入れても raa のページが出てこない.うーん.

_11 (Fri)

こそこそと修正する。証拠隠滅。

すげえ,田村さん効果でアクセスが急増.というか,はじめまして.


RHG が学校の図書館に2冊も入ってたらしい.うわ,物好きもいるもんだ.素晴らしいことですね.

_10 (Thu)

授業が始まったのです。久々の授業は、なんというか、非常に懐かしい気がする。久しぶりの眠気。


今年は Prolog をお勉強するのです。なかなか面白げな感じなのですが、いまだに処理の全体が見えてこない。


はじめてTAをやったんですが、あんまり面白い質問が聞けませんでした。残念。


やっぱり Rhite Space を作らないと駄目ですか(もうあるじゃんって噂)。

B4になったばかりの頃の、某プロジェクトのメールを読んでたんですが、若いなぁ(ぉ。というか、いきなりそんなところをB4にしゃべるなという気がする(笑)。論点が違ってるし。


この日記は、Linkavailable: Ruby,diary で紹介してもらったので、こんなにアクセスが多いわけで、ということは読者層は rubyist がほとんど、ということが言えます。ということは、アクセスログを見ると、rubyist はどんなISPが好き、とか、どんな会社に潜伏している、とかを知ることができます。こんな順番。

  1. infoweb
  2. mesh
  3. so-net
  4. dion
  5. wakwak
  6. bbtec(YahooBB)
  7. odn
  8. zaq
  9. 某社
  10. ...

infoweb というか、nifty でしょうか。さすがに多いんだなぁ。mesh ってどこだっけ。

rubyist は nifty がお好き、でいいんだろうか。ちなみに自宅も nifty です。全然巡回してないけど、会議室見るためにnifty から離れられないのです。


Architecting the Future: Dr. Marc Tremblay。SunのCMT の話。なかなか興味深い。

_9 (Wed)

研究室の冷蔵庫を発掘してみる。うーん、賞味期限切れた物体がいろいろ。2000年賞味期限のソースはどんな味がするんだろう。匂いは酸っぱかったけど。


ruby_wrapper って何? googleで見てもよくわからなかった。

というときにこそ RHG か。索引にちゃんと書いてあるじゃないか、どれどれ・・・。evaluator の状態? うーん?

ちゃんと ruby のソース読まないと駄目だなぁ。


プリンタの両面印刷ユニットが5万円。高い・・・。けど、ほしいなぁ。


このページが駄目なのはつっこみびりてぃがないからに違いない。


げんじつとうひにちょっとスクリプト。

  [['BoolValue',true],
   ['StrValue',''],
   ['IntValue',0],
   ['HiddenValue',0,:hidden],
   ['TextAreaValue','',:textarea],
   ['SelectValue',['a','b','c']],
   ['PassPhrase','abc',:password],
   ['おくる',:submit],
   ]

こんなのから

<form action='test.cgi' method='get'>
<table><tr><td>BoolValue</td><td><input name='BoolValue' true type='checkbox' checked/></td></tr>
<tr><td>StrValue</td><td><input name='StrValue' value='' type='text' /></td></tr>
<tr><td>IntValue</td><td><input name='IntValue' value='0' type='text' /></td></tr>
<tr><td>TextAreaValue</td><td><textarea name='TextAreaValue'></textarea></td></tr>
<tr><td>SelectValue</td><td><select name='SelectValue'><option value='a'>a</option>
<option value='b'>b</option>
<option value='c'>c</option>
</select></td></tr>
<tr><td>PassPhrase</td><td><input name='PassPhrase' value='abc' type='password' /></td></tr>
<tr><td>おくる</td><td><input name='おくる'  type='submit' /></td></tr>
</table></form>

こんなのを吐くスクリプトを書いてみる。

うーん、あんまり便利じゃなさそうだ。むー。もちっと汎用性があればな。


ついでにカレンダー。これはCGIの練習。2037年までしか、Ruby の Time って対応してないんですね。それ以降どうなるんかなぁ。(time_t の制限だろうが)


腹減ったので帰るか。

_8 (Tue)

私も今日、光陰矢のごとしを感じました。うー、赤ちゃんだと思ってたやつが制服着てるよ・・・。


いろいろあるのに気分が盛り上がらない。やる気なし期間。やばいなー、放電しすぎたなー。


最近図書館行ってなかったから気づかなかったけど、結構本が増えてる。scheme の本もいろいろ。おー、湯浅先生の本もあるよ。うーん、欲しい。

しかし、同じ本が結構あったのが笑えた(The ... C++ 3rd が3冊とか)。

というわけで、どうせ読まないけど今日借りた本。

先月のSICP reading(の飲み会) でヨメーって言ってた本はこれ(オブジェクト指向入門)ですか?>あおきさん(とか聞いてみるテスト) Eiffelの本なんですね。古本で見つけられないかな。欲しいな。


うわぁ、IBMの最終兵器だ。その秘密のベールがついに……(/.j)。うわー、IBMスゲー。さすがビッグブルー。


桜ガーデンにある素材が綺麗だったので、ちょっと改造。

サイトの編集は現実逃避にはちょうどいい(マテ)。


あおきさん反応早。

_7 (Mon)

雨は憂鬱。英語はもっと憂鬱。


今日は大学院の入学式でした。(*1)無事、大学院生になれたようです。多分。


dRuby / Div について、やっと意味がわかった。意味って、「何を目的として、どうやって操作するか」という意味ですけど。ボトルネックはどこなんだろう。簡単に通信速度を上げても、駄目?


独断と偏見のきほんてきなこと。B4生向け。思えば、ずいぶん寝かしていたもんだ。最後のほうは、支離滅裂な気がする。プログラミングに役立つユーティリティは、眠い目をこすりながら書いていた様子がわかるような文章だなぁ。

つーか、参考書籍が書いてない。これはあかん気がする。


*1 会式前に帰ったけど。普段着でいったらさすがに場違いすぎた。

_4 (Fri)

久しぶりにグイン・サーガを読み始める。今回、78から再開。読むより続刊が出るほうが早い小説。栗本さん凄いなぁ。


とりあえず82巻まで読む。

_3 (Thu)

学科の計算機室のPC(80台くらい?)にインストールするソフトウェアで何がいい? と問われたので ruby を入れてもらいました。windows のデスクトップに標準で ruby reference manual(htmlhelp) へのショートカットがある学科は多分うちだけなんじゃないでしょうか。完全に私の趣味だな。

今年から始まるというオブジェクト指向プログラミングという授業はぜひ Ruby でやってもらいたいものだなぁ。Java らしいのだけれど。

_2 (Wed)

python ちゃんはごろが悪いのでやっぱり ruby にします。


今年はすげーっというネタは無かった気がする。例年どおり、まぐまぐは素敵。

昨日、一番笑ったのが、ガンガン系のアニメの提供が「スクウェア・エニックス」だったこと。


体の調子が悪く、昨日は学校にこれんかったから、日記だけでもネタを仕込もう、とかおもっていたら、いい加減なシステムのため、月をまたがる日記がかけなかったことに気づく。うーん、駄目駄目。

まともなシステムを作りたいなぁ。tDiary にするかなぁ。うーん。


SIG 4(PRO 17) 、つまり先月(3月)の情報処理学会論文誌、プログラミングに、湯浅先生が「Javaアプリケーション組込み用のLispドライバ」という記事を書かれています。要するに、Java で書いたScheme処理系の話なんですが(*1)

Rucheme と似たようなことなんですが、やっぱり書き方が全然違う。うまいもんだなぁ、と思うわけです。目標がきちんとしており、その目標に対して評価し、目標を達成したことを確認している。論文とはかくあるべきなのだなぁ、とか思うわけです。

機能自体はRuchemeも結構迫るところがあるんじゃないか、とかひそかに思っていたりはするんですが(*2)

Rucheme に、もう少し頭のいい機構を組み込めれば、それなりに楽しそうな気がします。

  • 組み込み関数フレームワーク
  • 特殊形式フレームワーク(上とほぼいっしょ)
  • マクロ(面倒なだけな気がする。頭は使わないで良さそう)
  • 親切なエラー表示(現状は不親切すぎる)

あと、Rubyスタックを使うのを止めなければならないかもしれません。現状では、100回くらい Scheme表現で最適化されないような再帰を行うと、Ruby の限界がきます。そのため、それを防ぐためにはRubyレベルでの再帰を止めなければなりません。そうすると、Ruby の continuation をそのまま使うことを止めなければなりません。しかし、Ruby の continuation は、後のバージョン、特に RITE あたりでまた実装されるかどうか保証がない、と聞いたことがあるような気がします。要するに、Ruby で積極的に利用するような機能ではないわけで、この機構を使わないで実装したほうがいいような予感もします。今の実装だと dynamic-wind も実装難しそうだし(*3)

Richard P. Gabriel "Performance and Evaluation of Lisp Systems", MIT Press, 1985 というものが、Lisp のベンチマークとして有名らしいのですが、どこかで簡単に手に入るものなんでしょうか。それとも、偉い人のところに行かないと無いものなんでしょうか。オシエテLispの偉い人!

Booksによると、日本語訳もあるのかー。ソースがその辺に転がってるとやりやすいんだが・・・。


なんか、こんなことばっかりやってますが、私の卒論は言語処理系とは一切無関係なのです。何をやってんだろうな、俺は。というか、これから俺は何をしていけばいいんかな。


*1 要しすぎた気がする。詳細は論文をご覧ください。
*2 勝っているところもあると、個人的には思っているんですが。
*3 考えればなんとかなるかもしれない。

_1 (Tue)

ruby やめて、これからは python やります。

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