2012年6月30日土曜日

Yahoo! Pipes の XPath Fetch Page でフィードを出力してないサイトからRSS を配信する (2)

Yahoo! Pipes の XPath Fetch Page でフィードを出力してないサイトからRSS を配信する のつづき

1. パイプをどのサイトでも使えるように変更する

前回、フィードを配信していない「特定のサイト」から RSS を配信した。

今回は、上記のパイプを、どのサイトでも使えるように変更した。

SnapCrab_NoName_2012-6-30_12-7-56_No-00

例えば、Yahoo!モバゲー の場合、「○○○○ さんの日記」のページを対象としてパイプを実行する。パイプのフィールドに入力する値は以下の通り。

ブログの各記事へリンクを含むページの URL http://yahoo-mbga.jp/XXXXXX/diary
ブログのタイトル一覧を取得するXPath //li[@class="lv2-lay"]/a
ブログの内容を取得するXPath //li[@class="blk4-lay"]

GREE の場合、「日記」のページを対象としてパイプを実行する。

ブログの各記事へリンクを含むページの URL http://gree.jp/XXXXXX/blog
ブログのタイトル一覧を取得するXPath //h1[@class="title"]/a
ブログの内容を取得するXPath //*[@class="maincol"]//*[@class="content"]
記事から削除する内容(正規表現) <div class="footlink">.*?</div>

Amebaなう の場合は、以下の通り。

ブログの各記事へリンクを含むページの URL http://now.ameba.jp/XXXXXX/
ブログのタイトル一覧を取得するXPath //span[@class="status"]/a
ブログの内容を取得するXPath //li[@class="now"]//p[@class="content"]
記事から削除する内容(正規表現) <span class="status">.*?</span>

以下、作成手順を述べる。

 

2. モジュールを独立させる

SnapCrab_NoName_2012-6-29_12-1-22_No-00最初に、ウェブページから、各記事のタイトルと URL を含むパイプを独立させる。

前回作成したパイプのソースを開き、Save a copy により、新しいパイプを作成する。

Loop モジュールを削除し、Rename モジュールから Pipe Output へパイプを繋ぐ。

 

ユーザからの入力を受け付ける Input モジュール

対象となるブログの URL と、各記事の URL とタイトルを指定するための XPath をユーザが指定できるように変更する。

  • User Input >
    • URL Input モジュール
    • Text Input モジュール

を配置する。

Input 系のモジュールの

  • Name フィールドは、作成したパイプのフォームのパラメータ名となる。
  • Prompt は、フォームにおけるフィールドのラベル名となる。
  • Position は、フォームにおけるフィールドが表示される順番を表す。

次に、Input モジュールから、XPath Fetch Page モジュールのフィールドにパイプを繋げる。

SnapCrab_NoName_2012-6-30_1-17-12_No-00

独立させたパイプは、以下のもの。

 

3. 作成したモジュールを配置する

先ほどと同じく、前回作成したパイプのソースを開き、Save a copy により、新しいパイプを作成する。

  • XPath Fetch Page モジュール
  • Rename モジュール

を削除し、上記で作成したモジュールと置きかえる。

自分で作成したパイプは、

  • My pipes > ブログ記事のタイトルと URL の一覧を取得する

より配置する。

このとき、ユーザからの入力を受け入れるために、User Input より、URL Input, Text Input モジュールを置く。

SnapCrab_NoName_2012-6-30_1-34-46_No-00

Loop モジュールで使う、XPath もユーザの入力を受け取るようにする。

SnapCrab_NoName_2012-6-30_1-52-53_No-00

 

4. Regex モジュールで不必要な文字を削除する

上記に加えて、各記事の内容から、特定の文字列を削除するために Regex モジュールを追加する。この際、正規表現で削除対象を指定する。

Operator > Regex を配置し、Loop モジュールの出力を Regex モジュールに入力する。 User Inputs より、Text Input を配置し、Regex モジュールの replace に繋ぐ。

