2006年4月アーカイブ

しつこい



なるたけ気をつけてやれば「しつこい」も「粘り強い」になるんだな、と最近学習した。


ぷち自転車紀行



渋谷→広尾→六本木→泉岳寺→麻布十番→六本木→渋谷と自転車で回ってきた。麻布十番は例のたいやきを食ってきました。ただ、できあがりが一時間後とか言われちゃったので、先に泉岳寺のほうに。泉岳寺は(しらんかったのだけど)赤穂浪士の墓があるところ。大石内蔵助の墓にちびっと墓参りしてきた。


ぼろぼろに疲れて家に帰ってきて、まず近くのマインマートへ。プレミアムモルツ一本と、今後の事を考えてドラフトワンを1ケース!餃子を作り始めて、作りながら帰り際に買ってきた卯の花とホタテでプレミアムモルツ。う、うまああああ!さすがにこれだけ動いた後だとビールがうまい!


MEGUMIのしゃべりかた



この間テレビ見てたらMEGUMIが突然しゃべりかけられて方言のイントネーション丸出しだった瞬間があって、その時テレビを見てなかったのだけれどもそのしゃべりかたが某美人の知り合いそっくりですげーびびった。


まぁ実際にはただ同じ地方の人ってだけなんだろうけど。前々から同じ地方の出身って聞いてたけど、ようやく実感した感じ。


しゃべりかたっていえば関西方面の方言っていいね・・・。た・ま・ら・ん。(なぜならいまいいとも増刊号で千里子の京都弁を聞いてる)


クローラー



いやさ、色々問題あるの知ってるよ?最初とっつきにくいとか、バグがあるときにちょっとデバグしにくいとかさ。でもねぇ、俺の書いたクローラー、マジ速いから。pure perlのくせしてこの速さですよ。自画自賛だろーがなんだろうが、Xangoは絶対にperlで書かれたクローラーフレームワークとしては最速の部類に入りますから!


National Treasure(駄作)をよっぱらいながらみつつ、Hろゆきが書いてるCGIをデバッグしてて思った事です。はい。


ドラフトワン



久しぶりにドラフトワンとところてんという組み合わせ。ドラフトワンうまいなぁ。


バー



最寄り駅のバーを開拓しようかと思って張り切って駅まで行ったらゴールデンウィークで閉まってた。がっくり・・・。しょうがないので家の隣のバーに。ラスティーネイル、ベルモットベースのカクテル2杯、スコッチ2杯。結構飲んだけど店でて30秒で帰宅。


隣にバーがあるのは危険。


マンゴープリン&わらび餅



俺が買ってこいとけしかけたから常になにかしら口に入れてないと能率が落ちるうちの相棒ちゃんがマンゴープリンとわらび餅を近くで買ってきたら、これがバカうまですよ、おねーさん。マンゴープリンはマンゴーの味わいが広がる濃厚タイプ。わらび餅はこれまた上品に口の中でふんわりふわふわととろけていく。うまー。


・・・ってな物を、火消ししながらつまんでました。


バー三昧



アーガイル。ラフロイグ(ボトラーズ)。うわあ、あと飲んだっけ。5杯くらい。シガー。


Poisoned Eyes.



there's a lot that can be said without saying, let alone much that cannot be said when expressed with a million words. such feelings do not materialize, do not fertilize, do not organize. looking unto yourself you must realize that it is such a pure feeling that traling actions are met with such fierce reactions that burns through the skin, the flesh, the marrows and your soul. you do not name the feeling. I do not dare to name the feeling. gray-ish haze induced by alcohol will not cloud your eyes, you know it. you know it. and yet you shall not dare to ask why, because you know it burns. but you want to say it. you want to. you want to. you wish you could fly, you wish you could. wishing. adoring. such warm feeling, and yet unfulfilling. maybe we -- or maybe just I -- will know when I grow a little older, little wiser. at this point I fail to see. no, I see. but I fail to handle it properly, for I have poisened eyes.




熱はないと思うのだが喉がすごく痛い。どうした。




ローカルの.vimrcの色設定は反映されるのに、リモートだと駄目な模様。なんでやねん。


く、くそ



近年こんなに腰を据えてやったことのないくらい腰を据えているのになかなか実を結ばないなぁ・・・。


ズゴック



僕はこのズゴックの配置はすでにアートの域に達してると思います→。某社のオフィスにて。


ネット接続おも




1541 packets transmitted, 895 packets received, 41% packet loss
round-trip min/avg/max/stddev = 10.589/186.413/2247.929/232.361 ms

なんですか、41%パケットロスって・・・。おもすぎてなにもできん。


IKEA



今日オープンのIKEAいってきた。すっげぇ人!人!人!みんななんで南船橋まででてくるんだ。月曜日だぞ!入場制限してるし・・・すげぇな。延々家具見てて、気がついたら5時くらいですよ。店員もまだ慣れてないからすげぇとっろいw


色んな家具見れてよかったわぁ。しかしつっかれた。もうぼろぼろですよ。


で、帰り道にトラブルレポート。もっと前に電話来てたらしいのだが、俺はずっと圏外だったそうな。どうやら千葉県にFOMAは届かないらしい。おかしいなぁ・・・確かに最後は圏外だったけど途中では何回も電話チェックしたのになぁ・・・


ザワークラウトもどき+リブ



歩いて渋谷へ。YAMAHAで二胡を見てよだれだらだら。でも17万円・・・高い、高いよ!その後ビックカメラで32型TVを衝動買いしそうになるも、正気に戻ってその他買い物。Sにメールでザワークラウトもどきのレシピを教わって、キャベツ買って帰宅。


