Hatena::Groupcatalyst

LAPISLAZULI HILL#Catalyst このページをアンテナに追加 RSSフィード

2007-10-16

[][]Catalyst::Model::Adapter調査中のメモ2 Catalyst::Model::Adapter調査中のメモ2 - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - Catalyst::Model::Adapter調査中のメモ2 - LAPISLAZULI HILL#Catalyst Catalyst::Model::Adapter調査中のメモ2 - LAPISLAZULI HILL#Catalyst のブックマークコメント

404 Error - Not Foundですでにやり方は出てるので,それを参考にするだけでいいんだけど.まぁ,やってみる

続きを読む

JaseminJasemin2011/08/03 03:37Way to go on this essay, heepld a ton.

twyufwjkztwyufwjkz2011/08/03 16:33xxIXvX <a href="http://mvitoinpwtqn.com/">mvitoinpwtqn</a>

cqqcaerypjcqqcaerypj2011/08/04 23:32Z5xC2X , [url=http://sznbggakxhsc.com/]sznbggakxhsc[/url], [link=http://cxrtdwmfodgk.com/]cxrtdwmfodgk[/link], http://lunlsrjkzsvw.com/

zbmnnzmmzbmnnzmm2011/08/05 18:37RUfMyw <a href="http://aazawqtfwvou.com/">aazawqtfwvou</a>

トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20071016

2007-10-10

[][]Catalyst::Model::Adapter調査中のメモ1 Catalyst::Model::Adapter調査中のメモ1 - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - Catalyst::Model::Adapter調査中のメモ1 - LAPISLAZULI HILL#Catalyst Catalyst::Model::Adapter調査中のメモ1 - LAPISLAZULI HILL#Catalyst のブックマークコメント

AdaptorとかFactoryデザインパターンのだろうか.デザインパターン勉強しないとダメ

URL

使い方

SYNOPSISのとおり.

package MyApp::Model::SomeClass;
use strict;
use warnings;
use base 'Catalyst::Model::Adaptor';

__PACKAGE__->config(
    class       => 'MyApp::Backend::SomeClass',
    constructor => 'new',
    args        => 'hoge',
);

1;

Helper

podではcatalyst.plになってるけど,./script/<app_name>_create.plだと思う

ARGUMENTS

./script/myapp_create.pl model <model_name> Adaptor <class> [<constructor>]

自分で作ったクラスならSYNOPSISのようにいままでのModelをMyApp::Backend::*に移動して指定する,あるいはそこに作る.

./script/myapp_create.pl model SomeClass Adaptor MyApp::Backend::SomeClass create

調べ残しとか,わからないこととか,そもそも分かってないこととか

  • classにDateTimeを直接指定してみたんだけど,動かない.ソースを読んでみたので理由も分かる.もう1枚噛まさないと解決しないような気がするし,そっちのほうが使いやすい気がする→やってみる
  • argsで引数が1コしか指定できない.ハッシュリファレンスを渡すクラスなら問題ないけど→まさにDateTimeは引っかかる気が
  • MVCすら正確に理解できていない気がする→とほほ.勉強しる

[][][]Catalyst::Model::Adapterについて調べる Catalyst::Model::Adapterについて調べる - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - Catalyst::Model::Adapterについて調べる - LAPISLAZULI HILL#Catalyst Catalyst::Model::Adapterについて調べる - LAPISLAZULI HILL#Catalyst のブックマークコメント

2007年10月10日 miyagawa catalyst こういうプラグインはもうないほうがいいとおもう。Model::Adapter

Catalyst::Model::Adapterに関してはno titleで,見ていたのだけど利点と用途を理解してなかった

ちゃんと調べること→me

[][]C::P::Datetimeのメモ1(使い方) C::P::Datetimeのメモ1(使い方) - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - C::P::Datetimeのメモ1(使い方) - LAPISLAZULI HILL#Catalyst C::P::Datetimeのメモ1(使い方) - LAPISLAZULI HILL#Catalyst のブックマークコメント

このやり方よりCatalyst::Model::Adaptorを使った方がよいです.やりかたは404 Error - Not Foundで,DateTimeでのやり方も分かりますよ

-----

PluginというよりDateTime自体の自分メモその1

ふつうの使い方

use Catalyst qw/ DateTime /;

my $dt_now = $c->datetime; # now   2007-10-10T07:09:54
my $dt_now2 = $c->dt;      # short 2007-10-10T07:09:54
my $dt_today = $c->datetime( year => 2007, month => 10, day => 10); # 2007-10-10T00:00:00

$c->datetime->todayとかないじゃん

C::P::DateTime::Constructorを使う

  • from_epoch, today
  • from_object
  • from_day_of_year
  • last_day_of_month

というメソッドを$cに生やしてくれる

use Catalyst qw/ DateTime::Constructor /;

my $dt_today = $c->today; # 2007-10-10T00:00:00

my $from_day_of_year  = $c->from_day_of_year(  year => 2007, day_of_year => 300 ); # 2007-10-27T00:00:00
my $last_day_of_month = $c->last_day_of_month( year => 2007, month => 10); # 2007-10-31T00:00:00

アプリ用Pluginを作った方がいいかも

timezoneとか指定するのがめんどくさい.最初はC::P::DateTimeを継承しようと思ったけど,コピペしてみた.無指定時のtzはAsia/Tokyoで決め打ちにしてみた

package MyApp::Plugin::DateTime;

use strict;
use warnings;

use Catalyst::Exception;
use DateTime;

our $VERSION = "0.01";

sub datetime {
    my $c = shift;
    my %params = @_;

    my $tz = delete $params{time_zone} || 'Asia/Tokyo';

    # use params if argued
    if (%params) {
        return DateTime->new(\%params)->set_time_zone($tz);
    }
    else { # otherwise use now
        return DateTime->now(time_zone => $tz);
    }
}

sub today {
    my $c  = shift;
    my %params = @_;

    my $tz = delete $params{time_zone} || 'Asia/Tokyo';

    # use params if argued
    if (%params) {
        return DateTime->today(\%params)->set_time_zone($tz);
    }
    else { # otherwise use now
        return DateTime->today(time_zone => $tz);
    }
}

1;

これに,必要に応じて他のメソッドも生やしていくとか,timezone指定を設定から読み込むとか

トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20071010

2007-09-14

[]codereposでのcatalyst codereposでのcatalyst - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - codereposでのcatalyst - LAPISLAZULI HILL#Catalyst codereposでのcatalyst - LAPISLAZULI HILL#Catalyst のブックマークコメント

いや,かなり出遅れてるんですが.catalystならこれです.typesterさんのCatalystアプリスタータースクリプトです

自分のは作ってないので今後のために参考にさせてもらいます.んで,公開したいですなぁ

トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20070914

2007-08-16

[][]Catalyst-Helper-Log-Dispatchでも$c->log->dumper()を使いたい Catalyst-Helper-Log-Dispatchでも$c->log->dumper()を使いたい - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - Catalyst-Helper-Log-Dispatchでも$c->log->dumper()を使いたい - LAPISLAZULI HILL#Catalyst Catalyst-Helper-Log-Dispatchでも$c->log->dumper()を使いたい - LAPISLAZULI HILL#Catalyst のブックマークコメント

いままでCatalyst::Logを使っていたので,C::P::Dumperを使っていた.これはlogに吐くときにData::Dumperを使って出力してくれる.変数にどういう値が入っているかいまだに勘違いしやすいへたれなので,開発やデバッグ時に重宝していた

2007/04/14 - memo - unknownplace.orgのhelperを使いはじめた.$c->log->dumper()ができなくなったのでC::P::DumperをコピペしてMyApp::Logger::Backend::Dumperをでっち上げた.最初はMyApp::Loggerに直接書いていたんだけど分離した.ほんとはHelperを作った方がよいかも.機会があれば習作としていずれ

MyApp::Logger::Backend::Dumper

package MyApp::Logger::Backend::Dumper;

use strict;
use warnings;
our $VERSION='0.01';

package MyApp::Logger::Backend;

use Data::Dumper;

$Data::Dumper::Sortkeys = 1;

sub dumper {
  my ($self, $var, $label) = @_;

  if (defined $label) {
      # temporarily change the Varname that D::D uses
      local $Data::Dumper::Varname = $label;
      $self->debug( Dumper($var) );
  }
  else {
      $self->debug( Dumper($var) );
  }
}

1;

このファイルを配置して,プラグインのロードを追加

use Catalyst qw/+MyApp::Logger +MyApp::Logger::Backend::Dumper/;
トラックバック - http://catalyst.g.hatena.ne.jp/lapis25/20070816

2007-08-06

[][]Catalyst::Plugin::Authenticationが変わっている Catalyst::Plugin::Authenticationが変わっている - LAPISLAZULI HILL#Catalyst を含むブックマーク はてなブックマーク - Catalyst::Plugin::Authenticationが変わっている - LAPISLAZULI HILL#Catalyst Catalyst::Plugin::Authenticationが変わっている - LAPISLAZULI HILL#Catalyst のブックマークコメント

ひさしぶりにCatalystをさわっている.id:vkgtaroさんにC::P::Authenticationが少し変更されていることを教えてもらった.自分で作っている分はいままでのようにひとつの認証方法を使っていて,詳しく見ていないのだけどこのあたりの変更がぱっと見える

  • loginメソッドからauthenticateメソッドに変更になっていて,引数にrealmが追加されている
  • 複数の認証方法を設定で書くことで,引数にrealmを設定して複数の認証方法をAuthenticationの仕組みで扱える
  • Authentication::StoreやAuthentication::Credentialはいままで,Pluginで指定をしていたけどconfigで設定するようになっている
  • Authentication::Store::DBICAuthentication::Store::DBIx::Class に変わっている(Authentication::Storeの仕組みが変わっているのか)

ユーザ認証が柔軟に設定できるようになったような気がします.気が向いたらもう少し詳しく調べてみます

続きを読む