フォーチュンサモナーズ
最新 追記

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2006-02-08 この日を編集

_ [Ruby] Ruby 製ウェブアプリ このエントリーを含むブックマーク

ふと気になってRuby 製ウェブアプリをリストアップしています。ぱっと思いつくのってあまりないものですねえ。しかし、Wiki クローンが多いですね。引き続きちまちま追加していきます。


2006-02-10 この日を編集

_ [Rails] 仕事で使ってみた このエントリーを含むブックマーク

といいつつ rails を仕事で運用する予定はなかったりしますが。ま、プライベートで使っているアプリに使ってみようと思います。

といっていたわけですが、こっそり仕事で使ってみました。場合によっては道具を選べるのはうちの会社の良い点かもしれません……

素の CGI で書いても数十行でできるような小さなプログラムですけども勉強がてら。本当は SwitchTower でデプロイ自動化してバグ修正が楽々な環境を構築したかったのですが、ssh/svn を開発/サービス環境間で使えないため断念しました。

感心したのが page cache です。単純な仕組みながら効果的。サービスを提供する際にまず第一に負荷を気にするため(今回のアプリでは全然気にするものではありませんでしたが)、「静的に生成するか動的に生成するか」が設計の分かれ道だったりします。cache のおかげで、とりあえずどのページも同様に作っておいて静的で構わない部分だけ後から cache を適用することができて楽ですね。

もっと大規模なウェブアプリを rails で作ってみたいですね。これはやはり趣味でかな。


2006-02-11 この日を編集

_ [Ruby] yarv ってどのくらい完成しているのでしょう このエントリーを含むブックマーク

さて、なんとも信じられないことに、YARV で open-uri が動いた。

おおっと反応しつつ、でもまだ実用レベルではないと思ってみたりもします。そんな興味は持っているものの ML に参加したりせずお客さんな立場の私としては、「ruby1.9 を使うくらいの気持ちで使えるのはいつだろうか」が気になります。

もちろん実用レベルになるのはいつかなんてわからないと思いますが、何らかの指針があるとわくわくして待てるのになと思います(待ってるだけかい)。例えば GNU 版 Java 実装の GCJ には GCJ Status があって、どの程度の実装が完了しているかが把握できます。

言語のコア部分の実装の完成度は、(GCJ Status のような) API の実装の完成度のように分りやすく示すことは難しいと思います。が、yarv 開発の動きをより見えるようにすれば、より周囲から反応を得られるようになるのではと思います。

うーん。読み返してみると、勝手な言い草な気がしてきた。すみません。

2006/02/13 追記

YARV daily build

http://i.loveruby.net/autobuild/yarv/

現時点で YARV には Ruby の test/ruby + rubicon の一部 + 自前テストが入っていて、 Ruby の仕様はほぼすべてカバーしてます。つまり、このグラフの赤色・黄色がなくなればほぼ Ruby 1.9 に追い付いたことになります。

なるほど。ありがとうございます。おお、何気にほとんど青ですね。


2006-02-13 この日を編集

_ [Ruby] Tropy in Ruby このエントリーを含むブックマーク

Rubyに移植したTropyのスクリプトを公開

Rubyに移植したTropyのスクリプト(Tropy in Ruby)を公開します。

わーい。結城さんが Ruby プログラムを書いてる。せっかくですので、TODO にあるうちの Refine Database class を少しお手伝いします。Tropy::Database に対して以下の書き換えをしました。

  • self[:index] を初期化して random_id, create_id, add_id, delete_id を簡潔に
  • PStore のキーに文字列の代わりにシンボルを使う(趣味)
    def initialize(file)
      super
      transaction do
        self[:index] ||= []
      end
    end
 
    def random_id
      transaction do
        self[:index][rand(self[:index].length)]
      end
    end
 
    def create_id
      sprintf('%08d', rand(10 ** 8))
    end
 
    def add_id(id)
      self[:index] << id if unique?(id)
    end
 
    def delete_id(id)
      self[:index].delete(id)
    end
 
    def unique?(id)
      not self[:index].index(id)
    end

簡潔といいつつ random_id が読みにくいですね。


2006-02-17 この日を編集

_ [yarv] rails を動かしたい このエントリーを含むブックマーク

rails と yarv という Ruby 界の二大キラーが競演できたら素晴らしかろうと、動作の確認をちょっとしてみました。rails の手前の rubygems で落ちました。とりえあず再現する最小のコードをメモっておきます。

