plaggerで狙い撃ち

plaggerいじりしていて集中力が切れたら、突然、狙い撃ちbyリンダが、、、、、

プラガ~プラガ~プラプラガ~~

うーん、頭から離れん。

Exit Music届いた

ラストのExit Music (For a Film)/Cinematic Orchestraはやっぱかっこええ。最近のニンジャはええかんじやね。

他に良かったもの。Knives Outは結構新鮮だったな。

  • Everything In Its Right Place/Osunlade featuring Erro
  • Morning Bell/The Randy Watson Experience featuring Donn
  • Knives Out/Wajeed (of Platinum Pipers) featuring Monica Blaire

ProductName Exit Music: Songs for Radio Heads
Various Artists
Rapster / 2097円 ( 2006-04-08 )


Google Calendarでスケジュール共有

うちのスケジュールの共有はカレンダーに直接書き込んで、朝食の際、目の前のカレンダーで確認するというアナログな方法でまぁ、うまくいっている気がしていたんだけど、最近会社のスケジュールとバッティングさせてしまうことが多い。

で、オンラインのスケジューラーを探していたんだヨ。もともと候補に挙がっていたのがphpicalendarなんだけども、自分で使う分にはいいけど、自分のサーバーだと、認証とかイントラのアクセスでホストネームが変わることとかU隊長に説明するのメンドイなぁと躊躇していたら、、、、

調子ヨサゲなサービス出た

とりあえず、共有の設定してみた。

google calendar

重ねて表示できるので便利。あとは職場(outlook)の予定をうまくインポートすればいいのかな。

喜八郎でGPBラーメン

久々に喜八朗で。

季節限定麺が変わっていて、酸辣とGPBになっていた。

GPBはガーリック、パセリ、バジルの略らしい。というわけで、それを注文(醤油と塩の合わせ味で)

GPBラーメン

結論を先に言うとちょっとはずれだったヨ。

GPBはオイル足しただけなんだろうけど、焦がし玉ねぎと、浮いてるネギ、胡麻がぶつかりあって、なんかオイリーな上に邪魔な感がした。

水菜の代わりにフレッシュイタリアンパセリにして欲しかったり、とかネギ抜くとかメンマもいらないかも、あとバジルって結構匂いがきついから使うの難しかったりするよな。

でも、ラーメンとか麺類にパセリ使うのって結構おもろいかも。家のパセリで試してみよう。パクチーとかうまいし。

イタリアンパセリ

ちゅうわけで、今度は酸辣注文してみよう。

喜八郎

一家に1枚が流行なのか?

一家に1枚周期表に加えて、一家に1枚ヒトゲノムマップってのが出来てた。

ゲノムのほうは、フラッシュおもろい。周期表の方もいじって楽しいやつ用意すりゃいいのに。でもゲノムのやつは一家に一枚とか言うてるわりには説明が難し過ぎのやつが結構あるんじゃないかなぁ。

pdfでダウンロードさすだけじゃなく、APIでも用意してたたけるようにしてくれるとおもろいのにな。

@data{@attrs} = @args{@attrs}

Perl Best Practicesがおもろいので、良書と噂のこれも読んでみてますヨ。

ProductName オブジェクト指向Perlマスターコース―オブジェクト指向の概念とPerlによる実装方法
ダミアン コンウェイ
ピアソンエデュケーション / ?円 ( 2001-02 )


のp.402で、こんなもんが

my ($class, %args) = @_;
my %data;
@data{@attrs} = @args{@attrs};

わからん ?!

そういえば、オーこれは!と思ってブックマークしてたっけなとか思い出したので探し出してきた。

のみまくし日記 - 配列を一気にハッシュへ変換

my %member;
@member{qw(name age)} = qw(takefumi 23);
print Dumper %member;

これやね。

Trickster 2.0

Trickster 2.0 is coming ...: blog.bulknews.net

というわけで、僕が数年前につくった Pure perl の mp3 jukebox ソフトウェア Trickster の 2.0 を作ろうと思っています。

これはスンゲー面白そうだということにやっと気づいた今日この頃。 どっかで試す。

MP3からアートワークを抽出する

NamingSense::TokuLog! - アートワークを Perl で設定するの法

MP3::Tag を使ってこんな風にやると、とりあえずアートワークを設定できることを確認。

と、MP3にアートワークを埋め込む方法があったので、逆にMP3からアートワークを抽出するにはどうすんだろうか?

とか思ったので調べてみたところ、MP3::Infoを使えば、$x->{APIC}->{DATA}にバイナリが入っているのでそれをプリントすればいい。

