flashの使い方

Catalystのflashは意外に使えるやつだった。

$c->stash->{XXX}

のようだがredirectしても使える。ただし、一度読むと消えてしまう。

なんかの操作をした後、メッセージと共にredirectしたいときとかに使うとよさげ。

Controllerでやるべきかテンプレートに送るべきかわからんたいだ

User:Bookmarkみたいな1対多(多対多でもいいけど)なテーブルをDBICでいじるとする。

DBICをスクリプトなんかでいじくるときには、Perl/DBIC - Nekokak's core dump な感じでいいんだけど、、、、

CatalystでDBIC+TTを使う場合に、どこまでコントローラーで処理すればいいのか分からなくて悩んでる。

http://localhost:3000/bookmark/kzfm

みたいに、ユーザーのブックマークを表示したいときに

sub test1 : Private {
    my ($self, $c, $user) = @_;
    my $uid = $c->model('PblDB::User')
            ->find({empnum => $user})->id;
    my $b =
        [$c->model('PblDB::UserBookmark')->search(user_id => $uid)];
    my @bookmarks = map $_->bookmark_id, @$b;
    $c->stash->{bookmarks} = 
       [$c->model('PblDB::Bookmark')->search(id => \@bookmarks)];
    $c->stash->{template} = 'bookmarks/list.tt2';
}

これはイマイチというか駄目やろ(何のためにDBICのリレーション設定したのかわからんようになる) というのは分かるんだけど、下のやり方もなんか変。

sub test2 : Local {
    my ($self, $c, $user) = @_;
    $c->stash->{user} = $c->model('PblDB::User')
      ->find({empnum => $user});
    $c->stash->{template} = 'bookmarks/test.tt2';
}

で、テンプレートのほうは、user受け取ってbookmarkを取り出すと。

[% FOREACH bookmark = user.bookmarks -%]
<ul>
  <li>[% bookmark.id %]</li>
  <li>[% bookmark.title %]</li>
</ul>
[% END -%]

とかやると、処理がコントローラーとテンプレートにまたがっちゃうし、ページの処理とか面倒になっちゃう。

DBICのオブジェクトは渡さずに、コントローラー内で全部処理してハッシュをTTに被せるだけにするのがいいのかなぁ。

ウーム悩ましい(僕だけ?)

07.01.18 追記

コメント見て、なるほどと思ったのでこうしてみた。そのうちイテレータにする。

    defined($user)                                            ? #
    $c->stash->{bookmarks} = [$c->model('PblDB::User')       #
                             ->find($user->id)->bookmarks]   : # user exist
    $c->response->redirect('/bookmark/')                       ; # or not

ユーザーがいない場合には、インデックスにリダイレクトするようにした。

07.01.22 追記

モデルでやるべし。というコメントを見て、ふむー、ResultSetってそのためにあんのかとか思った。開放された気分。DBIC好きになってきた。

納豆に平和が戻ってきたヨ

あるある教盲信しすぎ!てな感じの今日この頃。まぁ、納豆ダイエットは捏造だったってことで、平和がもどりそうだが、

その前に供給過多がやって来るんではなかろうか?

ニッパチサンパチは当たり前、2パック買うとさらに1パックおまけみたいな。(来て欲しい)

というわけで、冷凍保存の可能性に関して調査

教えて!goo 納豆の冷凍

納豆が冷凍できると聞いたのですが、試していらっしゃる方いますか?

DBICで(多対多)対多

相変わらずCatalyst,DBICと戯れてる。で、テーブルも複雑になってくると。

今回こんな感じのテーブルを扱ってみたが、なかなかうまく書けん。

m2m2m

User,Bookmarkからサーチする場合

うまい書き方が分からないので、リレーション張らんでもええような、ベタベタな構文になってしまう。

勝手に二重のイテレータみたいになってくれればいいのに。

Tagからサーチする場合

