トップ 最新 追記

どんぞこ日誌

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|07|08|12|
2007|01|04|08|12|
2008|01|02|03|04|06|07|08|10|11|12|
2009|01|02|04|05|06|07|08|09|11|12|
2010|01|03|04|07|08|10|11|12|
2011|01|02|03|04|05|06|07|08|10|12|
2012|01|02|03|05|06|07|08|09|10|
2013|01|02|07|08|09|
2014|08|09|
2015|08|
2016|06|07|12|
2017|01|03|08|
2018|03|
2022|03|
2023|03|
2024|02|

同人関連(どんぞこ楽屋) | 旧い雑文   


■2005-09-04

* [Perl][メモ] ModBlosxomB!

 いつの間にかBlosxom関連Wiki all about blosxomなるものが。これは素晴らしい。 で、派生系としてModBlosxomがリンクされてました。そういえば、去年の今頃につくりかけを放置したままですね…… その後改良を続けて、どこぞのサイトで実際に運用されてるので、追々コードを書き直しておこうかしら。
  紹介先では「プラグインに互換性がない」とありますが、一応compatモジュールを使えばblosxomプラグインがある程度使えたはず(その場合mod_perlで走らせてもありがたみないのですが)。

* [Perl] JSON-0.991B!

 JSONバージョンアップ。今までJSONRPC::Transport::CGIは呼び出すたびにCGIオブジェクトを生成していたのですが、「CGI::Sessionオブジェクトで渡したい」とか言われていたので、修正しました。あと、JSONRPC用のテストが強化されました。

* [雑感] 総選挙B!

 来週は総選挙なので何か書いておこう。 うーん、とりあえず郵政民営化はあんまりメリットなさそうなので、推進しない方がよさそう。あとは、悪代官フェチの私としては国民新党(っていうか綿貫、亀井)とかムネちゃまには是が非でも頑張ってもらいたいなと。

本日のツッコミ(全2件) [ツッコミを入れる]

_ kyo [ModBlosxomのcompatモジュールについて書いておきました。使ったことないので知らなかったとは口が裂けても..]

_ まかまか [や〜、わざわざありがとうございます。 作った本人もよく覚えていないというのは内緒の話です。]

[]

■2005-09-09

* [Perl][メモ] 楽々?アクセサ作成B!

 Perl で楽々アクセサ作成について考えてみたで、可能な限り簡単に$obj->author->nameを実現しようとClass::Accessor::Linkedを書いてみました。author以下のデータにアクセスするために、ハッシュリファレンスをAUTOLOAD可能なオブジェクトにすることで矢印を連結しています。
   というわけで効率は悪いし、最初にデータ構造を用意しておかないと深いところのデータが利用できないなど問題が多々があり、実用性はありません。あくまでも$obj->author->nameを実現してみたかったということで。
  本当はちゃんとデータ構造を反映したaccessorを生成してあげないといけないのですが、お昼休みではそこまでできませんでした。

* [Perl][メモ] autobox::PropHashB!

  Class::Accessor::Linkedは多少なりともお役に立ったようです(Perlで楽々アクセサ作成〜その2)。 良かったよかった(山科さんのコードはperl5.8.3未満でクラッシュするとありますが、perl本体というよりTest::*系の問題っぽいですね)。
  さて、せっかくですので、autoboxを使ってハッシュリファレンスも同様にしてしまいましょう。ということで書いたのがautobox::PropHashです。えらくあっさりしたコードですが。 autoboxautobox::Coreが必要です(ただしautobox::Coreは便利なメソッドが使えるように継承しているだけ)。

 use autobox;
 use autobox::PropHash;
 
 my $obj = {a => {b => 'c'}};
 print $obj->a->b;
 
 $obj->a->b = 'foo!';
 print $obj->a->b;
 
 $obj = {};
 $obj->a = 1;
 print $obj->a;
 
 $obj->b = [qw/foo bar hoge/];
 print $obj->b->join(',');    # foo,bar,hoge
 print $obj->keys->join(','); # a,b

  AUTOLOADlvalueを使うことで $obj->a->b = 'foo!' なところが粋だと思いませんか? 思いませんか。そうですか。

