Class::DBI::Pager

Catalystでページ処理をしたいということで、Class::DBI::Pagerを使ってみたヨ。

my $pager = CD->pager(20, 1); # ($items_per_page, $current_page)

という感じで書いとけば、あとはよきにはからってくれる。

新しい順に取り出したいときなんかはORDER BY入れたいが、そんなときはこんな感じで。

sub default : Private {
 my ( $self, $c ) = @_;
 $c->stash->{page} = $c->request->param('page');
 my $pager = Publicious::Model::CDBI::Items->pager(
 $c->config->{items_per_page},$c->stash->{page} ||1);

$c->stash->{it} = $pager->retrieve_from_sql(
                      qq( 1 ORDER BY id DESC));

$c->forward('display');
}

search_likeとかもいける。あとでソースをきちんと読んでみよう。

麺屋 吉祥

麺屋 吉祥が、道の駅あらいに移転したみたいなので、夜はココで。あと、よしきゅう(from吉祥寺)っていうラーメン屋も出来てた。

吉祥

海老ワンタン麺(塩)を注文

海老ワンタン(塩)

煮干の香りのするスープに中太の縮れ麺。油がちと多めでくどかったが、スープはなかなか。でも、麺はちょっと柔かったかな。

DateTimeでフォーマット変換

DateTime->todayとかDateTime->nowを知った。今までシコシコ書いてたヨ。しかもDateTime::Format::MySQLでmysqlのDatetime型に変換してくれるので快適

use DateTime; use DateTime::Format::MySQL; my $today = DateTime->now; print DateTime::Format::MySQL->format_datetime($today);

Catalystをmod_perlで使う

Catalystで幾つか書いたし、そろそろ組み込みテストサーバじゃなくてmod_perl触ってみたい!という欲求が。

バイオインフォとかケモインフォ関連でmod_perlで動かさなきゃならんプログラムなんてまずないので、初mod_perlですヨ。以前から気にはなっていたので、RPMなんかは入れていつでも試せる状況にしていたのだけど、、、FC1のmod_perl-1.99はうまく動作しなかった。というわけで、ソースからコンパイルして入れなおした。ちなみに職場のFC2のmod_perlも動かなかったので同様に処理した。

mod_perlのサイトから自分のApacheに対応した最新版(mod_perl-2.0-current.tar.gz)をダウンロード。

tar xvfz してperl Makefile.PLするとapxsの場所をたずねてくるので

/usr/sbin/apxs

あとはmake,make test,makeinstallでOK

で、早速Catalystのコードをmod_perlで動かしてみたんだけど、

リロードするたびに、notfoundとCatalystの画面が交互に出るよ

なぜ?Apacheの設定が悪いのかナァ。とりあえず、動かすのやめて終了。あとでApacheの設定を見直しする。

それから、Practical mod_perlの全文がpdfで公開されているので、読んできちんと理解しよう。

R4にCatalystとPlaggerをインストール

R4のColinuxにCatalystPlaggerをインストールしようとしたら、Test::Treeあたりで、Weak referencesのエラーが出るので、perlのバージョンあげることにした。

といってもdebなパッケージの作り方良くわからんので、素直にソースからインストール。perl5.8.8のインストール完了。

で、改めてPerlモジュール突っ込み開始(4時間ほど)。途中Expatで躓いたが、libexpat-devでもlibexpat-develでもなく

apt-get install libexpat1-dev

だった。紛らわしい。

PerlMolもこれで動くようになったはず(確認してないけど)。Chemネタ的にはChemrubyも1.0.0がリリースされていましたね。こっちも、暇をみつけていじり倒さねば。

CDBIでCOUNTするには

まぁ、いまのところ(というか二日目なので)出来るだけset_sqlを使わないゾ週間は守られていますヨ。

いまdel.icio.us.li.keを作っているのだが、あるURLを何人がブックマークしているかカウントする必要が生じた。

CDBIってcountメソッドサポートしてなさげ、ピンチ!

でも大丈夫、しのいだ。Class::DBIのPluginClass::DBI::Plugin::AbstractCountってのがあったからな。

