Diary of Sacred Fox - May, 2009

The Quintetには通算 179068 人(今日:0, 昨日:1)のお客様が来場しています

2009/05/02(1)

ひきこもりウィーク

5日中玄関を出るのは何日だろうか
どこか連れてってくれる人を募集中です

2009/05/02(2)

定額給付金

気づいたら入っていた
が, 同じ日にその10倍を優に超える額の年金保険料を持ってかれているので全く実感が無いのです

2009/05/04

なにがしたいんだか

スパムフィルタをすり抜けてきたspamが来たので, ソースだけを表示してみた
All contents of this email are protected by US copyright lawみたいな事が書いてあった, spamのくせに生意気である
問題は, このメールの送信者が詐称されて私自身になっている件, 私は誰の著作権を守ればいいのだろうか

2009/05/05(1)

perlのAutoLoader, AutoSplitを使ってみる

自作Perlモジュールで, 常に全体をコンパイルするのは勿体無いという人用, ある種のJIT的な動作になる
使うには以下のようにコードを変更する

  1. use AutoLoader qw(AUTOLOAD); する
  2. 自動ロードの対象にする関数群をソースの一番下に移動する
  3. 自動ロードする関数群の直前におもむろに __END__ を置く, これでこれらはモジュールのロード時には読み込まれなくなる
    当然 __END__ の直前には1;と書いてモジュールが読めるようにしておくこと
  4. AutoSplitでコメントアウトした関数定義をAutoLoaderが読めるように別ファイルに書き出す, デフォルトルールに以下の内容を書いたMakefileを置いておくといいかも
    find . -name \*.pm -print0 | xargs -0 -I_ perl -MAutoSplit -e 'autosplit q(_), q(auto);'

これで任意の関数をモジュール本体から分離できる
存在しない関数名を叩いたときのエラーがAutoLoaderのものになるが, それ以外は普通に使えるはずである
以下, tipsと注意点

  • Sacred Fox: 下のほうに書いたけど, SelfLoaderのほうが便利である (05/05 15:46)

2009/05/05(2)

perlでプラグイン機構的なものを作る

まぁやり方はこれがperlのperlたる所以色々あるだろうけど, 以下に一例

use strict;
use warnings;
# 引数: モジュール名
# 返値: モジュール名 or 空リスト(失敗時)
sub load_module($) {
  my $mod = shift;
  return eval "require $mod;" ? $mod : ();
}
# 引数: モジュール名のプレフィックス
# 返値: モジュール名のリスト
sub load_modules($) {
  my $modprefix = shift;
  my @modlist;
  (my $moddir = $modprefix) =~ s/::/\//g;
  opendir my($dir), $moddir;
  foreach my $mod (readdir $dir) {
    next unless $mod =~ s/^(.+)\.pm$/${modprefix}::$1/;
    push @modlist, load_module $mod;
  }
  closedir $dir;
  return @modlist;
}
# 実行例
foreach my $mod (load_modules 'plugins') {
  print $mod->name(), "\n";
}

こんな感じで後はモジュール名についてforeachまわしたりとか, ロード時にinit()でコールバックを登録させるようにしたりとか, 好きに出来そうである

2009/05/05(3)

perlのSelfLoaderを使ってみる

s/AutoLoader qw(AUTOLOAD)/SelfLoader/; s/__END__/__DATA__/;
AutoSplit呼ぶ必要もないし, こっちのほうが便利そうである
デバッグ時に __DATA__ をコメントアウトする手法は問題なく使える, 末尾にダミーの __END__ や __DATA__ も要らないみたいである
なんで最初からこっちを使わなかったんだろうか… > 昨晩の自分
当然だけど __DATA__ を使うプログラムでは読む順番とかに気をつけないとひどい目に遭うはず
…けど, そんなものを使おうと思ったことは今まで1度も無いからいいや

また, AutoLoaderと違ってサブルーチンスタブは生成してくれないので, 引数チェックを行いたければ SelfLoader->load_stubs(); を __DATA__ の前においておく必要がある模様, これをやるとデバッグ時にもダミーの __DATA__ が要るみたいである
…でも, これも use strict や use warnings みたいにデバッグ中だけ有効ならそれで十分な代物かもしれない
ただし, 継承とかを使う場合は必須らしい

AutoLoaderとの性能面での得失は perldoc SelfLoader に書いてあるが, 以下の通り

2009/05/06

連休お出かけ記録

今日外に出ることもなさそうなので, もうまとめておくか
5連休中, 外出した日は3日, 我ながら良い成績である
なお, 外出の定義は, 住んでいるアパートの共有部分から外に出る扉をくぐることとし, 郵便物のチェックは含まない, この定義ではごみ捨ては含まれるが連休中に該当する日は無いので気にしない
ちなみに3日とも買い物, うち1日は近所のコンビニなんだけどね

2009/05/08

ばぐばぐ

スクリプトにバグを埋め込んだ所為で, 昨日一日アンテナが機能してなかった模様
ご迷惑をおかけしました

2009/05/09

光延期

フレッツ光のマンション用装置の設置場所が間違っていたらしく, 工事延期
なんで最初に確認しておかないのかなぁ

2009/05/11

寝付けない

この時間なのに室内温度が27度とか
早々にノーマットの詰め替えボトルを調達せねば

2009/05/12

