Hebikuzure's Tech Memo

2013年5月28日

Microsoft の外部公開仕様

Filed under: Windows Info — hebikuzure @ 8:54 AM

Microsoft Open Specifications
http://www.microsoft.com/openspecifications/en/us/


先日の「ネットワーク パケットを読む会(仮)」でちょっと話題になったので、自分のメモも兼ねて。

Microsoft では他のベンダーやオープンソース プロジェクトの製品との相互運用性や互換性が確保されるよう、さまざまな外部仕様のドキュメントを公開しています。これらの仕様については Microsoft Open Specifications (http://www.microsoft.com/openspecifications/en/us/) というポータルサイトが置かれていて、ここからドキュメントや技術情報、フォーラムなどにアクセスできます。ここで取り上げている分野は以下の4つです。

Protocols
Microsoft 製品間のコミュニケーションで利用される、プロプライエタリな (標準化されていない) プロトコルの仕様
Computer Languages
Microsoft 製品に実装されているプログラミング言語の仕様
Standards
Microsoft Exchange Server, Microsoft Outlook, Word, Excel, PowerPoint, Windows WordPad, SQL Server, Internet Explorer などの Microsoft 製品に実装されている標準技術の仕様
Data Portability
Microsoft Office や Microsoft SQL Server でユーザーが作成したデータのポータビリティに関する仕様

すべて英文で、かつボリュームも大きい資料が多いのですが、いずれも Microsoft の公式文書ですから製品の挙動について正しい動作を確認したい場合や、明確なエビデンスが必要な場合などにはぜひ活用してください。

広告

2013年5月13日

“Debugging with Fiddler” 日本語版「実践 Fiddler」 5月25日発売

Filed under: Information — hebikuzure @ 11:11 PM


http://www.oreilly.co.jp/books/9784873116167/

Fiddler の制作者で元 Microsoft の Eric Lawrence さんの解説書「Debugging with Fiddler」の邦訳版、「実践 Fiddler」が発売されます。

picture978-4-87311-616-7

Web 開発者、そしてネットワーク管理者、PC 管理者の皆さんにはぜひ読んでいただき、Fiddler を活用していただきたいと思います。

また現在発刊記念イベントを企画しています。詳細が決まりましたらこのブログでも告知しますので、よろしくお願いいたします。

HTTP エラーを簡易表示する

Filed under: Internet Explorer — hebikuzure @ 10:59 PM


「他のブラウザーだと正しく表示されるのに、Internet Explorer だと表示されない」という話はよく聞きますが、必ずしもInternet Explorer の機能が不足しているからという理由でそのような現象が起きる訳ではありません。逆に他のブラウザーにはない機能が原因の場合もあるのです。今回はそのような実例を紹介します。

あるメーリングリストで、特定の Web サイトでサイト内のページへのリンクをクリックすると、「他のブラウザーだと正しく表示されるのに、Internet Explorer だと表示されない」という現象が相談されていました。確かに Interenet Explorer を利用すると、そのページは「Web ページが見つかりません」と表示されます。他のブラウザーではページ内容が正しく表示されます。

この現象の原因を調べるきっかけは、「Web ページが見つかりません」と表示されたタブのタイトルに「HTTP 404 未検出」と表示されていたことです。

img_404

そこで Fiddler を起動して、問題のリンクをクリックした際の挙動を調べてみました。すると、サーバーから確かに HTTP 404 レスポンスが返っていることが確認できました。

img_fiddler1

ところがこのヘッダーをよく見ると、メッセージ ボディを chunked エンコードで送信していることがわかります。そのため次にこのメッセージ ボディを確認してみました。

img_fiddler2

このスクリーンショットは Fiddler の Inspectors で WebView 表示したものですが、確かにここに他のブラウザーで表示されるのと同じコンテンツがありました。さらに他のブラウザーで表示した際の HTTP フレームを調べると、Internet Explorer で表示した場合と同じレスポンス ヘッダー、レスポンス ボディが返っていることが確認できました。そうすると、同じサーバー レスポンスが他のブラウザーでは表示できて、Internet Explorer では表示できないという事になります。これはなぜでしょうか。ここで注意すべきなのはサーバー レスポンスは通常の 200番台では無く、HTTP 404 である点です。つまりこのメッセージ ボディは本来のページ コンテンツではなく、エラー メッセージなのです。

そこで Internet Explorer には「HTTP エラーを簡易表示する」という機能があることを思い出しました。この機能については以下の記事に詳しい解説がありますが、400番台、500番台のエラー ステータスがサーバーから返された場合で、エラー メッセージ ボディが 256バイトまたは 512バイト以下の場合、Internet Explorer はサーバーが返したエラー メッセージでは無く「簡易エラー (Friendly HTTP Error)」を表示する動作です。

Friendly HTTP Error Pages
http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx

問題のページのメッセージ ボディの内容はもちろん 512バイト以上ですから、「HTTP エラーを簡易表示する」が有効でも表示されるはずだと考えられますが、どうもメッセージ ボディが chunked エンコードされていて、ヘッダーに content-length が無いため、簡易表示が行われていると思われます。

そこでインターネット オプションの [詳細設定] タブで、[HTTP エラーを簡易表示する] を無効にすると、Internet Explorer でも他のブラウザーと同様の表示になりました。これで一件落着なのですが、本来はエラー メッセージを表示すべき HTTP 404 レスポンスでコンテンツを表示させようとする Web サイトが一番の問題です。メーリング リストの質問者はサイト管理者に問題を報告して改善を求めたようですが、残念ながら未だに動作は変わっていないようです。

なお、「HTTP エラーを簡易表示する」という機能があるのは、「404 Not Found」というような極めてあっさりしたエラー メッセージが表示されても一般のユーザーにはどのような問題が起きているのか理解しにくいと考えられ、それに配慮したメッセージが表示されるようするためです。

いずれにせよ、サーバー管理者の皆さんは、エラー ステータスの HTTP レスポンスでエラー メッセージ以外のコンテンツを返すのは止めましょう。

2013年5月12日

Windows ストア アプリをループバック(localhost)に接続する

Filed under: Windows Tips — hebikuzure @ 9:51 PM

Windows 8 の Windows ストア スタイルのアプリケーションは、従来のデスクトップ アプリケーションと異なる色々な制限がありますが、開発やテスト、デバッグを行ったり、ネットワーク接続関係のさまざまなトラブルシュートを行う上で大きな制約は、ループバック アダプタ (localhost や 127.0.0.1) に接続できないというものです。これは悪意のあるプログラムがホストするローカル プロキシやローカル サーバーに接続することで情報の盗み取りや改竄が行われる事が無いようにするなど、セキュリティ的な意味があるのですが、反面、ローカルの HTTP サーバーでテストするとか、Fiddler のようなローカル プロキシを使ってデバッグするといったテクニックが使えないことも意味します。

さて、一つ前の記事に載せた Community Open Day のセッション「Windows 8 で魅力的なWeb サイトを作る」では、Windows ストア スタイルの Internet Explorer から http://localhost/… でサンプル ページを開き、タイルとしてスタート画面にピン留めするなどのデモをやっていました。この点について時間の関係でセッションでは触れられなかったので、同じことを試される方のために解説しておきたいと思います。

Windows ストア アプリがループバックに接続できない制限は、一定の手続きで解除できます。具体的な方法は MSDN の「ループバックを有効にする方法とネットワーク分離のトラブルシューティングを行う方法 (Windows ストア アプリ)」で解説されています。この解除には CheckNetIsolation.exe を利用します。

CheckNetIsolation.exe LoopbackExempt –a –p=(パッケージのアプリ ID)

CheckNetIsolation.exe LoopbackExempt –a –n=(アプリ コンテナー名)

これらのコマンドの実行は管理者への昇格が必要なので、コマンドプロンプトを「管理者として実行」で起動して、コマンドを実行します。

ただしこの方法では個々のアプリケーションの ID やアプリ コンテナー名を事前に調べておく必要があり、またアプリ一つ一つについて指定する必要もあるので多少手間がかかります。こうした手間を省くツールとして、”Windows 8 AppContainer Loopback Utility”(EnableLoopback Utility)があります。これは元々 Fillder のアドオンとして作成されたツールですが、単独でも利用できます。

”Windows 8 AppContainer Loopback Utility”(EnableLoopback Utility)は以下のページからダウンロードできます。

http://fiddler2.com/add-ons

このツールを使う場合も管理者への昇格が必要なので、管理者として実行します。

img01

この画面で、先頭のチェックボックスにチェックを入れ、[Save Shanges] をクリックすると、そのアプリのループバック接続が有効になります。ストアからインストールしたアプリではDispalyName には以下のように実際の表示名が表示されますので、アプリの識別も容易です。

img02

同じツールでループバックへの接続を無効にする(既定に戻す)こともできます。チェックを外し、、[Save Shanges] をクリックするだけです。

1台の PC で Windows ストア アプリの開発環境を完結するためアプリをローカル サーバーに接続させたい場合や、トラブル対応などでアプリの挙動を Fiddler のようなツールでデバッグしたい場合、”Windows 8 AppContainer Loopback Utility”(EnableLoopback Utility) を利用してみてください。

Community Open Day 2013 でセッションしました

Filed under: Information — hebikuzure @ 7:51 PM

Community Open Day 2013
http://cod.ms/


1年に1度、Micosoft 系のテクノロジーを扱っているコミュニティが合同で開催している Community Open Day ですが、今年も昨日(5月11日)に無事開催されました。

私が主催している「ブラウザー勉強会」と「ネットワーク パケットを読む会(仮)」は、いずれも Microsoft テクノロジーに特化した勉強会ではない、ベンダー ニュートラルなイベントなのですが、Microsoft テクノロジーも取り扱っていること、また個人的には Microsoft MVP を頂いていることもあって、今年もセッションを開催しています。

セッションで使用したスライドはそれぞれ以下で公開しています。

Windows 8 で魅力的なWeb サイトを作る
http://www.slideshare.net/hebikuzure/windows-8-web
http://sdrv.ms/YOhLEQ

Windows 8 で魅力的なWeb サイトを作る from Akira Murachi

ネットワーク パケット解析・基本の基本
http://www.slideshare.net/hebikuzure/cod2013
http://sdrv.ms/YOhRwp

COD2013「ネットワーク パケット解析・基本の基本」 from Akira Murachi

ちなみに「Windows 8 で魅力的なWeb サイトを作る」は「『Windows 8 で魅力的なWeb サイト』を作る」という趣旨だったのですが、「Windows 8 で『魅力的なWeb サイトを作る』」という趣旨だと受け取られた方もいらっしゃるようで、セッション冒頭でこの点についてお断りした瞬間に席を立たれた方が数名いらっしゃいました。ご迷惑をおかけして申し訳ありませんでした。

来年も機会があればまたセッションをやりたいと思いますので、よろしくお願いいたします。

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。