K.Sasada's Home Page

Diary - 2005 March

研究日記

弥生

_31(Thu)

ふと、必要があって大学の住所を調べようと思って http://www.tuat.ac.jp で探してみたら、住所が見つからなかった orz 探し方が悪かったのかな。学科のページを見たら、すぐにわかった。アクセシビリティに問題が?


出したっと。


学校のネットのラインが怪しいらしく、外に出れない(中に入れない)という状況が断続的に起こる。

なんでこんなときに限って、と、ドキドキしながらさっさと出した。


3項演算子は好きですが、3項演算子をネストして使うのはかなり見づらい。

_こーのいけ(Thu Mar 31 11:17:27 JST 2005)

 トップページ→適当なページ→大学案内→キャンパスマップ→所在地一覧とたどると見つかる・・・って確かに分かりにくすぎ。

_nanasi(Thu Mar 31 16:48:26 JST 2005)

 そんしー

_ささだ(Fri Apr 01 02:22:45 JST 2005)

 そんしー

_30(Wed)

風邪が治らん orz


windows で html ファイルなどを開くには、`start hoge.html` で開ける。

_29(Tue)

やっぱり飲むのは失敗だった... つらすぎ。


入門xyzzy を注文。


よくわかる〜を注文。


あとなんかあったかな。


acm のサイトの PDF を印刷すると、一ページ目が印刷されない(上5cm分くらいしか印刷してくれない)。

これはいったいなんの嫌がらせだろう。

Foxit PDF Reader だと、印刷できるけどとても汚い。


Adobe Reader を再インストールしたら、写るようになった。はて。

うーん、印刷時の設定によってできたりできなかったり? よくわからん。


今日は 12時に集合、と言っておいたのだけれど、まぁ順当に誰も居ない。新しく研究室に入ってくる人たちくらいは来るかと思っていたのだけれど。これが人徳か。

さて、どうしようかな、このゴミ。


頭がガンガンする。痛い。

_28(Mon)

うちのボスは来年度から未踏の PM なんですが、そういう点で有名になっている。自己紹介で「〜〜の研究室なんですが」「あ〜、PMの」。しかし、研究分野は知られていない。


で、私も来年度分の未踏申請書をとりあえず書いているんだけれど、金金言っていると、なんか自分が強欲な人になったような気がしてくる。いや、強欲なんだけれど。多分。

でも、今年も rubyconf 行きたいしなぁ。


熱はやっとひいた。声もなんとか出るようになってきた。一日中寝ていたかいがあった。


OSC2005 反省文。

よかった点:

  • セミナーでは、結構受けた。rails と yarv も
  • セミナーでは立ち見も出るほど盛況で、100人弱もあの小さい部屋に入った
  • yarv のチラシ(70枚くらい)が早々に掃けた
  • 飲み会でいろいろと喋れた
  • 飲み会で、本をもらえた

悪かった点:

  • 展示会場、セミナー会場について、詳しく聞いていなかったため、予想外のことがいくつか(セミナー室にマイク設備が無い、展示でポスターを貼る場所が無い)
  • セミナーで、時間がやっぱりきつかった。そのためストヤンさん、高橋さんに「早く早く」とせっついてしまった。時間配分は、25分ストヤンさん(rails の実際)、13分高橋さん(rails の概念)、10分ささだ(yarv)、7分まつもとさん(skype で質疑応答) 客は rails に興味深々だったこともあり、せかしてしまったのは心苦しかった。rails オンリーのほうがよかったかもしれない。(まぁ、でもストヤンさんは 20分、高橋さんは5分で喋るって言っていたので、喋りすぎなのはこの人たちなのだ :))まぁ、一時間は短いね。実質 50分強。
  • ruby のチラシ(100枚)が余った(20枚くらい?)。ポスターと一緒というのは、芸がなかったか。隣のなでしこのチラシはきっちりと書いてあってよかった
  • まつもとさんに対して、気の利いた質問などを用意しておくべきであった
  • 飲み会で、やっぱり固まってしまったので、もっと世界を広げる努力をするべきだった
  • 展示はどれくらい効果があったのか微妙だった orz 知り合いの溜まり場になっていたような気がする。もっと、何かをアピールするべきであった

ruby、とくに rails は大変注目を集めています。高橋さんが繰り返しているように、「今年は Rails で Ruby はブレイク」すると思います。その波に乗り遅れないように、いろいろとやっていかなければ。


入門xyzzy ってもう出たのか。買わなければ。


かずひこさんに映像配信について、「なんで ffmpeg 使わんねん」といわれたのだけれど、ffmpeg は cygwin 上で windows のデバドラ叩いてウェブカメラの画像を取得する方法がわからなかったのです。それができれば、動画として配信できたんですが。


jpg 画像をガシガシ送るやつは、そのうち公開します、ってえらい短いスクリプトですが。


うぅ、連絡を忘れた俺も悪いんだが・・・。

_27(Sun)

帰宅。

のど痛すぎ。しゃべりすぎた。しゃべれません。


いろんな人と会え、いろんな話を聞くことができました。皆様に、感謝。


喉が痛い。せきが止まらない。


エマ(小説)1巻読了。

