The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
アプリケーションの枠組みを越えた再利用 前回は、Catalyst 5.7で登場したチェーンドアクションを利用して適切なベースコントローラをつくれば、CRUDのような定型処理は再利用できるようになる、という話をしました。これはコンテントマネジメントシステム(CMS)のように同じようなインタフェースを持つ画面が多いシステムをつくるときには特に効果的なのですが、その再利用を、ひとつのアプリケーション内だけで完結させてしまうのはもったいない話。自社でつくるアプリケーションにはどんどん使い回していきたいものですし、コピー&ペーストを避けるためには、なんらかの名前空間上にその共通コードをまとめていく必要があります。 もちろんそのコードが小さく、十分に一般化できるものなら、Catalyst、あるいはCatalystXという名前空間に入れてもかまいませんが、コントローラの部品だけでなく、モデルやビューまで
これもよく使うくせによく忘れるので備忘。 まずはCatalystのControllerでData::Page::Navigationをuseして MyApp::Controller::User package MyApp::Controller::User use strict; use warnings; use parent 'Catalyst::Controller'; use Data::Page::Navigation; sub index : Path : Args(0) { my ( $self, $c ) = @_; my $page = $c->req->param('page') || 1; my $rows = $c->req->param('rows') || 10; my $users = $c->model('DBIC::Users')->search( {},
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
Catalystアプリを継承する Catalystはたいへんすばらしいフレームワークですが、新しいプロジェクトを始める、という時にcatalyst.plでスケルトンから作り直していつものプラグインを設定して・・・みたいな面倒な手間がいろいろあります。 Pixisはなるたけ簡単に新しいアプリを作れるようにしたかったので最初からプラグイン機構を念頭に置いて書き始めましたが、それはあくまで機能の追加にしか使えず、JPAサイトのようにPixisというフレームワークを使って、JPAというサイトがPixis機能を乗っ取るというような場合はそれだけではうまく設計ができませんでした。 これについては悶々と考えていたのですがCatalyst 5.8になり、Mooseベースのオブジェクト指向ができるようになったことでひとつひらめきました。たとえばJPA::Webというアプリを作るとして、基本的にPixisがす
Catalyst::Helperが出力するMyApp.pmに、 use Catalyst::Runtime '5.70'; ってあるじゃないですか。 あまりHelper使わないから気付かなかったけど、良く見たら文字列になってるんですよね。ってことは、Catalyst::Runtimeバージョン5.70以上を要求してるわけじゃなくて、sub importに'5.70'という引数を渡してるだけなんですよ。 これを use Catalyst::Runtime 5.70; このように書くとバージョンチェックが働いて、Catalyst::Runtimeのバージョンが5.70未満だとコンパイルエラーになります。 $ perl -e "use Catalyst::Runtime '5.70';"; $ perl -e "use Catalyst::Runtime 5.70;"; Catalyst::Ru
Moosification: Catalyst 5.8に移行した際にちょっと気づいた事。 最初からMooseベースでアプリケーションを作るというのは、実務ではなかなか難しいのはわかります。一般論は JPA #02で話すのでおいておきますが(参加申し込みは今日5/12までですよ!)、5.8 からMoose化したCatalystであった問題・注意点をちょっと書き出してみます。 1. use Catalyst Catalyst::Upgradingを読んでいると package MyApp; use Moose; extends 'Catalyst'; __PACKAGE__->setup(qw/ ConfigLoader /); という表記が見られるが、これは気をつけないと駄目。 自分が直面した問題は、path_to()等を使った時に起こった。path_to() は現アプリのルートディレクトリ
3年前の大混乱 モダンPerl界を代表するウェブアプリケーションフレームワークといわれるCatalystが2006年半ばに5.6系統から5.7系統に移行したとき、創始者のゼバスティアン・リーデル氏を追い出す形で集団管理体制に移行した開発チームが最初にしたことは、プロジェクト開始当初から使われてきたCatalystという名のディストリビューションはそのままに、Catalyst-Runtimeという新しいディストリビューションをつくることでした。 このようなディストリビューション名の変更は、CPANクライアントを使っている分には(内部でモジュール名からディストリビューション名への変換が行われるので)問題にならないのですが、外部のパッケージ管理者たちには少なからぬ負担をかけました。なにしろ突然100を越す関連パッケージの依存が変更になるのです。基本的にはメタ情報だけ書き換えれば済む話とはいえ、従
1. Plugin プラグインの使用を控える 間違った使用方法、実装方法で定義されていることが多い プラグインの使いどころ リクエストディスパッチのロジックを監視、変更する場合のみ リクエストパラメーターの変換、Catalyst のメソッド実行チェーンの変更を含む 本当に使わない方向で Catalyst::Plugin::* の中にはそもそもプラグインとして実装されるべきでないものが多い コンテキストオブジェクト ($c) にメソッドを追加する実装がそもそも良くない手法 大半のプラグインはモデルとして実装されるべき それ以外はそもそも存在するべきがどうかさえ疑問 (eg.Catalyst::Plugin::Message) Catalyst::Plugin::Authentication はどうなの? とはいえ、例外はある 認証系とセッション系はプラグインで存在しなければならない意味がある
Catalyst 5.8系、通称catamooseの最初のリリースバージョンであるCatalyst::Runtime 5. 80001がCPANにアップされました。 [Catalyst] [ANNOUNCE] Catalyst Runtime 5.80001 The Catalyst Core Team is proud to announce that we've just shipped the next major release of the Catalyst framework, version 5.8001. This release is the result of the helpful contributions of a large number of people, comprising documentation, new features, bug fixe
モダン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
This repository is private. All pages are served over SSL and all pushing and pulling is done over SSH. No one may fork, clone, or view it unless they are added as a member. Every repository with this icon () is private. This repository is public. Anyone may fork, clone, or view it. Every repository with this icon () is public.
JPA セミナー #1 「Catalyst フレームワークを120% 使う/Perl開発最新ベストプラクティス(予定)」 内容 未定 (Catalyst, Moose, ウェブアプリケーション ベストプラクティスの予定) 講師 Jay Shirley氏 海外で近代的なPerlでのシステム構築技術の普及に努める Enlightened Perl Organisation (EPO) のコアメンバーであるJay Shirley氏はDBIx::ClassやCatalyst 等のフレームワークを使ったスケーラブルかつ堅牢なシステムの構築を日々行っている、世界でも屈指のPerl系 エンジニアです。 EPO EPOはレガシーなPerlではなく、現在現場で実際にアプリケーション開発に使われているPerl、そして最先端のベストプラクティス等の教育を通してPerl 技術を理解してもらうための団体です。 会場
JPA Semniar #1 (第一回旗揚げセミナー!) Japan Perl Associationセミナー#1 を開催します。 記念すべき第一回旗揚げセミナーです! 秋葉原UDXでCatalystを使い倒す話とMoose等の最新ベストプラクティスに関しての話になる予定で、講師はJay Shirley氏です。日本ではまだあまり名前が売れてないかもしれないですが、トップレベルの技術者で、CatalystやDBIx::Classなどを現場でどう生かすのかというノウハウについては絶大なるものを持っています。また、最近ではMatt Trout氏らとEnlightened Perl Origanisation (EPO)という、エンタープライズ分野でPerlを使うためのノウハウやサポートの提供を行う団体を立ち上げています(EPOはThe Perl FoundationなどよりもJPAにかぶるかもし
モダンなクラス/オブジェクトのあり方は? Perlではそもそもオブジェクトという考え方自体が、Perl 5(Perl 7歳)ではじめて登場した、後付けのものでした。また、その実装も非常におおらかなものだったため、より「本格的な」オブジェクト機構を備えた言語のユーザからはしばしば批判されてきました。 ただし、転んでもただでは起きないのがPerlハッカーたちのよいところ。そのような批判を糧に、「モダンPerl」の世界でもっとも激しく、多様に進化してきたのがこの分野です。 今回はそのようなクラス/オブジェクトの進化の一例として、クラスの継承とメソッドの解決順序にまつわる話題をまとめていきます。 継承によるクラスの拡張 伝統的なbaseプラグマを使ってクラスを拡張する場合、継承元と継承先に同名のメソッドがあれば継承先のメソッドだけが優先的に実行されます。 use strict; use warn
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く