飛び出す絵本

投稿者 nanki 2005-11-08 04:36:00 GMT

一枚の写真から、地面、空を認識して、垂直線などから立体を推測する、という手法。

うまくいった写真を載せてるんだろうけど、それでもすごい。

Automatic Photo Pop-up


agiledox with rails

投稿者 nanki 2005-11-06 17:50:00 GMT

rails のwiki を眺めていたら、こんなページ(TDDinRails)を発見。(見つけるの遅い)

この中で、rails のrake に agiledox 風の機能を追加するという小技が紹介されている。 要は、テストクラスのメソッド名を説明的に書いて(test_should….)、テストを書くと同時にクラスの仕様のリストまで作成してしまおう、というやり方のようだ。

task :agiledox do
  tests = FileList['test/**/*_test.rb']
  tests.each do |file|
    m = %r".*/([^/].*)_test.rb".match(file)
    puts m[1]+" should:\n"
    test_definitions = File::readlines(file).select {|line| line =~ /.*def test.*/}
    test_definitions.each do |definition|
      m = %r"test_(should_)?(.*)".match(definition)
      puts " - "+m[2].gsub(/_/," ")
    end
    puts "\n"
  end
end

の様なコードをRakefile に追加することで、

$ rake agiledox
user_controller should:
 - store user in session on successful login
 - not store user in session on unsuccessful login
...

という使い方ができるようになる。 テストに失敗しても、メソッド名から何がどう失敗しているかがわかりやすいし、TODO 管理の様にも使える。

なるほど、これならテスト駆動開発が楽しいものになりそうだ、と心の中でわくわくした。

さらに、ruby ではメソッド名に日本語が使えるので、

def test_ログインに成功したらsessionにuserが保存される。
...
end

ともできる。

これは良さそうということで、早速後輩に勧めたら、テストコードが書きたくてしょうがなくなったようだ。 テスト駆動開発定着までの近道として参考になる。

参考


Web2.0

投稿者 nanki 2005-10-16 08:10:00 GMT

最近、ajaxやGoogle のおかげで、RIA,SOA が開発者に浸透してきた感がある。 次世代のplatform としてのweb という可能性が現実味を増してきた。

Microsoft がほぼ独占していたデスクトップ市場も、リッチなweb application の登場で、デスクトップOSに依存しないアプリケーションが登場すれば、かげりが見えてくるかもしれない。

かつてはその線に一番近かったJava は、ランタイムをWindows に標準搭載しないことで押さえ込まれた感じがするが、果たして今度はどうするのか。

いまさらブラウザを搭載しないわけにはいかないし。 こんどこそ、真っ向からの勝負になるんだろうか。

今のweb はちょうどWeb2.0に向けて、アプリケーションが出始めている状態だ。 これらを統合する今のデスクトップOSのようなものが現れるに違いないと思う。

それがどんな形をとるのか、まだわからないが、今のblog が一番それに近い気がした。 著名なblogツールはプラグインという形でさまざまなサービスをひとつのページに収めているが、これはまさに、今のデスクトップOSの役割そのものだ。 (ポータルサイトのカスタマイズサービス(MyYahoo!とか)も近いものがあるけど、完結してしまっているので、ちょっと違うかな)

そういう視点でこれからの動向を眺めたら、もうちょっといろいろなことが見えてくるかもしれない。

参考:


実行時にtemplateを切り替える

投稿者 nanki 2005-10-14 06:44:00 GMT

ユーザの権限などで、使用するテンプレートセットを変えたい場合、ActionController の中で、

class ApplicationController < ActionController::Base
  before_filter :authorize

  private
  def authorize
    return unless @member.guest?
    template_root = "#{RAILS_ROOT}/app/views/guest/"
    @template.base_path = template_root
  end
end

とやればいいみたい。

参考:

changing your ActionController template_root per request


街区レベル位置参照情報

投稿者 nanki 2005-10-11 02:09:00 GMT

今更ながら、このデータでまじめに遊びだした。

街区レベル位置参照情報

ざっと眺めてみると、1.5GBほどあり、表記揺れもあり、分け方も、都道府県、市区町村、それ以下という分け方なので、ちょっと使いにくいかも。

たとえば、「なんとか郡なんとか町」というデータも、郡と町で分かれてて欲しい気がするんだけど、つながってる。

実用上は、それでなくてもいいのだが、データの間違いを探すためにはその方が都合がよい。

とりあえず、市区町村の部分に関して、Google で検索して、件数が少ないものを見てみたが、さすがに間違いはないようだ。

しかし、その過程で、市町村合併に微妙に追いついてないことにも気がついた。

どうしたものか。


先頭から順番に、次に来ることを期待する候補を絞って、さらに例外的を数個リストアップしておく、という方法で比較的精度の高い結果が得られた。

なんか、ちゃんとやるとIME みたいなのができそうだからやめておこう。