soulfuricのDJmixをiTunesで

soulfuricのDJmixをrssにするのをplaggerで作ってみたのだけど、作リ終えてから、すっかり更新されてないことに気付いて凹んだ。

コレを詳細->podcastに登録で登録すればiTunesに取り込めます。

まぁ、ちょっと手軽になっただけだけど、全部DLすると結構楽しめる。30時間ぐらいハウス漬けだ。

僕はどっちかっていうとこういう華やかめのハウスでなくて、音響ドープ気味のハウスが好きです。

ProductName Love Moderne
Unai
Force Tracks / ?円 ( 2006-05-16 )


最近だとUNAIのI Like Your StyleとかModerne Loveが良かった。

DBICを使ってみる

最近はmysqlでデータベースを作ることが多かったんだけど、ちょっとしたもの作るのにmysqlはでかすぎるなあとSQLite+DBICをさわり始めてる。

サンプルはPerl/DBIC - Nekokak's core dumpが、よくまとまっていて非常にわかりやすかったので、これの流れで書いた。が、二箇所ほど悩んだのでメモ。ちなみに、SQLiteのせいかどうかはわかりません。

ちなみに、

  • DBIx::Class 0.07003
  • SQLite version 3.3.5

というバージョン。

last_insert_id

1:多の関係を試す をSQLiteで試す。

まずsqlはこんな感じ

create table user (
    id     integer PRIMARY KEY not null,
    name   varchar(256) not null,
    time   date
);

create table bookmark (
    id      integer NOT NULL PRIMARY KEY,
    user_id integer NOT NULL,
    url     text NOT NULL,
    FOREIGN KEY (user_id) REFERENCES user(id)
);

CREATE INDEX user_id_idx ON bookmark (user_id);

で、データベース作成

sqlite3 kzfm.db < test.sql

Schema,User,Bookmarkモジュールはほとんど同じだがload_componentsにPK::Auto::SQLiteを使う。

use strict;
use warnings;
use base 'DBIx::Class';

__PACKAGE__->load_components(qw/ PK::Auto::SQLite Core/);
__PACKAGE__->table('user');
__PACKAGE__->add_columns(qw/id name/);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many(bookmark => 'Kzfm::Schema::Bookmark', 'user_id');
1;

こんな感じ。

で、実行してみると、、、

my $i = $schema->resultset('User')->create({name => 'kzfm'});
$schema->resultset('Bookmark')->create({
    user_id => $i->last_insert_id ,
    url => 'http://test.com/'}
);

last_insert_idがないと言われた。単にidだけでよいのか

might_have

loginテーブルにマッピングさせるモジュール

のとこでUser,Loginお互いにmight_haveを指定すると->idでIDがゲットできなかった。

use strict;
use warnings;
use base 'DBIx::Class';

__PACKAGE__->load_components(qw/ PK::Auto::SQLite Core/);
__PACKAGE__->table('user');
__PACKAGE__->add_columns(qw/id name/);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many(bookmark => 'Kzfm::Schema::Bookmark', 'user_id');
#__PACKAGE__->might_have(id => 'Kzfm::Schema::Login');
1;

package Kzfm::Schema::Login;

use strict;
use warnings;
use base 'DBIx::Class';
use DateTime::Format::MySQL;

__PACKAGE__->load_components(qw/PK::Auto::SQLite Core/);
__PACKAGE__->table('login');
__PACKAGE__->add_columns(qw/id login_time/);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->might_have(id => 'Kzfm::Schema::User');
__PACKAGE__->inflate_column('login_time', {
    inflate => sub { DateTime::Format::MySQL->parse_datetime(shift); },
    deflate => sub { DateTime::Format::MySQL->format_datetime(shift); },
});

幾つかのパターンを試した結果、参照するほうにmight_haveをつけるらしい。あと、SQLiteの場合日付まわりをどう処理すればいいのかよくわかってない。とりあえずMySQLのフォーマットでも動くような気がするんだけど。

というわけで、時間のあるうち(気力のあるうち?)に、多対多まではいっときたい。

