最近のキーワード

2006年12月12日

RubyにおけるDSLとAnnotation(アノテーション)

今年始めから半ばに書いたものだが、 ということを考えた時期があった。 このあたりのプロトタイプと現在の考え、さらに、Martin FowlerのRubyAnnotations(あまり多くは書いてないけど)などを参考に考えと実装(時間があれば)を洗練させてみようかと思った。 (続きを読む…)
posted by ttate at 02:14| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年11月21日

Method#where

「メソッドがどこで定義されているか」をすこし改良。
class Method
  def where
    to_s =~ /#<Method: ([\w:]+)(\(([\w:]+)\))?#/
    if $3
      name = $3
    else
      name = $1
    end
    name.split("::").inject(Object){|o,s|o.const_get(s)}
  end
end

module Foo
module Rubymod
  def m
  end
end
end

module Bar
class Rubyco
  include Foo::Rubymod
  def c
  end
end
end

r = Bar::Rubyco.new
p r.method(:m).where      #=> Foo::Rubymod
p r.method(:c).where      #=> Bar::Rubyco
posted by ttate at 19:41| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年11月12日

Ruby Conference 2006

最近気づいたのだけど、出張期間中の金土日に、Ruby Conference 2006 がコロラド州であったらしい。すっかり忘れてたけど、土日だけ寄っていければよかったかも。 まぁたぶん出不精なのが主な理由で無理だったかもしれないが…
posted by ttate at 23:23| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月23日

tdp4rでXMLのtop-down parsing/transduction

TDP4RでXMLをパース/変形するためのパーサのセットを用意してみた。 これで、top-downにパースしたり変形するものについては対応できる。 (続きを読む…)
ラベル:tdp4r xml ruby
posted by ttate at 09:11| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月22日

Juggernaut (Rails + Flash)

http://rubyforge.org/projects/juggernaut
Flashの機能を利用したのか。Rails+AJAX+Flashではなくて、Flex2とかOpenLaszloとかもっと気楽に作れるといいなぁ。Railsのクライアントサイド用のコードはOpenLaszloへ対応させるとか…
posted by ttate at 15:58| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

ポーランド記法<->逆ポーランド記法

http://jp.rubyist.net/magazine/?0015-EditorsNote
injectを使った実装と、tdp4rを使ったものを並べてみた。この程度なら構文解析使うと面倒になる。(続きを読む…)
posted by ttate at 15:22| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

TDP4R 1.4.0: 自動最適化

TDP4Rについて A B | A C とあるものを可能であれば A (B | C) と自動的に変形するようにしてみた。テストはまだ不十分かもしれない。
ラベル:tdp4r ruby
posted by ttate at 03:25| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月20日

TDP4R: Packrat Parsing

TDP4Rの高速化に関連して、Packrat Parsingの論文を少し眺めてみた。やりたいことは、バックトラッキングの抑止で、その手段として、lazy evaluationとmemoizationという新しい道具を使ったという感じだ。(続きを読む…)
ラベル:tdp4r ruby packrat
posted by ttate at 10:17| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月19日

TDP4RでXMLの変換(2)

少しサンプル(sample_xml.rb)を改良して、パースしながらDOMを構成するようにしてみた。(続きを読む…)
ラベル:tdp4r xml ruby
posted by ttate at 07:24| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月18日

TDP4R 1.3.3: chainlで四則演算

TDP4R 1.3.3でようやく四則演算くらいは楽に記述できるようになった。これは、HaskellのParsecなどのchainl/chainrに相当するものに、中置演算子の優先度も考慮して実装したもの。(続きを読む…)
posted by ttate at 22:29| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月17日

injectでProcを取り扱うことの利点

(1..10).inject(0,&b) 以上に何かやりたいことがあると考えると、それはブロック(Proc)を合成することだと思うので、ブロックを合成する方法を考えるのも良いかもしれない。
posted by ttate at 14:12| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月15日

tdp4rでXMLの変換

tdp4rのサンプルで、XMLの変換を行ってみた。REXMLのパーサを少し利用している。(続きを読む…)
posted by ttate at 06:32| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

Array#===, Hash#===

Array#=== や Hash#=== を以下のように定義しておくと不都合がおきることは多いだろうか? (続きを読む…)
posted by ttate at 03:02| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月14日

多値とArray

やっぱり、多値をArrayで表そうとするのは苦しいと思う。 少なくとも内部表現としては、Arrayを継承したValuesなどのクラスを作るか、あるいは、全く別物のクラスを作るほうが混乱が少ないと思う。 (続きを読む…)
posted by ttate at 21:14| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月13日

tdp4rにラベルと参照を導入

休憩のついでに、カップラーメン食いながら、こんなのが書けるようにしてみた。
buff = ["a","b","a"]
rule = token(/\w/)/:x - token("b") - backref(:x) >> proc{|x| x}
assert_equal(["a","b","a"], rule.parse(buff))
より文法っぽく書くとこんな感じ。
parser = TDParser.define{|g|
  g.char = /\w/
  g.word = g.char/:x - g.char - backref(:x) >> proc{|x| x}
}
parser.parse(buff)
posted by ttate at 04:50| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月06日

テストコードの埋め込み

rubytokとか、rbtest などを見ていて思うのだけど、既存のUnitTestに縛られず、コード断片のテストや、少し高度には、context sensitiveなテストも書けるようにすればいいのになと思う。(続きを読む…)
posted by ttate at 03:33| ☁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年07月03日

dl2

ruby-1.9でdl2のテストが通らなくなっていることに気づく。 (続きを読む…)
posted by ttate at 01:56| 🌁| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年06月27日

XTemplate再開発

XTemplateをどうすべきか少し考えた。で、ひとまず以前思っていたことを列挙する。 (続きを読む…)
posted by ttate at 08:00| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2006年06月19日

2006年06月18日

上限を決めずに素数を生成(Ruby版)

というわけで、現在の形はこう(↓)。1000000個目はまだやってないが、100000個目くらいなら最近のノートPCであれば数分内に求めることはできる。でも、古典的なアルゴリズムをちょっと変形させただけだから、あまり面白くないし、見た目もカッコ悪い。 もう少し何かを加えよう。当然、時間的にも空間的にも悪くないような実装が好ましい。 (続きを読む…)
posted by ttate at 05:39| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。