K.Sasada's Home Page

Diary - 2006 August

研究日記

葉月

_31(Thu)

Rails Hell という言葉は聞いたことが無い。

(今俺はそんな感じだけど)


セグウェイなんて羨ましく無いもん。俺なんか SEGVwayだもんね。


40 日。


RubyKaigi2006 のオーディオファイル、ぜひ聞いてやってください。一週間くらい、毎日3時間くらいかけてファイルに落としたので。


http://slashdot.jp/comments.pl?sid=330607&cid=1008554 こんなコメントに +1 が付くのがスラドクオリティか。


http://www.jst.go.jp/pr/info/info332/shiryou2-c2.html

組み込み...。


$ ./miniruby -ve '40.times{|i|s = "*"*i; printf "%02d:%s\n", s.length, s}'
ruby 1.9.0 (2006-08-31) [x86_64-linux]
00:
01:*
02:**
03:***
04:****
05:*****
06:******
07:*******
08:********
09:*********
10:**********
11:***********
12:************
13:*************
14:**************
15:***************
00:
01:*
02:**
03:***
04:****
05:*****
06:******
07:*******
24:************************
25:*************************
26:**************************
27:***************************
28:****************************
29:*****************************
30:******************************
31:*******************************
32:********************************
33:*********************************
34:**********************************
35:***********************************
36:************************************
37:*************************************
38:**************************************
39:***************************************

最近のRubyは面白い。

_babie(Thu Aug 31 09:27:50 JST 2006)

 わぉ、Rails やってんだぁ

_ささだ(Thu Aug 31 15:20:35 JST 2006)

 いや、やってませんけど、Railsわからないと会話が出来ないというのが。

_30(Wed)

あー、やっぱりダメだな、色々と。


なんとなく動いたり動かなかったり>並列Ruby

_29(Tue)

ogg ってダメなのー? えー?


Rails の人たちは、大変真面目だということがわかった。しくしく。

(ぼけても、誰も突っ込んでくれない)


4分ってちょっと。すごいなあ。


西尾さんが見ているようなので書いておくと、Python one-liner 変換器を作ればいいと思いました。機械的な変換は難しいのかな?


YARV 開発に役立つ Rails 本、何かないですかね。YARV で Rails、と考えたときに、どうチューンすればいいのかわからないし。

とりあえず、話についていけるようになりたい。 今は、Rubyの話をしてくれないからなぁ。


投票を更新した。

http://www.atdot.net/~ko1/diary/vote.cgi


数日悩んだバグ発見。 バカすぎ。何やってんだ俺。


Dave 曰く、まつもとさんは国宝。

_(Tue Aug 29 18:04:14 JST 2006)

 Python で one-liner ならこんなのがあります。 http://www.unixuser.org/〜euske/pyone/index-j.html

_nishio(Wed Aug 30 13:14:07 JST 2006)

 機械的な変換も出来るとは思うけど、めんどくさいからヤダ。ワンライナーイクナイ!

_ささだ(Wed Aug 30 17:20:43 JST 2006)

 手作業でやるほうが面倒だと思うんだが(笑)。

_nishio(Wed Aug 30 23:38:58 JST 2006)

 道を切り開くのは楽しいけど、その道を舗装するのは退屈なのですw

_斎藤ただし(Fri Sep 01 17:03:42 JST 2006)

どうチューンすれば

  • rprofile …という話ではないんですよね。

_28(Mon)

大規模ソフトウェア開発について、少し考えていたんだけれど、数百万行にわたる、膨大なソースコードがあった場合、それらは多分ライブラリ化されているんだろうけれど、仕様も膨大だろうから、同じような用途のコードが書き散らされているに違いない。こういう車輪の再発明を防ぐために、司書さん的役割な人(電子的なライブラリに対してツールとしての司書ではなく、専門職としての司書)が居ると、変わるんだろうか。別にめがねをかけていなくても、三姉妹でなくてもいいんだけれど(よくないって?)。


LL.Ring では Make: 01 を買った。


ああいうイベントでの、「時間が無かった」だの「〜〜がうまくいかなかった」だの「段取りが〜」とかの言い訳は、客にとってはまったく不愉快なだけだなぁ、ということを再認識した。気をつけなければ。


instance_of? なんて使ったこと無かったんだけど、Java の isntanceof は kind_of? なんだねぇ。


Ruby -> Javascript 変換は必要ないらしい。ということで、作ってみるかな(天邪鬼)。


じゃんけん2.0 優勝者に教えてもらった。http://www.ofb.net/~egnor/iocaine.html

これを JavaScript で実装したらしい。


IRC ログにタグ付けは出来るのか?


あることを頼まれて、少し調べていたんだけれど、それが不要になったことを全然違う経路で知って、それに関して何一つ連絡をよこさないというのはなんとも不愉快だなぁと思った。気をつけなければ。俺、最近頼むことばかりだもんな。

_shiro(Mon Aug 28 14:55:48 JST 2006)

もしくはライブラリソムリエ。「埋め込み言語の簡易パーザに合わせるなら、こちらの軽い感じのハッシュテーブル実装を」とか「巨大なデータセットには、しっかりとフルボディのmalloc実装を」とかお薦めしてくれるの。

マジレスすると、「ライブラリに本当に必要な仕様は、本体を実装し終わった時にようやくわかる」って場合が多いんで、似たようなライブラリがあっても使いづらいことが多いでしょうね。元の実装者の設計と違う方向で拡張が必要になったりするし。よく知られたアルゴリズムとか、性質が分かってるものなら共有しやすいですが。

_ささだ(Mon Aug 28 16:49:02 JST 2006)

 発送の元は、「既存のソースコードについて、どこに何があるか把握している人」で、「一切ソースは書かない」という人がいたらどうなるかな、というところでした。聞かれなかったら仕事しなくていい人。

_shiro(Mon Aug 28 18:50:35 JST 2006)

そうか。今はまだ、ソースは生物で、メンテしつづけてないと使えなくなるから、そういう人がいたとしても絶えず変化するコードを追っかけてないとならない→開発の現場にどっぷりないとならない、ってことになりそうだけど。コードのポータビリティが増して、さらにbillion行とかtrillion行単位の資産が出来てきたら、きっとみんな外部仕様だけを頼りにいつ誰が書いたのかわかんないようなコードを使うようになって、そしたら既存のコードだけをサーベイしつづける職種の人がどうしても必要になるかも。

_しゅ(Mon Aug 28 20:59:38 JST 2006)

 そうそう、excuseは、真実を言っていたとしても、聞く側にとってはまったく不要なんですよね。My English is not very good...とかいうexcuseも、言いたくなるわけだけど、聞く側にしてみると、そんなこたあ聞きたくない、と。

