April 18, 2006

coComment

だからなんだってわけではないが、index の "Recent Comment" の表示に coComment を使ってみた。

自分のブログの更新はサボりまくっているわけだが、他人のブログはよく読んでいるわけで、
時々どこかにコメントを残すこともあるのだけど、そのコメントに対して誰かが返事したかどうかを
チェックするのが、超面倒。なので、だんだんコメントするのも面倒になる悪循環。
ダメブロガーの典型です。はい。

ところが coComment のユーザーになり、
対応しているブログのコメントページで bookmarklet を実行してからコメントを入力すると、
全部 coComment にコピーが送られるのだ。でもって世界がみんな coComment ユーザーなら、
コメントに対する返信とか、自分が過去にコメントしたブログの他人のコメントとか、
きちんと coComment が管理してくれて、RSSで通知もしてくれるって寸法だ。

問題は日本に coComment ユーザーがほとんどいないってことかなぁ。
誰か僕と日本語で coComment してくれないかなぁ。
とか言ってみるテスト。

Posted by ryo at 17:26 | Parmalink | Comments (136) | TrackBack (0)

January 03, 2006

Hyper Estraier +estraierpure.php

さいきん Hyper Estraier が N-gram だけでなく形態素解析にも対応したので、ハイブリッドな検索の具合はいかがなものかと、正月休みにリニューアル開発中の某サイトに突っ込んでみることにしてみたら、これがまたハマった…
きっといつかサーバを引っ越すときに忘れてまたハマると思うので、メモっておくことにした。

Hyper Estraier を入れてコマンドラインでテストしたところ問題ないのだが、PHP バインディングの estraierpure.php 経由だと put_doc できない。つまり文書が登録できない。なんてこった。毎回コマンドを fork() してたら死んでしまう。

調べてみると、どうも PEAR の HTTP_Request がいけてない。
余談だが estraierpure.php 0.0.6 は setBody() を使うので、HTTP_Request 1.43 が必須のようだ。pear install だと 1.41まで しか入れてくれなかった。ケチ。っていうかなぜだ。とりあえず手動で入れて回避したので深く考えないことにする。

話を元に戻すと、estraierpure.php からのリクエストを受け取る側、Hyper Estraier ノードマスターのコード estmaster.c を見てみると、Content-type: text/x-estraier-draft つうのを期待しているようなのだが、この Content-Type が認識できずにエラーになってる。わがままだなぁ。

しかたがないので HTTP パケットをダンプして見てみると、なぜか Content-Type: ヘッダが二つある。HTTP の Content-Type ヘッダは複数あってもよいのだっけ? まぁそれは重要な問題じゃない(というかRFCを眺めるのが面倒くさい)。

で、estraierpure.php は new HTTP_Request() するときに、ちゃんとパラメータとして Content-Type を渡している。しかたがないので HTTP/Request.php を追いかけていくと、Method が POST の場合で、Content-Type ヘッダが存在しない場合に、デフォルトとして application/x-www-form-urlencoded を追加している。それは正しい気がするのだが、この判定が問題。

            if (empty($this->_requestHeaders['content-type'])) {
                // Add default content-type
                $this->addHeader('Content-Type', 'application/x-www-form-urlencoded');
            } 

lower case しかチェックしていないのである。HTTP Header は case insensitive じゃなかったっけ?
そのくせ自分は Cap and Low でヘッダを足してるという矛盾ぶり…
なので、HTTP_Request 1.43 を使って、POST するときに、自前の Content-Type: ヘッダ *のみ* 使用したい場合は、addHeader("content-type", "hoge/hoge") と書かなければならないのだ。

そもそも estmaster が独自の Content-Type を要求しなければいけない理由はよくわからないのでさておき(そこまで追いかけるとさらに半日潰してしまう…)、とりあえず estraierpure.php の 1455行目あたりを s/Content-Type/content-type/ することで、一晩消費しただけで難を逃れることができた。

せっかくなので estraierpure.php の作者にも教えてあげたいけど、サイトに連絡先がないなぁ。残念。
BSDL なので、ありがたく改変して使わせていただいてます。この場をかりて感謝。

Posted by ryo at 15:57 | Parmalink | Comments (0) | TrackBack (0)