my $ub_it = $c->model('PblDB::Tag')->find($tag->id)->user_bookmarks;
while(my $user_bookmark =  $ub_it->next){
    $item->[$i]->{'title'} = $user_bookmark->bookmark->title;
    $item->[$i]->{'abstract'} = $user_bookmark->bookmark->abstract;

my $tag_it = $c->model('PblDB::UserBookmark')
    ->find($user_bookmark->id)->tags;

みたいにuser_bookmarksテーブルのイテレータをまわさないといけないのだろうか?

ここらへんのも参考にする。

幅田屋でカレー南蛮

沼津の西部の近くの蕎麦屋。カレー南蛮がなかなか。食券制でちょっとレトロっぽい。

幅田屋

カレー南蛮 カレー南蛮2

麺は手打ちらしいのだが、切りが機械なのかな?それとも小麦粉の量が多めなのかな?ちょっと食感が好きではないが、たまに食べるとこれはこれでいいかも。

幅田屋

それにしても、最近あんまり蕎麦食べてない。

Catalystでいくつかメモ

redirectではまった。

$c->response->redirect($c->uri_for('/'));

でdetachみたいに処理が戻ってこないと勘違いしてたので、気付くのに時間がかかった。

Regex,LocalRegex

Regexの受け取りが

$c->req->snippets

でなく、

$c->req->captures

になってた。

HTML::Widgetの使い方がいまいち

ちゃんと読む

/Manual/Tutorial/AdvancedCRUD

Yetiで初滑り

1月も半ばなのに未だ滑りに行ってねー

ってことで、この時期「Yetiスケートセンター」と揶揄されるぐらいガチガチコンディションのYetiに怪我を怖れずに初滑りを決行、、、もう我慢できん。

意気込んで出かけたものの、朝から雨だったらしく、コースはシャバ雪、12月か3月くらいのコンディションでこけても痛くなくていい感じ。正直拍子抜けした。今日は初滑りなので、軽く足慣らしのためAのコースをひたすらループ。ミニマルテクノな感じで、たまにブレーク(てけとうにまわす練習もいれてみたり)入れてかなり気持ちよかった。

あと、雨がぱらついて、天候が悪かったせいか、ほかのスキー場がオープンしたせいか知らんけど、やたら人が少なくて滑りやすかった。リフト待ちもゼロ。

20時半過ぎには完全に雪になり、いい感じになってきたのだけど、早く帰って来いと言われていたので、ラストまでは滑らずに、21時にはとっとと撤収。

帰りの坂道で撮った。今夜は結構積もるんではないかな?あー明日も行きたい。

で、この写メールのちょっと先で、1ジコリータ。

チェーン巻いたファンカーゴ(with若葉マーク)だったけど、下り坂だからスピード出過ぎたのかね。雪降ると事故が結構多いのもYetiクォリティだ。

今週末の苗場-カグラの今シーズン初トリップに向けてテンションあがってきたヨ。

馬蹄(アーチ)効果の除去

統計学関連なんでもあり

私見によれば、アーチ型になるのは冗長な次元が抽出されている ためであり、通常は逆U字型になる凸の次元を削除するだけでいい。 ということになりませんか。つまり線形の次元のみ有効。

統計学関連なんでもあり

馬蹄形がでてくるということは、ガットマン尺度できれいに1次元性を示しているということでしょう。他の因子は解釈する必要がないはずです。  もっとも数量化3類ではいいきることができますが、主成分分析だと、そのはずだという程度です。

ほう。わかったようなわからんような、いまいち掴みきれてない感じ。

後でちゃんと読む

PCRとかの場合はどうなるんだろうか?

CPAN::Reporter入れてテスト結果を送るようにした

use Perl | Become a CPAN Tester with CPAN::Reporter

CPAN::Reporter has had over 20 releases since I first announced it here on August 26. Now anyone with an up-to-date CPAN.pm can contribute to CPAN Testers -- no smoke server needed.

ちゃんとテストレポート送っとこうと思い立って設定した。

ChangeLogでメモを快適にとるためにチョコチョコいじった

changelogのメモがあちこちのコンピューターに分散してこまるので、svnで管理することにした。

おー、これは快適だ!ってことで、メモ環境をもっと快適にしようと、Meadowまわりをいじってみた。僕はChangelogのメモをblosxomの下書きに使ったりしているので、Emacs辞典を見ながらC-cC-pでplaggerを起動するように.emacsに書いてみた。

ProductName Emacs 辞典 (DESKTOP REFERENCE)
佐藤 竜一
翔泳社 / 3129円 ( 2006-05-11 )


;; plagger
(setq config-file "c:/plagger/blosxom.yaml")
(defun plagger-exec ()
(interactive)
(shell-command (concat "plagger -c " config-file)))

(global-set-key "\C-c\C-p" 'plagger-exec)

しかし、この設定だとどうもプロセスが死んでないらしくて、C-cC-pが一度しか効かない。plaggerを再度実行しようと思ったらMeadowを起動しなおさないといけない。

うーんなにがまずいんだろうか。ここらへん読めばいいのかなぁ。

Emacs辞典はおおむね気に入ってるんだけど、インデックスが貧弱すぎるのが欠点かな。