_ささだ(Mon Aug 28 22:10:12 JST 2006)

 ううぅ、英語だと何時もやっているなぁ orz

_nishio(Tue Aug 29 12:55:46 JST 2006)

 「ワンライナーなので編集しづらい」はネタのつもりだったけど、引っ張りすぎたかも。それはさておき司書さんの普段のお仕事はCVSメールを読んで「コメントがわかりにくい」と文句を言ったり、JavaDocを眺めて文句を言ったりすることだと思いました。

_yukoba(Tue Aug 29 23:47:17 JST 2006)

 激しく手抜きで、ごめんなさい>じゃんけん

_ささだ(Wed Aug 30 01:28:36 JST 2006)

 いや、あの圧倒的な強さは良かったと思います。

_27(Sun)

意図せず電車に乗れなかったのは初めてだった orz

_26(Sat)

起きれるのかな、今日。

_25(Fri)

heaps_slot に freelist を設けて、各スレッドはこれを参照するようにすると良いと思った。

つまり、現在の YARV は各スレッドが freelist を持つような実装にしているんだが、各スレッドの freelist を使い切ると、がががーっと root_freelist からある個数分だけとってくる。この時間は無駄なので、heaps_slot 単位で freelist を管理しておいて、スレッドはある heaps_slot の freelist をもらってくる、という。root_freelist は、heaps_slot の free_list のリストになる。

gc_sweep は上記のような処理がすでに入っているので、あとはデータ構造をちょいちょいいじれば終わり。

まぁ、あんまり変わんないかな。わかんないけど。


よくわかってないんだけど、

gc.c の

		p->as.free.flags |= FL_SINGLETON; /* freeing page mark */

って、pp-> じゃない?


しかし、final しないといけないオブジェクトがあっても、heaps_slot は開放するような気がするんだよな。これ、なんで SEGV しないんだろう。わかんないなぁ。finalize 用の heap へ RValue をコピーすればいいような気もするんだが、そういうこともしてないしな。バグな気がする。

と、思ったら、final_list があると free_unused_heaps を実行しないのね。なるほど。


十分にグローバルメソッドキャッシュにあたっているのならば、インラインメソッドキャッシュをあてる必要が無いんだなあ。困ったぞ。

_24(Thu)

まるごとPerl! Vol.1 が届いた。


今回は、関係各者にメールは書かないので、ぜひ [ruby-list:42748] お願い:Rubyist Magazine へのたより にご協力くださいませ。


秋葉原のヨドバシを見ていたんだけど、6FのTVゲームコーナーで、長蛇の列。そこまでして買いたいのかー。


しかし、FF3 超欲しくなってしまった。スクリーンセーバーとかインストールしてるし。ダメすぎ。

_たま(Thu Aug 24 23:19:43 JST 2006)

 DSもってるから買おうかな。FF3

_ささだ(Fri Aug 25 00:20:29 JST 2006)

 いいなぁ。

_たま(Sat Aug 26 12:17:37 JST 2006)

 妹が買ったらしい。終わったら借りる予定

_きむら(Sun Aug 27 00:38:14 JST 2006)

 ナニに並んだのかと思ったらFFですか(興味ないやつ)。LL Ringの会場で見かけたのに声をかけられませんでした。しょぼーん

_23(Wed)

プログラミング言語Ruby第二版読書会,なんてやったら人は集まるんだろうか?

初心者講習会の企画を考えていたけど,なかなかまとまらないので.


最近クレクレ君になっているので、大変マズイ。


http://www.mext.go.jp/b_menu/boshu/2006/06081806.htm

是非応募したい。


と言ったら、IRC で

そうやって女の子の理系離れが加速するわけですね。

と言われた。


http://journal.mycom.co.jp/articles/2006/08/23/java7closuer/006.html

面白い記事だったけど、

関数型やローカル関数、クロージャの導入がもたらす弊害は、Genericの場合とよく似ている。クロージャが活用されたソースコードは徐々にC/C++言語に近付いているようにみえる。一見すると関数ポインタのようだ。これはJavaのビギナーにとっては辛いところだろう。

近づいてるのかよ!


どうでもいいんだけど http://www.gihyo.co.jp/magazines/LLFE/support/Vol1 はちょっと恥ずかしい。

_みずしま(Wed Aug 23 16:56:39 JST 2006)

 どう考えても、近づいてないですよね。関数型言語に近づいているというならともかく。

_青木(Wed Aug 23 18:23:21 JST 2006)

 しかもURLでclosureのつづりを間違えてるし

_n(Wed Aug 23 19:19:41 JST 2006)

 CLOS user のことじゃない? :p

_haya(Wed Aug 23 20:29:05 JST 2006)

 はじめまして。Rubyビギナーとしては参加したいです! > プログラミング言語Ruby第二版読書会

_きむら(Thu Aug 24 00:22:11 JST 2006)

 わたしは某雑誌で「浩二」にされたことがありまする…

_nishio(Thu Aug 24 11:23:14 JST 2006)

 要約すると「私には辛い」なのかもw

_タナカコウイチロウ(Sun Aug 27 06:51:30 JST 2006)

 はじめまして。私も参加したいです! メソッドとかクラスがどうも分からないので > プログラミング言語Ruby第二版読書会

_おびなた(Wed Aug 30 22:37:29 JST 2006)

 C++もclosure乗せようとしてますしねぇ

_22(Tue)

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/42064 をスレッドを使わないで実装できるか,という話.

第一稿:

class IO
  def tee *outs
    @__tee_outs = outs
    def self.write *args
      super
      @__tee_outs.each{|out|
        out.write *args
      }
    end
  end
end

STDOUT.tee(open('/tmp/foo', 'w'))
p 1

なんとなく動いているように見えた.が,STDOUT.tee(STDOUT) みたいにすると死ぬと指摘される.うーん.

第二稿:

class IO
  def tee *outs
    # check loop
    visited = {self => true}
    check_loop = lambda{|o|
      raise "Loop" if visited.has_key? o
      visited[o] = true
      if os = o.instance_variable_get(:@__tee_outs)
        os.each{|o| check_loop.call o}
      end
    }

    outs.each{|out|
      check_loop.call(out)
    }
    
    @__tee_outs = outs
    def self.write *args
      super
      @__tee_outs.each{|out|
        out.write(*args)
      }
    end
  end
end

STDOUT.tee(STDOUT)
p 1

とりあえずループの検出だけ.現実的には十分?


職員用ポータルに、一太郎の脆弱性が掲載されていた。


http://d.hatena.ne.jp/secondlife/20060822/1156253957