November 25, 2004

オープンソースSNS「wawawa」

オープンソースの SNS エンジンがあるのね。
wawawa

参加・招待・コミュニティ作成・RSS登録などの、基本的な機能はひととおり実装されている感じ。PHP ベース。詳細は プロジェクトのWikiを参照。

これで g や m に続いて、SNS長者の道を他力本願レッツゴー!
ってなわけにはいかんなぁ。

Posted by ryo at 10:36 | Parmalink | Comments (347) | TrackBack (2)

November 18, 2004

Sleipnir開発中止?

「Sleipnir」「PictBear」の作者のパソコンが盗難に遭い開発中止に!?

大企業だとバックアップのロケーションを分散して災害に備えるようなことをするが、普通個人では、せいぜい動産保険に入るくらいで、こういうリスクの回避は難しいよなぁ…。ただ、知的財産の保全という意味では、SourceForge の CVS サーバーとかを使っていればよかったのかも。

むかし会社で、P2Pネットワークに暗号化してバックアップデータを分散保存しておけば安心、みたいな企画があったが、収益性が微妙で断念。どうでもいいデータは P2P に放流しておけば長期間保全されるのに、守りたいデータに限ってこういった盗難で全て失われてしまうってのが、どことなく皮肉な感じだ。

いずれにせよタブブラウザ利用者としては、Sleipnirの開発中止は残念としか言いようがないねぇ。
(といっても今使っているのは Donut P だが)

どこぞの会社でも、CVSサーバー1台の盗難で、ソースコードが全部紛失、なんてことがないように管理しなければいけませんな。なんといっても、デジタルデータは複製が効くわけだし。

Posted by ryo at 19:08 | Parmalink | Comments (0) | TrackBack (0)

November 12, 2003

キーボード付キーボード

PRODiKEYS

pic2[1].jpg

104 + 37 = 141 key キーボードと言ってもよいのだろうか?
見てそのまま、キーボード付キーボード。どっちが付属品とか、そんな野暮なことは聞いてはいけない。全世界の MIDI プログラマー必携の一品だ。

ぷらっとホームの店頭にあるらしい。久しぶりに食指の動くキーボードだ。

ちなみに自分は IBM SpaceSaver 84key 愛用中。会社では「打鍵のうるさい男」と呼ばれて久しい。
自宅では UNI04C6 を使っているので、時々配列が混乱するのが悩み(?)
こいつらを使っていると、他のキーボードは使えません。物足りなくて ;-)

Posted by ryo at 16:08 | Parmalink | Comments (0) | TrackBack (148)

August 26, 2003

SPAMフィルタ

SobigFウィルスの吐くSPAMが余りにも多く来るので、だいぶ前から懸案だったSPAMフィルタを設定しようと決意した。

ベイジアンフィルタ系の実装は最近すっかり流行中で、spamassasin なんかにも実装されているらしいが、今回は bsfilterを試してみることにした。
いや何でって、たんに Mew のインタフェースがあるから、ってだけの理由なんだけど・・・

インストールは簡単。Webページに書いてあるとおり。なにも補足なし。あ、bsfilter コマンドに PATH 通しておかないと、Mew インタフェースから操作したときに、見事にメール消してくれます。エラー処理、端折りすぎ・・・
(文句あるなら contrib しろよ>俺)

さて、この日のために溜めておいた SPAM データ一式と、適当な(not SPAMな)フォルダの中身を、お腹一杯フィルタに食わせて、ついでにここ数日の SobigF のメールも食わせて、フィルタの学習完了。

とりあえずフィルタの誤爆が怖いので、procmail で強制振り分けをせずに、しばらくは一通ずつ手動で振り分けてみることにした。bsfilter を設定している間にも、ふつーのMLに投稿されたメールや、怪しげなSPAMや、SobigF のメールなどが、たんまり inbox に溜まっていたので、さっそく試してみる。

ざっと30~40通くらい試してみた感じでは、普通のメールを SPAM と誤爆してしまうケースはなかった。まぁ、default の Paul Graham(A Plan for SPAMを書いたひと)のアルゴリズムでは、だいぶ not SPAM 側にバイアスがかかってることだし、こんなものかな。

