D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2008年06月

ちょっと前に33rpmさんと渋谷は松濤にあるリトルショップというカレー屋があるので行ってきたのです。そこのカレーはまぁなんというか、おいしいし安いし、いいんですが、ラーメン界に「二郎」があるように、そこはカレー界の二郎とでも言うべき店なんですね。なんというか、「ラーメン二郎はラーメンではない」的なノリで。しかも量も半端無い。

そこの有名?メニューが「Cセット」もしくは「気まぐれカレー」というヤツなんですが、大量のライスとカレーの上に鶏唐揚げ、とんかつ、目玉焼き、茄子の素揚げ、ピーマンの素揚げ、ひじき、それに厚揚げがのるというものでして。これだけで足りない方にはこの上にご飯とカレー増量、ゆで卵追加、ほうれん草の茹でたもの追加、という「大盛り」もあります。

で、その33rpmさんと食べに行った時僕はこの「Cの大盛り」をあまり情報を与えずに他人に食べさせるのが大好きなので前もって散々注意したにも関わらず、33rpmさんはCの大盛りを頼んで、危うく撃沈しかけたのです。完食しましたけど。ちなみに僕は「野菜カレー」という日和ったメニューでした。

そんな話をIRCでしていたら釣れてしまったのがあのid:yusukebeさんですね。「俺もちょっと大食いだからいけるよ」的なニュアンスで挑戦されたので、さっそく今日みんなで挑戦という運びになりました。なお、ほぼ強制的にid:lopnorとosawaも行くことに。

店は小さいので5人だと座れるかどうか怪しいので店に到着したのは11:10くらいです。でももうほぼ満席で、ギリギリ4人先に座れました。osawa君は残念ながら一人で待ちです。


DSCN0027.JPG
最初はまだまだみんな余裕です

DSCN0027.JPG
最初はまだまだみんな余裕です2

DSCN0027.JPG
osawa君は15分くらい待たされました

DSCN0027.JPG
不安な表情

DSCN0027.JPG
まず33rpmさんに大盛りがきた!

DSCN0027.JPG
一口目でもう泣き言を言ってる情けない男

DSCN0027.JPG
唖然とするビギナーyusukebe

DSCN0027.JPG
ふたつ会わせるとまるでお祭りだ!

DSCN0027.JPG
ふたつ会わせるとまるでお祭りだ!2

DSCN0027.JPG
一人だけCを頼まなかったid:lopnor

DSCN0027.JPG
osawaも座れました。よかったね!

DSCN0027.JPG
20分後、僕は完食(Cの普通盛り)

DSCN0027.JPG
笑顔で完食

DSCN0027.JPG
疲労困憊

DSCN0027.JPG
限界を突破しつつあるyusukebe

DSCN0027.JPG
「僕も完食です!」

DSCN0027.JPG
「登頂しました!」

ってことでまぁ、なんとか無事全員完食することができましたが、今のところ食べ終わって1時間弱、みんなグロッキーです。言葉を発する物さえいません。

でも大丈夫。こうなるって知ってたから、今日のお昼過ぎの作業時間はなにもできないという前提の元です。ピルクル飲んで今回復中。

みなさん、リトルショップというカレー屋に連れて行かれる時は相手にだまされて「Cの大盛り」とか言っちゃ駄目ですよ。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

Shibuya.pm #9, a.k.a. XS Niteで話してきました。スライドはPDFで公開してます


その後今日もう一つプレゼンをやって、これでやっと先月から続いてた怒濤のプレゼン5連チャンが終わった。id:takesakoさんじゃないんだから、こんなにしゃべるのつれぇw

今度は原稿を書かないといけない。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

spiderが一般販売されはじめたようなので、ユーザーとして一言言っておくか。

実はひょんな縁から2年前くらいからずっとspiderというHD録画用のマシンを使わせてもらっている。月曜日の「とくダネ!」で小倉さんが10分以上しゃべり続けてたあれである。

このマシンのなにがすごいって、全然存在を知らなかった番組をあとから見られたり、同時刻に放映されている全ての番組をみようと思えば見えるということである。ネットにもつなげられるけど、それは個人的にはどうでもよくて、とにかくこの裏番組が全て見られる、というのが一番すごい。

特におれが好きな深夜帯の番組は10分、15分くらい番組の時間がかぶることがよくあるのでとにかく重宝している。

かなりのヘビーユーザーなのでたまに壊れたりもするが、そんな時は修理に出している間は家がお通夜状態。テレビの放映時間をきにしなくちゃいけないんなんて!