私の周りは誰も使ってくれない htmlhelp で,私のような htmlhelp 好きは普段は迫害されているんですが(言いすぎ),secondlife さんのような影響力のある方が書くと,きっと違った反応が返ってくるに違いない.

ところで,作った HTMLHelp の公開って,ライセンス的にどうなのかわからないので公開できません.GNU のソフトの texinfo は大量に変換してるんですが,誰か教えてくれませんかね.

texi2html4hh (Sun Aug 06 07:35:52 JST 2006) 
JM.chm (Mon Aug 07 16:43:29 JST 2006) 
R-lang.chm (Sun Aug 06 07:40:47 JST 2006) 
SUSv3.chm (Mon Aug 07 15:38:30 JST 2006) 
autoconf-ja.chm (Sun Aug 06 07:38:17 JST 2006) 
autoconf.chm (Sun Aug 06 07:35:43 JST 2006) 
bc.chm (Sun Aug 06 07:40:37 JST 2006) 
bfd.chm (Sun Aug 06 07:42:15 JST 2006) 
binutils.chm (Sun Aug 06 07:42:15 JST 2006) 
bison.chm (Sun Aug 06 07:40:37 JST 2006) 
classpath-hacking.chm (Sun Aug 06 07:40:22 JST 2006) 
classpath-vmintegration.chm (Sun Aug 06 07:40:22 JST 2006) 
cpp.chm (Sun Aug 06 07:38:07 JST 2006) 
cppinternals.chm (Sun Aug 06 07:37:20 JST 2006) 
cvs-ja.chm (Sun Aug 06 07:38:37 JST 2006) 
diff-ja.chm (Sun Aug 06 07:38:22 JST 2006) 
elisp.chm (Sun Aug 06 07:35:28 JST 2006) 
eljman.chm (Sun Aug 06 07:36:30 JST 2006) 
emacs.chm (Sun Aug 06 07:38:55 JST 2006) 
emacsj.chm (Sun Aug 06 07:39:15 JST 2006) 
fileutils-ja.chm (Sun Aug 06 07:38:31 JST 2006) 
find-ja.chm (Sun Aug 06 07:38:32 JST 2006) 
flex-ja.chm (Sun Aug 06 07:35:52 JST 2006) 
gauche-0.8.6-src.chm (Sun Aug 06 08:33:36 JST 2006) 
gauche-refe-0.8.4.chm (Sun Aug 06 07:40:05 JST 2006) 
gauche-refe-0.8.6.chm (Sun Aug 06 07:42:14 JST 2006) 
gauche-refe-0.8.7.chm (Sun Aug 06 08:35:28 JST 2006) 
gauche-refj-0.8.4.chm (Sun Aug 06 07:39:42 JST 2006) 
gauche-refj-0.8.6.chm (Sun Aug 06 07:41:59 JST 2006) 
gauche-refj-0.8.7.chm (Sun Aug 06 08:35:13 JST 2006) 
gawk-j.chm (Sun Aug 06 07:41:01 JST 2006) 
gcc-4.0.2.chm (Sun Aug 06 07:42:38 JST 2006) 
gcc-4.1.1.chm (Thu Aug 17 18:38:59 JST 2006) 
gcc-j.chm (Sun Aug 06 07:37:20 JST 2006) 
gcc.chm (Sun Aug 06 07:37:49 JST 2006) 
gccint.chm (Sun Aug 06 07:38:03 JST 2006) 
gcj-ja.chm (Sun Aug 06 07:35:52 JST 2006) 
gcl.chm (Sun Aug 06 07:41:35 JST 2006) 
gcov.chm (Sun Aug 06 07:37:20 JST 2006) 
gdb-ja.chm (Sun Aug 06 07:36:06 JST 2006) 
gdbm.chm (Sun Aug 06 07:40:23 JST 2006) 
gettext.chm (Sun Aug 06 07:42:24 JST 2006) 
gforth.chm (Sun Aug 06 07:40:32 JST 2006) 
gsl-ref.chm (Sun Aug 06 07:40:22 JST 2006) 
gst.chm (Sun Aug 06 07:39:20 JST 2006) 
hurd.chm (Tue Aug 08 02:44:31 JST 2006) 
latex2e.chm (Sun Aug 06 09:34:21 JST 2006) 
libc.chm (Sun Aug 06 07:37:01 JST 2006) 
libiberty.chm (Sun Aug 06 07:42:19 JST 2006) 
libtool-ja.chm (Sun Aug 06 07:38:27 JST 2006) 
libtool.chm (Sun Aug 06 07:40:42 JST 2006) 
make.chm (Sun Aug 06 07:35:52 JST 2006) 
onlisp.chm (Tue Aug 08 02:44:33 JST 2006) 
r5rs.chm (Sun Aug 06 07:35:52 JST 2006) 
r5rsj.chm (Sun Aug 06 07:36:07 JST 2006) 
readline.chm (Sun Aug 06 07:40:37 JST 2006) 
riece-ja.chm (Sun Aug 06 09:34:22 JST 2006) 
ruby-1.9.0-src.chm (Sun Aug 06 08:31:59 JST 2006) 
screen.chm (Sun Aug 06 07:42:14 JST 2006) 
sed-ja.chm (Sun Aug 06 07:38:32 JST 2006) 
sicp.chm (Sun Aug 06 08:28:38 JST 2006) 
termcap.chm (Sun Aug 06 07:40:37 JST 2006) 
texinfo.chm (Sun Aug 06 07:35:37 JST 2006) 
tput.chm (Sun Aug 06 07:40:42 JST 2006) 
vmgen.chm (Sun Aug 06 07:40:23 JST 2006) 
wl-ja.chm (Sun Aug 06 09:34:27 JST 2006) 
zsh.chm (Sun Aug 06 07:36:21 JST 2006) 
man.css (Sun Aug 06 08:35:32 JST 2006) 
2sjis.rb (Mon Aug 07 15:46:33 JST 2006) 
chmbuilder.rb (Mon Aug 07 15:46:33 JST 2006) 
euc2sjis.rb (Sun Aug 06 08:35:32 JST 2006) 
makegauchehelp.rb (Sun Aug 06 08:35:32 JST 2006) 
man2hh.rb (Mon Aug 07 15:46:33 JST 2006) 
mkhelp.rb (Sun Aug 06 09:34:22 JST 2006) 
mksusv3.rb (Mon Aug 07 15:46:33 JST 2006)

今こんな感じ.

_21(Mon)

最近はRubyの人と思われていないのかもしれない.うーむ.


よくWeb上でのチャットなんて出きるなぁ.

と思ったんだけど,長文の貼り付けとかは便利かもしれない.


ゴゴる,という言葉をみて,あぁ,あれみたいなポーズとったりするのかな,とか思った眠れない早朝.眠すぎ.

