2008年11月1日

 先週、PCが起動しなくなってしまいました。正確には電源いれて3秒で落ちる。まぁそんなわけで、電源・CPU・マザボを変えて少しパワーアップしました。まだまだ、環境セットアップ中ですけど。

 ウィルス対策としてLive OneCareを使っているのですが、OneCareはバックアップ機能もあります。LiveOnceがバックアップしろよーとうるさいので別HDDにバックアップはしていたのですが、はたして自作ユーザーにありがちなケースにも対応できるんでしょうか?

 ありがち? なケース。PC故障、バックアップHDD以外はすべて変更してOSも再インストール。当然ながらバックアップHDDにあるデータのユーザーと再インストール後のWindowsユーザーとの関連はなくなります。

 ふだんOneCareを使用していると、バックアップからの復元は、現在のPCもWindowsも正常だけどファイルがなんらかの原因で消えてしまった・消してしまったという場合に、現在のPCにファイルを復元する、という感じの復元項目しかありません。そんなわけで上記のケースのときうまく復元できるのかよくわかりません。

 というわけで、サポートに聞いてみたら、OKとのこと。復元時にバックアップHDDの場所を指定し、現在のユーザーと関連がなくても

  • 現在のユーザーアカウントに復元する
  • 別の場所に復元する

が選べるようです。この関連情報は、Windows Live OneCare でバックアップからファイルを復元する方法 にあります。

 実際のウィンドウ。再インストールしたWindows、Live OneCareから、メインのウィンドウからファイルの復元をクリックします。まだこのPC上でバックアップ設定はしていません。

ファイルの復元

 復元に使用するファイルの選択になるので、ネットワークの場所を追加(バックアップしたHDDの指定)します。

Windows Live OneCare 復元

 すると、バックアップHDD内のバックアップデータが選択できます。OneCareサークル内と書いてありますが、バックアップした当時のPC情報で、現在実行しているPCのOneCareサークルやコンピュータ名とはまったく関係ありません。

Windows Live OneCare 復元 (2)

 次へすすめると、どのファイルを復元するか選択画面になります。ここでは、すべて復元を選択しました。すべて、種類、ファイルを検索しか選択肢がないので少し不便ではありますね。フォルダツリーを見ながら選択ができるといいのに。

 Windows Live OneCare 復元 (3)

 現在のOneCareのユーザーアカウントとバックアップデータのユーザーアカウントが異なる場合、先のように選択画面が現れました!

Windows Live OneCare 復元 (4) 

 このあとは、実際に復元が始まります。再インストールしてきれいな状態なので、私は別フォルダに復元を選択しました。実際に使ってみて注意事項ですが、他のフォルダに復元されるのは以前のユーザーフォルダにあったデータのみでCドライブ直下にあったフォルダなどはそのまま新しいPCのCドライブ直下など元の場所に復元されてしまうようです。

 以上、こんな感じです。まあ自作ユーザーならもっとパワフルなバックアップツールを使っているかもしれませんが、一応 私には最低限使えるレベル……次回使うかどうしようかという感じですね。あまりバックアップ活用しないのでw これまでPC新しくする時は、新しいHDDを買ってきて古いHDDをそのままバックアップHDDとしていたので。今回は急な出費だったし次買うならSSDがほしかったので、バックアップを活用してみました。

posted @ 2:08 | Feedback (2)

 Windows Live ID OpenID Provider CTP リリース ということもあり、OpenIDの認証に対応したサイト作るにはどうするのかなーとちまちま調べていたりします。具体的なことについては意外と情報すくないんですね。ライブラリはあるけど。しかたがないので本家、Final: OpenID Authentication 2.0 - Final を読んでます。日本語の記事では、OpenID Authentication 2.0時代の幕開け - @IT が良かった。

 とりあえずLive IDを使った認証ができるようにしたい(それができる、ほぼイコール2.0対応OpenIDプロバイダーに対応できたことになるけど)。OpenID 2.0では、ユーザーは「open.live-int.com」のようなOpenIDプロバイダーを表すURLを入力するだけで認証が可能になってます。この値はユーザーごとに異なるわけではないので、Live IDのOpenIDで認証するサイトにしてしまえば、そのサイトでユーザーが認証のために入力する必要さえもなくなるわけですね。実際、すでに2.0対応のOpenIDプロバイダーのYahooは、Yahoo IDでログインするためのボタン画像を提供しています→ Yahoo!デベロッパーネットワーク - Yahoo! JAPAN IDログインボタン

 

 さて、まだ認証一連の流れで初めの部分しかできていないのだけど「openid.live-int.com」などのURLからWebサイトがアクセスすべき認証用のURLを取得するところまでは書いてみた。ちなみに、OpenIDでの認証はいろいろパターンがあるのでその1例です。あと書いている内容、間違ってるかもしれません。

 これからする処理は、Final: OpenID Authentication 2.0 - Final の Discovery 部分の処理になります。ユーザーが入力した値からOpenIDプロバイダーに対して認証のリクエストに必要な情報を探すところですね。

 まず「openid.live-int.com」という情報から始めます。これは「http://openid.live-int.com/」と変換します。このようなURLの場合、Yadisプロトコル使えとあります。XRDS文書と呼ばれるXMLベースのテキストを取得します。上記OpenID仕様のURLにある参考URLからYadisプロトコルを読むと、GETかHEADメソッドでリクエストして、レスポンスのX-XRDS-Locationヘッダをみろとあります。リクエスト時にはAcceptヘッダにapplication/xrds+xmlを指定するともありました。

