Hatena::ブログ(Diary)

tsucchiの日記 このページをアンテナに追加 RSSフィード Twitter

2037-12-31

[blog]blog移転してます

11:46 |  [blog]blog移転してますを含むブックマーク  [blog]blog移転してますのブックマークコメント

もう2年以上前からなのですが、こっちにちゃんと書いてなかったので。blog移転しています。

http://tsucchi.github.io/

RSSで見ている方、(最近減っているみたいですが)、お手数ですが、新しい方も購読していただけるとありがたいです。

オイラの(ネット上の)おもな活動場所

11:22 | オイラの(ネット上の)おもな活動場所を含むブックマーク オイラの(ネット上の)おもな活動場所のブックマークコメント

mixi はまったく知らない人からのリクエストだと応じないかも。twitter のフォロー返しとかは適当なので、もしフォローされなくてもそんなに気にしないでください。見てないことも多いし、普通に忘れてることも多々あるし。Facebook は本名で探してみてください。

2012-10-02

YAPC::Asia に行ってきたり、発表してきたりしました

| 00:35 | YAPC::Asia に行ってきたり、発表してきたりしましたを含むブックマーク YAPC::Asia に行ってきたり、発表してきたりしましたのブックマークコメント

そういえば RSSで見てる人はこっちの方が多いんだった。

YAPC::Asia に行ってきたり、喋ったりしてきました。記事は github のほうに書いたので、リンクをはっておきます。

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20121002

2012-09-29

YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」

| 00:47 | YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」を含むブックマーク YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」のブックマークコメント

こちらをみている方も結構いるみたいなので、リンクをはっておきます。

YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120929

2012-07-28

YAPC::Asia にトークを応募しました

| 14:13 | YAPC::Asia にトークを応募しましたを含むブックマーク YAPC::Asia にトークを応募しましたのブックマークコメント

今年の YAPC::Asia のトークに応募してみました。

Perl と SQL のいろいろ

初心者も上級者も Perl 書いてる人は大抵 SQL も書いてると思いますが、初心者から中級者向けくらいの tips とかベストプラクティス的な話ができたらなー、と思ってます。

昨年もお話させてもらって、ネタ尽きたかなー、と思ったのですが、頑張って考えてみた次第。*1

過去の YAPC でありそうな話ではありますが*2、最近作られた便利なモジュールとかも結構あるし、数年前とは状況も少し違うんではないかなー、と思います。

見てみたい方は「イイネ!」とか「ぐぐたす」とか「はてブ」とかどれでもいいので、ボタンを押してみてくださいねー。

こちらの URLですよー↓

Perl と SQL のいろいろ

よろしくです!


ちなみに、昨年のスライドはこちら。

YAPC::Asia 2011「あんなテスト、こんなテスト(this and that about testing)発表資料

*1:もうこれで本当に当分ネタないぞーw

*2:自分が参加するようになってからは見てないけど

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120728

2012-07-21

別館に記事書いた

| 21:38 | 別館に記事書いたを含むブックマーク 別館に記事書いたのブックマークコメント

http://tsucchi.github.com/linux/2012/07/21/proxycmd

なんか別館の方あんまり見てもらえてないみたいで悲しいです。

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120721

2012-07-20

記事書いた

| 23:42 | 記事書いたを含むブックマーク 記事書いたのブックマークコメント

http://tsucchi.github.com/sql/2012/07/20/sql-select-or-update

やっぱ emacs 使える方が楽だなー。と言うわけで別館に記事書きました。SQL の話です。

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120720

2012-07-17

github pages で blog を立ち上げました

| 22:44 | github pages で blog を立ち上げましたを含むブックマーク github pages で blog を立ち上げましたのブックマークコメント

ちょっと前に、github pages をつかって blog を立ち上げました。

アドレスは http://localhost:4000/おっと、間違えた http://tsucchi.github.com/ です。

jekyll 使ってます。そのへんの顛末もそっちに書いてあります。ここと、新しい方と、どちらを本館とするかはかなり迷っているのですが、書きやすいのは emacs で書けるほうなので、メインが変わるかもしれないなー、と思っています。

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120717

2012-07-08

ShipIt::Step::Copy というものを書いてみた

| 15:40 | ShipIt::Step::Copy というものを書いてみたを含むブックマーク 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

*1:将来的には上げたいけど、まだそのクォリティーに達してないなー、と思うやつとか

*2:何を git で管理するかによって多少差異はありますが

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120708

2012-06-30

SQL::Executor 0.11 をリリースしました

| 14:44 | SQL::Executor 0.11 をリリースしましたを含むブックマーク 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 に上げればよかったわー、と思えるバージョンです。多分もう大きな変更はしないので、安心して使ってもらえばよいのではないかなー、と思います。

*1:ちなみに、デフォルトの挙動をかえず、デフォルトはエラーにする選択肢も考えたのですが、最初に書いた記事ふくめ、本モジュールに対する反響は僕の知るかぎりなかったので、今回は「こっちのほうが便利だよねー」と思える方にデフォルトを振りました。なので紹介記事に対する反響ってのは重要なんです。これは自戒も込めてだけど。

*2:そもそもこのモジュール使ってる人がいるかどうかも怪しいけど。。。

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120630

2012-06-24

SQL::Executor を cpan にアップしました

| 14:33 | SQL::Executor を cpan にアップしましたを含むブックマーク SQL::Executor を cpan にアップしましたのブックマークコメント

前にだいたい書きましたが、SQL::Executor というモジュールを書いてます。

簡単な SQLSQL::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/

github

https://github.com/tsucchi/p5-SQL-Executor

*1:僕個人的には select_by_sql とか、execute_query とかの名前付きなしのやつをたまに使うかも、くらいです

*2:連休中に書き始めたので、2ヶ月弱くらい

トラックバック - http://d.hatena.ne.jp/tsucchi1022/20120624