2008-03-27

IE7のフィードが自動更新されない

alezo(ThinkPad X31)がXPの頃にIE7を入れたときも、alezoをVistaにしたときも、IE7のフィード機能は普通に働いていて、それがどうした、こんなの動いてて当たり前だろうくらいにしか考えていなかった。その後、「会社のWSUSでお手軽に脆弱性対策ができる唯一のタブブラウザ」ってことで、会社のXPにIE7を入れたら、ちっとも自動でフィードを更新してくれなくてがっかり、というかびっくり。でもまぁ、手動で「すべて最新の状態に更新」すれば使えないこともないので、さほど気にしていなかった。だいたい、それまでFirefoxにSage入れてRSSを読んでたので、手動で更新というのにさほど抵抗がなかったのだ。

ところが、昨年末に衝動買いしたThinkPad 15周年版X61s。最初っからVistaであるにもかかわらず、自動でフィードの更新をしてくれない(もちろん、「フィードの更新の確認を自動的に行う」にチェックは入っている)。これは結構頭にきた。

なぜか。

Vistaにはサイドバーなるものがあり、そこで、「フィードヘッドライン」が表示できる。明示的にフィードを見に行かなくても、新しい未読エントリはヘッドライン上でボールドになって現れてくる。ふと気が付くと画面の脇に新しいニュースが流れてるのだ。Vistaにしたalezoで、こういう環境に慣れてしまっていたため、自動でフィードが更新されないと、非常に腹立たしいのである。XPでなんとも思わないのは、「フィードヘッドライン」が無いからだろう。

てなわけで、なんで自動で更新されないのかズッと気になっていた。ググったりして調べても、MSの

  1. Internet Explorer 7 で RSS フィードが更新されないことがある
  2. Internet Explorer 7 で RSS フィードが一覧に表示されない、または RSS フィードを購読できない

くらいしかマトモな情報が見当たらない。で、この二つとも、まったく役に立たないから腹が立つ。Feedsフォルダの削除やフィードのエクスポート/インポートは何回やったことか。あげくは、一気にインポートするのがマズいのかと一個一個追加したりしてみたり。まったく、ほんとに、これっぽっちも役に立たなかった。

X61s上の自分のアカウントは、Windows転送ツールでアカウント情報をAlezoからコピってきたものだ。なら、新規にアカウントを作り、まっさらなプロファイルから始めれば、フィードも自動更新されるかもしれない。なんとも根拠薄弱な仮説を立てて、あれこれアカウントを作ったりして実験を繰り返すも、まったく更新される気配はない。が、この一連の作業をしているうちに、UACで使うために用意した Administratorsに属する管理者アカウントではフィードが更新されていることを発見。おいおい、フィードの自動更新には特権がいるのか? とどんどん後ろ斜め向きな仮説を積み上げていくことに。もちろん、特権持ってるアカウントを新規に作っても、自動更新されたりはしなかったので、この仮説は全否定されることになるのであるが。

そんな無駄な努力を繰り返していた今日の朝、なんの気なしに検索していて、「Windows Vistaでフィードが更新されなくなったときは」てなタイトルのBlogを発見。MS RSS BlogのFeeds not updating?の紹介である。要は、msfeedssync がきちんと起動されないからというもの。各種操作方法が載っていることもあり、これがビンゴな情報だった。

自アカウントでschtasks /queryを実行しても、User_Feed_Synchronization-{SID?}は現れてこない。管理者アカウントで試すと「次回の実行時刻」とともに現れる。で、その時刻になるのを自アカウントで待ち、イベントログを調べると、

ログの名前:       Microsoft-Windows-TaskScheduler/Operational
ソース:           Microsoft-Windows-TaskScheduler
日付:             2008/03/27 8:04:59
イベント ID:      332
タスクのカテゴリ: 起動条件が満たされていません。ユーザーがログオンしていません
レベル:           警告
キーワード:         
ユーザー:         SYSTEM
コンピュータ:     nanaca.noroi.jp
説明:
起動条件が満たされたときにユーザー "nanaca\[管理者ID]" がログオンしていなかったため、タスク スケジューラはタスク "" を起動しませんでした。ユーザー操作: ユーザーがログオンしていることを確認するか、ユーザーがログオフしているときに起動を許可するようにタスクの定義を変更します。

てなものを発見(このイベントログ、ローカル>アプリケーションとサービスログ>Microsoft>Windows>TaskScheduler>Operationalにある。XPと違ってVistaにはイベントログが山のようにある。こんなの探し出すのは素人にゃ無理だろう。)。きっちり5分おきに出ている。これが原因だ。

MS RSS Blogに書かれていたのとは違う原因だが、タスクスケジューラの不具合でmsfeedssync.exeが実行されないが故に、フィードが更新されていかないという部分は同じである。

管理者アカウントでのフィードの自動更新を止めると、このエラーは発生しなくなった。その状態で、自アカウントから

msfeedssync disable
msfeedssync enable

を行うと、schtasksの出力にUser_Feed_Synchronization-{SID?}が現れた。5分後のスケジュール実行もエラーはなく、そのまま「次回の実行時刻」まで待っていると、きっちりフィードが更新されるようになった。万歳!

たぶん、こうなれば、管理者アカウント側でフィードの自動更新を元に戻しても大丈夫だろう。きっと「なにか」が引っかかってたのだ。でもまぁ、管理者アカウントではフィードは読まないので元には戻さないけど。