あとがきを見る限り、久美さん自信が積極的に書きたいものではなかったのかなぁ、とか思うけれど、よくわからん。久々に読んだ。

アニメ化もされるんだねぇ。


Sixamo::Core#memorize で、エラーを吐くししゃもさんはどうしてあげればいいんだろう。

Exception `NoMethodError' at ./sixamo.rb:491 - undefined method `empty?' for nil:NilClass


  begin
    sixamo.memorize(msg.toeuc)
  rescue
    sixamo = Sixamo.new('./')
    retry
  end

と、むかしもしたような気がするなあ。

_mput(Sun Mar 27 19:30:31 JST 2005)

 NilClass.class_eval{define_method(:empty?){true}}

_ささだ(Sun Mar 27 21:51:49 JST 2005)

 別の問題が起きそうな気がするけど、そんなもん?

_26(Sat)

高橋さんは先週から声が出なくて大変だったそうだが、私は今声が出ない。

では出発。

_25(Fri)

いぢめだ。


プレゼン道入門 を教えてもらう。


せきが止まらない。


OSC2005 の準備をしていて気づいた。発表のための準備を何もしていない。どうしよ。


というわけで、明日は新宿に居ます。日本 Ruby の会の展示ブースに居るような気がします。見かけたら声をかけていただけると幸いです。


展示はなでしこの隣らしい。

明日は高橋さんのサイン会、ってことでいいのかもしれん。

_24(Thu)

また熱が出てきた...


無事つくばから帰還。

_りょうせい(Thu Mar 24 19:31:11 JST 2005)

 OCS で話すの?昨日登録しようと思ったら,定員いっぱいだったんだけど.

_ささだ(Thu Mar 24 23:41:56 JST 2005)

 まぁ、一人くらい紛れるのは可能なんじゃないかなぁ。

_び(Fri Mar 25 01:09:41 JST 2005)

 R君←監獄からの出所おめでとう!けど、ナニは何とかしようよ。とある漫画の「Dがおちた日」ぢゃまずいしぃ

_23(Wed)

やっと熱が下がった。

でも、のどは痛い。


Cell の話。SPE の命令セットがどうにもわからない。CellのSPEはJAVA VMのハードウェア化? なんてのを見ると、最初のほうの解説はようわからんのだけれど、ある程度 SPE はプログラマブルになるような感じ。最初の想像では、ストリーム処理に特化したものにする、ということで分岐とか無いんだろうな、と思ってたんだけれど、そうでもないんかな。単純な(もしくはちょっと SIMD 命令が混ざった)プロセッサ、ってことになってるんだろうか。まぁ、それはそれで妥当。


Cellのパワーの源「SPE」の正体 に書いてあるじゃん。そのまんまだった。

しかし、コンパイラコンパイラというが、対象言語はなんになるんかな。まさか Fortran じゃあるまい。