[]

■2005-09-12

* [雑感] 先行き暗しB!

 仕事しながら夜中に選挙結果をみて暗澹たる思いに。うわぉ 負け組にはつらい世の中になりそうな予感。

* [Perl][メモ] Class::Accessor::AutoLinkB!

  くさした気分を紛らわすために、Perlで楽々アクセサ〜3の2を試す…… このモジュールではオブジェクト毎に最初に配列リファレンスとハッシュリファレンスでアクセサを定義します。これ以外に方法思いつきません。 あー、あってるのかどうか、眠くてよくわかりません。

 package MyClass;
 use base qw(Class::Accessor::AutoLink);
 my $def = [
   'foo',
   {bar => [
     'baz',
     {hoge => ['hoge']},
   ]},
 ];
 
 __PACKAGE__->init_accessor($def); 
 
 sub new {
     my $self  = bless {}, shift;
 }
  
 package main;
 
 my $obj = MyClass->new();
 $obj->foo = 1;
 $obj->bar->baz = 2;
 $obj->bar->hoge->hoge = 10;

  AUTOLOADを繰り返さない方法(AUTOLOAD内で関数をevalする)のは弾さんがお書きになられてます。

* [Perl][メモ] Class::Accessor::AutoLinkその2B!

  Class::Accessor::AutoLinkのアクセサ定義の方法を変更しました。下記の通り、普通にハッシュリファレンスを渡します。値がデフォルトに。もちろん、blessするハッシュリファレンスで値を上書き可能。

 package MyClass;
 
 use base qw(Class::Accessor::AutoLink);
 
 my $def = {
   foo => 1,
   bar => {
     baz => 2,
     hoge => {hoe => 3},
   },
 };
 
 MyClass->init_accessor($def); # init
 
 sub new {
     my $class = shift;
     my $self  = shift;
     bless $self, $class;
 }
  
 package main;
 
 my $obj = MyClass->new({foo => 0});
[]

■2005-09-25

* [近況] お腹いたいB!

 まただいぶ日誌書いてません。書く気もあんまり起きないのですが、とにかく何か書いておこうかなあ……

* [メモ][Perl] prototypeベースB!

 Class::Prototyped。PerlでprototypeベースなOOPを行うためのモジュール。
 実現方法は概ね予想してたものに近い。
 Class::Classless。 名前が粋。

* [漫画] 対岸の彼女B!

 安孫子三和版の『対岸の彼女』。 原作読んでませんが、たぶん相当安孫子風になっているんだろうなあと想像。 とりあえずナナコが女装した吐夢で、葵が世良だった。 内容も地味に清々しくて良い読後感です。

30代、既婚、子持ちの「勝ち犬」小夜子と、独身、子なしの「負け犬」葵。性格も生活環境も全く違う二人の女性の友情は成立するのか!? (出版社 / 著者からの内容紹介

 って、そんな内容だったのか。

[]

■2005-09-30

* [Perl] JSON-1.00B!

 色々修正していたJSONとJSONRPCですが、10月に入るとまた時間があまり取れないのでとりあえずCPANにアップ。主な変更点は
 ・JSON::Converterのスピード向上。
  大きな文字列の値をもったPerlデータ→JSON変換が劇的に早くなっています。
 ・JSONRPCサーバのApache、daemon対応とクライアント実装(適当)。
 ・マッピング中止オプション
  JSON→Perl時にnullをJSON::NotStringオブジェクトに変換していたのですが、これだとjsonToobj('{"foo":null}')->{foo}の値がundefではないため、DBIのquote機能などで不都合がでると指摘されていました($dbh->quote($obj->{foo})で"NULL"が返らない)。
 ・裸のキーオプション、シングルクォートオプション
  JSON::Parserで{foo:"bar"}や{foo:'bar'}なんかも通るように。

 というわけで、JSONRPC系が少し充実してきたので1.00としてリリースしました。

[]