2037-12-31
オイラの(ネット上の)おもな活動場所
mixi はまったく知らない人からのリクエストだと応じないかも。twitter のフォロー返しとかは適当なので、もしフォローされなくてもそんなに気にしないでください。見てないことも多いし、普通に忘れてることも多々あるし。Facebook は本名で探してみてください。
2012-10-02
YAPC::Asia に行ってきたり、発表してきたりしました
yapcasia, yapcasia2012 | |
![]()
そういえば RSSで見てる人はこっちの方が多いんだった。
YAPC::Asia に行ってきたり、喋ったりしてきました。記事は github のほうに書いたので、リンクをはっておきます。
2012-09-29
YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」
perl, yapcasia, yapcasia2012, sql | |
![]()
こちらをみている方も結構いるみたいなので、リンクをはっておきます。
2012-07-28
YAPC::Asia にトークを応募しました
perl, yapcasia, yapcasia2012 | |
![]()
今年の YAPC::Asia のトークに応募してみました。
初心者も上級者も Perl 書いてる人は大抵 SQL も書いてると思いますが、初心者から中級者向けくらいの tips とかベストプラクティス的な話ができたらなー、と思ってます。
昨年もお話させてもらって、ネタ尽きたかなー、と思ったのですが、頑張って考えてみた次第。*1
過去の YAPC でありそうな話ではありますが*2、最近作られた便利なモジュールとかも結構あるし、数年前とは状況も少し違うんではないかなー、と思います。
見てみたい方は「イイネ!」とか「ぐぐたす」とか「はてブ」とかどれでもいいので、ボタンを押してみてくださいねー。
こちらの URLですよー↓
よろしくです!
ちなみに、昨年のスライドはこちら。
YAPC::Asia 2011「あんなテスト、こんなテスト(this and that about testing)発表資料
2012-07-21
2012-07-17
github pages で blog を立ち上げました
blog | |
![]()
ちょっと前に、github pages をつかって blog を立ち上げました。
アドレスは http://localhost:4000/おっと、間違えた http://tsucchi.github.com/ です。
jekyll 使ってます。そのへんの顛末もそっちに書いてあります。ここと、新しい方と、どちらを本館とするかはかなり迷っているのですが、書きやすいのは emacs で書けるほうなので、メインが変わるかもしれないなー、と思っています。
2012-07-08
ShipIt::Step::Copy というものを書いてみた
表記のとおりです。「既に誰かが作ってそうだなー」とか、「むしろコアの機能でできちゃったりしそうだな」とか思ったのですが、ざっと調べた限りはどちらもなさそうなので、試しに書いてみたら意外と簡単にできた。
.shipit に Copy というステップが書けるようになるプラグインです。copy.dir に書いたディレクトリにモジュールのディストリビューションがコピーされます。(なので、Copy は MakeDist の後に書いてね)
steps = ..., Copy copy.dir = ~/Dropbox/Public/My-Module
何がしたいかというと、この例にもあるみたいに、Dropbox のフォルダにディストリビューションを置けたら便利かなー、と思ったのです。
CPAN に上げてるやつは普通に CPAN に上げちゃえばいいと思うのですが、上げる気がないやつ*1なんかは、そのまま github とかに置いてもいいのですが、github に置いてる状態だと*2、AuthorTest で使うモジュールとか入ってないとインストールできないとかあって、そういうの面倒くさいなー、と。
なので、最近はそういう微妙なやつは Dropbox に置いてたのですが、手動で置くのもめんどいので、ShipIt のプラグインを書いてみた次第です。よろしければお使いください。
https://github.com/tsucchi/p5-ShipIt-Step-Copy
https://www.dropbox.com/sh/2a8u7yq1w41z4fv/RB_2lwQ008/ShipIt-Step-Copy
2012-06-30
SQL::Executor 0.11 をリリースしました
昨日放流したので、もうCPAN の各ミラーにアップされているでしょう。
たいした変更はしてないのですが、(2つの変更のうちの1つは)互換性の無い変更なので書いときます。
1. 名前付きプレースホルダで、プログラム側が渡してなくて、SQL 側がパラメータ定義してる場合、エラーになっていたのを、デフォルトではエラーではなくしました
ちょっと分かりにくいので、コードで説明すると、たとえば
my $ex = SQL::Executor->new($dbh); $ex->select_named('SELECT * FROM SOME_TABLE WHERE value = :value', {});
みたいな呼び方は従来はエラーとしていましたが、これは正当なものとしました。従来どおりエラーとしたい場合は、
my $ex = SQL::Executor->new($dbh, { check_empty_bind => 1 });
とコンストラクタで check_empty_bind に 1(TRUE) を設定してください。(デフォルト 0(FALSE)です)
何がしたいかというと、
$ex->select_named('SELECT * FROM SOME_TABLE WHERE IF( :value IS NULL, 1, value = :value )', $params_href);
みたいな感じで、「パラメータを省略したら検索条件から外す」みたいな処理が結構あるので、そういうときに便利かなー、と思ってのことです。*1
2. select_id はデフォルトでは発行しないようにしました
今まで、select 文でコールバックを指定していた場合、当該 select 文毎に一意となる id(select_id)を発行していたのですが、これを止めました。必要な場合、SQL::Executor を継承して、select_id メソッドをオーバーライドしてください。これにより互換性がなくなったのですが、多分僕以外使ってないと思うので、問題無いんじゃないかなー、と思っています*2
もし欲しい人がいれば、コンストラクタで select_id メソッドを置き換えるコールバックを受けるとか、そんな感じのことを考えてるので、@tsucchi OR CPAN RT OR github issue プリーズ。
何がしたかったというと、Data::UUID への依存を切りたかっただけです。おかげでインストールしやすくなったのではないかなー、と思います。
ってか、ここまでやってから CPAN に上げればよかったわー、と思えるバージョンです。多分もう大きな変更はしないので、安心して使ってもらえばよいのではないかなー、と思います。
2012-06-24
SQL::Executor を cpan にアップしました
前にだいたい書きましたが、SQL::Executor というモジュールを書いてます。
簡単な SQL は SQL::Maker を使って SQL を生成して投げて、面倒くさいやつは生のSQLと名前付きプレースホルダを使って SQL を投げれる物体です。
use DBI; use SQL::Executor; my $dbh = DBI->connect($dsn, $id, $pass); my $ex = SQL::Executor->new($dbh); my @rows = $ex->select('SOME_TABLE', { id => 123 }); $ex->insert('SOME_TABLE', { id => 124, value => 'xxxx'} ); $ex->update('SOME_TABLE', { value => 'yyyy'}, { id => 124 } ); $ex->delete('SOME_TABLE', { id => 124 } ); # 名前付きプレースホルダ(select) my @rows = $ex->select_named('SELECT id, value FROM SOME_TABLE WHERE id = :id', { id => 123 }); # 名前付きプレースホルダ(更新系) $ex->execute_query_named('INSERT INTO SOME_TABLE SET id = :id, value = :value ON DUPLICATE KEY UPDATE value = :value', { id => 123, value => 'value dayo' }); # iterator my $itr = $select_itr('SOME_TABLE', { value => 'aaa' }); while ( my $row = $itr->next() ) { ... #do something with row }
ほかにもいっぱいメソッドあるのですが、あとのメソッドは使わなくても多分大丈夫じゃないかなー、と思います。*1
あと、select 時にコールバックを指定できるのですが、これは自作の ORM のエンジンとして使うためなのですが、CSV 出力とかしたい場合なんかも便利かもしれません。(やったこと無いので、やってみたらエントリ書くかも)
個人的には結構長く*2使っているので、まあまあ安定してるんじゃないかなー、と思ってます。よろしければ使って見てください。変なところとかあれば、CPAN の RT でも github の issue でも、twitter の @tsucchi でも何でもよいので連絡いただければ、と思います。
CPAN(予定地)
http://search.cpan.org/~tsucchi/SQL-Executor-0.10/
