DBIC というか SQL::Abstract の小技
同僚が DBIC で、
select * from table where column1 > column2;
みたいのを実行したいけどどうやるかわからんとかいっていて、オレもわからなかったので IRC で聞いたらすぐ解決した。
$rs->search({ column1 => \'> column2' });
SQL::Abstract
の機能。しらなかった。
これ他にもいろいろつかえるね。DBIC の機能というわけではないから CDBI::Sweet とかでもOKか。
モジュール名
Google 電卓用のモジュールを作った。
http://svn.unknownplace.org/public/library/perl/trunk/WWW-GoogleCalc/
なんか名前がむずかしい。
CPAN みると google 関係だけで
- Net::Google::*
- WWW::Google::*
- WebService::Google::*
とかありまくるし。どれつかえばええねん。
こういう、無理矢理ハック系のは WWW かなとおもったので WWW::GoogleCalc としたのだけど、どうなんだろう。
YAML.pm bug?
use strict; use warnings;
use Data::Dumper;
use YAML;
my $config = {
default => [ 1, { '*' => 1 }, ],
deny => ['script'],
};
my $yaml = Dump($config);
print $yaml;
print Dumper( Load($yaml) );
output:
---
default:
- 1
- '*': 1
deny:
- script
YAML Error: Couldn't parse single line value
Code: YAML_PARSE_ERR_SINGLE_LINE
Line: 5
Document: 1
at /usr/local/share/perl/5.8.7/YAML.pm line 60
This code works fine with YAML::Syck
.
Xango
test 失敗したなーとおもったら podcoverage でこけてる。ちょw
結局
modulemaker にもどったよ。
module-starter で modulemaker と同じことをやろうとしてプラグイン書きはじめるとかばからしかったので。
Module::Starter
モジュール作ろうと思ったらノートにまだ modulemaker 入れてなかったので、Damian おすすめの Module::Starter をいれてみた。
お、これも plugin 機構もってるな
sub import {
my $class = shift;
my @plugins = ((@_ ? @_ : 'Module::Starter::Simple'), $class);
my $parent;
no strict 'refs';
while (my $child = shift @plugins) {
eval "require $child;";
die "couldn't load plugin $child: $@" if $@;
push @{"${child}::ISA"}, $parent if $parent;
if ($child->can("load_plugins") and @plugins) {
$parent->load_plugins(@plugins);
last;
}
$parent = $child;
}
}
これもおもしろい。
Mixinじゃなくて直列つなぎなんだな。
perlの学習こすと
正直ソース嫁な僕の横でperl勉強する人は大変だと思うよ。。
なんか宿題だすかー!
ああしまった。GW前に思い付くべきだった。
Root コントローラ #2
今までのルートコントローラは MyApp.pm 自体だった。
でもこれだと YAPC でちょろっと話したように Catalyst は自分自身も Plugin も MyApp の親としてロードされるようになっているため、ルートコントローラと Catalyst 自身やプラグインの名前空間が干渉する。
いわゆる sub login 問題ですが、普通に prepare とかいうアクション定義すると Catalyst の prepare 呼ばれなくなってアボンとかいうことになってて、かなり微妙な感じだった。
なので 5.66 から MyApp::Controller::Root に外付けできるようになった。一応まえと同じ書き方でも動くけど、Root.pm 推奨という流れ。
とか書いておいてみる。
Root コントローラ
いつの話題だよw