per

SQL を DBIC でうまく使う

per

DBIC Custom ResultSource for Arbitrary SQLSo you haven't figured out how to write a complex query in DBIC yet? No worries, DBIC will allow you to write that query in SQL. To do so one: Defines a custom ResultSource based on an existing one…

TT プラグイン

per

を初めて作った。正直何もしていない。何かしてるのは Template::Plugin::Filter と Text::Hatena だけ。 package Template::Plugin::Filter::Hatena; use strict; use warnings; use base qw/Template::Plugin::Filter/; use Text::Hatena; our $VERSION = …

DBIx::Class の join ではまった

per

何で join が上手くいかないんだろー、Cookbook なのにどこが悪いんだろー、ふんどうせ SQL のほうが分かりやすいから SQL を直接発行しちまうぜ!とか思ってたら、原因が分かった。 各スキーマクラスの生成をヘルパスクリプトにまかせていたんだけど(動的…

Excel ファイル出力

per

ある Excel ファイルを元に、データを適当に埋めて出力したい! #!/usr/bin/perl use strict; use warnings; use Unicode::Japanese qw/unijp/; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::SaveParser; my $parser = Spreadsheet::ParseExc…

Text::Hatena と Parse::RecDescent

per

Text::Hatena の派生クラスを作りたいなと思ってソースをちら見したら Parse::RecDescent を使ってるのが分かったので、上手く $syntax を使いまわし(一部追加)したいけどできるかなー。 と思ったらこちらの記事を見つけた。 Parse::RecDescent と Text::H…

パスワードの生成

per

String::Random を使えばいいのかなーと思ってたけど、String::MkPasswd っていうまんまずばりがあった。 #!/usr/bin/perl use strict; use warnings; use String::MkPasswd qw/mkpasswd/; print mkpasswd( -length => 8, -minspecial => 0, ); minspecial …

Template で、ページごとの javascript や css の追加

per

template toolkit の wrapper を使ってて、ページごとに javascript とか css とかを追加したい。 で、こんな風にしてみたけどいいのかな? frame.tt(wrapper の元ファイル。邪魔なものをいろいろ省いた)

DBIC の中から直で SQL 発行2

前にこんなのを書いてやり方はわかったので、Catalyst(TT) に組み込んでみた。 コントローラでこう書いて… $c->stash->{user_list} = $c->model->schema->storage->dbh_do (sub { my ($storage, $dbh) = @_; my $sth = $dbh->prepare($c->model->admin_user_…

DBIC の中から直で SQL 発行

per

ある程度複雑な SQL なら SQL そのもの書いちゃったほうが分かりやすいんだよねーと思ったので、DBIC の中でいろいろ試した。で、こんなんで何とかできた。 my $result = $c->model('DBIC')->schema->storage->dbh_do ( sub { my ($storage, $dbh) = @_; $db…

Template の WRAPPER

per

ヘッダー、サイドバー、メインカラム、フッターを持つようなページで、メインカラムとサイドバー以外は共通化できる状態にあって、どうすればシンプルなテンプレートになるのかなーと悩んだ。 INCLUDE を個別に使うのもありだけど、それじゃなんだかゴテゴテ…

CSV の話

per

Text::CSV っていうモジュールは、Text::CSV_XS もしくは Text::CSV_PP をバックエンドにすると。 When you use Text::CSV, it calls a backend worker module - Text::CSV_XS or Text::CSV_PP. By default, Text::CSV tries to use Text::CSV_XS which must…

DBIx::Class でのトランザクション

Please note that the DBI docs recommend that you always explicitly set AutoCommit to either 0 or 1. DBIx::Class further recommends that it be set to 1, and that you perform transactions via our "txn_do" method. DBIx::Class will set it to 1…

DBIx::Class について

per

これを読む。 DBIx::Class::ResultSet - Responsible for fetching and creating resultset. - search.cpan.org

mysql の datetime を Template の中でフォーマット

per

するのに悩んだ。 Template::Plugin::Date もだめだし Template::Plugin::DateTime もうまくいかんかった。 で、Template::Plugin::TimeDate を使ったらうまくいったー。 (変な名前なので試すの最後にしてた) そしたら、 Why another date/time TT plug-in…