JavaScript、Ajax、HTML5(API)、Ruby…Web及び関連技術の実験&情報公開&制作物紹介。

Rubyの最近のブログ記事

Ruby東海第15回勉強会

| コメント(0) | トラックバック(0)

昨日、第15回Ruby東海勉強会に行ってきました。
「メタプログラミングRuby」読書会 第2章「火曜日:メソッド」。
動的メソッドによる動的ディスパッチと、ゴーストメソッドを利用した動的プロキシ。2つの魔法を手に入れたw

さて今回、LTやってきました。
「Freedom Patching の実用例(?)」
前回の勉強会で出てきた「モンキーパッチ」、改め「Freedom Patching」についての実例。
以下に資料を公開しております。

Freedom Patching の実用例(?)

なおスライドは普通のHTML5です。
閲覧には Chrome、Safari、Firefox(できれば4.0β以上)推奨。Operaだと一部Webフォントが正常に表示されないっぽいです。あとIEはChromeFrame必須。

来月の勉強会は、私σ(^-^)がまとめ担当に立候補しました。
第3章「水曜日:ブロック」
内容に絡めたLTも余裕があればやりたいなーと画策中♪

【覚書】[Ruby]続・トップレベルに定義したメソッドと同名のメソッドをクラスで定義した場合

| コメント(0) | トラックバック(0)

本日(日付が変わっちゃったので正確には昨日)、第14回Ruby東海勉強会に行ってきました。 そこでヒントをもらったので、半年前の記事に補足。

[おさらい]半年前に考えてたこと

def meth(a) p a; end
class Clazz
  def meth
    《トップレベルで定義した同名メソッドを self を引数に渡して呼び出したい!》
  end
end

こんなことしたい場合に、どうすれば良いのか?

↑こんなことを考えていました。

ポイントは以下の通り:

  • トップレベルで定義したメソッド = Kernelモジュールで定義されたprivateメソッド。
  • Kernelモジュールで定義されたメソッドと同名のメソッドを定義 = メソッドのオーバーライド。
  • privateメソッド = レシーバを指定して呼び出すこと(obj.methのように)が出来ない!(Rubyの仕様)

【覚書】[Ruby]トップレベルに定義したメソッドと同名のメソッドをクラスで定義した場合

| コメント(0) | トラックバック(0)

ちょっとばかしハマったのでメモ。

トップレベルであるメソッドを定義します。
それと同名のメソッドをあるクラスでも定義します。
例えば、

def meth(a) p a; end
class Clazz
    def meth; p self; end
end

こんな感じ。

このとき、クラス Clazz 内で、トップレベルのメソッド meth(a) を呼ぶにはどうしたら良いのか?
もっと言うと、同名のメソッド内で

def meth(a) p a; end
class Clazz
    def meth
        《トップレベルで定義したメソッドを self を引数に渡して呼び出したい!》
    end
end

こんなことしたい場合に、どうすれば良いのか?

...あ、もちろん、
「トップレベルで定義したメソッドと同名のメソッドを定義して、なんてそんな変な設計にしない」
というのが正解なのは分かっています。
仮に、あくまで仮に、そんな事態に陥った時の解決法は? ということですので。

Rubyでちょっと込み入った変数の初期化

| コメント(0) | トラックバック(0)

JavaScriptだと、1つの変数にちょっと込み入った処理の結果を初期値として定義するとき、わざわざ他のローカル変数や別の関数を導入してスコープを汚したくないときとかに↓

var a = function (x, y) {  
    :(x、yを利用した複雑な処理)  
    return XXX;  // こんな形で最終処理結果を返す  
}(b, c);

みたいに、無名関数(JavaScriptの世界ではこれをクロージャと呼ぶこともある)を定義してその場で実行する、ってよくあります(あると思います)(ありますよね?)。

Rubyで同じようなこと出来ないかな? と思ったときに、こうすれば出来るじゃん、っていう方法を見つけたのですが↓、

a = proc {|x, y|  
   :(x、yを利用した複雑な処理)  
  XXX  # こんな形で最終処理結果を返す  
}.call(b, c)

これって一般的? よく使われる方法? あとこう言った場合に、もっとスマートな方法って何かあるでしょうか?

教えて、えらい人(or Ruby識者)。

Twitter Bot の紹介

| コメント(0) | トラックバック(0)

ツイッター(http://www.twitter.com/)で活動するボット(Bot)をいくつか作っています。

2010/05/03時点で、2つ。
それらの特設ページを作成しました。

これらのBotの詳しい内容は、各解説ページを参照戴くとして。
ちょっと技術的な話とか、苦労話とか。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちRubyカテゴリに属しているものが含まれています。

前のカテゴリはMTtechです。

次のカテゴリはSiteです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

月別 アーカイブ

OpenID対応しています OpenIDについて