_20(Sun)

8sec
	leaq	8(%r14), %rax
	movq	8(%r15), %rcx
	addq	$8, 8(%r15)
	movq	(%rax), %rsi
	movq	%rax, %r14
	movq	%rax, (%r15)
	movq	48(%r15), %rax
	movq	-16(%rax), %rax
	movq	%rax, (%rcx)
	jmp	*%rsi


10sec
	movq	48(%r15), %rax
	movq	8(%r15), %rsi
	leaq	8(%r14), %rcx
	addq	$8, 8(%r15)
	movq	%rcx, %r14
	movq	%rcx, (%r15)
	movq	-16(%rax), %rax
	movq	%rax, (%rsi)
	movq	(%rcx), %rax
	jmp	*%rax


6sec
	leaq	8(%r14), %rsi
	movq	8(%r15), %rdi
	addq	$8, 8(%r15)
	movq	(%rsi), %rax
	movq	%rsi, %r14
	movq	%rsi, (%r15)
	movq	%rax, 296(%rsp)
	movq	$2, 296(%rsp)
	movq	296(%rsp), %rdx
	movq	48(%r15), %rax
	salq	$3, %rdx
	subq	%rdx, %rax
	movq	(%rax), %rax
	movq	%rax, (%rdi)
	movq	(%rsi), %rax
	jmp	*%rax

最後のが一番速い(6秒)。謎過ぎる。


いろいろ考えたけど、やっぱりわからないのでもういいや。

これ以上なんとかするには VTune かなんか使わないとだな。

しかし、こんなデータがあると、チョコチョコとチューニングしているのが空しくなってくる。

_19(Sat)

物欲がふつふつと湧いてきて,職場で利用中のS2410Wを買ってしまおうか悩み中.うーむ,どうしよう.


というわけで,T565(CRT 17インチ)が余るんですが,誰か要りませんかね.まだまだ発色もよい良品だと思うんですが,いかんせんでかい.


しかし,ボーナスとかあるんだったら,これを機会に買うかー,とか思うんだろうけど....

しかし,費用対効果を考えると,あったほうがよいような気がするな.たとえ家にあんまり帰ってなくても.


http://slashdot.jp/comments.pl?sid=329051&cid=999699

「使って欲しい,と思っている」と思っているんだろうか.ユーザは,開発者のことをそう見ているのか.

いや,使って欲しい気もするが,なんか違和感を覚えたもので.


なんとなく,MRTG の結果を毎日 HTML メールで受け取れたら幸せになれないか知らん,と思って

require 'rmail'

message = RMail::Message.new
message.header['To'] = 'ko1@atdot.net'
message.header['Subject'] = "MRTG Result (#{Time.now})"
message.header['Content-Type'] = 'Multipart/Related'

m1 = RMail::Message.new
m1.header['Content-Type'] = 'text/html; charset="iso-8859-1"'
m1.body = body = File.read('mrtg のパス/index.html')

message.add_part m1

Dir.glob('mrtgのパス/*-day.png'){|file|
  fn = File.basename(file)
  m = RMail::Message.new
  m.header['Content-Type'] = "image/png; filename=#{fn}"
  # m.header['Content-Disposition'] = "inline; filename=#{fn}"
  m.header['Content-Transfer-Encoding'] = 'base64'
  m.header['Content-ID'] = "<#{fn}>"
  body.gsub!(fn, "cid:#{fn}")
  m.body = open(file, 'rb'){|f| [f.read].pack('m')}
  message.add_part m
}
puts RMail::Serialize.write('', message)

こんなのを書いてみる.全部見よう見真似.


やっぱり初心者って難しい。


rss bot: 赤いソバの花「高嶺ルビー」涼しげ 長野・木曽 - http://www.asahi.com/life/update/0819/007.html?ref=rss


x64のプロセッサでYARVで実装していた最適化技術が利かないという衝撃的な事実。おかしぃなぁ。昔は効いたんだけどなあ。

試してみると、オペランドのフェッチはあったほうがよいという感じ。というか、現在のメモリどかどか使うモデルは、D-cache に効いてしまうので、やめたほうがいいのか。constant-pool 参照モデルのほうがヨサゲ、という話でした。

しかしなぁ。constant-poolをさすポインタはどこにあるんだ。

_18(Fri)

金曜日なのになぁ.

_17(Thu)

rdoc はよく知らない(riとか使わない)のだけれど,きっと私の書くRubyコードはrdocに嫌われそう.

で,rdocがきちんと解釈してくれないようなソースコードじゃないと困る,ということに,世間一般的に捉えられると,私の書くコードはRubyのコードじゃない,とか言われるんだろうか.


そんな感じでRubyの〜〜はこうするべきだ,というような方向に持っていくのもいいなぁ.


http://journal.mycom.co.jp/articles/2006/06/28/isca/001.html

ウイスコンシン-マディソン大のSohi教授のグループの発表は、マルチコアの2次キャッシュの管理に関する論文で、各プロセサコアに独立な2次キャッシュを持つが、それらの2次キャッシュ間で共通のディレクトリを持ち、他コアのキャッシュにデータがある場合はそこから転送したり、キャッシュラインを追い出す場合にも、再利用の可能性の高いデータは、メモリではなく他のコアのキャッシュに追い出したりというような制御を行い、性能を改善する方法を提案している。

ディレクトリってなんだろ.

で,こういう話を提案して,作ってくれって言ってたのに結局やってもらえなかった修士時代.やっぱり,こういうことできたんだよなあ.


lock の評価。衝突しないことが保障されている、シングルスレッドでの純然たるオーバヘッドを図ってみた。


#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#define MAX 0x3000000

void
lock_mutex()
{
    int i;
    pthread_mutex_t mutex;
    pthread_mutex_init(&mutex, 0);
    for (i=0; i<MAX; i++) {
	pthread_mutex_lock(&mutex);
	pthread_mutex_unlock(&mutex);
    }
}

void
lock_spin()
{
    int i;
    pthread_spinlock_t lock;
    pthread_spin_init(&lock, 0);
    for (i=0; i<MAX; i++) {
	pthread_spin_lock(&lock);
	pthread_spin_unlock(&lock);
    }
}

void
lock_rw_read()
{
    int i;
    pthread_rwlock_t lock;
    pthread_rwlock_init(&lock, 0);
    for (i=0; i<MAX; i++) {
	pthread_rwlock_rdlock(&lock);
	pthread_rwlock_unlock(&lock);
    }
}

void
lock_rw_write()
{
    int i;
    pthread_rwlock_t lock;
    pthread_rwlock_init(&lock, 0);
    for (i=0; i<MAX; i++) {
	pthread_rwlock_wrlock(&lock);
	pthread_rwlock_unlock(&lock);
    }
}