SnapCrab_NoName_2012-6-30_1-57-11_No-00

これで出来上がり。

SnapCrab_NoName_2012-6-30_23-55-56_No-00

2012年6月29日金曜日

メガネの鼻あてを「3D鼻パッド」に交換してもらったら、痛みがなくなった

1. 鼻あてのフレームが曲がり、跡がついた

http://www.jins-jp.com/

JINS via kwout

メガネは JINS で購入している。

先日、メガネをぶつけ、鼻あて部分のフレームが曲がってしまった。そのまま放置していたら、鼻の横にくっきりと跡がつき、触れるだけで痛みを感じる。自分で、曲がったフレームを調整したけれど、どうしても上手く元に戻せない。

自分で直すのは諦め、販売店で直してもらうことにした。

 

2. 3D鼻パッドへの交換は無料だった

久しぶりに店に展示してあるメガネを手にとって見ると、どのメガネも鼻あての形が変わっていた。

自分が使っている鼻あては、以下と同じ形のもの。

新しい鼻あては、「3D鼻パッド」と呼ばれる。

Titan frame|JINS - 眼鏡(メガネ・めがね) によると、

日本人の鼻の形を研究して設計した鼻パッド。端が沿った形は、跡が付きにくくなるように計算されたもの。

http://www.jins-jp.com/titanframe/

Titan frame|JINS - 眼鏡(メガネ・めがね) via kwout

「3D鼻パッド」がついているメガネをかけてみると、鼻あてが当たる部分の圧迫感が少ない。パッドを触ると、柔らかくて、むにょっと少し曲がる。

お店の人に「3D鼻パッド」のかけ心地について尋ねたら、

男性の鼻の場合、大体この鼻あてでフィットします。ただし、鼻の形によっては、このパッドでも、面ではなく点で当たってしまうこともあります。

女性でこの鼻あてが合わない場合、以前の鼻あてと同じ形で、シリコンのものを使います。

とのことだった。

試しに、3D鼻パッドとシリコンのパッドを試したら、どちらも今使っているものより圧迫感が少なかった。ただ、慣れていなかったせいか、鼻あてが当たる部分がベタッとした感触がして気になった。ただし、この感触には翌日までに慣れた。

うれしいことに、鼻あての交換は無料だった。 ^^

 

3. 丁寧な対応をしてくれる店員さんを探す

今回、鼻あてを支えるフレームの曲がりも直してもらった。難しいのは、どの店員さんが丁寧にやってくれるか見極めること。

昔、個人店でメガネを購入していたとき、店主のおじさんは「そこまでしてもらわなくてもいいのに。。」というくらい、完璧にフィットするまで何度もフレームを調整してくれた。お陰でかけ心地に不満を抱いたことはない。

これに対し、JINS で購入したとき、鼻あての部分を調整するアバウトな扱いに驚いた。なぜなら、自分の目の前で、フレームをギュッと押して調整していたからだ。今のメガネは、フレームが金属疲労しにくい素材を使っているのだろうか?

今回は、お願いした店員さんが良かったのか、時間をかけて丁寧に直してくれた。

田舎にある店舗であるためか、接客も店員によってバラつきがある。人を見て、修理をお願いするのが良さげ。

 

4. 青色の光を遮るレンズ

ところで、最近、JINS の宣伝でよく見るのは、PC で作業するときにかける JINS PC。青色の光をカットしてくれるメガネ。

確かに JINS PC で周囲を見渡してみると、眩しさが和らぐ。

同じように、青色の光をカットしているメガネを販売している、別の眼鏡店で JINS PC について尋ねてみた。この店は、価格帯がより高い遮光レンズを扱っている。店員さんの話を総合すると、やはり JINS PC は値段相応のものらしい。

高い性能の遮光レンズは、コントラストを保ちながら、青色だけをしっかりと遮る。健康の人の目なら、JINS PC で十分のような気がした。しかし、羞明などの眼の障害を持っている人には、あまり効果は期待できないようだ。

