2008年8月アーカイブ

Realforce 86U 買っちゃった

| | コメント(0)

やっぱり買っちゃいました。
いつかは買いそうなので、それならば...っていう思考で。(悪い癖)
来るのは火曜日かな。

買った直後に珈琲をこぼすのだけは避けなければ...

System.Net.WebClient
System.Net.WebRequest
System.Net.WebResponse
を使っている場合に、
WebException.Status = ServerProtocolViolation
の例外が発生する場合は、サーバー側がHTTPに違反している。

特に、古いサーバーでCGIを作成している場合、
改行コードに、\nを書くことが多く、これをHTTPサーバーがCRLFに変換しないため発生することが多いようだ。
Apacheのように新しいサーバーは、自動的に変換してくれるが、
そうでないサーバーや独自サーバーではそのままLFとして出力される。

この場合は、.NETの実装をゆるめる必要があります。
<system.net>
   <settings>
       <httpWebRequest useUnsafeHeaderParsing = "true" />
   </settings>
</system.net>

このパラメータはプログラムからは変更できません。
(リフレクションを使って、無理矢理変更する方法は可能)


よく、UNIXはLF, WindowsはCRLFで、Windowsは独自だなという人がいますが、 Windowsの実装が正しいのです。
UNIXというかC言語を作ったときに、2バイト使うのはもったいないから、 1バイトで済ませたいということで、LFだけになりました。
あとは、ランタイム(C言語)にそれを吸収させようとしました。
なので、fopenにはテキストモードとバイナリモードがあります。 ファイルにテキストとバイナリの違いがないにも関わらず。
(このことすらしらないエンジニアもいたりしますけど)

この副作用が、HTTPでもプロトコル違反の原因となっています。

IE8

| | コメント(0)

誘惑に駆られてメインマシンに入れてしまった。

いきなりInternet Explorer Developer Barは動作しないと言われた。
どうやら代わりの機能が標準であるようだ。Good!

Movable Typeでこの記事を作成しようとしたら、まともに表示されない。
そのため、Firefoxで書いてます。Bad!

サイト候補は、閲覧履歴を使って、興味のありそうなサイトをオンライン検索をするサービスだそうだ。
もちろん、OFFだな。

アクセラレータは、選択したテキストを元にサービスを呼び出せるようだ。
コピペしてググルってことはしなくていい。
Smart TagのIE版ってところか、MS的でいいね。

アドレスバーの強調表示はいいね。

検索のボックスのサイズ変更もいいね。
補完にも対応したのか。
検索エンジンの選択ボックスを表示する点は、マイクロソフト苦労していますね。
確かに選択し易ければ、Windows Liveで検索してみようかと思うね。

画像検索(Instant search)は便利そう。
けど、日本語の検索エンジンではまだ無理?

WebSliceは、使いこなせたら便利だろうね。
サイトで対応しないといけない?
hsliceをclassに書けばいいのか?

キャレットブラウズも、まぁ使わないけど、いいね。
タブの切り替え速いね。
タブの下に表示される検索バーもいいね。
開発ツールもいいね。
ページ設定もいいね。ヘッダー・フッターの指定はいい。

描画のゴミなどは、まだベータ版っていう感じですね。

IE8 Beta2

| | コメント(0)

Internet Explorer 8のβ2がリリースされました。
我慢できないかも...。
メインマシンにいれちゃおっかな。

早速、いろんなベンチマーク結果が公開されていますが、
JScriptの速度は、負けじとかなり向上させてきていますね。
約300%の向上でしょうか。
Firefox 3.1よりは遅いですが... かなり縮めましたね。
別にFirefoxに追いつく必要性はないので、こんなもんで打ち止めでしょう。
(JITを採用したりしないと、向上は見込めないでしょうし)

ACID3ですが、IE7よりはマシというレベルでしょうか。
最近作られたACID3への対応はプロジェクトの目標にはないんでしょう。
細かくリリースできるFirefoxと、巨大企業のプロジェクトの違いでしょう。
目的通りのリリースをすることが重要です。

IE8のRTWは、11月と言われています。

脱 DirectShow

| | コメント(0)

Windows でビデオをキャプチャーしたい場合、
・capXXX API
・Direct Show
のどちらかを使うわけだが、

capXXXは、古すぎるAPIだし、自由度がない。
HWNDを使う点でかなり古いことが分かる。

そんなわけで、通常は、DirectShowを使うわけだが、
フィルタグラフ自体が閉じているので、グラフ外にキャプチャー画像を取り出すのは結構手間である。
SampleGrabberを使えばいいじゃないか、という人もあるが、
カメラから映像を取りたいだけなのに、フィルタグラフのような大がかりなものを使うのも
ちょっとお馬鹿さんかという気がする。

そして、フィルタグラフの作成をSTAで行う必要がある、という制約がある。
MTAでは作成できない。

