Home

日記
今度は風邪か花粉か (13:51)Edit

2004/3/11

結局今日も休み。頭痛はほとんど消えたけど、鼻水と咳が消えないなー。ってこれはもはや花粉症だけが残っている状態なのか? この時期花粉症と風邪の境目がわかりにくくて面倒だ。


2004/3/9

最近朝晩の薬だけで症状が安定していたんで、気を抜いて昨日の夜の薬を飲み忘れたら、今朝方ひどい頭痛で目が覚めた。いやな予感がしてネットで花粉情報をチェックしてみたら、今日あたりから今週いっぱいにかけて、突然花粉が「多い」になっとるやんけ。くそー、気を抜いたらいかんのか。後づけで薬を飲んでみたけどさっぱり良くならない。ここまで頭とのどの痛みがひどいと風邪のような気もしてくるな。今年は2回ほど勘違いをしたから今回もそうかもしれない。もしも風邪だった場合は、花粉症の薬をやめて風邪薬を飲むべきなのか、それとも風邪薬と花粉症の薬をどちらも飲むべきなのか、それとも花粉症の薬のみを飲み続けるべきなのか。

2004/3/10

結局風邪っぽい気がしたんで今日は一回休み。一日寝ていたんだけど、頭痛が抜けないなー。あまりに治らないんで、風邪薬と花粉症の薬をミックスしてみた。今は比較的余裕がある時期だし、明日も休んじゃおうかなー。

Published At2004-03-09 00:00Updated At2004-03-09 00:00

日記
Yahoo! BB個人情報 (13:51)Edit

ぐへ、ハケーンしちゃったよ。一番最初の仮申し込みの途中でキャンセルしたんだから、データを取っておく必要がない(無料サービスの重複チェックなどとも関係ない)はずなのにな。まあ登録されていたのはずいぶん古い情報みたいだし、ここで金券送付先を登録して最新情報と結びつけられるのも気持ち悪いから、登録しないでおこう。

といった理由で申し込みしなかった人たち分のお金については、ユニセフあたりに寄付してくれることを希望。

Published At2004-03-09 00:00Updated At2004-03-09 00:00

日記
ベイジアンなRSS Aggregator from blog.bulknews.net (13:51)Edit

この間似たようなことをやってみようとCPANからベイジアン関連のモジュールを落として試してみたんだけど、メール形式以外に対して手軽に使えるベイジアンなライブラリが見つからなかった(←探し方がよくない)んで、あきらめていたんだよな。Algorithm::NaiveBayesってやつを使えば何とかなるのか。

goo bloghttp://blog.goo.ne.jp/)が提供している「Pingを送ると、その記事をリアルタイムで検索エンジンのクローリング対象に追加する」という仕組みとかと組み合わせると、いろいろ面白いことができそうだ。

というか、blogmapにもなにかその系統(記事中に含まれる特徴的なキーワードを利用する)の機能をつけてみようかなー。どうせデータをクローリングしているんだから、そのデータを捨ててしまうのはもったいない。といって使わないデータをため込みすぎて、この間DBを壊してしまったんだけど。

Published At2004-03-11 00:00Updated At2004-03-11 00:00

日記
ファンタジースポーツ (13:51)Edit