Yahoo! Pipes の XPath Fetch Page でフィードを出力してないサイトからRSS を配信する

1. Fetch Page から XPATH Fetch Page モジュールへ

http://pipes.yahoo.com/pipes/

Pipes via kwout

Yahoo! Pipes で、フィードを出力してないサイトから RSS を配信するために、Fetch Page モジュールを利用してきた。Fetch Page モジュールは、指定した URL のウェブページを取得するためのモジュール。

現在では、Fetch Page モジュールは、非推奨 (deprecated) となり、代わりに

が登場した。

Fetch Page モジュールは、文字列によりフィードにしたいウェブページの対象を指定した。これに対して、XPATH Fetch Page モジュールは、XPath を利用して指定する。

New Module: XPATH Fetch Page | Yahoo! Pipes Blog によると、

To use the XPATH Fetch Page module, first enter the URL of the site you want. By default, the module will output the DOM elements as items in the preview pane. You can optionally use the “Emit items as string” checkbox if you need the html as a string.

 

2. XPath について

XPathの使い方は、以下を参照

 

3. パイプの例

例えば、Yahoo!モバゲーの日記一覧から、RSS を配信させたいとする。

SnapCrab_NoName_2012-6-27_23-31-48_No-00

作成したパイプは、

全体の構成は下図のとおり。

SnapCrab_NoName_2012-6-29_12-1-22_No-00

以下、作成手順を述べる。

 

4. XPath Fetch Page モジュール

Pipes: Rewire the web にアクセして、Create Pipe ボタンを押す。

最初に、Source > XPath Fetch Page モジュールを配置する。

  1. URL フィールドには、対象となるウェブページの URL を入力する。
  2. Extract using XPath フィールドには、各記事の URL を含んだ記事タイトルを指定する XPath を入力する。
    • //li[@class="lv2-lay"]/a

SnapCrab_NoName_2012-6-27_23-34-25_No-00

 

5. Rename モジュール

作成した XPath Fetch Page モジュールをクリックして選択すると、以下のような出力がされる。

SnapCrab_NoName_2012-6-28_14-45-9_No-00

href は、記事の URL を表す。 content は、記事のタイトルを表す。

この出力を RSS に変換するには、

  • href ⇒ link
  • content ⇒ title

のように変更したい。

RSS(RDF Site Summary)によるサイト情報の要約と公開 によると、

SS 1.0はサイトの情報を簡便に伝えられるよう、次のような簡単な基本構造を持ちます。

http://www.kanzaki.com/docs/sw/rss.html#construct

RSS(RDF Site Summary)によるサイト情報の要約と公開 via kwout

出力を変換するために、Operator > Rename モジュールを配置し、XPath Fetch Page の出力を入力とする。

Rename モジュールのフィールドには、以下のように設定する。

  • item.href ⇒ Rename, link
  • item.content ⇒ Rename, title

SnapCrab_NoName_2012-6-29_1-56-4_No-00

item.href, item.content という値は、Rename モジュールへ入力する前の XPath Fetch Page の出力を見て判断する。(フィールドには、href, content を入力すると、自動的に item. が付けられる。)

Rename モジュールを通すことにより、以下のような出力となる。

SnapCrab_NoName_2012-6-29_2-4-23_No-00

 

6. Loop モジュール

ここまでの操作により、各記事の URL が取得できた。次に、この情報を利用して、記事の内容を取得する。

方法は、Oprator > Loop モジュールを使い、取得した各 URL ごとに、再び Source > XPath Fetch Page モジュールで内容を取得する。

パイプの配置は、Loop モジュールの中に XPath Fetch Page モジュールを置く。

XPath Fetch Page モジュールに設定する値は、

  • URL: item.link
  • Extract using XPath: //li[@class="blk4-lay"]
  • Emit item as String にチェックをつける。

Loop モジュールの出力は、RSS の構造に沿うために、

  • assgin all results to item.description