void
err(char *str)
{
    fprintf(stderr, "%s", str);
    exit(1);
}

int
main(int argc, char *argv[])
{
    if (argc != 2) {
	err("arg error\n");
    }
    else {
	switch(*argv[1]) {
	  case 'm':
	    lock_mutex();
	    break;
	  case 's':
	    lock_spin();
	    break;
	  case 'r':
	    lock_rw_read();
	    break;
	  case 'w':
	    lock_rw_write();
	    break;
	  default:
	    err("unknown option");
	}
    }
    return 0;
}

結果 on Linux 2.6.16-1.2122_FC5 #1 SMP Sun May 21 15:01:10 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux

mutex

real    0m3.288s
user    0m3.288s
sys     0m0.000s

spin

real    0m1.579s
user    0m1.580s
sys     0m0.000s

read

real    0m5.724s
user    0m5.724s
sys     0m0.000s

write

real    0m5.885s
user    0m5.884s
sys     0m0.000s

結果 on FreeBSD 6.1-RELEASE #0: Sun May 7 04:15:57 UTC 2006 root@bloom.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP amd64

gcc -lpthread

mutex
       10.77 real        10.76 user         0.00 sys

spin
        3.48 real         3.47 user         0.00 sys

read
       26.41 real        26.37 user         0.00 sys

write
       29.42 real        29.38 user         0.00 sys

同じマシンなのに、FreeBSD の pthread は遅いなぁ。

gcc -lthr でコンパイルしてみる。

mutex
        4.15 real         4.15 user         0.00 sys

spin
        3.30 real         3.30 user         0.00 sys

read
        9.57 real         9.56 user         0.00 sys

write
       12.74 real        12.72 user         0.00 sys

・・・なんで 1:1 モデルのほうが速いんじゃー! なんで? ほんとにわからん。

ちなみに、-lc_r は spin 関係が無いようだったので出来なかった。


FreeBSDには <machine/atomic.h> なんて素敵なものがあったので、使ってみた。

#include <machine/atomic.h>

inline int
native_lock(volatile int *dst)
{
    while (atomic_cmpset_int(dst, 0, 1) == 0) {
	sched_yield();
    }
}

inline int
native_unlock(volatile int *dst)
{
    *dst = 0;
}

結果、

mutex
        4.15 real         4.15 user         0.00 sys

spin
        3.30 real         3.30 user         0.00 sys

read
        9.06 real         9.05 user         0.00 sys

write
       12.62 real        12.61 user         0.00 sys

native
        1.97 real         1.96 user         0.00 sys

spinとの差は、関数呼び出しのコストかね。

ところで、unlock は *dst = 0 だけでいいと思うんだが、libthr のソースを見ると、ここでも不可分命令を使っている。なんでだろう。


で、atomic.h を Linux で使って、無理やり見てみると、

mutex

real    0m3.181s
user    0m3.180s
sys     0m0.000s

spin

real    0m1.580s
user    0m1.580s
sys     0m0.000s

read

real    0m6.156s
user    0m6.156s
sys     0m0.000s

write

real    0m6.259s
user    0m6.256s
sys     0m0.000s

native

real    0m1.537s
user    0m1.540s
sys     0m0.000s

pthread_spinlock_* と変わらない。ふーむ、なら手作業でアセンブラいじる必要は無いか。


とか,こんなことをしていたら http://d.hatena.ne.jp/shinichiro_h/20060817#1155781747 を見つけてしまった.なんてタイムリー.というか,gcc 4.1.1 かよ! あわてて chm を作って,確認.おお,なんかたくさんある.


というわけで、作り直してみる。

inline int
native_lock(volatile int *dst)
{
    while (__sync_bool_compare_and_swap(dst, 0, 1) == 0) {
	sched_yield();
    }
}

結果 on Linux 2.6.16-1.2122_FC5 #1 SMP Sun May 21 15:01:10 EDT 2006 x86_64 GNU/Linux / gcc version 4.1.1 20060525 (Red Hat 4.1.1-1) / Intel(R) Pentium(R) D CPU 3.46GHz

real    0m1.464s
user    0m1.464s
sys     0m0.000s

おお。なんかヨサゲ。

00000000004009d0 <native_lock>:
  4009d0:       48 89 5c 24 e8          mov    %rbx,0xffffffffffffffe8(%rsp)
  4009d5:       48 89 6c 24 f0          mov    %rbp,0xfffffffffffffff0(%rsp)
  4009da:       48 89 fb                mov    %rdi,%rbx
  4009dd:       4c 89 64 24 f8          mov    %r12,0xfffffffffffffff8(%rsp)
  4009e2:       31 ed                   xor    %ebp,%ebp
  4009e4:       48 83 ec 18             sub    $0x18,%rsp
  4009e8:       41 bc 01 00 00 00       mov    $0x1,%r12d
  4009ee:       eb 05                   jmp    4009f5 <native_lock+0x25>
  4009f0:       e8 33 fe ff ff          callq  400828 <sched_yield@plt>
  4009f5:       89 e8                   mov    %ebp,%eax
  4009f7:       f0 44 0f b1 23          lock cmpxchg %r12d,(%rbx)
  4009fc:       75 f2                   jne    4009f0 <native_lock+0x20>
  4009fe:       48 8b 1c 24             mov    (%rsp),%rbx
  400a02:       48 8b 6c 24 08          mov    0x8(%rsp),%rbp
  400a07:       4c 8b 64 24 10          mov    0x10(%rsp),%r12
  400a0c:       48 83 c4 18             add    $0x18,%rsp
  400a10:       c3                      retq

こんな感じになった。

inline int
native_lock(volatile int *dst)
{
    while (__sync_lock_test_and_set(dst, 1) != 0) {
	sched_yield();
    }
}

こうしてみると、結果はあんまり変わらなくて、

00000000004009d0 <native_lock>:
  4009d0:       55                      push   %rbp
  4009d1:       bd 01 00 00 00          mov    $0x1,%ebp
  4009d6:       53                      push   %rbx
  4009d7:       48 89 fb                mov    %rdi,%rbx
  4009da:       48 83 ec 08             sub    $0x8,%rsp
  4009de:       eb 05                   jmp    4009e5 <native_lock+0x15>
  4009e0:       e8 43 fe ff ff          callq  400828 <sched_yield@plt>
  4009e5:       89 e8                   mov    %ebp,%eax
  4009e7:       87 03                   xchg   %eax,(%rbx)
  4009e9:       85 c0                   test   %eax,%eax
  4009eb:       75 f3                   jne    4009e0 <native_lock+0x10>
  4009ed:       48 83 c4 08             add    $0x8,%rsp
  4009f1:       5b                      pop    %rbx
  4009f2:       5d                      pop    %rbp
  4009f3:       c3                      retq