どうでもいいことだが、上のイベントログを見てわかるとおり、この作業は朝の9時前までやっていた。なんせ「次の更新時刻」まで待たないと直ったかどうか判別がつかないから、なんだかんだ試してるうち時間が過ぎてったのだ。もちろん会社は遅刻である。

ちなみに、会社のXPでの原因は、MS RSS Blogに書かれていたものとほぼ同じだった。schtasksでエントリは出てくるものの、「状態」欄にエラーが出ていた。こちらは、msfeedssyncのdisable/enableでは直らなかったため、いったんスケジュールエントリを、schtasks /Delete /TN タスク名で削除した後、msfeedssync enableで正しくスケジュールされるようになった。これまためでたしめでたしである。

ところで、フィードの更新はIE7とは別のmsfeedssyncが行うため、IE7が起動されてなくても、サイドバーの「フィードヘッドライン」は更新されていく。なるほど、確かにこうなってる方が便利だよな。ちょっとだけ納得。けど、こんな不具合が高い確率で発生する以上、実装方法は見直すべきだろう。

2008-03-17

Ten Nori! 更新

あー、なんか、こんなこと書くのひさしぶりだなぁ。

eso aparte Ten Nori!

この季節恒例、アレぞうの花粉症ネタ。とっても辛いはずなのに、どうしてもその性格からか同情してもらえない、旬の過ぎちゃったかわいそうな人。人気投票もさんざんだし。

んでもって黒魔術。「すべての生き物」ってことは、花粉をバラ撒いてる杉やら檜やらも花粉症になるってことだと気づいてるか? 間違いなく「跳ね返って」くるぞ。さらにもって酷い症状に… あぁ、ヒドい目に遭ってるところが脳裏に浮かぶ。知らず頬が緩む。おかしいなぁ、俺ってアレぞうのファンのはずなのに。

閑話休題

[[数年前|http://www.noroi.jp/?date=20050318#p01]]に発症したはずの、うちの抗体くん。あの年以降、まったく仕事をしてなくて休眠状態。ええっと。直った? そんなのありえんはずなんでは? いったい、どうしたっていうんだろう。花粉症#自然治癒率 | Wikipediaの記述を信じるなら、今年症状がでなかったら自然治癒と呼んでいいらしいんだけど、さて。

2008-03-08

Baiduspider

久々にapacheのアクセスログをあれこれ眺めてたら、百度のクローラがやってきてるのに気づいた。百度からのアクセスはpfで一律に落としてたはずなのに、これはどうしたことかと思いきや、ネットワークブロックを新たに取ってたのね。

クローラの行儀を良くしますなんつってるけど、頻度が下がっただけ。しかも、うちではBaiduspilderに対して403返してるっつーのに、懲りる事なく数分おきにやってきてやがる。RFCくらい読めっつの。

というわけで、pfに喰わせるブロックアドレスに、122.152.140.0/23を追加。

122.152.128.0/23        # BAIDU-NRT-NETBLK01
122.152.140.0/23        # BAIDU-NRT-NETBLK02

BAIDU-NRT-NETBLK03はまだ無いみたいだけど、また増えるんだろうな。

tDiaryバージョンアップの備忘録

ようやく2.2.1に上げた。FreeBSDのtdiaryのportsは/usr/local/share/examples/tdiaryが書き変わるだけなので、実際のインストールは自前でやる必要がある。もしかしてやり方があるのかもしれないが知らんので。まぁ、手動でやる時の手順。

portupgade

まぁ、これはやっておくだけ。

japanese/tdiaryにしてるんだけど、www/tdiaryとの具体的な違いがよくわかない。www/tdiary-develは死んでるっぽいな。

データをコピー

とりあえず、作業用のエリアにデータをコピー。ここでは、$DOCUMENT_ROOTと同じ層にtdiaryという名のままコピってしまう。どのみち、apacheからは見えないし。

cd ${DOCUMENT_ROOT}の一個上
sudo cp -p /usr/local/share/examples/tdairy .
cd tdiary

index.rbを修正

[[以前|http://www.noroi.jp/?date=20051225#p01]]からやってる作業。GET,POST,HEAD以外のリクエストには405を返すためのもの。2.2.1でのパッチはこんな。「とりあえず」といいながらもう4年かぁ。

tdiary.confをマージ

@data_path/tdiary.confがあれば、$DOCUMENT_ROOTのこいつをあれこれする必要はなさげなんだけど一応。新旧の.sampleの差分を、直しちゃdiffかけ、目検しながら取り込む。

自前のデータを移動。

apacheを止め、自前のデータを旧$DOCUMENT_ROOTから移動してくる。

sudo /usr/local/etc/rc.d/apache22 stop
cd ../data
sudo mv d favicon.ico index.rdf okota* go robots.txt ../tdiary

えいやで、作業エリアのディレクトリ名を本物に差し替え、apacheを起動する。

cd ..
sudo mv data data.old
sudo mv tdiary data
sudo /usr/local/etc/rc.d/apache22 start

普通なら、外から見えないようにしてテストするもんだけど、そんなことしなきゃいけないようなサイトじゃないので、えいや。

様子見

ん? 曜日が「J」になってるな。

sudo cp -p data.old/misc/plugin/jdate.rb data/misc/plugin/

リロード。うんうん直った直った。う〜む、いいかげんだ。