bonar note

京都のエンジニア bonar の技術的なことや技術的でない日常のブログです。

perl

MySQLのおまとめINSERTはどれくらい速いか

MySQLで大量のINSERT処理等をする場合、VALUES で長いクエリを作って一気に突っ込むとかなり高速になることはよく知られています。何となく10倍くらいっていう体感だったのですが、計ってみることにしました。以下と同じスキーマのテーブル foo1, foo2 foo3 …

Class::Accessor::Fast から Mouse へ

Class::Accessor::Fast(以下 C::A::F)を使っているクラスで、例えば Role っぽいものを表現したくなったりして、Mouse::Role 使いたい!Mouseに移行しようかな、みたいなことがあったりします。 この2つは機能的にもだいぶ違うものでもちろん簡単には比較…

vim server 入門

vim server mode あまり知られてないのですが、vim には server として動作し、外部から入力を受けるモードが存在します。純粋なエディタとしてだけではなく、外部からの指示で特定のファイルを開いたり、用意してる関数を実行したりってことが出来るのです…

モダンPerl入門でMooseに入門してみた

Perl界隈の期待の新刊「モダンPerl入門」。読んじゃいました。モダンPerl入門 (CodeZine BOOKS)作者: 牧大輔出版社/メーカー: 翔泳社発売日: 2009/02/10メディア: 大型本購入: 23人 クリック: 465回この商品を含むブログ (112件) を見るPerl基礎の表層を一通…

Music::AutoPhrase - code-base music composition library

Music::AutoPhrase というモジュールを coderepos に上げました。以下のコマンドでチェックアウトできます。 svn checkout http://svn.coderepos.org/share/lang/perl/Music-AutoPhraseまだ完成度が低くて、「なんとか動く」っていうレベルではありますが。…

Business::ISRC 0.01

Business::ISRC というモジュールをcodereposにあげました。changeset: http://coderepos.org/share/changeset/16900本体: http://coderepos.org/share/browser/lang/perl/Business-ISRC/trunk/lib/Business/ISRC.pm?rev=16900SYNOPSYS use Business::ISRC; …

List::TableMark 0.01 を coderepos に入れました

前から少しずつ考えていた、リストをテーブル風に扱うモジュールのプロトタイプをcodereposに入れました。http://coderepos.org/share/changeset/13035なんでこんなものを作ったかといいますと、テーブル的なレイアウトを扱う局面ってすごくあって、HTMLのta…

YAPC::Asia Tokyo 2008 に行ってきた

YAPC::Asia Tokyo 2008に参加してきました。 相変わらずすごく盛り上がっていて、家族的で同窓会的な雰囲気があるすばらしいカンファレンスでした。あれほどの大規模なカンファレンスを準備して滞りなく運営した実行委員会の皆様はGJにもほどがあると思いま…

7 degrees code bubble on Music::Phrase::MMLGenerator

Music::Phrase::MMLGenerator で楽曲の断片をどう効率よく、かつ素敵に出来るかを考えています。僕が考えるゴールは、 興味をもった人が簡単に始められること 音楽的な教養が必要ないこと 「なんとなく」できること なのですが、現状どれ一つとして達成して…

Music::Phrase::MMLGenerator を CodeRepos で公開しました。

前回のエントリで書いた App::Randomizr はあまりのnamespaceセンスの無さに、尊敬する perl hacher 数名から「これはない」的助言を頂き、装いも新たに Music::Phrase::MMLGenerator として若干実装を換えつつ書き直しました。基本的には曲の一部分のフレー…

App::Randomizr - perl+pmmlで半自動作曲

先日 iTunes Store に出した楽曲「Saitama Life」を作成するためにちょっとしたスクリプトを書きまた。GarageBandで曲を作る際に、1から音楽を作るのは僕には難しかったし面倒なので、コード進行を指定してそのコード進行の中でランダムに音を選んでそれっぽ…

Use of uninitialized value の傾向と対策

テストスクリプトで Use of uninitialized value の valuewarning を出しまくってみました。 #!/usr/bin/perl use strict; use warnings; my $str; # undifined string my %hash; # undifined hash # Use of uninitialized value in pattern match # Use of …

YAPC Asia 2007 に行ってきました

ちょっと都合で初日のオードリーのPerl6に関するセッションしか聴けなかったのですが、会場の雰囲気とかはやっぱり独特のものがあって楽しかった!Dan the Suspendars は生で見たかった。見たいけど見れなかったものも、あとでビデオが公開されるらしいので…

音楽配信の次にくるもの

「リミックス」だと思う今日この頃。これから少しずつプロじゃない人たちの音源を簡単に入手できるようになってくると、それをリミックスしてかっこいい感じに出来る人がモテモテになるような。m-floみたいな感じで。 とてもチェックしきれない数の音楽であ…

名前のない配列のmapに関する世にも奇妙な物語

perlの中で便利だけどちょっぴりなものに$_があります。普通のグローバル変数とも振る舞いが違っていて、 sub foo { print "$_\n"; map { foo; } (0..2);とかやると、0から2までの数字が見事に表示されます。つまり、呼び出し先の関数の中でも通用していて、…

続chop

先日のエントリーの件(関数内で@_を操作すると呼び出し元の値渡しの引数がかわる)で、@_直接操作のメリットというかいいところはないかと考えて、リファレンスを渡す場合と速度を比べてみました。単純に変数を加算していくだけのものなのですが、こんな感…

なぜchopは値渡しで変数の内容を変えられるのか

これ多分perl使ってる人には常識なんでしょうが、僕は最近まで、「なんでchopは値渡しで渡した変数の内容を勝手に変更できるんだろう?」と疑問に思ってたんです。 だって不思議じゃないですか? $str = chop($str); で$strの内容が変更されるならわかるんで…