あきらかに SPAM なメールを not SPAM と判断してしまうケースはいくつか。これはすかさず Mew の Summary Mode で bs して SPAM 学習させる。この調子で教育すれば、ボチボチよくなるかな。

問題は、今一番の悩みのはずの、SobigF メールが、うまく SPAM と認識されないこと。
よく考えてみると、「Subject: Re: Thank you!」のほかには、単語らしい単語がないワケで、text/* なパートを統計的に相手する一般的なベイジアンフィルタでは防御が難しい気がしてきた・・・
やる前に気がつけよ、って話もある。

というか、こういうウィルスの出すメールこそ、統計的手法でなく、ルールベースのほうが強いのか。なるほど、みんな Razor とかと組み合わせて使ってるのは、こういうことか。

これだけ SPAM が増えると、ルールベース+ヘッダ解析+統計的手法+ブラックリスト・ホワイトリスト管理を組み合わせた、効果の高い簡単な SPAM 撃退ソリューションを作れば、ビジネスになるかなぁ。でも MUA が自前で実装しちゃったら意味ないか。

まだしばらく SPAM との戦いは続きそうだ・・・

Posted by ryo at 05:41 | Parmalink | Comments (0) | TrackBack (88)

August 22, 2003

J-Phone のメールサーバー

Webを使ったビジネスを企画すると、必ずといっていいほど必要になるのが、メール配信機能だ。ナマケモノエンジニアとしては、車輪の再発明をするのが大嫌いなので、だいぶ前にemailの大量配信エンジンを作ってみた。APIを呼び出すと、JMSでキューを管理して、時間指定やら設定に応じて、メール送信サーバーが分散並列に送りまくる仕組みで、SPAM屋さんが喜びそうな仕様である。

それを使って、勤務先のサービスとして、お客さんのメール配信代行みたいなことをやっているのだが、なにげに MRTG で眺めていると、最近妙にキューの掃けが悪いことに気がついた。

同僚の調査によると、携帯電話の J-Phone アドレス向けのキューだけ、ぜんぜん配信されてない。300通くらいの配信に、丸一日近くかかってる。

配送の log を見てみると、あるとき突然 J-Phone のメールサーバーが、完全にこちらからの接続をブロックしてしまうのだ。再送をかけると、送れるときもあるが、またすぐにブロックされてしまう。送信に失敗するほど待機時間を長くして再送するようにしていたので、どんどん待機間隔が長くなって、全部の配送完了まで非常に時間がかかる…てな状況。

どうやら、いわゆる J-Phone の「迷惑メール対策」らしいのだが、User Unknown なメールを5通くらい送ると、J-Phone のメールサーバーはウチからのコネクションを受け入れないようになって、その後15分くらいはダンマリなまま。えー、たった5通でオテアゲかよ!

なので、お客から預かったメールアドレス(もちろん全部オプトイン済)の中に、メールアドレスを変更したり解約したりして、既に不達の J-Phone アドレスが混じっていると、その他の J-Phone アドレスへの送信に、異常に時間がかかることに。

そりゃー、電話番号ジェネレーターでメールを送りまくる業者もいるし、おかげで J-Phone のメールサーバーは過負荷でいつもパンパンだって噂も聞くし、迷惑メールが地球上の全メールの50%を超えたなんて調査もあるから、何か対策が必要なことはわかるんだけど、あまりに困った仕様だなぁ。

DoCoMo の場合は 特定接続サービス が出来たおかげで、一時期にくらべ配信がだいぶスムースになったけど、J-Phone には同様のサービスすらない。どないせいっちゅーねん。ベッカムなんかCMに使う金があったら、メールサーバーに金かけんかい! それともアレか、ベッカム様が、うちのメールもゴールに運んでくださるってか、オラ。

…って、別に俺は J-Phone の顧客でも何でもないので、そんなこと言えませんが。
Vodafone に変わったら、マシになるのかなぁ。期待ageしとくか。

とりあえず J-Phone アドレスのメールは全部集めて、 serialmail で送りつつ、ダンマリくらったら17分間隔でリトライするように設定することで、多少マシになった。エラーになったアドレスを抽出することは出来ているので、フィルタしちゃえばよいのだけど、こちらはお客様と相談しないことにはナントモ。

Posted by ryo at 14:08 | Parmalink | Comments (1) | TrackBack (1)

July 25, 2003

WATER and STEAM

最近 update をサボってたので、今日は連チャンで…

ZDNN: 新興企業、XML簡素化の言語開発

新興企業Clear Methodsは、XMLデータの処理専用に設計されたプログラミング言語「Water」を開発した。同社はWaterによって、プログラマーがWebサービスを手がけるために習得しなければならない膨大な量の言語の代替となる汎用言語を開発したと説明している。

製品はさておき、このロゴがいい感じ。

steam.gif

なぜ水と湯なのかは、よくわからんけど…

Posted by ryo at 17:01 | Parmalink | Comments (0) | TrackBack (83)

July 11, 2003

縦書きブラウザ「影鷹」

影鷹 - 縦書きブラウザ

影鷹(かげたか)は HTML を縦書きに表示するためのソフトです。 (中略) 文章は、日本語(全角文字)であれば縦に並んで表示され、英語(半角文字)であれば右に 90 度回転されて表示されます。画像は、縦横比とサイズ、種類により、そのまま表示されるか 90 度右回転されて表示されます。これは、横長のロゴなどは回転させて表示した方がいいのに対し、写真などは回転させずにそのまま表示した方が見やすいからです。

だいぶ楽しいので、Applet を設置してみました。
んー、段組が崩れるのが難点かなー。影鷹 Best Viewed なサイト目指して精進せねば :-)

Posted by ryo at 12:08 | Parmalink | Comments (3) | TrackBack (89)

July 09, 2003

Netscape 7.1 リリース

Netscape 7.1 がリリースされた。
アンドリーセンは「もはやNetscapeに革新はなく、見苦しいだけだ」と切って捨てたという

俺も Netscape/Mozilla を使わなくなって久しいのだが、7.1 には唯一注目する機能がある。Netscape Mail だ。

ここに書かれている「ジャンクメールコントロール」というのは、どうやらベイジアンアルゴリズムを実装したSPAMフィルターらしい。これは評価に値するかも。

といっても、個人的にはメールを emacs 以外で読む気はしないので ;-) SPAM に悩む社内の連中に奨めてみようかと。

Posted by ryo at 16:19 | Parmalink | Comments (0) | TrackBack (0)

NRIがEclipse利用ガイドを公開

NDO::Weblog より、野村総合研究所が Eclipse の利用ガイドなどのドキュメントを公開、とのこと。

株式会社野村総合研究所(本社:東京都千代田区、社長:藤沼 彰久、以下NRI)は、オープンソースに関連したマニュアル、利用ガイドなどの社内資料を無償で公開することにいたしました。NRIでは、社内のノウハウを積極的に公開することにより、オープンソースの健全な発展に貢献したいと考えております。

よき心がけである。しかしドキュメントの多くは、NRIのフレームワーク製品と連携して使うための利用ガイドになってるな。まぁ、製品の宣伝が狙いなのではなく、社内資料を公開したため、だと思っておこう…

ドキュメントそのものは有用そうな気配。

Posted by ryo at 03:53 | Parmalink | Comments (0) | TrackBack (0)

July 07, 2003

ベイズ理論SPAMフィルタ日本語版

bsfilter / bayesian spam filter / ベイジアン スパム フィルタ

日本語に対応したベイジアン SPAM フィルタの実装を発見。mew 用のフロントエンドもあるぞ。

しかし、今まで SPAM なメールの収集なんてしてこなかったので、統計情報を作成するために最初に食わせるデータがないずら…

Posted by ryo at 18:06 | Parmalink | Comments (0) | TrackBack (9)

June 25, 2003

LindowsOS ベータ募集

ZDNN:「LindowsOS日本語版」ベータテスターを募集

ついに日本語版ベータ募集がはじまった LindowsOS。当初の目論見どおり Wine が既存の Windows アプリケーションを何でも動かす、という夢はなくなったけど、OpenOffice あたりも良くなってきているようだし、OS のみならずアプリケーションも Microsoft の呪縛から解かれるためには、よい選択だったのかも。

しかし国内では Edge が販売するってことに驚いたのだが、なんか このへん とか このへん の噂じゃ、担当役員が失踪中とか…

あ、今見たら /. でも騒がれてるし。大丈夫なんかいな。

Posted by ryo at 18:38 | Parmalink | Comments (1) | TrackBack (16)

June 12, 2003

免許証ICカード化

asahi.com : IC運転免許証、早ければ来年度末に 警察庁が仕様公表

IC化は免許証の偽造防止などが狙い。更新や「反則切符」作成の時間が短縮されるという。 また、プライバシー保護のため本籍欄は免許証からは削除し、ICだけに入れる。

反則切符の作成時間が短くなっても、全然うれしくないぞ。どうせならETCカードと一緒になって、免許証もってればゲート通れるようになってればよいのに。免許不携帯も減って、一石三丁だ。

どうせETC通れるなら、決済が必要だから、ついでに公安VISAカードとか言って免許証付クレジットカード(クレジットカード付免許証?)にすればよいのだ。suica とかも相乗りしてほしいぞ。

さらに、公安VISAでショッピングすると、ポイントがたまって、免許の点数に還元できます、とか。すばらしいインセンティブだ。非模範的ドライバーは、ポイントが不足すると買い物しまくる、と。消費刺激効果抜群。構造改革万歳。

でもそうなると、反則金の支払も一括引き落としになるのか。。。
巨額の反則金だと、5%の点数が還ってきます、って言われても嬉しかないな。

Posted by ryo at 18:20 | Parmalink | Comments (1) | TrackBack (14)

続アンチSPAM

先日 アンチSPAMAliencamel のことを書いたら、その Aliencamel からメールが届いた。

「お前の Blog で紹介してくれてありがとよ。俺達は日本語読めないけど、もし興味があれば trial account やるから、楽しめベイベー(意訳)」てな感じ。
こんな辺鄙な Blog を、よく見つけたもんだなぁ…

しかし元記事では「ただのブラックリスト構築じゃん」とか書いてしまっていたので(実はホワイトリストも使うようだが)、彼らが日本語を読めなくてよかった。。。

ついでに友人で SPAM 研究家のK内君に、統計学的手法による Anti-SPAM について教えてもらった。ベイズ統計を使うのが、ナウなハッカーのあいだで流行ってるらしい。
スパムへの対策 ---A Plan for Spam
ベイジアンフィルタの改善 --- Better Bayesian Filtering

ちなみに肉製品の缶詰じゃなく、迷惑メールをさすときには、SPAM でなく spam と書くのがオススメらしい。

関係ないけど、某おっさん曰く
「あのさ、最近SMAPからメールが届くんだけど、迷惑でさ」
そりゃすげえ。迷惑メールはジャニーズの陰謀だったのか…

もっと関係ないけど、SPAMオムスビ、好きです。

Posted by ryo at 16:32 | Parmalink | Comments (0) | TrackBack (91)

June 11, 2003

Java の新ロゴ

FreeML JavaOne ML に投稿された JavaOne 2003 のレポート によれば、Java のロゴが新しくなったらしい。

さっそく確認のために Java屋の聖地 を訪れてみると、確かになんか違う感じが…
javalogo_new.gif

ちなみに古いロゴは以下のような感じだったので、確かにコーヒーの絵も単純化しているし、Java のフォントも飾りのないものに変更されている。
javalogo_old.gif

実際同じサイズで並べてみると、新しいロゴのほうが、だんぜん見やすいのは事実ですな。

Posted by ryo at 10:49 | Parmalink | Comments (9) | TrackBack (96)

June 05, 2003

PEAR

数年ぶりに PHP の世界を見回してみると、なんともプログラマも増えたし、環境がだんぜん強力になっていて驚いてしまう。まったくもって、浦島太郎だ。
(そりゃ、PHP/FI とか呼んでた時代と比べるべくもないのだが…)

昨日 Smarty をメモしたが、PEAR にもテンプレートエンジンが含まれていることに気がついた。
(今ごろ気がつくな、という話もある)

PHPDoc も、この PEAR の一部だったのね。どうやら昨今の PHP プログラマには、超お馴染みなブツのようだ。Java でいう Jakarta のようなものか? ちょっと違うか。

Posted by ryo at 15:10 | Parmalink | Comments (0) | TrackBack (105)

June 04, 2003

Smarty

Smarty は、PHP 用のテンプレートエンジン。

商用サイトを本気で作ると、プログラマとデザイナで分業したくなるわけだが、PHP のように HTML 埋め込みがたスクリプト言語だと、分業がうまくいかない。Smarty は、それを解決するためのテンプレートエンジンだ。

作成したテンプレートは、最初のアクセス時に PHP コードにコンパイルされるらしい。まるで JSP みたいで面白い。

Posted by ryo at 15:01 | Parmalink | Comments (2) | TrackBack (93)

May 28, 2003

アンチSPAM

人間の判断とフィルタリングを融合した迷惑メール対策サービス

Aliencamelが開発した「Pending Email Advisory」技術は、差出人だけでは迷惑メールかどうか判断できなかったメールを「Pending Email」フォルダにまず収める。このフォルダのメールは800のパラメータに基づいて精査され、迷惑メールかどうか判定を下してから、利用者に最終的な判断を求めるアドバイザリーメールを送信する。このメールはHTML形式になっており、差出人を信頼できる送信者として認めるか、それとも迷惑メールと断定するかの判断をクリックひとつで決められる。この段階で利用者が迷惑メールに指定した場合、その送信者からのメールは二度と受け取らずに済む。

これだと単にブラックリストを構築しているのと変わらない気が…

MAPS RBL とか CDDB みたいに、どこかに SPAM-DB が用意されていて、本文や Received: の根元(を読み取るのは少し面倒だけど)なんかを比較して、受け取ったメールが SPAM かどうかを自動的に判断してくれればよいのに。
で、新しい SPAM だとクリックひとつで SPAM-DB に登録できて、世界中で共有できる、と。

これでも本文なんかを One To One に書きかえられたりしたら、イタチゴッコになるかなぁ。
では自分が送信したことのあるアドレスはホワイトリストに入れるとか、そういうのと組み合わせて 「SPAM らしさ」をスコアリングするとか…うーむ。

さいきん、SPAM 撲滅には技術的アプローチでなく、法的規制をかけてプロバイダで網をはるしかないんじゃないか、と思わないでもない。技術的に give up するのは、なんともいえず悔しい気分だが…

Posted by ryo at 18:12 | Parmalink | Comments (2200) | TrackBack (11)

May 25, 2003

XPlanner

XPlanner

eXtreme Programming 実践型のプロジェクト管理ツール。イテレーション、ストーリー、タスクなどに基づくプロジェクト管理を Web ベースでおこなうことができるようだ。

そのまま使うと文字化けするが、日本語が通るように quick hack した人がいる。

Posted by ryo at 17:15 | Parmalink | Comments (0) | TrackBack (34)

May 19, 2003

IM Bots

IM というと Input Method とか思ってしまうが、Instant Messanger のこと。既存の IM プロトコルを喋る独自クライアントである IM Bot を作っている開発者のコミュニティを発見。

Ghostop.com

MSN Messanger のプロトコル実装は、Java, Perl, Ruby 版があるようだ。こうした実装を使えば、例えばメールが来たことを comsat よろしくチェックして、自分の IM アカウントにアナウンスする biff bot みたいな使い方ができる、ということか。

面白そうなので、そのうち遊んでみたいぞ。

Posted by ryo at 00:58 | Parmalink | Comments (18) | TrackBack (106)

May 15, 2003

Phrame

Phrame

Phrame is a web development platform for PHP based on the design of Jakarta Struts. Phrame provides your basic Model-View-Controller architecture, and also takes a step further adding standard components such as: HashMap, ArrayList, Stack, etc...

Struts 風の MVC を書ける PHP フレームワークだって。
ちょっと見てみたら、Hashmap はあるわ、API ドキュメントは JavaDoc 風の phpdoc とやらになってるわ、なんというか Java と混乱しそうな雰囲気だ…

だったら Java で書けばいいじゃん、と言われたらそれまでだな。

Posted by ryo at 20:58 | Parmalink | Comments (0) | TrackBack (18)