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 )


アリ喰った

植物園の木の上にラグビーボールみたいな葉っぱの塊があって、それがグリーンアントの巣なんだってさ。ケアンズだと結構そこらへんにいるらしい。食べてみたけど口内炎が良くなった気がする。(ビタミン補給にいいらしい)

緑の戦士--グリーンアント

オーストラリア北部でキャンプをすると、突然手や足など体の露出部分に強い痛みを感じることがある。明らかに何かに噛みつかれた感覚だ。患部を見ると十中八九、こいつが噛みついている。名前はグリーン・ツリー・アント、緑の腹部に特徴がある。この部分にはビタミンCが豊富に含まれ、味見すると強烈に酸っぱいそうだ(ワシはまだ試したことがない)。アボリジニはビタミン補給のため巣を丸ごと煎じて飲むという話も聞いた。

Fedoracoreインストール

さて、インストールするOSはRedHatLinux(RHL)の後継のFedoracoreです。なんでも、よかったんだけど、RHL4からずっと触っているからしっくりくるっていうか手に馴染む感じが良いのです。

あとは、ググググしている間にC3(EPIA-ME6000)だとFedoracore2(FC2)を入れるのに苦労するというネタをみつけて、そそられたからダ。

KAIGAI.GR.JP
http://blogtsukuba.zive.net/adiary/index.php?200406
どうやらVIA C3の場合、CPUIDで返す値と実装されている命令が違うらしく、i686用にビルドされたカーネルでは起動しない。 そこで、i586用にビルドされたカーネルを使用するのだが、 上のURLで紹介されている方法はCD-ROMブートが前提

全然歯が立たない(インストールの)ハードルは苦痛以外のナニモノデモないが、「インストールできたヒトがいるらしい」「ダメでもFC1がインストールできる!」という保険のかかった状況は素敵。まぁ適当に頑張って、うまくいかなくても満足したらFC1入れたらイイジャンみたいなシチュエーションは好き。

というわけで、夜な夜な x2 のトータル4日間かけてFC2のisoイメージをダウンロードしてインストール用CD作成。Rの一枚目をCDROMドライブに挿入して、早速起動してみると最初の画面は出るのだが、やはりブートでとまり、勝手に再起動。

よし、とばかりに上の方法を試すハズだったんだけど、どうも参照先がつながらない?ググググしてもそれらしきサイトは出てこず。

つまりこういうことです。「戦わずして負け」

しかも、また3日かけてFC1落とすのはヤダナので結局本屋にはしって(田舎なので車で)、ROM付き本を購入(2500の無駄金)。最初からFC1落としておけばヨカッタカナー(と今は思ふ)

それにしても、3枚とか4枚とかのisoを落とす時間はなんとかならんかなー?と、、、、

CPUの高速化は最近どうでもいいけど、ネットワーク速度の向上への欲求は尽きることはナイネとつくづく思ったヨ。枯れないビジネスモデルか?

あと、ADSL使ってんだけど、基地局から離れてるので1.5Mプランよりも上にしてもあんま意味ないみたい。それなのに、しょっちゅうモアとかモアモアとかのチラシ入れんのはヤメテ

帯域デバイドの是正の必要性を指摘したい(ヒカリいれろって?)

Fedoracore1インストール

結局FC1をインストールすることになったわけですが、インストール自体は至極簡単。ナビにまかせてクリックするだけです。一応、セキュリティーのこと考えてサーバー関係は後から入れることにして、「パーソナルデスクトップ」を選択した。

さて、初ログインしますが、、、、限りなく遅~~。ターミナル起動するのに10秒位かかりますヨ(マジで)。C3だとこんなもんなのか?

Software Design

【夏休み大特集】 Eclipse 3.0収録CD-ROM付きですぐに始められる!! Eclipse 3.0&JSFで 個性派ネットワークアプリ工作 2004年夏、Javaに新たな息吹が生まれます。そう、Javaの次期バージョン1.5です。さまざまな機能強化が予定されていますが、一番の注目はJSF(JavaServer Faces)が正式に取り込まれることでしょう。JSFは、JSPの進化系と呼べる技術で、魅力的なWebアプリケーションを生み出す可能性を秘めています。さらに、Javaベースの開発ツールとして定番となったEclipseの次期バージョン3.0が、先日6月末についにリリースされました。 そこで、今回の『Software Design』では、JSFとEclipse 3.0に注目し、RSSリーダをメインテーマに取り上げ、本誌ならではのネットワークアプリケーション開発に挑戦します。まずは単純なGUIアプリ作成から始まり、それをJSFへ移行するノウハウの伝授、さらに9月に正式リリース予定のJDK 5.0を一足早く体験してみましょう。 皆さん、魅力的なツールをEclipse上で、JSFを使って作ってみませんか?夏休みの予定はこれで決まりです! なお、付録のCD-ROMには、Eclipse 3.0(Windows版/Linux版) と各種プラグイン 、Java 2 SDK 1.4.2_04などが付いているので、すぐに実践できます!

こんなの期待してたのに、しょうがないからWinでやるかな。というわけで、サーバーはサーバーらしくリモートアクセス専用の設定をします。(ftpとtelnet)

CUIから入れる場合はsuになって

# rpm -Uvh vsftpd-1.2.0-5
# /sbin/chkconfig --level 35 vsftpd on
# /sbin/chkconfig --list vsftpd
# /sbin/service vsftpd restart