ってことで、あなたが宮川という名前の人か、もしくは極度のテレビっ子の場合はこのマシンは「買い」であること、保証する。ただし、惜しむらくはまだアナログ放送にしか対応していないことである。それはただ単純にデジタルチューナーがまだあまりでまわってないから、ということらしい。wktkしている
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

Catalystにはデフォルトでcatalyst_parというディレクティブが備え付けられていて、Makefile.PLで
... catalyst_par; ... WriteAll;
とすると後のmake時にPAR形式のファイルを作れるようになる機能があります。このPARファイルを作成するには
make catalyst_par
とするわけですが、アプリケーションができあがって、「さあPARでも作るか!」と言った皆さんはおおむね以下のような意味の分からないエラーに悩まされてきたのではないでしょうか:
Writing PAR "wifigadgets-control.par" make: *** [catalyst_par] Error 25
この訳の分からない動作不具合、根本的な問題は二つあります。一つにはこのcatalyst_parでPARファイルを作成するモジュールがどういう理由かかなり意図的にエラーをユーザーに見せないように操作しているのです。該当モジュールはModule::Install::Catalystのこのあたり:
local $SIG{__WARN__} = sub { }; open my $olderr, '>&STDERR'; open STDERR, '>', File::Spec->devnull; my %opt = ( 'x' => 1, 'n' => 0, 'o' => $par, 'a' => [ grep( !/par.pl/, glob '.' ) ], 'p' => 1, 'B' => $CORE, 'm' => $MULTIARCH ); App::Packer::PAR->new( frontend => 'Module::ScanDeps', backend => 'PAR::Packer', frontopts => \%opt, backopts => \%opt, args => ['par.pl'], )->go; open STDERR, '>&', $olderr;
うひゃ、STDERRを完全にブロックしてやがる><

さて、これを取り除いてやるとエラーの内容がだんだんわかってきます。最初はmmap_cache.cでassert()が落ちてるとか、なんかようわからんエラーだったわけですが。これをよくよく考えてみたら、どうもMyApp->setup()がPARファイルを作成するときに呼ばれ、アプリケーション内で使われているモジュールの初期化ルーチンが実行されているみたい。

つまり、PARを作るときにrequire MyApp;が一度走るわけです。その時にMyApp.pmに、Catalystの一般的な作法である以下のコードがおいてあると、setup()が実行されちゃうわけですな

ということはこのコードをとにかく実行させなければよろしい。色んな方法があると思いますが、とりあえずあまり妙な事はしたくないので、環境変数に頼ることにしました:
package MyApp; ... if ($ENV{ CATALYST_DEPLOY }) { __PACKAGE__->config( ... ); __PACKAGE__->setup( qw( ... ) ); }
こうすると、script/内のスクリプトを実行する時もenv CATALYST_DEPLOY=1 とかしないといけないので、その辺りはもう少し頭良くできるかとは思いますが、とりあえず動きます。これでPARも期待通り動くようになります。

あと、もしPARにCatalyst::Plugin系のモジュールも見つけて欲しいのであれば(つまり、違うホストで実行した時にこのファイルをインストールする必要がないようにしたい場合)、setup()で呼ぶだけでなくてuseしてやる必要がありますので注意。
package MyApp; .... use Catalyst::Plugin::ConfigLoader; use Catalyst::Plugin::Static::Simple; ...
これはニーズに合わせて調整してください。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

秋葉原通り魔事件に関してあちこちで書かれているので、加藤某の置かれていた状況に関しての考察とか多少の共感とか、そういう話もちらほら読んでいるのだが、加藤某の状況とかぶせて孤独がどうとか、彼女がいないのどうとか、仕事がどうとかって言うの読んでると思うのはなんかみんな一様に理想が高すぎる気がする。

読んでると期間工ってのはあまり割の良い仕事じゃないこととか、リストラ云々とか、そういうのはつらいだろうなぁ、って思うけど、それとこれとは別問題じゃなかろうか。

友達がいっぱいいて、わかってくれる人がいて、とかってマンガとか小説だけの話だと思う。

本質的には人間は一人で生きていくもののはずなのに、なんだろう、なんか親友と呼べる人がいないから俺は落ちこぼれ、的な妄想がよくわからない。

俺の周りの人たちは好きだし、感謝してる。これからもうまく、楽しくやっていきたいと思う。でも彼らがいてもいなくても俺は普通に生きていくよ。なんだろう。つきはなすとか線を引くというのとは違うけど、俺は彼らがいるおかげで人生はよくなっていると思うけど、かといって彼らがいないから人生が終わるわけでもない。俺が今まで人生の中で何回も何回もやってきたように違う国に引っ越ししたら、彼らは俺無しの生活になって少なくともそれまでよりは疎遠になるし、俺も彼ら無しの生活にそのうち慣れる。そしてみんな普通に生きていく。ちょっと悲しいけど、そんなのは普通のこと。

