その日あった事ダス第216週
◇ 久々に家の手伝いで田んぼに連れて行かれる。今日のお仕事は鴨よけの網を張ること。鴨が食うんですよ。レンコンを。生なんてあくが強くて食えた代物じゃないと思うのだが(ぉ
田んぼのあぜ道を通ると、そこに4匹の鴨(の変わり果てた姿)が。まともな形の鴨ははじめて見た(この時期に田んぼ行かないもん)。くちばしが鴨ですよ! ホントにあんなくちばししてますよ! でもなんであぜに? と聞いたらカラスが引っ張ってくるらしい。よく見たら田んぼにも数匹浮いてたり。なるほど。
ちなみに網を張りにきたのに既に死んでるのは何故という質問にはノーコメントで(汗; 猟師さんが鉄砲で売ってくれたわけではないとだけ言っておきます。
…いや、そういう方法ばっかりを取るわけにはいかないので網なのですよ(苦笑
午前中で作業は終わったけど、肩が痛い^^;
◇ 歌月十夜。怪しいルートはひたすら避けてルート埋め。さすがに途中で苦痛になってきたので設定で読んだテキストはスキップにしたり。ほとんどのルートは埋めたと思うけど、組み合わせによってはまだ抜けているところがあるんだろうなぁ。ここまでやれば許してくれるだろう<?
◇ PhantomDVD 起動。うちの環境は WinDVD3.0。…ソフトウエア DVD プレイヤでやってるとできの悪い PC ゲームをやってるような気になる。選択肢もマウスで選択できるし。普通の DVD プレイヤ持ってない人には買う価値はほとんどないかと:-)
んで本編。老ルシオ暗殺まで。いや、反転アイン(誤認)までは見たかったので。最初からぶっ通しで2時間半。…まだ 1/4 ぐらいだっけ?(汗; 個人的にはキャルが出てくるぐらいまですっとばしても良いのだけど(ぉ
◇ キングスフィールド。ようやく5層へ。うお、一気に難易度上昇。魔法どんどん食らってます。必要最低限だけ倒して先に進むのが吉なのかな。ちょこっと進んで魔法が切れた頃に一旦離脱。4層に戻って金ためて竜王草の実を買いこんで再挑戦中。
◇ 歌月十夜。本編の方はようやく終了。長かった。時間はそれほどではなかったかもしれないけど、気分的に長かった。なるほど、そういうことね、と思った事以外はさして語るものなしかも。シエル先輩と琥珀さんの扱いがどんどんアレになっていくのう。いや、翡翠以外みんなアレか。ま、お祭りディスクだし。
ついで夢十夜。ああ、こっちの方が方向性が明確で楽しいかも。悔しいのはななこちゃん。気が付いてしかるべきなのにアノヒトがでてくるまで分かってなかったよ。くぅ。上から6つ目まで読んだ。
◇ 土曜日に神戸市長選の事を書いたのでちょろっと。結果は思ったとおりになったらしい。神戸市民じゃないから関心がなくて、誰が出馬してるのか知らなかったのだけど、なんだこんなに候補者いたのか。投票率の低さが泣けるね。
◇
ちょこちょこと PhantomDVD のパスワードを見かけたので途中で疲れたら参照するようにしよう(ぉぃ
しかし、ながら作業でするにも適当なものがない。もともと頭がシングルタスクだったりするし。プログラム組みながらだと没頭して気が付けば選択肢まで、なんてことも十分ありうるしなぁ。ゲームしながらだとテレビが埋まる。本も無理だろ。むー。
◇
ADSL 回線が調子悪いからメーラを落としてくれという謎の通達が社内に。何故メーラ。メーラがアクセスするのは社内のメールサーバなんだから関係ないのでわ。
というか、OCN エコノミーと ADSL の2回線あるんだから、ルータで制御して各ユーザが何も意識しないで済むようにすればいいのに。できるんだから。ADSL 導入する際にいろいろ進言したんだけど「(私の本職の方が忙しいから)作業できないでしょ?」との理由でことごとく却下くらったし。私よりもネットワーク詳しい人はみんな社外だし。なんや不安やなぁ。
◇
鼻水が。なんか首も痛いし。肩が凝ってるんだろうな。マッサージにでも行きたい気分。あと眠い。誰か膝枕して…。
今までの積み重ねのおかげで「風邪を引くと4日は休む」と認識されている様子(汗; 夏冬問わず、年に1回ぐらいのペースでそうなってるからなぁ。昨日の夜、むちゃくちゃ寒い中をチャリでしゃこしゃこ 30 分かけて帰ったのがまずかったんだろう。
◇ どうしようもない時ほど現実逃避したくなるもので(ぉぃ
今日のお題は「メソッドの引数の型チェック」。ruby-list だか ruby-dev だかでちょろっと話に出たやつ。とりあえずこんな感じ。
class Object def self.method_added(name) if caller(0).delete_if{|d| !(d =~ /\`method_added'/)}.size < 2 then if self._argument_check_methods.include? name then self._argument_check_method_alias_create(name) end end end
def self._argument_check_method_alias_create(name) class_eval <<METHOD alias :#{name}_original :#{name} alias :#{name} :#{name}_with_argument_check METHOD end
def self._argument_check_methods [] end end
class Module def argument_check(*args) if args.size > 1 then name = args.shift
ary = module_eval{self._argument_check_methods} << name module_eval("def self._argument_check_methods; #{ary.inspect}; end") args_string = args.map{|m| m.keys[0]}.join(",") code_string = args.map{|m| key = m.keys[0] unless m[key].nil? then format("raise ArgumentError,\"required not \#{#{key}.class} but #{m[key]}\" unless #{key}.kind_of? #{m[key]}\n") else "" end }.join module_eval <<METHOD def #{name}_with_argument_check(#{args_string}) #{code_string} #{name}_original(#{args_string}) end METHOD end end end
class Foo argument_check :initialize,{:arg=>String} def initialize(arg) end end
Foo::new("hoge") # => #<Foo:0x80f6340> Foo::new(1) # => (eval):2:in `initialize_with_argument_check': required not Fixnum but String (ArgumentError)
ちなみに試しに作ったので、引数の名前や数のチェックはしてないわ、クラスメソッドには対応してないわ、public/private/protected の区別がないわ、argument_check は def よりも前に書かないといけないわ、問題点はたくさん。
あと、argument_check の引数が Hash なのは単に見た目の問題。見た目重要。しかし引数は順番も意味があるので、サイズ1の Hash がずらずらと並ぶことになります(汗;
◇ …ん? 見た目重要ならもしかして以下の様にできるとうれしいかも? (書く方が)かなり面倒ではあるけど。
class Foo argument_check <<CHECK initialize(arg1,arg2) arg1 is Integer arg2 is String (default="") CHECK
def initialize(arg1,arg2) end end
こういう指定ができるようにすれば、ソースを scan(/argument_check <<(\w+).*?[\r\n]+((?:.*[\r\n]+)+?)\1/){ puts $2 } で型宣言だけ抽出できるな。
◇ しかしここ最近作るスクリプトって eval 使いまくりやな(汗;
◇ 変な改行が入ってたのと日本語が変だったのを修正(苦笑
◇ いやま、私の昨日スクリプトはかなり思いつきで組んでるし^^; まあ、容易にメソッドの引数の型チェックを分離できるところが利点かな。例えば、こんな感じ。
check.rb -------- class Foo argument_check :fufu,{:niya=>String} end
foo.rb -------- require 'check' if $DEBUG
class Foo def fufu(niya) end end
でも実際のところは amstd/must.rb 的なアプローチに「飽きた」というのが正解かな。
◇ ヲレアンテナを sidebar に追加する為のページ。sidebar 用のスクリプトは今改良中なので見た目がいろいろと変わるかもしれません。
そういや IE6 にはベータ版にはあったパーソナルバーがなくなってるのね。なんでだろう?
◇ ↑もしかしたら先にヲレアンテナでユーザー登録してブラウザに cookie 食わせとかないと応答返ってこないかも。cookie 使えない人のために mod_rewrite とか使えるようにしとくべきかな。いろいろと sidebar で実験したいものだ。
◇ …ってもうこんな時間かい。寝なければ。
◇ そうそう、先ほど NN6.2(J) をフルインストールしたら、残りダウンロード時間がマイナスになると現象が発生しましたよ! 残り時間がアテにならないのはよくあることだけど、マイナスは見たことなかったかも。って単にサイズ計算間違いなんだろうけど。
◇ ↑そういや Windows2000 でもファイルコピーの残り時間が急に爆発することがあったのだが、もしかしてコレも同じ原因? 内部では signed で計算して、画面に出す時に unsigned で扱ってるとか。
◇ 寝坊(汗; 起きたら 10時過ぎてましたよ。一昨日に遅くまで仕事してたのが響いたなぁ。急いで出社。
◇ sidebar 用のページに再読込機能というか自分自身へのリンクが欲しいかも>ぐっさー ボタン一発で更新できるから。
◇ 間違って日記のデータがあるディレクトリで rm * なんてしてしまって大汗。まあ、データは2重化しているのですぐに復帰できたが、うかつすぎ。
◇
Ruby 本が大川出版賞受賞だそうな。
…って今ごろ? これって最初の ruby 本だよね。
◇ 夕方の会社の掃除で腰をいわしてしまったらしい。まだ痛い。運動不足やなぁ。
◇
なんか zangband の話題が多いので、試しに落としてきて NetBSD なマシン上でコンパイル。日本語化パッチが 404 なのでそのまま。あ、デフォルトだと X 有効なのか、と makefile.std を書き換えてコンパイル。そして実行。なんだこの遅さは。Pentium100程度のマシンじゃ力不足? カーソルがあちこち飛び回る。うーん。
なら hengband を試してみようと落としてくる。おお、こっちは autoconf 使ってるやん。./configure して make…ありま、コンパイル通らん。X 周りっぽい。はて、無効にするにはどうすれば。--without-x しても同じだった。ううむ。
って、こんなことしてるから帰れないんだよな(苦笑
◇
起きたら左肩が上がらなくなってた。何があったんだ?(汗;
珍しく家にいた母親が「(日曜日に)網張ったからちゃうん?」と言ってたが、日曜日っていつの話だよ…。運動不足、ここに極まれリってか。
◇ 昨日の hengband のコンパイルが通らなかったのは curses 周りの様子。curses ってあんまり良く知らないんだけど、z-config.h,h-config.h,autoconf 辺りを見ると何か分かるかな…。
◇ とりあえず起動したらしい:-)
◇ ↑ってコンパイル通らなかった3行をちこっと修正しただけ。一応 patch。./configure --without-x してるので、main-x11.c がコンパイル通るかは試してません。色も付きません。結局 curses のなんたるかを理解する前に終わってしまったので拍子抜け(ぉ
ついでに zangband にも同様の修正をしてみる。おお、curses 万歳。普通に遊べるようになりましたよ。昨日のヘンなのは、curses 使わずに自前で実装してて重たかったのか、TeraTerm の VT100 エミュレーションと相性が悪かったのか、まあ、その辺だろう。
◇ 次は ncurses 入れてみて、色が出るようにいじくってみようかしらん。出せるのかどうか知らないけど^^;
◇ curses でも色が出ますか。ありまちょうございます。…あ、pkgsrc がある(汗;
pkgsrc の patch-* を見て脱力。can_change_colors ですか…何故にそんな微妙に違う名前を…。
◇ とりあえず自前でパッチ当ててバイナリを作成。ありま、^r が効かない(ように見える)。同じ環境で -DUSE_NCURSES すると効く(ように見える)。結構頻繁に文字化けしてるんで ^r ないととても困る。しかしなんで文字化けするんだろう。ちょこっとソース追いかけてみたけど分からんかった。
◇ そんな感じでもう 10 回近く死んでます(ぉ
◇ なんか hengband 三昧。といっても遊んでるわけじゃなくて…いや、私にとっては遊んでるも同然だけど。文字化けの調査をしてたり。やっぱし waddstr に渡している文字列はおかしくないので curses の問題かな。TeraTerm なので vt100 だし、うまく日本語(というか multi-byte 文字)が処理できてなさげ。1 バイト目が同じ場合に化けてる様子。IRC で質問しつつ、日本語書き込む前にスペースで一回埋めるとかすると、なんか違った化け方をし始めた。こっちは化ける条件が分からん。
そういえば z-term.c を見たらのっけに FIRST の文字があってちょっとウケた<何故
◇ うう、右腕がだるいぞ^^;
このページは基本的にリンクフリーです。