83's

Top > Archives > 2007 > July

July 02, 2007

NilClass#method_missing #=> nil 16:36

思いつき。

if a and a.b
  ...
end

これ↑くらいならまだいいけど、nilかどうかチェックして次、みたいなの書くのが めんどくさくなってきたよ。代入があると特にそう思う。こんなのとか……。

if (neler = NiChanneler.find_by_name(user_name)) and neler.vipper?
  ...
end

あ、ActiveRecordな例なので補足しておくと、 find_by_name_and_vipperとは書けない(DBにvipper属性がない)ケースってことで。

次のようにしてみる。

class NilClass
  def method_missing(*args)
    nil
  end
end

これでnilvipper?って聞くと「は?(= nil)」と返してくるからこう書ける。

if NiChanneler.find_by_name(user_name).vipper?
  ...
end

ちょっと気持ち悪い。 けど、nilがNullObjectがわりになってると思えばまあわからなくもない。 ただRuby的にはダメなんだろうなぁ。基本的なクラスの中にこういう例外なやつがいるのは。

July 09, 2007

404のはずが200 00:09

lighttpdでmod_proxy使いつつserver.error-handler-404をコメントアウトし忘れてたんだけど、 その間404のはずのURLが200で返ってくるようになってた。

HTTP/1.x 200 OK
Status: 404 Not Found

こんな感じで返ってくる。 多分lighttpd forum - Proxy status code problemと 同じ症状。

Statusてのはlighttpd独自のなんだろうか……。

フューチャリスト宣言読んだ 21:42

借りて読んだ。

基本的にはネットの将来のわくわく感について。

ウェブ進化論では 確か向こう側(ネット)がその低コスト性のために社会を変えるぞ的なところに重点があったと思うけど、 今回読んだほうは人間寄りの話だったかな。 まあ対談という形のせいか、実際はいろんな話題に散ってるんだけど。

読み終わって思ったのは、ある事象が半ば偶然的に半ば必然的に起こるという不確実な性質に満ちた ネットにもっと飛び込んでいくべきなんだろうな、ってことかな。 ここでブログを書いていることで、それがきっかけになってたまたまあることが起こる。 それは今までも少ないけどあったし、これからもきっとある。 そしてそれがもしかしたらオレを変えていく。 でもネットだから、もっともっとそういうきっかけの発生率は上げられるぞ、と。 変われるってステキ。その可能性がまだ上がると思うとオラわくわくすっぞ。

本を返さないといけないので、個人的に覚えておきたいことをメモっておく。

  • 保守的なことを言う方が陳腐化する
  • 安易にスペシャリストを目指すと高速道路の渋滞にはまって差別化できなくなる(ヒント:俯瞰性)
  • リア充とネットに対する興味には負の相関がある。ネットではニート、ひきこもりが有利!?(・∀・)ずっとオレのターン!
  • 弱点・コンプレックスはチャンス(乗り越えたときにでかいよ)

就活は終わったけど、今後大学浪人の期間を言われたら「ギャップイヤーです」って言おw

そう言えばこれ読んで日本が少し嫌いになったよ……。

フューチャリスト宣言
梅田 望夫 茂木 健一郎
筑摩書房 (2007/05/08)
売り上げランキング: 228
おすすめ度の平均: 4.0
5 読後感が気持ちいい!
5 ューチャリスト同盟に参加
3 梅田さんが気になる方は読むことをお勧めします

July 12, 2007

:shared => true 00:56

またRSpecから離れてた。なかなか触れてない……。

共通のbeforeの抜き出しにはこの前みたいにこざかしいことしなくても :shared => true使って

describe 'setup', :shared => true do
  before do
    @a = 3
  end
end

describe 'aaa' do
  it_should_behave_like 'setup'

  before do
    @b = 4
  end

  it 'a' do
    @a.should == 3
    @b.should == 4
  end
end

describe 'bbb' do
  it_should_behave_like 'setup'

  it 'a' do
    @a.should == 3
    @b.should be_nil
  end
end

でいいのか。itしかshareできないと勝手に思ってた。英語読めてない証拠……。 あとセンスが足りない。

July 23, 2007

lighttpdのluaサポートつきコンパイル 22:08

忘れるのでメモ。

./configure --with-lua=lua5.1 --with-memcache
make
make install

よく以下のように載ってるんだけど、

./configure --with-lua --with-memcache

ubuntuでやってたらエラーになった(2回目)。

checking if lua-support is requested... yes
checking for LUA... configure: error: Package requirements (lua >= 5.1) were not met:

No package 'lua' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LUA_CFLAGS
and LUA_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

このへんの仕組みはわかってないなぁ。