タグ

ブックマーク / foosin.hatenablog.com (15)

  • catalystでモデル分離が落ち着いた。その上でUser->find_by(id => 2)とかしてみた - 新だるろぐ跡地

    いつまでモデル分離やってんだよって感じですが。 色々問題も解決していい感じに落ち着いた。 APIDBICのCRUDなメソッドが呼べなかった件 流れ モデルを分離するためにAPIを作ろう $c->model('API::User')でAPIが呼ばれるようにしよう モデルを呼ぶのにwebのコンテキストから切り離せた! でも当然DBICのsearchとかのメソッドはAPIから呼べないよね searchとかしたい場合はresultsetオブジェクト用意してね 毎回用意するの面倒です 解決策 DBICのCRUDなメソッドが使えるクラスを用意して、全APIがそれ継承すればいい この考え自体は思いついてたし、pixisでもそうやってたから間違っては無いはず。 が、自分で実装ができなかったのと、pixis丸パクりは自分のためにならないのでやらなかったので、実現できなかった。 pixisのソースちゃんと読

    catalystでモデル分離が落ち着いた。その上でUser->find_by(id => 2)とかしてみた - 新だるろぐ跡地
  • 同じモジュールを複数回useしたときの挙動とかシンボルテーブルとか - 新だるろぐ跡地

    神ネタ。もう神タグ作ろうかな。 perlではモジュールをuseすると、use元のシンボルテーブルに、そのモジュールをuseしたよっていうフラグみたいなものが付くらしい。 で、同じモジュールを複数回useしても、そのフラグを見て、既にuseされてたらuseの処理は走らない、らしい。 Mod.pm package Mod; use base qw/Exporter/; use strict; use warnings; our @EXPORT = qw/hoge/; sub hoge { 1 } 1; main.pl use strict; use warnings; use Mod; sub hoge { 2 } ここでいうと、use Modにより、main::の名前空間にhogeという関数がエクスポートされる。 で、main.plの中でもhogeという関数を定義する事で、redefineな

    同じモジュールを複数回useしたときの挙動とかシンボルテーブルとか - 新だるろぐ跡地
  • モジュールをCPANにうpする前に名前空間が使えるか確認した方がいいかも - 新だるろぐ跡地

    こないだcpan authorになったのだけど、そのときこちらを大変参考にさせてもらった。 [Perl] 作成したモジュールをCPANで公開する手順 ここの手順だと、 モジュール作成 作ったモジュールをCPANにうP 名前空間の登録(Register Namespace) となっているが、モジュール作成前に名前空間の登録をした方がいいかもしれない。 というのも。 Config::Loader::Dirという名前のモジュールを作ろうと思って、作成前に名前空間の登録申請だけしておいた。 Config::Loaderというモジュールは過去存在して、今はDEPRECATEDになってて、作者がConfig::Mergeという後継モジュールを作っている。 こーいう場合使えるか分からんかったけど、とりあえず申請してみた感じ。 そしたら、mstさんから「小僧!俺の管理する名前空間に手を出すとはいい度胸だ!

    モジュールをCPANにうpする前に名前空間が使えるか確認した方がいいかも - 新だるろぐ跡地
    bayashi_net
    bayashi_net 2009/05/23
    「そしたら、mstさんから「小僧!俺の管理する名前空間に手を出すとはいい度胸だ!」とメールが来た。」
  • cpanモジュールにリポジトリへのリンクを張ろう - 新だるろぐ跡地

    先日、作ったモジュールが5.6.2でだけテストがコケるーと書いたら、コメントで原因を教えてもらったので(参照)直してcpanにupった。 ついでに、どうやらリポジトリへのリンクを張る機能が出来たようなので(参照)やってみた。 http://search.cpan.org/~hirafoo/Template-Plugin-LinkTo/ やり方は上記リンクの通り、Makefile.PLでrepositoryメソッドを、リポジトリのURIを引数にとって呼ぶだけ。 Module::Installの新機能で、Changesによれば0.75から実装されてる機能のようだ。 いいね、これ。

    cpanモジュールにリポジトリへのリンクを張ろう - 新だるろぐ跡地
  • cpanモジュールのバージョン - 新だるろぐ跡地

    たかだかpodミスくらいでバージョン上げるのも迷惑だと思うので上げずに更新したいんだけどこれってどうなんだろう。 追記(09/05/04) bayashi_netさん> なるほどーありがとうございます。気にしないことにします! 既に手遅れだからどうしようもないってのもありますがw

    cpanモジュールのバージョン - 新だるろぐ跡地
    bayashi_net
    bayashi_net 2009/05/04
    自分も不安に思ったことがあったんですが、yokohama.pm で教えてもらったところ、それほど気にしなくていいということでした
  • CPAN Authorになりました - 新だるろぐ跡地

    やろうやろうと思ってたけど、案外さくっといけました、と。 hirafoo (HIRAFOO) - metacpan.org 何を作ったかというと、Ruby on Railsのlink_toメソッドみたいな動きをするもの。 Template-Plugin-LinkTo-0.093 - like link_to in Ruby on Rails - metacpan.org uri_forを拡張までいかないけど、自分の使いたいように使いたかったので。 Template::Plugin::URLが近い動きをするけど、自分の欲しい物はこれとも違う。 こんなこと書くとrailsが使えるみたいに思われるかもだけど、railsは全然扱えません。 初モジュールがTemplateのプラグインとな。どっかで聞いた話ですね。 ええ参考にさせてもらいましたとも → [僕] CPAN Author になりました。

    CPAN Authorになりました - 新だるろぐ跡地
  • データを返すようなモデルメソッドのテストはfixtureだ - 新だるろぐ跡地

    ロジックや、booleanとか値を返すようなメソッドのテストは書けるようになった。 データベースからの問い合わせ結果、DBICでいうResultSetを返すようなメソッドではどう書けばいいか分からなかった。 ということをTwitterでぼやいたら天から神の声が降ってきた。 それfixtureでできるよ 普通にやろうとすると超大変だけど(意訳) そういえばそんな名前のディレクトリがrailsの中にあったなーと思いつつググる。 テスト用のデータを作ってそこに対してテストする的な。なるほど。 大変なのはめどいのでググる。Test::Fixture::DBIC::Schemaというモジュール発見。 以下ほぼSYNOPSISまま。 Schema.pm package Schema; use strict; use parent 'DBIx::Class::Schema::Loader'; 1; fi

    データを返すようなモデルメソッドのテストはfixtureだ - 新だるろぐ跡地
  • JPAセミナーに参加してきた - 新だるろぐ跡地

    有用なレポートは他の人が書いてるからそっち見たらいいと思うよマジで! なのでここでは主に口頭であったことのメモ書きを。でもこのメモすら他の人と被ってる上にメモ間違いが含まれてるから。 不完全な走り書きのようなものです。 会場では先着順でリアルタイム通訳を受けるための受信機が借りられた。 借りられてよかった。が、このイヤホン、付けてると耳が痛くなる。キーンという音が悪いのか、イヤホンがでかいのかは不明。多分両方。というわけで、耳穴拡張されつつ聞いてきた。 通訳の人は、「こういうのは慣れてないからちゃんとできないかも」と言われてたけど、全然問題なく聞けました。 スライドを映しながら解説。スライドを印刷し、日語で解説が書かれた資料も事前に配られた。 んが、資料とスライドがたまーに地味に少しだけ違ったりした。 資料には目を落とさず、前を向いて、口頭で言われた事をメモってた。 資料に書いてる事まん

    JPAセミナーに参加してきた - 新だるろぐ跡地
  • $c->stashの書き方を効率的にしよう - 新だるろぐ跡地

    catalystアプリのソースで、よくこういうのを見る。 $c->stash->{hoge} = $hoge; $c->stash->{huga} = $huga; $c->stash->{fooo} = $fooo; これはこう書ける。 $c->stash( hoge => $hoge, huga => $huga, fooo => $fooo, ); ずっと前に神から教えてもらった。 というわけでソース嫁俺。 Catalyst.pm sub stash { my $c = shift; if (@_) { my $stash = @_ > 1 ? {@_} : $_[0]; croak('stash takes a hash or hashref') unless ref $stash; foreach my $key ( keys %$stash ) { $c->{stash}->{

    $c->stashの書き方を効率的にしよう - 新だるろぐ跡地
  • catalystのサンプルアプリとソースを公開してみる - 新だるろぐ跡地

    モダンPerl入門を読んで色々勉強したので、サンプルアプリを作って自宅サーバで公開してみる。 http://niget.net/ ソースはgithubで晒し中。 http://github.com/hirafoo/niget/tree/master 誰かの参考になったり、disられたり、あれこれ議論したり、何かが起こったりするのを期待中。 とりあえず、このアプリの使い方とか。 ニコニコ動画の任意の動画のURLを入力 適当バリデートを通ったらDBに保存 5分に1回cronが走る。内容は、ニコニコ動画のAPIを叩いて、動画体のURLと動画の名前を取得 APIは2個ある。体のURLを取得する部分は小飼 弾さんのスクリプトを使わせてもらった 取得した内容をDBに保存。取得済みの動画は削除。 あとは動画体を落とせばいいじゃない 以上。 まーサンプルアプリだしね! でも、体URLを取得できるw

    catalystのサンプルアプリとソースを公開してみる - 新だるろぐ跡地
  • 標準じゃないモジュールの場所が知りたい - 新だるろぐ跡地

    プロジェクト固有のモジュールを使ってるときに、そいつの場所を知りたいときがある。 % tree . |-- lib | `-- Mod.pm `-- main.pl こんなとき、訳あってMod.pmの場所を得たいとする。Module::Pluggableみたいなことがしたいのだ。 例だから簡単な構造にしてるけど、実際はあんなパスやこんなパスにモジュールがある、なんて場合がたまにある。 MyApp/lib、MyApp/Schema、MyApp/CLI、t/lib、とか。…catalystばっかやんけ。 main.pl use strict; use warnings; use lib './lib'; use Mod; use FindBin; use Data::Dumper; sub p ($) { print Dumper shift } p $FindBin::RealBin; だと

    標準じゃないモジュールの場所が知りたい - 新だるろぐ跡地
  • #catalyst-jaで質問してきた - 新だるろぐ跡地

    perlのえらい人が集まる#catalyst-jaで質問してきた。 ここからどうでもいい話( ・∀・) そもそも#catalyst-jaって何 freenode上に存在するcatalystな人が集まるチャンネル。catalystについて調べてるうちに知った。 最初はfreenodeという単語すら知らなかったので、ググってたどり着いたはいいけど、このチャンネル、perlのえらい人ばっかりいる。 初めてjoinしたときはビビってすぐ落ちた。 このチャンネル、ググっても様子が分からなかったので、とりあえずサーバマシンでircクライアント立ち上げて入りっぱなしにしてみた。 その後、長いこと放置してログを見てみるも、全然発言が発生しない。 どう見ても初心者お断りな雰囲気でガクブル。 catalystのネタや小話や質問が毎日飛び交ってるのを想像してた。 どうでもいいがある日一度質問したら華麗にスルーさ

    #catalyst-jaで質問してきた - 新だるろぐ跡地
  • モジュールのソース読むときに大変なこと - 新だるろぐ跡地

    use baseとか$self->next::methodとかしてて、あっちこっち見に行かなきゃならなくて、見て回ってるうちに何見てたか忘れるっていう

    モジュールのソース読むときに大変なこと - 新だるろぐ跡地
  • Catalyst::Plugin::Authenticationの新しい版 - 新だるろぐ跡地

    複数の認証条件が使えるようになってた。 認証方法1:mail_addressとpassword 認証方法2:serialとpassword みたいな。 例えばUserテーブルに持ってる情報で認証するサンプル。 設定 authentication: default_realm: use_mail realms: use_mail: credential: class: Password password_field: password password_type: clear store: class: DBIx::Class user_class: DBIC::User id_field: mail_address use_serial: credential: class: Password password_field: password password_type: clear st

    Catalyst::Plugin::Authenticationの新しい版 - 新だるろぐ跡地
  • perlでハッシュとかのカッコの前に付いてるプラスの意味 - 新だるろぐ跡地

    {}の前にプラスが付いて、+{}とかなってるのをよく見るけど、やっとこれの意味が分かったのでメモ。 このカッコはハッシュ以外にも使われるから、「これはハッシュリファレンスですよ」と明示するためのもの。 use strict; use warnings; use Data::Dumper; local $\ = "\n"; sub p { print Dumper shift; } sub hashref_ng { { @_ } } sub hashref_ok { +{ @_ } } my $ng = hashref_ng(1,2,3,4); my $ok = hashref_ok(1,2,3,4); p $ng; p $ok; 実行結果 % perl hashref.pl $VAR1 = 4; $VAR1 = { '1' => 2, '3' => 4 }; こんな常識も知らずにおりますよ

    perlでハッシュとかのカッコの前に付いてるプラスの意味 - 新だるろぐ跡地
  • 1