と設定した。

SnapCrab_NoName_2012-6-29_2-6-57_No-00

これにより、Loop モジュールの出力が以下のようになる。

SnapCrab_NoName_2012-6-29_2-19-18_No-00

後は、このパイプを保存し、実行する。

Yahoo! Pipes の XPath Fetch Page でフィードを出力してないサイトからRSS を配信する (2) つづく…

2012年6月28日木曜日

XPath による要素の指定

1. XPath とは

XML Path Language – Wikipedia とは、

XML Path LanguageXPath; XMLパス言語) は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文である。

例えば、簡単な XPath の指定方法は、

//a

これにより、ウェブページ中の全てのアンカー要素を指定できる。

New Module: XPATH Fetch Page | Yahoo! Pipes Blog によると、

For example, if I want all the links in the page I can simply use “//a” to grab all links. If I want all the images in the html I can do “//img”.

XPath の要素の指定を確認には、Firefox のアドオンを用いると良い。

 

2. XPath でよく使う要素の指定方法

上記の例における XPath の

//

は、子孫要素を示す。要素間の直接の親子関係を超えて、要素を指定するために利用する。

指定する要素を絞り込むためには「述語」を使う。例えば、class 属性が hoge である要素を取得するには、

//*[@class=”hoge”]

John Resig - XPath and CSS Selectors には、XPath と CSS による要素を指定する簡単な例が挙げられている。

Goal CSS 3 XPath
All Elements * //*
All P Elements p //p
All Child Elements p > * //p/*
Element By ID #foo //*[@id='foo']
Element By Class .foo //*[contains(@class,'foo')] 1
Element With Attribute *[title] //*[@title]
First Child of All P p > *:first-child //p/*[0]
All P with an A child Not possible //p[a]
Next Element p + * //p/following-sibling::*[0]

(via New Module: XPATH Fetch Page | Yahoo! Pipes Blog

とりえあず、上記を把握しておけば、ある程度 XPath で指定できるようになる。

 

関連記事

Firefox で XPath により要素を指定する - Firebug と FirePath を使って

1. アドオン Firebug と FirePath をインストールする

Firefox で XPath により要素を指定したい。

XML Path Language – Wikipedia とは、

XML Path LanguageXPath; XMLパス言語) は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文である。

SnapCrab_No-0692予め Firefox に、以下2つのアドオンをインストールしておく。
  1. Firebug
  2. FirePath

 

2. Firebug で対象要素を指定する

例えば、 Yahoo!モバゲーの日記一覧 において、記事タイトルのアンカー要素を XPath で指定する。

マウスポインタを、対象要素の上に置き、

  • 右クリック > Firebug で要素を調査

を選択する。

より効率的に対象を選択するには、

  1. マウスポインタを対象要素の上に置き、
  2. Ctrl + Shift + C を押し、
  3. マウスをクリックするか、Enter キーを押す。

このとき、Ctrl + Shift を、左小指で2つのキーを押さえると効率的に作業を行える。

(ショートカットキーは、Firefox ボタン > Web 開発 > Firebug > ショートカットのカスタマイズ を参照。はてなブックマーク のアドオンをインストールしている場合、コメントを表示するショートカットキーを解除し、Firefox を再起動する。)

SnapCrab_NoName_2012-6-27_23-45-11_No-00

Firebug の HTML タブを確認すると、この例の場合、対象要素を、親要素の class 属性を利用して指定できそうなことを推測できる。

SnapCrab_NoName_2012-6-28_1-31-31_No-00

 

3. FirePath で XPath を指定する

次に、対象の要素を XPath で指定する。

  1. Firebug の FirePath タブをクリックし
  2. XPath フィールドに、以下の XPath を入力して、Enter キーを押す。

//*[@class="lv2-lay"]/a

これにより、XPath の指定した要素が点線で囲まれる。

SnapCrab_NoName_2012-6-28_0-25-12_No-00

