■2005-02-04
* [メモ] 後でみるものとかその他
とりあえず一念発起して公式のプラグイン置き場にあげるうぅ。
・backlinks ページにリンクしている他のページの一覧表示
・atschedule スケジュールをメール配信するプラグイン(バージョンアップ)
・「ネットと子どもたち協議会」とか
・日本の小さな町
・ベルトコンベアで流れてくる猫を仕分けるバイト
・DBD::WikiとClass::Wiki
・DBD::MIDIってのも考えたんだけど実装がめんどくさそう
・掲示板でみかけたthreadsとencodingでクラッシュする話
■2005-02-07
* [CGI] TypeKeyでFreeStyleWiki
去年の夏にAuthen::TypeKeyをFreeStyleWikiに組み込むという話を書きましたが、実際に試してみました。TypeKeyに登録している方はぜひここの右上のメニューにあるTypeKeyをクリックしてログインしてみてください。あと、PuerPerlのMath::Pariを使っても、本当のMath::Pariよりもだいぶ遅いとはいえ、実用に耐えそうです(上のテストはXS版Math::Pariです)。
先日のbacklinksプラグインは既に同じ機能のものが登録されていて大失敗でした。
* [メモ] Perlその他
・threadsとencodingの件→mainパッケージでbinmode(STD [OUT|IN], ":raw :encoding(xxx)")するとthreadas->newで落ちる。子スレッド内でThread::Use経由でencodingするだけなら大丈夫。でも今度はencodeがうまくいかない……
・今月のAcmeはネタ切れか? My Favorite Perl Modulesみたいなサイトがあるなら、もうここで紹介してるのがバカバカしいかも。
・自分のした事実を認めること コメント欄の「一市民」は"リベラル"と"左翼"をどのように理解しているのだろうか(この場合イコールと想定されているようだから、結局「左翼」とは何かにいくのかなあ)
* [Perl][メモ] CDBIサブクラスで複数データベースを扱う
同じテーブル構造が複数のデータベースにあって、一つのClass::DBIサブクラスで両方を扱いたい用があったので、Using Multiple Databasesを参考にしたのですが、うまくいきません(単純なretrieveははうまくいくのですが、might_haveを通じての取り出し等がうまくきません)。で、以下の方法でなんとかなったのでメモ。
package MultiDB; use base qw(Class::DBI); __PACKAGE__->mk_classdata('current_dbh'); sub change_db { my ($class,$dbname,$user,$pass,$attr) = @_; if($dbname{$dbname}){ $class->current_dbh($dbname); } else{ # $dbnameをキーにするのは良くないね…… $dbname{$dbname} = 1; $class->current_dbh($dbname); Ima::DBI->set_db( $dbname,"dbi:xx=$dbname;xx",$user,$pass,$attr ); } return $dbname; } sub db_Main { my $class = shift; my $method = "db_" . $class->current_dbh(); $class->$method; } ...なんかいろいろ # mainスクリプト MultiDB->change_db('table_a'); { my @data = MultiDB->retreive_all; # .. code .. } MultiDB->change_db('table_b'); { my @data = MultiDB->retreive_all; # .. code .. }
メインコードでテーブルを変える毎にブロックで囲っているのは、同一スコープ内ではメモリ内にあるオブジェクトの一意性が保持される(弱いリファレンスを使う)というClass::DBIの仕様があるため。スコープが変われば破棄されます。table_bから取り出したidと同じものがtable_aにあるとそちらが取り出されてしまい、最初戸惑いました。 んー、ちょっと上の例は問題があるので修正しないと……
■2005-02-13
* [Perl] Jcode 1.99
ついにDan氏のJcodeの2.0ベータ版が出ました。Perl 5.8.1より前ならJcode 0.88互換、5.8.1以上ならEncodeのラッパーになると。結構JEncodeのコードも使ってくださっていて、これでJEncodeの役目も一段落です。ちなみに手元の環境だとWindows ActivePerl 5.8.0、5.8.3でそれぞれtestをパスしました。
* [CGI] FOAFとか
先日のFreeStyleWikiとTypeKey関連で、「TypeKeyとFOAFの繋ぎとかジャッとすれば」(ここギコさん)というのがあったので、FreeStyleWikiでも何が出来るかしらとつらつらとメモしてみたのですが、こんな感じなのかなあ……
とりあえずknowsが辿れるように実験してみました。CPANのXML::FOAFはベースとなるRDF::Coreが重すぎるのと、seeAlsoをどうやって取り出すのかわからなかったので、XML::ParserのStyleを使って実装。有名どころのfoafファイルで試したところ、一応辿ってくれるみたい。右にある私のfoaf.rdfを使うと悲惨なことに。ところでFOAFって何て発音するのでしょうか。ふぉあっふで良い?
■2005-02-15
* [メモ] いろいろ
とりあえず感動したので ゲバ文字フォントに「萌」が入っている理由(>記識の外) 谷川雁! そーなんだ! 一時期使ったことがありますが、昔より文字増えてる?
ドイツ白バラ抵抗運動 例の「政治ビラを投函したら逮捕」という、いかレた情況関連。 「反戦『落書き』事件と立川反戦ビラ事件は、法の公平性や公法適用のフェアネスを毀損する訴追であるという点、そして訴追した検察に『壊したのは誰か』という社会状況に対するフェアネスが欠けているという点で共通しています。」(リンク先より引用)
■2005-02-20
* [メモ] Class::なんちゃら
つくった本人はすっかり忘れていたのですが、そういえばClass::Wikiはまだ公開してなかったですね。まだソースが汚いから、もそっと寝かせておきましょう(寝かしてたらブラッシュアップできません)。
Class::Blogもありですね。(HT::Blog)
Class::Blogも思いついたのですが、こちらはきっと誰かがつくってくれると期待します。XML-RPC for Wikiよりは実用性が高いですし(一応DBD::WikiはXML-RPC以外で実装できるようにしてあります)。あと、Class::Wikiは大変効率よくスパムできそうなのが困りものです(retrieve_allしてupdate)。そうすると(?)、やはりウケを狙うにはClass::MIDIです。そしてそのためのDBD::MIDI。これさえあればこんなことも(noteの型はどちらでもOKということで)。
UPDATE track1 SET note = note + 12 WHERE note = 'C4';
まあ素敵。これでもうシーケンサはいりませんね!?
* [メモ][Perl] SQL::Interpolate
SQL::Interpolate。SQL::Abstractの複雑さを克服したものらしいのですが。時間のあるときにみてみたいな。
■2005-02-24
* [CGI] FOAF認証FreeStyleWiki
TypeKeyでログインして、FOAFを使って各ページの編集・閲覧権を分散的に管理するFreeStyleWiki。こんな感じになりました。自分で試した分には一応期待通りの動作です。ただ、大変残念なことに、このページの横にある私のfoaf.rdfにはknowsがありません。ということは、現状では誰もFOAF認証できないのです。
というわけで、誰ぞ実験(お知り合いに)なってくださる方いらっしゃいましたら、一声かけてくださいませ。
誰がお前のknows先なんぞになるか! ということでしたら、お持ちのFOAFファイルをプロジェクトのルートに設定するというのでも。
私はSNSのことはわからない(そもそも触れたことがない)ので、なんとなく、リアルの人間関係をネットに持ち込む気持ちの悪いシステムだと思っていましたが、ここギコ!さんの一連の文章はとても勉強になりました。先日のTRPGのパーティの例みたいに、各局面でFOAFを使うと大層面白そうな気もしますし。
* [Perl] CDBI::Plugin::Iterator
CPANに登録されていらっしゃる。素晴らしいなあ。0.04ベースの個人的改造は結局、自動的にバージョン判定をするmysqlサブクラスをつくったところで力尽きてしまいました。はい、おとなしくViewを……
* [メモ] 抑圧?
最近のよくキレる子ども ある種の力関係(強制力)もないのに抑圧、弾圧と叫ぶ人。これも議論出来ない人の武器っぽい。
賃金格差 「権益がまったく与えられないところに権益の夢を見る。権益を離れれば離れるほど、『すべき事』は抽象化し、自らの行動指針を持たなくなる」
■2005-02-28
* [雑感] 眠くて
夜寝をして起きたら1:30。このまま朝まで仕事をすることに(で、なぜこれを書いてるのかしら)。
昨日は昼過ぎから施設点検停電があるため、それにあわせて出社の予定だったのですが、朝から停電になると電話でたたき起こされてがっくりでした。社員の方が居合わせてなかったら、知らないままでしたよ……
* [CGI] FOAF認証Wiki
ここギコ!さんが手伝ってくださったおかげで、ちゃんと動作することを確認。さらにいくつかテストを重ねながらソースを綺麗にしてまとめたいと思います。まあ、現実にFSWikiでこれを使う人がいるのかどうかは甚だ怪しいのですが、差し当たり考えないことに。
* [Perl] Class::DBI::Plugin::Iterator 0.10
Class::DBI::Plugin::Iteratorの0.10を作ってみた。より、「CPANに上げるのはまかまかさん待ちということで」。 たいへん恐縮です(汗)。またわざわざ名指ししてくださったことを感謝します。
importルーチンでドライバの判定をされていて(私も最初そうしたのですが)これだとアプリケーションベースクラスでPlugin::Iteratorを宣言して、継承クラスではPlugin::Iteratorを呼ばずに済ませようとするとエラーになります(db_Mainが呼び出せないから)。もちろん、どのクラスでも明示的にPlugin::Iteratorを呼べ! ということならこれで十分だったと思いますし、ドキュメントにその旨書かれてあれば何の問題もないかと。 っていうか、もう十分至れり尽くせりで有り難いです。
私は根が「可能な限り現状維持で汎用的に」(?)をモットーにしているもので、ベースクラスで一回だけPlugin::Iteratorを呼んで済ませたかったのです。改造したものと0.10との差分はこんな感じです(実際にはmysqlのバージョン判定をさせるため、もっと込み入っていたのですが)。 newにアドホックな変数を渡しているのが見苦しいことこの上ない……(そなんこんなんで力尽きたわけです)