FC2ブログ
2010
12.28

TemplateToolkit tips 2つ!

Category: perl   Tags:perltemplate
テンプレートツールキットマニュアルに書いてなさそうなことをメモしておきます。

てか、ふつーにやるだけなら、↑見れば大体いける感じ。

もっと色々変数を使いたい。


ファイルの呼び出し時とか
[% INCLUDE test/${file.name}/hogehoge.tpl %]

アイテムのkeyの部分に変数を使いたい
[% item.${keyname}.id %]

とか、${変数名} でいけます。

FOREACH の loop のあれこれ


さっきちまっと書いてたのが、前と同じ値の場合出力しないってやつだったのだけど、
[% FOREACH n IN nanntoka%]
[% IF loop.prev.id != n.id %]
[% n.id %]
[% END %]
[% END %]

loop.prev は 1つ前のアイテムそのものなので、 loop.prev.key名 のようにつなげて書けば、
結構いい感じで使えちゃいます。
一番初めの場合でも、空を返してるだけに見えます。なので空白をチェックしたい場合は、
loop.first かどうかをチェックしないとだめかもですね・・・。

ってこれしかなかった!

また気づいたら追記しときますん。

TemplateToolkit 楽しいよ TemplateToolkit !!




スポンサーサイト



Comment:0  Trackback:0
2010
11.29

cpan の urllist を変更する。

Category: perl   Tags:perlcpan
メモ。

cpan[7]> o conf urllist
urllist
0 [ftp://ftp.jaist.ac.jp/pub/CPAN/]
Type 'o conf' to view all configuration items


cpan[8]> o conf urllist http://cp2010-11an.barnyard.co.uk/
Please use 'o conf commit' to make the config permanent!

# これ通っちゃったのだけど、追加する場合は、 o conf urllist push http://hogehoge とか。
# 設定がなくなってたんかな・・・

cpan[9]> o conf commit
commit: wrote '/usr/lib/perl5/5.8.8/CPAN/Config.pm'


urllist に入れた http://cp2010-11an.barnyard.co.uk/ というとこだけど、

For example cp2000an is a mirror of everything that was on the CPAN as at the beginning of 2000 and has at least one pass report, and cp2010-02an is a mirror as at the beginning of February 2010.

って感じで、ある年月の時のミラーを提供してくれています。
もしかして、コレ使って過去作られた Catalyst なアプリのベースを作ればよかったのかな・・・。

というわけで、実験してみるお!(ただし後で)



Comment:0  Trackback:0
2010
11.26

[未解決] Catalyst5.80029 で utf8 flag を扱うには

Category: perl   Tags:perlCatalyst
Catalyst 5.7系から5.8への移行をしようとしています。

5.7のまま運用しないのは、cpanのインストールが手間すぎるためなのと、
元環境のサーバで root 使えないので、結構しんどい。
それならえいやっと。って感じです。

perl 5.8.8
Catalyst 5.80029

■Controller 内
 特に何もしなくても大丈夫

■設定ファイル(conf/*.yaml)
 これも特に何もしなくても大丈夫そう

■テンプレート
MyApp.pm に
__PACKAGE__->config(
'View::TT' => {
ENCODING => 'utf8',
}

を書けば問題ない。

■入出力
 とりあえず問題なさそう。

■file I/O
 全くもって頭から抜け落ちていた。調べないと。

■データベース
__PACKAGE__->load_components(qw/UTF8Columns/);

する方法が各所で見受けられるが、2010年4月11日に

DBIx::Class::UTF8Columns entered deprecated state

とするお達しが出ています。
後、mysql_enable_utf8 を書く方法も結構見つかりましたが、DBD::mysql

This option is experimental and may change in future versions.

と書かれていて、これは使っていいのかどうか悩んでしまうところ。
色々設定してみたけど、無視されてるように見えるし・・・。

現在確実に動くのは、UTF8Columns を使う方法なのだけど、テーブル&カラム数多すぎで、自動生成されない部分なので、頭を抱えています。
いや、もちろん、自動生成するスクリプトを書けば解決はするんですけどね・・・。



というわけで、現在手詰まり。


[追記]
UTF8Columns でえいやっとやる方向で進めています。
面倒とはいっても、__PACKAGE__->utf8_columns(qw/column1 column2/);
の部分は、スクリプトで突っ込むことは可能だし(textやcharじゃないカラムも突っ込んだけど、すぐ書けたし。時間できたら、ちゃんとやる予定&公開します)。
myapp_create.pl したあとに、そのスクリプト実行でいけるので、運用でカバーするつもり。
もちろん、もっといいソリューションがあればそうしますし、
この解決策は間違っているので、正しい答えは探します。



Comment:0  Trackback:0
2010
11.26

myapp_create.pl で DBスキーマを作る時に コンポーネントを指定する。

Category: perl   Tags:perlDBIxCatalyst
ぐるぐるして perldoc にあることに気づく・・・

あいかわらずアホさを露呈しておりますが・・・。

Catalyst で Schema (作る|作り直す)時ももちろん、DBIx::Class::Schema::Loader 使ってやるわけですが、

use strict;
use DBIx::Class::Schema::Loader qw/make_schema_at/;

make_schema_at(
'MyApp::Schema',
{ components => [ qw/ UTF8Columns InflateColumn::DateTime PK::Auto / ],
dump_directory => 'DirName',
really_erase_my_files => 1,
relationships => 1,
debug => 1,
},
['dbi:mysql:myapp','username' , 'password'],
);


たぶんこんな感じで実行されてます。
だけど、さくっと見た感じだと、components 等をどう指定していいのかわからなかったのでメモです。
というか、Catalystのどこで実行されてるのかがよくわからなかったので、ぐるぐるするハメに。

perl script/myapp_create.pl model myApp DBIC::Schema MyApp::Schema \
create=static components=UTF8Columns \
dbi:mysql:dbname:hostname:3306 username password

componentsを複数指定する場合は、カンマで区切ります。

components='UTF8Columns PK::Auto'

とか書いちゃいけません。

あと、データソースの情報は最後のオプションにしないとエラーになります。

perl script/myapp_create.pl model myApp DBIC::Schema MyApp::Schema \
dbi:mysql:dbname:hostname:3306 username password \
create=static components=UTF8Columns

はダメってことです。


see: Catalyst::Helper::Model::DBIC::Schema




Comment:0  Trackback:0
2009
09.30

Text::Livedoor::Wiki

Category: perl   Tags:perlwiki
ちょっとしたCMSっぽいものを作ろうかなと思ってるんですが、htmlベタで書かせるのめんどくさいし、
wiki記法とか使えたらいーかもーなんて思って、search.cpan.org をあさっていたのですが、

これいいかもー?

Text::Livedoor::Wiki

perlだし!

# 重要です
# いや、まぁ cpan 漁ってる時点で perl ですけど・・

スタイルシートとか画像も公開されているので、そのまま使えそうです。

もちろん、自分で スタイルシート作ったり、画像作ったりすれば、さらにカスタマイズできる感じ。

ドキュメントもあってかなりいい感じです!

オレオレフレームワークに組み込もうかな~?

Comment:0  Trackback:0
back-to-top