・・・あれ? lock しないでいいの? xchg 命令は勝手に atomic にやってくれるのか。


そういうわけで、Parallel YARV は GCC 4.1.1 以上対応にしておこう。


そういえば、最近暑くて、でも俺の寝ている部屋にはエアコンが無くて。寝付けない感じ。


どうも、LL/SC に慣れすぎちゃって、CAS の考え方って慣れないな。オーバヘッド高そうで。

_maeda(Thu Aug 17 21:11:55 JST 2006)

ディレクトリってなんだろ.

ccNUMAのディレクトリでしょ?

_ささだ(Thu Aug 17 21:41:43 JST 2006)

 ccNUMAとか,よく知らないんですよねぇ....勉強しとこう.

_16(Wed)

はじめて渋谷のGoogleに行ってきた。


はじめて UDX で飯を食った。

_15(Tue)

超簡単なspam避け(checkbox の追加,デフォルトで on)をしたら,spamが来なくなった.有効な対策だったのか,ただ単にこのサイトをspammerが見ていないだけか.

_14(Mon)

if foo in bars

は,

if bars.include? foo

と同じとみなせばいいのかしらん.でも,特別視することもないような気がするな.


[ruby-list:42682] からのスレッドを見て,class/module のスコープが抜けたときに呼ばれるメソッドがあってもいいな,と思った.

class Foo
  # ...
end # ここで呼ばれる

class_closed とかかな.で,呼ばれたときに必要なメソッドがあるかどうかをチェックすれば良い.悪くないと思うんですが,どうですかね.

_shiro(Mon Aug 14 05:54:18 JST 2006)

 元議論は読んでないけど、メソッドコンビネーションをつければ「class文の処理」というメソッドのafterメソッドとして実装できるんかな、とふと思った。

_なかだ(Mon Aug 14 15:23:27 JST 2006)

 それはメソッドじゃありません。

_ささだ(Tue Aug 15 09:40:04 JST 2006)

 そうなんだけど,じゃぁメソッドにしたらどうなるのかな,とか思ってみたり.

_13(Sun)

せみの声が聞こえる.


apache がなんか刺さるようになってる.どうしてだろう.w3ml.cgi が犯人? CGI が犯人って....


来週,essaさんインタビューをやるんですが,野次馬は誰がいいんだろう.


あぁ,夕飯どうしようかな.


結局ラーメン屋になった.にんにく入れすぎた.

_12(Sat)

また何もしない土曜日だった.

_11(Fri)

ダメだもうダメだ.ちっとも成長しない.


空冷ファンを買った.人用.

_10(Thu)

C#/.NETにて、あるコントロールに来たメッセージ(キーボード入力)を別のコントロールにそのまま投げるにはどうすればいいんだろう。


New in Parrot 0.4.6:

  - New languages: Ruby ("Cardinal"), Javascript ("ecmascript")

うは。

_arton(Thu Aug 10 10:24:15 JST 2006)

 キーボード入力によって反応するメソッドを用意しておいてそれを呼び出す。(というか仕様を見直す)

_ささだ(Thu Aug 10 20:21:32 JST 2006)

 エディットボックスでUp/Downを押すと、隣のコンボボックスのエントリを上下したかったんです。楽できないかな、って。

_arton(Thu Aug 10 22:11:58 JST 2006)

 その程度なら問題なさそうです。ProcessDialogKeyかPreProcessControlMessageをオーバーライドしてキーの値を見てコンボボックス側へ委譲してやれば良いのでは。

_ささだ(Fri Aug 11 04:12:23 JST 2006)

 委譲する部分がわからないのですー.

_arton(Fri Aug 11 12:17:11 JST 2006)

 どっちもpublicメソッドだから、combBox1.ProcessDialogKey(msg); とかしてやればいいんじゃない? どっちが利用できるかはトライ&エラー。

_9(Wed)

停電から自動で復旧していたヤッター。

_8(Tue)

RFC をどかっとダウンロードしたが、HTMLに変換するものを見つけることが出来なかった。どうしたもんだか。


この日記のGoogleの検索キーワードに「学位がとれない」というのがあって凹む。


明日は某所で計画停電になり、atdot.net が止まります。メールなどが届かない恐れがありますのでご容赦ください。

うぅ、一度も自動的に再起動したことが無いんだよな。


HTML Help をひくためのを久々に VC++ を使って書いた。

... 使いづらいかも。


計算機初学者に ActiveScriptRuby を使わせる場合、どのように Ruby スクリプトを実行してもらうのがよいか。

■(1) パスを設定してもらう

ruby コマンドが利用可能になる。

パスの設定をやってもらわなければならない。

■(2) ruby console で実行して、ディレクトリを移る

毎回ディレクトリ変更の手間がかかり、面倒くさい。

■(3) 関連付けられているので、foo.rb と入力させて直接実行

一番楽だけど、「ruby foo.rb」とやってください、という入門書が多い現状では、混乱のもとになるのでは。

■(4) cscript foo.rb と入力させる

cscript って何さ! という疑問大爆発。

■(5) スタートメニューにある「ruby console」ショートカットをスクリプトを格納したディレクトリに置いて、毎回これを叩いて起動する。

DOS窓を立ち上げて、cd する手間がなくて、個人的には本命だが、「ruby console」ショートカットのコピーがきちんとできるかどうかが謎。

■(6) あきらめて One Click Installer を使う

ううむ。環境変数弄られるの嫌なんだよな(評価したくない)。


あ、デスクトップに「ruby console」ショートカットはできるんだな。これならコピーしてもらうのは簡単かも。


Windowsの人用。


* Windowsの場合

** ActiveScriptRuby のインストール

(1) 下記のページ(*1)冒頭にある「ActiveScriptRuby 1.8.4.5」というリンクを
たどり、「ActiveRuby18.msi」をダウンロードする。

*1: COM Meets Ruby
http://arton.hp.infoseek.co.jp/indexj.html

(2) ダウンロードした「ActiveRuby18.msi」を起動し、インストールを開始する。
インストール手順については、とくに気にする必要はなく、「Next」などのボタ
ンを押せば進んでいくが、途中のライセンス条項については同意してから次へ進
むこと。

(3) スタートメニューの「プログラム」に「Ruby 1.8」が登録されていることを
確認する。

(4) デスクトップに「ruby console」というプログラムが出来ていることを確認
する。


** ActiveScriptRuby の利用

*** 対話型Ruby実行環境irbの利用