・・・と思ったら、酢がねぇ、ワインがねぇ、とか色々あったのでもう一回買い物。前に買ってあったリブを解凍して、オーブンで30分。その間にざく切りのザワークラウトもどきをざくざくとつくる。細切りしないといけないと後で怒られましたが、とりあえず手でざくざく切って作ってみた。


はい、結果は右上。写真はぼけてるが、料理のほうは俺って天才だと思ったね。うますぎる。リブは半分だけ食べた。キャベツはキャベツがまるまる一個消えました。わはは。ま、朝昼食ってないし、食べたの午後5時だし、いいことにしよう。


トラジ



特選ハラミ、超うめぇ!




上記エラーが出るので、パースのベンチマークだけとってみた



Rate PP syck XS
PP 2838/s -- -65% -86%
syck 8123/s 186% -- -59%
XS 19920/s 602% 145% --

うん、確かに速い。でもすごい正直に言うとJSON / JSON::PCはインターフェースにあまり方向性を感じられなくてつかいにくい。JSON::Syckはむかつくくらいシンプルなので逆にこの用途!って感じではっきりするんだけどJSON::PCはなんでもやりたがってる印象があって逆にちょっと敬遠してしまいそうだ。


JSON::PC 微妙



ベンチマーク取ろうと思ってコード書いてたら、以下のような



$VAR1 = {
'bar' => [
'a',
'b',
{
'poop' => 'Poop'
}
],
'0' => 1,
'arg' => {
'doo' => 'daa'
},
'foo' => 1,
'2' => undef
};

これを



use JSON::PC;
my $j = JSON::PC->new;
$j->parse($j->convert(\%data));

すると



Bad string at /Library/Perl/5.8.6/darwin-thread-multi-2level/JSON/PC.pm line 32.



微妙・・・


夢見



また死ぬほど夢見が悪かった。


寝に帰るも



今朝は6時過ぎに寝て11時にはまた事務所に出てたので正直寝不足。午後6時過ぎにはヘロヘロになって集中できなかったのでまず東急に寄って、銀座アスターの弁当を買って帰宅。正直銀座アスターで食べようとは思わないけど、この弁当はかなりうまい。その後1時間弱程寝。


呼び出されたので移動。1件目でビール、ボウモア、マッカラン。新宿に一人で移動してラガブーリン、スプリングバンク、イチローモルト、シェリー。隣に座ってたおねーさまとかと話しながらちびちび。その後「かめや」でうどん食って4時近くに帰宅。ちなみにかめやで天玉うどんは370円。正直絶対的な味の評価でいうとたいしてうまくないんだけど、やっぱこの値段と手軽さを考えるとうまいよなぁ。


ちょwww いれすぎ

集中するっちゅうのBGM



良い子の皆は集中する時に音楽聞くよね?どんな音楽が一番いいか知ってる?ーーーうん、そうだね、メタルだね!おにーさんは最大音量でTOOLの"Hooker With A Penis"聞いてるよ!クラッシュが裏拍に入ってきた瞬間が最高だね!


鯵フライ定食



近所の店を開拓しようと言う気分だったので、居酒屋のランチ定食で鯵フライ750円。いやー、落ち着くね。高級食材もいいけど、ご飯、みそ汁、漬け物、サラダにフライでいい塩梅。野菜も多めだし、うま。


地震だー



地震地震。結構横揺れ来たぞ。


バースデー



今日はよしたか君のバースデーです。バースデーボーイに荷物持ちさせちゃったなぁ、そういえば。にこやか部の部長さんです。


ふさのすけ




http://www.fusanosuke.net/



偶然というか、成り行きで連れて行かれたので近藤房之助見てきたよ。あと、銀座久兵衛の鮨もちょっと食えました。いやあ、縁ってすごいですね。


移り気ですが、なにか?




http://ffmpeg.sourceforge.net/index.php



次の「気になる」・・・


Encode::Detectみたいなもん



開発、30%ってところかなぁ。個人的には



my $encode = Encode::Detect->DetectFromFile($filename);

とかやれるようになりたいんだよな。メモリー使用量削減削減。


やっぱりあると作るな。



どこかに食べにいこうかと思ってたが、午後一番からミーティングあるしってことで家にあった茄子を麻婆茄子風味でさっと炒めてはやめのご飯。やっぱさすがにちょっと腕がなまってる感じがするなぁ・・・でもうま。


さー支度しよ。


Encode::Detectが気になる。



id:charsbarさんが書いてて初めてEncode::DetectがMozilla Projectのポートだということに気づいた。なんかCPPってのが嫌なのとあんまりメンテされてない事もあるので、これCにポートしようかな・・・で、Perlラッパつけて:



# 名前ながっ
my $ucd = Encode::UniversalCharsetDetector->new;
$ucd->addProber("Prober::EUC_JP");
my $enc = $ucd->detect("ほげほげほげほげ");

ふーむ。考えとく。


ラムステーキ



肉が食いたかったので、渋谷市場で物色。ステーキか・・・?と思ってみてたらラムの塊肉発見。これを買ってきて、厚さ3cmくらいに切って塩こしょう+ローズマリー少々。しばらくおいてからオリーブオイルで一気に焼き上げる。柔らかくてうまー。


夜遊び隊



飲み会→一人バー(スコッチ+葉巻)→Hろゆき+Uさん合流→G+B合流→Hろゆき新居でだらだら飲み→3:30過ぎにようやく帰宅。


Jack Johnson



Jack Johnsonライブに行ってきた。会場は幕張メッセ。あんなところじゃ音が響いて聞けたもんじゃないだろうと思ってたけど、かなりいい感じだった。


前座はMatt CostaALO。ALOはCDで聞いた時にはあまりどうってことない印象だったんだけど、ライブではかなりよかった。Phishっぽい。ちなみにALOとJack Johnsonの最初はホットドッグを買う列に並んだまま聞いた。あれは店の数少なすぎー。まぁ、ビールがあったし見えてたからいいんだけどね。


