Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
帰りの東海道線で座っていたのだが、前の会社の社章のバッチをつけたサラリーマンが、「Share徹底なんちゃら」つうムック本を読んでいた。
まぁ人が何読もうがあまりどうでも良いのだが・・・。
電車の中でほぼ著作権法等に違反することが確定のような雑誌を読むのはいかがなものか?
このサラリーマンが、もし情報システム会社の社員だったりしたら、そんな会社には仕事発注したくないこと間違いなし。
#雑誌をちら見したら、Shareで入手できる映画一覧とかいってるし、そんな出版社逝ってよし。
またまたCPANねた。
Email::Valid::Looseってのはどうかね?Sixapartの宮川氏作。
簡単にいうと、rfc822違反の某NTTド○モがユーザに許可している
「@の前に.(ドット)を許可しているメールアドレス」
も正しいメールアドレスとしてチェックするライブラリ。使うのちょー簡単。(CPANから引用)
use Email::Valid::Loose; # same as Email::Valid my $addr = 'read_rfc822.@docomo.ne.jp'; my $is_valid = Email::Valid::Loose->address($addr);
これくらいのモジュール規模でも十分利用価値あるよね。
正規表現で毎回ガリガリやるの面倒だし。
#微妙に当たり前だが、Email::Validを継承してます。動作にはEmail::Validの0.17が必要。
CPANのRSS見てたら、ふと面白そうなの見つけた。
ってやつなのだが、何が出来るかというと、C++にあるようなSTLをPerlでやってしまおう、という素敵(に見える)モジュールなのである。
まぁPerlでは配列操作も簡単だし、わざわざSTLもどきを使うことも無いかもしれないんだけど。
できることは以下のようなこと。
Containers
vector, list, deque, queue, priority_queue, stack, tree.
Iterators
iterator, bidirectional_iterator, reverse_iterator,
forward_iterator.
Algorithms
find, find_if, for_each, transform, count, count_if,
copy, copy_backward, remove, remove_if, remove_copy,
remove_copy_if, replace, replace_if, replace_copy, replace_copy_if.
Utilities
equal_to, not_equal_to, greater, greater_equal, less, less_equal,
compare, bind1st, bind2nd, mem_fun, ptr_fun, ptr_fun_binary,
matches, matches_ic, logical_and, logical_or, multiplies,
divides, plus, minus, modulus.
明日から触ってみることにする。
ちなみに日本語でググったら何も出なかった。だめなのかな?知ってる人おしえてぷりーず。
明日からビシビシやります。甘やかすのはよくない。
#次やったら逝ってよし
昨日の続き。(つーーか最新Perl技法についていけてないので必死に勉強せんといかん)
set/get を使わないなら、Class::Accessor::Fast の方がよいのでは?
最近のスタイルでは set/get を使うのが一般的で、follow_best_practice
すると set/get しか使えなくなるくらいですよ。
との指摘を頂いた。確かにClass::Accessor::Fastで良いですね。実際Catalystの内部なんかではこっち使ってます。一方でDBIとかは普通にClass::Accessorですが。
follow_best_practiceって初めて知った。これ面白い。
package Person; use base Class::Accessor; __PACKAGE__->follow_best_practice; __PACKAGE__->mk_accessors(qw(weight height age sex)); 1;
としておくとset_ageやget_ageでしか呼び出せなくなる。呼び出そうとすると
Can't locate object method "weight" via package "Person" at ./Test.pl line 13.
というようなエラーを吐く。
ただし、Class::Accessorのバージョンは0.19ではこのメソッドは用意されておらず、最新の0.25だとOKだったので注意。
(うちの環境はCatalyst5.23だったのでClass::Accessorが古かった。。。)
Perlによるオブジェクト指向の続き。
前回のサンプルコードは、重大な問題を抱えていて、setterを使わなくても直接ハッシュを操作することで値を変更できてしまう、という大きな欠点があった。
なので、ボケナス君がプロジェクトに居たりすると、わざわざsetterを用意しているのに、むちゃくちゃな値を代入したりして、まるでただの便利なグローバル変数かのように使われてしまう。
Perlの場合はそもそもそのあたりが性善説に基づいているので仕方がないのだが・・・。
そんなときにはとりあrずClass::Accessorを使うのがBest。
(これでも直接ハッシュは操作できるが、見た目からは大分隠蔽されている)
#ちなみにPerlではsetterとgetterを共通のaccessorで表現するのがお作法だそうなので、JAVAのようにgetX、setXとはせず、Xという名前で定義するらしい。
package Person; use base qw(Class::Accessor); Person->mk_accessors(qw(weight height age sex)); 1;
上記は、例えばPerson.pmとした人間を表すクラス。weight、height、age、sexというプロパティのみの操作が出来る、ということになる。
また特定のメソッドのみOverrideしてしまうことも出来るので、setterでの独自の形式チェックなどにも適用可能。
夜十時を過ぎて急に息子が39.5度の熱を出した。あまりに突然なので気になって、救急外来をやっている病院までタクシーで行ってきた。
結果とりあえず息子はあまり問題なく風邪の初期症状ってことで一件落着。
しかし・・・・・・・・・
重大な問題が・・・・・・・・・・・
妻が血圧測定器を見て、「計ってきたら?」って言うのでやってみると、
なんと・・・・・・・・・
なんと・・・・・・・・・
血圧 162
なんすかこれ。
間違いでは?
気のせいでは?
明日から、いや、今日から節制生活に突入します。いや、まぢでやばい。
Perlによるオブジェクト指向のサンプル。とりあえず教育用にさらっと。しんぷるいずべすと。ってかこれくらいしっててほちい。
MyTest.pm
sub new {
my $class = shift;
# オブジェクトを作成
my $self = {
a => 1,
b => 100,
};
# $selfをこのクラスのメンバーにする
return bless $self, $class;
}
sub set_a {
my $self = shift;
my $a = shift;
$self->{a} = $a;
}
sub get_a {
my $self = shift;
return $self->{a};
}
sub do_test {
my $self = shift;
print "$self->{a} : $self->{b}";
}
1;
呼び出し元 Test.pl
なんどもなんども同じことをやらかされて、さすがに切れ気味。
その軽率で頭使っていないちょっとの行動が、会社としての大きな責任になるのに、それも理解してねぇ。
あー、会社行きたくねぇ。_| ̄|○
ガマンの限界!顧客が悪魔に見えた瞬間
http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000407
客が悪魔に見える瞬間が俺にも、たまに(?)ある。
まぁ別ルートで交渉したり、金で解決したり、根回しして最終的にはなんとかなるんだけど。
仕様変更くらいぢゃ、どうのこうのいわんが、言い方は工夫してほしいもんです。
少なくとも、こっちが「頑張ってやろう!」って思うような言い方はしてほしいし、「簡単に出来るだろ?」とかいうなら自分でやれや。ぼけ。、とも思います。
みんなどうなんだろ。
ちなみに、悪魔に見えることもあるが、裸の王様に見えることもある。
日記 PHP オープンソース Linux Trac Perl wordpress フリーソフト Agile 自宅サーバ phpMyFaq Plugin 書評 Delphi apache プラグイン Subversion アジャイル mojavi セキュリティ Ruby Firefox Ajax/Web2.0 eclipse サーバ Zope フレームワーク CakePHP 文字化け scuttle OpenVZ 自宅 phpBB CMS 翻訳・日本語化 Excel ApacheDS 生産性向上 仮想化 hacks CodeIgniter XAMPP LDAP SBM taskfreak Ajax 修正 言語ファイル mod_security ダウンロード HTML::FillInForm 情報共有 格安 メンテナンス 移転 アンケート レンタル PhpScheduleIt 翻訳 API