Headline About TechLog Download Java VBA Link

August 16, 2007.

Perlでオブジェクト指向


バドサークル用サイトの骨を作りつつあります。ユーザ権限による画面の動的構築を目指しているため、cookieによる管理をやろうとしているのですが、どうもSet-Cookieが反映されません。Metaタグ方式とHTTPヘッダ方式のどちらでも駄目。ローカルサーバで試験しているけど、IEがローカルサーバのcookieを喰わないとかではあるまいな...。

そこまでシビアなシステムではないので、getのパラメータでどんどん渡しても良いんですけどね...。携帯だと初ログイン時に端末情報を保存して、そっちをpass代わりに使う方が楽なのですが、PCと使いまわせないし...などと悩んでおります。あれ、PCってMAC取れたかな??調べてみましょう。とりあえずcookieごときが動かないのが気に入らないので、それを片付けてから方式を検討ですね。

で、ログインしたことにして固定で作業をしています。どっちにしても、ユーザごとの権限をファイルから読まないといけない。毎頁ユーザデータファイルをリードするのも馬鹿らしいからsessionに仕込むべきですかね。なんか改竄されそうでいやなのですが。暗号通信路の研究Prjに居たことがあるせいで、無駄に堅牢性にこだわってしまいます。今の実務だと「イントラだから全部スルー」ぐらいの勢いなので、みてて倒れそうですけど。session情報に非可逆暗号でダイジェストしこんで、毎回比較が硬いんだけど、面倒だから手を抜いていきましょう。

 

上記のとおり、ユーザ管理情報へ各頁がアクセスするため、その辺はコンポーネント化したいわけです。Perlだと*.plのライブラリを作成するのが一般的でしたが、これだと状態を保持したコードを書きにくい。例えばユーザ情報をファイルから2次元配列などに読み込むメソッドを作り、それを取得したとします。そこからある条件でデータを検索する場合、plによる実装だと、配列を引数に渡す羽目になるのです。確か。しかしPerl5から導入された*.pmのPerlモジュールだと、newしたモジュール内にそういう状態を保持してくれるため、Javaなどと同様、データの管理をモジュールに一任できるのです。で、使ったことはあっても作った事の無かったpmに挑戦してみようかと思います。

ちなみにまた気が向いたらここに乗せますが、Perlのオブジェクトは、参照を駆使して無理やりオブジェクトっぽく扱っている印象ですね。言語の下位互換を保つためなので当然ですが。結果の構造にはJavaScriptのオブジェクトに似た匂いを感じます。

JavaScriptのオブジェクトは、カプセル化が無いけど継承はあるなどなかなか面白い。メソッドもオブジェクトである点などなかなか楽しい仕様です。実はJavaもそうだし、Cの関数ポインタも似たようなものですけどね。JavaScriptは使ってもオブジェクトにしたことが無い人が多いと思うので、以下に例を紹介しておきましょう。

 

function Animal(name, age) {

  this.name = name;

  this.age = age;

 

  this.addAge = function() {

    this.age++;

  }

 

  this.changeName = function(newName) {

    this.name = newName;

  }

}

 

// 使うとき

var cat = new Animal("タマ", 0);

cat.changeName("ねこたん");

cat.addAge();

alert(cat.name + "は今日で" cat.age + "才になりました!");

 

変数がprivateにならないため、もっと複雑な処理をやるのでない限り、わざわざメソッド定義する必要は無いですけどね。触ったこと無いけど、Ajaxなんかだとオブジェクト化もメジャになって、駆使してるのかな??昔こういう使い方を利用してゲームを作りかけたことがあります。まだソースが残っているのでいつか再開したいのでは有りますが...。


名前: 意見: パス:

※パスにはこの日記のタイトルをコピペして下さい。


August, 2007
SUN MON TUS WED TUR FRI SAT
1234
567891011
12131415161718
19202122232425
262728293031