Jack Johnsonが出てきた頃には俺はビール4杯くらい飲んでて結構できあがってた。俺がアメリカに住んでた頃にものすごい勢いでラジオで流れてた"Flake"と"Bubble Toes"は中頃にやって大合唱。


ゆる~~~~い感じで始まって、ゆる~~~~い感じで終わった。かなり楽しかった。帰りに新橋でラーメン食って帰った。


JSANへのアップロードというのは



どんなに小さいモジュールでもいいのかしら。HTTP.Request内にあったMethod.bind()を使い回せるようにしたいんだけど・・・。あとopenricoのEffect.FedeToのポート作ったんだけど、これもなんかアップするのが微妙だなぁ。


Jemplate文字化け



EUC-JPのJSON使って、Jemplateで以下のようなテンプレートを実行してみら



[% japanese_var %] あとは日本語でほげほげ

日本語でほげほげの部分が文字化け。japanese_varは普通に表示されてる。くそ、折角ほめようと思ったのに・・・




JSANの使い方もわかってきた。HTTP.RequestもDOM.UtilsもDOM.Eventsも使いまくりだぜ。でもここでようやくテンプレート処理をどうするのか、って感じになってきた。


俺は正直言ってJemplate使いたくない。だってingywareだもん俺HTML::Mason使いだもん。コーダーにTTとMason両方覚えさせたくないもん。ってことはprototype.jsのTemplateが一番近いんだけど、これもうーん。


まぁ文句ばっかり言っててもしょうがないのでJemplateをとりあえず一回使ってみようかと。JSのテンプレーティングエンジンはまだ開発の余地があると思うので少し自分で考えて書いてみてもいいのだけど、フィルター類は面倒くさいのでどうせなら他人が作ってくれたフレームワーク使ってみるべ。


何回もひっかかるJavascript



Perlな人だからですかね、Javascriptで以前もひっかかった記憶のあるところに今回もまたひっかかった:



var hash = {
foo: 'bar',
baz: 'qux',
};

この最後のカンマな・・・Safariだと高らかにシンタックスエラーだと宣言される。あと、予約語の規制がFirefoxは甘い。



function poop(class) {
...
}

とかだめ。前にも書いた事あるんだけど、もう一回メモ。そのうち覚えるだろう。


デニムの上着



デニムの上着を着て出社したら相棒さんに「若者ぶってるみたい」とか言われました。あの、一応まだ20代です。


久しぶりランチ新規開拓



神泉のほうの「ぶーにゃ」。たたずまいから沖縄料理かと思ったら割と普通の創作?洋食だった


俺はカツレツランチ。プラス五十円でサラダがつくのが嬉しい。カツレツはカリカリで量もたっぷりあるし、付け合わせも野菜中心で三種類。ライスとスープまでついて全部で900円。超満足。


惜しむらくは店員の性能があまり高くないことかな。一生懸命やってるんだけど、なんかやってる事がとろい。


しかし久しぶりに昔書いてたランチ日記みたいなの書いたなー


Method.js と Effect.Fade.js



いつまでここにおいておくかわからんけど、こんなん作ってみた。



http://www.endeworks.jp/lib/js/Effect/Fade.js
http://www.endeworks.jp/lib/js/Method.js

いまいちタイミングのコントロールがうまくいってないんだけど、フェードイン/フェードアウトをコントロールする:



new Effect.Fade({
element: element_id_or_ref,
initial: initial_opacity,
opacity: target_opacity,
duration: duration,
steps: steps
});

内容は基本的にopenrico.jsの中身と一緒。


マシューって



マシューっていつのまにかまた深夜に戻ったの?ちなみに南野陽子好きです。っていうか、南野陽子の関西弁た・ま・ら・ん。ほんとにたまらん。鼻血ブー。


JSAN - 必須になりそうなモジュール類



JSANいじりはじめた。



Class - http://www.openjsan.org/doc/r/rk/rkinyon/Class/0.05/lib/Class.html

JSでクラス作成。



DOM.Element - http://www.openjsan.org/doc/r/rk/rkinyon/DOM/Element/0.02/lib/DOM/Element.html

DOM使用上でのツール。でもこれってDOM.Utilと何が違うのか、みたいな。



DOM.Events - http://www.openjsan.org/doc/g/go/goflyapig/DOM/Events/0.02/lib/DOM/Events.html

クロスブラウザなaddEventListener()



DOM.Utils - http://www.openjsan.org/doc/r/rk/rkinyon/DOM/Utils/0.02/lib/DOM/Utils.html

getElementsByClass()と、prototype.jsの$()をサポート



DOM.Ready - http://www.openjsan.org/doc/a/au/autarch/DOM/Ready/0.13/lib/DOM/Ready.html

↑多分ほとんどの場合一番正しい初期化コードの居場所はここだと思う。


あとはJSAN::ServerSideを使ってほげほげとしてから出力。これを使う上でちょっと面倒くさいのがドキュメント。これ、折角PODがついているんだからperldocで読めるようにしたいなぁ。


思うんだけど、JSANモジュールをダウンロードしてきたあと、



perl Makefile.PL
make install

して、/usr/local/lib/jsanみたいな所にデータを入れておいてそこからほげほげするってのはどうなんだろう。(追記)あ、というかJSAN.pmってそのためにあるのね。


負け(辛さに)



辛いものは大好きでぱくぱく食べますが、昼に辛いものを食べたなら夕方に、夜食べたなら次の日に腹にきます。タイカレーとか本当に大好きなんだけど何回食べても毎回腹痛で苦しむ。昨日はタイカレー食べたので今朝起きた時はもうすでに鈍痛。くそー。


DOM.Events.addListener() DOM.Events.removeListener()



