Home

BizSpark

2011-09-29 22:29:48

マイクロソフトさんでは、スタートアップ向けに BizSpark というプログラムをやってます。起業はしたものの何かと物入りで、開発環境やらをそろえるのも結構大変だったりするわけですが、その辺をサポートしてくれる、という位置づけになります。あと、うれしいのは Windows Azure の無償利用特典が提供される、というところ。日々出て行くコストはできるだけ抑えたいものです。

image/BizSpark_StartUp_s.jpg

弊社もそれほど余裕いっぱいというわけではないので、BizSpark に参加することにしました。ということで、申し込みをしてみると、さっそく登録完了です。翌日、というか、正味 12 時間ほどしかかかってません。こんなにすんなり行くとは思ってなかった ( いろいろ確認やら手続きやらがあるのかと思ってました ) ので、ちょっとびっくり。

さて、これからも今まで以上に頑張っていきたいと思います。

Go to TopGo to Top

Kindle Fire

2011-09-29 00:12:34

Kindle Fire が発表されてました。さっそくポチっと予約しようと思ったんですが、『US Only』とのこと。残念...。International Shipping になったら買おうかなぁ。

ブラウザのレンダリングを EC2 でやる、というある意味無茶苦茶なテクノロジー ( Amazon Silk ) とか、なかなか興味深いです。

Go to TopGo to Top

移行完了

2011-09-24 09:47:20

新しい PC が届いたので、この週末は移行作業をやってました。SSD につけかえて Windows 7 をインストールして、バックアップしてあったデータ類を戻してと。

いつもは外付け or 内蔵 HDD からの戻しなのでさほど時間もかからないんですが、今回は諸事情により NAS からの戻し、ということで、えらい時間がかかってしまいました。

ともあれ、なんとか移行が終了しての感想は、『画面がきれい』です。ちょっとピンクとか緑とかが強すぎる気もしますけど、ま、そのうち慣れるでしょう。Windows エクスペリエンスインデックスは Aero が 5.9 と。さくさく動いていい感じです。

Go to TopGo to Top

Windows 8 Developer Preview

2011-09-14 21:20:31

海の向こうでは build というイベントをやってるそうで、Windows 8 Developer Preview がダウンロードできるようになってます。ということで、さっそくダウンロードして、いつものように VMware にインストール、と思ったら、悲しい青画面が ( ちょっとかわいい )。

せっかくなので、VirtualPC で画面キャプチャだけ撮ってみました。

image/bsod.jpg

困ったもんだということで、さらっとググってみますと、VirtualBox では問題なくインストールできるとのこと。あわせてダウンロードして、さくっとインストールしてみました。画面としてはこんな感じ ( 枠の部分は VirtualBox のものです )。

image/windows8.jpg

Internet Explorer 10 ( Metro の方 ) はこんな感じです。アドレスバーな画面下にあったりと、なんか変な感じ。デスクトップの方は、割と今までのバージョンと違わない感じですけどね。

image/ie10.jpg

で、さらっと使ってみた感想ですが、いやー思い切ったもんですね。Windows 3.1 から Windows 95 への変化、なんてものじゃなくて、まったく別のオペレーティングシステムになってます。正直、ここまでやるとは思ってませんでした。

最近のマイクロソフトは『オトナ』になっちゃってて、いまいち、つまらない製品ばっかり、な印象だったんですが、えらい変わりようです。これがそのまま製品になる、とはとても思えませんが、すっごい楽しみ。久しぶりにわくわくする新 OS、って感じです。

Go to TopGo to Top

モニタ死亡

2011-09-10 11:26:21

不調だったモニタですが、ついにお亡くなりになった模様です。何も映らなくなりました。そういえば、ほとんど使ってなかった ナナオのモニタ があったので、今はそれを使って急場をしのいでます ( 1680 × 1050 と、ちょっと小さいですが、文句も言ってられません )。

そうそうあるトラブルではないでしょうけど、そういえば、解像度の設定をミスって何も映らなくなって、手探りで解像度設定を元に戻した、なんてこともやった記憶が。

とりあえず、新しい PC が来るまではこんな感じ堪え忍びます。

Go to TopGo to Top

モニタ不調

2011-09-09 23:13:19

長いこと使ってきた Thinkpad W500 のモニタが不調です。なんか画面がちらちらします。急にスリープしたようにブラックアウトしたり ( でも、HDD とか動いてます ) と。

とりあえず、メインの ATI Mobility FireGL の方を無効にして、オンボードの VGA でごまかしてますが、いつだめになるのやら。ということで、久しぶりにラップトップをポチっとしました。ほんと、Thinkpad はもうそろそろ卒業か、とか思いつつ、やっぱり Thinkpad です。今度は T520 ってのにしてみました。

15 インチなんですが、HD とかってことで、1920 × 1080 の画面サイズしかないんですね。今使ってるやつが 1920 × 1200 なので、縦がちょっと寸詰まりになると。ま、その辺はしょうがないです。新しいのが届くまで、今のやつが無事使えることを祈りつつ...。

Go to TopGo to Top

デバイス一覧をツリー形式で取得

2011-09-01 20:35:32

