header image

携帯対応

QRコード

RING

人気ブログランキング

新着記事

2006/06/30 00:00:00 日記 none Comments

帰りの東海道線で座っていたのだが、前の会社の社章のバッチをつけたサラリーマンが、「Share徹底なんちゃら」つうムック本を読んでいた。

まぁ人が何読もうがあまりどうでも良いのだが・・・。

電車の中でほぼ著作権法等に違反することが確定のような雑誌を読むのはいかがなものか?

このサラリーマンが、もし情報システム会社の社員だったりしたら、そんな会社には仕事発注したくないこと間違いなし。

#雑誌をちら見したら、Shareで入手できる映画一覧とかいってるし、そんな出版社逝ってよし。

2006/06/29 00:00:00 Perl none Comments Tags: ,

またまた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が必要。

2006/06/28 00:00:00 Perl none Comments Tags: ,

CPANのRSS見てたら、ふと面白そうなの見つけた。

Class::STL::Containers

ってやつなのだが、何が出来るかというと、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.

明日から触ってみることにする。

ちなみに日本語でググったら何も出なかった。だめなのかな?知ってる人おしえてぷりーず。

2006/06/27 23:20:01 日記 none Comments

明日からビシビシやります。甘やかすのはよくない。

#次やったら逝ってよし

2006/06/26 23:43:44 Perl none Comments Tags: ,

昨日の続き。(つーーか最新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が古かった。。。)

2006/06/25 19:38:10 Perl none Comments Tags: ,

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での独自の形式チェックなどにも適用可能。

詳細はCPANを参照。

2006/06/21 01:14:54 日記 none Comments

夜十時を過ぎて急に息子が39.5度の熱を出した。あまりに突然なので気になって、救急外来をやっている病院までタクシーで行ってきた。

結果とりあえず息子はあまり問題なく風邪の初期症状ってことで一件落着。

しかし・・・・・・・・・

重大な問題が・・・・・・・・・・・

妻が血圧測定器を見て、「計ってきたら?」って言うのでやってみると、

なんと・・・・・・・・・

なんと・・・・・・・・・

血圧 162

なんすかこれ。

間違いでは?

気のせいでは?

明日から、いや、今日から節制生活に突入します。いや、まぢでやばい。

2006/06/20 00:10:49 Perl none Comments Tags: ,

Perlによるオブジェクト指向のサンプル。とりあえず教育用にさらっと。しんぷるいずべすと。ってかこれくらいしっててほちい。

MyTest.pm

package MyTest;

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

#!/usr/bin/perl -w

use strict;
use warnings;
use Carp qw(croak);
use FindBin qw($Bin);
use lib($Bin);
use MyTest;

my $obj = MyTest->new();
$obj->set_a(100000);
$obj->do_test();
print $obj->get_a();

2006/06/18 09:03:28 日記 none Comments

なんどもなんども同じことをやらかされて、さすがに切れ気味。

その軽率で頭使っていないちょっとの行動が、会社としての大きな責任になるのに、それも理解してねぇ。

あー、会社行きたくねぇ。_| ̄|○

2006/06/11 08:18:02 日記 none Comments

ガマンの限界!顧客が悪魔に見えた瞬間

http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000407

客が悪魔に見える瞬間が俺にも、たまに(?)ある。

まぁ別ルートで交渉したり、金で解決したり、根回しして最終的にはなんとかなるんだけど。

仕様変更くらいぢゃ、どうのこうのいわんが、言い方は工夫してほしいもんです。

少なくとも、こっちが「頑張ってやろう!」って思うような言い方はしてほしいし、「簡単に出来るだろ?」とかいうなら自分でやれや。ぼけ。、とも思います。

みんなどうなんだろ。

ちなみに、悪魔に見えることもあるが、裸の王様に見えることもある。

 

日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有


ads

読まなきゃモグリ