これ、一度対応させたイベントを入れ替えようと思って



DOM.Events.addListener(object, 'click', hogeFunction);
DOM.Events.removeListener(object, 'click');
DOM.Events.addListener(object, 'click', hagaFunction);

ってやったら、何回かクリックしてると妙なループみたいな感じになる。なのでこれはやらないほうが無難そう。


「正直しんどい」グルメ



「正直しんどい」に出てくる店はいつもうまそうだ。これ近い。行ける。行こう。



http://g.pia.co.jp/newopen/20050713_4.htm



人形町か・・・



http://www.homitei.com/



朝のハッキング重要論



仕事とプライベートのメリハリをつけろとか言われた事もあるんだが、朝のハッキングってとても重要な気がする。今日はまだめざましテレビのやってる時間に起きたから確実に7時台から起きてる訳だが、起きた直後にメールチェックしてそのまま前日やってたところからハッキング開始した。


朝は他の事を考えないし、リラックスした感じでコード書けるので効率がいい。この時間がないと一日で書けるコードの量がだいぶ違うような気がするんだよなぁ。


ハック中ですが




http://www32.ocn.ne.jp/~emina/



うかれぽんちの櫻さんがやってたので「タイプ別性格診断」やってみたですよ。ちょっとびっくりですよ。



予測できない行動をとったり、人との付き合いに無関心に見えるところが、E型やJ型の気にさわり、文句をいわれる。

この辺なんかもちょっと身に覚えが・・・




ISTP型:なんでも一度は試してみる


控えめで、打ち解けず、対人関係に用心深いが、なんでも一度は試してみようとする。


内面を見つめるタイプで(I型)、それが客観的な決断をくだす傾向とあいまって、会話がどう進むのかほかの人がどうするのか、ようすを見ていてから、手のうちを見せる。ものの考え方が具体的で(S型)、なんでも自分のまわりのことに関連させてとらえるので(P型)、元来ひっこみ思案な性格からすれば行動的で自発的な役回りになってしまう。突然、意表を突いたユーモアをいったり、柄にもなく任せてくれという態度をとったり、壊れたものを不意に直したくなったりして、ほかの人たちを困惑させる。


ISTP型は手先が器用で、すぐに目に見える形で成果があがると満足感を覚える。


観察力が優れているので、気になることがあると、手順を踏んだり手引書を読まなければいけないなどとは思わずに、すぐに取りかかってしまう*1。だから、仕事好きで、結果がうまくいくと、やり遂げた満足感が大きい。


やっている最中に、手引書を読まなければならなくなると、直接関連のある個所だけを読む。時間や労力を無駄に使わないことが、ISTP型にとってはきわめて重要な問題なのだ。


割り当てられた仕事がつまらない、退屈、実際的ではないと思うと、その仕事より自分の関心事を優先させる。*2


自分のやりたいことに熱中するあまり、ほかのやるべきことを-無視したり忘れるわけではないが-二の次にしてしまう。*3気が乗ると、非常に正確かつ厳密に仕事をするので、ほかの人を驚かせたり、うらやましがらせたりする。仕事のためとあれば危険もかえりみない。


ISTP型の男性は、伝統的に男の活動とされているもの(一対一でやるスポーツ、重い装置を扱う作業、自動車レーサー、大工など)にやりがいを感じ、満足感を覚える。


ISTP型の女性も、そういうものが得意で満足感も大きいが、実際にやると、おてんばと見られてしまう。


ISTP型は往々にして、とくにE型やJ型の人には不可解に思われてしまう。予測できない行動をとったり、人との付き合いに無関心に見えるところが、E型やJ型の気にさわり、文句をいわれる。


ISTP型はそうした押し付けがましさに反発を覚えるだけではなく、わざと期待はずれに振る舞い、内心ではほくそ笑んでいるので、結局は相変わらずよくわからない人だと思われてしまう。



こっちは親子関係。この手のヤツで「親子関係」ってセクションは珍しいな。



ISTP型の親は、ものごとが計画どおりにいくとは思っていない。


ようすを見ていて、いざというときにやる。


どんなにきちんと立てた計画でもうまくいかないことがあると思っている。


興奮したり、感情的になったり、冷静さを失うまいとする。


そんなことをしたら、余分なエネルギーを使ってしまい、次に起こることに対処できないという、もっともな理由があるのだ。


ISTP型の親は子どもに自分を押しつけない。


子どもの主体性、干渉されたくない場所、関心や発達の違いを大切にして、言葉でも行動でもその価値観を実行しようと努力する。


だが、意見が衝突すると、ISTP型の親でも声をあらげて感情的に応じてしまうことがあるが、いったん気をしずめると、いくつかの選択の余地を冷静に示す。


ISTP型の子どもは、機械などがどういう仕組みになっているのか知りたくなると分解してしまったり、やりたいことがあると、承諾も得ずにさっさとやってみようとしたり、ほかのタイプの人からはいつも面倒を引き起こしているように見られてしまう。


オートバイに関心を持ち(乗るのも修理するのも好きである)、家族の心配の種になることが多い。


目下の関心事で実際に経験できるものを学ぶのがいちばん楽しい。


何かを学ぶには実際にやってみるしかないと思っている。


だから、抽象的なことや日常生活に直接関係のないことになるほど、関心がなく、やる気が起きない。


ISTP型は子どもも大人も、歓迎会、記念日、親睦会といった家族の特別な行事を楽しみにするが、行事そのもの内容よりも、特別なケーキを焼いたり、贈り物を用意したりといったその下準備のほうに関心を向けることが多い。


本番をないがしろにするので、ほかのタイプの人はそうした行動を気配りがない、協カ的でない、つきあいが悪いと受けとる。だが、そうではない。


ISTP型は社交的なつきあいをあまり必要としていないだけなのだ。


