はじめての Ruby

はてなフォトライフデスクトップ (id:reinyannyan:20060407:p1) からの発想の拡がりで、ローカルに眠っている画像を掘り起こして RSS 化 -> 自分用のサーバーに置いて利用、ということを思い付きました。

で、すぐに Ruby で書き始めました。実はちゃんと Ruby のプログラムを書くのはこれが初めてなんですが、あまりにも簡単に思ったことを表現できることに驚きました。

よくそういう話は聞いていましたが、実際に体験してみるとほんとにすごいですね。特に PerlCGI プログラムを幾つか書いた直後だったので尚更だったかも知れません。

とは言え、今のところ試み自体は失敗なんですが、一つ副産物を。

たくさんのディレクトリとファイルの中から、個数を制限しつつランダムに要素を選びたいわけなので、それを一発で実現するメソッドを作ってみました:

class Array
  def squash!(size)
    until length <= size
      delete_at rand(length)
    end
    self
  end
end

ついでに JavaScript 版:

Array.prototype.delete_at = function (idx) {
  return this.splice(idx, 1)[0];
};

Array.prototype.squash = function (size) {
  while (this.length > size)
    this.delete_at(Math.floor(Math.random() * this.length));
  return this;
};

配列のサイズが size になるまでランダムに達磨落しを続けます。