2004年09月13日

志村検索リリースしました

blogdb.jpで、いわゆるSimilarity Searchと呼ばれるタイプの志村検索をリリースしました。
いわゆるBulkfeeds等で実装されているあの機能です。
おんなじ様な物を作るのもアレだったのですが、とりあえず作ってみました。

MTな方はIndividual Entry Archiveテンプレートの任意の場所に以下のコードを組み込んでください。


<script language="JavaScript" src="http://blogdb.jp/simura/simura.js?url=<$MTEntryPermalink encode_url="1"$>"></script>

パラメータの仕様


  • url - Permalinkを入れてください
  • oe - 出力エンコードの指定をします。SJIS JIS EUC UTF-8を指定します。デフォルトはUTF-8です。
  • n - 関連記事の表示件数を指定します。1~10までの数値を指定できます。デフォルトは10です。
  • d - 検索範囲を指定します。検索時から何日前までのインデクスを検索範囲にするかを指定できます。1~5までの数値を指定できます。デフォルトは3です。

    SJISのサイトで、記事数を5件まで表示し、今日登録されたエントリの中から志村検索をするときは下記のコードを使います。


    <script language="JavaScript" src="http://blogdb.jp/simura/simura.js?url=<$MTEntryPermalink encode_url="1"$>&oe=SJIS&n=5&d=1"></script>


    スタイルシートの仕様


  • blogdbSimura - 志村検索で出力されているテキスト全てに適用
  • blogdbSimuraPowered - 志村検索 by blogdb.jp の部分に適用
  • blogdbSimuraWords - 関連語に適用
  • blogdbSimuraBody - 関連記事一覧に適用
    全てdivのclass指定をしてあります。


    やっている事


    blogdb.jpに登録されているエントリの内容をchasenで分かち書きをしてインデックスを作っています。
    大体エントリを公開してから4分くらいで志村検索の対象エントリになると思います。

    関連語は、blogdb.jpに登録されている全文書を対象としてtfidfのような手法でスコアリングをして求めています。
    その求められた関連語の上位8件の単語をNamazuでor検索して関連エントリを求めています。
    速度とそれなりの精度を出すために適当なアルゴリズムとなっています。
    現時点では完璧を求める類の実装にはなっていません。
    要するに第一世代の全文検索エンジンの雰囲気が好きな方には最適と言う事です。

    一応手抜きなWebインターフェイスも用意してあります。
    http://blogdb.jp/simura/


    実際の出力サンプルは、下の方を参考にしてみてください。

    Posted by Yappo at 11:07 | Comments (4) | TrackBack
  • GREE Night 2.0 から帰ってきた

    ただいま。
    ハイパーネットの創設者らしい人がマトリックスのコスプレしてて色んな物を撒き散らしてたのと
    後半ステージに上りだして、田中さんに下ろされてたのと
    ドリコムの社長さんは背が高かったのと
    日本マイクロフトの社長さんが若かったのと
    何故か違う会社の中の人として活動していた方がいたのと
    女の人は何故か気合入れてたかっこうしてるのが多かったのと
    ニフティの中の人が人を選んでココログのプロモしてたように見受けられたのと
    公開できないくらいの情報をげっつしたのと、言い表せない何かを感じたのと
    ネット発のイベントらしい仕掛けが全くなかったのと
    予定外の知り合いが一人しかいなかったのと
    これと言って知らない人と、お話できなかった事と
    伊藤なおや さんがイケメンだったことと
    iアプリのblogクライアントのデモンストレーションをしたくらいでした

    3150円・・・・

    Posted by Yappo at 00:38 | Comments (0) | TrackBack

    2004年09月12日

    グリーナイト終わり


    たなかさんの挨拶

    Posted by Yappo at 21:50 | Comments (0) | TrackBack

    グリーナイト中継


    いとうなおやさん

    Posted by Yappo at 21:13 | Comments (0) | TrackBack

    グリーナイト中継


    冠スポンサー

    Posted by Yappo at 19:20 | Comments (0) | TrackBack

    グリーナイト中継



    のテスト

    Posted by Yappo at 18:30 | Comments (0) | TrackBack

    単体写真


    のサンプル

    Posted by Yappo at 17:10 | Comments (0) | TrackBack

    画像送信のサンプル



    ギリギリのサイズだなぁ

    Posted by Yappo at 17:07 | Comments (0) | TrackBack

    むむむ




    果てしなくサイズ小さい

    Posted by Yappo at 15:51 | Comments (0) | TrackBack

    写真送信対応



    グリーナイトに間に合った

    Posted by Yappo at 15:44 | Comments (0) | TrackBack

    2004年09月10日

    iアプリでXML-RPCクライアント作ってみた

    Movable TypeのXML-RPC APIに対応したDoJaなクライアントを作ってみました。
    既に実装されているのだろうと思って探したけどAtomMEっての位しか見当たらなかった。

    技術的な要素としては、UTF-8でエンコードされたデータをHTTP通信で行なうと言う所が一つのトピックでした。
    iアプリのHTTP通信はSJISを前提としているようなので、無理やりUTF8に対応してみました。
    ただ、この方法を使うと既存のJ2MEなXMLパーサが使えないので、力技でXML解析するしかないです。
    今現在使用しているAPIは
    metaWeblog.newPost
    mt.setPostCategories
    mt.publishPost
    のみです。

    一応
    blogger.getUsersBlogs
    mt.getCategoryList
    辺りにも対応する予定です。
    rsd.xmlにも対応しておいたほうが良いかな

    余力があれば、内蔵のカメラ機能を使いつつ
    metaWeblog.newMediaObject
    に対応するのもありですね。


    よくあるMTのmoblog対応との優位点は、サーバやmtの改造を行なう必要が無い所ですかね。
    iアプリが直接XML-RPC使いますから。


    もし需要があったら配布するのも考えてみるかも。
    でも、blogプロバイダ系の所だと一般ユーザがiアプリの設置出来ないのかもなぁ。
    http通信するホストは、iアプリのダウンロード元ホストと同一のホスト名でないといけない。
    でも、こんな感じのiアプリ導入したら他社との差別化が出来たりするのかな?
    メールで日記書く方が気楽って意見もあるから、そうでもないか。


    あ、ATOM APIはDoJaじゃ無理っす。
    X-WSSE: ←これはDoJaじゃ吐けない。

    Posted by Yappo at 06:03 | Comments (3) | TrackBack

    携帯iアプリから書いてみるた

    iアプリでMTのXML-RPC APIを使用したblogツール作ってみました。


    このエントリはP504iで書いています。
    たぶん503でも動くかな。

    Posted by Yappo at 05:36 | Comments (0) | TrackBack

    iアプリのDoJaエミュレータから

    おはようございます。iアプリエミュレータからエントリ投稿テスト

    Posted by Yappo at 05:20 | Comments (0) | TrackBack

    2004年09月09日

    鞭の入れ時

    L社の中の人にiYappoを30億で買ってくださいとか言ってるよりも
    ちゃんと鞭を入れる時代だと言う事ですな

    Posted by Yappo at 22:50 | Comments (0) | TrackBack

    2004年09月08日

    Posted by Yappo at 17:52 | Comments (0) | TrackBack

    GREE Night 2.0のチケット買ってきた


    cnetかよ!未成年者入場禁止かよ!男女別料金かよ!

    もし行く方いましたら、おてやらわかに。

    Posted by Yappo at 15:10 | Comments (0) | TrackBack

    2004年09月03日

    ごあん

    新宿の東側に出来たタイ料理屋で買ったお弁当

    その名もカオマンガイ
    カオは米、マンは蒸す、ガイは鳥
    そして、ニンニクや唐辛子etc..等を潰した汁をかけて食う
    なんとも言えないこのうまさ

    そういやりえこむのおへやに出てたゲウチャイにも行ってみたい。ここの謎麺もうますうだ。
    新宿もタイ飯天国よのう

    この方のblog見始めてから「メシ」が「ごあん」に脳内変換されてるのは内緒

    Posted by Yappo at 19:25 | Comments (0) | TrackBack

    関連検索メンテナンスと志村検索導入予定のお知らせ

    現在blogdb.jpの関連検索用のDBを再構築しています。
    一部の単語の解析がうまくいっていないため、200万件以上のエントリデータを再構築しています。
    きっと週末中に終わります。

    その再構築が終わったらBulkfeedsさんのSimilarity Searchみたいな機能をつけます。
    名前は志村検索と言う事で。
    運用しつつ精度改善をする感じで。

    9/6 11:00追記:
    まだまだDBの再構築に時間がかかっています。
    現在半分の再構築が完了した程度です。

    9/8 16:00追記:
    ようやく70%程処理できたでしょうか・・・
    長い
    blogdb.jp

    Posted by Yappo at 13:09 | Comments (13) | TrackBack

    google news RSSまとめ

    個人で提供されているgoogle newsのRSS配信を軽くまとめてみる。

    今の所google newのRSS配信サイトは2種類あるようです。

  • RSS(RDF Site Summary)配信
    google newsの各カテゴリのRSS配信をしてくれます。

  • gnews2rss-jp
    まあ、そういうモノです。空気を読んでお使いください。

    google newsのキーワード検索結果からRSS配信をしてくれます。

    これらのRSSは一見Googleが嫌がりそうなサービスですが@ITの記事によると

    では、このサービスでは、どこで収入を得るのかについては、「ビジネスモデルはない。いいビジネスモデルがあれば教えてほしい」と述べるにとどまった。

    って事なので「ビジネスモデルを考えてあげてるんだ」って屁理屈で

    でも、本国のgoogleでは問題おきてるんだよなぁ。
    日本法人がどう動くのかが気になる所ではあります。

    Posted by Yappo at 12:54 | Comments (0) | TrackBack
  • ドリコムのNews & Blog Search停止?

    Ceekz LogsさんのGoogle News と新聞社の関係

    つい最近、技術的には劣るもののグーグルニュースと同様のサービスを始めた日本のベンチャーに対し、大手マスコミ何社かで抗議しサービス中止に追い込んだという話を聞いたことがある。 (ネットは新聞を殺すのかblog 2004/09/02)

    これって、株式会社ドリコムのことかな?偶然かどうかわからないけど、 News & Blog Search につながらないのだけど。


    なんて事が書いてあったから朝方試しにhttp://news.drecom.jp/にアクセスしてみたら、メンテナンス表示が出ていた。
    で、今アクセスしようとしたらサーバに接続できない。。。

    news.drecom.jpのAレコード消失したとの勘違いを書いていたため、消去しました。

    やっぱり、圧力?

    他参考:
    グーグルニュースの衝撃

    ※追記9/3 12:13現在、正常にサービスが行なわれています。

    Posted by Yappo at 11:50 | Comments (0) | TrackBack

    2004年09月01日

    若者のネット特集あったからSPA!を買ってみた

    PHPカンファレンスの時にもgreeの田中さんが話題にしてた20代前半のネットリテラシーのネタかと思って買ってみた。


    さすがSPAだ・・・
    期待を裏切ってくれた。

    Posted by Yappo at 13:48 | Comments (7) | TrackBack

    googleニュース日本語版できてた

    既存のメタニュース検索サイトはどうするのかな?とも思ったけど
    RSS出力はやってないみたいね。

    まだまだこの分野では競争できそうね。

    追記:
    と、思ったらgoogle newsのヘッドラインRSSを配信する仕組みを作ってる人がいた。
    RSS(RDF Site Summary)配信

    Posted by Yappo at 13:00 | Comments (0) | TrackBack

    Net::MSNをHackする

    現在CPANからDownload出来るNet::MSNには物足りない部分があったのでパッチを作ってみた。
    バージョン1.22のMSN.pmを対象としています。
    ちなみにこのモジュールの詳細な解析をしたわけでもMSNメッセンジャーのプロトコルに詳しいわけでもないので
    不正確な事を書いているかもしれません。と言ってる時点で不正確ですな。


    *** MSN_orig.pm 2004-08-27 15:16:48.000000000 +0900
    --- MSN.pm 2004-09-01 04:58:47.408143656 +0900
    ***************
    *** 549,558 ****
    } else {
    $self->{'Handle'} = $data[2];
    $self->{'ScreenName'} = $self->normalize($data[3]);
    &{$self->{Callback}->{on_connect}}
    if ($self->if_callback_exists('on_connect'));
    - $this_self->send('CHG', 'NLN');
    - $this_self->send('SYN', '0');
    }
    } else {
    die "Unsupported authentication method: \"",
    --- 549,558 ----
    } else {
    $self->{'Handle'} = $data[2];
    $self->{'ScreenName'} = $self->normalize($data[3]);
    + $this_self->send('SYN', '0');
    + $this_self->send('CHG', 'NLN');
    &{$self->{Callback}->{on_connect}}
    if ($self->if_callback_exists('on_connect'));
    }
    } else {
    die "Unsupported authentication method: \"",
    ***************
    *** 617,623 ****
    } elsif ($cmd eq 'BYE') {
    my ($chandle) = @data;
    $self->_disconnect_SB($this_self);
    !
    if ($self->if_callback_exists('on_bye')) {
    &{$self->{Callback}->{on_bye}}($chandle);
    }
    --- 617,628 ----
    } elsif ($cmd eq 'BYE') {
    my ($chandle) = @data;
    $self->_disconnect_SB($this_self);
    ! if ($self->if_callback_exists('on_bye_idle') && defined $data[1]) {
    ! &{$self->{Callback}->{on_bye_idle}}($chandle);
    ! }
    ! if ($self->if_callback_exists('on_bye_win') && ! defined $data[1]) {
    ! &{$self->{Callback}->{on_bye_win}}($chandle);
    ! }
    if ($self->if_callback_exists('on_bye')) {
    &{$self->{Callback}->{on_bye}}($chandle);
    }
    ***************
    *** 638,643 ****
    --- 643,653 ----
    if ($self->if_callback_exists('on_answer')) {
    &{$self->{Callback}->{on_answer}}($this_self, @data);
    }
    + } elsif ($cmd eq 'IRO') {
    + #Socket Open Event
    + if ($self->if_callback_exists('on_iro')) {
    + &{$self->{Callback}->{on_iro}}($this_self, $data[3], $data[4]);
    + }
    } elsif ($cmd eq 'MSG') {
    my ($chandle, $friendly, $length) = @data;
    my ($msg, $response) = ();

    前回のサインインが出来ない問題の修正も含んでおきました。
    on_connectハンドラを呼び出す前にサインインするメッセージを送っています。
    そうしておけばon_connectの中でスクリーンネーム変更や状態変更が行なえるようになって使い勝手がよくなるからです。
    作成者の思想が分からんので、これがいいのかは分かりませんが。

    あとは、ソケットを開いた時のイベントもハンドリング出来るようにしています。
    on_iroハンドラを設定しておけば

    sub on_iro {
    my ($sb, $chandle, $friendly) = @_;

    $sb->sendmsg("Open Window");
    }


    な感じでチャットウインドウを開いた瞬間にメッセージを送りつけることが出来ます。
    正確には相手とのソケットを開いた時に発生するイベントのようなので
    idleでソケットが閉じられた後に再接続処理をした時にも、このイベントが呼び出されちゃいます。

    ソケットが閉じられた時にはon_byeイベントハンドラが呼び出されるのですが
    ウインドウを閉じたのか、idleで閉じられちゃったのかの判断がつきません。
    そこでon_bye_idleとon_bye_winというハンドラを新たに作りました。
    それぞれの使い方はon_byeと同じです。
    違いは_idleはidleによってソケットが閉じられた時に呼ばれて
    _winはチャットウインドウが閉じられた時に呼ばれます。

    on_byeもあって、ごちゃごちゃしますが互換性も考えてハンドラ量産しました。

    on_iroとon_bye_winをうまく使って、チャットウインドウの状態を把握しておくのが良いと思われます。
    先の人口無脳エージェントは、この手法を使っています。
    自分の環境では意外とうまく動いていてくれます。

    他にも相手が文字入力をする度に空データが送られているので、それを補足する事も出来るのですが
    これ以上ハンドラ増えるのもアレだし、需要がなさそうなので放置してみたり。
    もっと他にも色々機能追加は出来るみたい。


    本来なら開発者にパッチ送ってみたりネゴシエーションしなきゃいけないんだろうけど
    そこまでやるのもアレゲなので有用だと思ってくれた方がネゴしてくれる事を祈ってみたり。
    実はもっと良い改良が加えられてたりするかもですが。

    しっかし暫くperlやらんうちに状況が随分と変わっているようで。

    Posted by Yappo at 05:19 | Comments (0) | TrackBack

    MSNメッセンジャーの人工無脳エージェント

    少し本格的なMSNメッセンジャーエージェントを作ってみた。
    何で最近MSNなんかをやっているかと言うとCeekz LogさんのCeekz Agent の試作を見て何となくNet::MSNを入れてみたのがきっかけ。

    題材はと言うと、人工無脳エージェント
    そう、当初は携帯サイトのチャットの中だけに生息していたが
    最近はblogを始めたりgreeデビューまで果たしてしまった「ひよこ」をMSNメッセンジャーに進出させたのである。

    実装はいたって簡単で、Net::MSNについてきているサンプルのclient.plのなかに

    use hiyoko;

    して、数行のコードを加えただけで作れちゃった。
    元々、ひよこのコアはモジュール化してあったので楽にMSNに対応できた。

    Net::MSNの物足りない所を拡張して、チャットウインドウを開いた瞬間にお知らせを送信できるようにもしてみた。
    10分もかからずに出来ちゃったと思う。


    「ひよこ」とお話をしてみたい方は、メンバーリストにhiyokon@yappo.jpを加えてみてください。
    携帯サイトのチャットでの会話を学習しているののですが、きっとまともな返事を期待しないほうがいいでしょう。


    一人づつ発言を処理しているので、同時に使っている人が多い時は反応が遅くなるかも。
    メンバーリストに加えてもひよこがオフラインの時は、メンバーリストから削除して、しばらくしてから追加しなおしてください。

    Posted by Yappo at 00:10 | Comments (0) | TrackBack