2005-01-06 [長年日記]
_ 休みも終わり (14:11)
なかなか集中できないなー。ひとまず今日中にあと50kバイトくらい埋めてみよう。
_ 新着ランキング (14:16)
新着のみを抽出したランキングを追加。
「新着」といっても純粋な新着ではなく、ランキング入りした話題の中で、集計期間内の初出が新しめのものを抽出しているだけなんで、必ずしも「新しい話題」がランキング入りするとは限らないんだけど。
時系列での差分とかとって新着チェックしている方々なんかは、これを使うとそういう作業が楽になるんではないでしょうか。
_ メール配信復活させました (14:25)
blogmapのメール配信サービス、システムリニューアルの関係で止めてましたが、取り急ぎ従来互換のものとして復活させておきました。
- サービス開始リクエスト bm_news-subscribe@ishinao.net
- サービス停止リクエスト bm_news-unsubscribe@ishinao.net
ただ、現状の単なるランキングのメール配信は、(俺的に)いまいち面白みがないんで、何か面白くするネタがないかなーと考え中だったりします。
ちなみに新しいバージョンでは、携帯メールなどで受信した場合でも、「もっと詳しく」へのリンクをたどった場合に携帯用ページが表示されます。ってこれはメール側の機能じゃないけど。
_ 携帯用RSSリーダー (15:22)
まだ全然細かいところまで詰めていないんだけど、blogmapメール配信絡みで考えていたネタを、思いつきネタとして書いておこう。
IMAP4のアカウントにRSSを配信して、mobileimapを改造した携帯対応リーダーを通して閲覧する、というアイディア。単にRSSをメールで配信するというだけならやっているところがあるだろうけど、IMAP4+mobileimapで携帯対応RSSリーダーってところまでやってるところはまだないよね?(関連ネタ「RSS更新チェック&メール配信」)
利点としては、
- IMAP4アカウントをストレージ代わりに使える
- IMAP4の未読・既読管理を使える
- IMAP4のフォルダ分類を使える(procmailで分類したりとか)
- IMAP4対応メールクライアントで閲覧できる
- mobileimapを使うと携帯端末からも閲覧できる
ってあたり。ただmobileimapって本文中のリンクをたどれない(セキュリティのためにそうしてある)んで、RSSリーダーとしては使いにくいんだよなー。
その辺を考えると、RSSリーダー的な用途に特化した携帯対応IMAP4 Webクライアントを別途作った方がいいのかもなー。PHPのimap関連関数って使ったことないんだけど、あの辺を使って作ってみようかなー。
あと、このネタは個人的に使うぶんにはそんなに難しくないんだけど、一般向けのサービスとして立ち上げるのは結構面倒くさそう。セキュリティとかアカウント管理とか。
_ メディア検索 (15:38)
そういや書くのを忘れてた。メディア検索(Amazon商品検索)を追加しました。
旧システムではKeywordSearchを使ってましたが、あれだと検索するカタログを選択しないといけないんで、今回はBlendedSearchを使ってます。けど、BlendedSearchだといまいち出てくる商品が偏ってるなー。
_ 「Python Is Not Java」より (22:14)
XMLはJavaよりもずっとagileでflexibleなので、「Javaアプリケーションのスクリプティング」の標準的言語の地位を確立しているのだ。
なるほどねー。ソースコード自体をスクリプト言語みたいに手軽にいじれない分、表現力が高いXMLを使ってそういう部分を表現しているってことか。
そういや以前、メインの処理をC++で書きつつ、仕様が最後まで揺らいでいたフィルター処理部分は、外付けのスクリプト言語(最初PHP、後でTCL)を使ったりしたけど、そこでスクリプト言語じゃなくてXML定義を使うというアプローチも考慮したもんな。
あと、前に作っていたPHPのクラスライブラリでは、XMLでごつい設定を書いて、それを読み込んで処理するというアプローチを取っていたんだけど、使っているうちにだんだん面倒になってきて、現在は、シンプルな設定だけiniで書き、ある程度複雑な部分は直接コードで書くように変えてしまった。
スクリプト言語では、XMLの仕様定義およびそれを解釈するライブラリをがんばって書くよりも、よほど汎化できる部分以外は、その場でコードをばりばり書いてしまった方がお手軽だよね、という実例かもしれず。
_ 1/3か (22:36)
結局15kバイトほどしか埋まらなかった。残りは明日やろう。
2005-01-07 [長年日記]
_ コメントSPAM襲来 (02:05)
たまたまPCの前にいたんで、5、6発目の段階で、
deny from 198.26.120.13
できたけど、運が悪いと100発くらい食らって、それがどかどか通知メールで送られてきて&RSSリーダーに載ってうざいんだよなー。
_ またゲロ (02:07)
また下の子がゲロリンパですよ。せっかく正月休みで風邪も治っていたのに、1日保育園に行っただけであっさり復活ですか。しかも今日は夕飯をたんまり食べていたらしく、寝ながら上を向いて吐いたゲロが5センチくらい吹き上がりましたよ。なんかもう大人並みに立派なゲロでもらいゲロしそうになるし。なんかもう部屋中が酸っぱいにおいで満載ですよ。
_ Anti Referer Spam プラグイン ver 0.9導入 (13:19)
英文/URLオンリーSPAMは拒否する設定にしてみた。
_ svnでhttpsが使えない (16:16)
RedHat9のマシンでコンパイルしたSubversion 1.0.3(svn)が、httpsをUnrecognized URL schemeだとぬかして扱えないんで、1.0.9にあげてみたんだけどそれでも使えない。
よく見たら、同梱されているneonがnot SSL supportになっていたんで、neonディレクトリに下りて、./configure --with-sslしてからコンパイルし直したら、httpsサポートしてくれるようになった。
なんかググってもあんまり情報が見つからなかったんで、一応書いておこう。
_ mainichi-msnにcurlでアクセスできない (16:25)
blogmapでmainichi-msnのページのタイトル文字列を取得しようとすると、curlベースで作ったライブラリでHTTP GETするのに失敗する。timeoutを短めに設定しているんで、もっと待ったら成功するのかもしれないけど、少なくとも数秒程度ではアクセスできない。
ググったら、curlやw3mではうまくアクセスできないらしい(DNS解決周りの問題?)んで、curlを使うのをやめて、PEARのHTTP_Requestベースに書き直したら、ちゃんとタイトルを取得できるようになった。ついでに、クローラーがcontent-encoding: gzipに対応するようになったけど、どのくらい意味があるかな?
2005-01-08 [長年日記]
_ チャレンジ!周辺視野! (08:42)
「おおきく振りかぶって (1)(ひぐち アサ)」でもやっていた周辺視野の広さ測定。俺は最初にやった18秒台が最高で、2回目以降どんどん遅くなっていった。
素早く次の数字を探そうとして、一つの数字に目の焦点をあわせすぎると、逆に遅くなってしまうみたいだ。どんなに急いでいても、あくまでも周辺視野のレベルで数字を探さないと、次の一手はよくても、それ以降のスピードが遅くなる。
_ キーワード検索修正 (08:53)
この間Webサーバーを移転させたんだけど、検索インデックスのパス指定の修正漏れのせいで、URLに対するキーワード検索が動いてませんでした。修正したんで、今はちゃんと検索がかかるようになってます。例「スマトラ」。
_ メディア検索に種類指定を追加 (12:50)
メディア検索の際に、対象とする商品種類(本、CD、DVD……)を指定する機能を追加しました。内部的には、種類を指定した場合はKeywordSearch、指定しなかった場合は、BlendedSearchになります。BlendedSearchでうまく出てこない場合は、KeywordSearchを使ってみると見つかるかもしれません。
_ newswatchテスト中です (13:00)
まだ調整中ですけど、ひとまずURLを公開しておきます。
要はGoogle Newsみたいな感じに、新しめの(主にニュース)記事をジャンル別に分けて表示するサービスです。対象となる記事はニュース記事に限らず、blogmapで収集しているさまざまなページが含まれます。あと、汎用的な特徴語検出ロジック+適当に決めたキーワードリストで分類しているので、あまり正確な分類にはならないかもしれません。
あとキーワード検索機能ももっているんで、自分で気になるニュースキーワードで検索した結果のRSSを更新チェックしておいたりしてもいいかもしれません。たとえば「スマトラ 被害」とか。ちなみにデフォルトではand検索になります。or検索にしたい場合は、「スマトラ [or] 被害」のようになります。
バックエンドには、Estraierを使っているんで、より細かい検索クエリー指定方法については、検索用ユーザインタフェースあたりを読んでおくといいかもしれません。
ただ、最近ちょっとマシン負荷がぎりぎり状態になっているんで、安定運用できるかどうかは微妙な感じです。
2005-01-09 [長年日記]
_ うわー (02:14)
下の子供に続いて、上の子供もゲロって、さらにオクサンもゲロったよ。残るは俺だけですか。いや俺も何週間か前に一度同じ症状は通ってきているんだけどさ。子供たちもそうだし、現在家族全員で2周目突入って感じだ。
_ 議論追跡のバグ修正 (04:44)
1ページに複数の記事(RDF)が含まれる構成のサイトに対してtrackback auto discoveryするときに、正しいtrackback ping URL(identityに記事URLを持つ)を見つけることができず、一番最初のRDFに含まれるtrackback ping URLを無条件で使うというバグがあったので、修正しました。
2005-01-11 [長年日記]
_ ジャンル抽出キーワード調整中 (14:22)
newswatchも、ずいぶんジャンルごとのニュースの抽出精度が良くなってきたのではないでしょうか? でもまだ全然関係ないニュースが混ざったりするけど。
ちなみにこのジャンル抽出は単なる検索キーワードの設定なんで、newswatchの検索機能を使って完全に再現可能です。なんで、標準のジャンル抽出が気に入らない人は、自分でオリジナルの検索キーワード設定でもして使ってください。検索パターンをRSSリーダーとかに登録しておくと、いい感じのニュースソースとして使えるんじゃないかと思います。
オリジナルキーワード設定の作り方としては、
- そのジャンルに特徴的なキーワードを[or]でつないで羅列する。たとえば「KDDI [or] au [or] ドコモ」とかで携帯電話会社関連のニュースを拾ったり。
- 複合語などのキーワードは、ChaSenで複数語に分割されてしまい、うまく一つのキーワードとして認識されなかったりするので注意する。ちなみに「大リーグ」とかは「大」と「リーグ」に分割されちゃったよ。
- 関係ないジャンルでも使われそうな語の使用はできるだけ避ける。特に同音同表記異義語とか、ありがちな人名とか。あとヘッダ・フッタ・サイドバーなんかに含まれがちなキーワードも誤爆しやすい。
- どうしても他のジャンルで使われる語を使いたい場合は、[not]を使って他のジャンルで利用されるパターンを弾く。たとえば、「ドコモ」を検索するとドコモに関するさまざまなニュースが検索されるが、「ドコモ[not]株価」とかしておくとそのうち株価情報関係なんかが弾かれる。
まあそんな感じで。
_ ノロウイルス? (19:19)
もしかしてうちで最近大流行のゲロ・下痢は、こいつが原因ですか?
これだとすると、二次感染防止はかなり難しそうだなー。ふつうに石けんで手を洗ったくらいじゃ防げないみたいだ。あと布団とかにゲロをまかれてしまうと、完全除去なんてできやしないしなー。ウイルスは高熱で死ぬらしいから、布団乾燥機でも該当部位に当ててみるか? でも、うちで治っても保育園に行くとまたもらってくるんだよなー。
_ ディプロマシー (19:33)
「切込隊長BLOG(ブログ) 〜俺様キングダム: ディプロマシークラシックス2 1901〜 1903」で途中までの詳細なリプレイが紹介されているやつ。
すげー面白そう。しかも、jounoさんの言うとおり、「ディプロマシー 基本ルール」を見る限りは、「これ、人狼BBSと同じ形式でCGI化するのってけっこう簡単(いや、CGI作れる人には)なんじゃないだろうか。」って気がする。ゲームが終了したらすべての私信が公開されつつ、人狼BBSみたいにゲーム終了後にしか見えない独り言による戦略メモ(要は上記切り込み隊長blogの内容みたいなもの)とかもあると、さらに読み物として面白そうだ。
ターン変更時人間の操作(敗走先指定とか)が必要な同期をとる部分がちょっと(ユーザービリティを良くするのが)面倒そうだけど、「規定時間内に指定がない場合はランダム指定」とか「あらかじめ優先順位を決めておいてもらう」とかで何とかなるのかなー。
ただ、ディプロマシーのヨーロッパマップって、日本ではちょっと敷居が高いかもしれないなー。俺、世界史取らなかったし(←個人的な問題か)。実際のヨーロッパでやるところがこのゲームの面白さの重要なポイントだということはわかるけど、日本でウケるためには架空の国とかを舞台にした方が良さそうな気がする。あるいは天下統一風のグラフィックで戦国ものとしてやるのも良さそうだなー。でも戦国物で合戦がここまで単純化されてしまっていいんだろうか? 思わず武将とか軍師とか作っちゃいたくなるな。ってそれはもはや(ボードゲームの)戦国大名か。
2005-01-12 [長年日記]
_ うわ、やっちゃった (12:18)
高速化のために一部の初期化をはしょったら、タイムアウト発生時に(←が原因じゃなかった)他のサイトのRSSアイテムを別のサイトのアイテムとして登録する処理が大量発生していた模様。データ復旧中です。
_ だいたい復旧したかな (14:36)
ただしばらくの間腐ったキャッシュが蔓延していたりするかも。あと、データの二重登録とかも多少起こる可能性あり。検索インデックスにも結構腐ったデータが登録されちゃってるけど、そっちは時間と共に流されていくのを待とう。
ちなみに何をやっちゃったかというと、RSS巡回時のオブジェクトの初期化処理をはしょろうかと思って、
$rss =& new XML_RSS();
foreach ($rss_urls as $website => $rss_url) {
$rss_text = get_rss_text($rss_url);
//$rss =& new XML_RSS();
$rss->setInputString($rss_text);
$rss->parse();
add_rssitem_to_website($website, $rss->getItems());
}
なんて感じ(↑実際のコードとは違うよ)に変えたんだけど、そうすると$rss->items(getItemsで取得される実体)が初期化されない(setInputStringかparse前あたりで初期化されるもんだと思いこんでいた)んで、parseするたびに$rss->itemsが前回parseした内容に追加されていってしまい、重複したアイテムがひたすら次に巡回したサイトのアイテムとしても登録されていき……という話でした。アホですね。
2005-01-13 [長年日記]
_ MM実験中 (16:53)
「MM/本のメモ」で書籍メモとしてテスト中だったものを、URL/メディアメモとして拡張したバージョン。
- トップページ - http://1470.net/mm/
- 私のmyページ - http://1470.net/mm/mylist.html/1
まだ全然作り込んでいないんだけど、試してみたい方はどうぞ。1470.net以下のすべてのパーソナライズページ同様、TypeKeyアカウントが必要です。
_ ついでに (19:59)
いまいち負荷的に厳しいんで公開していなかった新版textmaniaのURLも公開しておこう。
当初RSSリーダーにしようかと思っていたんだけど(どうせ裏側にRSSアイテムの情報も持っているから)、サーバー負荷的に論外だったんで、従来通りサイト単位での更新リストを表示するだけにした。それでもまだ重い。
っつーか、blogmapの検索周りが重すぎるんだよな。textmaniaを専用のDBに分離すればそれなりのスピードで動くと思うんだけど。お金と心に余裕ができたら、もう一台サーバーを増やすかも。
_ というわけで (20:12)
俺的には当初予定していた1470.netに載せるべきサービスは、これで一通りできたことになる。それぞれの完成度はまだまだ低いけど、まあぎりぎり使い物になるレベルまでは達したかな。っつーか、それよりサーバー負荷的に安定運用できるかどうかがものごっつい厳しいんだけど。
ちなみにこれらのサービスを、どういう感じで使うかというと、
- textmaniaを使って、日常のサイト巡回をする
- newswatchを使って、新着ニュースのチェックをする
- blogmapを使って、話題のニュースのチェックをする
- 気になったページや本、CD、DVD等をMMを使ってクリッピングし、簡単な感想はそこに書く
- クリッピングした中からさらに気になったものを、日常雑記に混ぜつつtDiaryに書く
- さらにまとまったものはmovable type(技術ネタ/その他)で話題単位の記事にする
- 余力があったらMMやblogmapの各種機能で興味を持った話題をさらに深く追ってみる
なんて感じ。
基本的には、自分のネット生活効率化ソリューションとして作ったツール群なんだけど、他の人も使えるようにすることによって、さらに効率のいい情報フィルタリングができるだろうということで、汎用システムとして公開しているわけですよ。ただ、あんまりユーザー数が増えるとサーバーリソース的に厳しいので、その辺は手加減して使ってください。
2005-01-15 [長年日記]
_ 設定機能 (06:55)
- MYLISTページのタイトル
- MYLISTページで使用するテーマ(tDiaryテーマ名)
- MYLISTページで使用するAmazonアソシエイトID
を設定できます。
- ishinaoのメモ - http://1470.net/mm/mylist.html/1
みたいな感じになります。
_ カレンダーを追加 (07:34)
MYLISTページの上部に、メモを書いた日付リンクを追加しました。これでいわゆる日記ツールっぽい部分は一通りそろったかな。
2005-01-16 [長年日記]
_ 自サイトURLの設定 (02:22)
設定項目に自サイトURLを追加しました。設定しておくと、上部の[HOME]から自サイトへのリンクが張られます。
っつーか、MMはインターフェースデザインがぼろぼろだ。当初は単なるクリッピングツールにするつもりが、後付でtDiary互換にしたら見た目がクリッピング系blogサービスっぽいものになっちゃったんで、何をどうしたいのか自分でも整理できていない。
ある程度こなれてきたら、現在のMYLISTページ的なものを中心に、デザインを全面的に見直しますよ。
っつーか、MMみたいにクリッピング機能をコアにおいたblogサービスとかも出てきてもいいよね。
2005-01-17 [長年日記]
_ なんて感じで (18:31)
rss_recentプラグインを使って、MMでクリッピングしたメモを貼り付けてみるテスト。本当はrss_recentを改造してcontent:encodedの内容ごと貼り付けたりしようかと思ったりもしたんだけど、それもちょっとうざいかな。
_ 応用パターン (18:39)
MMのMYLISTページでは、種別、ジャンル、評価、URL/メディア、日付による絞り込みと、その内容のRSS表示が可能なんで、それを使うと、
最近の更新状況
- [告]『[MM][1470.net] 正しいURLで登録されない不具合』
- [告]『[MM]ScarecrowBoneMemo - MM/Memo』
- [告]『[1470.net][障害報告] 3/19夕方〜3/20朝まで一部でDBエラーが出ていました』
- [告]『[MM]haibane techo - MM/Memo』
- [コ]『Mint Julep(2006-02-03)』
- [告]『いしなお! - すみません、ディスクフルやらかしました』
- [告]『 [1470.net] 12:30から30分ほど落ちてました - いしなお! (2005-12-15)』
- [告]『 [1470.net] pingサーバーの不具合を修正しました - いしなお! (2005-12-14)』
- [告]『いしなお! - MM/Memoとblogmapのexists API (12:37)』
- [告]『関連ツールリンク集を作成中です』
- [告]『 [1470.net] TypeKey認証のライブラリを変更しました (13:12) - いしなお! (2005-12-05)』
- [告]『 [MM][タグ][API] タグ自動抽出APIにフィルターを追加 (13:56) - いしなお! (2005-12-01)』
- [告]『55: MM/MemoのメモIDリストの取得』
- [告]『安定稼働し始めました』
- [告]『[1470.net] サーバー不調中です (13:38)』
- [告]『[blogmap] サイト情報の集計不具合を修正しました (20:48)』
- [告]『[1470.net][サーバー管理] 無事終了しました (16:05)』
- [告]『明日サーバーの一部機能が止まります』
- [告]『[1470.net] DBがこけてました (07:41)』
- [告]『[1470.net] URL文字数を255バイトまで拡大 (17:26)』
購入予定
- [予]『エンタープライズ アプリケーションアーキテクチャパターン』マーチン・ファウラー, 長瀬 嘉秀, 株式会社 テクノロジックアート(翔泳社)
- [予]『ディフェンシブ・ウェブデザインの技術―「うまくいかないとき」に備えたデザイン、「上手に」間違えるためのデザイン』37signals, 吉川 典秀, ソシオメディア(毎日コミュニケーションズ)
- [予]『AsteriskでつくるIP電話システム―つくって、試して、楽しむIP電話―PCtoPCからIP‐PBXまで』高橋 隆雄(秀和システム)
- [予]『マネー・ボール』マイケル・ルイス, 中山 宥(ランダムハウス講談社)
- [予]『アフォーダンス-新しい認知の理論』佐々木 正人(岩波書店)
- [予]『Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く』Randall Hyde, 鵜飼 文敏, まつもと ゆきひろ, 後藤 正徳, トップスタジオ(毎日コミュニケーションズ)
- [予]『ご冗談でしょう、ファインマンさん〈下〉』リチャード P. ファインマン, Richard P. Feynman, 大貫 昌子(岩波書店)
- [予]『ご冗談でしょう、ファインマンさん〈上〉』リチャード P. ファインマン, Richard P. Feynman, 大貫 昌子(岩波書店)
- [予]『大学の話をしましょうか―最高学府のデバイスとポテンシャル』森 博嗣(中央公論新社)
- [予]『ハイブリッド―新種』ロバート・J. ソウヤー, Robert J. Sawyer, 内田 昌之(早川書房)
- [予]『達人プログラマー―システム開発の職人から名匠への道』アンドリュー ハント, デビッド トーマス, Andrew Hunt, David Thomas, 村上 雅章(ピアソンエデュケーション)
- [予]『プロフェッショナルの条件―いかに成果をあげ、成長するか』P・F. ドラッカー, Peter F. Drucker, 上田 惇生(ダイヤモンド社)
- [予]『9・11生死を分けた102分 崩壊する超高層ビル内部からの驚くべき証言』ジム・ドワイヤー, ケヴィン・フリン, 三川 基好(文藝春秋)
- [予]『コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈下〉』ジョン・L. ヘネシー, デイビッド・A. パターソン, John L. Hennessy, David A. Patterson, 成田 光彰(日経BP社)
- [予]『コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈上〉』ジョン・L. ヘネシー, デイビッド・A. パターソン, John L. Hennessy, David A. Patterson, 成田 光彰(日経BP社)
- [予]『隣人は静かに笑う』(ポニーキャニオン)
- [予]『宮崎駿の世界―クリエイターズファイル』(竹書房)
- [予]『民間防衛 新装版―あらゆる危険から身をまもる』スイス政府, 原書房編集部(原書房)
- [予]『ゲーム開発者のためのAI入門』デイビッド・M. ボーグ, グレン シーマン, David M. Bourg, Glenn Seemann, クイープ(オライリージャパン)
- [予]『科学する麻雀』とつげき東北(講談社)
ブックマーク
- [栞]『Hamana - graphic viewer』
- [栞]『Prototype: Object-Oriented Javascript Library』
- [栞]『JSDoc Homepage』
- [栞]『DHTML: Draw Line, Ellipse, Oval, Circle, Polyline, Polygon, Triangle with JavaScript』
- [栞]『なんだってー(28種)』
- [栞]『Bloglines | ishinao's Blogs』
- [栞]『Firefox [皆が使用している拡張]』
- [栞]『ColorMixers: Remixing RGB since 2003』
- [栞]『sage.mozdev.org』
- [栞]『mod_rpaf for Apache』
- [栞]『CodeZine>トップページ』
- [栞](4)『From *scratch*』
- [栞](4)『イントラネット構築法』
- [栞]『メインページ - Wikiquote』
- [栞]『東証 : 適時開示情報閲覧サービス・利用案内』
- [栞](4)『デザインテンプレート』
- [栞](5)『[Konfabulator] Sing that iTune!』
- [栞]『ドミノ・ピザ Domino's Pizza Japan Site』
- [栞]『SQLite home page』
- [栞](4)『SSL 証明書 比較チャート』
2005-01-19 [長年日記]
_ やばい (14:15)
久しぶりにひどい背筋痛が来た。ものすごく遅刻して出社してきたけど、ちょっとでも右腕を肩の辺りから動かすと激痛が走って動けなくなる。かなりやばい。
って書いたら
早速Google AdSenseで背筋トレーニングの広告がばりばり表示されていて笑った。
_ 使い捨て軽量クライアント+オンラインストレージ (15:32)
OS組み込みされるIEとはまったく逆の発想だけど、今時ならばこっちのアプローチの方が受けるんじゃないか。ブラウザだけでなく、メーラーとかメッセンジャーとかまで含めて、インターネットクライアント環境を持ち運べるようにすると、家と会社で同じ環境を使いたい人とかが喜びそう(会社は喜ばないかもね)。
可搬性というとオンラインのASP的な方向が主流だけど、今ならUSBメモリとかiPodとかの持ち運び用ストレージに、その中で完結して動作するアプリケーションをつっこんだ方が便利そうだし、セキュリティ的にも安心(というか個人の才覚で完結する)だ。
と書いているうちに、可搬性のあるアプリケーションサービスの別のアプローチも思いついたので書いておく。
オンラインのストレージ領域と、それにアクセスするためのインストール不要な軽量アプリケーションを用意する。サービスを利用したい場合は、その環境にアプリケーションをダウンロードし、そのまま実行する。最初に認証を行いユーザーを特定すると、オンラインから設定等をオンメモリに読み込む。
で、いろいろ作業を行うけれども、基本的にオンメモリ or ネットワークストレージ上にしかアプリケーションはデータをおかない。少なくともハードディスクにはキャッシュすら保存しない。そして作業が終わったら、実行ファイルを削除すればまったく痕跡が残らない。
要はWeb上で行われているいろんなサービスに対して、軽量のクライアントアプリケーションを用意して、それを通してアクセスするようなイメージ。 インターネットカフェとかのWebブラウザを使うときって、セキュリティ周りをいろいろ気にする必要があるけど、使い捨ての軽量アプリケーションを用意し、それを使う限りはローカルディスクにデータが残らないことが保証されていれば、かなり気軽にあちこちで使うことができるようになりそう。まあキーロガーとか仕掛けられていたら負けだけどね。
試しにそういうアプローチのものを何か作ってみようかな。クライアントアプリケーションをいろいろなプラットフォーム(たとえば携帯アプリとか)で用意すると、さらに可搬性はあがるだろうし。今作りかけているWikiMemo(ゼロから作り直している)をそういうアプローチにしてみようかなー。
_ 検査しろ (17:04)
下の子供の保育園からお迎えコールが来たらしい。といっても、うちの子供自体が特に体調を崩したというのではなく、今まで下痢ゲロ系の症状が出て休んだ子供に、病院で(ノロとかロタとかの)ウイルス検査を受けてこいということになったそうな。今まで症状が出てから何度か病院に連れて行ったけど、ウイルス検査は特にしてくれなかったんだよなー。病院で検査してくれと言えば即日検査してくれるんだろうか? まあでも、確かに最近の下痢ゲロ系ウイルス風邪はひどい状況だから、全員検査は必要かもね。でも俺もオクサンも今これ以上あんまり休めないんだけどなー。すでにこの冬だけで双方とも一週間くらい休んだはずだし。
_ 書き込む前に類似検索してしまう (20:00)
思いつきネタ。掲示板なんかで、新しく質問なんかが投稿される際に、自動的に投稿される文章と既存の掲示板データとの類似文書検索を行い、「がいしゅつです」「過去ログ嫁」とか判断できると、ちょっといいんではなかろうか。
要は掲示板へ投稿された文書を、自然文検索のクエリーとしても扱い、あまりにも類似度が高い文書が見つかった場合は、投稿処理をキャンセル(一時停止)して、そっちの方に誘導してしまうという流れ。Google Web APIと特徴語検出を使って、インターネット上から類似ドキュメントを検索してあげてもいいかも。
_ 久しぶりのASP.NET (20:56)
わけわかんねー。一昨年から去年にかけてずいぶん長く使っていたのに、半年ぶりくらいに使おうとしたら、細かいところを全然覚えてねーや。
ASP.NETってすごいものだとは思うけど、やっぱりできは良くないよ。何かやろうとしたときに、把握しておかなければならない裏事情(バックエンドでどのような処理が自動的に行われるか)が多すぎ。しかも、裏事情をわかっていないと、ちゃんとしたプログラムが書けないし。自動的に行われる部分と、プログラマがコントロールしなければならない部分の切り分けが、直観的じゃないんだよな。
でも、.NETの言語仕様およびクラスライブラリはやっぱりできがいいなー。.NETでWebアプリを作る時って、標準的な(VisualStudio .NET+各種コントロールを使った)開発を行うよりも、自前のWebアプリ用クラスライブラリ(requestとresponseを直接扱う簡単なフレームワーク)を使って開発した方が、最終的な効率は上のような気がする。
2005-01-20 [長年日記]
_ rss_recentを改造してcontent:encodedを表示するようにしてみた (02:46)
MMのRSSをtDiaryに取り込む際に、rss_recentを改造してcontent:encoded部分だけを出力するようにしたプラグインを通すようにしてみた。こうやってみると、MMの出力するcontent:encodedをもうちょっとclassで装飾しておきたくなるな。
_ やっぱり (08:34)
手入力で本文にプラグインを埋め込むのではなく、日ごとのフッタ(add_leave_proc)でその日のメモを自動的に埋め込むようにしてみた。
_ ところで (16:08)
山田BBSはどこに行ってしまったんでしょう?
_ 2万円だってよ (17:38)
そういや今日オクサンが下の子供をウイルス検査に連れて行ったんだけど、ロタウイルスの検査は無料(というか乳児医療で保険適用)だったんだけど、ノロウイルスの検査は2万円(保険適用外)&1週間くらいかかると言われたそうな。しかも、「こんな元気なのに、ノロウイルスに感染しているなんてありえん」と言われたんで、結局ロタの検査だけ受けて帰ってきたとか。ロタの検査は1日で結果が出るんだってさ。
2005-01-21 [長年日記]
_ 負荷状況は? (11:46)
さて、MM にボコボコ URL を追加してってるんですけど、このまま何も考えずに追加してって大丈夫なんでしょうか? 量が増え過ぎて負荷をかけちゃうのも申し訳ないなと思いますので。
メモの量が増えたところで、負荷的には大したことないです。というか、blogmapが扱っているデータ量に比べれば、MMのデータ量は桁が違うんで(現時点でMMに登録されているメモ数は1000件くらい。blogmapは、RSSアイテム数だけでも1000万件くらい)んで、相対的にMMのデータ量は負荷的にはあまり問題になりません。
ただ1470.netのサーバー全体としては、結構微妙な負荷状況で稼働し続けているので、親亀がこけるとみなこける可能性はあります。ですから、メモデータについてはRSSリーダー等を使って、ローカルにコピーを保存しておいた方がいいかもしれません。そのうちexportの機能も用意するつもりですけど、結構先になりそうなんで。
サーバー負荷の状況は、1470.net以下にアクセスしたときの体感速度でわかると思うんで、やばそうな気配がない限りはばりばり使ってもかまわないです。あと、新着メモのRSSは追加しておきました。
_ 自宅作業 (12:07)
子供が登園停止中なんで、自宅作業。子供が寝ている間しかまともに作業できないんで、やばい仕事が積まれている現状では結構きつい。ちなみに、俺がネット上にたくさんものを書いているときほど、仕事が詰まっているときの可能性が高いのですよ。ちなみに今朝ロタウイルスの検査結果を聞いてきたら、陰性だった。けど、弱っているときに保育園に行くとまた別の風邪をもらってくるから、完全に元気になるまで休ませておいた方がいいですよ、という医者の診断。
_ メモを介したゆるやかなコミュニケーション (12:22)
旧blogmapでは各URL、メディア詳細ページにコメント機能(掲示板)をつけていたけど、1470.netに移行する際に削除した。コメント機能は、ほとんどがだべり場か宣伝場としてしか使われず、私が見たいような情報がほとんど集まらなかったし、そういう使われ方が多いとどうしても管理コストが高くなってしまう(荒らし対策とか)。
で、最初はTypeKey認証付きのコメント機能に変えようかとも思っていたんだけど、コミュニケーションの場として使いやすい掲示板的機能を用意してしまうと、認証があったところで結局は管理コストが高くなってしまうだろうということで、単純なコメント機能を復活させるのはやめた。
で、つけたのがメモ機能だ。メモ機能では、メモとメモは直接的な対話関係にならない。ある検索軸においては、同じような話題のメモは近い位置に表示されるであろう、程度の距離感だ。コミュニケーションを取ろうと思えば、遠回しに取れなくもないが、あくまでも直接的な対話ではない。この程度の距離感がちょうどいい気がした。
これはある意味、trackbackによる直接的なコミュニケーション(blog的)ではなく、refererを使った間接的なコミュニケーション(Web日記的)に近いかもしれない。つながろうと思えばつながれるが、気にしなければそのままスルーすることもできる。ネット上でのすべてのやりとりに正面から向き合っていたのでは、あまりにもコストがかかりすぎる。相互の関係性を認識するための情報を、あまり押しつけがましくない範囲で、知ろうと思った人には手軽に提供する。
1470.net上にあるサービスのコンセプトは、現在そんな感じになっているっぽい気がする。というわけで、MMはそういう方向のインターフェースをもうちょっと増やしていく予定ですよ。現在考えているのは、「クリッピングサービス」のコメントで書いたような特徴語を使った類似検索によるメモおよび人のマッチング情報の提供あたり。
_ VB.NETとObject Pascalを交互に触りつつ (18:13)
息抜きでPHPとRubyを触っていると、だんだん何が正しくて何が間違っているのか、わけわからなくなってくるな。if文すら一発でかけねーよ。
2005-01-22 [長年日記]
_ iEPGtoMMの使い方 (00:58)
MMのサイドバーのbookmarkletにiEPGtoMMというブックマークレットを追加しました。これは、iEPG対応テレビ番組サイトにあるiEPGデータから、「番組名」「放送局名」「放送時刻」を取得し、それを元にMMでメモを取るためのbookmarkletです。
使い方は、
- iEPGtoMMをブラウザのブックマークに登録する
- iEGPに対応したテレビ番組表サイトを開く(たとえばテレビ王国とか)
- 気になるテレビ番組に関するiEGPリンクが用意されているページを探す(テレビ王国の場合は、「iEPGで予約」のような画像ボタンになっていたりする)
- iepg2mmを実行する(と、そのページ上のすべてのリンクが、MMのiEPG登録ゲートウェイアドレスを介した内容に書きかわる)
- iEPGリンクをクリックすると、その番組に関するメモを投稿するページが表示される
なんて感じです。
ちなみに、パーソナライズページなど、そのブラウザ環境のみでしか利用できないURLにあるiEPGデータは判別できないので、そのあたりを注意してください。適当に試してダメだった場合は、ログアウトしてから使ってみてください。
以下、bookmarkletをSleipnirのスクリプトに変換したもの。処理内容はbookmarkletと一緒です。
var pnir;
var document;
var id;
pnir = new ActiveXObject("Sleipnir.API");
id = pnir.GetDocumentID(pnir.ActiveIndex);
document = pnir.GetDocumentObject(id);
if (document == null) {
pnir.MessageBox("Document オブジェクトを作成できません");
}
else {
// TODO: コードをここに記述してください。
e=document.getElementsByTagName('A');
for(i=0;i<e.length;i++){
if (e[i].href.indexOf('1470') < 0) {
e[i].href='http://1470.net/mm/iepg_form.html?url='+escape(e[i].href);
e[i].target='_blank';
}
}
document = null;
}
pnir = null;
_ DVD-RAMが壊れた (21:20)
RD-X5を買ってRD-X2をムスコのお下がりに出したけど、スカパー!はRD-X5にしかつないでいないんで、子供用のスカパー!番組はRD-X5で録画し、5倍速のDVD-RAMを使ってRD-X2にコピーしてやっていた。
RD-X2は5倍速DVD-RAMには対応しておらず、5倍速DVD-RAMを入れると「ディスクが汚れているから、書き込みできないよ」という警告が出る。それでも読み込みはできるんで、RD-X5で書き出してRD-X2で読み込む用途では重宝していた。
ただ、RD-X5で書き込みしかしていないと、RD-X2ではいちいち「このディスクは、ライブラリに登録されてないよ。手動ライブラリ登録してね」という警告も出て、2回警告ダイアログをキャンセルしなければならないのがうざい。ので、言われたとおりにRD-X2で手動ライブラリ登録というのをしてみた。
ところ、DVD-RAMが壊れた。RD-X5で書き込みもフォーマットもできないようになり、PCのDVD-RAMドライブでも書き込みもフォーマット(論理)ができないようになり、PCで物理フォーマットをしようとしても、長々(1時間半くらい)と物理フォーマットを行った末に「書き込みできません」というエラーが出る。
このDVD-RAMを復活させる方法ってあるんですかね? もう思いつく方法はないんだけど。RD-X2が手動ライブラリ登録をする際に、CPRMとかメディア特有の情報を記録している部分を壊しちゃったんだろうか。
_ rel="nofollow"対応 (23:16)
なんとなく、tDiaryをrel="nofollow"に対応させてみようかと思ったけど、肝心のREFERER周りがどうなっているのかよくわからなかったんで、コメントとtrackbackだけrel="nofollow"に対応させてみた。現時点で急いで対応させてもなんも意味がないだろうから、本家で正式に対応される(かどうか知らないけど)のを待った方がいいだろうけど、物好きな人向けに一応差分を公開。
diary.rhtml.diff
31c31 < <%= comment.body.make_link.gsub( /\n/ , "<br>" ).gsub( /<br><br>\Z/, '' ) %> --- > <%= comment.body.make_link( TRUE ).gsub( /\n/ , "<br>" ).gsub( /<br><br>\Z/, '' ) %>
tb-show.rb.diff
133c133
< r << %Q!\t\t\t\t<span class="commentator blog"><a href="#{ CGI::escapeHTML( url ) }">#{CGI::escapeHTML( a )}</a></span>\n!
---
> r << %Q!\t\t\t\t<span class="commentator blog"><a href="#{ CGI::escapeHTML( url ) }" rel="nofollow">#{CGI::escapeHTML( a )}</a></span>\n!
172c172
< r << %Q!\t\t\t\t<span class="commentator trackbackblog"><a href="#{ CGI::escapeHTML( url ) }">#{ CGI::escapeHTML( a )}</a></span>\n!
---
> r << %Q!\t\t\t\t<span class="commentator trackbackblog"><a href="#{ CGI::escapeHTML( url ) }" rel="nofollow">#{ CGI::escapeHTML( a )}</a></span>\n!
tdiary.rb.diff
30c30
< def make_link
---
> def make_link (ext = FALSE)
37c37
< gsub( r ){ $1 == $2 ? "<a href=\"#$2\">#$2</a>" : "<a href=\"mailto:#$4\">#$4</a>" }.
---
> gsub( r ){ $1 == $2 ? "<a href=\"#$2\"" + (ext ? " rel=\"nofollow\"" : "") + ">#$2</a>" : "<a href=\"mailto:#$4\">#$4</a>" }.
2005-01-23 [長年日記]
_ tDiaryでpluginからLast-Modifiedを変更する方法 (01:52)
MMのRSSをプラグインで読み込むようにしているんだけど、どうやらRSSのキャッシュが更新されても、tDiaryのHTMLが返すLast-Modifiedが変わらないらしく、スーパーリロードしないと新しいRSSの内容に切り替わってくれない。RSSのキャッシュのmtimeがその他のmtimeよりも新しい場合は、tDiaryの返すHTMLのLast-ModifiedをRSSのキャッシュのmtimeで上書きしたいんだけど、どこに何を渡せばいいんだろう?
_ MY listバックアップ (04:04)
MMのMY listに登録している全データをバックアップする機能を用意しました。configにリンクが用意されていますが、
で自分のMY listに登録されているデータをすべてダウンロードすることができます。データ形式をどうしようか迷っていたんだけど、ひとまず汎用性が高そうだろうと言うことで、mode=xmlで出力するRSSを採用しています。
バックアップデータは1日1回のみ更新されます。今のところ朝9時に設定していますが、更新時間は多少変動するかもしれません。
_ 休日出勤 (14:32)
月曜も休まなければならない気配であることを考えると、今日でいろいろめどをつけておかないとやばいんですが。
_ iPodが壊れた (20:00)
まだ4、5時間分はバッテリーが残っているはずなのに、突然ぷちっと音がとぎれた。画面を見ると、バッテリーマークが?付きで点滅している。バッテリーが認識できなくなっているっぽい? ボタンを押してもUSBケーブル(電源代わり)をつないでも反応なし。
ネットを探したらMENU+SELECTでリセットがかかると書いてあったんで、試してみたところ、なんとかリセットはかかった模様。ただし、バッテリーメーターは空の状態で、電源ケーブルをつながなくても再生ができている、という妙な状況。やっぱりバッテリー情報が取得できていないのかな。で、しばらく(1時間くらい)聞いていたらまた同じ症状になって止まった。
このiPod、今までもときどき、突然画面が「写真の取り込み」に変わって再生が停止することがあったんだよな。やっぱり初期不良品だったか。まだ買って一ヶ月以内だから余裕で保証期間内なんだけど、一ヶ月弱経ってから持っていったんじゃ初期不良交換じゃなくて修理になっちゃうかなー。
_ 気力が尽きた (21:30)
帰ろう。
_ みぞれだ (21:57)
都内はみぞれが降ってますよ。
2005-01-24 [長年日記]
_ うわー、やっちゃったよ (12:11)
メール周りの失敗は取り返しがつかないのがきつい。(状況によっては)実働テストもできないしなー。
_ ドキュメント’05 「急増!ネット依存の恐怖」 (13:18)
特殊な人間を引っ張り出してきて一般論に敷衍するんじゃねー、とか、あいつらはたまたまネットがあったからネットをやっているだけでそうじゃなければほかのものに依存していたんじゃねーか、とか、ゲーム脳キター!、とか、ネットはバーチャルじゃなくてふつうにリアルなんだよ、とか、この番組のステレオタイプな話の持っていき方は今の世の中を語るにはあまりにも古くさすぎる、とか、いろいろ言いたいことはあるんだけど、でもまあ実際問題としてネットは中毒性・依存性のある危険なものであるという観点から、いろいろ研究することは必要だよね。でも、いくらなんでもこの番組の内容はチープすぎだ。
_ rel="nofollow"対応の続き (13:51)
(追記)まず最初に「tDiary: rel="nofollow"対応は慌てる必要なし」をどうぞ。
referer周りは、標準状態で00default.rbに書かれているのね。で、さらにうちの場合はdisp_referrer.rbを使っているんで、そっちも変える必要があった。そのほかにもreferer周りをいじるプラグインを入れている人は、その中身も変える必要があるんだろうな。えーっと、これで外部から受け入れたリンクの書き換えに漏れはないかな?
00defaul.rb
300c300
< result << %Q[<a href="#{CGI::escapeHTML( ref )}" title="#{CGI::escapeHTML( disp_referer( @referer_table, ref ) )}">#{count}</a> | ]
---
> result << %Q[<a href="#{CGI::escapeHTML( ref )}" title="#{CGI::escapeHTML( disp_referer( @referer_table, ref ) )}" rel="nofollow">#{count}</a> | ]
310c310
< result << %Q[<li>#{count} <a href="#{CGI::escapeHTML( ref )}">#{CGI::escapeHTML( disp_referer( @referer_table, ref ) )}</a></li>\n]
---
> result << %Q[<li>#{count} <a href="#{CGI::escapeHTML( ref )}" rel="nofollow">#{CGI::escapeHTML( disp_referer( @referer_table, ref ) )}</a></li>\n]
disp_referrer.rb
869c869
< result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" title="#{DispRef2String::escapeHTML( a[2][0][1].title )}">#{a[0]}</a> | ]
---
> result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" title="#{DispRef2String::escapeHTML( a[2][0][1].title )}" rel="nofollow">#{a[0]}</a> | ]
905c905
< result << %Q[<li><a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}">#{DispRef2String::escapeHTML( a[2][0][1].title )}</a> ×#{a[0]}</li>\n]
---
> result << %Q[<li><a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" rel="nofollow">#{DispRef2String::escapeHTML( a[2][0][1].title )}</a> ×#{a[0]}</li>\n]
907c907
< result << %Q[<li><a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}">#{DispRef2String::escapeHTML( a[1] )}</a> ×#{a[0]} : #{a[2][0][0]}]
---
> result << %Q[<li><a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" rel="nofollow">#{DispRef2String::escapeHTML( a[1] )}</a> ×#{a[0]} : #{a[2][0][0]}]
910c910
< result << %Q[, <a href="#{DispRef2String::escapeHTML( b[1].url )}"#{title}>#{b[0]}</a>]
---
> result << %Q[, <a href="#{DispRef2String::escapeHTML( b[1].url )}"#{title} rel="nofollow">#{b[0]}</a>]
919c919
< result << %Q[<a href="#{DispRef2String::escapeHTML( b[1].url )}"#{title}>#{b[0]}</a>]
---
> result << %Q[<a href="#{DispRef2String::escapeHTML( b[1].url )}"#{title} rel="nofollow">#{b[0]}</a>]
939c939
< result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}">#{DispRef2String::escapeHTML( a[1] )}</a>]
---
> result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" rel="nofollow">#{DispRef2String::escapeHTML( a[1] )}</a>]
945c945
< result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}">#{DispRef2String::escapeHTML( a[2][0][1].title_ignored )}</a>]
---
> result << %Q[<a href="#{DispRef2String::escapeHTML( a[2][0][1].url )}" rel="nofollow">#{DispRef2String::escapeHTML( a[2][0][1].title_ignored )}</a>]
950c950
< result << %Q[<a href="#{DispRef2String::escapeHTML( b[1].url )}">#{DispRef2String::escapeHTML( b[1].title_ignored )}</a> ×#{b[0]}]
---
> result << %Q[<a href="#{DispRef2String::escapeHTML( b[1].url )}" rel="nofollow">#{DispRef2String::escapeHTML( b[1].title_ignored )}</a> ×#{b[0]}]
2005-01-25 [長年日記]
_ 複数ジャンル指定に対応&検索機能を追加 (02:57)
MMで、メモに複数ジャンル指定をできるようにしました。「|」で区切ってキーワードを書くことで、そのメモは複数のジャンルに所属することになります。
また、ユーザーをまたがった検索機能を追加しました。メモ種類、ジャンル、評価を使って検索ができます。こちらもジャンルを「|」で区切って入力することで、複数ジャンルのor検索となります。標準で返すRSS(mode=rss)は、MM内のパーマリンクをrdf:resourceとして持ちますが、mode=xmlと書き換えることで、メモ対象のURLがrdf:resourceに入るようになります。
という機能を持たせちゃうと、あまりにもdel.icio.usっぽくなっちゃうんでやめておこうかと思ってたんだけど、やっぱりあった方が便利だよね。
こうなってくると面倒くさいけど、今まで入力したジャンルを一通り(検索で意味が出てくるように)修正した方がいいんだろうなー。バーストキーワード(ジャンル)とかもそのうち追加しますよ。
_ いまだゲリゲリ中 (16:57)
昨日は下の子が相変わらず体調不良(下痢&微熱)のため休んだんだけど、さらに上の子までがゲリゲリになりやがった。アンド、俺も今朝方からかなり下し気味。アンド、どうやらオクサンもそうらしい。なんかもう蔓延って感じですよ。家全部を消毒しないとどうともならないんじゃなかろうか。今まで有給ってあまり使ってなかったけど、今年はすげー勢いで減っていくなー。どうせ家で仕事しているから全然休んだ気がしないけど。
_ 類似メモ検索 (22:11)
実験的に、内容の類似するメモを検索する機能をつけてみました。[類似メモ]というリンクをクリックすると、そのメモに内容が似ているっぽいメモを一覧表示します。検索インデックスの更新タイムラグがあるので、登録したしばらくの間は検索が効きません。
2005-01-26 [長年日記]
_ キーワード検索でウォッチする場合 (12:19)
「検索結果をRSSでウォッチするという方法」で結城さんがblogmapのキーワード検索結果をRSSリーダーでウォッチする方法を紹介されてますけど、そういう用途の場合はblogmapの検索(http://1470.net/bm/search)ではなく、newswatchの検索(http://1470.net/nw/search)を使った方がいいです。
というのは、blogmapの検索はキーワードマッチ度の順でソートされているので、該当キーワードを含む新しい記事が登録されたとしても、トップ50件に登場しない可能性があります。一方、newswatchの検索は同じ検索データベースに対する検索結果を、日付が新しい順にソートして表示しています。ですから、そのキーワードを含む新しい記事が登録されると、確実にヒットするはずです。
基本的にバックエンドの処理やデータベースはblogmapとnewswatchは同じものなんだけど、それを「注目度・マッチ度の順にソートしたものがblogmap」、「単純に新着順にソートしたものがnewswatch」なんですね。すでに話題になったもの(多数の人のフィルターを通ったもの)をチェックしたければblogmap、これから話題になりそうなもの(まだほとんどフィルターを通っていないもの)をチェックしたければnewswatchという使い分けのイメージ。
_ 地図情報に関するメモ (21:05)
「Yahoo! 地図情報」の詳細地図ページ(URLに緯度経度情報が含まれるもの)でクリッピングを実行すると、その場所に関するメモを取れるようにしてみました。けど、ちゃんと動くかどうかはまだ真面目に検証していません。試しに使ってみてください。
_ iCalendar出力やろうかな (22:34)
MMの予定表の出力をiCalendar形式でも出すようにしておくと、オンラインのiCalendarデータをミックスして扱えるスケジュールソフトなんかで、手軽に公開スケジュールを管理できてちょっといいかもしれない。と思ったんだけども、iCalendarの仕様が思ったよりも複雑で面倒くさそうだったんで、ひとまず思いついただけ〜。でも忘れないようにここに書いておこう。
2005-01-27 [長年日記]
_ mod_rubyをインストール (13:40)
いろいろ重い処理を追加しすぎてプロセスがつまり気味だったんで、「高速化ガイド(管理者向け)」を参考に一通り高速化してみた。これでちょっとは軽くなるかなー。
うわだめだ
なんか状況が悪化したよ。mod_rubyハズし。やばいな、そろそろサーバーが限界に達したかも。そろそろ機能を増やすのはやめて、最適化の努力をするべきか。それともサーバーを増やすことを考えるか。
_ RSSジャンル検索 (18:51)
新機能追加はやめようと心に誓ったばかりなのに、「はてなのキーワードとtechnoratiのタグ 08:26」を読んで反射的に作ってしまった。RSSアイテムのタイトルの先頭が「[」で始まっている場合、「[」と「]」で囲まれている部分をその記事のジャンル名称であるとして、記事をジャンルで検索する機能。たとえば、「iPodで検索」とか「tDiaryで検索」とか。まだ検索インデックスが作りかけなんで、ちょっと古い記事しか検索に引っかからないかも。ああこれでまた負荷が高まるなー。
検索インデックス生成が終わった
で、これいいなー。Planetほにゃらら系って、各サイトに上記ルールでタイトルにカテゴリ表記を入れてもらって、それをキーに分類表示するのが一番まっとうなんじゃないか。
RSS出力もそのうちつけます。けどその前に安定運用できるレベルまで全体の負荷を調整しないと……。
dc:subjectは
あの…dc:subjectは…
データ収集の段階で捨てちゃってるんで、DB上に残ってないんですよ……。
強引にdc:subjectをつっこんでみた
今後クロールするデータは(DBスキーマ変更なしで対応するため)、タイトルの頭に無理矢理「[dc:subject]」をくっつけて、dc:subjectも認識できるようにしてみた。けど、いわゆる人間が明示的に付与する「タグ」的なカテゴリーわけと、システムがデフォルトで付与するカテゴリーわけ(が多いような気がするblogツールが吐き出すdc:subject)とは、本当は意味合いが違う気もする。
最近流行のタグってのは、俺が昔WikiLikeで試していた、自分がキーワードだと思う本文中のキーワードをBracketNameとして囲むことによって、そのキーワードをそのテキストにおける重要語と認識し、カテゴリー検索等の目的で使用する、というアプローチに似ている気がする。入力者が入力時に人力指定する非固定のジャンル指定。
2005-01-28 [長年日記]
_ 暫定引っ越し (16:21)
tDiaryと1470.netを同じhttpdで動かすといいことがなさそうなんで、tDiaryを別マシンに移動。暫定的にhttp://tdiary2.ishinao.net/というURLにリダイレクトをかけてますけど、そのうちhttp://tdiary.ishinao.net/でアクセスできるようになると思います。
2005-01-29 [長年日記]
2005-01-30 [長年日記]
_ 『blogで書く』を追加 (00:40)
blogmapの[もっと詳しく]ページに、[blogで書く]というリンクを追加しました。要は、blogmapに登録されている記事・メディアに関して、自分のblogで記事を書くためのHTMLテンプレート作成機能です。それほど利用者は多くないとは思いますし、あまりデザインも真面目にやってませんが、便利なようなら使ってみてください。
_ やっぱりダメだ (19:00)
ruby 1.9を入れてrubyソースコード解析に対応させようと思ったんだけど、Ripperのparseとiconvの変換でこけるんで、まともにgonzui(-import)が動かないなー。もしかして昨日の段階のruby-1.9-todayだとダメとか?
ひとまず
iconvの方は、windows-31jをcp932にすれば通るっぽい? ただ、evalとかstrscanとかがみんなこけるのは、よくわからないな。Rubyの開発系MLとか購読しておかないとダメか。
2005-01-31 [長年日記]
_ 付箋が貼れるといいなー (13:17)
Ruby 1.9をうまく動かせないんで、(Rubyのソースに関しては)パッケージマネージメントとインクリメンタル検索機能しか使えていないんだけど、それだけでも結構便利。あとできれば、これに付箋が貼りたい。付箋にコメントをつけて、さらに関連するコードにリンク(「(パッケージ名):ファイル名:行」なんて表記かな)を張ったりとかすると、解析とかレビューですごく使えそうだ。wema2がリリースされたら、gonzuiと重ねて動かすのにトライしてみたいなー。
_ PHPのparser (15:58)
RubyでPHPのパーサーを書くのは面倒くさそうだけど、PHPが存在する環境では、PHPのtokenizerをそのまま使うようにすれば、PHPに対応するのも簡単そうだなー。ひとまずPHPでparseした結果を適当なフォーマットで出力するコードだけ書いてみた。
<?php
function tokenize($source) {
$tokens = token_get_all($source);
$parsed = '';
$result = '';
foreach ($tokens as $token) {
if (is_array($token)) {
$type = $token[0];
$text = $token[1];
} else {
$type = 0; //literal?
$text = $token;
}
echo 'LINE: '.count(explode("\n", $parsed)).' LENGTH: '.strlen($parsed).' TYPE: '.$type.' TEXT: '.$text."\0";
$parsed .= $text;
}
}
if (isset($argv[1])) {
$source_file = $argv[1];
if (file_exists($source_file)) {
$source = file_get_contents($source_file);
} else {
die('FILE NOT EXISTS: '.$source_file);
}
} else {
$source = '';
$fp = fopen('php://stdin', 'r');
if ($fp) {
while (!feof($fp)) {
$source .= fread($fp, 4096);
}
fclose($fp);
}
}
tokenize($source);
?>
あとは、PHPのtypeで必要なものをgonzuiのtypeに読み替えたりしつつ、Ruby側でこの出力を取り込んでいけばいいのかな。あるいはPHPでRubyのソースコードを出力して、そのままevalさせたりとかできるんだろうか?
ただ、Rubyがわからなくてlangscan以下のディレクトリを見ても、何をやってるのかよくわからない。一回ちゃんとRubyのお勉強をしないと、いろいろ不都合(やりたいことがすぐにできない)が多いなー。



Before...
_ ishinao [おお、もろそのもののツールがすでにあったんですね。情報ありがとうございます。 (というか、「rss imap4」で..]
_ otsune [>ただmobileimapって本文中のリンクをたどれない 単純にREFFER漏れ対策だから、ime.nuみたいなのを..]
_ ishinao [そうですね。自前で安全なリダイレクターを用意して、mobileimapのメール本文生成ロジックをいじって、URL文字..]