Ruby

ひさびさruby

IIJmioと契約しているおかげで、自宅サーバーのPostfixからメールを送信することができない*1。メールを送れないのはいろいろ困るので、とりあえずmailコマンドのサブセットっぽいことができるスクリプトをrubyで書く。DreamHostのSubmissionポートを使ってS…

Ruby実装のベンチマーク対決

Ruby Implementations Shootout: Ruby vs Yarv vs JRuby vs Gardens Point Ruby .NET vs Rubinius vs Cardinal : jaYARVすげー。ささださんすげー。

Rubyで自己言及

自分自身を出力するプログラムRuby版。 b = %(proc{|x| "b = %(#\{x\}) qb = b.gsub(35.chr+123.chr, 35.chr+92.chr+123.chr) qb = qb.gsub(125.chr+33.chr, 92.chr+125.chr+33.chr) puts eval(b).call(b)"}); qb = b.gsub(35.chr+123.chr, 35.chr+92.chr+12…

The way of refactoring

昨日に引き続きコードを書き換える作業を少し進める。似たような機能で、微妙に異なる動作をするメソッドを1つのメソッドにまとめる場合に、Rubyでは引数をハッシュ1つにまとめてしまって、キーでオプションを指定して動作を変える、という方法がとても強力…

ActionWebServiceハマリどころ

ActionWebServiceでメソッド名を get_hogehoge と定義した場合、リモートからXML-RPC等でアクセスするときは、メソッド名をGetHogehogeとして呼ばないと、no such methodと怒られる。

Continuationの概念がだんだん分かってきた

昨日寝る前に、RubyのContinuation関係のページをざーっと眺めて、「あーわかんねぇ」と思いながら眠りについた。で、さっき起きて改めて眺めていたら、なんとなくContinuationの概念が分かってきた。ただ、Rubyのcallccはまだよくわからん。JavaScriptのyie…

Code Golf - 最短ストローク

Code Golfというプログラミングコンペ的なサイトに参加してみる。やることは、いかに少ない文字列のソースコードで、定められた課題のテストをクリアするか、という問題。とりあえず、素因数分解をする課題についてはなんとかテスト通過。じつは怪しい部分も…

Ruby1.8系は死ぬらしい

http://jp.rubyist.net/magazine/?0016-ForeWordまつもとさんがんがれ。

トドちゃん in Ruby

[結] 2006年8月 - 結城浩の日記に登場するトドちゃんをカウントするPerlスクリプトにインスパイヤされて*1、トドちゃんをカウントするスクリプトRuby版。かっとなって作った。今は反省している。 使い方 このスクリプトを、パスの通った場所に'todo'というフ…

RubyForgeより:Gmailer, Tioga

Gmailer GmailをRubyから使うライブラリ Tioga TeXを利用して、Rubyから図や数式、グラフなどをPDFに出力できるライブラリ あとで試す、かもしれない。

今更ながら、method_missingを使ってみる

ActiveRecordなんかでも活用されているmethod_missingを自分で実際に使ってみる。使用方法としては、Hashへのメソッド的アクセス。 class Hoge attr_accessor :params def method_missing(name, *args) if /^(.+?)=$/ =~ name.to_s @params[$1.to_sym] = arg…

SubversionレポジトリをGmailにバックアップするrubyスクリプトGSVN-dump

を作った。ソースは自分から人に見せたがるほど綺麗なものでもないので、ここには書かない。GSVN-dumpは、「ゴスヴンダンプ」と読むべきかもしれません。ジーエスヴイエヌだと言いにくいし。 GSVN-dump動作の流れ gsvn dump --gmail とかユーザーがコマンド…

今更デザパタ:Adapter

テストケース []require[] []'[][]test/unit[][]'[] []require[] []'[][]adapter[][]'[] []class [][]TestAdapter[] []<[] []Test[][]::[][]Unit[][]::[][]TestCase[] []def [][]setup[] []@text[] []=[] []"[][]aaaa[][]"[] []@banner[] []=[] []Banner[][]…

今更デザパタ:Iteratorパターン

Rubyで書いていきます。RubyにはIteratorがすでにあるという話はおいといて。テスト駆動で行きましょう。まずはテストケース test_iterator.rb []require[] []'[][]test/unit[][]'[] []require[] []'[][]iterator[][]'[] []class [][]TestIterator[] []<[] […

RubyForgeで見つけたライブラリ Ruby Numerical Library (RNum)

Ruby Numerical Library (RNum)はBlasとLapackを使った、めちゃんこ速い(ultra fast)線形代数のパッケージです。 http://rubyforge.org/projects/rnum

気になるテストツール

Watir IEコンポーネントをRubyから操作してテストするツール。Windows+IE限定。 Selenium HTMLでテスト手順を指定。ブラウザ上で動くため、クロスプラットフォーム。 Selenium-IDE Firefox拡張。ブラウザの操作を記録して、テストを作成する。 Selenium on R…

プログラム言語っぽく書くべきか、自然言語っぽく書くべきか

rubyでは、makeというメソッドがあったときに make(:breakfast) と書くこともできるし、 make :breakfast と書くこともできる。 好みの問題もあるけど、.eachとか.to_sを後ろにつなげたりして、()が必要不可欠なとき以外は、後者のように書くのがRubyなんじ…

テスト重要

時期が時期だけに、大学のテストかと思わせて、Rubyのユニットテストの話。Windows上では使えないライブラリ*1を使うプログラムを書くときに、ユニットテストがかなりの威力を発揮する。プログラムを書いて、思いつくだけのassertionを書いて、linuxとかにも…

ウサギ、あるいはピカチュウ本

Programming Ruby: The Pragmatic Programmer's Guide, Second Edition作者: Dave Thomas,Chad Fowler,Andy Hunt出版社/メーカー: Pragmatic Bookshelf発売日: 2004/10/11メディア: ペーパーバック クリック: 7回この商品を含むブログ (15件) を見る日本語訳…

【テスト勉強飽きた】それ、私が変わりにやっておきますよ?なライブラリ WWW::Mechanize

最近は、2次情報とか3次情報に甘んじているのもどうかと思って、積極的に海外の動きを追うことにしているわけですが、そんな中でlivedoor Readerに登録したRubyForgeのニュースから面白いライブラリを発見。それがWWW::Mechanize。WWW::Mechanizeの用途は、W…

クラスメソッドと、クラス変数について挙動を調べる

Rubyでクラスを定義するときに、@@をつけるとクラス変数、@をつけるとインスタンス変数となる。 で、クラスメソッド内でインスタンス変数にアクセスしたらどういう挙動を示すのかちょっと調べること10分。 サブクラスを含めてクラス内のあらゆる所からアクセ…

最近読み始めた。Introductionくらいまで。テストで忙しくてサンプル作れないっつー話です。それはそうとRubyがなかなかよさげ。Perlよりも見た目がきれいなのもポイント。 フォルダ内のあるキーワードをファイル名に含むものを、全部別のフォルダに移すコー…