#!/usr/bin/perl

use MP3::Info;

my $file = shift;
my $x = get_mp3tag($file, 2, 2); 
print $x->{APIC}->{DATA};

このコードだと、バイナリがjpgかどうかわからんので、$x->{APIC}->{FORMAT}みてファイル形式チェックしないとあかん。

last.fmポッドキャスティングするときにアートワークがジャケである必要ないから、なんか曲にマッチした画像を自動で選んで突っ込めないもんかな。

MP3の波形とイメージの波形Image::Seekうまく相関させられるといいのか?

それか、もちっとバイナリで計算しやすそうなflickrのタグとかfingerprintにしたのと、last.fmのタグをfingerprintにしたもののマッチでも面白そうなんだけど。

和鉄

蒲田の駅そば。大盛りも無料だが、普通に注文。

節の出汁が結構出ていてうまい。でも、胡椒は別に振りかけてださなくてもいいかも。

中華そば

麺がモチモチしてて、つけ麺頼んだほうがよかったかなぁ。というわけで、次の日もう一回行ってつけ麺頼んだらこっちのほうがずっとうまかった。

つけ麺おすすめ。

Prototype ( デザパタPerl )

今回はperlのモジュール使って書いたヨ、というわけではなくインスタンスのコピーってどうやってつくんの?っていう話題だ。

naoyaのはてなダイアリー - prototype.js でデザインパターン - Prototype

登録されてるインスタンスを連想配列から取り出して返却するのですが、そのときにそのまま取り出して返却するんではなく、インスタンスに実装されてる createClone() を呼び出して返却すると。createClone() の中ではインスタンスのコピーが行われます。

で、PerlサンプルのProduct.pmみてみると

sub clone {
    my $self = shift;
    my $class = ref($self);
    bless {%{$self}}, $class;
}

sub createclone {
    my $self = shift;
    return $self->clone;
}

{%{$self}}がさっぱしわからん。なんでこれでインスタンス(ハッシュのリファレンス)のコピーが出来んの?

ってことを追求だ。

まず、インスタンスが異なるのかどうか、リファレンスをプリントして確認するためにmain.plをいじくる。

use strict;

use Manager;
use UnderlinePen;
use MessageBox;

my $manager = Manager->new;
my $upen = UnderlinePen->new('~');
$manager->register("strong message", $upen);

my $p11 = $manager->create("strong message");
my $p12 = $manager->create("strong message");

print $p11,"\n";
print $p12,"\n";

で実行。

$ perl main.pl 
UnderlinePen=HASH(0x8dc6604)
UnderlinePen=HASH(0x8dc78dc)

おー、かわっとる。うーん、、、、、

素直に考えると

  • $selfが%{$self}でリファレンスからハッシュへ
  • それをさらにbless {%{$self}},$classで無名ハッシュでブレスして戻す
  • だから、コピーされてる

んだろうなぁと思うんだけど。

試しにProduct.pmのcloneメソッドをこんな感じで変えてみる。

sub clone {
       my $self = shift;
       my $class = ref($self);
       bless \%{$self}, $class;
}

でさっきとおなじmain.plを実行

$ perl main.pl 
UnderlinePen=HASH(0x8491eb0)
UnderlinePen=HASH(0x8491eb0)

同じリファレンスだ。

ということはreturnされるときにコピーされるのかなぁ。うーん結局わからん。無名ハッシュ生成のメカニズムあたりをちゃんとチェックすれば解決するのか?

こういうメモリまわりを追っかける場合ってperl -dすればいいのかなぁ。

060412 追記

オブジェクト指向Perlマスターコースの3章に書いてあった

ProductName オブジェクト指向Perlマスターコース―オブジェクト指向の概念とPerlによる実装方法
ダミアン コンウェイ
ピアソンエデュケーション / ?円 ( 2001-02 )


refを使ってオブジェクトの型を調べつつ、新しく生成したオブジェクトをハッシュ間の単純代入をするといいらしい。

%{objref2 = ref($objref1)->new()} = %{$objref1}

だから、こんな感じでオブジェクトはコピーできるそうなんだ。

このエントリは結城浩さんの本と、それに載っているサンプルをPerlで書いた例をみながら考えたことをメモってます。あとは、はてなの伊藤さんのjavascriptでの例も参考にしてます。 間違いの指摘とか、もっといいやり方教授してくれたらとても嬉しいゾ。

ProductName 増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ / 3990円 ( 2004-06-19 )