おや、日本版のファンタジースポーツってYahoo!が買い取った(http://soccer.yahoo.co.jp/fantasy/jleague/)のか。と思ってファンタジースポーツJAPAN(http://www.fsjsports.com/)の方を見てみたら、日本版のサッカーが準備中になっていた。ここだけYahoo!でやるってことになったのか。ちぇっ。ファンタジースポーツの日本プロ野球がYahoo!で無料でできるようになったらやりたかったのに。

Published At2004-03-11 00:00Updated At2004-03-11 00:00

日記
TrackBack文字欠けの原因 (13:51)Edit

2004/3/12

うが、MySQLcharsetを変更したらなんかindexがおかしくなった模様。マニュアルを見ると、「myisamchk -r -q」すればいいっぽく書いてあるんだけど、実際には「doesn't have a correct index definition.You need to recreate it before you can do a repair」とかでて、まともにindexが引けていないっぽい。具体的には、varcharとかのindexがちゃんと作れなくなってしまう(index自体はできるけど、中身ができない)。

仕方ないからrecreateするかと、いったんdrop indexしてからalterしても同じ状態。というか、同じ構造のtableを新規に生成しても、そのtableでも同じエラーがでる。frmファイルに記述されたindex関連の設定がおかしいとか言われるんだけど、新規にfrmファイルを作っても同じエラーがでるってことは、何か根本的におかしくなっているのか。

ググってみたら、同じエラーがでて困っているという話はあるけれども、根本的な解決策は見あたらず。唯一対症療法的な解決策が、http://www.geocrawler.com/archives/3/108/2002/10/0/9937919/にあったんでひとまずそれを適用。

myisamchk --keys-used=0 -rq [/path/to/data]
mysqladmin flush-tables
myisamchk -rqSa [/path/to/data]
mysqladmin flush-tables

ってすると、一応varcharなcolumnに張ったindexもちゃんと作られる(中身ができる。ちゃんと使われているか試してないけど、まあきっと使ってくれてるよね)。ただし、myisamchkすると同じエラーは出続けているんで、indexの設定が腐った状態のままなのは変わらず。


2004/3/11

うちからのTrackBackとかがときどき文字化け(欠け)している原因がわかった。元々は自前(mylogのコード)でTrackBackを送っていたんで、excerptをPHP上で(mb_substrで)切りつめていたんだけど、最近はずっとPingProxyを使っていて、PingProxy側ではexcerptをノーチェックでMySQLのvarchar(255)につっこんでしまっていて、しかも今までMySQLのcharsetがちゃんと(ujisに)設定されていなかったんで、varchar(255)への切りつめ時に最後の文字が1/2の確率で化けて(欠けて)いたってことなのか。というわけで、my.cnfの[mysqld]にdefault-character-set=ujisを追加しつつ、PingProxyで投稿を受け付ける際にもきちんとexcerptをmb_substrで切るように変更。

Published At2004-03-11 00:00Updated At2004-03-11 00:00

日記
blogmap新着全文検索 (13:51)Edit

2004/4/16

というわけで、新着全文検索を復活。データ収集先サイト(blog)と、そこでリンクを張られていたサイト(news)でそれぞれ別に検索できるようにしました。Estraierって同じディレクトリに一つのCGI設定ファイルしかおけないのかな? まあいいけど。

随時収集しているデータについて、毎日朝1回だけindexを生成しています。んで、リアルタイム性はあまりありません。あと、更新されたサイトはどんどんデータが上書きされていきますし、データを取得してからある程度(3日ほど)経ったデータはばりばり削除していきます。

というわけで、とても狭い範囲(blog界隈およびそこで話題になったニュース)と狭い期間(更新されて、もしくは話題にされて3日以内)に対して全文検索をかけてみたいという方はご利用ください。


2004/3/12

ベイジアンなRSS Aggregator from blog.bulknews.net」で書いた「blogmapにもなにかその系統(記事中に含まれる特徴的なキーワードを利用する)の機能をつけてみようかなー」というネタ。一番ひねりがない機能をつけてみた。単にクロールしたページにインデックスを張って全文検索するだけ。しかもEstraierを試しに使ってみたりしたら、応用の仕方(独自UIを作る方法)がよくわからなかったりして、UIまで既成のもののまんまだし。Estraierで自前のUIから検索機能だけを使う(コマンドラインとかでもいいけど)方法ってないのかな。なければやっぱりNamazu+Chasenにして、PHP用のNamazuモジュールでも試しに使ってみようかな。

2004/3/13

いろいろ試行錯誤をした結果、なんとかそれなりに使えるようになったかな。

Namazuに移行しようかとindexを作ってみたんだけど、やっぱりEstraierのrelatedとかdetailとかの機能に魅力を感じたんで、できる限りEstraierで行く方針に。でも、Estraierには専用のCGI以外の検索クライアントがないっぽいし、専用CGIも見た目のカスタマイズ以外はほとんどできない。

一番痛いのはローカルで別名をつけたファイルに対してindexを張っておいて、検索結果には動的にエイリアスの元URLを表示する、ってことができないこと。リダイレクタを介したりすればリンクの解決自体は何とかなるけど、検索結果とかにリダイレクタのURL文字列が表示されるってのはちょっと我慢ならない。

ローカルで別名をつけるのをやめて、URLをurlencodeしたファイル名を使えば、decurlオプションを使ってなんとかなるかなーと思ったんだけど、そっちはそっちで別の問題が生じた。というのは、index生成コマンドのestindexが、長いファイル名のファイルが大量にあるときに全部のファイルを見てくれない。数千ファイルあるディレクトリに対してestindex registerをやっても250ファイルくらいしかindexが作られなかった。なんとなくファイル一覧を保持するバッファの制限とかがあるんじゃなかろうか(ソースは読んでない)。findと組み合わせたりいろいろやってみてもだめだったんで、URLをurlencodeしたファイル名を使う方法もあきらめ。

で、結局PHPでプロキシーを作ってestsearch.cgiにプロキシー経由アクセスし、ブラウザに返す前にリダイレクタのURLを元々のURLに置換して返す、というローテクというか強引な方法を採用。なんかあほらしい気がするけど、ひとまずほかの方法が思いつかないし。php4_namazuもインストールしたから、単に全文検索機能だけならそっち経由でもいけるんだけど。

あああと、Estraierのindex生成が速いのは対象のファイル数がある程度少ない間だけみたいだ。数千ファイルを越えたらNamazu+kakasiよりもずいぶん遅くなってしまった。現状でこのくらいindex生成の負荷が高いとなると、安定運用させるためのバランスを取るのが結構大変そうだな。この機能だけのために1台専用サーバーが必要なくらいかも。

2004/3/14

あれー、なんかindexが壊れてた。ちゃんと二重化して更新しているし、logには正常終了した形跡が残っているんだけどなー。よくわからん。ひとまずデータ量をできるだけ削減する方向に設定を変更して、最初からもう一度回してみよう。

2004/3/16

なんとかそれなりに回るようになったかな。でもさすがに運用コストが高いなー。取得してから24時間経過したドキュメントは破棄しているんだけど、それでも現時点で15000件くらいはインデクシング対象に入っているし、まだまだ増えていきそうだしなー。常設できるバランス点を見つけることができるかなー。

多少なりとも負荷を減らすために、今まで内部でestsearch.cgiを使っていたところを、estserver(専用検索サーバー)を使うように切り替えてみた。それなりに負荷は減っただろうけど、インデックス更新にかかっている負荷を考えると、この程度の対処じゃあんまり意味がないかもなー。現時点ではさほど検索を使っている人が多いとは思えないし。

今のところあまりこの機能を使うあてが思いつかないんだけど、唯一related検索はちょっと楽しい。related検索ってのは、bulkfeedsでいうところのSimilaritySearchみたいなもの。検索結果の最後の方にある「related」ってリンクをたどると、似た話題を扱っているページをたどることができる。なんとなく似たような趣味のページを探すときに使えるかも。

2004/4/14

blogmap新着全文検索は、index更新負荷があまりに大きくなりすぎて、ほかに影響が出始めたんで止めちゃいました。indexを分割して復活しようかと思ってたんですが、なんかあんまりいい感じにならなそうなんで、そのまま放置中です。

というわけで、現在blogmap新着全文検索は死んでます。うまい方法(それなりの負荷で、それなりに使える情報が得られる運用パターン)を思いつくまでたぶん復活はなさそうな感じです。

2004/4/15

昨日、 >>というわけで、現在blogmap新着全文検索は死んでます。うまい方法(それなりの負荷で、それなりに使える情報が得られる運用パターン)を思いつくまでたぶん復活はなさそうな感じです。 とか言っておきながら、なんとなくめどがついたかも。

Estraierのindex作成処理を観察してみたところ、indexのファイルサイズ(対象ドキュメント数)がある程度以上大きくなると、速度が急激に遅くなるようだ。ってことはEstraierのドキュメントにも書いてあるんだけど、ドキュメントに書かれている「数万件」って目安は、想定マシンパワーか運用パターンがずいぶん俺とは違っているっぽい。

毎日1万件程度更新される1万件オーバーのドキュメントに対して、Celeron 1.8GHz/512M RAM程度のマシンで、他にもたくさんプロセスが走っているのを妨げない程度にindex生成を実行するとなると、一度に作成するindexの対象ドキュメントは1000件程度に抑えた方が良さそうだ。

ちなみにEstraierでindexを作成する場合の負荷ってのは、

  • ある程度巨大になったindexファイルに対して登録作業を行う
  • index更新作業が終わった後にファイルシステムにsyncをかける

って二つの要素が大きいようで、特に後者はindexサイズが大きくなるとものすごく莫大な負荷になる模様。

幸いEstraierには、大量のドキュメントを指定数以内に分割してindexを作成し、最終的に一つのindexにmergeするスクリプト(estautoreg)が用意されているんで、それのunit(1度に対象とするドキュメント)数を変更すれば、そのあたりがずいぶん調整できる。

1万件弱のドキュメントに対してindexを作成した場合、分割せずに実行しようとすると3時間かかっても完了しなかったけど、512件ごとに分割して作成した場合は、1時間以内で完了した。作成中にかかる負荷もずいぶんましな模様。

もうちょっと状況を見てみないとわからないけど、現状程度だったらそこそこの頻度(1日1〜2回程度)でindex更新かけてもなんとかなるかもな。

Published At2004-03-12 00:00Updated At2004-03-12 00:00

日記
Text::ChaSenでundefined symbol: __gxx_personality_v0 (13:51)Edit

Namazu+ChaSenを使おうと、Text::ChaSenをインストールしようとしたら、Text::ChaSenをロードしようとすると「undefined symbol: __gxx_personality_v0」がでて止まる。結論から言うと、 gccのバージョンの問題で、-lstdc++を追加しなければならないということらしい。

Text::ChaSenのMakeFile.PLを

'LIBS' => ['-lchasen']

から

'LIBS' => ['-lchasen -lstdc++']

に修正してからインストール。


あとおまけに、rpmでインストールされていたnamazuでmknmzすると途中で「sh: line 1: no: command not found」で死ぬのは、たぶんインストール時にnkfかkakasiかchasenのパスが解決できていなかったため。たぶんmknmzのどこかのパスを書き換えれば通るんだろうけど、探すのが面倒だったんで、rpmベースのnamazuをremoveして、ソースからインストールし直したら通った。


ついでにphp4_namazuをインストールしようと思ったんだけど、元々のググって見つかるftpサーバーにはもうソースが置かれていないんだね。現在の入手方法としては、PECLのCVS(http://cvs.php.net/cvs.php/pecl/namazu)からcheckoutするってことになるのかな? ひとまずそっち経由で入手。

でもEstraierでは待てる程度の時間で構築できたindexが、mknmzだとkakasiを使ってもちょっと待ってられないレベルの時間がかかるなー。しかもせっかくChaSenを使えるようにしたのに、どこかのドキュメントでセグメンテーションフォルトで落ちるから、そのままでは使えないし。

カスタマイズ性は低い(いや、ソースからいじればいいんだけどさ)けど、Estraierのままでいった方が無難かも。でももうちょっとUIをいじりたいんだけどなー。

Published At2004-03-12 00:00Updated At2004-03-12 00:00

日記
プロバイダはどうする気なんだろう? (13:51)Edit

Microsoft Users | プログラミング☆簡単レシピ(http://www.microsoft.com/japan/users/recipe/)って、記事自体は悪くないと思うんだけど、こういう初心者入門ネタでASP.NETなんか使って作っちゃって、できあがったWebアプリを公開するプロバイダはどうするつもりなんだろう?

前にアメリカで無料のASP.NET対応Webスペースがあったんで、テストプログラムとか作って動かすのに重宝していたんだけど、あそこもサービスが終わっちゃったしな。マイクロソフトが紹介しているASP.NETに対応したレンタルサーバーってhttp://www.microsoft.com/japan/msdn/asp.net/hosting/default.aspxくらいしかないんでしょ。とても趣味の初心者プログラマが気軽に作ったアプリを載せるようなところとは思えないが。

まさかWindows XP Professional+IISな家サーバーで公開しちゃったりというオチだったりするのか? それともその辺は曖昧にごまかしちゃったりするつもりか? 大穴としては、マイクロソフトがASP.NET普及のためにASP.NET対応無料レンタルWebサービスをはじめる、とかだったらいいな。

俺はASP.NETは嫌いじゃない(言語レベルではね)けど、個人で使う気になれないのは、作ったところで気軽に公開する方法がないからなんだよな。まあ手軽なWebスペースがあっても、全面的に移行する気はさらさらないけど。

Published At2004-03-14 00:00Updated At2004-03-14 00:00

日記
人工無能のちょっと実用的な使い方 (13:51)Edit

人工無能というと、それを相手にチャットとか掲示板みたいに話したり、積極的に会話で遊ぶって感じの使い方が基本だと思うけど、ありがちな定型応答をするときに人工無能が一言おまけを追加する(応答のバリエーションを増やす)なんて感じのちょっと実用的な使い方はどうだろう。

たとえばコメント受付フォームからコメントを投稿したら、「コメントありがとうございました」みたいな定型応答をするだけでなく、ユーザーからのコメントを受けて人工無能が適当な一言を追加したりすると結構楽しいんじゃなかろうか。

本格的に人工無能で遊ぼうというのではなく、ちょっとした息抜き的にワンポイントで人工無能を使おう、って感じのアプローチ。

Published At2004-03-14 00:00Updated At2004-03-14 00:00

日記
君と同じだよ。ウンコしようとしてるんだ! (13:51)Edit

>>高速道路を北に向かって走っていた私は、トイレ行きたくなったので >>サービスエリアに立ち寄りました。 >> >>手前の個室はふさがっていたので、その隣に入りました。便器に腰を >>下ろそうとしたその時、隣から 「やあ、元気?」と声がしたのです。 >>男は皆そうですが、トイレで見知らぬ人と話をすることはありません。 >>どうしていいかわからなかったので、ためらいがちに「まあまあだよ」と >>答えました。 >> >>すると隣人は「そうか……それで、今何してるの?」と言うのです。 >>妙だなと思いましたが、私はバカみたいにこう答えました。 >>「君と同じだよ。ウンコしようとしてるんだ!」 >>やがて隣の男は、声をひそめてこう言ったのです。 >> >>「おい、あとでかけ直すよ。隣の個室に、俺の話にいちいち答えるアホがいるんだ!」

このコピペ、初出はどこなんだろう? ググってもあまり情報がないなー。ちなみにパチスロ系の板には、「パチンコ屋のトイレで」というバージョンもあった。

Published At2004-03-14 00:00Updated At2004-03-14 00:00