目的の対象要素以外の要素が点線で囲まれていなので、上記の XPath で良さそうなことが分かる。

2012年6月24日日曜日

Emacs で利用中のモードに関するヘルプを表示する

1. describe-mode

Emacs で利用中のモードで使えるコマンドを知りたい。

The describe-mode function provides information about major modes. It is normally bound to C-h m.

describe-mode

This command displays the documentation of the current buffer's major mode and minor modes.

describe-mode により、モードのヘルプが表示される。

このコマンドにバインドされているキーは C-h m 。mode の m と覚えておく。

モードに特有の重要なコマンドは、キーバインドされているので、ドキュメントの以下の部分を確認する。

key             binding
---             -------

 

2. C-h ?

ところで、Emacs Lisp の関数を調べるときは C-h f, 変数の場合は C-h v

コマンドの接頭辞である

describe

を忘れた場合、

C-h

を押して、エコーエリアに

C-h (Type ? for further options) -

と表示されるのを待つ。

忘れることを前提にしないと、ツールを全く使えない。 (+_+)

2012年6月21日木曜日

利用している Dropbox が最新のバージョンか確認する

1. 利用してる Dropbox のバージョンを確認する

最近、Dropbox が管理しているフォルダにあるファイルを編集し保存した後、エクスプローラのレスポンスが悪い。昔は、これほど処理がもたついたかな。。

現在利用している Dropbox のバージョンを確認するは、

How do I upgrade to the latest version of the Dropbox application? – Dropbox によると、

To tell which version of Dropbox you're using, simply hover your mouse over the Dropbox icon in your system tray. A small dialog box will appear with the latest version. You can also find the version number by visiting your Dropbox preferences and selecting the Account tab. The Dropbox version number appears in gray.

タスクトレイにある Dropbox のアイコンの上にポインタを置くと、Dropbox のバージョンがポップアップする。また、設定画面のアカウントにもバージョンが表示される。

SnapCrab_NoName_2012-6-21_0-39-22_No-00

 

2. 最新の Dropbox のバージョンを確認する

最新の Dropbox のバージョンを知るには、Dropbox のインストールページを開くと表示される。

Google Chrome でリンクを新しいタブで開く - Tab Position Customizer

1. JavaScript によるポップアップをさせたくない

インターネットラジオを聴くサイトとして、TuneIn を利用している。いつも聴く番組を登録し、分類できるところが良い。

SnapCrab_NoName_2012-6-20_23-48-54_No-00ただし、番組を「聴く」ボタンを押すと、小さなウィンドウがポップアップし、そこに音量や再生・停止ボタンがある点が使いにくい。

ポップアップしたウィンドウが、他のアプリケーションの下に隠れてしまい、アクティブにするためにウィンドウを探すのが面倒。 (+_+)できることなら、ポッポアップせずに新しいタブに開くか、現在のタブに表示してほしい。

 

2. Ctrl + クリックで新しいタブに開く

Google Chrome では、リンクを

Ctrl + クリック

することにより、リンク先を新しいタブに開いてくれる。

上記の「聴く」ボタンは、JavaScript により制御されている。一度、Ctrl + クリックにより、ポップアップしていたウィンドウをタブに開くと、次から別の番組をクリックした場合、同タブに開いてくれる。

 

3. Tab Position Customizer でタブの動作をカスタマイズ

リンクをクリックしたときに、開かれるタブの動作をカスタマイズしたい場合、Tab Position Customizer を使う。

SnapCrab_NoName_2012-6-20_23-59-42_No-00インストールしたら、

  • Google Chrome の設定 > ツール > 拡張機能

より、Tab Position Customizer のオプションを選択。

上記の対策には、JavaScript によるウィンドウのポップアップをコントロールすれば良いので、

  • その他 > ポップアップをタブとして開く

にチェックを入れる。

これに加え、タブを開く・閉じる動作を、Firefox の Tab Mix Plus を利用した設定にできるだけ近づけたい。