(1) 「スタート」メニューの「プログラム」から「Ruby 1.8」>「irb」を選ぶ
とirbコンソールが起動する。

(2) 「1+2」のような簡単なRubyプログラムを入力し、改行して、答えの「3」が
表示されることを確認する。

(3) 終了する場合は「exit」と入力する。


*** Rubyスクリプトを実行

(1) Ruby スクリプトを記述したファイル(例としてc:\script\sample.rb)を用
意する。

(2) デスクトップにある「ruby console」というプログラムを起動する。

(3) 「ruby c:\script\sample.rb」と入力する。これにより、sample.rbプログ
ラムが実行される。


(*) おまけ:「c:\script\」ディレクトリにデスクトップにある「ruby console」
というファイルをコピーしておき、そのコピーしたファイルを利用するようにす
れば、「ruby sample.rb」という入力のみでRubyスクリプトを実行することがで
きる。


** ActiveScriptRuby のアンインストール

(1) コントロールパネルの「プログラムの追加と削除」から「ActiveRuby 
1.8.4.5」を選択して「削除」を選択する。


なんか最近、論文偏重というか。論文を書くために空回っている感じ。駄目駄目。

_なかむら(う)(Wed Aug 09 17:48:11 JST 2006)

 ruby console のプロパティで「作業ディレクトリ」にディレクトリを指定しておく。

_7(Mon)

SUSv3 を(略)。

しかし、どうなんだろうな、これ。情報が膨大スギ。とりあえず、JM.chm と併用してみて考えよう。

しかし、さすがに公開できないよな。


HTMLHelp API を使えば、man みたいなことが簡単にできるかと思ったらそうでも無かった。

というわけで、どういうふうにすればよいかわからん。うーむ。

ヘルプの起動>キーワードタブの選択>キーワードの入力>リターン

の手間を省ければいいだけなんだが。


JavaDoc を HTMLHelp化したら、25MB になった。でかー。

_6(Sun)

未踏池田さん飲み。気づいたら12時だった。家に帰れなかった...。


./200608.html#cc4-1

 うさんくさいかなぁ(ページが汚いってのはあるとは思うけど、個人的にはno-ip.infoドメインよりは遥かにましだと思うし。それはそれとして署名問題はそのうち出てくるはず)。更新頻度ががくっと落ちたらVectorに入れようかとか思ってたけどそうもならなそうだし。 ということで、投票かな。1. 問題なし 2. arton.no-ip.info 使え 3. RubyForge(One Clickとバッティングしてるような) 4. Vector 5. おれ(誰?)のとこ使え 6. その他

私の感覚だと胡散臭い感じ。artonさんを知っている人だといいのですが、配布対象がホビーな人たちではないので。やっぱり形は大事だなあ、と。

署名の問題はASRに限らずありそうですね。

ruby-lang.org のアカウントを貰って配布なんてどうですかね。rubyist.net とか。


./200608.html#cc4-2

るびまの「Rubyの歩き方」って、そういう用途のために準備したんじゃないの?

「Rubyの歩き方」の言い訳という位置づけです。


うう、眠い。


Gauche の CVS 版をビルドしようと思ったら出来なかった。はてな。

しょうがないので 0.8.7 をビルド。


Windows で riece を使いたいという変態のために、riece-ja.chm を作っておいた。


Windows で wl を(略)。


Windows で LaTeX2e を(略)。ってそれは別に変態じゃない。

うう、こんなものがあったのか。もっと早く作っておけばよかった。


残念ながらファイル名は [ej] じゃないです。


Windows で man を(略)。JM を HTML Help にまとめてみた。使いやすいのかどうか、これから考える。

コマンドラインで特定単語を「キーワード検索」へ持っていく方法って無いのかな。作ればできる? 作らないとできない? WinKey + R で man foo とやると、foo を表示するようにしたい。

HTML Help API を叩くちっちゃなプログラム作らないといけないkなあ。

_arton(Sun Aug 06 18:10:04 JST 2006)

 ruby-lang.orgはやめるべきだと思います(あそこで配布するとオフィシャルなパッケージと思われそうだし、他のパッケージ作成者の意欲を削ぐかも知れない。それはWin32メンテナの(う)さんのzip―色がついていない―であるべきだと思います)。でも、rubyst.net に置かして頂けるなら大歓迎です。

_きむら(Mon Aug 07 08:41:59 JST 2006)

 そもそも「オフィシャルなパッケージ」がないのも問題のような。

_MoonWolf(Mon Aug 07 14:53:00 JST 2006)

 そろそろ日本語、英語に対応したワンクリックインストーラが必要なんではないでしょうか。

_きむら(Mon Aug 07 16:36:54 JST 2006)

 ワンクリックインストーラで使っているインストーラ作成プログラムってメッセージの入れ替えの手間はどんなもんなんでしょうか?

_5(Sat)

オ(略)終わた。ADVもここまで進化したかと感動。さすが。

_4(Fri)

「たのしいRuby」第二版を(インチキして)いただいた。はじめてまともに読んだけど、これ計算機初学者、プログラミング初学者にはつらい内容だと思った。Pickaxe 入門って感じがした。

というわけで、「Ruby でプログラミングを始めたいと思うんです」という人に勧めるには、「初めてのプログラミング」なのかなぁ。


ところで、まつもとさんが「初心者の気持ち」云々と帯に書いてあったのには笑った。


Rubyインストールのためのメモ。一般向けではありません。

* 前提

Rubyインタプリタはソースコードとして提供されています。しかし、実際問題バ
イナリ配布をしないと使いづらいという問題があり、有志によっていくつかバイ
ナリパッケージが配布されています。

この状況は、Linux における、RedhatやSUSE、Debianなど、いくつもLinuxディ
ストリビューションがあることに相当します。

* ソース

Rubyインタプリタの最新版のソースコードは http://www.ruby-lang.org/ から
ダウンロード可能です。


* Windows

WindowsでRubyを使うには、主に4つの方法があります。

a. ActiveScriptRubyを利用
http://arton.hp.infoseek.co.jp/indexj.html

arton氏が作った日本人/日本語によるRubyバイナリインストーラの配布です。配
布ページやインストーラが日本語、便利な標準添付ライブラリ以外のライブラリ
の添付などが特徴です。

ただし、無料ウェブスペースを利用しているため胡散臭いとか、「ActiveScript
って何?」と疑問に思ってしまう、というような問題があります。

ActiveScriptとは、Windowsのスクリプト拡張に関しての用語で、たとえば
Windows Scripting HostやInternet ExploreなどからRubyが利用できるようにな
ります(もともと、これを行うために作ったそうです)。


b. One-Click Ruby Installerwoを利用
http://rubyforge.org/projects/rubyinstaller/

