2006年 09月 26日

学校がなぜつまらないか

についてまた書こうと思ったけど、やっぱ友達いないのが最大原因なのでやめた。

$ ruby -pe 'gsub(/^.+;| .+$/,"")' ~/.zsh_history* | sort | uniq -c | sort -r | head -20
    249 cd
    229 lm # ls -altr
    211 svn
    165 vim
     95 sudo
     90 screen
     83 refe
     78 exit
     52 ps
     49 mv
     48 fg
     42 rm
     40 kill
     40 irssi
     27 ruby
     26 tiarra
     25 plagger
     23 hamachi
     23 cat
     22 .. # cd ..

SAVEHIST 確認したら 2000 しかとってなかった。増やした。

chokan

他のプラグインのメソッド呼べたらいいよなぁ。依存関係とかできちゃうけど

2006年 09月 25日

Ruby で CGI 書くとき

require "cgi" して簡単なのを書くときの指針がやっとできたのでメモ。

require "cgi"

class HogeCgiApplication
    def initialize(cgi, opt={})
        @cgi = cgi
    end
    
    def run
        # リクエストの応じて他のメソッドに飛ばす
        _, mode, rest = @cgi.path_info.to_s.split("/", 3)
        if mode && respond_to?(mode)
            send(mode, *rest)
        end
    end

    def view
        show(:param => "hoge")
    end

    def show(stash={})
        b = binding
        stash.each do |k, v|
            eval("#{k} = stash[:#{k}]", b)
        end

        template = File.read(@opt[:Template])
        self.class.class_eval { include ERB::Util }
        @cgi.out("type" => "text/html") { ERB.new(template).result(binding) }
        exit
    end
end

cgi = CGI.new
hoge = HogeCgiApplication(cgi)
hoge.run

セッション使ったりするので必ず cgi.out を使う。場合によっては cgi.out をオーバーライドしてうんぬんできる。

でもまぁフレームワーク使うならそれでいいんだろうなぁ。

自宅のは .rb なのは fcgi で動くようなラッパ書いて動かしてるけど……

http://lab.lowreal.net/trac/browser/c/cgi-wrapper 前に lowreal.net に書いたけど、エラーとかキャッチしてスタックトレース出すようにしたり。元のファイルを書き換えずにエラーハンドル追加できるので結構自分で使う分には便利に使ってたりする。CGI バージョンは今はたぶんちゃんと動いてないな。

daap

256kbps の mp3 を再生中だと 70KB/s ぐらいネットワーク受信がある。外からだと結構きつそう。

fcgi

のラッパ使って ruby cgi を動かしてると、require でロードされたスクリプトがずっと残るのでときどきハマる。一度 load に書き換えてあげたりして

小さいアプリケーションでもフレームワーク使った方がいいっていうのはすごく思う。だけど、例えば XREA で使おうとか思ったとき、Rails や Catalyst ぐらい巨大だと CGI 動作じゃ死にたくなる。
なんか K*NT 指向なんだけどさ!!

chokan のソース

今動いてるやつも少し前にインポートしたよ!
http://lab.lowreal.net/trac/browser/chokan/old/0.2

新しいの作ろうとしてるけど全然やってないよ!

深く

深く考えずにとりあえずコーディングしてみる、というのを実践してみた。「やった感」と「動いた感」はあるので楽しい。いっぽう、「無駄なことをいっぱいしているんじゃないか?」「設計がダサくないか?」と不安になる。
思うに、ひたすら経験な気がした。他のソースを読みまくって、「あーこういうケースで、あのすぱーはかーはああしていたなぁ」とか思い出すと、コード書いてるときにあんまり悩まないようになる、気がする。そうなりたい。が、どこまでモチベーション続くかは一生謎

新しいほう

http://lab.lowreal.net/trac/browser/chokan/trunk
ファイルの配置変えとかと、config の統一をやった。とりあえず動く、けど、既存プラグインを移植してない。
@s << notice() より、@chokan.notice() とかのほうがよさそう。そうすれば余計なインスタンス変数 (プラグインごとに設定してる) をなくせるかなぁ。

2006年 09月 24日

外出先 (というか学校 ) から DAAP が実用になるかやってみる。