以下の設定をした。

  1. 新しいタブを開いた場合、「カレントタブの右」に開く。
  2. タブを閉じたら、「アクティブにした順」に沿ってタブのフォーカスを移す。

 

4. Firefox の Tab Mix Plus で JavaScript によるポップアップの設定

Firefox の場合、JavaScript によるポップアップを新しいタブに開くには、Tab Mix Plus を利用する。

Tab Mix Plus のオプションより、

  • リンク > JavaScript のポップアップの設定:

において、「すべてのポップアップをタブに開く」を選択する。

SnapCrab_NoName_2012-6-20_22-48-30_No-00

2012年6月11日月曜日

CPU が熱くなったら、電源プランを切り替える - 最大のプロセッサの状態を抑える

1. CPU の発熱を抑えたい

気温の上昇に伴い、CPU ファンが唸りだす季節になった。PC の熱により、部屋の温度が上昇する。 (+_+)

Open Hardware Monitor で CPU の温度を監視
CPU の温度を確認するために、Open Hardware Monitor を利用する。Open Hardware Monitor は、ハードウェアの状態に関する情報を表示してくれる。

CPU の温度だけに関心があるので、ガジェットを利用して情報を表示させることにした。

  • メニューより、View > Show Gadget

を選択。 CPU の Temperatures にある CPU Core の行で

  • 右クリック > Show Gadget

を選択する。

SnapCrab_NoName_2012-6-11_4-22-2_No-00

SnapCrab_NoName_2012-6-11_12-57-1_No-00ガジェットに表示される温度を見ていると、室温が 28 度を超えたくらいから、CPU の温度上昇が激しい。

CPU が熱くなると、室温が上昇するので、CPU の発熱を抑えたい。パフォーマンスは二の次とする。ただし、CPU が熱くなり過ぎない限り、できるだけパフォーマンスを維持したい。

 

2. 電源プランの作成

電源オプションにある電源プランの設定により、CPU が最も働く状態を調整できる。CPU の使用上限を設定した電源プランを複数作成し、ファンの唸り具合に応じて手動で切り替えることにした。

SnapCrab_NoName_2012-6-10_2-13-16_No-00電源プランを作成するには、

  • コントロール パネル\ハードウェアとサウンド\電源オプション

において、「電源プランの作成」を選択する。

作成するプランは、既存の「バランス」を元にして、適当に新しいプラン名を付けた。ここでは

80%

という名前にした。その後、作成した 80% プランにおいて、

  • 設定の変更 > 詳細な電源設定の変更

を選択し、

「プロセッサの電源管理 > 最大プロセッサの状態」

を 80% とした。ここでは、システムの冷却ポリシーを「アクティブ」にしておいた。

SnapCrab_NoName_2012-6-10_2-17-48_No-00

上記と同じ手順で、最大のプロセッサの状態を 70%, 90% にした電源プランを作成した。

 

3. Process Lasso で電源プランを切り替える

Process Lasso を使っている場合、タスクトレイにある Process Lasso のアイコンを

  • 右クリック > アクティブなパワースキーム

より、電源プランを変更できる。

 

4. コマンドプロンプトにより電源プランを切り替える

新しく作成した電源プロファイルを、コマンドプロンプトで切り替えてみる。

アクセサリ > コマンドプロンプトを起動し、

powercfg -l

を入力すると、各電源プランの一覧が表示され、GUID が示される

既存の電源設定 (* アクティブ)
-----------------------------------
電源設定の GUID: ランダムな文字列  (バランス)
電源設定の GUID: ランダムな文字列  (80%) *

GUID – Wikipedia とは、

GUID (Globally Unique Identifier)またはグローバル一意識別子(ぐろーばるいちいしきべつし)は、ソフトウェアで使用される擬似乱数で、世界で一意な識別子として使用される128ビットの2進数値である。

この GUID を利用し、以下のようにプロファイルを切り替える。

powercfg -S GUID