ランレベルを設定したら「chkconfig --list」で確認。起動するのに"start"ではなく"restart"にするのは一度stopするのが面倒だから。普段使っているW2Kからファイルをやりとりするだけで、外とのやりとりはないので、vsftpd自体の設定はデフォルトのまま。外から自分のサーバーにファイルを送りたいときはWebDAVを利用するのダ(無駄にポート空けなくていいしネ)。あとはMeadowでファイルを編集するのに必要なのですヨ。

そして、telnetのほうも同様に

# rpm telnet-server-0.17-26.2
# /sbin/chkconfig telnet on
# /sbin/chkconfig --list telnet
# /sbin/service telnet restart

もしも、telnetが動かないようだったらxinetdの設定を疑え

# more /etc/xinetd.d/telnet

で、「disable = no」になってなければそのように書き換えてrestart

blog

余ったW2Kマシンに

perl

Cygwin+

Meadow

を突っ込んで

blosxomを入れてみたのでR



Meadowでの文字コードの変換はCtrl+x Ret fだけど、しょっちゅう忘れてしまうのでメモ。

サーバー不調

昼の14時半頃に停電があったみたいで、サーバー落っこちました。

で、いつものように電源入れなおしたら、、、、、

ん?起動しないぞ。

あわててディスプレイつないだら、BIOSでこけてた。で、起動しなおしたらOKだったが、電源ケーブル抜いて移動させたら

またBIOSでこけた

ちょっとというかかなりやばい感じ。

んーーしょうがないので、そろそろC3+mem128MでFC1というスペックから乗り換えようかと。

大体、メモリ128MでblosxomだとGoogleとかYahooのロボットのクロールに耐えられんしな。

あとblosxomのキャッシュももうちょい工夫して出来るだけ静的なファイルを置く。

Linuxサーバー導入

余りもののW2Kマシンで運用していたサーバー(5,6年前のパーツのP3-450マシン)でしたが

  • うるしゃい(夜寝られません)
  • 電気代喰う(250W電源なので、常時稼動だと1000円/月を超える)
  • 邪魔(ミドルタワーATXの全SCSI構成)
  • W2K(SCSIの相性のせいでLinux入らず)
といった「嫌がらせ」に耐え切れずに、新調することにしました。

そもそもサーバーなのにW2K運用というのは正直辛い。リモートデスクトップとかあるんだけど、やっぱ細かいとこいじくるのにキー、マウス、ディスプレーの三点セットは必要だし、しょっちゅうパッチあてなきゃ不安

というわけで、当初は、自作派だったら一度は触って見たい+実際に会社で導入してみて静かで驚いたキューブ系のマシンの安いラインナップにLinuxいれる予定だったんだけど、狙っていたパソコン工房では運悪く売り切れ(生産中止?)の模様。

仕方ないので、色々探してみると、同じようなチョイスをしているサイトを発見

自作サーバを組む - Linux Home Server Memo - 自宅サーバ

上記の条件を満たすのは、往々にして「使い古しのノートパソコン」だったりしますが、そんな物そうそう家の中に転がってません。 しかたがないので、Yahoo!オークションで探してみますが、これが高い。馬鹿かこいつら。さらに、しかたがないので「液晶難あり」に的を絞りましたが、どうも手ごろなのがありません。ひたすら中古を探すのもいいですが、私はあきらめてノート以外のPCを新品で買うことにしました。ノートだとコストパフォーマンス悪いしRAIDできないし…(結局諦める理由が欲しい)。

それじゃ、条件を満たすのは…と考えるがこれが難しい。 ただ、自分の中では薄っすらと答えが出ている。CPUはC3にしてしまいたい! IntelでなくAMDでもない、第三の男VIAのC3は、性能が低い代わりに消費電力が少ないという特徴があります。 まあ、至極あたりまえのことですが。

おー、C3という手があったか!(しかもかなりそそられた)。CPUで目玉焼きが焼ける現在のCPU事情のなかで低消費電力はかなり重要。さらに、主流とはいえない微妙さがマニアごころをくすぐられたのダ。(正直、サイリックスの頃は、オーバークロック真っ盛りで見向きもしなかったけど)

というわけで、新サーバーはC3ベースのマシンに決定。もちろんベアボーンから自作でもよかったんだけど、今回はとっととサーバー構築がしたかったので、完成品をチョイスします(ボーナス出たばっかで余裕もあった)。というわけで、C3マシンを探してググググしてみるとなんともよさげなマシン(crysta-PC) (SILENT)を発見。

小さいケースはかなり魅力的だったんだけど、HDDの容量と値段を考えてsilentを購入。ただ、たしかに静かなんだけど、完全ファンレスではない(ケースがファン付き)あと、黒の筐体に白のドライブだったので、暇みつけて黒く塗ったろかってな感じ。結論としてはかなり満足。

  • とても静かになった。
  • 省電力なはず(60W電源で、余計なものはつけない)
  • すっきり収納(プレステ2くらい)

醴泉 特別純米

御殿場の酒のいわせで醴泉特別純米(山田錦)

醴泉

「結構、やわらかいから冷がエエヨ」と言われたんだがすっきりしつつもコクがある感じ。半分くらいは燗でもつけっかなとか思ってたんだが、ほとんど冷で呑んでしまった。