ここのところ、SetupDi 系の API とかを使ってデバイス情報を取得したりする、ってのをやってました。で、一応の成果をば。デバイスはツリー構造になっているので、ツリーをたどっていくといろいろ引っ張れます。この例では、CM_Get_Child() とか CM_Get_Sibling() 関数を使って、Computer クラスのデバイス ( ACPI x64-based PC ) から、その子供と子供の兄弟を取得しています。


  #include "stdafx.h"
  #include <Windows.h>
  #include <locale.h>
  #include <setupapi.h> 
  #include <cfgmgr32.h>
  #include <devguid.h>

  #pragma comment (lib, "setupapi.lib") 
  #define PRINTSPC \
    for (int i = 0; i < level; i++) { _tprintf(_T("  ")); }

  DEVINST _getPcDevInst() {
    HDEVINFO hDevInfo; 
    DWORD idx; 
    SP_DEVINFO_DATA sdd; 
    BOOL result; 
    TCHAR buffer[1024];
    DWORD size;

    hDevInfo =
      ::SetupDiGetClassDevs(NULL, NULL, NULL, 
                            DIGCF_ALLCLASSES);

    idx = 0;
    while (true) {
      sdd.cbSize = sizeof(SP_DEVINFO_DATA);
      result =
        ::SetupDiEnumDeviceInfo(hDevInfo,
                                idx, &sdd);

      if (!result) {
        break; 
      }

      if (sdd.ClassGuid == GUID_DEVCLASS_COMPUTER) {
        size = sizeof(buffer) / sizeof(TCHAR);
        ::SetupDiGetDeviceRegistryProperty(
            hDevInfo,
            &sdd,
            SPDRP_DEVICEDESC,
            NULL,
            (PBYTE)buffer,
            size,
            &size);
        _tprintf(_T("[%s]\n"), buffer);
        return sdd.DevInst;
      }
      idx++;
    }
    return NULL;
  }

  void _getChild(DEVINST current, int level) {

    TCHAR bufDesc[1024];
    TCHAR bufName[1024];
    DWORD size;
    DEVINST di;
    CONFIGRET result;

    result = CM_Get_Child(&di, current, 0);
    if (result == CR_SUCCESS) {
      bufName[0] = _T('\0');
      size = sizeof(bufName) / sizeof(TCHAR);
      result =
        ::CM_Get_DevNode_Registry_Property(
            di, CM_DRP_FRIENDLYNAME, NULL,
            bufName, &size, 0);
      size = sizeof(bufDesc) / sizeof(TCHAR);
      result =
        ::CM_Get_DevNode_Registry_Property(
            di, CM_DRP_DEVICEDESC, NULL,
            bufDesc, &size, 0);
      if (result == CR_SUCCESS) {
        PRINTSPC;
        _tprintf(_T("+ [%s] %s\n"), bufDesc, bufName);
      }

      _getChild(di, level + 1);

      while (true) {

        result = CM_Get_Sibling(&di, di, 0);
        if (result != CR_SUCCESS) {
          break;
        }

        bufName[0] = _T('\0');
        size = sizeof(bufName) / sizeof(TCHAR);
        result =
          ::CM_Get_DevNode_Registry_Property(
            di, CM_DRP_FRIENDLYNAME, NULL,
            bufName, &size, 0);
        size = sizeof(bufDesc) / sizeof(TCHAR);
        result =
          ::CM_Get_DevNode_Registry_Property(
            di, CM_DRP_DEVICEDESC, NULL,
            bufDesc, &size, 0);
        if (result == CR_SUCCESS) {
          PRINTSPC;
          _tprintf(_T("+ [%s] %s\n"), bufDesc, bufName);
        }

        _getChild(di, level + 1);
      }
    }

  }

  int _tmain(int argc, _TCHAR* argv[])
  {
    setlocale(LC_ALL, "Japanese");
    _getChild(_getPcDevInst(), 1);
    return 0;
  }

で、結果として得られるのがこんな感じのツリーです。『結構いい感じじゃん』とか思ってたんですが、よくよくデバイスマネージャを確認してみると、[ 表示 ] メニューで [ デバイス ( 接続別 ) ] ってのを選ぶと、これと同じような結果が得られることに気づきました ( もちろん、プログラムを作ってから )。

骨折り損のくたびれもうけとはまさにこのこと。ま、『プログラムから取得できる、ってことに意義がある』ということにしといてください。なお、↓ では、諸事情により一部カットしてあります。USB とかディスクドライブのツリーがおもしろい感じですね。


  [ACPI x64-based PC]
    + [Microsoft ACPI-Compliant System] 
      + [Intel Processor] Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
      + [Intel Processor] Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
      + [PCI バス] 
        + [Mobile Intel(R) 4 Series Chipset PCI Express Root Port - 2A41] 
          + [ATI Mobility FireGL V5700 ] 
            + [ThinkPad Display 1920x1200] 
        + [Mobile Intel(R) 4 Series Express Chipset Family] 
        + [Intel(R) 82567LM Gigabit Network Connection] 
        + [High Definition Audio コントローラー] 
          + [Conexant 20561 SmartAudio HD] 
          + [ThinkPad Modem Adapter] ThinkPad Modem Adapter
        + [Intel(R) ICH9 Family USB2 Enhanced Host Controller - 293A] 
          + [USB Root Hub] 
            + [USB 大容量記憶装置] 
              + [ディスク ドライブ] LaCie BigDisk USB Device
            + [Apple Mobile Device USB Driver] Apple Mobile Device USB Driver
              + [Apple iPhone] Apple iPhone
        + [Intel(R) ICH9M/M-E Family 4 Port SATA AHCI Controller - 2929] 
          + [IDE チャネル] ATA Channel 0
            + [ディスク ドライブ] M4-CT512M4SSD2 ATA Device
          + [IDE チャネル] ATA Channel 1
            + [ディスク ドライブ] Hitachi HTS547575A9E384 ATA Device

Go to TopGo to Top