2008-01-01から1ヶ月間の記事一覧

いつの間にかRubinusがバージョンアップしてた

タイムワープアルゴリズムを実現する方法を考えていたのですが、YARVベースの命令セットでは良い方法が思いつかなかったです。それでは、Rubinusではどうかなと思い、久しぶりにhttp://rubini.us/に行ってみました。数ヶ月前にダウンドードしたときは0.8だっ…

タイムワープアルゴリズム

昨日の日記で、タイムワープアルゴリズムのことを楽観的ロックと書きましたが、違うようです。今日、「コンピュータプログラムの概念・技法・モデル」(ガウディ本)をようやく買うことが出来て、ちょっと関係するところを読んでみました。残念がながらタイム…

変数のread hook

今は、プログラムを作っている場合じゃないくらい忙しい(でもblogを書くくらいのゆとりが今日はあるので)のですが、思いついたのでメモ。 何か? 変数のread hook。対象はRuby 1.9.x詳細はこんな感じ 変数を参照するとき、登録したブロックが呼ばれる 変数は…

Rubyでcanvasをいじる

昨日の日記のJSObject(http://d.hatena.ne.jp/miura1729/20080118/1200662536)を使って、canvasタグをDOMで挿入するという方法で、FireFoxで今見ているページの後ろに星の図形を書く、プログラムを作ってみました。FireFoxはMozReplを使えるようにしておいて…

MozReplをRubyからシームレスに使う

MozReplでいろいろ遊んでいます。なかなか難しいですが、だんだん面白くなっています。MozReplを経由してちょうどWin32OLEみたいにRubyのオブジェクトとして、Javascriptのオブジェクトを扱えるようなクラスJSobjectを作ってみました。こんな感じでまるでRub…

MozReplを使ってみる

仕事で使うために、水道管の図面を描くためのソフトを作って使っています。でも、このソフトは図面をVisioにOLEで描くようにしているので、あまり使える人がいないだろうなと思い公開していません。FireFoxのCanvasやSVGに出力するようにすればみんなが使え…

「Rubyで8ビットCPUを作る」のアプリケーション

※ 前に掲載していたものはバグバグでした。試されて悩んじゃった人は済みません。今回のもバグがあるかもです。ha-tanさんの「8ビットCPUを作る」(http://d.hatena.ne.jp/ha-tan/20080108/1199725414#seemore)を読んで、何かプログラムが書きたくなったので…

継続を定義できる言語

デバッガを作っていて ブレークポイントで止まり、コマンドモードに入る コマンドモードで別のブレークポイントを定義する continueコマンドを実行する 2で定義したブレークポイントが引っかからない という問題が解決できずにいます。これを解決するには実…

Ruby 1.9.0のバイトコードをいじり倒す(その8)

YLUGのカーネル読書会の笹田さん(http://video.google.com/videoplay?docid=1275680087630664061&hl=en)の公演を見ていたら、 将来、命令セットを変えることを考えている そのため、現状の命令セットに依存したプログラムが増えるとまずいから、以前は提供し…

意味不明なメモ

def foo(cnt) callcc {|c| cnt.call(c) } print "A" end cont = callcc {|c| foo(c) } def foo(cnt) callcc {|c| cnt.call(c) } print "B" end cont.call(nil) if cont うーん、ダメだったか。実行中のバイトコードを書き換えるのは無理そうだ。

Ruby 1.9.0のバイトコードをいじり倒す(その7)

正月から何をやってるんだか・・・。(その5)の問題http://d.hatena.ne.jp/miura1729/20071230/1198973841が解決できました。 compile.cのiseq_build_from_aryで、arg_simpleというiseq構造体のメンバーをリストアするようにしました。 パッチ(これまでのもの…