誕生日を祝え!

と, 大々的に言う事の是非について

注意: 別に今日が狐の誕生日というわけじゃないです, あしからず

わざわざ祝えと言うのか厚かましいと考える向きもあるかと思われるが, 私はむしろありじゃないかなと思うのです
誕生日は基本的には祝われればうれしいものの, 誕生日を知らない人はという疑問や, 重複とかの問題は無視, まぁ無視できるほどにしか知人が居ないのですが知人の数だけある誕生日をすべて憶えておくことは私には出来ない
数日前に偶然mixiのカレンダーなどの媒体で誰かの誕生日を見つけたりすると, 祝わなければなという気持ちにはなるけど, 次に気づくのは誕生日の1週間後だったりすることなどざらにあるわけで…
あとはこの年になると特に女性に対しておめでとうと言って喜ばれるかが完全に未知数となる問題, 心配するほど嫌がる人は居ないといわれてますが, 地雷は踏みたくないのです
ということで, 狐は祝えといわれれば喜んで誕生日をお祝いしますが, 言われなければスルーしてしまうのは単にきっかけが無かったからなだけです
ということで, 本日誕生日な某氏および来週誕生日な某嬢, 某氏, 再来週誕生日な某氏にはここでまとめておめでとうと言っておきます
…しかし, そういう観点で考えた時に誕生日の前後6ヶ月はプレゼントを受け付けていますという某氏の発言には有り難味を一切感じないんだよなぁ, とか言ってみる

  • Sacred Fox: コメント機能が故障してた模様です, 直しました 報告ありがとうございます > 6ヶ月の人 (05/13 01:33)
  • 晴香: その某嬢はアタシじゃないとは思いますが、今日誕生日です。やっと20になりました!!(←成長してない) (05/17 17:55)
  • Sacred Fox: ごめん, それ貴方, 二十歳の誕生日おめでとうございます (05/17 18:17)

2009/05/15(1)

たこわさ

たまに居酒屋で注文したりして食べると幸せになれるもの
スーパーに売っていたので買ってみて食してみたが, あまりに薬臭く, 幸せは得られなかった
たこわさってこんなもんなんだろうか, それとも外れを引いたのだろうか
ということで, 余ったたこわさをおいしく食べられる方法を募集中です

2009/05/15(2)

Media Manager for PSP

久々に起動してみたらPSPを認識しなかった
もしやと思ってPSPのドライブレターをHDDやCD系のドライブは歴史的事情からかA:やB:には割り当てられないが, なぜかUSBディスクはこれらへの割り当てが可能B:からR:に変えてみたら動いた
どうやらドライブレターがA:やB:である場合を考慮していないらしい
まぁ, 使うことも多分無いのでドライブレターを戻して封印

2009/05/18

Claim Driven

光ファイバーの件の続き
1週間音沙汰が無かったので営業さんを突っついてみた
部署間で問題が宙吊りになっていたか, 単純に進捗が無かったからかは分からないが, 営業さんの手を離れたところで止まっていたらしく, 明日改めてつついてみてもらえるようである
これ, 放置してたらいつまで待たされるんだろうかとか, NTT的にはトラブル案件なんだろうかとか, もしかしたら面倒なクレーマー認定されているのかとか, 考え出したらきりが無いが, つつかないと動かない以上仕方がないのである

2009/05/21

りーんかるなしおん

最近, 互いに関係ない分野で reincarnation という単語にしばしば遭遇する
狐的にはこの単語は朱紅い雫の魔法以外の何物でもないんだけど…
ちなみに意味は転生とか魂の再生とかその辺

  • ark: 私は、FFXインターナショナルのデアリヒターの技を思い出します (05/21 23:12)
  • Sacred Fox: 一応列挙しておくと, 某2次創作小説のお題集, チェックポインティング系の某論文のなかの機構の名前, 某小説のなかの某電波集団の名前としてここ半月ぐらいの間に3度遭遇 (05/22 14:11)

2009/05/25

パーティションジャグリング

15個に分かれていた家マシンのHDDを4つにまとめてみた
まぁ, Linuxな部分を全部LVMに押し込んだだけとも言うけど
さすがになれたもので, mkinitrdのLVM関連のバグで嵌ったところを除けば平穏無事に作業終了である
これでとかいいながら, タイムゾーンの関係で明後日の午前0時なんだけど明日リリースのFedora 11をいれる準備が整った…と思ってFedora Projectのサイトに行ってみたら, リリースが1週間延期になっていた
まぁダウンロードに光回線が使えると, 前向きに考えることとしよう

2009/05/27

おやつ

冷凍ラズベリーを買う
ジップロックに入れて冷凍庫に放り込み, ちまちま食べる
結構コストパフォーマンスに優れたおやつである

2009/05/28

光った

やっと光回線への移行が完了
工事日を明日と勘違いしていたが, 今日だった模様
2009/05/28は一般的には木曜日5月28日(金)A.M とか書かれたら勘違いするのは仕方がない
昨日のうちに別名, タコ足の増設 & 整理, 全体で15Aなのでタコ足の段数は気にしないでいいのだけど, 物理的な口の数が…電源工事しておいて良かった

2009/05/30

いいなこれ

「体内時計、いま何時?」 理研チーム、測定法を開発
血を出さずに測れたらの話だけど