select 命令ってなんだろう(http://pc.watch.impress.co.jp/docs/2005/0212/kaigai03l.gif の simple fixed unit 中)。


明日は初つくば。


エマ小説版なんてあったのねぇ、とふと作者を見たら買ってしまった。


【オブジェクト倶楽部:2005-11号】を見て、【プログラミング】Rubyで進むオブジェクトの道 〜脱初心者をめざして〜[3] という記事があるのに気づいた。いつもはついつい飛ばしてしまうのだけれど。


当たり前のことですが、2000円のウェブカメラよりも、1万円のウェブカメラのほうが画質がいい。とてもいい。


わは、手動でしたか。

こういうのの visualization って、どうなってんだろ。


竹内先生のコメント、アレはなんか口調が違いすぎ。


「オブジェクト全盛の時代にアセンブラはないと思われ」

さて、どこをどう突っ込めばいいんだろうか。

ちなみに、jini が気になって気になってしょうがなくて買いました。


あーあ、風邪ひいてるのになんでこんな時間まで学校に居るのか>俺

A. ただ単に要領が悪いだけ


後輩が賞をとった。めでたい。正直評価が足りないと思っていたんだけれど、賞を取るとは。めでたい。アイデアがきちんと評価されたってことなんだろうな。めでたい。

_しゅ(Wed Mar 23 10:36:12 JST 2005)

演算やメモリへのストア時に、どのワードやバイトが対象となるかをレジスタで指定すること?>selects と考えてしまったのですが、実際は、 「分岐する2つのパスを両方とも実行しておき、分岐が成立した時点でselect命令でパスを選択する」 (http://pc.watch.impress.co.jp/docs/2005/0212/kaigai156.htm より) だそうです。 VLIWのpredicateとどう違うんだろ。

_ささだ(Wed Mar 23 13:31:34 JST 2005)

 そこを見て select ってなんじゃろう、と考えてみたのでした。投機実行をソフトウェアでやるイメージ?

_maeda(Wed Mar 23 13:53:32 JST 2005)

http://pc.watch.impress.co.jp/docs/2005/0212/kaigai157.htmでは。>しゅどうさん。

Cell Moves into the LimelightとかA Streaming Processing Unit for a Cell Processorとか見るとthree-source bitwise selectってあるから、

 select Rdest, Rsel, Rsrc0, Rsrc1

で、Rselで0になっているビットはRsrc0から、1になっているビットはRsrc1からそれぞれ選んで、結果がRdestに入るとか、そんな感じなのかな。

predicationに近いですね。VLIWと違って命令レベルの並列度はあんまり高くないアーキテクチャだけど、分岐ペナルティ(18サイクル)が大きいから役に立つのかも。あと、SIMD命令でどかっと128bit演算しといて、その中から必要なものをselectで選ぶとか?

他に静的な分岐予測(ソフトウェアで管理するBTBに、飛び先をあらかじめプリフェッチしておく命令)があるらしい。定型的なループの処理に特化したアーキテクチャですね。

_m(Thu Mar 24 16:41:59 JST 2005)

 うーむ、現代魔法...

_22(Tue)

熱が出てぼーー・・・。


で、Java Script を久々に弄ってみた。もう全然ダメダメ。

最初、DOM の load でなんかやってて、IE では動いて firefox では動かない。とか、なんかそんなの。

もうやらんぞ。


というわけで、風邪でダウン。


http でファイルを送るには、って話。multipart とか、まったく知らなかったのだけれど、今回勉強させてもらいました。

require 'net/http'
require 'uri'

Net::HTTP.version_1_2

def upload uri, file
  uri      = URI.parse(uri)
  if block_given?
    boundary = yield
  else
    boundary = '--------------------------' +
      Time.now.to_i.to_s(36) + '--' + rand().to_s.to_s(36)
  end
  
  Net::HTTP.start(uri.host){|http|
    header = {
      'content-type' => "multipart/form-data; boundary=#{boundary}"
    }
    data = []
    data << '--' + boundary
    data << %Q(content-disposition: form-data; name="upload_file"  filename="#{file}")
    data << 'content-type: application/octet-stream'
    data << ''
    data << open(file, 'rb'){|f| f.read}
    data << "--#{boundary}--"
    data << ''
    
    data = data.join("\r\n")
    res = http.post(uri.path, data, header)
    res.body
  }
end

これで本当に正しいかどうかは知らない。


上記、最初は送信した結果がおかしくて、なんでだろーと思っていたら File.read(file) のようにしていたからでした。File.read はテキストモード限定? というわけで、わざわざ open して read。

_shiro(Wed Mar 22 06:54:50 JST 2006)
  • メインのヘッダに mine-version: 1.0 が必要だったような気がする。
  • filenameに変な文字が入っている場合のquote対策 (rfc2045あたり)

_21(Mon)

終戦のローレライを図書館で検索してみると、大量にひっかかったんだが全部貸し出し中。


あるディレクトリ(たとえば論文を突っ込んだディレクトリでもいいや)をバージョン管理システム(たとえば subversion)に突っ込みたいなあ、と思っても、つい面倒でやらないことが多い。インポートしてチェックアウトして、っていうのがめんどい。チェックインするのもめんどい。

この辺を簡単にする工夫は無いものか。

ちょっと考えたのが、pdumpfs みたいなのでごにょごにょするのだけれど。既にありそうな気もするな。日にちごとにバックアップするのを、バージョン管理システムに突っ込む作業で代える、とか。


日ごろから使う習慣をつけておけば面倒と思うこともなくなるんだろうか。


DeltaV ってのは、まさにこれを狙っているのか? 現在の subversion でどこまで出来るんだろ。


そういえば、先日のあれは、正直びびった。よく(略)出来るよなあ。いや、まったく。信じられん。


検索ベースな imapd は shugo さんが作ってくれるらしい。ラッキー。応援してます。

mobileimap を入れようと思ったら、imap over ssl しか動かしてなかった。どうしようかな。imap も動かしておくかなぁ。


映像が欲しい、ということで、なんとかウェブカメラを見てもらえるシステムを探しているんだけれど、これは、というものが無い(とくに、Windows にウェブカメラをくっつけると)。

というわけで、なんか作るか。ついでに、ajax というのも流行っているらしいので、ちょびっとだけ体験してみよう。


アップロードする人:

  • camera client -> [http] camera picture -> server

見る人:

  • server -> [http] view page (html) -> view client
  • view client -> [http] reload check -> server
  • server -> [http] reload response -> view client

javascript にする必要ないけど、更新確認をこいつでやれるとちょっとかっこいいかな、とか。

ライブラリとか全然知らないので、全部書いてみよう。


ところで、OSC2005 のセミナー室って、ネットワークきてるのかな?

_shugo(Mon Mar 21 19:37:48 JST 2005)

 ささださんが作ってくれるなら喜んで手を引きますよー、もちろん

_20(Sun)

昨日の高橋さんの説明は大変参考になりました。風邪で声が出ない中、実に3時間(以上)ご講演いただきまして、本当にありがとうございました。


そしてまた来週がある。


connect24 で知ったネタ> http://jpstore.dell.com/store/newstore/soho/soho_catalog_267.asp

安いなぁ。買っちゃおうかなぁ。でも、家にこれ以上置く場所無いぞ。

このスペックで 22,699 円(キーボードとかなし。メモリ 256MB)は安すぎるような気がする。どうしよう。本気で悩む。

おうちのサーバをリプレース... でも、五月蝿そうだしなぁ。これを4台買ってクラスタ...。10万しないんだよな。


  • インテル(R)Pentium(R)4プロセッサ 2.80GHz /1MBキャッシュ
  • PCI スロット (3) PCI 32ビット/33MHz, (1) x8 PCI-Express, (1) x1 PCI-Express
  • 256MB (1x256MB, 1R) PC3200 DDR2/400MHz SDRAM DIMM ECC
  • シリアルATA 160GB ハードディスク (7200回転 )
  • 外形寸法:491mm x 222mm x 488mm (高さ x 幅 x 奥行)

しかし、とてもでかそうだ。これを数台並べるのは...。あと、音が凄そうだ。

うー、悩む。しかし、テスト環境には良さそうだよなぁ。


うーん、やっぱり轟音らしい。家に置くのはむりぽ。残念。


えーと、納豆美味しかったです。マグロと納豆の組み合わせは初めて知ったなぁ。マグロ食べ放題つきで 2300円(くらい?)は安かった。飲み放題1000円でこれはお得だった。居酒屋であそこまで腹いっぱいになったのは初めてじゃなかろうか。


今日は取材の日。


取材行ってきた。疲れすぎ。なんでこんなに人が居るんだ。

_19(Sat)

gem 初体験。

  1. ruby182 setup.rb -> エラー: ぱーみっしょんえらー
  2. sudo ruby182 setup.rb -> エラー: zlib が入ってない
  3. gem -> エラー: require 'rubygems' が出来ない -> shbang を変えていない
  4. gem install rails -> エラー: パーミッションエラー
  5. sudo gem install rails

で、なんか聞かれて、全部 Y にしたら、いろいろインストールされたような気がする。


config/database.yml に "socket: /var/run/mysqld/mysqld.sock" を追加。


rake は途中で止まる。パッチを入れても止まる。はてな。


そして mysql でエラー。

You have an error in your SQL syntax near 'foreign_key_checks = 0' at line 1: SET foreign_key_checks = 0

多分 mysql のバージョンが古いからだろうけど(mysql Ver 11.16 Distrib 3.23.49, for pc-linux-gnu (i686))。

どうしたもんだか。


Rakefile に、

  ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')

とあったのを消してみた。動いた。


なんとなく動いた。予習はこんなもんでいいか。

script/server は、各種オプションを受け付ける。ポートを変更するには --port=12345 みたいにする。

_18(Fri)

体の調子が悪いので今日はお休み。

_maeda(Tue Mar 22 00:11:45 JST 2005)

 久々に会えるかと思ったのに。残念。

_ささだ(Tue Mar 22 03:44:50 JST 2005)

 残念です。

_17(Thu)

  • 3/25 SACSIS ポスター締め切り
  • 3/31 未踏締め切り
  • 3/31 IPSJ OS研締め切り
  • 4/1 第54回 プログラミング研究発表会 発表申し込み締切
  • 4/25 SWoPP 申し込み締め切り
  • 4/28 FIT2005 原稿締め切り
  • 5/? ACS 論文締め切り?

第54回 プログラミング研究発表会について追加。うーん、どうしよう。一度発表してみたい気はするんだけれど。でも、ネタが...。プロシン出したから、もう yarv ネタはいいかなぁ。

FIT では、またメソッドディスパッチネタで書いてみようか。


会社説明会というやつにはじめて出席してみる。冷やかしだったのにご飯まで頂いてしまい、恐縮。もっと出るようにしよう(ぉ。


「すべてがFになる」読了。

一番最初に青木淳さんの引用があったので、気になって読んでみた。

うーん。なんというか、「きみと〜」と正反対というか・・・。

そもそもさぁ、ありえないだろ、これ。

高屋敷ドラクエと久美ドラクエの違いみたいな感じ。(誰もわからんってば)

とりあえず、笑うところじゃないだろ、これ。


今日、明日は大岡山。


「わかる範囲で」と書こうとして「わかる犯意で」と誤変換する寂しさ。


  1. 変数() で、変数.call() とする
  2. @_変数名でクラスローカルインスタンス変数みたいなものにする

という前提のとき、

@_hoge = lambda{...}

としておけば、@_hoge() で、クラスローカルなメソッド(みたいなもの)になるなぁ。

既出かもですが。立石さんあたりがすでに言ってたっけ。

でも、あんまり使いたいという気が起こらないのはなんでだろう。


でかいクラス(プログラム)を作ったことがないだけな気もする。


徹夜明けだったので結構寝てしまった。今日はなんか質疑応答が激しかったような気がする。

_16(Wed)

朝から勘違い。しかし、なんでかわからないことはまだ残っている。はてな。

_15(Tue)

「きみとぼくの壊れた世界」読了(図書館で借りた)。面白かった。いろいろと。TAGRO さんであることにホクホク。わはは。いや、一度きちんとお会いしてみたいもんだ。

いい壊れ具合でよかった。途中までは「あー」って感じだったけど。きちんとぶち壊してくれて、満足。わはは。オゾマシスギ。西尾維新さんの作品を読んだのははじめてだけれど、面白かったので他のも読んでみよう。

クスクス笑えるところは随所にあったけれど「あー」って感じだよね。なかなかこんなに壊せないよね。いやー。わはは。よかったよかった。


美しいかどうかはよくわからないけど、楽しめました。まる。



int i(){
  return 0;
}

main(){
  int i;
  return i();
}

//f.c(8) : error C2063: 'i' : 関数ではありません。
//f.c(8) : warning C4033: 'main' : 関数には戻り値が必要です。

知らんかったなぁ。試そうと思ったのも今回が初めてで、もしかしたらそうなるかも、とは思ってたけど、ほんとにそうなった。なるほどねぇ。

うささんの言葉を借りれば、

つまり、常識的には、関数と変数の名前がぶつかるなんてありえねー。

ということですか。

_shiro(Tue Mar 15 17:12:45 JST 2005)

 Schemeで"list"という引数を使ってはまる罠。

_joe(Wed Mar 16 13:26:26 JST 2005)

 GNUコーディング規約では関数の識別子の後に空白を入れますけれど、これを防ぐ目的もあるのではないでしょうか。

_ささだ(Thu Mar 17 00:13:54 JST 2005)

 すみません、空白で何がどう防がれるのかわかりませんでした。教えていただけませんか。

_joe

あーごめんなさい、

int i;
int i();

では、まるで i と i() という二つのメンバがあるように見えますけれど、

int i;
int i ();

と書くと、同じものであることが分かりやすいんじゃないですか、ということが言いたかったのです。

_ささだ(Thu Mar 17 08:12:02 JST 2005)

 なるほど。納得しました。

_14(Mon)

生まれて初めて買ったハヤカワ文庫の本である、物理と数学の不思議な関係、読了。いや、数式はさっぱりわからなかったのですが。知らんことばかりで面白かった。


一応、Ruby 2.0 に向けての(1.9 で試されるであろう)仕様は Ruby2.0spec にまとめておければと思っております。抜けなどありましたらご指摘ください。


Zope 勉強会かー。ますます timedia の会議室の競争率が激しくなる予感。パラレルセッション!?


Java Computing Spring で強調していたのが「互換性」だった。とにかく、互換性、互換性、互換性・・・。

商売で使うのなら、当然のことですかね。


OSC2005 ですが、YARV は 5分くらいになりそうです。


研究会報告を読んでみる。著者など略。

2005年2月研究会(第98回 システムソフトウェアとオペレーティング・システム研究会)

■プライバシ保護を実現するオペレーティングシステムのファイルアクセス制御手法

これでシステム作り直したらどれくらい大変なんだろう。システム的にはいくらでもやりようがあることはもうわかっているんだから、そろそろポリシ策定のためにどうするべきかをきちんと議論するべきじゃないんだろうか。

■汎用的なファイル名マッピング機構の設計

本節では Weblog の一種である Wiki を取り上げ〜

って・・・。

評価はどうなったんだろう。

■ジャーナリングファイルシステムの構造を利用した非同期リモートミラーリング手法

う、英語だ。

■los: 汎用計算機上のLisp Machine --- その1:取り合えず動くまで ---

字、でか。

夏のプロシンや PTT で喋っておられた以外の情報は書いていないように思われる。楽しみにしていたんだけど。

■Javaを用いたOS構成法

ぜーんぶ Java で、って話。細かくはもうちょっとあるけど、長くなって面倒そうなので割愛。

割り込みは、これでいいんだろうか。うーん。

しかし、書き方が悪いような気がする...。浮ニか、何が書いてあるのかわからん orz うーん、やっぱり読みづらい。

■組み込みLinuxの実時間機能によるリアルタイム通信機構

提案手法が何かよくわからなかった。すでにある話をまじめに作ったらこうなりました、って話なんだろうか。

■携帯機の安全な機能拡張のための信頼できる外部デバイスフレームワーク

やっぱりポリシなんだなぁ。

■Network IDS による攻撃検知情報を利用したサーバの安全性向上

IDS ってサンドボックスで動かすものじゃなかったのか。

■プログラム注釈に基づくバッファオーバーフローの検知方法

うーん、ネタとしては面白いし、興味はあるんだけど、解決策が・・・。

■異種無線ネットワーク環境における透過的な接続を実現する経路制御機構

とても面白そうだけど難しそうなのでパス。

■ネットワークデバイス切替え時における通信の継続手法

新しいところがわからなかった。

■動的リンクライブラリの実行中入替えを可能にする基本機構の評価

うーん、こういうのがもうちょっと普及するといいんだけど。

■異種計算機間でのモバイルコードのための資源予約機構の構築

利用シーンがよくわからなかった。

■ユビキタス環境におけるトランザクション処理方式

何がいいたいのかよくわからなかった・・・。


うーん、OS研は、セキュリティとモバイル研究会って感じだなあ。どっちも趣味じゃない。


生協さんに A0 ポスター印刷いくら? って聞いたら5000円弱、とのことだった。高い。

というわけで、A3 を数枚、ってところですかね。


なんでこんなのが上に上がってるんだ・・・。


関係ありそうなデッドラインを並べてみる。

  • 3/25 SACSIS ポスター締め切り
  • 3/31 未踏締め切り
  • 3/31 IPSJ OS研締め切り
  • 4/25 SWoPP 申し込み締め切り
  • 4/28 FIT2005 原稿締め切り
  • 5/? ACS 論文締め切り?

はて、どうしたものか。OS研(というか沖縄)行ってみたいなあ。

SWoPP は区切りとしていいから、出しておきたいけど、まだネタがさっぱり見つかっていない。

FIT やポスターなんかは Ruby ネタで考えてみるかなあ。

_しゅ(Mon Mar 14 17:53:33 JST 2005)

Rubyの場合、まつもとさんの一存で動作が変わることの問題/不満を表明してる方もいました。 でも、仕様(というか主な実装の挙動)策定プロセスを決めるとか何とか、状況を変えようっていう具体的な提案、アクティビティもなかったんですよね。

_13(Sun)

今日もいろいろと駄目な日。


むむむ、The RWiki につながらない・・・。

_12(Sat)

まだ結婚してない人はきっとこれからも結婚できないということですか orz


昨日は Tiger の話が聞けたのはよかった。でも、それだけ。


明日帰ったら Ruby 関連の色々を片付けます。多分。


帰宅。

久々に目が回るほど酔っ払った。Wiki ばな500円+懇親会2000円。こういう懇親会もたまにはいいよねぇ。

_しゅ(Sat Mar 12 14:01:48 JST 2005)

 プログラムを見る限り、サーバ側の話題8.5割、組み込みの話題1割、その他0.5割って感じでしたもんね。

_ささだ(Sat Mar 12 23:48:07 JST 2005)

 そんな感じでした。組み込み系も面白くなかった(個人的に)でしたし・・・。

_11(Fri)

確定申告。はじめて還付じゃなくて納税だった。

_10(Thu)

帰宅。疲れた。


変更の話を見て、さらに疲れた。


YARV はメソッドローカル変数が増えることを前提に設計したので、マズー。どうしよう。


日記をさぼっていたので書く。

3/7 北海道入り。昼生協でなんか食べて夜、寿司を食べてラーメンを食べる。

3/8 朝バイキングで食べて昼素敵な料理屋で食べて夜ジンギスカンを食べてラーメン(*1)をたべる。朝印鑑と郵便局を探して雪の中を歩き回る。

3/9 朝バイキングで食べて昼そばを食べて夜スープカレーを食べて東京へ帰る。

*1:8/7 に行ったラーメン屋「すみれ」は閉店時間で惜しくも食べることができなかった。そのため、他の店舗に行ったところ、なんとか食えた。しかも、店員さんが、本店とローテーションしているのか、私のことを(食い逃した客と)憶えていてくれた。こんなこともあるのね。しかし、とても遠かった・・・(1時間半ほど雪が降る中を歩いた)。


Java Computing 2005 Spring 一日目。ほんとーにお偉いさん向け? のセッションしかなく、退屈だった。明日どうしようかな。

S田君が居た。元気そうで何より。

_まつもと(Thu Mar 10 13:06:58 JST 2005)

 すみません。ドキュメントを読んで気がついてはいたんですが。

_8(Tue)

はじめて(自分の金で)カウンターの寿司.回転しないやつ.最後になるかも.

地酒も飲む.北の勝と言ったか.おいしかった.


ラーメンマニアのSさんにラーメン屋さんを教えてもらう(携帯メールって便利だ).で,地下鉄に乗って行ってみて,迷う(道を90度間違える).たどり着いたら店が終わっていた.ショック.


しょうがないので(?)ほかのてきとーなラーメン屋さん(割引がきいた)を食べる.食べすぎ.東京でも食べれた味だったか.

_7(Mon)

さて、我慢ならないほど不安定な nadoka ですが、春頃、春先にも大改造したいと考えています。もし何かご要望などありましたらご指摘ください。


というわけで、北海道行って来ます。

寿司食いたいなあ。


雪がいっぱい.でも,そんなに寒くない.


発表は無事終了.好評っぽい.


京王プラザホテルすげぇ.家族旅行以外で,はじめて部屋まで案内された.

_さ(Mon Mar 07 09:50:39 JST 2005)

 着

_6(Sun)

いいなぁ、OOPSLA。


自分の専攻名を間違えていた orz 経歴詐称。


うーん、Ruby の会じゃない発表は実に半年ぶりだ。


なぜか現実逃避に WOL を試してみる。amd64 マシンは何もしなくてもうまくいったのだけれど、xeon マシンはうまくいかない。なんでじゃー。


マシンは再来週にリプレースしないと。

_5(Sat)

しっかし、alpha の機械語わかんないな。ldq とか stq の q は quad だろうか。


2万行の関数だと、どこがどこだかサパーリ。

ちなみに、alpha だったら、レジスタたくさんで幸せそうだから、その辺の調整をしたらもっと速くなるとおもふ。でも、アーキテクチャ知らないのでパス。研究室の alpha マシンの火を入れてみる?


今日は昼からずーっと 第1回 東京農工大学総合情報メディアセンターセミナー「インターネット時代の情報セキュリティと個人情報保護」 を見ていた。せっかく農工大でやるんだから、見ないと損だろう、ということで。

具体的な目標は、

  • 上原先生に挨拶する
  • 奥村先生を見る

いや、奥村先生の本には大変お世話になったので(高校のときに借りたアルゴリズム辞典が、私のアルゴリズムとの出会いだった。むちゃくちゃ面白かった)。ミーハー。

で、内容は正直どうだろうと思っていたのだけれど、とても参考になった。

法律方面から実務方面、委員会方面から大学の先生、NPOから見た自治体の実際、と多岐にわたり、これっぽっちも知らなかった知識を仕入れれることができた。

で、まぁいろいろ知ることができてよかったんだけれど、じゃぁ一市民としてどうすればいいの、っていう話にはならなかったのは、まぁ時間もなかったし(30分オーバーしていた)。

いや、面白かったです。行かなかった農工大の人は損したと思う。

しかし、20分を平気でオーバーした上原先生萌え。大変お忙しいとは思いますが、これからの更なるご活躍をお祈りいたします。


そういえば、今日の昼にマクドナルドに行ったんだが、むちゃくちゃ混んでいた・・・。やっぱり、やめておけばよかった。


さて、HOKKE の発表準備しなくては・・・。


そういえば、美文書作成入門にサインを貰えばよかったかなぁと、くだらないことを考える夜。

_ビビビ(Sat Mar 05 20:31:06 JST 2005)

 漏れは行って講師の面々と酒飲みたかったけど、用事があってイケズ。話の内容は大体どこかで聞いたからいいけど、本当に必要な人達って絶対こーゆー話を聞かないし調べないんだよね。所詮、某学科もあの程度よ。

_4(Fri)

Gauche:VMの最適化

インストラクションセットをいじる (頻出するsubrを専用インストラクションに置き換えたり、インストラクション結合を行ったり) のは、劇的な速度向上には結びつかなさそう。ひとつ改善するたびに1%の向上とか、そんなもん。 (もちろん、その改善がinner loopで効いてくるようなベンチを使えば改善効果は大きく出るけれど、現実のアプリで測るとその効果はずっと薄まる)。積み重ねてゆけば馬鹿にはできないけれど、順序としてはむしろ後回しにすべきだろう。フロー解析を真面目にやる方が改善のオーダーが大きいようだ。

フロー解析って、どういうことを狙っているのですか?

ところで、命令セット一覧ってありますか?


ふと、Ruby とはなんぞやを調べていて、

Ruby 【ルビー】

C++言語などの本格的なオブジェクト指向言語では大げさと思われるプログラミングを支援することを目的としている。

Ruby は本格的なオブジェクト指向言語ではなかったのか! 知らなかった(C++ が本格的なオブジェクト指向言語というのも初耳だ。いや、こっちは良く聞くかな)。


C++ は、のくだりは What's Ruby にも書いてあるな。


yarv の 0.2.0 出そう。今日が未踏ユース最終日。


はじめてハヤカワ文庫の本を買ってしまった。


未踏ユースの成果概要を書いてみたんだけど、やっぱりロゴが欲しい。ロゴというかキャ(略)。

http://www.atdot.net/yarv/my.png

ご意見など頂けると幸いです。


リリース。


リリース。


で、なぜアセンブラを急に作り出したかというと、HSP を YARV で動かしてみたいからなんだな。さて、HSP の勉強をしなければ!


すぐに挫折。

とりあえず scheme 作るか。


うわーん YARV が動かないよう。

  • パッチがあたらない
  • orig_func -> this_func

NODE_LAMBDA ... うーん。

_shiro(Fri Mar 04 09:23:24 JST 2005)

ほんとはもっとちゃんとした用語があるような気がする。今やろうとしてるのは、ローカル変数の束縛と使用を関数内で追跡して、未知の関数に(引数もしくは戻り値として)渡されるもの以外のローカルクロージャについて、

  • インライン展開した方がよいものはする。
  • ローカルクロージャが外側の静的環境を一切参照していない場合は、グローバルな環境でコンパイルする(従って実行のたびにクロージャを作る必要がない)
  • ローカルクロージャが外側の静的環境に属するたかだか数個の変数を参照しており、それらの変数に変更を加えていない場合は、それらを引数で渡すようにして、グローバルな環境でコンパイルする。

このくらいで、典型的なローカル関数の多くはクロージャを作る必要がなくなります (特に、組み込みの高階関数のインライン展開と組み合わせると)。これらは新しいテクニックではなくて、私も昔バッチコンパイルするScheme処理系を作った時にやりましたが、Gaucheみたいに実行時に毎回コンパイルする場合はコンパイラのオーバヘッド自体も抑えたいのでゆるゆると進めています。

最新の命令セット一覧は、NVM0_8_3というブランチをチェックアウトするとsrc/vminsn.scmにあります。まだ過渡期なので古い命令も混在しています。

_ささだ(Fri Mar 04 15:51:07 JST 2005)

lambda-lifting ってそういう話でいいんでしたっけ(論文は見てなくて名前からそんなことを想像していました)。

コンパイル時の負荷は実は全然考えてなくて、やっぱり考えないと駄目ですよね・・・。

http://cvs.sourceforge.net/viewcvs.py/gauche/Gauche/src/Attic/vminsn.scm?rev=1.1.2.10&only_with_tag=NVM0_8_3&view=auto ですかね。135命令。

_3(Thu)

今日も電通大。自分の発表。


COINSの成果報告会は 西9号館の3階だそうです。


電通大は近くていいな。

で、学生セッションは博士後期課程の学生は入っちゃいけなかったらしい orz。


ヲタ臭い雰囲気 orz


うーん、まぁ、いいか・・・。


特に熱などないはずなんだが、目が回ってる。なんで?

_2(Wed)

今日から電通大。


Proc をがんがん作るような実装にして、Proc の作成を高速にできるようにしたほうがいいんだろうか。シンプルだよな、そっちのほうが。

Stackless Ruby? うーん。環境(ローカル変数の領域)の確保を十分高速に行なうことができればいいんでしょうが。malloc してたら駄目だよな。

実行スタックと環境領域を分けると、コピーが一度発生するのね(スタック>環境領域)。それも嫌だなぁ。

stack gc なのを考えてみたけれど、複数スレッドがそれぞれスタックを持っているとき、stack gc はちょっと大変なような気がする。全スレッドを止めて、全stack の検査をすればいいのか。


温故知新セッション、面白かった。なぜか証明系が多かったけど、昔はそういう人が多かったということか、それともそういう人のほうが大学に残ったということか。


http://d.hatena.ne.jp/hihumiyoitsumu/20050302

return は要らないんじゃなかろうか。

  • case/when が値を返すことを知らない(あまり知られていない)
  • 書かないと気持ち悪い

どっちだろう。


あー、そうですか。メイドさんですか。けっ、メイドさんと言えば萌えますか。アホくさ。


「さん」つけてる時点でダメポ。


リターンバリアを調べてみるけど、よくわからない。

http://www.ipsj.or.jp/members/Trans/Jpn/03/2000/4109/article009.html にある、「次の関数フレーム」って、「呼び出しもとの関数フレーム」だよね。論文読まないとちょっとわからないな。(英語だと呼び出しもとと書いてある。他のウェブページによる)

実時間GCってライトバリアとちょこっとづつやっていくのがあれば出来るんだと思ってたんだけど、どの辺がスナップショットなんだろ。やはり、きちんと読まないとダメポ。


コンスたんとプール と変換するうちの IME をなんとかしてほしい。

_shiro(Wed Mar 02 13:30:12 JST 2005)

Schemeは言語の性質上、クロージャががんがん作られます。 Gaucheは現在、クロージャ作成時に実行スタック→ヒープへ環境をコピーしてますが、 確かにこれにはオーバヘッドがあります。inner loopで100万回呼ばれるようなルーチンで クロージャを作ってるとプロファイラの上の方に上がってきます。

stack gcが使えないのはマルチスレッドのせいというよりconservative gcのせいです (BoehmはGC時にどうせ全スレッドを止めるので)。スタック上の環境を指しているのが 本物のポインタなのかどうかわからないので、環境を動かしてポインタも書き換える、 ということが出来ないからです。スタック上の環境を指しているクロージャをweak vector かなんかで管理して、それ以外のオブジェクトはスタックを指さないことにすれば stack gcが使えますが、クロージャ作成時にオーバヘッドになるんで、やってみないと 何とも言えません。

とりあえずはコンパイラでがんばってなるべく環境を閉じ込むクロージャを作らない ようにしようと考えてます。

_ささだ(Wed Mar 02 18:15:24 JST 2005)

 うーん、そういえばそうですねぇ>保守的GC 解析でなんとかならないかと考えたんですが、やっぱり今の ruby では無理ぽで・・・。

_1(Tue)

うえ、3月。



require 'rb/yasm'

yasm = YARVCore::Assembler.new

m1 = yasm.method(:m1, :a, :b){|x|
  x.putself
  x.getlocal :a
  x.getlocal :b
  x.newarray 2
  x.send :p, 1
  x.end
}

top = yasm.top{|x|
  x.putself
  x.putstring "hello yasm"
  x.send      :p, 1
  x.methoddef :m1, m1
  x.putself
  x.putobject 100
  x.putobject 200
  x.send      :m1, 2
  x.end
}

puts top.disasm
puts '-- '
YARVCore::eval_parsed top

やっとこれが動くようになった。

p 'hello yasm'

def m1 a, b
  p [a, b]
end

m1 100, 200

と同じ。

top = yasm.top{|x|
  x.putself
  x.putstring "hello yasm"
  x.send      :p, 1
  x.methoddef :m1, yasm.method(:m1, :a, :b){|y|
    y.putself
    y.getlocal :a
    y.getlocal :b
    y.newarray 2
    y.send :p, 1
    y.end
  }

  x.putself
  x.putobject 100
  x.putobject 200
  x.send      :m1, 2
  x.end
}

と同じ。


やっぱり宣伝というか、見せ方って大切だよな。


まぁ、そんなもんか。


ipsj 全国大会用のプレゼン(3/3 発表) を作る。うー、ネタがきちんと練れてない。


面接を受けたいので旅費をください、は駄目だろうなぁ・・・。


{||} が Proc オブジェクトになるとすると、将来的にはブロックつきメソッド呼び出しがなくなるんだろうか。うーん、それは嫌だなあ。

def m(a, b, c)
  a.call
  b.call
  c.call
end

m {|| p 1}, {|| p 2}, {|| p 3}

こんなものを想像。

必ず Proc 作るのはどうなんじゃろうなあ。これも、そんなこと気にしたら負け系な気がしてきた・・・。

_ (Tue Mar 01 11:48:40 JST 2005)

 した、2月 なのか

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