友達がたくさんいないと「いけない」とか、親友がいないと「いけない」いう理想もってるのかな。そういう人はいるように努力はしたほうがいいと思うけど、別におまえが一人いなくても生きていけるように、おまえも他の人がいなくったって生きていけるはずなのに。

まぁ、もちろん理想はその両極端のどこか間にあるんだろうからその辺りはバランス感覚の問題だと思うけど。にしてもやっぱり理想が高すぎだよ。金あったって、仕事が楽しくったって、人間はそれぞれ一人なのは誰でも平等だ。




しかしあれだ。上記の件とはまた別の話なのだが、100歩譲って様々なストレス、社会的な問題から通り魔事件に出た事の動機とかを理解したとしよう。それでも敢えて言いたい:「そうやって赤の他人を殺すほどの憎悪なら、最後まできっちり意地を見せて見事に射殺されればよかったのに」

なんなんだ、あの投降映像。赤の他人の命はさくっと5分で終わらせて、それでも自分の命は惜しいのね。だから彼女さえできないんだよ。

悲しい。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

さて、すっかりMoose厨となりつつある私ですが、この度デーモンスクリプトを書くことになりましたのでMooseでこれをするのは何がいいかなと考えていたわけです。したらなんでもありますな、CPANは。MooseX::Daemonizeですよ、奥さん。

考え方としては、スクリプトの書式をコントロールするオブジェクトをまず作ります。
package MyDaemon; use Moose; with 'MooseX::Daemonize';
コマンドラインから受け取るオプション等はこのオブジェクトの属性として指定します。
has 'option1' => ( is => 'rw', isa => 'Str', required => 1 ); has 'option2' => ( is => 'rw', isa => 'Bool', default => 1, );
このような指定をすると、--option1=hoge --option2 のように指定できるようになります。
after 'start' => sub { my $self = shift; return unless $self->is_daemon; # デーモンプロセスで行う処理をここへ };
以上。あとはPODに書いてある通りのスクリプトをを用意して・・・
my $daemon = My::Daemon->new_with_options(); my ($command) = @{$daemon->extra_argv} defined $command || die "No command specified"; $daemon->start if $command eq 'start'; $daemon->status if $command eq 'status'; $daemon->restart if $command eq 'restart'; $daemon->stop if $command eq 'stop'; warn($daemon->status_message); exit($daemon->exit_code);
で、このスクリプトを、こんな感じで動かすだけ。start/stop/status/restartが最初から装備されているのがセクシーすぎる。
./script.pl --option1=hoge --option2 start
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

僕はデブというカテゴリに充分はいるのですが、それでも・・・いや、それだからこそ周りに気を遣っている部分が多々あります。スペースを取るのを知っているので人混みでなるたけ邪魔にならないよう自分から動きますし、体重差があるのでこっちが軽く当たったつもりでも相手にはダメージが大きいので当たらないようにとか気をつけている。

だからこそ、他のデブが図々しい事をしていると許せない。

本日のとある地下鉄は電車の遅れもあってひどい混みようでしたが、その中で慣性の任せるままにあちこちに揺れている、こ、こ、このデブ!身長は俺より上だから175cmとか180cmとか。とにかくこちらにあちらに体重かけまくり。おまえの上の吊り手はなんなんだ!もて!自分でバランスを保て!横の女の子がつぶれてるぞ!

ああ、重たかった。(俺が言うとは思わなかった)

    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

朝10時前くらいに近所の超絶うまいパン屋に寄ってパンを買い、清澄白河へ。清澄庭園でいい風を浴びながら「これでウェイターがいてシャンパンかなんか持ってきてくれれば最高なのにな」とかつぶやきつつブランチ(気分だけはニース)。

その後恒例の亀釣り。今日ただし亀さんは甲羅干しに忙しくてあまりかまってくれなかった。残念。小一時間で退散。

なんかそんな気分あったので秋葉原に行ってヨドバシカメラ内を散策。っつっても6階のみ。プラモとかフィギュアとかを見てると正直隔世の感がある。昔のプラモはこんなに稼働部分が多くなかったし、バランスも取れなかった。ついついストラップなんぞを買ってみる。あとSuperflyも。ミーハーですか。はいそうですか。

帰宅して油とかでぐちゃぐちゃだったコンロとかを掃除。

カクヤスに電話して、去年CMでやられてしまった時のように、日比谷線で見た檀れいのポスターにやられたので金麦をケース買いの注文をして、さて今日の晩飯はどうすべ、と思っている←今ここ
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

このページのトップヘ