./miniruby -e '
> loop do
>   begin
>     {}
>   ensure
>     noop = nil
>   end
> end
> '
DBG> : noop
DBG> : ":0:in `initialize'"
DBG> : ":0:in `initialize'"
-- stack frame ------------
0x2ad4a008 (0000): 00000001
0x2ad4a00c (0001): 00000001
0x2ad4a010 (0002): 00000001 <- lfp <- dfp
-- control frame ----------
c:0004 p:-001 s:0003 b:0003 l:0002 d:0002 CFUNC  i:initialize s:         -  
c:0003 p:-001 s:0002 b:0002 l:0001 d:0001 CFUNC  i:initialize s:         -  
c:0002 p:-001 s:0001 b:0001 l:0000 d:0000 CFUNC  i:initialize s:         -  
c:0001 p:-001 s:0000 b:-001 l:0000 d:0000 ------ i:-        s:         -  
---------------------------
[BUG] NODE_DASGN_CURR, but lv == 1 (line: 6)
ruby 1.9.0 (2006-02-14) [i686-linux]
 
アボートしました
本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ だて [そうですね。ML に参加したいと思います。と思ったら atdot.net に繋がらないようですので、後ほど。。。]

_ だて [む。時刻がまたずれてる。]

_ ささだ [なんか学科のネットワークが落ちてるらしく。 とりあえずパッチです。 === compile.c ========..]

_ だて [最小コードではちゃんと動くようになりました。あとでrubygemsでも試してみます。次から報告はMLにしますね。]


2006-02-20 この日を編集

_ [yarv] rails on yarv このエントリーを含むブックマーク

Rails on YARV (10)

動いちゃったよ……。

青木さんが YARV で rails を動かしたみたいです。すばらしい。

自分はというと、まだ rubygems で詰まってたり。


2006-02-21 この日を編集

_ [yarv] Language Shootout このエントリーを含むブックマーク

ruby2.0 の VM 予定である YARV の完成度が高まっており、rails が動作したとの報告もあります。

YARV 0.3.0 がリリースされたときに引き続いて、Computer Language Shootout のいくつかのベンチマークプログラムについて、以下の処理系で time をとってみました。

Linux version 2.4.26-gentoo-r9
$ ruby18 -v
ruby 1.8.4 (2005-12-24) [i686-linux]
$ ./yarv -v
ruby 1.9.0 (2006-02-14) [i686-linux]
YARVCore 0.3.3 (rev: 453) [opts: ]
$ ./yarv-opt -v
ruby 1.9.0 (2006-02-14) [i686-linux]
YARVCore 0.3.3 (rev: 453) [opts: [direct threaded code] [optimize basic operation] [stack caching] [operands unification] [instructions unification] [inline method cache] [block inlining] ]
$ perl -v
This is perl, v5.8.7 built for i686-linux

コンパイルオプションはどれも CFLAGS="-O2 -march=athlon-xp -pipe -fomit-frame-pointer" です。

では早速結果を。一番速かったものを赤字にしています。

処理系 binarytrees mandelbrot nsieve nsieve-bits nbody fannkuch
ruby 1.8.4 346.398s 1.00 109.203s 1.00 80.918s 1.00 180.942s 1.00 460.031s 1.00 359.573s 1.00
YARV rev453 220.196s 0.64 61.439s 0.56 39.964s 0.49 69.387s 0.38 239.649s 0.52 299.175s 0.83
YARV rev453(最適化) 502.971s 1.45 32.127s 0.29 32.562s 0.40 56.513s 0.31 234.752s 0.51 268.312s 0.75
perl 5.8.7 333.649s 0.96 32.653s 0.30 48.932s 0.60 40.589s 0.22 328.495s 0.71 281.067s 0.78

最適化オプションをたっぷりつけた YARV ですと binarytrees が遅くなるという現象がありましたが、perl といい勝負になっていますね(というかうちの環境だと perl が遅い?)。

本日のツッコミ(全2件) [ツッコミを入れる]

_ ささだ [おお,すばらしい>評価 stack caching はでかいプログラムでは切っておいたほうがいいかも.この辺はちょ..]

_ だて [ふむふむ。今度はstack caching切って試してみます。 コミットですか?Shootoutのコードを実行してる..]


最近のコメント:

  1. だて (02-23)
  2. ささだ (02-22)
  3. だて (02-20)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).