2006年 09月 27日

思考の継続

思考の Continuation が欲しい。何か用事があったりしたときに、オブジェクト化して保存しておいて、終わったらそれを呼びなおす。

アクリルの立方体みたいなのにぐにゅぐにゅとした継続が入ってる。今の気持ちとか、考えてることがそのままその立方体に入ってて、あとで取り出せる。

なんかせっぱ詰まってると「あああれがやりたい」って思うけど、終わってからだと気が抜けて完璧にやる気がなくなってる。継続保存ができるなら、それをとめておいて継続できるのになぁ、って、駅を歩きながら少し前に考えた。


あと、思考のバージョン管理がしたい。思考というか、自分全体をリポジトリに突っ込んで管理したい。つまり過去の状態にいつでも戻れるという前提があるならば、変化も楽だよねというアレなんじゃないんですか? って、誰に聞いているの?

モチ

学校の授業で「モチベーションが足りないだけ」みたいな感じのセリフをよく聞くのだけれど、ホントに一番問題なのはモチベーションが足りないことなのだから、そのセリフって意味がないよなってよく考える。(そう言ってる本人でさえ「やる気があればできるはず」と言っているし、それってすなわち「やる気がでないこと」が一番問題じゃないんだろうかと)

モチベーションを保つのってめちゃくちゃ難しいことだと思うし、特に人から「やれよ」といわれてやることに対してのモチベーションなんて、二日持てばいいほうなんじゃないのかなぁと個人的に思う。

じゃあどうやってやる気を出させるか、がアレなんだけど、自分でさえそれがわからないのだからこれ考えるのって難しいよなぁ、なんても思うから、「やる気ないだけ」に逃げるのもわからないでもなかったりするけど、一つだけ言えるのは、山を越えてない人間に安易な批判をしても、やる気を殺ぐだけで次のものは生まれないよねってこと、だと、おもう、よ。


といっても、他の真面目な人や、大学教員なんかは、ホントはもっと違うのかもしれないけど。例えば同じグループワークの人とかは、あんまり乗り気でないことを乗り気に変換させてるし、すごすぎる。ホントに無理だ。

どうやってモチベーションのサイクルを作ってるのかが全然わからない。

section + push_if_first

  my ($pkg, $path, $fn, $story_ref, $title_ref, $body_ref) = @_;
  return unless $$story_ref;

section が push_if_first より前に動いていることを前提にして、上のを story に付け加えた。

あ、push_if_first 側にいれました。素で書いてなかった。section が隠すエントリの $$story_ref を削除するので、それを見て if_first さんがしかとするように
そういえば filter でエントリ削除らないと、一日に何回も書いたとき paging 効きそうな予感。試してないけどうーん。結構めんどい

あと back_and_forth 相当の機能をつけないとなぁ。

svk

そういえば darwinport で入れた。途中で失敗するけど、あきらめずに port install し続けたら入った。

open-uri

思うところあって open-uri を使うように変えてる。Net::HTTP も慣れちゃったんだけど、毎回 URI(uri) して uri.host やったりするのはやっぱりめんどいよねって思った。

二本指スクロールと右クリックは、全部のトラックパッドに装備すべきだ。。

Catalyst

Catalyst server は動いてるのに、create すると @INC に Catalyst::Helper がないって言われる。cpan -i しても既に入ってるし、謎sg

svk 入れたときに perl5.8.8 が入ったせい? /usr/bin/perl は 5.8.6

あ、そうか create.pl の shebang が /usr/bin/perl になってて、そっち読んでるんだ。消して symlink にしてしまおう。

$ sudo rm /usr/bin/perl
$ sudo ln -s /opt/local/bin/perl /usr/bin/perl

あ、これじゃだめだ。server が動かなくなる。/opt/local/lib を読んじゃう。cpan はどっちにインストールしてんだ。。。

いやいいんだ。/opt/local を読ませるようにする。perl5.8.8 が入ったときに cpan も置き換わってる。/Library/Perl/5.8.6 は消してもいいのかな。

でもなんか、port install perl とかやっても、そんなパッケージないって言われるのはなんだろう。

auto_cd

全然使わないなぁと思いきや .. で上のディレクトリは使う、と思いきや、.. は alias だったので本気で auto_cd 使ってないことを改めて思った。なんなんだ

chokan

今の実装だと plugin の実行順番は完全に不定 (Hash 使ってるし、Thread 内で起動してるし)
これだと「このプラグインを実行したあとは他のプラグインを起動しない」みたいなのが作れない。うーん。

vim

そういえば vim って「○」とか「☆」とかの幅がおかしいけど、直す方法ってあるんだろうか。。

set ambiwidth=double

らしい。うーん

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() とかのほうがよさそう。そうすれば余計なインスタンス変数 (プラグインごとに設定してる) をなくせるかなぁ。