その行事が終わると、ニ、三のごく親しい友人には、まだ帰らなくてもいいではないかと勧める。


それからが「ほんとうの」パーティーで、気の合う友人と楽しいときを過ごすのである。





*1:超身に覚えあり


*2:見に覚えあり


*3:見に覚えあり


Xango



朝8時半くらいからXangoハッキング中。設定値が設定ファイルからしか認識されてなかった。とほほ。


1.05で直した。あとあれだな、ファイルシステムにデータをセーブするコンポーネント作らんと。しかしPoCo::Client::HTTPって継承クラス作りにくいんだよな・・・


Apache2::UploadProgress




http://search.cpan.org/~ceeshek/Apache2-UploadProgress-0.1/



す・ば・ら・し・い!Jemplateは俺的にうざいので(なんかTTから変換ってのが妙にむかつく)それなしでほぼサンプルのまんま作ってみたら簡単にできた!これからPerl使ったサイトでアップロードプログレス無しなんてありえねーな!


「若」



バイト代を払う代わりに飯をおごることにしたので外食。「暖まるものを」というリクエストだったので、相棒ちゃんに「あたたまるもんって何がある?」と聞いたら「チゲ」「ちゃんこ」と出てきたので、例のあの兄弟の兄ちゃんのほうのちゃんこ屋「若」へ。


ちゃんこのくせして結構混んでて、へぇ。結構うまいよ。でも店員の気が利き過ぎでさっさと皿を片付けていこうとするのが若干うざい。ま、しかし値段からすると・・・まぁいいんだけど。


成分分析




http://c-kom.homeip.net/cgi-bin/megaton/seibunz.cgi



曰く



牧大輔の3%は心の壁で出来ています

僕の3%はATフィールドでできてるんだ!ちなみに64%はツンデレでできているらしいですよ、奥さん!


NTT最悪



もう一度言うぞ。



http://www.ntt-west.co.jp/open/tani_ryoukin_0509/areapay2.html



さーいーあーく。PDFでデータおくなっつーの!これはパースとかそういう問題じゃなくて手入力だな・・・いやだなぁあああ。


Home (Is Not) Sweet Home



ここ立て続けに何人かに同じような事を言われてるのだが、家に帰るのがしんどい。家にいると落ち込む。結果、飲み歩く。


はやくHome Sweet Homeにしたいものだ。


意外と読まれてる。



渋谷センター街でビール。バースデーボーイがいたのでぱちぱちぱちぱち。昨日から26歳だって。なんだ、最近若いって知るとちょっと憎悪が・・・うそうそ。でも既婚者にちょっとまじめに憎悪が・・・いや、嘘です。


新宿移動して、バー。モルト2杯で、あとは葉巻。この店葉巻あるの知らなかったよ。


しかしこの日記読まれてるなぁ。なんか変な感じ。


CSRF

Evangelion is A Big Mind-F*ck



数年前に某O氏に14時間耐久視聴を強制されていらい見てなかったエヴァなんですが、今回テレビ編と劇場編両方みたわけですよ。今回は話の流れがある程度わかってたし色々聞いたり読んでたりしてたから結構わかったのだけどこの話はしかし・・・


ちなみにDave Rolskyが俺の事務所に立ち寄った時にもちょっと見てたので、それを見た彼が「This anime is such a mind f*ck」とか言っててその時は正直「言い過ぎじゃねぇの?」と思ってたんだけど見終わってみた後の感想は本当・・・ヤられた感がある。


なんつーか、ネガティブなもんが注入されてしまった感じがするね。というわけで皆さん、迷い事や、心に何か足枷のある人は見ないほうがいいですよ、これは。なんかバカらしい映画とか見てこれをふきとばさないとな・・・


NTTのアホ




http://www.ntt-east.co.jp/info-st/mutial/suburbs/numlist/ma_area4.html



こんなんパースできねーよ!(追記:パースしたよ!)


住所マッチ



結構手間かかった。政令指定都市を含む全国の都道府県をうまくマッチできるようになった。


人と人はうまくいかない。



好き同士でもうまくいかない。片方だけでもうまくいかない。好き同士のタイミングがずれててもうまくいかない。好きの量がずれててもうまくいかない。生活があわなくてもうまくいかない。


大好きなのよね。でもだめなんですよね。


へへー。よっぱらいだよ、悪いかー。


鎌倉の桜(葉桜)



鎌倉の桜を見てきました。偶然なんかのお祭りと同じ日で鎌倉は人がとても多かったけど、北鎌倉あたりは割と普通。いい天気だし、いい感じ。北鎌倉のお寺はなかなかよかった。チーズケーキ食べて北鎌倉から横浜へ。


軽く飲みながら恋愛相談のったりして。相談にのるのは嫌いじゃないんだが、それよか自分をどうにかしろよという話ですな。


掃除片付け



この間テレビ台をリサイクルショップで買ったので(4000円!)、ついでというかなんというか掃除&片付け。いやー、一人住まいでも埃はたまるのねー。テレビとPS2がようやく「正しい」位置に収まった。その他の書類も事務所で相棒ちゃんがやってるのをイメージしながら片付け(まだ入れ物ないからあまりかたづいてないけど)。


あとは配線のたぐいをちょこまかと整理。


なにをするでもなく



ほげほげぽけー。今日はちょっとでかけたいところだけど行くところがないなぁ。なんか自転車ですいーっと行きたい感じだね。


復活



30分くらい寝たらもとにもどったので仕事。あのですね、住所をマッチするって難しいな!



http://ja.wikipedia.org/wiki/%E6%94%BF%E4%BB%A4%E6%8C%87%E5%AE%9A%E9%83%BD%E5%B8%82



政令指定都市は都道府県を省略してもいいのでこのパターンも入れないとな・・・


仕事飽きたよ・・・



