原則匿名で公開・個人情報は送られません。必要に応じ御署名/非公開希望をお書き添え下さい。
誕生日祝いと称した酒の席でプロ野球の話についていろいろと与太話。
などなどということで。
フレッツスクウェアへのppp1だけをオンデマンドに接続する方法。
こうすると*.fletsに対して通信が発生したときにDNS cacheがppp1にパケットを投げるのでppp1が要求に応じて接続を開始する、という動作にできるのではないかと。
あげぷらお祝いありがとうございました>各位
_ところで同居人様からは、会社でもらったとおぼしき恥ずかしいキャラクター商品Tシャツがプレゼントされました。なお、こういう場合のお約束と思われる着ている姿の公開は、同居人様のプライバシーに関わる(勤務先バレる)ので差し控えさせて頂きます。
これはきっと極真の凄いビデオみたいなものなのだろうなあ、と思って行ったら予想以上でした。
ストーリーは正直どうでもいいのですが、人間やればここまで動けるのか! という驚きがひたすらに。とにかくアクション映画の気持ちよさってものを最前面に押し出した快作でありました。「痛い・凄い・やりすぎ・ありえない」という怒濤の画面がガツンガツンとやってきて、驚きのあまり笑うしかない状態にすら陥れます。
あらゆる面で燃えよドラゴンと同種の衝撃があるというか、音楽以外のほぼ全てのファクターが燃えよドラゴン以上、なんじゃないかと思います。
とにかく主演のトニー・ジャーが凄い。そしてその凄さで魅せるために全てが徹底的に考えられている。ここまで潔く割り切った「映画」は久しぶりでありました。
_というわけで、見るべきです。絶対。
ようやく運用のしかたがわかってきたというか。CVSと違ってmoveが簡単なのでがしがしとレポジトリを再構成できてしまうのは楽だ。
ソースツリーという動的な「生き物」を管理する以上、moveという流動性の高い作業はバージョン管理システムには必須なんだなあ、と思えてくる。あと少しすると、なんでCVSで我慢できてたのかわからなくなるんだろうなあ。
TVでは後半からの観戦だった。
試合開始早々に先制された上で、前半終了近くに遠藤が一発レッドで退場(これは不可解な判定だった、という記述は見た)。前半残り時間での田中→中田浩の交替で4バックにシステム変更、更に後半開始時点で福西→小笠原の交替で完全にスクランブル体制で後半が始まった。
後半立上りは意外なほどの日本ペース。もう攻めるしかないという状況が攻撃姿勢を際立たせ、48分CKから中田浩のヘッド、55分スルーパスから玉田の突破で逆転に成功する。
だが、流れは再びバーレーンに傾いた。70分頃から日本選手の疲労が色濃くなり、日本が消極的になったというよりは電池が尽きたと言いたくなるような展開になる。それを裏付けるように、71分、85分と日本のミス含みの流れの中でバーレーンが得点。
11人対10人、残り5分とロスタイムで1点ビハインド、バーレーンは忠実に時間を稼ぐ――間違いなく、敗北へ通じる流れの見える展開だった。しかしそこから日本は再び攻撃姿勢を見せ始める。90分、流れの中から中澤がヘッドで再び同点。ロスタイムの3分間を攻め切って延長へ。
_延長開始早々、3分にカウンターから玉田がファールで潰そうとする相手を振り切って今日2点目。残り時間は疲労の差からか、概ねバーレーンのペースだったが日本が残り時間をなんとか耐えた。4-3で日本、勝利。
_とにかく見ていて思ったのは、日本の勝負根性が高まっているということ。前戦の劇的な勝利による高揚もあるだろうが、逆境になってからの粘りは、少し前の日本には決定的に欠けていたものだろう。
まだまだ欠けているピースもあるが、ジーコ監督の目標とするものには近付いているのだろう。選手個々人が己のタスクを明確に理解した上で、勝つと言う目標に向かう――サッカーというゲームに望む上で、最もシンプルで最も強く、かつ最も難しいスタイルだろう――そんな「極めてシンプルなサッカー」の片鱗は見えてきたように思う。
このまま賭けるか、それとも諦めてもっとややこしいが簡単な道を選ぶか。私は賭けてもいいと思えるようになってきた。
Open Source WEBが/.edされている。そんなわけでKahuaは絶賛負荷試験中な状態であるらしい(kahua-dev ML情報。アーカイブにはまだ上がってない)。
超富豪的設計ゆえの動作エラー(Socketの数が足りない疑惑とか)とか発生していたりするらしい。ということで当座はこれの調査とか解決とかの記事を書いたりするマッチポンプ的運営をするってのはどうだろう、とどこへともなく言ってみるテスト。
リモートカーネルデバッガが使いたいところだが、出力はシリアル一つ。
しこしことprintkをひたすら仕込んではmake zImageしてhaltさせてCF取ってきて差してmountしてcpしてliloしてumountしてCF戻して電源を入れる。そんな感じ。
ひたすらapmとかhwclockとかのソースを追っかけ。しかしながら見付けたと思った尻尾が実は虚像だったことに随分潜り込んでから気付き、手掛りを消失。まさかカーネル内?、というあたりで上司様に報告すると、横から同僚様が何やら助言を。そんなわけで上司様カーネルのコードを見る。問題のもの発見される。UNIX的思想としてはそんなところにそんなコードがあっちゃいかんのだが、組込み系なら確かにわからんではない発想。
なんにしても「全て仕様なので仕方がない」と返答できる材料は揃ったので、本件の私の担当作業は終了、の予定。
どうにもならない試合というものがある。これも、そんな試合だったと思う。
前半立ち上がりは日本のペース。が、中国も盛り返して、どちらのペースとも言い難い展開に。そんな均衡を動かしたのは、やはりセットプレーだった。22分、中村のFKからの展開で福西のヘッドで日本が先制。だが31分、ゴール前でのマークミスも絡んで中国が流れの中から同点弾を叩き込んだ。それから、互いに狙った展開を出しては潰し合うという緩い膠着が続き、前半終了。
_後半開始で両チームとも選手交替はなし。当然、前半の流れ――どちらも悪いところがなく、かといって「良い」ところがあるわけでもない――をそのまま引き継ぐ展開に。やや笛はホームよりながらも、あまり動きを感じない膠着した試合が続く。
先に動いたのは、中国だった。57分にハオ・ハイドンOUT、リ・イIN。試合前からの負傷もあっての交替か。しかし実を結んだのは、やはり日本のセットプレーだった。65分、コーナーキックに合わせた中田浩二のゴール前への飛び込みが手(?)とも思われる当たり方で得点。疑惑めいたゴールだったが、ともかく得点は認められた。中国にとってはタフな展開である。
中国は状況を打破するべく、68分、76分と選手を交替するも、流れは変わらない。逆に川口の神懸り的な好セーブもあって、中国の動きからダイナミズムが急速に失われていく。焦りが軽率なファウルを多発させ、いかにホーム寄りの笛と言えど笛が吹かれ、日本にペースが流れてしまう。サポーターもよくない。苦境のチームを盛り立てる応援ができず、むしろチームの消沈を煽ってしまうようだった。こういう流れを変えられるセットプレーでは、高さを活かせずむしろ日本の守備の上手さが目に付いた。
「格」か「勝負根性」か――とにかく勝負の流れを変える「何か」が中国には足りなかった。一方的な試合だったから、ジーコ監督は動かず、一人の交替カードを切ることもなかった。その流れからすれば、ロスタイムの中村のスルーパスに飛び出した玉田のゴールは「必然」だったとも思える。
_最終スコアは3-1で日本。しかし、スコア以上に差の付いた試合だった。がっぷり四つで組んだ中国が、チームの完成度の差で捻じ伏せられた。そんな印象を受けた。日本、アジアカップ二連覇。この上ない成果であろう。
作りかけのスクリプト。確立確率試験するための部品だと思いねえ(謎
IO::Pingerは、結局IO::Handleのソースを見ながら適当に書いた。汚いし思った通りに動いてくれてないみたいなのだがとりあえずこれでいいや、ってレベル。
#!/usr/bin/perl
use strict;
no strict qw(subs);
use IO::Select;
use IO::Socket;
my $HOST = "192.168.4.50";
my $selecter = IO::Select->new;
my $pinger = IO::Pinger->new($HOST);
my $logger = new Logger();
print ref($pinger)."\n";
$selecter->add($pinger);
while(1){
foreach my $sock( $selecter->can_read(1) ){
my $ret = $sock->solve($logger);
if($ret eq 'remove'){
$selecter->remove($sock);
}
}
exit if($selecter->handles == 0);
}
package Logger;
sub new{
return bless {};
}
sub ping_false{
print "ping false.\n";
}
sub ping_ok{
print "ping ok.\n";
}
package IO::Pinger;
use Symbol;
use IO::Handle;
my(@ISA) = qw(IO::Handle);
sub new{
my($class) = shift;
my($host) = shift;
my $io = gensym;
open($io,"ping -n -c 4 $host | grep 'packet loss' |");
print ref($io)."\n";
return bless $io, $class;
}
sub solve{
my $self = shift;
my $logger = shift;
local($_) = <$self>;
if(/100\% packet loss/){
$logger->ping_false($_);
return 'remove';
}else{
$logger->ping_ok($_);
return 'remove';
}
}
機能のスクリプトのその後。相変わらず@ISAをちゃんと処理してくれないのが謎。しかしそのへんは本筋ではなく、目的の動作は果たせているようなのでこのままでよかろう。
_これで単純作業はこんぴうた君に任せることができるようになったので私は別の調べ物へ。
#!/usr/bin/perl
use strict;
no strict qw(subs);
use IO;
use IO::Select;
use IO::Socket;
my $HOST = "192.168.4.50";
my $selecter = IO::Select->new;
my $logger = new Logger();
for(my $i = 0;$i < 100;$i++){
$logger->test_start;
sleep(3);
$selecter->add( IO::PPPD->new() );
while(1){
foreach my $sock( $selecter->can_read() ){
my $ret = $sock->solve($logger);
if(ref($ret)){
$selecter->add($ret);
}elsif($ret eq 'remove'){
$selecter->remove($sock);
}
}
last if($selecter->handles == 0);
if($logger->{current}->{ping}&&
!$logger->{current}->{kill}){
open(PS,'ps -a | grep pppd |');
while(<PS>){
/^\s*(\d+)/;
my $pid = $1;
kill 15,$pid;
}
$logger->{current}->{kill} = 1;
}
}
}
$logger->final_report;
exit;
package Logger;
sub new{
return bless {
list => []
};
}
sub test_start{
my $self = shift;
if(defined $self->{current}){
push($self->{list},$self->{current});
}
$self->{current} = {};
$self->{current}->{ping} = 0;
}
sub message{
my $self = shift;
my $mes = shift;
print $mes."\n";
}
sub ping_false{
my $self = shift;
print "ping false.\n";
$self->{current}->{ping} = 0;
}
sub ping_ok{
my $self = shift;
print "ping ok.\n";
$self->{current}->{ping} = 1;
}
sub final_report{
my $self = shift;
$self->test_start;
my($ok,$total);
$total = scalar($self->{list});
foreach($self->{list}){
if($_->{ping} == 1){
$ok++;
}
}
printf("%4d/%4d : %d%% success\n",$ok,$total,($ok / $total));
}
package IO::PPPD;
use Symbol;
our(@ISA);
@ISA = qw(IO::Handle);
sub new{
my $class = shift;
my $io = gensym;
open($io,"/etc/ppp/ppp-on 2>&1 |");
bless $io, $class;
}
sub solve{
my $self = shift;
my $logger = shift;
if(eof($self)){
$logger->message("eof pppd");
return 'remove';
}
$_ = <$self>;
print " ".$_;
if(/ip\-up finished/){
$logger->message("ip-up finished");
my $pinger = IO::Pinger->new("192.168.251.2");
return $pinger;
}
if(/Modem hangup/){
$logger->message("modem hangup");
return 'remove';
}
}
package IO::Pinger;
use Symbol;
our(@ISA);
@ISA = qw(IO::Handle);
sub new{
my($class) = shift;
my($host) = shift;
my $io = gensym;
open($io,"LANG=C ping -c 4 $host | grep 'packet loss' |");
return bless $io, $class;
}
sub solve{
my $self = shift;
my $logger = shift;
if(eof($self)){
$logger->message("eof pinger");
return 'remove';
}
local($_) = <$self>;
print;
if(/packet loss/){
if(/100\% packet loss/){
$logger->ping_false($_);
return 'remove';
}else{
$logger->ping_ok($_);
return 'remove';
}
}
}
これが当日2日前の状況だだだ。
_GameDeep/GD#は国内屈指のありえない進捗から本を出してしまう体制を目指します……みたいな感じ?
とても入場予定10時間前の状況とは思えない進捗。
果たして中田さんは睡眠時間を確保できるのか。乞う御期待(ぉ
GameDeep総集編をちゃんと出すにはTeXのフォント周りの整備が必要そうなので断念。GD# vol.11の作業にかかることにする。っていうか、今晩は五輪サッカーの日本戦があるので寝れないこと確定気味。はぅー。
GameDeepは結局本誌の新刊が出なかったにも関わらず、それなりに本誌の旧刊をちゃんと売ることができました。まあ、ゲーム評論でちゃんとブースを取れば売れるのね、というか。
Vidさんにも無事お会いしました。GD# vol.12が予想以上に売れたのは、たぶんVidさんが「ゲーム」のことで原稿を書いて下さったおかげです。多謝。
とりあえず豆満江の在庫からGameDeepの旧刊が消えたので、ちょっぴり再生産しました。