何気なく手にとった、魔術探偵スラクサス読了。面白いんだけど、展開が急っていうか、たんたんとしすぎてるというか。
ずーーーーっとひっかかっていた block inlining なんだけど、やっと、これは、というネタを思いついた。
つまり、caller が block inlined method を呼ぶわけじゃなく、callee でその処理をする、ということ。たったそんだけなんだけれど、これを思いつくまで大変だった。
method_dispatch(reciever, selector, block): method = method_search(reciever, selector) inlined_method = inlined_method_search(method, block) if inlined_method == false # not found inlined_method = recompile_inlined_method(method, block) end method_invoke(inlined_method)
が、alex の言っていたメソッドインライニングだけれど、これは、全てのメソッドつきブロック呼び出しをインライン展開するものになる。これは、効率とか悪い可能性があるし、すべてをインライン展開する必要は無い。メソッドの起動自体がちょびっと遅くなるのも問題。
というわけで、特定の callee が勝手にインライン展開したものを保持するような構造にすればいいのか。Array#each とか、Hash#each とか、Fixnum#times とか。それか、yield を特別軽量にするような、何かの仕組みを設けるとか。まぁ、その辺。
つまり、yield の API として、特別なものを用意しましょう、って話。
VALUE rb_ary_each(VALUE self){ ... PREPARE_YIELD_FRAME(); ... LIGHT_YIELD(obj); ... CLEAR_YIELD_FRAME(); ... }
みたいな。
でも、end では、やっぱりフレームをポップしてしまうな。なら、end しないバージョンを、このためにコンパイルしておく、というのがいい気がする。
というわけで、これでいこう。これで rubidium に負けない(気がする)。
ちょっと C でのコーディングは煩雑になるけど、速度を気にしなくてはいけない場合だけだし、ちょっとくらいしょうがないよね。
ruby レベルのイテレータではこの最適化はできないような気がするけど、yield を見つけたら勝手にこんなコードを生成する、でもいいのかもしれないなあ。環境まわりが、やっぱりちょっと難しい気がするけれど。
んー、その場合は、やっぱり block inlining をしないといけないので・・・。うーん。
さて、このアイデアを alex に伝えたいのだけれど、英語にするのは・・・。
alex と本質的に違うのは、メソッドをインライン化するとかしないとかは caller の仕事、ではなくて callee の仕事にした、ということ。多分、これで正解。プロファイラとの連携とかしやすそうだしね。
と、話としてはまったく簡単なことを、何でこんなに時間をかけて悩んでるんだか。
ruby レベルの inlining は、非常に思い切った方法が必要っぽい。
「圧倒的に猫好きが多い」わけじゃ無さそうだなあ。
プログラミングが全然できない。どうしよう。
ethereal をやっとまともに使ってみる。便利だなぁ。以前インストールしたときは、ドライバを入れずに挫折したのか。
あまりの無気力感に、しょうがないので CVS の ruby をとても久しぶりにビルドしてみる。最新だと、yarv が死ぬらしいから。
bison がねー、と nmake でエラー。ガーン。
ちょうどぴったり、test/rss のエラーにひっかかっちった。ガーン。
Windows で WebDAV の領域をマウントしようと思ったら、非常に遅い。いや、遅いのはそいつに認証がかかってる場合なんだけれど、遅すぎる。認証をかけなければ、問題ないのだけど、認証を付けないで放置する勇気は私には無いし。
どうしたもんかな。SSL で basic 認証がきちんとできる WebDAV クライアント。GUI。
WebDAV で、PUT に Content-Range が効くことを確認。
put や delete は http1.1 だったけれど DAV on にしないと動かない、というのはそういうもんなんだろうか。
って、何をやってんだ俺は。
limit とか、その辺がよくわからないのだけれど、どうにも無駄な努力をしているような気はする。とにかく、cygwin のメモリ管理がよくわからない。
Simple Paste。あぁ、現実逃避。
require 'cgi' require 'net/http' body = CGI.escape(ARGF.read) Net::HTTP.version_1_2 Net::HTTP.start('www.atdot.net', 80) {|http| response = http.post('/~ko1/sp.cgi/commit/auto', 'paste_body=' + body) puts response.body }
続、現実逃避。
(defun my-simple-paste () (interactive) (let ((paste-body (buffer-substring (mark) (point))) (cmd (format nil "ruby ~A" (merge-pathnames "spc.rb" (etc-path)))) ) (if (yes-or-no-p "Can I paste follows?\n~A" paste-body) ;; simple paste (with-output-to-temp-buffer ("*simple paste*" t) (let ((proc (make-process cmd))) (process-send-string proc paste-body) (process-send-string proc "\x00\n") ))))) (global-set-key '(#\C-c #\C-p) 'my-simple-paste)
こんなんを .xyzzy に書いて、
require 'cgi' require 'net/http' data = '' while line = ARGF.gets data << line break if /\x00/ =~ line end body = CGI.escape(data) Net::HTTP.version_1_2 Net::HTTP.start('www.atdot.net', 80) {|http| response = http.post('/~ko1/sp.cgi/commit/auto', 'paste_body=' + body) puts response.body }
こんなのを、xyzzy/etc/scp.rb として、ruby をインストールしておくと、C-c C-p でペースト。
さて、誰が使うんだ、こんなの。
うー、頭いてー。
いい加減、人にうざがられるほど「るびま」「るびま」と連発している。私もいい加減にしたいなーと思うんだけど、誰かやらないと続かないだろうしなあ。
ぐろーばる変数としてとった配列がでかすぎて、main を実行する前にプログラムが落ちます。どうしたらいいんでしょう(子供か俺は)。
real ary(9) do i=1, 9 ary(i) = i * i enddo call test(ary(1), 3) call test(ary(4), 3) call test(ary(7), 3) end subroutine test(ary, n) real ary(n) print *, ary end
さて、これは fortran 的に valid なんだろうか。
きちんと布団をしかないで仮眠を、と横になったら見事に風邪ひいた・・・。間抜けすぎる。
土曜日は大切な用事があるのに。
寝たらせきは出なくなった。
bss って何の略だったかなぁ、と、何度覚えてもすぐに忘れてしまう。Block Started by Symbol なんて、憶えられないよこんなの。
Linden本によるとBetter Save Spaceと覚えるそうです。
奇跡ってのは、あるんですかね?
奇跡ってのは、どこからがどこまでなんですかね?
るびまの編集、今月も忙しい人が多いようで、なかなかままなりません。
手伝ってもいいや、っていう人居れば、ご連絡ください。
CLOS MOP (Metaobject Protocol) 入門 どうしようかな。行きたいような、忙しいような。まぁ、午前だけだしなあ。でも、本持ってない。
イベント情報 - Mozilla Japan 第 1 回 セミナーのご案内 って面白いのかなあ。どうしようかなあ。
codepaste を簡単にしたものをちょっと作ってみたいな、と思ったけれど、暇が無い(ということになっている)ので諦める。
依存症。どうやったら抜けられるのかな。
課題図書読み中。
雨の中、悲嘆にくれて、何も考えられなくなった彼女がふらふらと道路に飛び出して、轢かれて、あとでそれを知ったお姉様が壊れて廃人になる、くらいやってくれると面白かったような気がするんだけれど、どうでしょうか。まぁ、そうすると話が終わっちゃいそうで、まずいんでしょうが。
でも、あの終わり方はないよなぁ。
しかし、避暑地に米を送る母親ってどういうのだ?
Intel VTune を買おうと思ったら、どうやら来月新しいものが出るそうで。問い合わせてみたら、
- 7.2 とは、新機能がつくのでしょうか? バグフィックスがメインでしょうか?
インテル EM64T のサポートの追加、Linux システムへのリモートデータ収集機能の強化等が追加されています。
- 今 7.1 を購入した場合、(有償/無償) アップデートは可能ですか? それとも、来月の発売まで待つべきでしょうか?
インテルソフトウェア製品をご購入いただくと、一年間のサポート・サービス (サポート & アップグレード) が付いています。
ということだったので、さっさと買おう。
prosym accept されてしまった。どうしよう。
さすがに失神はしないだろう。
なんで debian 使わないのか、私にはよくわからないのだけれども。
なんて、debian しか知らないからいえるんだけれど。
Squeakware。面白い。
RubyWare なんて作ると面白いんだろうか。今度ちょっと考えてみようかな。
仏像鑑賞が趣味って、また・・・。
tk 講習会、行きたいんだけれど、とても交通費が出ない。 もうバスはいやだ。
なんか Wiki が作りたい。
skype API を見てみる。とりあえず Windows 専用で、Window Message インターフェースで色々やり取り、ということらしい。
nadoka との連携を考えてみたんだけれど、ちょっと思いつかない。
ちなみに、skype API は、(現状のところ)すげぇ簡単です。なんかアイデアがある人にはおすすめかと思います。
greentea さんの理想ってどんな形なんだろう。
やはり、継続は大切だよな。一番大変。
議論が風化しないで、きっちりと結論を出すような、そういう能力。
いかに yield を速くするか、なら、やっぱり yield で新しい環境を積むのは間違いなのか?
うーん。
ちなみに、skype API、一昔前なら偽なんとか、とか、そういうのと連携してたんだろうなぁ。
ん〜。先越されたって感じ>squeakware。 でもsqueak単体+α程度だからslackwareベースで良いんであって、Rubyの場合、っていうか、Ruby/TkとかRuby-GNOME2とかRuby/QT3だのwxRubyって考えるとライブラリの依存解決がめんどくさいから、debianベースでってことで、Ubuntu Linuxとか、MEPISこと、Les Clefs d'Orかなぁとか。ま妄想なんだけど。最近はqemu-winもあるので、Windowsユーザーへ本当の(ちょっと遅いけど)linux上のRubyを触るという目的も良い鴨。
たしかに、Squeak なら色々完結してますしねぇ。
Schemeまんせー、とかそういう話かと思った。<継続は大切
HTML::Sanitizeってのを作ったのでBlueClothですぐにWiki作れますよ
tton を持ってるので、そいつを使うのです。
帰宅。
R6終わり。一月。
すでにいろいろ忘れているんだけれど、これ以上忘れないためにメモ。
21日
22日
23日
関西オープンソース、日本Rubyの会の展示、発表に携わっていた方々、また、突然の話にも関わらず、いろいろと喋ってくださったまつもとさん、また、最後までいろいろとお世話になった中村(う)さんに感謝します。
来年も出れたらいいな、と思います。
上記、途中意味不明な部分は、課題図書を4冊持っていって、それの感想。まだまだ先は長い。
うーん、今 16万円で Xeon 2.8GB Dual マシンが買えるのか。安いなあ。
なんか、メモリ増設が馬鹿みたいに高いけど。
しまったー。今日、明日と PRO じゃん。しかも内山さん発表じゃん。
うわーん。聞きたかったようおう・・・。どなたか、レポート希望。
ほかも面白そうなんだよなあ。ううぅ。
SD
おー、るびまの記事がほんとに1ページ!
「るびまのこれから」
うひゃ。月刊リリースなんて目指してないですよう。そう思われるのを避けるために、注意深くその言葉を使うのを避けてきたつもりなんだけど。再来月に休むのは休刊の兆し、とか思われてしまうんだろうか。あと、高橋会長/編集長のお名前を出してほしかったなあ。
p-175 List40
モジュールの作成って、何?
学生のいう見積もりなんてあてにならないよなー。
というか、非常に難しいと思うんだけど、そんなに気楽に求められても。
YARV 構築のための期間の見積もりとしては、あと半年くらいでなんとかなると思います。
というわけで、関西オープンソースに行ってきます。YARV の宣伝も、できればいいなぁ、とは思っております。
深夜バスでっていうのは、高校のころにスキー行くために乗ったのが最後だったような気がする。うぅ、大変そうだ。
IP unreachable になる予感。
ruby で realtime gc は無理だろー。
では。
一回休み。
・・・。
えー、BCR やめちゃうのー? ライバルだったのに。
次は rubidium なのか。
http://slashdot.jp/comments.pl?sid=217522&cid=638727 のスレッドに笑った。
alias で、他の名前を付けられたメソッドは、再定義しても文句言われないらしい。知らなかった。
def foo "foo" end alias :_orig_foo :foo def foo #=> 警告なし _orig_foo * 2 end def _orig_foo #=> 警告 3 end p foo # => "foofoo"
うーん・・・。
alias っていうか、rename で、元の名前を alias として残すって感じがする。
最初の例、というか、transpose の挙動の意味がわからない。うーむ・・・。
生協で聞いてみると、HP のマシンの通販してるマシンを、生協で注文できるらしい。で、生協で受け取り、なら送料も要らないらしい。これで行こう。送料 3000 円って、ちょっと高いと思っていたので。
生協割引は、さすがになさそう。
Alexander Kellett氏の rubidium では、メソッドディスパッチ時にメソッドのインライニングを行うことで、性能を上げる、などを考えているらしい。多分、CLOS と一緒で、パラメータの型ごとに、(インライン化した)メソッドを作っておき、そいつにディスパッチする、ということなんだろう(対象のメソッドがなければ、その場で(!)作る。でも、大抵は変わらないものなので、作成のコストはあまりかからない)。
つまり、ディスパッチにコストをかけて、通常実行は型付でコンパイルされたものが走る、というわけだ。これはこれで、いいのかもしれない。特に、あまりメソッドディスパッチしないものの場合は有効だと思う。
この解析を動的にきちんとできれば、全部インライン展開できそう。でも、本質的にできるんだろうか。すべてのメソッドの返り値の判定を行わなければならないし、色々ありそう。できるところだけ、インライン化、はありだと思うんだけど、そうすると、うまくいかないとメソッドディスパッチのコストが非常に高いことから、逆に性能が出ない可能性がある。
たとえば
def m if ... "abc" else [1,2,3] end end
なんていう(駄目な)プログラムがあったとき、破綻しそう。
あと、C のメソッドには、返り値(のクラス)を知る方法がないので、色々と破綻しそう。本当にできるんだろうか。
私も、できればソフトタイピングくらいはサポートしたいとは思ってるんだけど。
やはり、再定義不可な型付ruby って、作れば需要は多いと思うんだけど、どうなのかなー。あと、eval も不可。
だって、リテラルが簡単にかけて、ブロックが簡単に書けたりするってのは、楽でいいと思うんだな。
型付けはオプションかなー。型も指定できる、くらいで(指定すれば、それに伴う最適化を行うことができる、とか)。
あと、定数検索パスを制限して、こいつも再定義できないような。
再定義するときは、メソッド全部再コンパイルしてもいいような気がしてきたなー。オブジェクトスペースから全部見て、再定義とか。yarv でもそうしてしまうのがいいような気がしてきたなぁ。だって、再定義なんて滅多にしないでしょ?
inline method cache じゃなくて、inline generated insns seq cache があればいいんだろうか。インライン化したものを色々キャッシュしといて、ヒットすればそいつを使う、みたいな。なければあっさりあきらめるなり、なんなり・・・。
勘違いしていた。
reciever だけで決まるので、パラメータを見る必要はないのか。なるほど。なんとなくうまい気がしてきた。
で、何をどうやってキャッシュすればいいんだろう。難しいな。
def iter ... yield ... end iter{ # B1 } inter{ # B2 } #=> define iter # define iter (it's template) iter_B1_inlined # make iter_B1_inlined with iter template and exec iter_B2_inlined # make iter_B2_inlined with iter template and exec Dispatch process (call iter with block B): m = search_method(reciever, :iter) if inlined = m.inline_block_cache[B] else inlined = m.inline_block_cache[B] = generate_inline_code(iter, B) end send inlined # method "inlined" is invoked
こんな感じ。
これなら、特に難しい話も必要なさそうで、redefine とかも関係ない。
ちなみに、Alex のくれた仮想コードは、見てもさっぱりわからない。
どうしよう。
誰か、あれわかりやすく解読してくれないかなぁ・・・。
で、これどうしようかな。YARV でやろうかな。結構いい線いってるような気もするんだけど。
環境の問題とか、どうなるんだろうなぁ。
うーん、環境の構築とか考えると、やっぱりそこまで手間かけてやってもしょうがないような気がしてきた。
正確に見積もれない、というのが正直なところなのだけれど。
んー、インライン化したメソッドは、そのインラインもとのメソッドのフレームをしっているのか? 知っていそうな気がする。そいつを経由して変数にアクセス、ってことになるのか。なるほど。
んー。
できそうなできなさそうな・・・。
例外とかどうなるんかなー・・・。
うーん、難しそうだ。
例外のためのガードもつけないと駄目だよなあ。うーん。やっぱり、あまり割りに合わない気がしてきた。yarv でやることじゃないような気もしてきたな。すげーアーキテクチャ変えないとだめぽ。
class Ary def each self.size.times{|i| yield self[i] end end end ary = Ary.new(1,2,3) # [1,2,3] のつもり i = 10 ary.each{|e| # Block B p e + i } #=> inlined method def each_B_inlined self.size.times{|i| e = self[i] begin p( e + prev_env(:i) ) rescue ... end end end
こんな感じか。ふつーに yield するより、どうなんだろうかなぁ。
例外のための何かを積むのが十分速ければ、この方式は有用そうに見える。
でも、実際に作るの色々大変だろうなあ。
逆に言うと、yarv の yield は十分速いんですかって話になるような気がする。十分速いんだろうか。
環境を積んで、継続を積んで。
んー、やっぱり重いか。
今気づいたんだけど、
[1,2,3].each{ raise } #=> t.rb:5: unhandled exception from t.rb:4:in `each' from t.rb:4
each (C method) の呼び出しはスタックトレースに出ないんですね。
やっぱり、継続の保存と復帰のコストだけ、yield は遅いなぁ。継続情報でかすぎなんだよ。チクショウ。
インライン化しようかなぁ。できるかなぁ。
来年の課題かなぁ。
GC の問題とか、結構気になるんだよな(コードのGC)。
やっぱり、やるなら特定のクラスの特定のメソッドのみ、対応とかかなぁ。でも、現在の環境アーキテクチャだと、非常にやりづらいなあ。バイトコード増えるなあ。やっぱやるなら、完璧にそっちに持っていかないとダメぽ。
うーん・・・。今更アーキテクチャ変えるのも辛いしな。
なんとかいいとこ取りできないかなあ・・・。
ちなみに、Alex のインライン化の話は、すべてのコードが Ruby であることが必要になっている。
そのため、彼は、すべてのコードを Ruby で書いている(計画中? 実行中?)。String とか。Array とか。
私は、どうするべきなのかいなぁ。
C で書くってアイデアは、やっぱり必要だから、インライン化はちょっと待っとこうかなぁ。
rb_yield を十分速くすれば、Alex に勝てるんだな。で、十分速くなるんだろうか? うーん、微妙。彼が、例外処理のための何かを、setjmp でやれば、十分勝てるんだが(後ろ向き)。
やっぱり、inline 化は色々難しい問題がありそうだ。今年は少なくともやめとこう。
この辺の話は、世界で二人くらいしか興味の無さそうな話だよな。3人? 4人? まぁ、それくらい。
x86 のメモリアーキテクチャについて聞く。
セグメントってそういうことまで出来たのねぇ。
で、これを有効に利用している OS はあるんだろうか。
うわー、単純な話にパッチがキター!! ますます高橋さんのプレゼンどおりだ。
編集後記:
2004年9月18日(Sat) 人狼BBSの紹介(1) を読んで、やっとルールを知る。なるほど、そういうゲームだったのか。
ログは膨大なので、読めないのだけど。
core を吐きます、が流行ってる。
未踏ユース取ってるのになんでお前はそんなに金が無いんだ、といわれたのですが。
の回収をやっていないので、そりゃなくなるわ、という感じです。30万くらい入ってたんだけどなあ。
回収と言っても、どこまでが経費に認められるものやら。
税金って、ほんとにわかんないんですが、できるだけ「経費」にしてしまったほうが、かかる税金は少ないんでしょうか? それとも、自分の時給で何か経費に計上できるものを買っても変わらないんだろうか。
VTune を買おうか迷ってるんだけど。10万するんだよなぁ・・・。って、学割で 3.3万円って、自分の日記で書いていたらしい(Google で Vtune 学割、って調べたら出てきた)。
3万なら買っちゃおうかなあ。バッテリーと同じ価格。VTune のほうがよさげ。誰か使ってる人使用感教えてほしい。
次は好きなアルファベットにしようかと思ったのだけれど、さすがに数が多いのでヤメ。
税金の話、いろいろ教えていただいてありがとうございます。実は、未踏の場合、プロジェクト管理組織ってところがあって、経費の話とか、全部やってくれてるんですが、そのブラックボックスの中身を知ってみたかったという話なのです。
今月(11月)のLinuxMagazineのまつもとさんのコラムでも取り上げられてる>人狼BBS
大原則は、「もらったお金全て(A) - そのお金を貰うために費したお金(B)」に対して税金がかかります。(B)がいわゆる経費ですが、ここで言っているものはあくまで課税される主体であるささだ君から見てのことであって、どういう名目でお金を貰ったかには関係ありません。
一方、請負いのプロジェクトで発注元に「経費」として請求するものは、上記の式には入ってきません。なぜならその経費はささだ君にとっての経費ではなく、発注元にとっての経費であって、そのお金の流れをささだ君が仲介しているにすぎないからです。(帳簿上は、金が出ていった時点でそれを発注元への貸付け扱い(accounts receivable)にして、発注元から入金があった時点で返済されたものとします。バランスしているので税金の観点から見たらこの操作は透明です。)
というわけで、まず自分にとっての「経費」と発注元にとっての「経費」とは分けて考えましょう。その上で、上の大原則における課税対象金額を減らせば減らすほど、税金は減ります。
何でもかんでも経費にできるならどっちにしても変わりはないのですが(自分の経費にすればBが増える、発注元の経費にすればAが減る)、どこまで経費として認められるかにはいろいろ制限がありますし、開発機材等は支払った金額全てがその年の経費になるのではなく何年かに渡って分割して経費とすることもある等、面倒な事情が入って来ます。自分の経費にする場合はそれを全部自分でやらなくちゃなりません。発注元の経費にする場合は発注元が面倒なことはやってくれます (その代わり、もちろん機材は発注元のものですから、流用はできません)。なので、大きな目安は、上のような色々な面倒が自分でかぶれる程度ならその分お金をもらって自分の経費にすればよし、そうでなければ発注元に面倒をみてもらう、ってな感じがいいんじゃないでしょうか。
あと、大原則は上の通りなんですが、誰もが自分の使った経費を全部計上するのは面倒なので、個人の場合は統計的に「これくらいだろう」と見積もられた金額を経費扱いにする(基礎控除だっけ? 米国ではstandard deduction)ことがあります。どちらにするかは(米国では)自分で選べます。なので、経費の合計がそれを越えることにならない限り、自分の経費で買う意味はあまりありません (standard deductionを選んだ方がどっちにせよ有利だから)。ここは日本では事情が違うかもしれません。
…と色々書きましたが、私も細かいところは税理士さんに丸投げしているので、あまりあてにしないように。
税務署の人は、経費が少ない分にはなにもいわないけど、多すぎるとちゃんと見てくれるので、多目に書くのがこつという話も聞きます。
個人事業の場合だと 総収入金額 − 必要経費 = 事業所得 総収入金額は所得税法36条、必要経費は37条に定義があります。 国税庁の解釈通達も公開されているんで参考にするとどの程度までが必要経費になるか見当がつけられると思います。ささださんの場合、とても専門性の高い仕事なのでどこまでが必要経費になるのかは微妙な問題があるかも。例えば職業作詞家がヨーロッ旅行をしてそれによって創作活動にプラスになったのかどうかは判断が難しいところです。業務遂行上、必要だったことを立証できるように資料を残しておいた方がいいです。法律行為なんで国税当局を甘くみてナメテかかると危ないよ。青色申告をしてしっかり自分の正当性を主張してね〜。
ごめいわくおかけしました。
こちらこそ。
continental breakfastのcontinentalはヨーロッパ大陸のこと。フルーツ、パン類とコーヒー・紅茶などからなる朝食。対するのがenglish breakfastで(englishに対するからcontinentalなのね)、そっちは卵料理やベーコン、ソーセージなんかがついてる。…ってここに書いてもいいのかしらん。
やべぇ、調べずにいいかげんに書いてしまいました。こっそり消しとこうかな。
われながら、結構衝撃だったんですが、銀行口座の残高が 1000円を切ってしまった。最近無駄遣いしすぎたのかなぁ。やっぱモスバーガーなんかで食べちゃ駄目なのかなぁ。
どうしよう。
あったら嫌な Lisp:
cons cell を(新たに)作れない Lisp ならアリかも。
未踏のいろいろをやっつける。そういえば、契約書送り返さなきゃいけないのをすっかり忘れていた。
coins のことすっかり忘れていた。
・・・。
SACSIS やめて、SHINING に的を絞ろうかなー。研究会だし、沖縄だし。博士課程としてどうか、という問題はあるが。
実は、私も風邪をひいてしまったんだけど、やっぱり明日は行かないとだめだよなぁ。
consセルに行(?)番号がついている
開き括弧と閉じ括弧をそれぞれbegin, endと書くことができる
vecp (vector processoというのを冗談で考えたことがあります。#(define foo #(lambda #() ...))とか書く。
Gosmacsのmock lispsh
gosmacsのmock lispはmockなだけにconsなかったと聞いたことがあります
tabで記述するLisp
define foo lambda …
中置記法のLisp (ってそれCurlじゃん)
XML で書く。(http://homepages.inf.ed.ac.uk/wadler/language.pdf)
まじめに、るびまを縮小化しないと、身がもたない。
今回は rubyconf があったから、余計辛かったんだけど。
編集を手伝ってくれる人募集。暇人歓迎。誰もやりたがらない校正部分などの地味なことやってくれる人優遇。報酬はなし。
・・・誰もやらんか orz。
書くのを手伝ってくれる人はけっこう居るが、そういう地味な部分は、誰もやらない。まぁ、そうだよなぁ。俺もやりたくないもん。
プロシンどうしようかなー、行くにも金がかかるんだよなー、とか考えていたんだけれど、ユース者は PM予算で出るらしい。
行こうかなあ。でも、ペーパーかけるかなあ。
原稿締め切り 12/10 かー。死にそう。
というか、新しい、面白い発表ができそうにないんだよなー。いつも同じことの繰り返しだしなー。
誰か死にそうにならないと出来ない何かって、やっぱり間違えてるよな。 もっとほかにやり方があるはずだ。
Subject が subscribe なメールがたくさん来てるんだけど、なんで? 流行ってんの?
メールのヘッダ(〜〜です。お世話になっております)などは、いつも手書き。感謝をこめてタイピング。でも、無意味かも。
Ruby のことで、ずっと時間を割いてしまい、本業をまったくやっていない。これはとてもまずい。まずい。まずい。
どうしよう。
うわー、単純な質問に eval.c をハックという解答がー! 高橋さんのプレゼンとおりだ!
るびまはいろんな人の時間を削って作られています。
・・・費用払ったら、いくらになるんだ・・・。ガクガクブルブル。
島根の ruby講習のレポートを書くので旅費をください。誰か。
死にそうです。ちゃんと研究しろよ俺。マジで。
先日も話に出てたんだけど、
%q(...) #=> '...' %Q(...) #=> "..."
から連想すると、
%r(...) #=> Regexp.compile(Regexp.quote('...')) %R(...) #=> Regexp.compile('...')
であるべきなような気がするんだけど、現状はそうなっていない。
VM インスタンス、Thread インスタンスは、多分 thread local storage に持つような感じになるんじゃないかと想像。
そのため、実は ruby API は変更する必要はないんじゃないかと思ってるんだけれど、やってみないとやっぱりわからないっぽい。
頭が痛い・・・。完全な二日酔いか・・・。
大阪のホテルを調べる。ツインの部屋で一人 4000円のが一番安いかなあ。
さて、誰か居ないかな。
最悪野宿というのもいいんだけど、ちょっと寒そうなんだよな。
うわ、2100円というのがあるのか。スゲェ。
夜行バスは、やっぱり5000円か。4000円では無理らしい。
というわけで、大阪行きの予算は15000円。たけぇ。食事代などは、きっと奢ってくれるだろう。うんうん。
頭が痛くてしょうがない。飲みすぎってわけでもないようだ。風邪か・・・。
今日は締め切りの日。
ちなみに、言い出しっぺの手前、他の記事にも突っ込みを入れないといけないのであった。
昨日の日記では「台風で〜〜なので〜〜を作りました」というのをよく見かける。私は、デフォルトで家か研究室でぼーっとしているので、なんというか、申し訳ないというか。
D.C. のチャイナタウンで思った疑問。
中国も、ヨーロッパも、いすに座って飯を食うのが普通だと思うし、映画などで、昔の光景を再現している場面を見ても、椅子に座っているのだけれど、日本の時代劇などを見ても、椅子に座っているのをあまり見たことがない。
なんで?
そういえば、RubyConf2004 のプレゼンテーションを録音した mp3 、幸運なことに私の発表は録音状態が悪くて聴けたもんじゃないらしい。へへへ。マイク握ってたのは俺だけだったのだけれど、あちらの発表スタイルってのはそういうもんなんだろうか。私はスクリーンに近づいていろいろやるのでマイクを握ったんだけれど、持たなくていいように、凄い感度にしていたので、ハウリングしまくり、ということだったんだろうなぁ。
先日の好きなメソッド名を付けられる Proc オブジェクトだけど、
neg = Proc.new(:===){|i| i < 0 } case var when neg p :neg end
なんてのが出来るといいのかなぁ、なんてちょっと思ったんだけれど、そもそもとっても駄目な書き方っぽい。
case var when (-1.0/0.0 .. 0) p :neg end
でいけると聴いて、へ〜、とか思う。
飲み会に行くかどうか迷う。今月使いすぎなんだよな。
蕎麦屋のシーンでは椅子に座ってたはず。
うぅ、死にそう。今日は家に帰りたかったんだけどなあ・・・。
RubyConfReport は、高橋さんがとてもとても大変そうなので、やはり私がやるしかないようだ。どうしよう。
英語の勉強したいから誰か skype ではなそー、と言ったら、chad が釣れた(こっちは日本語教えるで〜、という餌付き)。
彼は、非常にわかりやすい英語でしゃべってくれるので、けっこー聞こえる。でも、何を喋って良いのかちょっとよくわからない。
本当は、るびまの打ち合わせとかを全部 skype でやりたかったりする。
RubyConf2004 のmp3 を手に入れたんだが、どうやってミラーしようかな。300MBくらいあるからなぁ。どっか帯域のあまってるところない?
研究室二部屋を掃除する。
昨日のエネミーオブアメリカの録画を家族に頼んでいたのだけれど。
・・・きっちり最後が切れていた。クライマックス突入、ってところで、しっかりと、ぴったりと。
あーうー・・・。
もうショックで何もやる気がしない。
私の携帯ではいろんなページが見えないんだけど、見えるようにするための proxy でも作っておかないと、後が不便だなぁ、とか思う。
begin で囲まなくても rescue って置けるのね・・・。
def m raise rescue p :hoge end m
知らなかった orz。
メソッド全体が block になるってことだろうか。node レベルでは、きちんと begin/rescue/end になってるけれど。
うーん、全然知らなかったなぁ。奥が深い。
高林哲の検索技術論 より
当時はインターネットに熱中して、ロック関連の情報をあさっており、手元に集めてきた情報だけでもかなりの量になっていた。
Lock の話でかなりの量になるのかー、と読んでしまった。
Programming:WayToHaskeller:はいはい。「はいはい」って、赤ちゃん言葉のはいはいでしたか。「あっそう。はいはい。わかったわかった」のはいはいかと思った。
しかし、いつの間にかすげえ増えてる。
langsmith を見ながら思ったのだけれど、例外処理のやり直しのための retry って実装できてねーじゃん。どーしよう。すっかり忘れていた。どうやって実装すればいいんだろう。
結局、これはフレームをまたぐジャンプになる(YARV の rescue 節の実行は、ブロックの実行と同一)ので、やっぱり、これ用に例外ハンドラテーブルを用意しなければならないのか? それとも、スタックの継続情報をごちゃごちゃ弄ってしまえば問題ないんだろうか。たとえば、retry 命令を作るとして、継続情報をごにょごにょして、そして end 命令(スタックフレーム一個巻き戻し)を行えば、begin の部分から始まるよ、って感じ。
うーん、本当にこれでいいんだろうか。
と思ったら、なんかちゃんと実装してる。凄いぞ俺。何時の間に!
・・・バグってるけど。
(block 実行中の retry と同様の機構で出来てる)
ちなみに、バグは最近突っ込んだ変更によるもので、ってことだと思う。あー、マジックナンバー・・・。
なんで mixi と日記を分けるんだろう。器用な人たちだなあ。
used by じゃなくて used in だった気がする・・・。
[CAUTION] This benchmark is result of YARV current version. Because YARV is not complete implementation, this result should be changed on future version.
脳梗大って暗号やってるところあるの?
というわけで、家に着きました。
■無事なささだ
五体満足です。
■無事じゃないささだ
行きと帰りの飛行機の乗り継ぎ時間が1時間しかありませんでした。とくに、行きの入国審査については、散々脅されて行ったんだけど、案の定定刻に間に合いませんでした。さくっと。特に何事もなく。容赦なく。
でも、運命は味方してくれたらしく、なんと乗り継ぎ便が2時間くらい遅れて、間に合ったのでした。よかったよかった。でも、それでびびって、帰りの便に帰れなかったらどうしよう、とずーっとびくびくしていたのでした。いや、かえれたんですけど。
■その他
ワシントンD.C. って金つかわねー。$200 のキャッシュとTCを持っていったんだけど、結局キャッシュを $160 使っただけだった。土産を重くて面倒なのでやめたのもあるんだけど。
RubyConf の様子はるびまをお楽しみに。多分。
■なにそれ
食費十万はやっぱりどうかと思います。
成田についたのが2時。家に着いたのが5時半。やっぱり遠いなあ。
PTTどうしようかなあ、と思って携帯で場所を探してみたけれど、見つからず。ページに書いて無いじゃん(メールオンリー)。
げ、まつもとさんがrubyconf report 書いてる。どーしよー。るびまには、あれをコピペすればいいかー。
・・・だめだろうなぁ・・・。
時差ぼけ死にそう。
Ruby Tuesday 行ったよー(連絡)。
で、まつもとさんの日記のエントリーには、rubyconf へのつっこみが無い。日本人のrubyconfへの関心は低いってことだろうか。それとも・・・。
発表の簡単なまとめ。
英語は通じなかったが、ネタは誉められた。はたして、プレゼンとしてこれで正しいのだろうか。
ゴミはゴミ箱に!
今最後の発表で、そろそろ終わりです。
数日ネットワークにつながらなくなりそうなので、よろしく。
ささださんに業務連絡。こちらは無事につきました。1時間しかなくてもおみやげを買うくらいの余裕はありました。出国手続き(といってもチケットとパスポートを見せるだけ)はニューアークのGATEでやるので忘れないように。無事を祈ります。
よかったー。大丈夫だったんですね。すげぇどきどきしました。だって、日記書いてないんだもん。
from kinko's @ Washington D.C.
職場が無事じゃありませんでした……@まだ会社
うぎゃ。ともかくご無事でなによりですが、帰国早々お体こわさないように気をつけてくださいねー。て人の日記で何をやっているのか。
ただいま日本
お〜、お帰りなさい。無事、帰国、ヨカッタね
うー、緊張する。あと数十分。
終わりますた。
練習しないとだめだねぇ、毎回思うことですが。
どうでもいいことですが、すっかり書くのを忘れていたようなので書いておきますと、RubyConf2004 というイベントのために Washington D.C. のそばのホテルに来ています。昨日が発表でした。
今日が最終日です。というわけで、しゃべっていることがさっぱりわからないのです。やっぱり、ジョークがわからないのが悔しいなあ。
はじまりました。
Chad Fowlerの気合いの入った紹介でスタートです。
まずベンチ結果を見せてます。
おお、うけてますよ!
質問は日本語で、とかそれ系のネタで攻めてます。
日本Rubyの会とたかはしさんの紹介がありました。
YARVの話に突入した。
ちょっと難しいか。スライドに書いてない脱線はちょっと苦しそうです。
ベンチマークはちょっと反応がありました。
デモをしています。スタックフレームダンプとかを見せてます。
まとめに入りました。
拍手で終わりました。おつかれさまー。
いやはや本当におつかれさまでした。
おつかれさまでした〜
おつかれさまでした
ただいまカンファレンス中。
全然さっぱり聞き取れません。
少しVMの話をした。日本人とは、そもそもVMについて話す人が殆どいないので、非常に楽しい。言ってることのほとんどがよくわからないのだけど。
Tシャツとピッケル本を貰う。わーい。
でも、枕にするには厚い。
うお、やっぱり Matzにっき効果凄いなあ・・・。
二日目開始。
相変わらず、言葉が通じません・・・。
プレゼン用意しないと・・・。アドリブでなんとかなるかなぁ、と思ってたんだけど、むりぽ。
行きは大変でした。大変というか、無謀でした。無事帰れるか心配です。
BitKinex http://www.bitkinex.com/とかいかがです?US$43ですけど、、
WindowsのWebDAV(WebFolder)回りがバグバグなのは結構有名みたいですね(特にXP)。 「認証が遅い」とのことなんですが、いつも遅いのでしょうか?それとも時々?そして遅くとも待てば処理される?というのも、こちらで試していた時によく、WebFolderオープン時の認証ダイアログが、何故かトップに表示されない(他のウィンドウの後ろに隠れて表示される)という変な挙動にあたったことがあったので…(Windows2000)。「いつまで経っても認証ダイアログが出ないなぁ」と思って何げにタスクバーを見たら「あれ?出てるじゃん」と。 上の他に、WindowsXPでまともに使うためにはWebDAV領域はキャッシュさせないように(Header set Cache-Control "no-cache"を追加)しておく必要がありました(Pragmaは付けちゃダメ)。
Win2k なのですが、認証ダイアログ自体が、何かロックがかかったように、異様に遅く、またそれが成功しませんでした。
うーん、そういう症状には当たったことなかったです。また新たなバグか…。言い忘れましたが、当方でもSSL+BASIC認証を使っています。SSLでない場合はXPではさらにもう一つ罠があるんですよね(WebClientサービスを停止させる必要があるとかなんとか)。
こちらでも結局、mingw32+wxwidgets+neon+openssl で独自クライアントを実装しちゃったりしました(汗。Shell Extension 化は調査する時間がなくて将来の課題に ;-)。
いーなー。公開はされているんでしょうか。
すみません、業務時間に作ったので公開不可なんです…(セコイぞ会社)。ごく一般的なWebDAVクライアントなんですけどね。