sqliteはtrigger使える

SQLite+DBICで色々やるために、SQLiteまわりをみてたらtrigger使えるという事実を知った。

SQLite が認識できる SQL

そういえば、O/Rマッパーとトリガーを一緒に使うと調子いい例ってあるのかな?

とか思った。

御殿場高原ビール

ビールを飲んでスペアリブをほおばろうということで、みんなで御殿場高原ビールに行ってきた。飲むために三島の駅から出てる送迎バスを使った。

送迎バス

子供用の椅子はないが、アダプターを用意してくれるので子供連れもOK(ただし、縛り付けるものはついてないので小さい子供を連れて行くときは紐みたいなの用意しておくとよいかも)

で、子供用の皿とフォーク、スプーンをもらって大満足のユキ。

ユキ

ビールは定番の4種類くらいと季節限定のものがある。僕はヴァイツェンばっかし。

ビールメニュー ロマーナ

ロマーナはアンチョビが効いててうまかったけど、アンチョビ自体が結構しょっぱいので、固まりでなくもうちょい散らして欲しかった。

今回のお目当ての山賊のスペアリブ。ナイフで切って骨まわりをかぶりつき。で、ビールをぐびぐびと。

山賊のスペアリブ

ビール飲みに行く場所としては最高だ。

イルミネーションもそろそろかな。

イルミネーション

ビールは350mL缶が新たに出たみたい。お歳暮に使おうか。

御殿場高原ビール

sqliteのバックスペースが効かない

sqliteのlinux用バイナリをFedoraCoreで使うと、コマンドプロンプトはバックスペースが効かず、^Hが表示されてしまい、SQL文の修正ができず面倒だ。

と思ってたらCtrl-BackspaceでOKなことを発見した。

でも、コマンド履歴はCtrl-(矢印 or p)では動かなかった。

MSYSは意外に使い勝手が良いことに気付いた

ちょっと前まではwin上に手軽にunix環境が作れるcygwinは重宝してたのだけど、linuxをエミュレートするcolinuxに変えてからは、cygwinの出番がすっかりなくなってしまった(colinuxで普通にlinux使えばいいからね)。

で、最近C++の勉強はじめたりしてるのだけど、コンパイルしたいだけなのに、毎回colinux立ち上げてtelnetすんのも面倒。

  • Meadow+Trampでcolinuxにアクセスしてファイルをいじって、
  • poderosaでsshしてgccでコンパイル

てのはアレだ。やっぱC-ccでMeadowからコンパイルしたいナァとMinGW+MSYSを入れてみたら、これが結構良くて、Dos窓から色々unixのコマンド使えるようになるので、DOSプロンプトでlsうってウゲーってなったりしなくてよいし、lessでファイルの中身見れるし、ちょっとした設定ファイルならMeadowでなくてvimでも編集できるし。