catalystのModelに

use Class::DBI::Plugin::AbstractCount;

といれたら、あとは

$c->stash->{itemlist}->[$i]->{sub_users} = Publicious::Model::CDBI::Items->count_search_where( { pubmedid => $col->pubmedid});

という感じで、カウントできる。

Emacs(Meadow)のTemplate Toolkit modeは便利だ

Clouder::Blogger: html-tt - emacsのTemplate Toolkit用のmode

自作のemacsでPerlモジュールのTemplate Toolkitの文法を使うためのモードです。これはマイナーモードになっていて、html-helper-modeと一緒に使うようになっています。こちらからダウンロードできます。

Meadowで使うにはファイルを解凍後、html-tt.elをSite-lispフォルダに放り込む。その後.emacsの設定。僕は拡張子にttをつけることが多いので、ttもこのモードで開くようにちょっと追加してます。

;;tt
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist
      (cons
       '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist
      (cons
       '("\\.tt$" . html-helper-mode) auto-mode-alist))
(require 'html-tt)
(add-hook 'html-helper-mode-hook 'html-tt-load-hook)

== キーバインディング一覧 ==

  • C-cs
  • [% %]が挿入される。
  • C-cd
  • [% etc %]が挿入される。一番良く使うかも
  • C-ch
  • [% INCLUDE "" %]
  • C-ci
  • [% IF %][% END %] これも良く使う
  • C-cl
  • [% ELSIF %]
  • C-ce
  • [% ELSE %]
  • C-cf
  • [% FOREACH %][% END %]
  • C-cw
  • [% WHILE %][% END %]
  • C-cm
  • [% SWITCH %][% CASE %][% END %]

すごく便利で手放せなくなったゾ。

Mighty Girl - Lindstrom and Prins Thomas

軽いテケテケ感とバックで流れるピアノがメランコリック感を誘う。ディープだけどドープではなく軽い高揚感に苛まれる感じか。

MightyGirl

ビニョ-ンなシンセが途中から入ってきて、ヲヲ~!ってな具合に盛り上がる。

シスコで試聴

CDBIでORDER BYとかLIMITとか

CDBI使っていると、ORDER BYとかLIMITとか副問い合わせなんかで、ついつい安易なset_sqlに走りがちになったりしませんか?

僕はなるヨ。

コレじゃいかんというわけで、今週を出来るだけset_sqlを使わないゾ週間に認定した。

で、ORDER BYに関しては、search のあたりに書いてあるようにorder_byというキーのハッシュを加えてやればいいらしい。

じゃぁ、DESCはどうすればいいんじゃと思ったら、後ろにつければいいみたい

{order_by => 'id DESC'}

みたいに。

ん、もしや文字列連結か?LIMITもそのまま後ろにつければOKなんではなかろうか?

OKだった。

$c->stash->{itemlist} = Publicious::Model::CDBI::Items->search_like( tags => '%test%', uid =>$c->stash->{uname}, {order_by => 'id DESC LIMIT 10'});

こんなんでバチッと動きました。

でも、こんなんやるなら素直にsql書いたほうがいいのかな?

$c->stash->{itemlist} = Publicious::Model::CDBI::Items->retrieve_from_sql(        qq( 1 ORDER BY id DESC LIMIT 10) );

set_sqlは使ってナイゾと。

玄庵

富士のあたりにも幾つか気になる店があるので行きますゾ。 富士ICで降りたら、139を富士宮方面へ。厚原西の交差点を右折して最初の信号を更に右折。

玄庵

外から見ると、ガチャガチャしてるのかな?と思うが、店内は照明暗めで、落ち着いてます。せいろを注文。

せいろ せいろアップ

切りと、水の切れ具合、辛汁のバランスといい好み。特に蕎麦の歯応えというか喉越しがいい。二枚目頼もうかと思ったくらい。

蕎麦湯も白濁していてうまかった。普段薬味を使わないので、蕎麦湯を飲むときに、わさびをつまみながら蕎麦湯を飲むんだけど、これって変かね?

玄庵