Dim url = "http://openid.live-int.com/"

Dim request As HttpWebRequest
Dim response As HttpWebResponse
Dim xrdsLocation As String

' First Request
request = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
request.Accept = "application/xrds+xml"
request.Method = "HEAD"
response = DirectCast(request.GetResponse, HttpWebResponse)

xrdsLocation = response.Headers("X-XRDS-Location")

 

 というわけで、以上のコードになります。xrdsLocationには「http://openid.live-int.com/OpenIDXRDS.srf」が入ります。レスポンスのContentTypeはtext/htmlでした。GETメソッドによりHTMLの内容を取得した場合、それをパースするとこの時点でほしいURLが記述されているんですよね。さらに、ContentTypeがxrds+xmlだった場合、これから次の手順で行うことがすでに完了したことになるのかな。いろいろと考慮するところは多いです。

 ここでは、とりあえず取得できたアドレスにアクセスします。そして、実際に受け取る内容は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS
 xmlns:xrds="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0"
 xmlns="xri://$xrd*($v*2.0)"><XRD><Service priority="0">
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://openid.live-int.com/OpenIDAuth.srf</URI><LocalID>http://specs.openid.net/auth/2.0/identifier_select</LocalID></Service>
</XRD>
</xrds:XRDS>

 

このURIを使えば良いみたいですね。Serviceが複数あったりする場合もあるので、ここでも考慮事項は多そうです。コードはこんな感じ。

'Imports <xmlns:xrds="xri://$xrds">
'Imports <xmlns="xri://$xrd*($v*2.0)">

' Second Request
request = DirectCast(HttpWebRequest.Create(xrdsLocation), HttpWebRequest)
request.Accept = "application/xrds+xml"
request.Method = "GET"
response = DirectCast(request.GetResponse, HttpWebResponse)

Dim content = ""
Using stream = response.GetResponseStream, _
      reader = New System.IO.StreamReader(stream, System.Text.Encoding.UTF8)
    content = reader.ReadToEnd
End Using

Dim xml = XDocument.Parse(content, LoadOptions.SetBaseUri)
Dim uri = xml.<xrds:XRDS>.<XRD>.<Service>.<URI>.Value

 

 この後、実際にユーザーの認証処理に進んでいくわけですがまだまだ遠いなぁ。

posted @ 1:45 | Feedback (0)

 「使ってみよう! Windows Live SDK/API:第19回 Windows Live Photo API(1)」が公開されています。今回からはLive User Data APIsからPhoto APIです。Live Spacesのアルバム・写真にアクセスできるAPIですねー。特に何も気にしていなかったけど今回のPDCで特に変更はないみたいかな。

 Live Spacesの写真を扱えるというと、自分のスペースの写真を何かするアプリケーションなんかを(私は)想像してしまうのだけど、Live ID Delegated Authenticationを使用しているのですべてのユーザーの写真に対してアクセスできます。ただしそのユーザーの許可はいるけどね。そんなわけで、うまくAPIを組み合わせると自前に写真用ストレージなしでpixivみたいなSNSなんかも作れてしまうかもですね!

 あとAPIの話しからは離れるけど、Live Spacesの写真用ストレージって結構すごいかもしれない。一ヶ月500枚までのアップロード制限というものがあるけど、それを守ればPCからLive Photo Galleryを使って一度に何百枚もアップロードできるし(プリント用にすれば高解像度のものをアップできる)、Live OneCareの有料の写真バックアップを考えると使いようによっては有用じゃないかなー。

posted @ 0:53 | Feedback (0)