ハイフンは、半角であることに気をつける。

コマンドプロンプトで GUID を表す文字列をコピペするには、

  1. コマンドプロンプト上で、右クリック > 範囲選択
  2. コピーしたい範囲を反転させた後、Enter キーを押す。
  3. 貼り付けたい場所で右クリック > 貼り付け

 

5. 電源プロファイルをショートカットで切り替える

上記で作成した電源プロファイルをショートカットで切り替えたい。

エクスプローラにおいて、適当な場所で、

  • 右クリック > 新規作成 > ショートカット

を選択する。表示されたダイアログにおいて、

「項目の場所を入力してください」

に、先ほどコマンドプロンプトで入力電源プロファイルを変更したコマンド、

powercfg -S GUID

を入力する。ショートカット名は、電源プランと同じ名前にした。

 

6. タスクバーで切り替える

SnapCrab_NoName_2012-6-11_19-41-31_No-00作成したショートカットを利用し、タスクバーから電源プランを切り替えてみる。

上記で作成したショートカットをフォルダにまとめ、適当な場所に置く。

  • タスクバーで、右クリック > ツールバー > 新規ツールバー

を選択し、上記のフォルダを指定する。

クイック起動にショートカットを登録したい場合は、

を参考にする。

 

関連記事

2012年6月1日金曜日

Windows Update でアップデートが失敗する

1. Windows 7 SP 1 をインストールできない

Windows 7 を新規にインストールした。 Windows Update でシステムを最新の状態にしようとしたが、Windows 7 Service Pack 1 のアップデートでエラーが発生。

SnapCrab_NoName_2012-5-31_0-35-34_No-00

  • コントロール パネル\システムとセキュリティ\Windows Update\更新履歴の表示

を見ると、数回アップデートに失敗している。

アップデートに失敗したファイルを直接ダウンロードし、アップデートを試みたがインストールできなかった。

 

2. Windows Update が利用しているフォルダを削除

エラーとなる原因は、

  • %SystemRoot%\SoftwareDistribution

が壊れているからのようだ。

Windows Update/Microsoft Updateのトラブルを解消する(SoftwareDistributionフォルダを修復する方法) - @IT によると、

■Windows Update(WU)やMicrosoft Update(MU)において、エラーが発生して修正プログラムの検出・適用ができないことがある。

■その原因の1つとして、WU/MUが利用する%SystemRoot%\SoftwareDistributionフォルダのファイル破損が挙げられる。

■このフォルダを修復するには、フォルダ名を変更してからWU/MU用のサービスを再起動する。

KB952709のWindows Updateがエラーコード800B0100で失敗 - La Faïence によると、

  • Windows Update関連のファイルを修復
    • 以下のサービスを停止(コンパネの管理ツールからサービスのやつを管理者権限で起動)
      • 「Automatic Updates」または「Windows Update」、「自動更新」
      • 「Background Intelligent Transfer Service」*1
    • %SystemRoot%\SoftwareDistributionを削除。
  • 上で止めたサービスを開始
  • もっかいWindows Updateを実行
  •  

    3. アップデートの履歴は消えた

    上記の手順に従ったら、Windows 7 Service Pack 1 をインストールすることができた。ただし、これまでのアップデートした履歴は全て消えた。

    Windows Update/Microsoft Updateのトラブルを解消する(SoftwareDistributionフォルダを修復する方法) - @IT によると、

    適用履歴が消えることに注意

    本稿で説明する手順でSoftwareDistributionフォルダを修復すると、WU/MU/自動更新で適用した過去の修正プログラムの履歴が消えてしまう(修正プログラムそのものがアンインストールされるわけではない)。必要であれば、WU/MUの[オプション]-[更新履歴の表示]を実行し、表示された適用履歴を保存しておく。ただし、この適用履歴を保存したデータベースが破損していると履歴が表示できない可能性もある。それこそエラーの原因だと考えられるので、その場合は適用履歴の保存はあきらめるしかない。