今はlinux上でガツガツ作業したいときにはcolinux、Win上でゆるーく使いたいときにはMSYSってな感じで使い分けてるが、MSYS-1.0.10.exeインストールした時に60位のコマンドがインストールされたんだけど、幾つか見た事がないのがあるので調べてFC1の--helpをのっけといた。

  • basename
  • パス名からディレクトリ部分を取りのぞいた名前を表示する.指定があれば, 末尾の拡張子も取り除く.
  • cmp
  • 2つのファイルをバイトごとに比較します。
  • comm
  • それぞれソートされた ファイルA と ファイルB とを行ごとに比較します.
  • diff3
  • 3つのファイルを行ごとに比較します。
  • dirname
  • パス名からディレクトリ名を切り出す. パス名にディレクトリが含まれない場合カレントディレクトリと見なして `.' を出力する.
  • fold
  • ファイルの各行の折り返しを行い, 結果を標準出力に書き込みます.
  • id
  • 指定されたユーザ名のユーザもしくは現在のユーザの情報を表示.
  • info
  • Read documentation in Info format.
  • infokey
  • Compile infokey source file to infokey file.
  • install-info
  • Install or delete dir entries from INFO-FILE in the Info directory file DIR-FILE.
  • m4
  • Mandatory or optional arguments to long options are mandatory or optional for short options too.
  • tee
  • 標準入力を各々のファイルにコピーし, 標準出力にも出力.
  • texindex
  • TeX の為のソート済インデックスファイルを生成します
  • xargs
  • 標準入力からコマンドラインを作成し、それを実行する

ポピュラー(僕的に)

bzip2 cat   chmod  cp    cut   date  diff  env
find  gawk  grep   gzip  head  less  ln    ls
make  makeinfo     mkdir mount mv    od    patch
ps    rm    rmdir  rxvt  sed   sh    sleep sort
split tail  tar    touch tr    uname uniq  vim 
wc    install      expr  false md5sum      true

Meadowで、M-x shellで普通にlinuxのターミナルっぽく使えるのもよい。

DNAchipデータのレポジトリ

昨日、今日とバイオインフォに引き戻されつつある今日この頃(まぁ、インフルエンザみたいなもんだと思う)。

システムまわりの話をしていてたところ、アレイのデータのレポジトリから(適当な条件で抽出した)サブセット作って管理すんのにマテリアライズドビューが要る(ないと遅すぎて使い物にならん)とか言われたんだけど、ちょっと納得がいかない。まぁ、要するにDBがオラクルのため、マテリアライズドビュー使えるライセンスの値段がちょっとアレで、本当にその仕事に必要なのん?って思ってしまったわけなんだけど。

こういうのってビューにする必要あるのかね?アレイのデータなんて修正しないんだから、別のテーブルに作っちゃえばいいじゃんとか思うんだけど。

要するに、更新されることのないviewを高速化する手段にマテリアライズドビューよりも現実的な解があるんじゃないの~とか思ったんだけど、こういう場合ってどうするのが定石だったりするのでしょうか?

得正でカレーうどん

突然の出張で、何も考えてなかったので、適当にぶらぶらしてたらカレーうどんの店を見つけたので入った。

得正

海老天入りのカレーうどんを注文したら、うどん茹で中なので5,6分待つよとのこと、OK気にしないとか言ったけど、待ったの5,6分じゃなかったかも。

カレーは、注文を受けてから、一人分か二人分をストックから鍋に移して、ポットから謎の液体を加えながら、ゆるくしていってます。

うぉーポットの中の液体なんじゃろか?出汁か?和風の出汁なのかとか謎めいてたんだけど、うどん食べてるときに、おもむろに僕の目の前でジャーとかいって水道水入れてたヨ。まぁ、種を明かせばそんなもの。

カレーうどん

うどんは、讃岐っぽいけど、こしというよりモチモチ感が強いのかな、これはこれでうまいかも。あと、カレーが甘い。甘さがやわらかいんだけど、よくよく考えてみるとやっぱ甘い。この前、デリーでコルマ食べてるだけにちょっと物足りなかったかも。

http://www.tokumasa.net/

さらざん

近所(っていうほど近くないけど)に滝があるので、家族総出で遊びに行ってきた。

五竜の滝

で、公園の中に自家製粉の蕎麦屋があるので、うっかり一枚注文してしまった。

さらざん

ちょっと太いかなと思ったが、蕎麦の香りが良くてうまかった。

さらざん

マルコフ連鎖モンテカルロ

SVMの流れで、MCMCとかベイズあたりを読んでる。

で、昔買ったけど最初の方の章だけ読んで放り投げてあったベイズ統計と統計物理を読んでたら、MCMCの話とかちゃんと書いてあって、面白かった。

で、尤度とか、事前分布、事後分布がまだイメージできないナァと、ちょっとググッたら、Bayesianってどういう考え方なんだろうというページがみつかった。

事後確率 = (尤度 * 事前確率)/エビデンス

エビデンスの部分の積分が困難なので、事後分布のシミュレーションをMCMCでやると。

ベイズ統計学のMCMCとの出会い

こんな感じの理解でいいのか?