2008-05-01から1ヶ月間の記事一覧

Mooseでデザパタ - Templateパターン

#!/usr/bin/env perl use strict; use warnings; # Template パターン # # Java言語で学ぶデザインパターンと同様の例題をPerl+Mooseで記述した。 # # coded by Dann { package AbstractDisplay; # 抽象クラスAbstractDisplay use Moose::Role; requires &#3…

Mooseでデザパタ - Bridgeパターン

#!/usr/bin/env perl use strict; use warnings; # Bridge パターン # # Java言語で学ぶデザインパターンと同様の例題をPerl+Mooseで記述した。 # # coded by Dann # { package Display; use Moose; has impl => ( is => 'rw', required => 1, handl…

Mooseでデザパタ - Factory Methodパターン

# Factory Method パターン # # Java言語で学ぶデザインパターンと同様の例題をPerl+Mooseで記述した。 # # coded by Dann # { package Product; use Moose::Role; requires 'use'; } { package Factory; use Moose::Role; requires 'create_pro…

Mooseでデザパタ - Proxyパターン

#!/usr/bin/env perl use strict; use warnings; use Perl6::Say; # Proxy パターン # # Java言語で学ぶデザインパターンと同様の例題をPerl+Mooseで記述した。 # # coded by Dann # { package Printable; use Moose::Role; requires 'set_printer_name&…

Mooseでデザパタ - Visitorパターン

#!/usr/bin/env perl use strict; use warnings; # Visitor パターン # # Fileクラスはシステムで定義してあるのでFile以外のクラス名とすること # # 印字内容は検討中 # { package FileNode; use Moose; use Perl6::Say; has name => ( is => 'rw',…

MooseでDP入門を書いて思った事

hyukiさんのDP入門のRuby版コードをそのままPerlにportingしてみて何点か思った事。 Mooseで少し思ったところ コンストラクタで何か処理させたい場合は、BUILD使うってのがFAQに書いてあるんだけど直感的でない hasのdefaultで設定する要素にparameter渡した…

MooseでList::RubyLike

List::RubyLikeをMoose::Autobox用に移植してみました。 まだ足りないメソッドはありますが、おいおい追加していきます。コード package Moose::Autobox::Array::RubyLike; use Moose::Role; use Moose::Autobox; use List::Util; use Carp qw/croak/; our $…

Mooseでデザパタ - Chain Of Responsibilityパターン

#!/usr/bin/env perl { package Trouble; use Moose; has number => ( is => 'rw', isa => 'Int', required => 1 ); } { package Support; use Moose::Role; use Perl6::Say; has name => ( is => 'rw', isa => 'Str', requ…

make_immutable

__PACKAGE__->meta->make_immutableを本当は書こうかと思ったけれど、ちょっと冗長だからやめようかなと。Mooseの実装のように、どこか一カ所にまとめて書いちゃったほうがいい気がするなぁ。immutableにする処理とかは。全部のクラスの最後に書くのは、なん…

Mooseでデザパタ - Adapterパターン

