トップ «前月 最新 翌月» 追記

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|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|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

2004-03-01 [長年日記]

_ 本格的に体力が弱っている (13:51)

日曜日に、現在バージョン0.2程度まで成長したオトウトをだっこひもで抱えて1時間くらいうろうろしていて、ふとベンチに腰をおろしたら、背筋下部に激痛が走った。幸いその場限りの痛みですんだけれども、これは持病の背筋痛というよりは、むしろただの腰痛っぽいなー。今シーズンはボードにも一度も行っていないし、ちょっとしゃれにならない運動不足状態なのかも。本気でスポーツクラブにでも通うことを考えた方がいいんだろうか。

_ asahi.comがRSS公開 (13:51)

おお、すばらしい。朝日新聞なんて、こういうことからもっとも離れた新聞社だと思っていたのに。個人的には、こうやって一次配信元が直接RSSを配信してくれると、記事単位でのキーが明確になるのがありがたいな。


2004-03-02 [長年日記]

_ HTML_QuickForm_date日本語対応 (13:51)

PEARHTML_QuickForm_date(フォームの日付入力部品)で日本語が使えないのがいやだったんで、jaなデータを追加しようとしたんだけど、元々1ファイルに多国語データを詰め込んであったんで、文字コードの問題から日本語データを追加することができなかった(UNICODE系にすれば何とかなるけど)。

しょうがないからdateってフォルダに「[locale].php」ってファイルを作って各国語データを分割し、ja.phpに日本語データを追加して、HTML_QuickForm_dateのコンストラクタのところを、

