2003-06-23

_ [work] 時間切れ

これ以上なく時間切れ。 私は何をやっているのか。

_ [prog] libimg-thumbnail-ruby

動くところまでいった。

_ [prog][ruby] コンストラクタの中でインスタンスメソッドを呼ぶ方法

new が終わっていないから、レシーバになるはずの self が存在しないせいで 出来ないものだとばかり思っていたら

__send__("method")

で良いらしい。

でも理由が分からない……。タイミングの問題なのか??

_ [prog][ruby] もう少し機能のあるアクセサを書くにはどうしたら

ruby は attr_* で簡単にアクセサを書くことが出来るけど、 これにもう少し機能を足したい場合はどうしたら良いのだろう。

class Foo
@@bar = "bar"
def initialize
  @bar = nil
end
end

例えばこんなクラスで、同名のクラス変数があり、 かつインスタンス変数が nil ならばクラス変数の値を返す読み込み用関数と、 普通にインスタンス変数に書き込むための関数が欲しい。

一つずつ書けば

def bar; @bar == nil ? @@bar : @bar; end
def bar=(v); @bar = v; end

こういう風(書き込みは attr_writer そのまま)なのだが、 変数全部にちまちま書いてられない。

perl の様に未定義全部を引き受ける関数みたいなものは書けないようだし。 class_eval (instance_eval?) を使うのかね?

やすい師から「例外をあげて……」というヒントみたいなのを前にちょっと 聞いたけれど考えても分からない……

_ [misc] アンテナをつける

適当に動かしてみた。確かに便利だ。 URL に更新時間の(?) query strig をくっつけてくれるから、 ブラウザの機能で辿ったかどうかすぐ分かる(色が変わるから)というのが良いね。

_ [comp] ImageMagick で大きな png を保存しようとすると buffer error

sugi@tempest:~% convert -version

Version: ImageMagick 5.5.7 06/10/03 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 2003 ImageMagick Studio LLC
sugi@tempest:~% ll /usr/lib/libpng12.so.0
lrwxrwxrwx    1 root     root           19 2003-06-16 14:55 /usr/lib/libpng12.so.0 -> libpng12.so.0.1.2.5
sugi@tempest:~% convert ~/data/photo/dcim/100casio/cimg0001.jpg tmp.png
convert: buffer error (tmp.png).

何故か在る程度の大きさになると、パレットモードにしてやらないとちゃんと書けない模様。 libpng の問題なのかな?

"-type Palette" をつければ書ける(元画像が TrueColor なら減色されるけど)。 まあとりあえずこれで回避するか。

_ [comp] それは確かに。実際にそれがサーバ側にリクエストされてしまいますし。

それは確かに。実際にそれがサーバ側にリクエストされてしまいますし。

というわけで迷惑にならない様にいじってみる。 しかし、個人的に UA 側の既読判定が便利すぎるのでこれは外したくない。 ちょっとだけ悩んで 「#dummystr日付」 とかにしてみました。 あんまり変わってないけど 「?」 よりはましだろうと……

_ [prog][ruby] 本当にありがとうございます。

本当にありがとうございます。

む。なるほど、 Module にメソッドを足せばいいのですか。 おまけに module_eval の意味を勘違いしていた模様……

とりあえずこれを使って少し書き直しに挑戦。

_ [misc] つくりものじさん復活

うーん。幸せ。

しかし病気だったとは。お大事に……

コメント (3)

tach
?????ƥʤκǸ??ˤĤ?????????פȤ????ΤϤ??ޤ??????????ޤ??󡥤äƼºݤˤϤ????? URL ?Ϥʤ??櫓?????????˥??????????????ΤϤ??äȤ????ʤ???
MoonWolf
?????ʴ????Ǥ??礦???? class Module private def my_attr_accessor(*symbols) symbols.each {|symbol| module_eval(<<-EOS) def #{symbol}; @#{symbol} == nil ? @@#{symbol} : @#{symbol}; end def #{symbol}=(v); @#{symbol} = v; end EOS } end end class Foo @@bar = "bar" def initialize @bar = nil end my_attr_accessor :bar end
????
?ϤƤʥ????ƥʤߤ????ˡ??????쥯?Ȥ???CGI???Ѱդ??ơ????????̤??ΤϤɤ??Ǥ??礦????