DirectShowがどのようにキャプチャーデバイスにアクセスしているかというと、
KsProxyを使っている。(フィルタ選択ダイアログを見ると分かる)

じゃ、KsProxyを使えば、直接キャプチャーできるんでないか、という期待が持てる。
けど、KsProxyの使い方は、ググっても引っかからない。(涙)

KsProxyは、Kernel StreamingをUser ModeでアクセスするためのCOMプロキシーだとわかったが、
・Kernel Streamingってなんじゃ?
・KsProxyのインターフェイスはどうやって取得するのか?
という謎が残る。

ざくっとMSDNをみて理解した範囲でいうと、
Kernel Streamingとは、WDMで提供されているもので、カーネル側にフィルタグラフを作っているようである。
Kernel ModeとUser Modeのスイッチングコストを嫌って、カーネル内にフィルタグラフを作るそうだ。
DirectShowのフィルタグラフ同様、Pinなども定義されている。
DirectShowのフィルタが完全にラッパーになっているだけという印象である。

Ks開発のために、DDK(WDK)に、KsStudioというツールが提供されている。
簡単に言えば、グラフ エディターのKs版という感じである。

いろいろKsを勉強しているとあることに気づいたことがある。
Vistaで導入されたCore Audio APIもこれに瓜二つである。
エンドポイントやトポロジーなど、Ksそのままである。(なるほど)


次に、KsProxyのインターフェイスはどのように取得するかですが、
最も簡単な方法は、DirectShowのSystem Device Enumeratorで、IBaseFilterを取得するのと同様に、IKsControlを取得すればよいらしい。
IBaseFilterからQueryInterfaceしてもよい。

しかし、脱DirectShowを目指しているので、中途半端に、DirectShowを使いたくないのが、エンジニアの性分です。
System Device Enumeratorはどう実装しているの気になるし、それが分かれば、System Device Enumeratorすら使わなくて済む。

KsStudioのGUIを参考にしたり、KsStudioをAPI Monitorして分かったことは、
やはり、Setup APIを使うようだ。
Setup APIで、Ksフィルタのパスまでを取得する。
このパスをCreateFileして得られたHANDLEが、Ksフィルタのハンドルになるようだ。
KsStudioは、Ksフィルタのハンドルを取得したあとは、DeviceIoControlを呼び出している。

どうやら、KsProxyは、ただのCOMで、内部でDeviceIoControl(KsSynchronousDeviceControl)を呼び出しているだけのようだ。
KsProxyなどなくても、DeviceIoControlの呼び出し方を知っていればよいわけだし、逆に、そのレベルの知識がないと、KsProxyの呼び出し方も分からないということだ。

やっと、脱DirectShowの入り口に到着した段階でしょうか。

Desktops v1.0

| | コメント(0)

Windows Sysinternalsから、Desktopsがリリースされました。

仮想デスクトップ ソフトです。

DreamSceneをプライマリーデスクトップで使っていると、
切り替えると切り替えた先の仮想ディスプレイでDreamSceneのエラーになりますね。

デュアル ディスプレイの場合、デスクトップ全体が切り替わりますね。
あと、Select Desktopで表示されるサムネイル画面ですが、
セカンダリディスプレイがマイナス座標にある(プライマリーの左側)と、正しく表示できませんね。

あと、終了ができない...。ログオンし直しか?

SyncToy 2.0

| | コメント(0)

音楽ファイルをバックアップでeSATA接続したハードディスクにコピーしているのだが、
今回、SyncToy 2.0を使ってみた。

Left FolderとRight Folderを指定して、アクションを選択する。それだけ。
SynchronizeとEchoとContributeの3つのアクションがある。

今回はバックアップが目的なので、Echoを選択する。
Left Folderがバックアップ元で、Right Folderがバックアップ先になる。(間違えると大変です)

とっても簡単でいいんでないか!


とはいえ、1年に一度くらいは、バックアップ ファイルを消して全部書き込んだ方がいいです。
磁気が弱るので。(2,3年に一度で十分ですけど)

MS本

| | コメント(0)

Silverlight 2本が発売されます。予約可能です。
力はいっているね、Silverlight 2には。こんなに早く本が出るとは。

ASP.NET 3.5も発売されます。1万円って...。
1224ページもあっては、ジムで読めないな。

Realforce 86U

| | コメント(0)

あのRealforceのテンキーなし、英語版が発売されるようです。

英語版のRealforce 101と違い
・CAPSとCTRLを入れ替えることができる。
・Windowsキーが付いている
・USB接続
のようです。

押下特性が同じかどうかはわかりません。
刻印は、これまで同様、昇華印刷なので、いくら使い込んでも刻印は消えません。

けど、2万以上します。
Realforce 101の出来が言いおかげで、使い込んでいても悪くなっていないし。
欲しいけど... 悩むな。