if ('language' == $name) {
   $include = 'date/'.$value.'.php';
   include($include);
   $this->_options['language'] = $value;

に書き換えた。

ちなみにja.phpはEUC-JP。ja_euc.php、ja_sjis.php、ja_utf8.phpとかも用意しようかと一瞬思ったけど、あほらしい気がしてやめた。


2004-03-03 [長年日記]

_ 車検 (13:51)

2004/3/8

車検終了。特に問題なかった模様。オイル交換とかも頼んでおいたんで、トータルで8万円くらい。車を受け取った後、警報装置を買った店に行って感度調整のやり方を聞く。ひとまずちょっと弱めてもらった。


2004/3/3

車検に出してきた。代車はアトレーだと聞いていたけど、これってハイゼットだと思うんですが。まあどうせ大して使わないからいいけどさ。ひとまずいろいろきちんと直ってくるといいな。いまいちちゃんと直らなかったら、次の車のことも考えはじめないといけないかも。

_ DBDesigner 4 (13:51)

DBDesigner 4をちょっとだけ使ってみたんだけど、結構よさそう。この手のDBモデリングツールって、前に探してみたときには商用以外ではあんまりいいのが見つからなくて、しょうがなくphpMyAdminのリレーション作成機能(一応PDFに吐けたりもする)を使ってみたりしていたんだけど、やっぱりWebアプリケーションだとローカルで動かしていてもあんまり使い勝手が良くないし、日本語には対応してない(と思う。PDF出力コード周りをいろいろいじれば何とかなるかもしれないけど)。

で、このDBDesigner 4はWindows(とLinux)のデスクトップで軽快に動作するし、UIも(ちょっとわかりにくいけれども)Webアプリと比べれば格段にいいし、MySQLに直接つないで双方向にシンクロナイズすることができるし、日本語もちゃんと通る。微妙にエラーがでたりすることもあるけど、致命的なエラーにはまだ遭遇していない。しばらくこれを使ってみよう。

_ WORM_NETSKY.D (13:51)

またウイルスメールが大量着信する季節がやって参りました。この間流行ったMyDoomは、ピーク時には1日数十通(その多くが、From欄のドメインを騙った宛先人不明エラーメール)に達していたけど、こっちもそろそろ1日10通を越えるペースになりつつあるな。まだエラーメールが来ていない状態でこれってことは、しばらくするとまたどっとエラーメールが来るのかな。

参考リンク

_ そろそろF1ですが (13:51)

今年はオフシーズンの情報をほとんどチェックしていませんでしたよ。ニュースのヘッドラインを斜め読みした限りでは、最後のシート(@ジョーダン)もなにやら若手にきまったんだったっけ。

あと、今シーズンからのレギュレーション変更についてもいまいち把握していません。でかいのは、エンジン1機でレースウィークを過ごさなければならない、ってやつだっけ? 具体的にはいつからいつまでなんだろう? レースウィーク最初から最後までずっと? エンジントラブルとかクラッシュによる故障が起こったときにはどうなるんだ?

さっきF1(@スカパー)のビデオ予約をしたんだけど、木曜日、金曜日の放送がなくなっていたな。フリー走行とか予選とかの日程も変わったんだっけ?

BARがテストで嘘くさい好タイムを連発しているらしいね。ホンダの偉い人もなにやら景気のいい話をしたりしているらしいけど、どれだけ根拠があるんだろう? まあ、今年のレギュレーションみたいな縛りは、ホンダ的には(というか日本人的には)得意そうな方向なんで、結構いけるかもしれない(と期待するといつも裏切られる)。


2004-03-05 [長年日記]

_ リンクを張ると自動的にキャッシュを保存する機能 (13:51)

いつまでもあると思うな親のすねと他人のサイトのコンテンツ

そういやこのサイトのシステムに、記事中でリンクを張ると、その時点でのリンク先の内容を保存しておく機能をつけていたことを思い出した。

主にすぐに記事が消えてしまうニュースサイト(asahi.com)対策として、いちいち自分でローカルにキャッシュするのは面倒なんで、記事中にリンクを張ったら(=興味を持ったWeb上のリソースは)勝手に保存しておいてくれると便利だろうなーと思って。

保存ついでに、Googleみたいにキャッシュとして公開するともっと便利だろうなーと思ったりもしたけれど、権利関係が結構微妙なんで保留中。定期的に存在チェックして、404になっていたらキャッシュを表示する、なんて仕組みを入れればいいのかな。ちょっと面倒くさいか。

システムでリンクを生成するときに、リダイレクターを通すようにしておき、リダイレクターがリダイレクト先に対してHEADを投げて200だったらリダイレクトをし、200以外だったらキャッシュを表示する、とかするといいのかな。でもいちいちリダイレクターを通すのも結構うざいし、HTTP_REFERERがリダイレクターURLに差し変わっちゃうのもいやだなー。

_ 秀丸のアウトライン機能 (13:51)

秀丸エディタの現在の最新ベータ版に載っている「強調表示一覧の枠」(旧アウトライン)っていいな。秀丸のアウトラインマクロ系をいくつか試してみて、結局どれも使わなかったんだけど、実際のところこの最新ベータに載っている擬似アウトライン機能で十分使えるよ。

これって本格的にテキストを解析してアウトライン化しているのではなく、いわゆる「強調表示」機能によって強調された部分を抽出しているだけなんだけど、うまく使うと十分アウトラインエディタっぽく使える。

具体的には、テキストファイルの強調表示設定を、「^[\s\t ]*○」と「^[\s\t ]*●」とか、適当にアウトライン見出しに使うマークを決めて、それを「行の強調」に設定しておき、「強調表示一覧の枠」の設定で「強調一覧」「行の強調」を有効にする。すると、

秀丸のアウトライン機能イメージ

な感じになる。位置は左側が好み(というか、そうしないとウィンドウサイズの調整がやりにくい)。

アウトラインの解釈はリアルタイムで行われるし、左側の強調行をクリックすると右側の対応する行にちゃんと飛んでくれる。さらにインデントを箇条書きとかに対応したえらいモードに設定しておくと効果的な感じ。

ちょっとだけ特徴的なキーワード(それも自分で好きに設定できる)をアウトラインタイトルに使うだけで、それがアウトラインになるってのはうまい仕組みだなー。たとえばPHPのソースコードだと「^[\s\t]*class\s」とか「^[\s\t]*function\s」とか「^[\s\t]*var\s」とかを強調表示設定しておけば、クラス、関数、変数定義が抽出されて、一見アウトラインをちゃんと解析しているっぽく見えるわけだ。

今まで構造化エディタとか、もっとリッチなアウトラインエディタとか、WikiMemo(自作)とかいろいろ試してみたけれど、これが一番軽快に動作して使えるかも。

_ 2004F1オーストラリアGP (13:51)

金曜フリー走行

ちゃんと金曜のフリー走行はあるんだね。

金曜のフリー走行の結果なんかから直接的に、調子とかスペックとかの評価を導き出すのは意味がないので、ひとまずはフーンと眺めておくことにしよう。でもフェラーリはえーなー。

予選

  • そうか上位4チーム以外は3台目のマシンを走らせることができるというレギュレーションも増えたんだっけ。エンジンの縛りと加えて、上位チームと下位チームのレースウィーク中のテスト量に差をつけるための仕組みなのね。
  • で、予選って土曜日にまとめて2回やっちゃうことになったんだね。1回目と2回目はほとんど間をあけずにアタックするのか。なんかだらだらと長い予選って印象になっちゃったな。1回目の予選の後半から2回目の予選の序盤にかけて、雑魚ドライバーがだらだらと走って、しかもトラブルが多くて、展開にメリハリがない。1回目の予選を午前にやって、2回目の予選を午後にやる、とかにしたほうがいいんじゃなかろうか。
  • おお、琢磨結構いいじゃん。このくらいのタイムだったらトップ10には残れるんじゃないか。おお、バトンもっとはやいなー。というか、バトンと琢磨を比べると琢磨がずいぶん見劣りするなー。1秒近い差ってのはちょっときつい。こうなってくると、ヴィルヌーヴを今年の車に乗せてあげたかったなー。

おや、マクラーレンもウィリアムズもあまり良くない。結局フェラーリがダントツで、ウィリアムズ、マクラーレン、ルノー、BAR、ジャガーがその下にいるって感じなのか。トヨタとザウバーが去年よりもポジションを落としたっぽい印象。ジョーダンは今年も苦しそうだなー。

決勝

  • あらら、琢磨ちょっと失敗したね。スタートの瞬間は悪くなかったけど、1コーナーへのポジション争いに失敗って感じか。鼻をちょっとぶつけたけど大丈夫だったかな。
  • ルノー、決勝では相変わらず速いのか。BARも悪くはないな。予選ほどのインパクトはないけど、予選で得たポジションをキープするくらいは走れている。
  • うわー、マクラーレンだめっぽい。ただでさえエンジンの回転を抑え気味だったのに、それでもこんな序盤にエンジンブローかよ。これは下手したら、上の下というよりは、中の上程度まで落ちちゃったかも。
  • うーん、琢磨もきつそうだ。上を狙うっていうよりは、ポジションキープもつらいって感じだな。追突してバランスがくるったのか、それとも決勝ではあの程度のマシンなのか、あるいは琢磨の腕が安定していないのか。まあ琢磨はあんまりドライビングが安定しているタイプっぽくないから、あのくらい荒れていてもふつうかな。
  • それにしてもフェラーリはえー。安定してはえー。何もなくこのまま1-2フィニッシュしそうだ。敵がいない。
  • ウィリアムズルノー、BAR(バトン)の戦いはなかなかかみ合っているな。フェラーリの下は結構だんご気味か。
  • うーん、バトンもつらい。琢磨もバトンもレースでアンダーステア気味な感じだな。燃料積載量とは関係なさそうだけど、何が原因だろう? タイヤ周り?
  • フェラーリ圧勝か。アロンソは目立たなかったけど速かったな。エンジンを変えたけど、今年も去年と変わらず面白い存在でいてくれそうだ。ウィリアムズは、結果としては悪くはないけど予想よりもずいぶんぱっとしない。フェラーリと一度も絡めないまま終わるとは。BARはちょっと尻つぼみだったけど、ウィリアムズ、マクラーレンが落ちてくれたぶん、トップ4に混ざれるポジションまでは来たかな。琢磨はあとちょっと届かなかったか。でもまあ今年はふつうにポイントが取れそうだな。

2004-03-09 [長年日記]

_ 今度は風邪か花粉か (13:51)

2004/3/11

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


2004/3/9

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

2004/3/10

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

_ Yahoo! BB個人情報 (13:51)

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

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


2004-03-11 [長年日記]

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

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

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

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

_ ファンタジースポーツ (13:51)

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

_ TrackBack文字欠けの原因 (13:51)

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で切るように変更。


2004-03-12 [長年日記]

_ blogmap新着全文検索 (13:51)

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更新かけてもなんとかなるかもな。

_ Text::ChaSenでundefined symbol: __gxx_personality_v0 (13:51)

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をいじりたいんだけどなー。


2004-03-14 [長年日記]

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

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スペースがあっても、全面的に移行する気はさらさらないけど。

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

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

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

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

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

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

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

_ asahi.comがちゃんとtitleタグをつけるようになった (13:51)

今までコーナー名称程度までしかtitleタグに入れてなくって、記事タイトルの取得が面倒だったasahi.comが、ちゃんとtitleタグに記事名称まで含ませるようになったらしい。SEO対策をちゃんとするようになったってことかな。あるいはRSS配信をはじめたついでか。どちらにしろこれでblogmapのメンテの手間がずいぶん楽になるな。あとはzakzakとかnikkansportsとかSANSPOとかもちゃんとtitleタグを入れるようにして欲しいのー。titleかh1〜h3タグあたりまでで解釈できれば自動化も楽なんだが。


2004-03-16 [長年日記]

_ 微妙にinvalidなRSSを手軽にvalidにする方法 (13:51)

微妙にinvalidなRSSってのが世の中には結構ある。微妙にinvalidってのは、たとえば、

  • charsetが宣言と違っていたり(日本語なのにISO-8859-1のままになっているパターンが多いかな)
  • URLに「&」とかが含まれていてもescapeされていなかったり(これは結構多い気がする)
  • 不正な文字コードが含まれていたり

とか。

ありもののRSSパーサーとかを使うとちょっとでもinvalidな要素が含まれているとパースできなかったりするんだけど、この程度の微妙なinvalidさだったら自動で修正して読み込んでしまってもかまわない気がする。特に2番目とか。

「&」「<」「>」「"」「'」「&#[0-9A-Fa-f]+;」以外の「&」を「&」にするとかでいいかなー。それとも「&#?[0-9A-Za-z]+;」以外の「&」を「&」にした方がいいのか。


2004-03-17 [長年日記]

_ キンタマ ishinao (13:51)

近頃流行のキンタマhttp://myui.s53.xrea.com/kin/index.html)。Winnyはやっていないんで大丈夫だろうと思いつつも、念のため「キンタマ ishinao」でググって見たら55件も見つかったんで結構びびった。ひとまず関係なさそうだったけど。

そういやこの「キンタマ」の件で、「こういう言葉を使うことによってマスコミや公的機関が話題にしにくくする」みたいな話が出ているのを見て、ふと昔うちのサイト名を「○んこ」という名前にして、日替わりで「○」を五十音順に変えていったことがあるのを思い出した。

「あんこ」「いんこ」「うんこ」まではいいんだけど、そこからしばらくだるくて、「ちんこ」でちょっと楽しくなるんだけど、またしばらくだるい日々が続き、なんとか「まんこ」まで来たところで「まんこ達成おめでとう!」ということでサイト名を元に戻したんだったかな。あのままずっと「まんこ」というサイト名で続けているのも面白かったかもしれない。今からでも遅くないか?


2004-03-20 [長年日記]

_ この雪はなんディスカー! (13:51)

先に起きたムスコが雪だ雪だと騒いでいて、まあちょっと粉雪でも降っているのだろうと思っていたら、なんかぼた雪が降っているんですが、どないなっとるんですか。ここ数日くそ暑かったはんどうですか? わけわからんな。これが平日だったら、東京近郊は大変だっただろうね。

_ 2004F1マレーシアGP (13:51)

予選

やっぱり前回の予選は「だるい」と評判だったらしく、予選方式を変えようという話もちらほら出たらしいけど、ひとまず最初の3戦は現状のレギュレーションでやってみることになったらしい。というわけで、このレギュレーションの間は最初の1時間ちょっとは斜め見していてもかまわないんだね。

というわけで1回目は斜め見。というか流していただけだ。気がついたら2回目も5、6人終わっていた。

さて琢磨。あれ、もう出てきたってことは1回目はあんまり良くなかったのかな。なんかずいぶんステアリング操作が不安定っぽいな。ちょっとオーバーステア気味にセッティングしてちょっと不安定なところを腕でカバーってつもりなのかな。とか書いているうちにスピンアウト。あらら。これで最下位スタート確定ですか。なんでこういうことしちゃうかなー。せっかく今年のBARは車の能力的にスタートダッシュができているんだから、他のチームが追いついていないうちは堅実に走ってポイントを取っておいた方がいいのに。といいつつも、前回はそんな感じで走ってポイントにちょっと届かなかったから、今回はもうちょっと無理しておこうと考えたのかなー。

しまった。PCのバッテリが切れた。というわけでここから先は放送が終わった後の記憶で書く。

相変わらずフェラーリが速いけど、今回はスピンしてしまったアロンソならばいい勝負ができたっぽい程度の差になっているかな。ウェバーはよくわからん。もしかして今年のジャガーってBARと同じ感じなのかな。車自体はトップ4レベルだけど、そのスピードで走れるのはナンバーワンドライバーだけ状態? ウィリアムズ、マクラーレンは相変わらずあんまりぱっとしない感じ。完全にトップ4の下位の混戦に紛れ込んでしまったかな。

決勝

  • あらライコネン、フォーメーションラップでスピンですか。復帰したけど。路面は結構微妙なのかな。
  • おお、アロンソと琢磨がすごいな。ごぼう抜き状態だ。
  • 早速雨ですか。バリチェロはハードタイヤだからさらにきついのかな。
  • 今回トゥルーリがいいな。
  • ありゃ、琢磨まただめですか。復帰できなかったかな? 復帰できていた模様。
  • モントーヤのショートピットストップは、ミスなのか作戦なのかよくわからんな。路面コンディションが頻繁に変わる展開を祈っているのかな?
  • おお、バトンがライコネンをかわしたか。がんばれば表彰台いけるかな。レースペースもライコネンより速いくらいじゃん。
  • あらラルフ、エンジンブローですか。今年のBMWはだめっぽいなー。
  • おお、琢磨ってまだワンストップだったんだ。それで8番手ってことは、すごくいいペースってことじゃん。一発はいまいち速くないけど、レースで地道に順位を上げて結果を出すっていうキャラクターのドライバーになってくれるといいな。
  • で、琢磨ピットストップ。ちゃんと燃料入ったのかな? なんか微妙な雰囲気。
  • ライコネンもだめっすか。ライコネンって、車の能力以上にがんばって走った時ほど、よく車が壊れている気がする。車を酷使しているからとかじゃなくて、運が悪いって感じ。
  • うがー、琢磨ここまで来てエンジンブローですか。もうあとゴールに持っていくだけだったのに。
  • ミハエルまたも楽勝か。差はさほどなかったけど、最後まで危なげなかったな。
  • モントーヤは全然目立たなかったな。今年のウィリアムズのぱっとしなさ(というか去年もそうだったか。速いんだけど、あんまりできがいい気がしない車)からすれば、ものすごくがんばって速かったんだけど、ミハエルの手のひらから出ることができなかったという印象。
  • バトンはちゃんと3位でフィニッシュできたね。最後までどきどきしちゃったよ。
  • バリチェロはタイヤ選択のミスか。あとピットストップのミスもあったか。ソフトタイヤ履いていたらどうなっていたのかちょっと気になる。

2004-03-21 [長年日記]

_ なんでもテキストエディタ (13:51)

2004/3/22

ObjectFromLresultへのリンクを動的に解決する方法を見つけた。

HINSTANCE hInst = LoadLibrary("OLEACC.DLL");
LPFNOBJECTFROMLRESULT pfObjectFromLresult =
  (LPFNOBJECTFROMLRESULT)GetProcAddress(hInst, "ObjectFromLresult");

LRESULT lRes;
CComPtr<IHTMLDocument2> spDoc;
HRESULT hr = (*pfObjectFromLresult)(lRes, IID_IHTMLDocument2, 0, (void**)&spDoc);

って感じで動的に関数ポインタを得ればいいのか。単にinclude "oleacc.h"しただけじゃライブラリはリンクされないのか? OLEACCってものの正体もいまいちよくわかっていない。

でまあ、カーソル位置のIEコンポーネントへのポインタは取得できたんだけど、そこから先の処理をどう書くべきか迷い中。IHTMLDocument2のポインタから、現在選択されているtextareaを解決する方法が思いつけないんで、また初期のexteditのようなアバウトな方法に戻ってしまうんだよなー。あとC++でOLEオブジェクトをいじる書き方がいまいちよくわからん&めんどうくさいなー。もっと楽な言語で書き直そうかな。


2004/3/21

Webブラウザの入力フォームで好きなエディタを使う」の発展系を考えているうちに、ふと思いついたネタ。Windows上の入力欄をなんでも自分の好きなエディタで入力する仕組みってのもできそうだよな。

基本的な考え方としては、

  • GetCursorPos(&pos)して現在のマウスカーソル位置を取得
  • hwnd = WindowFromPoint(pos)してカーソル位置のコントロールのウィンドウハンドルを取得
  • GetClassName(hwnd, classname, BUFFER_SIZE);してコントロールの種類を判別
  • コントロールがtextareaの類だったら、SendMessage(hwnd, WM_GETTEXT, BUFFER_SIZE, buffer)して、その内容の文字列を取得
  • テンポラリファイルに書き出して、エディタで開く。
  • エディタが終了するまで待つ
  • テンポラリファイルの内容を読み込み、SendMessage(hwnd, WM_SETTEXT, BUFFER_SIZE, buffer)して、コントロールにセットする

といった感じ。

で、試しにやってみようかと思って、プロトタイプを作ってみたんだけど、あいにくWebブラウザ内に表示されるコントロールは、直接WindowPointではとれないんだね。IEとMozillaで試してみたけど、Internet Explorer_ServerとかMozillaWindowClassとか、たぶんウィンドウ自体がActiveXコントロールになっていて、そのレベルまでしか取得できない。

しょうがないから、取得したhwndのclassnameがInternet Explorer_Serverだった場合は、そこからさらにWebブラウザーコントロールへのポインタを取得して……とかやろうかと思ったけれども、調べてみたらなんだか結構面倒くさそうだったんで挫折(というか、書いてはみたんだけど、ObjectFromLresultへのリンクが通らないってところで詰まった)。

誰か続きをやってみて。


2004-03-22 [長年日記]

_ Amazon Web Service URL変更 (13:51)

でアナウンスされていたAmazon Web ServiceのURL変更に今頃対応。そういや日曜日中に旧URLは無効になっていたんだっけ。主要なデータはキャッシングされているから、全然気づいていなかったよ。

SOAPな人は、WDSLファイルのURLをhttp://soap.amazon.com/schemas3/AmazonWebServices.wsdlからhttp://soap.amazon.co.jp/schemas3/AmazonWebServices.wsdlに変更しないとだちかんですよ。

_ XULよくわからん (13:51)

2004/3/27

自分で作りかけていたけど、

でちゃんとできたんで、作るの中止。ちなみに上記のスクリプトではブラウザをロックしない仕組みになっているんで参考になるな。

textareaごとにユニークなIDを生成し、それを使ってテンポラリファイルを生成。それをエディタで開く。いったんエディタを開いて以降は、textareaがアクティブになるたびにテンポラリファイルの更新をチェックし、更新されていたらその内容を取り込む。といった感じかな。

mozexの場合は、Mozillaのプラグインとして組み込まれ、そのプロセスの寿命がMozillaと同じになっているからそういうことができるんだけど、IEのコンテキストメニューから呼び出した場合は、寿命は呼び出しから終了までだから、単純にその動きは真似できない(exteditの場合はエディタが閉じるまでスクリプトの動作を止めておく=ブラウザがロックすることで、編集中も寿命を長引かせている)。

思いつく回避策としては、コンテキストメニューから呼び出したときに、元ウインドウに対してイベントハンドラ(呼び出されるスクリプトも込み)を登録しておき、それがテンポラリファイルからtextareaへの書き戻し処理を担う、とかかなー。でもそんなことできるんだろうか。


2004/3/22

Webブラウザの入力フォームで好きなエディタを使う」のMozilla(Firefox)バージョンを作ってみようと、XULを書いてみたんだけど、途中でなんだかよくわからなくなった。

contents.rdfとextedit.jsとextedit.xulとinstall.jsを書いて、installed-chrome.txtに

content,install,url,resource:/chrome/extedit/extedit/

とか書いてみた(install.jsがchrome/extedit/、それ以外はchrome/extedit/exteditに置いてみた)けど、何の音沙汰もなし。install.logにも何も出てこないし。最低限自作のXULを動かすためには何をすればいいんだ?

初歩の初歩のみが書いてあるドキュメントはないかのー。「XUL Tutorial 和訳進行状況」(http://www.mozilla.gr.jp/jt/xul/progress.html)と「Mozillaでプログラミング(XUL)」(http://pc2.2ch.net/test/read.cgi/tech/1019704370/)と「XUL Apps - outsider reflex」(http://white.sakura.ne.jp/~piro/xul/xul.html)を斜め読みしてみたけどよくわからんちん。


2004-03-23 [長年日記]

_ ヨセフアンドレオン社のセキュリティポリシー (13:51)

ヨセフアンドレオンってのは、office氏の事件のターゲットとなったASKACCSのサイトを制作した会社。

前にもとても会社の名前を背負って発言しているとは思えない文章をWebサイト上に掲載して、すぐに削除してばっくれたことがある(http://mylog.ishinao.net/id/1123)けれども、また似たような文章を掲載したらしい。

コラム(http://www.josephandleon.co.jp/column/column_backnumber.html)の2004年2月13日によれば、 >>セキュリティポリシー改訂しました。スタッフは必ず守ってくださいね。 ということで、実際のセキュリティポリシーは、http://www.josephandleon.co.jp/staff/security/policy.htmlな感じだそうな。

ジョークなのかな。全然面白くないけど。それとも誰かに対する当てつけのつもりなのかな。自分たちの反省&進歩のなさを表現しているようにしか見えないけど。

>>5.学会の先生から「大きな事件が起きないと変わらない。一発、ドカンと頼むよ」と言われても安請け合いはしない。 >>6.「本当は公表するつもりはなかったんです。引っ込みがつかなくなったんです」という場合も、自分自身で責任を負い、けっして「私は・・の命令支配下にある」などと他人に責任をおっかぶせるようなマネはしない。 >>9.セキュリティの専門家同士の抗争にはかかわらない。 >>10.家族、親族に迷惑をかけない。 >>*詩人のさるやまさるぞう氏より提案のあった「信念をもって事を起こした場合は逮捕されてもジャンパーで顔を隠さない」は、「そんなの当然。ポリシーでうたうまでもない」「そんな思想の脆弱なやつはうちにはいない」ということで却下されました。

とかよくわからんな。それが「本当にそういうことがあったのか」ってあたりが特に。まだ終わっていない事件に関する話題なんだから、ここに書かれている内容はそれなりにちゃんとした意味があると解釈してもいいんだよね。それが真実であるかどうかはともかくとして、上記で匂わせている内容は、ヨセフアンドレオン社の正式な見解であるという「意味」において。

_ LaVie RXのメモリが死んだ (13:51)

2004/5/10

NECの方でも無事不具合が再現できたとのことで、メインボードとキーボードが交換されて返ってきていましたよ。4/26に修理に出したのに、4/30には早くも修理完了して会社に届いていたらしい。戻ってくるのは連休明け11日くらいになると言われていたんだけど、すごくがんばってくれたのかな。このあたりはさすがNECだ。けど、さすがにこのマシンを買ってから3回目の環境再構築となるとうんざりするな。仕事マシンだから、開発ツール系を山ほどいれなきゃいけなくて、ファイルコピーだけでもものすごく時間がかかる。ああだるい。あと新しいキーボードはやたらとXキーの反応が鈍くて鬱。ホームポジションから左手薬指で叩くと半分くらい反応していないよ。これって使っているうちに反応するようになってくれるのかなー。ならなかったらきついなー。そういやメモリがちゃんと使えているだけでなく、ビデオカード周りの不具合(いろいろな設定を遅い方向にしておかないと画面が崩れたりする)や、マウスカーソルが定期的に固まったりする(ことがある)といった不具合も解消されている模様。さすがメインボード交換。


2004/3/23

先週末くらいから、PC(LaVie RX)が突然死ぬようになった。使っていると突然ブルースクリーンになって落ち、その後しばらく再起動が効かなくなったり、起動途中で再び死んだりする。また初期不良交換かよ、と思いつつも、今PCを交換している場合じゃないんで、だましだまし使っていたんだけど、結局原因は増設したメモリ(BUFFALO DN333-A)だった模様。メモリを引っこ抜いたら安定した。もしかしてそれ以前にも画面周りが崩れたり(特にサスペンドからの復帰時に)することがあったのは、こいつが原因だったのか? その症状も増設メモリを抜いてからは起きていないし。

ただ、このマシンってメモリ増設スロット周りが激しく発熱するし、増設メモリをつけた当初はこれほど不安定ではなかったことを考えると、もしかしたらPC側の問題で故障したって可能性も考えられるんで、「メモリが初期不良でした」とは簡単には言いにくい。それに、元々メモリってもの自体が不良なのかどうなのかを明確に言いにくいものだし。さらに、念のため領収証を探してみたけど見つからず。保証書はあったし、メモリ自体の保証期間(6年だと)ではあるから、メーカー保証は効くけど、そっち経由だと時間と手間がかかりそうで面倒くさいなー。

とか思いつつも、一応買った店(ビックカメラ)に持っていったところ、ちゃんと交換してもらえた。領収証がなくても、ポイントカードの購入履歴を問い合わせて、そちらで処理できるらしい。ありがとうビックカメラ。これからは多少割高でもビックカメラで買うようにするよ。って、元々会社から一番近くて便利だから、多少割高でも使っていたんだけどね。

2004/4/23

実はこの件はまだ続いていたりする。せっかく交換してもらったメモリも、使っていたらすぐに(数分で)おかしくなってしまったのだ。が、それ以来忙しかったんで、もう一度店に持ち込むことができずに、放置したまま1ヶ月。ようやく今日再度ビックカメラに行って来た。

で、店頭でさらにビックカメラブランドのメモリ1枚とBUFFALOブランドのメモリ1枚を試したところ、どちらも同じようにある程度発熱したら動かなくなってしまうことが確認できた。さすがに計4枚新品メモリを試してみて全部だめとなると、メモリが悪いという可能性はものすごく低そうだよな。

で、NECと電話で交渉。クレーマークレーマー。この問題が微妙なのは、こういうメモリってのは基本的にメモリメーカー側が動作保証をつけているだけで、NEC自体はまったく保証していないこと。しかもLavie RXに関してはメーカー純正メモリってものも(カタログ上には512Mで15万円くらいとかいうばかげたものが載ってはいるらしいけど)、NEC自体でも取り扱っているかどうかはっきりしない代物で、つまり増設メモリの動作をNEC側で保証できる具体的な(単品で購入できる)製品ってのが存在しないらしい。

本体を修理に出せば増設スロットのチェックをすることはできるが、そこでどういうチェックを行うかは工場に問い合わせなければわからないし、基本的に他社製品との相性チェックはNECではできない、という話だった。さすがに2週間も修理に出して、「増設スロットは(電気的に)異常ありませんでした」とか言われたら「貴様をぬっころす」と笑顔で言いたくもなるカリス:http://www.tv-asahi.co.jp/blade/004_rider/chalice/chalice.html。ともかく俺は多少割高になってもいいから(最悪メモリを買い直してもいいから)、このマシンにメモリを増設したいんだよー。

そこで、「でもNECの直販サイトでは俺の買ったBUFFALOのメモリを扱ってるし、Lavie RXの直販カスタマイズモデルでは512Mの増設メモリをそれなりの(15万円とかじゃない)価格で売っているよね。あれってどこの製品か知らないけど、あれと同じものを単体で買えば、増設メモリの動作保証もしてくれるの? というか、どうやったら増設メモリの動作保証を得ることができるの?」としつこく絡んでみたところ、ようやく「今回は特例として、メモリも一緒に送ってもらえれば、それとセットでテストしてみる」という言質を得ることができた。

というわけでゴールデンウィーク中かけて修理に出してしまう方向に決定。くそー、ゴールデンウィーク中も仕事しなきゃならないのになー。

個人的にはこのマシン、放熱ファンの周辺がおかしくなっているんじゃないかと思っている。省電力モードで使っていても、ファンからものすごい高熱風が吹き出してくるのは、今時の高クロックマシンにしてもさすがに異常なんじゃないか? それともこんなもんなのかな? ほかにいまいち問題の切り分けがはっきりしていない、ときどきハイバネーションから復帰させると、Windowsのフォント情報が壊れている(再起動すると直る)というのも、発熱周りの症状のような気がする。

2004/4/26

うわー、すでに修理に送ってしまってから、

>>メモリスロットかなり堅くてカチと奥まで差し込まないと認識しないけどその辺は大丈夫? なんてのをみてしまってドキドキ。まさか最後まできちんとメモリを差しきっていなかったのか? 確かにすごく堅かったんで、100%差しきったかと言われるとちょっと不安な気が。一応マニュアルに書かれている状態(端子面が1mm程度見えていて、フックが引っかかる)程度までは差し込んだけど、もっと力を込めるともっと差し込めるのかもしれない。でもあれ以上力を加えると壊しちゃいそうで怖いしなー。

差し込みが甘かったなんて理由で、冷えている間は動いていて、暖まると動かなくなるなんてあり得るかな。……あり得そうだな。差し込みが浅かったけれども、それでもぎりぎり端子面が接触していたのが、暖まると熱膨張でちょっと浮いてしまうとか。うがー、そんなくだらない理由だったら死ねる。ちゃんと故障してくれていることを祈らなければ。ってそれは何か間違っているな。


2004-03-25 [長年日記]

_ TrackBack Ping URL自動検索フォーム (13:51)

2004/3/25

はてなダイアリーも外部にTrackBackが打てるようになった(http://d.hatena.ne.jp/hatenadiary/20040325#1080189658)らしいんで、後はこの辺があると便利だろうということで、

を作ってみた。

使い方としては、はてなダイアリーとかの日記投稿フォームの本文部分を、TrackBack Ping URL自動検索フォームにコピペし、「Search」ボタンをクリックする。すると、その本文に含まれるURLから検索できたTrackBack Ping URL一覧を表示する。

要するに、記事を書くときにはTrackBack Ping URLの存在を意識せず、ふつうにURLリンクを張ってからこのツールを通せば、TrackBack Ping URL一覧が表示される、というもの。MovableTypeとかは標準でこの機能を持っているけど、ほかにはあんまりこの機能を持っているツールはないよねってことで。

TrackBack Ping URLの検索対象としては、

  • TrackBack auto-discoveryに対応したページ(MovableTypeとかtDiaryとか)
  • はてなダイアリーのページ(URLから自動判別できるため)
  • blogmapのURLランキング対象として登録されているページ(のblogmap用TrackBack Ping URL)
  • ISBN/ASINを持つページ(のblogmap用TrackBack Ping URL)

がある。というか単に、PingProxyが行っているTrackBack auto-discovery処理を流用しているわけだけど。PingProxyでは、TrackBack auto-discoveryの結果を保存(キャッシング)しているんで、一度でも対象となったURLに関してはauto-discoveryが高速に行われる。

ちなみに、PingProxyでは全体が非同期で処理されているのに対し、TrackBack Ping URL自動検索フォームではリアルタイムで処理を行っているため、あんまり対象となるURL数が多いとタイムアウトになったりする可能性がある(キャッシュが効いているターゲットが多い場合は大丈夫)。というか、元々auto-discoveryは重い処理なんで、PingProxyでは非同期処理を行っていたわけだけど、ある程度みんなでauto-discoveryのキャッシュを共有すれば、無駄なトラフィック(負荷)を抑えつつ便利な機能も実現できるよね、ということで、試しにリアルタイム検索フォームも用意してみたわけだ。

ちなみに「対象となったURLも表示する」をチェックしておくと、TrackBack Ping URLの前に、どのURLに対するTrackBack Ping URLなのかも表示される。全部に送信するのではなく、送信前に取捨選択をしたい場合はそちらをどうぞ。

2004/3/25 その2

他のツールから呼ぶ用のREST APIを用意しました。以下の仕様でPOSTするとtext/plainなTrackBack Ping URL一覧を改行(LF)区切りで返します。

  • URL - http://pingproxy.ishinao.net/autodiscovery.php
  • 引数
    • body - 記事本文
    • type - 出力形式。plainを指定すると改行(LF)区切りのURL一覧を返す
    • detail - 詳細出力。1を指定するとPing URLの前に[]で囲んでPingの対象であるURLを返す
PHP+curlのサンプルコード
$discoveryUrl = 'http://pingproxy.ishinao.net/autodiscovery.php';
$body = '記事の本文……'; //文字コードはEUC-JPが望ましい(自動判別はする)

$query = 'body='.urlencode($body).'&type=plain';
$curl = curl_init($discoveryUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $query);

ob_start();
curl_exec($curl);
$pinglist = ob_get_contents();	//TrackBack Ping URL一覧(改行(LF)区切りテキスト)
ob_end_clean();
curl_close($curl);

_ sshで認証失敗 (13:51)

突然sshでの対話式(keyboard-interactive)ログインができなくなった場合、sshd_configのUsePrivilegeSeparationがyesになっている可能性がある。sshd_config自体にその項目の設定がなくても、opensshのアップデートによってデフォルトがyesに変わった可能性もある。

どういうバージョンのどういう設定において、どういう影響があるのかいまいち把握できていないけれども、かなり大はまりしたんでひとまずメモしておこう。認証自体は成功しているみたいに見えるのにremoteからcloseされるんで、なかなか原因がつかめなかった。uidが見つからないとかログに出ていたんで、UsePrivilegeSeparation用のアカウントが用意されていなかった、とかかなー。あとで調べよう。

_ オートニュー速 from blog.bulknews.net (13:51)

blogmapでやるとまんまニュー速っぽいな。でもblogmapではdescriptionにURLポイント数(**pts)しかいれていないんで、やたらと[pts]が出てきちゃうのがガン。オートニュー速向けにdescriptionを別の内容にしようかなー。

_ WikiBrowser - 日本語WikiName対応ブラウザ (13:51)

2004/3/28

>>#902 ただただし / 2004/03/28 12:35 >>このアプローチで解決できるのは、ブラウザのアドレス欄が見やすくなる点だけですよねぇ。メールに張ったり、別のサイトからリンクをはったりするときには%だらけのURLが現れてしまうわけで……

確かにブラウザのサンプルだとそれしか解決できないみたいにみえるか。

でもどっちかというとこのサンプルの核となるべき部分は、あるWikiサイトのページのアドレスを表現する文字列として、

という二つの形式を(クライアントサイドで)相互に変換できるロジックなので、そのロジックをブラウザのアドレス欄以外でも使えるようにすればなんとかなると思います。

たとえば、「wiki:ウィキペディア/アマゾン川」みたいなURIもどきをフックして「http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8」というURLと相互変換するフィルターをブラウザのプラグインとして入れつつ、(Windowsの場合は)「wiki:」プロトコルと対応ブラウザを関連づけておいたりすると、メールや別サイトでの紹介のときにも(対応したクライアント向けには)使えるようになるはず。

まあブラウザ以外の場所で使えるくらい、こういう仕組みを広めるのはかなり大変だろうけど。


2004/3/25

「BitChannel / 日本語ページ名」(http://i.loveruby.net/d/20040325.html#p04)関連を見ていてふと思いついたネタ。

結局いろいろ考えてもあんまりいい方法が思いつかないならば、いっそのことWebブラウザ側で日本語WikiNameに対応してしまうってのはどうだろう。

具体的には、URLエンコードされたURLから日本語WikiNameに戻してやって、それを表示するプラグイン(ツールバー)を用意したりとか、あらかじめそういう機能を持つWebブラウザを作ったりとかして、日本語Wiki対応Webブラウザ環境を整備してしまう感じ。

ツールバーのイメージとしては、たとえば、

みたいなURLのページを表示すると、(日本語Wiki対応)アドレス欄(プラグイン)には、

  • [ishinao.net/pukiwiki[↓]] [はてなダイアリー的キーワードリンク集] [→]

みたいに表示される感じ。

ちなみに一番左の[ishinao.net/pukiwiki[↓]]はドロップダウンリストを表していて、[↓]をクリックすると他のWikiサイト一覧が表示される。次の[はてなダイアリー的キーワードリンク集]の部分はテキストボックスで、好きな文字列(ページ名)を入力できる。一番右の[→]はいわゆる「GO!」ボタンで、クリックすると現在設定されているページに行く。

たぶんそれぞれのブラウザごとにInterWikiName的な設定を持つ必要があるけれども、逆に言うとInterWikiName設定さえあれば上記のような機能を実現することは簡単だよね(誰か作ってみて。誰も作らなかったらいつか自分で作るけど、俺の場合は棚上げ状態のものが多すぎて優先順位は低いよ)。

いろいろ考えても結局完全に満足できるサーバーサイドシステムが用意できないならば、いっそのことクライアント(ブラウザ)サイドで解決してしまおう、というアプローチ案でした。

2004/3/27

こういうのは実際に動くイメージがないといまいち伝わらないんで、試しに作ってみた。

WikiBrowser画面イメージ:http://mylog.ishinao.net/img/WikiBrowser.jpg

概要

  • 登録されているWikiサイトにアクセスすると、そのURLを解釈して「サイト名」「ページ名」をアドレスとして表示。
  • 「サイト名」「ページ名」を指定(入力)してアクセスすると、その内容からURLに変換してアクセス
  • といった感じで、日本語ページ名がURLエンコードされて「ワケ ワカ ラン(AA省略)」状態になるのをクライアントサイトで対応しようという試み

動作環境

使い方

  • http://dev.ishinao.net/archive/WikiBrowser_040327.zip(うまく解凍できない場合はhttp://dev.ishinao.net/archive/WikiBrowser_040327.lzh)をダウンロード
  • 解凍したディレクトリ内のbinディレクトリにある「WikiBrowser.exe」を実行
  • ブラウザで、対応するWikiサイト内を移動すると、そのページのページ名(URLデコードした結果)がテキストボックスに表示される。
  • ドロップダウンリストからサイトを選択、その隣のテキストボックスにページ名を記入して、「→」ボタンをクリックするとそのページを表示。

カスタマイズ

  • 実行ディレクトリに存在するInterWikiName.txtには、対応するWikiサイトの設定を記述。1行1サイト。半角スペース区切りで「前方一致URL文字列」「文字コード」「Wiki種別」「サイト名」を列挙。
  • 「Wiki種別」は、WikiEngineごとに異なった処理を行うための指定。現在のところ「PukiWiki」と「BitChannel」以外は意味がない。

その他

  • この実装自体は、半分ジョークソフトみたいなものなんで、あんまりまじめにとらえられても困る。アプローチ自体はありだと思うけど。
  • IEコンポーネントをデフォルトセキュリティで使っているんで、危険そうなところにはアクセスしない方がいい

ライセンス

  • 一応GPLにしておくけど、まあこのコード自体は適当に作ったものなんであんまり意味がない。
  • ソースはVisualBasic.NET 2002でコンパイルできると思うけど、IEコンポーネントの取り込みとか、環境整備を自前でやる必要がある。

2004-03-28 [長年日記]

_ 花見 (13:51)

花見2004:http://mylog.ishinao.net/img/hanami2004.jpg

ムスコを連れて梅ヶ丘まで会社の花見に行って来た。最初のうちは久しぶりの電車に喜んでいたムスコが、行きの電車の途中であっさりと飽きてしまい、「早く帰りたい」などとぬかしやがったので、往復の道中がとても疲れた。ところで羽根木公園っていいところだなー。広くて比較的整備されていて、スポーツ施設がいろいろあって、子供の遊び場(フィールドアスレチック的なもの)も充実していて、近所にあったらとても便利そうなところだ。っつーか、さいたまにもああいうのを作りやがれこんちくしょー。


2004-03-29 [長年日記]

_ deferとWScript.Shell.Runの第3引数 (13:51)

<script type="text/javascript" defer>
var shell = new ActiveXObject("WScript.Shell");
shell.run("notepad.exe", 1, true);
alert("end");
</script>

みたいなスクリプトで、shell.runの第3引数がtrue(終了するまで待つ)になっているのが効かないのはどうしてだろう? よりローカルな設定ほど強力であるというのが一般的だと思うんだけど、defer設定は何よりも強力ってことなのかなー。あと、shell.runの前に

alert("begin");

とか入れると、"begin"自体は表示されずに、"notepad.exe"が実行され、"notepad.exe"を閉じると"end"が表示される時もあるようだ。「時もある」というのは、(タブブラウザなんかで)裏で他のウィンドウをアクティブにしたりすると、突然"end"が表示されたりすることもあって、いまいち挙動が安定しなかったりするから。

あんまりJavaScript、WSH方面に深入りする気はなかったんだけど、この辺ってやり始めると結構深そうだな。いわゆるバッドノウハウ系っぽいけど。


2004-03-30 [長年日記]

_ また風邪と花粉症のミックスか (13:51)

また風邪だか花粉症だかわからない微妙な症状になってしまった。今回は痰がひどいからきっと風邪なんだろうなー。ああしんど。そういやアルシンドっていたね。


2004-03-31 [長年日記]

_ mapのネスト (13:51)

map<string, map<string, string>>が通らないんで、困ったなーと思っていたら、map<string, map<string, string> >ならば通るのね。っつーか、確かによく見たら>>になってるじゃん。すげーくだらねー。けど、気づきにくー。

というわけで、STL(C++)素人の試行錯誤の実況中継でした。

_ clamavとspamassassinとqmail-scanner-queue (13:51)

2004/4/20

うーん、むき出しの実行ファイルを送りたがる人は結構いるのね。qmail-scanner-queueのレベルでのフィルターを緩和。拡張子フィルターはpifとscrだけに変更。


2004/3/31

最近の異常なウイルスメールの増加に、クライアントサイドだけでの対処だとちょっと気持ち悪くなってきたんで、clamavspamassassinqmail-scanner-queueを入れてみることにした。んだけど、なんかいまいち設定がよく理解できていないままにインストールしてしまったんで、正しく動作していないかも。一応ウイルスメールが削除されているログは残っているし、テストメールのいくつかは正しく送られているんだけど、すべてのメールに対して正しい処理が行われているのかよくわからん。あとでちゃんと見直してみないとなー。

2004/3/31-2

なんとかなったかな。初期導入時にはqmail-scanner-queue.plのQMAILSCAN_NOTIFYを"none"じゃなく、"admin"(管理者)とか"recips"(受信者)とかにしておかないと、何が起こっているのかわからない。あと、qmail-scanner-queueのログは/var/logとかじゃなくて、/var/spool/qmailscan/とかにあるんだね。

で、どうもclamavとかまでいれなくても、qmail-scanner-queueだけで十分な気がしてきた。http://www.es.qmail.org/quarantine-attachments.txtとかの定義ファイルで大まかなところをブロックしてしまえば、残ったものはクライアント側のウイルススキャンで対応できるし。

サーバーでのウイルス対策を行ったついでに、ランダムウイルスメールで着信したエラーメールには返信しないように修正。.qmail-defaultを適当なアカウントに割り振っただけだけど。aliasesにfastforwardしながら、aliasesにマッチしなかったアカウントは特定のアドレスに転送するのってどう書くのかな?←単に次の行に「&転送先アドレス」しておけばいいらしい。←嘘だった。それだとaliasesにも転送先アドレスにもどっちにも送られる。||でつなげば何とかなりそうだけど、「|| &転送先アドレス」じゃだめみたいなんだよなー。

2004/3/31-3

おおすげえ。なんかとてもいい感じでウイルスがはじかれてくれるよ。これだったら他のプロバイダメールなんかもこっちに転送してしまって、こっちでフィルタリングしてから受信するのもいいかもな。

ちなみにclamavの方もzipファイルとかを対象にそれなりに働いている模様。ほとんどをqmail-scanner-queueがはじいて、残ったわずかなものもclamavがはじいているって感じ。

2004/4/7

一部メーラーで文字化けが発生するとの報告が。どうやら、qmail-scanner-queue.plの850行目付近にある、

$findate = POSIX::strftime( "%d %b ",$sec,$min,$hour,$mday,$mon,$year);

で、%bが現在のlocaleでの月表記になっていて、それをそのままヘッダに出力しているんで、日本語環境だと日本語文字列がそのままヘッダに出力されてしまい、文字化けの原因になる、ということらしい。ひとまず、

$findate = POSIX::strftime( "%d %m ",$sec,$min,$hour,$mday,$mon,$year);

にしておく方向で対応。