仕事飽きた飽きた飽きた飽きた飽きた飽きた飽きた飽きた。


XSからpthreadつくってほげほげしてXSに戻す



YAPC::Asiaで発表したからとかそういうわけではないのだけれども、ちょっとXSづいている。今回は並列で複数DBに対して同じクエリを投げて、それを集約するコードをpthreadで書いてみた。


愕然と速くなったけど、結局一番のスピードゲインはDBへのアクセスの仕方の変更だったかも。


すずらん



渋谷のすずらんってラーメン屋はうまいよ!味噌野菜つけ麺うまうま!ちょっとフェトゥチーネみたいな「ひもかわ麺」を頼むのがポイントですね。普通の太麺はスープがあまりからまない。


FreeBSD + pthread



Linuxでは動いていたのに、FreeBSDだと壊れ始めた。



void
threaded_function (void *arg) {
pthread_mutex_t *m = (pthread_mutex_t) arg;

pthread_mutex_lock(m);
...
pthread_mutex_unlock(m);
}

int
main(char **argv, int argv) {
pthread_t p;
pthread_mutex_t m;
pthread_mutex_init(m);
pthread_create(&p, NULL, threaded_function, (void *) &m);
}

はだめ。main()スコープでmを渡したらpthread_mutex_lock()だろうが、pthread_mutex_trylock()だろうがいきなりブロックした。ほげほげ。


他の例を見たらグローバルスコープにmutexがあったのでそれをやってみたらとりあえずブロックはなくなった。が、1スレッドしか動いてくれない。どうしたんだ・・・


Digest:: ベンチマーク



ふと気になったのでDigest::MD5とDigest::SHA1の差を見てみた。ちなみにたまに使う事のあるMD5を2回かけるベンチもついでにとった。



daisuke@beefcake benchmark$ perl digest_bench.pl
Benchmark using:
Digest::MD5 = 2.36
Digest::SHA1 = 2.11
====
# Generating tokens... (max length = 10)
# Done, running benchmark... (100000 iterations)
Rate double_md5 sha1 md5
double_md5 21231/s -- -36% -46%
sha1 33003/s 55% -- -16%
md5 39370/s 85% 19% --
# Generating tokens... (max length = 100)
# Done, running benchmark... (100000 iterations)
Rate double_md5 sha1 md5
double_md5 19608/s -- -25% -43%
sha1 26247/s 34% -- -23%
md5 34130/s 74% 30% --
# Generating tokens... (max length = 1000)
# Done, running benchmark... (100000 iterations)
Rate sha1 double_md5 md5
sha1 6859/s -- -29% -45%
double_md5 9718/s 42% -- -22%
md5 12422/s 81% 28% --
# Generating tokens... (max length = 10000)
# Done, running benchmark... (100000 iterations)
Rate sha1 double_md5 md5
sha1 776/s -- -50% -51%
double_md5 1562/s 101% -- -1%
md5 1580/s 104% 1% --
daisuke@beefcake benchmark$

md5_hexなりsha1_hexにいれるデータサイズが大きくなればなるほどsha1とmd5の差が大きくなるかと思いきや、10 -> 100になる段階で一旦性能がよくなり、1000を超えると今度はdouble-md5に負けてしまうところ。


これを見るとどうもハッシュというものはデータサイズがせいぜい100バイト前後というのがスピードを求める時の理想的な使い方のようだ。


いざさらば



大寝坊して、朝食の時間を逃した。のっそりおきだして、時間に余裕を見て新幹線の切符を購入。駅構内のうどん屋で朝食(讃岐うどんとしては失格かもしれないが、東京もんには十分うまい)。モーニング読みつつ新幹線を待つ。


車内でコーディング。久しぶりにCを書いてたら、結局品川につくまでの間にコンパイルまでたどり着かず。あと3時間くらいで終わらせたいところ。品川駅は新幹線からの乗り換えとしてはちょっと不便だわん。


ばたばたー



品川駅から直行で事務所。仕事して、7時に銀座。YAPCで色々面倒見たDave夫妻がご飯おごってくれるというのでインド料理Dave達はVegan(ベジタリアン+牛乳、卵も無し)というスタイルなので選択がむずかしい。少なくとも俺のデータベースにはそんな店はないw。そんなわけで店のチョイスは彼らにまかせたのだが、結構うまかった。しかしベジタリアン飯というのはなんか食べた気がしない・・・


事務所にお土産とかをおいていったので一旦事務所に戻ってから帰宅。家に帰ってスコッチ飲みながらメールしてたらいつのまにか寝てた。ものすごい深い眠りだったわ・・・


はいはい、買いました。



元々買うつもりではいたけど、↓うるさい人たちがいるのでお土産買いに京都駅。ちょうど日本酒の試飲をさせてくれてたので飲んでたら結構よっぱらった。ああいうところのおばちゃんは買いそうだと見ると本気で飲ましてくるからなぁ・・・


偶然京都御所



二条城も見終わって、京都御所へ


そうしたらちょうど今日から一般公開開始!ラッキー。あとで聞いたら1年に一回10日ほどしか一般公開しないのだそうだ。入れたのはいいのだが、こちらは二条城と違って全部柵がたってて建物の近くに寄れないし、一般公開初日とあって人がいっぱい。うー、ふすまとかもっとちゃんと見たかった。途中で観光客のじいちゃんが倒れてて、担架で運ばれてたりしてた。大丈夫かなぁ。


御苑内の花が京都で一番美しかった。さすがに明治天皇までが実際に住んでたところであるなぁ。


二条城



京都駅のコインロッカーに荷物を突っ込んで、二条城へバスで。さすがに今日は雨も降ってるし時間もないから歩かない。鶯張りの廊下をキイキイならせながら二の丸を見学。まわりは外人だらけだ。もう何語圏の人かさえわからんのも多い。


