2005-11-23
_ listupgrade 20051123
めっちゃシンプルになりました orz
改めてこれは何かってことを書いておくと
- FreeBSD の ports で、新しいバージョンが出ているものを
- オレ的美観で過不足なく美しく出力してくれる*1
そんなツールです。今回のバージョンは、
- portversion と awk に依存するようになりました*2
- awk なのに行末に ; がついているのは Emacs の awk-mode の挙動に合わせたからです
- pkgdb に矛盾がある場合とかはとりあえず考えてません
#! /usr/bin/awk -f
# -*- awk -*-
BEGIN {
num = 0;
maxlen = 0;
while ( "portversion -v" | getline ) {
if ( $3 !~ /up-to-date/ ) {
num++;
item = $1;
if ( length( item ) > maxlen ) {
maxlen = length( item );
}
ver = $7;
sub( /\)$/, "", ver );
port[num] = item;
latest[num] = ver;
}
}
for ( i = 1; i <= num; i++ ) {
printf( "%-*s --> %s\n", maxlen, port[i], latest[i] );
}
}
好きにいじって好きに利用してくださいライセンスで。
2006-11-23
_ PHPUnit って Pear channel ではなくなったのか
PHPUnit 3.0 - Sebastian Bergmann
- PHPUnit 3 では xdebug を利用した code coverage, selenium を利用したクライアントサイドのテストも統合されているみたい
- Pear ではなく独自の channel サーバを用意してそっちで全部やるみたい
channel という概念でいろいろ独自に工夫できるようになったのはいいけど、Pear を見ればいいという安心感はなくなってきたな。PHP のライブラリ用の Freshmeat みたいなものがあったらいいのかも。
2007-11-23
_ 自分自身が起動されたかどうかを確認
なんでもかんでもテストしやすいようにということで、夏頃 Perl を書いていて思いついた $0 と __FILE__ が一致したら実行という手法、実は案外ポピュラーだったようで、気をつけて見てみると意外と見かける。
でまぁ、「ちくしょう!すごいこと思いついたと思ったのに!」というのはどうでもいいとして、確認の方法で自分はわざわざフルパスに展開してから比較してたんだけど、実はその必要ないのかな?というのが気になって確認してみた。
Ruby
$0 も __FILE__ も原則同じように取れるってことでいいのかな?
puts '$0 : ' + $0 puts '__FILE__ : ' + __FILE__
こんなのを書いて動かしてみる。フルパスになる場合もならない場合もあるけど、食い違うということはなさそうだ。CLI で起動したときはフルパスになったりならなかったり、ブラウザから CGI で呼び出すとどちらもフルパスを返す。
ということは Ruby において自分自身が起動されたかどうかを確認するためには
$0 == __FILE__
だけを見ればよさげ。
PHP
こんなもので確認*1。
print '__FILE__ : '.__FILE__."\n"; print 'SCRIPT_NAME : '.$_SERVER['SCRIPT_NAME']."\n"; print 'SCRIPT_FILENAME : '.$_SERVER['SCRIPT_FILENAME']."\n";
- CLI で動かすと __FILE__ だけがフルパス
- ブラウザからアクセスすると SCRIPT_NAME 以外がファイルシステム上のフルパス
- SCRIPT_NAME は URI 上の絶対パス
ということは
realpath( $_SERVER['SCRIPT_FILENAME'] ) == __FILE__
を見ればよさげ。
……。
なげぇよ。
他の言語は気が向いたら調べるかもしれませんけど、何か情報がありましたら嬉しいです。
*1 PHP_SELF を使っていいのは小学生まで。