ってことだったのか!(おそらく) というのも、以前、Rubinius GemstoneのOODBがJRubyとRubiniusをサポート を読んだとき、JRuby と Rubinius があるのになんで Matz Ruby や YARV への言及がないんだろうと疑問に思って、くしくも Matz にっきにも関連して、 Gemstoneといえば昔一世を風靡したOODBMS。これがJRubyやRubiniusから使えるようになる、という話。私はその頃ObjectStoreを使ってたけど。 待て。JavaとのコネクションでなんでもできるJRubyは分かるが Rubiniusが出てて、なんで本家Rubyが対象にならないのか。不思議。 http://www.rubyist.net/~matz/20070807.html#p06 といった指摘があったのを見ても、(“昔一世を…”とか、例によって Smal
以前、動き続ける事を前提としたプログラムについて記事を書き、 Smalltalk勉強会を開催させていただいた事がありました。 その結果、梅澤さんから教えていただいたGemStoneを使ったGLASS (= GemStone, Linux, Apache, Seaside, Smalltalk) というのが面白そうだと思ったのですが、先のRailsConf2008で、 今度はMagLevというのが出てきたそうで、面白そうです。 ということで、情報源をメモしておきます。 MagLev - Ruby that scales(英語) Maglev (英語) GemStone の独自拡張 VM(Facets Java VM および MagLev Ruby VM)と、JRuby および Rubinius の Ruby 処理系記述部分を組み合わせると同社製 OODB をフルに使える Ruby 処理系がで
YARV ベリファイアを試作してみました。製作時間一晩、リファクタリング一晩なので適当です。不正なバイトコードを食わせると例外を投げます。 # encoding: utf-8 # bad_example.rb require "verifier" # ヘッダ header = [ "YARVInstructionSequence/SimpleDataFormat", 1, 1, 1, { :arg_size=>0, :local_size=>1, :stack_max=>3 }, "<dummy>", "foo.rb", :top, [], 0, [] ] # バイトコード本体 (スタックマシン) body = [ [:getlocal, 10000], # 10000 番目のローカル変数を読む [:leave] # 終わり ] bytecode = header + [body] # バ
YARV では、バイトコードを直接書いて実行する方法が提供されています。バイトコードといってもバイトとかは出てこなくて、配列やシンボルを使って命令列を表現します。こんな感じ。 # encoding: utf-8 # good_example.rb # ヘッダ header = [ "YARVInstructionSequence/SimpleDataFormat", 1, 1, 1, { :arg_size=>0, :local_size=>1, :stack_max=>3 }, "<dummy>", "foo.rb", :top, [], 0, [] ] # バイトコード本体 (スタックマシン) body = [ [:putnil], # レシーバを積む # (関数呼び出しのときは nil) [:putobject, 1], # 1 を積む [:send, :p, 1, nil, 8,
世田谷の某所から原宿まで自転車通勤しているのですが、そろそろ寒くなってきたので電車に切り替えようかと悩み中のmikioです。今回はTokyo Cabinetのスクリプト言語バインディングについて述べます。 スクリプト言語バインディングとは TCはC言語で実装されたライブラリで、C言語(C89、C99)およびC++言語のプログラムから利用することができます。CやC++は各種の計算処理やシステムコールの呼び出しを直接的に記述できるので高速に動作するプログラムを作ることができる反面、ポインタ演算やメモリ管理などで致命的なバグを潜ませやすいので非常に注意深くコーディングを進めなければいけません。つまり、プログラムの実行速度は速いが、開発速度は遅いということです。 それに対して、PerlやRubyをはじめとするいわゆるスクリプト言語は、実行速度はCやC++に劣るものの、高水準かつ直感的な文法と強力な
上を行くかどうかは知りませんが :-p Ajaxはクライアントの都合でサーバーに通信を仕掛けるpull型の通信ができ、Cometはサーバーが好きなタイミングでクライアントへデータを送りつけるpush型の通信ができるわけですが、新たに双方向の通信ができる技術を開発しました。 具体的には、JavaScriptとサーバーの間で双方向のRPCができます。すなわち、サーバーからクライアント側のJavaScriptのメソッドが呼べるし、逆にクライアント側からサーバー側のメソッドを呼ぶこともできます。 サーバー側で call("addMessage", "Hello!") とやると、JavaScript側の function addMessage(msg) { ... } という関数が呼ばれたりします。 この技術を使って、試しにチャットシステムを作ってみました > デモ (ソースコード)*1 リアルタイ
There's something that's been bugging me for a long time that I need to get off my chest. Some of you may hate me for it, but perhaps there are others out there with the same complaint, silently in agony, wishing for death to take the pain away. It's time to set the record straight, and prove once and for all that the Rubyists are wrong. Rubies are almost NEVER cut like this: The cut shown here is
(self, cref, class, default の visibility) の関係. toplevel(main, Object, Object, private) class, module 文(mod, mod を積む, mod, public) module_eval ''(mod, mod を積む, mod, public) module_eval{}(mod, 変更無し, mod, public) instance_eval ''(obj, <<obj を積む, <<obj, public) instance_eval{}(obj, 変更無し, <<obj, public) 1.9 ではいくつか出来ていない.ruby_class と ruby_cref を一緒にしていたため. test-all TESTS=ruby 長すぎ.
<< 2008/03/ 1 1. [Ruby] Ruby 1.9.0-1 snapshot released 2. 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと 3. [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog 2 1. [教会] 第一安息日 3 1. [言語] CS 11: Python track: python idioms 2. [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia 3. [OSS] Theological Cultural Analysis of the Free Software Movement 4. 小寺信良:正直、テレビはもうダメかも
Improving the Ruby GC overview This page details some changes to the ruby garbage collector which seem to afford a 25% reduction in maximum heap memory usage, and nearly double the amount of heap space ruby's is able to reclaim. This comes at the cost of a 2% performance hit. More to come, stay tuned. patch The latest patch to ruby 1.8.6 is available here. summary of changes Fixed 2k heaps Hea
Ruby, GCplanSweepをLazySweepにして、最大停止時間を改善するHeap内のオブジェクト数がある一定を超えてからLazySweepに切り替わる 通常のプログラムのスループットを落としたくないので今は一応100万にしているLazySweepフェイズではHeapの配列の数本を、オブジェクト数が一定になるように選んでSweepする 配列一本ずつのオブジェクト数が異なるため、Sweepの時間がばらつかないように調整したHeapの配列が1.8倍づつ増えるのがメモリ効率的にあんまりよくないので、LazySweepが始まってからは少し抑えるようにした。1.1倍くらい。 理想は「オブジェクトを何百万も作ってプログラムをぶんまわす時の最大停止を改善する。」です。その場合当然スループット性能が低下してしまうのはいかしかたなし。 patchgc_lazy_sweep_r15749_patch
<< 2008/03/ 1 1. [Ruby] Ruby 1.9.0-1 snapshot released 2. 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと 3. [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog 2 1. [教会] 第一安息日 3 1. [言語] CS 11: Python track: python idioms 2. [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia 3. [OSS] Theological Cultural Analysis of the Free Software Movement 4. 小寺信良:正直、テレビはもうダメかも
身の回りに溢れているほとんど全てのプログラムは、 静止状態の表現としてソースコードを持ち、 計算機上で実行され、そして終了します。 少なくとも、終了しようと思えばできるように作られています。 しかしながら、近年では、Webサーバやネットワークプログラムのように、 継続的に動作することが当たり前で、停止状態に移行する事自体が 例外とされるようなプログラムが珍しくなくなってきています。 RubyやPerl, Pythonなどの動的言語と呼ばれる言語が普及し、 プログラム言語の価値は、実行速度から開発速度で測られる 比率が高くなりました。 そんな中、去年ぐらいから、静的言語でも動的言語でもない、 新しいプログラミング言語のパラダイムの可能性について考えています。 走り続けるプログラム はてしない物語。終了状態の無いプログラム。 停止することなく、動き続けることが想定されるService型プログラ
WiiRemoteFrameworkを使うにはCocoaの知識が必要だしメソッド名もCocoa的で Rubyぽくないのでラッパーをつくった。 require 'osx/cocoa' OSX.require_framework "WiiRemote" class WiiRemo < OSX::NSObject @@instance = nil def self.start_search(&found_block) raise "already initialized" if @@instance @@instance = WiiRemo.alloc.init(&found_block) puts @@instance.inspect end def self.stop_search @@instance.stop @@instance = nil end def initialize @di
■ [event][Ruby/SDL] Ruby1.9のFiberはゲームにも使えるのか? 結論から言うと、余裕で使える。 今使ってるノートPC (PenM 1.2GHz, メモリ1GB) だと300キャラくらいまで大丈夫な感じです。 大丈夫というのは「描画フレーム数が50/秒以上」とかそんな。 ていうかFiberってなによ いわゆるコルーチンです。 ふつーのゲームプログラミングでは、敵を「右→下→左→上」という順に動かすために「いま動作のどこまでやったかフラグ」 を用意したりして頑張るんですが、コルーチンがあればこんなに簡単に。 def act_move1(i) @x = rand(640) @y = rand(480) 40.times{ @x += 8; Fiber.yield } # 40回右に動く 40.times{ @y += 8; Fiber.yield } # 40回下に動
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く