{ package Banner; use Moose; use Perl6::Say; has string => ( is => 'rw', isa => 'Str', required => 1 ); sub show_with_paren { my $self = shift; say '( ' . $self->string . ' )'; } sub show_with_aster { my $se…

Mooseでデザパタ - Singletonパターン

#!/usr/bin/env perl use strict; use warnings; use Perl6::Say; { package Single; use MooseX::Singleton; } sub main { my $obj1 = Single->instance; my $obj2 = Single->instance; if ( $obj1 == $obj2 ) { say "obj1とobj2は同じインスタンスです。";…

Mooseでデザパタ - Compositeパターン

#!/usr/bin/env perl use strict; use warnings; { package Entry; use Moose::Role 'requires'; requires 'get_name'; requires 'get_size'; } { package File; use Moose; use Perl6::Say; with 'Entry'; has name => ( i…

結城さんのデザパタ本のRuby移植版

http://www.ceres.dti.ne.jp/~kaga/frame.htmlMoose使う場合だとRubyに移植したやつを、Perlに移植しちゃったほうが楽かな。さらにPerlっぽくとか、色々とあるとは思うけれどそこらは誰かやってくれるかなと。

Mooseで学ぶデザインパターン入門

Ruby, Ptyhon, Javaなどを使った後にPerlにうつろうとすると、まず最初につまづくのがPerlでのオブジェクト指向なんじゃないかと思った。 まずクラス定義、継承、インスタンス変数の定義から始まって、とにかく色んなところでつまずく。blessってまずなんだ…

newbieの種類別のコミュニティのコンテンツ

newbieといっても色んなパターンのnewbieがいて、他の言語をやっているけれどPerlはnewbieだったり(自分)、そもそも開発がnewbieだったり、言語の基本はわかっているけれどCPANモジュールどれ使っていいかわからないCPAN module newbieだったりと、とにかく…

ファイルを削除する

#!/usr/bin/evn perl use strict; use warnings; use Path::Class; file('tmp.txt')->touch; file('tmp.txt')->remove or die "can't delete file"; See also: http://d.hatena.ne.jp/perlcodesample/20080520/1211255597

複数階層のディレクトリを作成する

#!/usr/bin/evn perl use strict; use warnings; use Path::Class; dir('foo','bar')->mkpath or die "can't create dir"; パス表現はPath::Classを使う事でCross Platformで扱う事ができます。See also http://d.hatena.ne.jp/perlcode…

perlcodesampleさんのCPANモジュール使用版

こんなのをやりたいなぁと思っていたので、コンテンツの一部として少しずつ書いていこうと思います。perlcodesampleさんのは、割とプリミティブなものが多いので、Cookbookレベルのものにするかもしれません。また、Catalystグループ(catalyst.g.hatena.ne.j…

ファイルを作成する

#!/usr/bin/env perl use strict; use warnings; use Path::Class; my $fh = file('tmp.txt')->openw; $fh->close; __END__ 作るだけであれば、touchでもよいと思います。See also: http://d.hatena.ne.jp/perlcodesample/20080519/1211252829

ファイル名から、ディレクトリ名とベース名を取り出す

#!/usr/bin/evn perl use strict; use warnings; use Path::Class; use Perl6::Say; my $file = file( 'foo', 'bar', 'tmp.txt' ); say $file->basename; say $file->dir; __END__ See also: http://d.hatena.ne.jp/perlcodesample/…

ハッシュのすべてのキーと値を取得する。keys関数とvalues関数。

#!/usr/bin/env perl use strict; use warnings; use Moose::Autobox; use Perl6::Say; my $mother_of = { Taro => 'Tomoko', Naoko => 'Shizuka', Kenji => 'Sayo', }; ### 1: ハッシュのすべてのキーを取り出す say $mother_of->k…

ハッシュのキーを削除する

#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use Perl6::Say; use Moose::Autobox; ### ハッシュのキーを削除するには、delete関数を使う。 my $math_score_of = { Aiko => 89, Kenta => 0, Taro => undef, }; #生徒の数学の点数 #1: …

perl-mongers.org

http://perl-mongers.orgworemacx++, vkgtaro++perl-users、perl-mongersと色んなコミュニティがこうやってできるというのはいいことですね。こうやってコミュニティが増えていくことで、色んな人が参加できるようになるというのはとてもいいことなんじゃな…

Mooseを使うべき理由

メタプログラミングが簡単にできる Mixinベースの機能拡張ができる(多重継承よりbetter) OOが素直にできる(blessやらfuck) インターフェースによる実装の制約を実現できる 型による固いプログラミングができる などなどと色々と理由を書きたいところではあり…

Mooseのaround modifierで正規表現使うパッチ

Mooseのaround modifierにパッチあてて取り込んでもらったんだけど、まだまだ微妙なんだよねー Roleが適用されるタイミングとか調べて、Roleに適用されるケースのパッチもかかないとなぁ# Moose::Utilのapply_all_rolesでroleをapplyする周辺でやればよさそ…

vim版flymake

http://github.com/kana/vim-flymake/tree/master期待age.

モジュールの作り方

http://www.naney.org/diki/dk/Perl%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9.html http://blog.clouder.jp/archives/001006.html http://arbolbell.jp/perl/2007/11/cpanize-cpanize.html

FastCGI vs mod_perl

mstとかが激しくmod_perlをDISってるんだけれど、FastCGIだとどこら辺が一番違うのかなぁ mod_perlでしか運用したことないんだけれど、FastCGIがいい点があったら少しさわってみようかなぁ

Moooooooooooooooooooooved

catalystグループにはCatalystのことだけ書いてくよ!