Ruby

NArrayに多次元配列でアクセスする方法

仕事でRuby NArrayライブラリを使って、配列のアクセスを高速化していたのですが、 どうしてもLoopを回す必要があったので、そこをC化しています。 http://d.hatena.ne.jp/yukichanko/20091026/1256573572 NArrayは多次元配列を定義しても、実際には全て1次…

XMLファイルの処理

お仕事でXMLファイルをいじくる必要があったので、すこしRubyでやってみた。 Rubyでは、REXMLと言うライブラリを使うらしい。ぼくの用途としては、既存のXMLファイルをパースして、要素を書き換えて、ファイルにダンプできればよいので、その例を備忘録代わ…

追記: 数値解析 in Ruby

Ruby1.9系で速くなったと言う噂を聞いたので、少しベンチマークを取ってみた。 (例によって、ちゃんとした流儀でベンチマークを取ってるわけではないので、不正確極まりないのですがご勘弁を) 使用したソースは、 http://d.hatena.ne.jp/yukichanko/20091026…

数値解析 in Ruby

仕事である数値解析プログラムを作ることになって、今、仕様の確認のためにプロト版を作っている。 安易な考えでRubyでプロト版を作ることになったのだが、その柔軟性と引き換えにやはり、実行速度が問題になり始めた。 当初の予測では、3次元版でも1時間程…

コールバック関数の設定

http://d.hatena.ne.jp/yukichanko/20090827/1251358163 Rubyの場合、引数を指定しなかった場合でも、即関数実行になってしまうため、既存の関数をCallback関数に設定する場合にどうするんだろう?と悩んでしまった。何かいい方法がないかなぁ、と思ってネッ…

オープン性

訳あって、4つの値を一度に取ってくるメソッドが欲しいなぁ、と思った時に、RubyだとClassのオープン性を使って、いとも簡単に実現できちゃう。 class Array def each4() i = 0 while i < self.size yield self[i..i+3] i += 4 end end end すご〜く便利なん…

違いについて

ぼくの中では、Ruby = Python (二アリーイコールです) と思ってたのだけど、使っていると結構違いに気づかされる。例えば、メソッドの扱い。 Pythonだと、 >>> def square(x): ... return x * x ... >>> square <function square at 0x65370> とオブジェクトを返してくれるけど、 Rubyだ</function>…

Pythonの"if __name__ == '__main__:'

Pythonでお気に入りの構文。Rubyでどうするんだろう、と思ってググったら、 http://d.hatena.ne.jp/lurker/20060524/1148469949 にあった(微妙にタイトル間違ってるけど)。 if $0 == __FILE__ then # 直接呼ばれたときのみ実行される end また、一つストレス…

Ruby de Overload

できるもんだと勘違いしてた。。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/1401Work Aroundとして参考になるページ。 http://d.hatena.ne.jp/sai-ou89/20080616

とりあえずの使用感

Rubyで簡単なFDTDを作っているのだが、初めて真面目に使ってみたので、その使用感。 do~end方式になじめないと思ってたけど、そうでもない。{}方式じゃなくてもおk ブロック付きメソッドは、わかってしまえば、使ってて楽しい。 クラスメソッドとインスタン…

ブロック付きメソッド

Rubyを初めて知ったのは、大学院M1の頃に先輩から教えてもらったと思うのだけど、そのとき以来、ブロック付きメソッドがよくわからなかった。何がわからなかったかと言うと、 array.each {|x| puts x} と言う文があった時に、ブロック変数xには、何の値が入…

『はじめてのRuby』読破

と言うことで、ブロック付きメソッド以外は理解したつもり(てか、他の部分は、他の言語を理解できてれば、大丈夫だろう)。ブロック付きメソッドは、てっきりブロック内部のコードを無名関数として、その無名関数のリファレンスを関数に渡しているのだと認識…

おもしろいね〜

さすがに『Algolの皮をかぶったLisp』といわれることはある*1。 もともと、Ruby系の本が積まれてたので、棚卸しの意味を込めて、Rubyの勉強を始めたんだけど、こりゃSICPを読破する上でもかなり役立ちそう。順番が違う気はするけどね。 てことで、明日からの…

ブロック構造付きメソッド

いつもRubyを身につけたいなぁ、と思ってたぼくをいつまでも妨げてくれるのが、ブロック構造付きメソッド。昔の本だとイテレータって言ってたけど。 Rubyのブロックがまさしく、オレをブロックする!!なんて、しょーもなorzさて、ここ数年、SICPも半分ぐら…