色々みて思ったのは「日本人は木の使い方がすごい」。ちょうつがいにして、斜めに合わせて力の方向をコントロールして、見事に建築物を作り上げてる。「釘を使わない建築」って本ないかなあ。


最後にみたらし団子をお昼かわりに食べた。


iPhoto



iPhotoだと画像のサイズ変更ができないのかしらん。fotolifeにあげにくいなぁ。


雨・・・



朝少し時間もあるから清水寺も見ようかなぁと思ってたのにあいにくの雨。うーん、いっとくべきかなぁ。


後楽園



うさぎな人と花見花見。ライトアップされてすごい綺麗。そして・・・寒い。寒い。寒い。寒い。なんでこんなに寒いんだ。その後店に移動して飲んで、さらに移動して飲んで。うまかった!


さわらの刺身を食べた。前々からさわらの刺身というものがこのあたりに存在するというのは知っていたけど、食べたのは初めて。もっちりしていてとても上品な味でうっまーい。


酒は意外と量が飲めなかったなぁ。ホテルに帰って微妙にほくそ笑んだ。復活。


さか季



ネットで調べて祇園の「さか季」という店に行ってきた。ちょっと場所がわかりづらいが、ここはすごくいい店だった。絶対また来る。筍の焼き物をリクエストして食べたらばかうま。酒が進む進む。


カウンター席は客が二人だけだったので大将達と一緒にしゃべってたら隣の人とちょっと仲良くなったのでメアド交換だけしてきた。また今度京都来たら連絡してみますかね。


今週号のAERAに載ってたクイズ




L I P
+ L I P
----------
K I S S

それぞれの文字が違った数字に対応し、LとIはゼロ以外とする。うつらうつらしながら考えたらできた。以下俺の解答



まず実質的にある任意の数を二倍にしている、という前提を考える。ということは必然的にS = 偶数である。よって、Pの桁とIの桁とも偶数である。


今度はPとIの関係で考える。P + P > 10だった場合1繰り上がるが、この場合繰り上がる可能性のある数は1だけであるからI + I + 1 = Sとなってしまうが、S は偶数だから必然的に繰り上がりはない事になる。ということはP < 5なので、Sは8, 6, 4, 2, 0のどれかになる。S = 0はありえない。なぜならS = 0と仮定すると、P = 0になってしまい、異なる文字は異なる値という条件が成立しない。


今度はIだが、L + L の一の位は偶数であるがI != Pのため、必然的にI >= 5となり、S != 0であるから I > 5となる。となるとL + L + 1 の一の位は Iであるから、Iは必ず奇数でなくてはいけない。よって、I = 7 or 9。これによりも必然的に2か4となる。


I = 9, P = 4と仮定すると



4 9 4
+ 4 9 4
----------
1 9 8 8

I = 7, P = 2と仮定すると



3 7 2
+ 3 7 2
----------
1 7 4 4

となるので全ての条件を満たすのは 372 + 372 = 1744しかありえない。Q.E.D.


ごめん、ねぼけてた。3じゃなくて、8ね。872 + 872 = 1744


Let’s 移動



今日の富士山はとても綺麗。晴れ渡って、しかもまだわりと裾野のほうまで白い。


結局銀閣寺から歩きづめ



建仁寺→五条大橋→東本願寺→ホテルと歩いた。どれくらいの距離あったんだろう。11時くらいから15:50くらいまで歩きづめ。疲れた。


ごみごみ



八坂神社から四条河原。人多い!夜は筍を食べたいがいい店ないかな。


ひとやすみ



祇園の辺りを川沿いに歩いてたら知恩院に来た。なんか俺でさえ名前を知ってる。さすがに3時間以上歩き詰めなのでちょっと休憩中。


栗田神社



こじんまりした神社は好きなんだが次にどこにいけば京都駅に近付くのかわからなくなったぞ。こまったなー


寺のくせして



拝観料とるところはたいしたことないとこばっか。


銀閣寺の横にあった八神社と哲学の道沿いの大豊神社はなかなかよかった。←ここでは桜も満開。その他の場所では三分咲きってところか


ちなみに有料でもさすがに南禅寺の三門には登りました。すごーーーい


京都



京都着いた。とりあえず荷物をホテルに預けてバスで銀閣寺に移動。


Many Singletons Deemed Evil



同等の機能を持ったSingletonクラスを多数と、色んな値を設定できる1つのクラス。比べてみたら差は出るだろうと思ったけど、これはひどいと思った。DateTimeではLocaleとTimeZoneはSingletonで、両方合わせて数百個ある。では、とりあえず100個のシングルトンと1個のクラスで100個のオブジェクトを作るとこんな感じ:



# 100 classes
daisuke@beefcake daisuke$ perl test.pl
Rate singleton regular
singleton 1205/s -- -12%
regular 1370/s 14% --
daisuke@beefcake daisuke$

ま、普通のクラスが速いのは当たり前だね。じゃあ1000個にすると・・・?



daisuke@beefcake daisuke$ perl test.pl
Rate singleton regular
singleton 85.5/s -- -40%
regular 143/s 67% --
daisuke@beefcake daisuke$

う、う、う、うぎゃあああああ!なんだこれ!なんだ、この67%って!なんだこの143/sって!さっきは毎秒1000回以上だったのに・・・


というわけでSingletonは必要な時にだけ使うのが正しいようです。今急に思い出したけど、Gang Of Four本にもたしかそんな事が書いてあったような気がする。


DateTimeのスピード、ちょっとアップ



おいらのXSパッチが入っているParams::Validate-0.81がリリースされたので、早速ベンチマークしてみましたよ。



# 0.80
daisuke@fo001$ perl dtbench.pl
Rate with_validation no_validation
with_validation 3657/s -- -14%
no_validation 4267/s 17% --
daisuke@fo001$

