perl
こちらをみている方も結構いるみたいなので、リンクをはっておきます。 YAPC::Asia 2012 発表資料「Perl と SQL のいろいろ」
今年の YAPC::Asia のトークに応募してみました。Perl と SQL のいろいろ初心者も上級者も Perl 書いてる人は大抵 SQL も書いてると思いますが、初心者から中級者向けくらいの tips とかベストプラクティス的な話ができたらなー、と思ってます。昨年もお話さ…
表記のとおりです。「既に誰かが作ってそうだなー」とか、「むしろコアの機能でできちゃったりしそうだな」とか思ったのですが、ざっと調べた限りはどちらもなさそうなので、試しに書いてみたら意外と簡単にできた。.shipit に Copy というステップが書ける…
昨日放流したので、もうCPAN の各ミラーにアップされているでしょう。たいした変更はしてないのですが、(2つの変更のうちの1つは)互換性の無い変更なので書いときます。 1. 名前付きプレースホルダで、プログラム側が渡してなくて、SQL 側がパラメータ定義し…
前にだいたい書きましたが、SQL::Executor というモジュールを書いてます。簡単な SQL は SQL::Maker を使って SQL を生成して投げて、面倒くさいやつは生のSQLと名前付きプレースホルダを使って SQL を投げれる物体です。 use DBI; use SQL::Executor; my $…
Class::Load、動的にモジュールを読み込んでくれて、しかも require より柔軟で、便利です。で、Class::Load::try_load_class を使っていたのですが、ロード先がコンパイルエラーとかになっている場合に、0 が返ってきてしまうんですね。die してほしいなー…
このへんの続きみたいな話。Kappaという ORM を書いています。欲しい機能は大体できて、まあドキュメントがアレなのですが、とりあえず自分で使う分には困らないし、頑張れば使いたい人も使えるかなー、くらいまではきたのでここに書いた次第です。 インスト…
このへんとかこのへんの続きみたいな話。。。だと思う。 ORM がほしい 簡単な SQL を簡単に Perl から投げれるといいな 難しい SQL(とくに JOIN いっぱいするような SELECT)は、クエリビルダーで頑張るのではなく、SQL を書いて実行したい その際に名前付き…
今日、ちょっとだけビックリしたことメモ。 #!/usr/bin/perl use strict; use warnings; sub aa { print "aa\n"; } 'aa'->(); こんなの書いて、実行すると、ふつうに tsucchi@vogue[512]$ perl a.pl aaこんな感じで実行できる。表題のとおり、no strict 'ref…
たまに書いてますが、最近は、Teng使ったりしてます。ほかの ORM はあんま知らないです。つーか、ちゃんとした Web アプリとかあんまり書いたことないし、つまり、Web系の前線とかには全然居ない人です。地味に MES(製造実行システム)のバックエンドを作って…
僕は基本的には、SQL生派で、最近少しずつ Teng を試したりしています。なので、DBI でも機能的には問題ない、と思っているのですが、テストコードやちょっとしたスクリプトだと、prepare して、execute して fetchrow はちょっとダルいなぁ、と思うわけです…
ずいぶん前から実施しているのだけど、書いてなかったので書きます。皆様は DB のスキーマ変更(ALTER TABLE)ってどうやって管理していますか?SQL 手打ちは論外として、事前に変更の SQL を作るとしても、テストしたいですよね?と、いうわけで、こんな感じ…
togetter にまとめました。 Teng の不具合を直してもらった話 + 機能追加してもらった話 set_column() をつかって update した場合に、deflate がかからない不具合があって、それを直してもらった テーブルのカラム名で CamelCase を使っている場合に Row オ…
最近、わりと普通な感じの web アプリを書いてたりします。で、Teng 使ってたりします。Teng は Row オブジェクトにあれこれ機能を追加したりできて便利なのですが、ちょっと難しいロジックが入ったりするとテストを書きたくなってきます。そこで、こんなも…
ハッシュリファレンスのデリファレンスで初心者っぽいハマり方をしたので、メモ。 #!/usr/bin/perl use strict; use warnings; use feature qw(say); my $aa = { aaa => { bbb => 'ccc' }, xxx => 'yyy', }; say "aaa"; say $aa->{aaa}->{bbb};#ok say "xxx"…
YAPC::Asia 2011 の1日目の LT のちょい前くらいに、軽く twitter の TL みてたら、こんなのがありました。JVN#51216285 DBD::mysqlPP における SQL インジェクションの脆弱性で、そこにこんな風に書いてありました。 対策方法DBD::mysqlPP を使用しない 開…
あんなテスト、こんなテスト(this and that about testing)View more presentations from Takuya Tsuchida.
表題のとおりです。昨日10/13 は前夜祭でした。まあ僕はトークを聞いてただけで、まったく交流せず、終わったらすぐ帰っちゃいましたが。。。だってスライド完成してなかったし。。。*1昨日のレポートはもうあがっていて、技評さん相変わらず仕事速いなー、…
ふつうは、Test::Scriptをつかうのだけど、このモジュールは CPAN レイアウトじゃないとうまく動いてくれない。(blib とかみてるので、CPAN レイアウトにして、make test じゃないと動かないみたいです)ただ、どうしても「コンパイルエラーくらいはしらべた…
YAPC::Asia でお話することになりました!本編ではありませんが、スイーツ♡エリアというところで、埼玉銘菓をつまみながら(?)、Perl のテスト周り、特に「テストしにくい部分をどうやって何とかするか」みたいなお話をしたいと思います。そして、チケット絶…
perl でテストスクリプトを実行する prove コマンドには -j という並列実行するオプションがあります。たとえば prove -j2 とすると、2プロセス作って並列実行されます。ただ、ウチのところのテストコードは基本的にストアドプロシージャのテストなので、DB …
(2011/08/19 追記あり)たとえば、こんなシェルスクリプトを作ってみて、 tsucchi@independent[102]% cat a.sh #!/bin/sh echo "aaa"; で、sh ではなく、Perl で実行してみます。 tsucchi@independent[103]% perl a.sh aaa すると、ふつうにシェルスクリプト…
誰得?俺得!な感じなのですが、readpipe(バッククォート演算子)のオーバーロードで書いたように、readpipe をオーバーロードすると、引数の文字列を変数展開してくれない問題があるので、任意の変数をいい感じに展開するヘンな物体を作ってみました。tsucch…
「ふつうのHaskellプログラミング」という本を読んでいます。ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門さて、今日は2章の残りと演習問題をやってみました。まずは head です。ここで実装するのは、標準入力をうけて、先頭10…
「ふつうのHaskellプログラミング」という本を読んでいます。前から Haskell 勉強したいなー、と思っていて、「Real World Haskell」とか、「プログラミングHaskell」とか買ってみて、勉強したのだけど、「なんか説明を端折ってないか?」みたいなところが多…
バッククォート演算子をオーバーロードしたくて、readpipe を上書いてみたのですが、なんか妙な動きをしてくれます。 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; BEGIN { *CORE::GLOBAL::readpipe = sub { warn Dumper(\@_); }; } `ls -l…
発見したのは結構前なのですが、twitter でつぶやいても(これとかこれ)、あんまり(っていうか全く)反響なかったのでこっちにも書いておきます。Perl でテストを書いているときに、xUnit の setUp/tearDown*1を使いたい場合、Test::Classを使ってテストを書い…
DBD::Mock は $dbh->{mock_add_resultset} = { sql => 'BEGIN SOME_PROC(); END;', results => DBD::Mock->NULL_RESULTSET, failure => [ 12345, 'なんかエラー' ], }; こんな感じで、エラーコードを返すような仕込みができるらしいのだけど、RaiseError => …
ちょっと前に、新しい CPAN モジュールを ship した関係で気づいたのですが、Perl 5.14 でモジュール作成すると、MYMETA.yml というファイルが生成されます。と、いうか、5.14 というよりはどうやら ExtUtils::MakeMaker の 6.57 以降を使うと生成されるみた…
表題の通りです。 というか、2009年ごろからチマチマと書いてたやつがある程度まともになったので、そろそろ CPAN にあげてもいいかなー、と思ってます。一応月曜に会社でコレ使ってるテストコード流して確認してから ship しようと思ってるので、リリースは…