海外で開発されているRuby用Windowsバイナリです。英語での情報ばかりですが、
とてもたくさんのRubyライブラリが同梱されています。


c. cygwin のパッケージを利用

cygwinのsetup.exeを利用して、他のパッケージをと同じようにRubyインタプリ
タが簡単にインストールできます。ただし、a, bとは違い、標準添付ライブラリ
しか付属していません。

普段からcygwinを利用している人にとっては一番簡単だと思いますが、たいてい
の人にはcygwinは不要だと思いますので、一般的ではないでしょう。


d. 自分でソースからビルドしてインストール

Microsoft Visual StudioやMinGW、Cygwinなどのコンパイラ、開発環境を用いて
ソースファイルからインストールできます。ただし、それらのコンパイラの知識、
およびRubyインタプリタのビルド手法についての知識が要求されます。これを選
ぶ人には、とくに説明は要らないでしょう。


* Mac OSX

最初からインストールされているようです。


* Linux

Linux 環境では、gccなどの開発環境がインストールされている、もしくはセッ
トアップするのが容易であろうと思われるため、自分でソースからインストール
するのもそんなに難しくありません。

ただし、最近はLinuxディストリビューションがパッケージ管理ツール(aptや
yumなど)を持っているため、それを利用してRubyパッケージをインストールす
るのが簡単です。


* その他

少し古いですが、「Ruby インストールガイド」というページがまとめられてい
ます(http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=top)。

なんとなく、必要になったのでまとめてみた。

ASR はページとか、なんとなく胡散臭い感じ(偏見)があるので、そこさえクリアしてしまえばいいんだろうなぁ。


上記は、少なくない計算機初心者に、Rubyをインストールさせるための方法をちょっとまとめて、と言われたので、その前段階としての資料として用意してみた。

一番いいのは、ASRのミラーで、「ここからダウンロードしれ」と書いておくことかなぁ。

しかし、未だに ASR をインストールしたことが無い人。

あと、RDEをインストールしてもらうかどうかは、どうなんだろうな。やっぱりあったほうがいいのかな。

あと、HTMLHelp。

_arton(Fri Aug 04 22:25:59 JST 2006)

 うさんくさいかなぁ(ページが汚いってのはあるとは思うけど、個人的にはno-ip.infoドメインよりは遥かにましだと思うし。それはそれとして署名問題はそのうち出てくるはず)。更新頻度ががくっと落ちたらVectorに入れようかとか思ってたけどそうもならなそうだし。  ということで、投票かな。1. 問題なし 2. arton.no-ip.info 使え 3. RubyForge(One Clickとバッティングしてるような) 4. Vector 5. おれ(誰?)のとこ使え 6. その他

_なかむら(う)(Fri Aug 04 23:16:59 JST 2006)

 るびまの「Rubyの歩き方」って、そういう用途のために準備したんじゃないの?

_3(Thu)

東京に戻ってきた。

高知城に少し行ってきたが、汗だくの足ガクガク。


なんていうか、金使いすぎ。

  • 7/31 昼飯 650、飲み会 5000、夜食 1000
  • 8/01 朝飯 400、昼飯 500、懇親会 5000、飲み会 5000、夜食 1000
  • 8/02 昼飯 500、飲み会 5000、夜食 1000
  • 8/03 昼飯 950

3万円弱。うう。


RubyConf の日本人参加者って、今年はもしかしてとても少ないのか?


PTT に行きたかったんだが、行けなかった。残念だ。

_2(Wed)

暑い。

_1(Tue)

正直やばいんで誰か助けてください。

 第39回情報科学若手の会の開催、および申し込み締め切りの延期につ
いてご連絡をさせて頂きます。重複して受け取られた方はご容赦くださ
い。

 今年度の情報科学若手の会の参加枠に、まだ余裕がありますので、参
加募集の締め切りを一週間延期いたしました。若手研究者の方は是非ご
参加をご検討ください。若手はちょっと、という諸先生方においては、
お近くの学生の方々へご周知頂ければ幸いです。

 また、発表枠もまだ残っておりますので、そちらについてもご検討く
ださい。

 以上、よろしくお願いします。

-----------------------------------------------------------------

              第39回情報科学若手の会開催のご案内

  情報科学若手の会は,情報科学に携わる学生,若手研究者,社会人の
ディスカッションと交流の会です.幅広い分野から参加者を募り,互い
の交流を深めることで新たな発想が生まれることを目指しています.
インフォーマルな雰囲気ですので.これから研究を始めるという方も是
非ご参加下さい.

  詳細は,情報科学若手の会のWeb ページをご覧ください.

        http://wakate.aitea.net/

  限られた時間ですが,この会が有意義なものになるよう,皆様のご参
加をお待ちしております.

 なお,今年度の招待講演は筑波大学の前田敦司先生をお迎えする予定
です.


    招待講演者:
        筑波大学 大学院
        システム情報工学研究科 コンピュータサイエンス専攻 助教授
        前田敦司先生

    日時:
        2006年9月16日(土)〜18日(月)
        二日間のみの参加も可能です.参加申込みの際に併せてご連絡
        ください.

    会場:
        富士CALM (山梨県富士吉田市)
        http://www.mfi.or.jp/fujicalm/index.htm
        (無線Lanなど利用可能です)

    定員:
        30 名

    参加費(食費・宿泊費込):
        学生15,000 円,社会人18,000 円
        (遠方からの参加者には交通費補助をする予定です)

    参加申込み:
        参加希望の方は下記の情報を参加申込みアドレスにお送り下さい.
            - 氏名,性別,所属(学生の場合学年も),メールアドレス,
              出発都道府県
            - 参加者として氏名・所属をWeb 上に掲載してもよいか
              (運営の都合,参加者に配布される名簿には名前・所属に
              関しては必ず掲載させていただきます.)
            - 宿泊の部屋割りにあたって,喫煙の考慮が必要な方はその旨
            - 食事にあたってアレルギー等がある方はその旨
            - 発表をしていただける方はその旨(可能であれば題目,要旨)

    参加申込み先アドレス:
        attend2006@wakate.aitea.net

    申込み締切り:
        一週間延期しました:
        2006年8月8日 (火)
        (締切り前でも定員になり次第,締切らせていただきます)

    主催:
        プログラミングシンポジウム委員会

    情報科学若手の会幹事:
        上坂明未(フェリス女学院大学)
        笹田耕一(東京大学)
        鈴木宏哉(慶應義塾大学)
        松浦知史(奈良先端科学技術大学院大学)
        松田耕史(東京工業大学)
        三輪誠(東京大学)

幸いなことに、OSS かいてます。多分。書いても怒られない。

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