Ruby

Thin

Mongrelより速いRuby HTTPdらしい。http://www.rubyinside.com/thin-a-ruby-http-daemon-thats-faster-than-mongrel-688.htmlMongrelの作者はRuby界隈から逃亡したらしいので、こっちに注目しておこうか。と思ったら、これMongrelを高速化するライブラリみた…

アイアンルビー

そんな名前の競走馬がいたとは。アイアンルビー 馬 - Google 検索アイアンパイソンは居ないみたいですね〜

Rubyのクラス変数

クラス変数は@@を使って定義する。インスタンス変数と違って初期化されていないとエラーになるので嫌な感じ。 class Hoge def self.hoge= v @@hoge = v end def self.hoge @@hoge end end Hoge.hoge = "ほげ" p Hoge.hoge @@を使わずにクラスに特異メソッド…

IronRubyリリース

http://journal.mycom.co.jp/news/2007/07/24/045/index.html http://www.atmarkit.co.jp/news/200707/24/msruby.html Silverlightが急に魅力的な環境に思えてきました。リッチクライアントを作成する言語として、ActionScript、JavaFX、Rubyの中から選べる…

Rubyはかっこいい

Railsの作者は美しいコードが書けるからRubyを選んだそうだが、俺にとってのRubyは美しいというよりもカッコいい。かっこいいからRubyを使う。Railsに付属しているActiveSupportはTime等のオブジェクトに便利なメソッドを提供する。Railsユーザならご存知の…

EclipseにRuby Development Toolsを入れてみた

Ruby Development ToolsプラグインがEclipseプロジェクト管轄下のアップデートサイト(Europa Discovery)で配布されていた。この辺の事情は良く知らんが、つまりRDTプロジェクトはEclipseのサブプロジェクトになったということか。軽く試してみたがメソッド…

IronRubyリリース

http://journal.mycom.co.jp/news/2007/07/24/045/index.html http://www.atmarkit.co.jp/news/200707/24/msruby.html Silverlightが急に魅力的な環境に思えてきました。リッチクライアントを作成する言語として、ActionScript、JavaFX、Rubyの中から選べる…

マルチバイトの文字列長を取得

sizeメソッドやlengthメソッドは文字列長ではなくバイト長を取得するらしい。 p "ぬるぽ".size # => 9 UTF-8では、マルチバイト文字の2バイト目以降の上位2ビットは必ず10になるので、こんな感じで文字列長が取れるだろうか。 def utf8length(str) str.unpac…

AutoMatorのシェルスクリプトでRubyを選ぶ

デブサミのShibuya.pmイベントのAutoMatorプレゼンを見て何かやってみようと思いました。AutoMatorではシェルスクリプトを呼び出して使って色々処理をすることができます。プレゼンではPerlを使ってゴニョゴニョしていましたが、Rubyistとしては当然Rubyを使…

includeとextend

というわけでRubyのモジュールをまとめると include クラスのインスタンス全てにモジュールの実装を追加 extend 特定のインスタンスのみにモジュールの実装を追加 実装の追加であってインターフェースの追加じゃないです。モジュールを使うとモジュールとク…

includeとextendその2

前回の include は比較的どうでもいい話。includeは、クラスに対してモジュールのメソッドを追加するので、そのクラスのインスタンスすべてがモジュールのメソッドを使えるようになる。JavaScriptで言えばprototypeにメソッドをセットするようなもの。一方、…

includeとextendその1

Rubyにはモジュールという機能があり、クラスの機能を分割、再利用できます。モジュールの機能をクラスに追加するにはincludeを使います。 module Fuga def execute puts "fuga" end end class Hoge include Fuga end hoge1 = Hoge.new hoge1.execute hoge2 …

mod_rewriteでurlを書き換えるとSERVER_PORTが80になるので困った

Rubyに限った話ではないのだが、mod_rewriteでurlを書き換えてCGIを実行すると、Apacheは12080番ポートを使っているのに環境変数SERVER_PORTが80になるので困っている。rewrite条件にマッチしないようにCGIを実行すると正しく12080が得られるので、mod_rewri…

RubyのmoduleのインクルードとClassの継承

module Moge def a "moge" end end class Hoge include Moge def a "hoge" + super end end p Hoge.new.a # "hogemoge"と表示 おや、インクルードしたモジュールのメソッドにsuperでアクセスできてしまった。インクルードの実装は継承と同じなのだろうか? …

仕事でRubyを使う

http://d.hatena.ne.jp/OTTii/20061003/1159847164 Rubyを使ってて気持ちいいと感じるのは仕事で使ってないからなんだろうな。 そうかもしれない。 しかし、仕事でJava使ってるが別に嫌と思った事は無……、いや、あるある。例えば引き継ぎ等で渡されたソース…

インスタンスメソッドのアクセス制限2

Rubyのマニュアルには「privateは自クラス及びサブクラスからしか参照できません。」とあるが、正確には、自インスタンスの内部からしか参照できないような感じ。Javaでは、同一クラスであれば別のインスタンスのprivateメソッドも呼べるのであるが… public …

インスタンスメソッドのアクセス制限1

Rubyでは、オブジェクトのメンバに対するアクセス制御としてpublic、protected、privateを指定できる。Javaと同じキーワードであるが、protected、privateメソッドの挙動はJavaとはかなり違うので要注意だ。Java public どこからでも protected 同一パッケー…

クラス名からクラスオブジェクトを取得できるのか

JavaでいうところのClass.forNameにあたるモノ。Rubyで文字列からクラスオブジェクトを取得するにはどうすればいいのか。ぶっちゃけeval使えば良いんだけど… class Hoge def a p "hogehoge" end end hogeClass = eval("Hoge") hogeClass.new.a # "hogehoge"…

Rubyのクラス定義

Rubyでは、 クラスはclassキーワードで定義 インスタンスメソッドはクラス内でdefキーワードを使って定義 新規インスタンスはクラスメソッドnewで作成 newメソッドを定義する必要はない コンストラクタは定義できないが、代わりにinitializeメソッドがnew実…

RubyとJavaのsuperの違い

RubyとJavaではsuperの意味が異なっている。Javaではスーパークラスをレシーバとするためのキーワードであり、Rubyでは現在のメソッドがオーバーライドしているメソッドの呼び出しになる。 class Oya { void a(){ System.out.println("oya"); } } class Ko e…