# 0.81
daisuke@fo001$ perl dtbench.pl
Rate with_validation no_validation
with_validation 3855/s -- -17%
no_validation 4638/s 20% --
daisuke@fo001$


単純比較で約10%速くなってるっす。さらにParams::Validate::NO_VALIDATIONを使用しているときと使用していない時の差が微妙に大きくなりましたよ。


Senna 0.12



さっきあげた。XSをちょっと直してバグとった。このコード汚いなぁ・・・・


探さないでください。



明後日から数日姿を消すことにしました。でも別に普通にネット/電話はつながるので仕事はそれなりにしますー。ローカルに全部DLしてリモートでも動かせるようにしておかなきゃ。


桜の写真撮ってきます。


SQL On Rails (4/1)



アドさんから教えてもらった:



http://screencast4.sqlonrails.org/video/screencast2_lq.mov



インターネットのインポート速杉。


アドさんといえば、今日はちと一緒にバイクを見に行ってしまった。Buellってヤツ。超カッコいい。


おっとっと Xango 1.04



テスト用のSimplePull.pmがMANIFESTにはいってなかった。とほほ。直した。


おでん



弾さんの家でおでんを食ってる。なんかシュール。


Xango 1.03



結局Hackathonに来たらYappoさんが早速エラー報告してくれたので直した。どうだ、これ。


Xango Documentation



Xangoのドキュメントをちょっとフィックスした。これはまだアップしない。




Hackathonにはなんかいかない方向になってきたのと、早く起きてしまったのでとりあえず少しハックしてた。


まず朝方にRTからバグレポートが来てたのでDateTime::Format::Pgをフィックス。こちらはCPANにすでにあげた。


あとはParams::Validateハックしてみた。Params::ValidateはNO_VALIDATIONというオプションがあって、コードを書いている人のほうが決め打ちで「絶対に平気」な値を渡す場合のように特にvalidationを行う必要がない時に使えるオプションがある。


残念ながらNO_VALIDATIONをオンにしてもコードパスがほぼ一緒なのでたいしたパフォーマンスの差が出ない:



daisuke@beefcake Params-Validate$ perl benchmark.pl
Rate validate_on validate_off
validate_on 2404/s -- -19%
validate_off 2985/s 24% --

というわけでNO_VALIDATIONが有効な時にはコードをショートサーキットして、その辺りをすっ飛ばして処理するようにしてみた:



daisuke@beefcake Params-Validate$ perl benchmark.pl
Rate validate_on validate_off
validate_on 2597/s -- -30%
validate_off 3731/s 44% --

30%ほどの差。ちなみにこれであちこちにちりばめられたno_validation()の使用を全体で4個までにおさめられるので分岐が減り、ベースパフォ-マンスも5%くらいあがるよう。PatchはとりあえずHackathon参加中のDaveに送っておいた。


(追記)Params::Validate 0.81でこれがアップされた。


遭遇



そういえば、今日市川実和子に遭遇。ちょっとじろじろ見すぎた。


Hackathon - つんでれ



Danさんがつんperlを実装してたので、さらに拡張してみた。まず、Acme::Compileというベースクラスで、



package Acme::Compile::Tsundere;
use strict;
use base qw(Acme::Compile);

...


みたいにして拡張できるようにした。あとメッセージの変換はregister_pattern()というメソッドで逐次足せるようにしてみたぞ。これでつんでれメッセージも定義し放題だ!あとはメッセージのパターンを送ってくれ!w



# Copyright (c) 2006 Daisuke Maki <dmaki@cpan.org>
# All rights reserved.

package Acme::Compile;
use strict;
use base qw(Class::Data::Inheritable);
use Module::Compile -base;

BEGIN
{
__PACKAGE__->mk_classdata('RegisteredPatterns');
__PACKAGE__->RegisteredPatterns([]);
}

sub pmc_compile
{
my ($class, $source) = @_;
my $filename = $0;

$source =~ s/no\s+$class\s*.*;\n//o;
eval $source;
return q() unless $@;
my $e = $@;

my $context = {
class => $class,
filename => $filename,
};

$class->pre_translate();
foreach my $line (split (/\n/, $e)) {
$class->translate($line, $context);
}
$class->post_translate();

return q();
}

sub register_pattern
{
my $class = shift;
my %args = @_;

my $p = $class->RegisteredPatterns;
push @$p, \%args;
}

sub pre_translate {}
sub post_translate {}
sub translate
{
my $class = shift;
my $line = shift;
my $context = shift;

my $patterns = $class->RegisteredPatterns;
my @patterns = sort { rand > 0.5 } @$patterns;
foreach my $data (@patterns) {
my $pattern = $data->{pattern};
my $replace = $data->{replace};

last if $line =~ s{$pattern}{
ref($replace) eq 'CODE' ?
$replace->($context) : $replace
}ex;
}

print $line, "\n";
}

1;


と、Tsundereクラス



package Acme::Compile::Tsundere;
use strict;
use base qw(Acme::Compile);

BEGIN
{
__PACKAGE__->register_pattern(
pattern => qr{Global symbol "([^\"]+)" requires explicit package name at (?:.*?) line (\d+).},
replace => sub {
my $context = shift;
qq(ちょっと!「$context->{filename}」の) .
qq($3行目の「$1」には明示的なパッケージ名が必要なの!);
},
);

__PACKAGE__->register_pattern(
pattern => qr{Global symbol "([^\"]+)" requires explicit package name at (?:.*?) line (\d+).},
replace => sub {
my $context = shift;
qq(もう~!いったい何回「$context->{filename}」の) .
qq($3行目の「$1」は明示的なパッケージ名が必要だって言わせるの?);
}
);
}

1;


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