日記帳

日記です。

ruby

libwiiremote-ruby

http://d.hatena.ne.jp/sa-y/20071222#1198304426 の libwiiremote に ruby バインディングを作ってみました. 2日くらいで適当に作ったので適当です. http://sourceforge.jp/projects/libwiiremote/ ruby は拡張モジュールを作るのが簡単でいいですねぇ…

Ruby で C がスパゲッティ

戯れに注文したスパゲッティが本当に出来てきました… http://d.hatena.ne.jp/shinichiro_h/20060323#1143054071 これが本場イタリア仕込みのスパゲッティらしいですよ!全然 SDL じゃないけどとりあえず気にしない方向で… main 関数だけに展開 変数名は全部1…

Ruby と WEBrick と Mongrel

そんな WEBrick に最強のライバル(?)登場らしいです.その名も Mongrel. http://redhanded.hobix.com/inspect/mongrelSGoingToKillWebrickGiveItAMonth.htmlHTTPプロトコルのパース処理を拡張ライブラリとしてC言語で実装することで高速化してある模様.実…

Ruby と WEBrick と

http://d.hatena.ne.jp/sa-y/20060121 で SDL_Uploader なんて Ruby で WEBrick とか使って書けば 100行くらいで作れる みたいなことを書きました.せっかくだから本当に作れるか試してみました. SimpleUploader.tar.gz % wc -l *.rb *.cgi 68 Uploader.rb …

Rubyと遅延初期化

そういえばベンチマークは公開してなかったと思うので置いておきます.

String#gsub() と String#gsub!() の速度比較

同じ動作をする破壊的メソッドと非破壊的メソッドがある場合,一般的には新規にオブジェクトを生成しない破壊的メソッドの方が速いことが多い(はず)です.「CGI::escapeHTML() って何をエスケープしてたっけ?」と思ってcgi.rbを眺めていると以下のようなコ…

String オブジェクトを破壊的に空文字列化(2)

http://d.hatena.ne.jp/sa-y/20051221#1135158425 の続き.他に思い付かなかったのでとりあえず benchmark.rb してみる. 以下の4つの処理を試しました. str.replace('') str.slice!(0..-1) str[0..-1] = '' str.sub!(/.*/, '') コードは以下の通りです. r…

String オブジェクトを破壊的に空文字列化

Ruby の String *1 クラスっていうのはまるで文字列を扱うクラスのような名前です.でも実際はバイト列を格納するためのコンテナクラスなんだと思う.ASCIIコードの範囲外の文字を文字単位で扱えないですし(もちろんjcode.rb*2を使えば日本語限定で文字単位…

benchmark

benchmark.rb*1の使い方を覚えた.かしこさが1上った.…賢いのは作った人ですか. *1:プログラミング言語 Ruby リファレンスマニュアル

Ruby で遅延初期化処理付き getter を一発定義(2)

http://d.hatena.ne.jp/sa-y/20051217 のコメントを参照.なかださん最高♪ 私のへちょいプログラムとは比べものにならないですねぇ… きっと世界中の遅延初期化マニアが抱き付いてキスしてきますよ?インデントが崩れてるのとインスタンス変数が初期化済みの…

Rubyと遅延初期化

attr_reader を使ったgetterの方が速いのならそれを使いたくなるのが人情ってものではないでしょうか? class LaterInitializationSelfOverrideToAttrReaderHello attr_reader :message alias :message_by_attr_reader :message def message unless @message…

Ruby で遅延初期化処理付き getter を一発定義

こんな感じでしょうか? class Module def attr_reader_with_initializer(name, initializer_name = nil) name = name.to_s variable_name = "@#{name}" first_accessor = "#{name}_reader_with_initializer".to_sym second_accessor = "#{name}_reader".to_…

Rubyと遅延初期化(2)

昨日のコードは明らかに下の方がよさそうだ.いや別に違いはないのだけれども. class LaterInitializationSelfOverrideHello def message unless @message then @message = Time::now.strftime("Hello @ %Y-%m-%d") end def self.message @message end @mes…

Ruby と遅延初期化

とりあえず遅延初期化が好きです.遅延初期化ってのはあれです. 普通はコンストラクタでインスタンス変数を初期化して,アクセッサメソッドは初期化済みの値をそのまま返すって書くところを,初期化処理をアクセッサメソッドが最初に呼ばれた場合に実行する…