Virtual Server 2005 R2 SP1 On Vista その2

 
Virtual Server 2005 R2 SP1 On Vista で Virtual Server 2005 R2 SP1 をVista上で 動かして、その気になっていた。
でも、TechEd から帰ってきて、Vista を動かして、VS2008 を動かそうと思ったら・・・
”バーチャル マシンを作成できませんでした。既定のバーチャル マシン構成ディレクトリを取得できませんでした。十分なアクセス権がありません。”
というエラーが発生。
 
以下、アンオフィシャル回避策
  1. CMD プロンプトを管理者で実行し、"net user administrator /active:yes" を実行し、administrator を有効にする。
  2. UAC をオフにする。

1番がお勧めだけど、他にもあるかも。

とりあえず、これで Vista のイメージができたので、次は VS2008 Beta2 か・・・・ 

HTML の圧縮

TechEd 2007 でのセッションで、どのセッションか忘れてしまったが、HTMLのサイズを圧縮し、高速化するヒントとして2つ紹介されていた。WZero3のメモ帳にメモってあるだけで忘れそうなので、メモ。
 
  1. Visual Studio で[ツール]→[オプション]→[HTML]で、デフォルトでは[空白の挿入]になっているので、空白が多い場合にはページのサイズが大きくなってしまう。これを[タブの保持]にする。場合によってはサイズが 1/3 ぐらいになる。
  2. IISで、HTTP 1.1 圧縮を使う。
    http://www.port80software.com/ で、どの程度圧縮されているのか、確認することができる。
    とあるページを試しにやってみたら、圧縮により サイズが 1/5  になる。

C++、C++ / CLI、C# 適材適所の BOF

TechEd Yokohamaで、「C++、C++ / CLI、C# 適材適所の BOF 」があり、デバイスの検出を例に説明があり、興味深く聞かせていただきました。
 
デバイスの検出関連はこれまで触ったことがなかったので、URLなどをいくつかメモ。
 
 
WM_DEVICECHANGE、struct _DEV_BROADCAST_HDR などの定義
  C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\Dbt.h
  C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\PocketPC2003\Include\dbt.h
  C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\Smartphone2003\Include\dbt.h

 WindProc にフックを掛けるだけであれば、InterOpはいらず、WinProcをオーバーライドすればよい。

    // A device has been added to or removed from the system.
    // Windows NT 4.0 and Windows Me/98/95:  This value is not supported.
    private const int DBT_DEVNODES_CHANGED = 0x0007;
    private const int WM_DEVICECHANGE = 0x0219;
 
    protected override void WndProc(ref System.Windows.Forms.Message m)
    {
      if (m.Msg != WM_DEVICECHANGE)
      {
        base.WndProc(ref m);
        return;
      }
      switch ((int)(m.WParam))
      {
         ….
        case DBT_DEVICEARRIVAL:
          MessageBox.Show("DBT_DEVICEARRIVAL");
          break;
        case DBT_DEVICEREMOVECOMPLETE:
          MessageBox.Show("DBT_DEVICEREMOVECOMPLETE");
          break;
        ….
        case DBT_DEVNODES_CHANGED:
          MessageBox.Show("DBT_DEVNODES_CHANGED");
          break;
        ….
      }
      base.WndProc(ref m);
    }
 
なお、USBドライブが追加された場合には、WParam が DBT_DEVNODES_CHANGED でメッセージが飛んでくる。
 
問題はこの後どれだけ複雑な InterOp が必要かどうかで、複雑な構造体(ネストしていると最悪)が必要な場合など、C++/CLI  でのつなぎは可能性の1つとして面白そう。でも、自分の場合MFC触ったことないので別のアプローチ取るしかないですね。orz
 

WZero3 で、GPS?!

PRO’ LOGUE さんのところで、[03es] 擬似GPSでGoogleMap…MimicGPS という記事が紹介されています。
明日からキャンプなんですが、カーナビついてないもので、これは!と思い、試してみました。
 
以下、手順です。
 
1. レジストリエディタで
   HKEY_LOCAL_MACHINE\ControlPanel\GPS Settings の
   Hide 1 を Hide 0
   に変更し、再起動すると、GPSコントロールパネルが表示された。
2. レジストリエディタで
   HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPSIDレジストリ内に
   文字列キー(値:Dll/値のデータ:GPSID.dll)を追加する。
3. [スタート]→[設定]→[システム]→[GPS]
   より、
   【プログラム】タブ内のGPSプログラムポートをCOM0に設定する。
   【ハードウェア】タブ内は設定をする必要は特に無し。
   【アクセス】タブ内の□GPSを自動的に管理するにチェックをつける。
4. MimicGPSインストール
   公開先からダウンロードして実行する。
   測位開始をタップする。
   MimicGPS はそのまま実行しておく。
5. WZero3 から、www.google.co.jp/gmm にアクセスして、
   Google Map をインストールする。
   [メニュー]→[現在地を検出] により、現在位置を表示する。
 
これで、無事  WZero3 WS004SH でも動きました。
 
こんなことを考える人がいるなんて・・・・すごい!

ジェネリクスの場合のFindの実装パターン

ジェネリクスの場合のFindの実装パターンの覚書
 
List<AmedasLocation> ameLocation で、Find したい場合の例 
 
  // メニューと一致するAmedasLocation情報を検索
 
AmedasLocation al = ameLocation.Find(
    delegate(AmedasLocation aloc)
    {
      return aloc.Text == ((MenuItem)sender).Text;
    }
  );

結構使いそうだけど、すぐ忘れそうなのでメモ。

 

Web Service の Web サイトの発行時の単なるメモ

Web Service の Web サイトの発行時の単なるメモ。

たまにしか、Web Service の発行はしないので、毎回迷う。メモっておこう。

Web Service の発行時のターゲットの場所
 
この下に、ソリューションのファイル(Service.asmx, etc) がコピーされる。
 
Virtual Directory が作成される。そこにホスティング管理ソフトより Script の実行権を付与する必要がある。
 
Web Service の発行時のターゲットの場所に、
を指定してしまうと、既存のファイルが消されてしまい、復旧が面倒なので注意。
 
 
 

WZero3DeAmedas に関するバグレポート・要望など

WZero3DeAmedas を公開します。
WZero3DeAmedas に関するバグレポート・要望など、ありましたらこちらにコメントお願いします。
 
元記事はこちら。
 
現在の最新バージョンは、WZero3DeAmedas V2.0.4.0 (ベータ4)です。
 
ツールのダウンロードは、
 
2007/9/9

2.0.4.0 Beta4

Beta4バージョン。

    • レーダー・降水ナウキャストを過去2時間、予想1時間、10分刻みに修正。
    • スレッド動作中にアプリを終了できないバグを修正。
    • 拡大・縮小率の計算が間違っていたので、修正。これに伴い、拡大縮小率を次のように変更。
      全体表示(内接)→全体表示(外接)→150%→200%→400%

 

無線LAN接続切替ツール バージョンアップ

WZero3 で、無線LAN接続切替ツール の1,5,6 を使用していましたが、1.5.6(1.5.5も)には重大なバグがありました。ということなので、最新版の1.5.7 をインストール。Visual Studio で開発中のソフトを USB 接続でダウンロードしながら使っていると、USBの抜き差し後にW-SIMが無効になって、電話がかけられなくなるという問題があった。ひょっとしたら、この影響かもしれない。とりあえず、アップデートして様子を見てみることにします。