MixedRealityHeadsetの経過

OSビルドを16281にしてみた。
ビデオドライバーを最新の385.41にしてみた。

良かった事
・デバイスマネージャーにMixedRealityHeadsetが認識されている。

悪かった事
・なんにも映らない。
・カメラも軌道していない?

( ノД`)シクシク… もうやだー

次の手
USBの電流が足らないかもしれないのでセルフパワーのUSBハブ購入

道のり遠いなぁ

Windows Updateの失敗

もう~ずーーっと
Windows Updateで失敗する更新プログラムがある。基本的にOffice系の更新プログラムで、エラーコードは80070643。どうも.Net Freamworkに依存しているエラーらしい。ツールを使ってFreamwork抜いてもこの現象は治らない。開発環境に依存してるのも疑わしのでもう使っていないVisualStudio2008をアンインストールしてみたが、今度はVisualStudi自体がアンインストールできない状態になっていました。ぐぐってみたら手動でアンインストールする方法があったのでその手順で進めていくと、今度はMicrosft Document Exploerer 2008がアンインストールできない。 
詰んだか… 強行手段でインストールのエントリ自体をツール使って削除してみましたが、VisualStudio本体の削除はやはりできない。 完全詰んだぁ!!
と思いましたが、インストール済みのプログラムリストをみるとMSDNライブラリが別途インストールしてある。DocumentExploererはMSDNとも関係があるはずなので、MSDNも消してみたら、VisualStudio本体もアンインストールできるじゃないですかぁ!

その後、WindowsUpdateを再更新したら今まで失敗してた更新プログラムが全部通りましたよ。

まさかMSDNライブラリが悪さしてるとは思いもしませんでした。

Contains再び

var contains = typeof(IList).GetMethod("Contains");
Expression.Call(****, contains, ***);

new [] { "hoge", "hogehoge"}.Contains(カラム名);

前回、上記の用にかけばラムダ式までは辿り着いたのですが、いざ呼び出してみるとエラー
.Contains(System.Object)にはバインドできないとおっしゃっております。引数は対象のカラムの型と合わせる必要がありそうです。

直接ラムダ式かけば.ContainsはIN句に展開されるのは確認している。Containsの引数はカラムの型にマッチするような集合クラスで作成すれば良いはず。
ということで、配列は諦めてリスト方式(Expression.ListInit(Expression.New(typeof(List)),***))でトライしてみたました。
ラムダ式的には

new List'1() {Void Add(System.String)("hoge"), Void Add(System.String("hogehoge")}.Contains(カラム名);

の形になりました。始めて見たときはこれがIN句に展開されるとは思いませんでしたが実行したらちゃんとIN句展開されて一件落着

Containsが呼べた。

色々試行錯誤した結果

new [] { "hoge", "hogehoge"}.Contains("hoge");

できました。
Expression.Callの呼び方を
Call(Expression, String, Type, Expression)だった呼び出し方式をCall(Expression, MethodInfo, Expression[])に変更しました。

MethodInfoは IListのContainsを指定することによりNewArrayInitに対してCallが可能でした。

var contains = typeof(IList).GetMethod("Contains");
Expression.Call(****, contains, ***);

Web散々探したがなかなか手がかり見つからなかった・・・

Containsが呼べない

ラムダ式を組み上げてるですが、Expression.NewArrayInitで作成したExpressionのオブジェクトを使用して、Expression.Call(***,"Contains",***,***)を呼び出すと例外をはく状態。例外を見ると、hogehoge[]にはContainsというメソッドはないと言っている。

new [] { "hoge", "hogehoge"}.Contains("hoge");

を組み立てたいだけなんだが・・・

jasmine-domの.d.ts書いてみた

最近はTypeScriptを勉強(遊んで)います。環境的にはWebstormをコード書いててTestem+jasmineでテストしています。今週DOMのテストしようと思い、調べたらjasmine-domを導入すればDOMのテストもできることがわかったのですが、TypeScript用の.d.tsファイルが転がってなかったので自前で書きました。自分が使用したMatchers以外は動作確認はしていないのですが、まぁとりあえず https://bitbucket.org/senbei_3/definitelytyped/src にアップしました。 ここにも貼っておきます。

// Type definitions for Jasmine-dom
// Project: http://github.com/jeffwatkins/jasmine-dom
// Definitions by:
// DefinitelyTyped:

declare function readFixtures(...fixtureUrls:string[]):void;
declare function loadFixtures(...fixtureUrls:string[]):void;
declare function setFixtures(html:HTMLElement):void;
declare function sandbox(attributes:string):HTMLElement;    // Must Check
declare function sandbox(attributes:any[]):HTMLElement;  // Must Check

declare module jasmine {
    function getFixtures():Fixtures;

    interface Fixtures {
        new ();
        set(html:HTMLElement):void;
        load():void;
        read():HTMLElement;
        clearCache():void;
        cleanUp():void;
        sandbox(attributes:string):HTMLElement; // Must Check
        sandbox(attributes:any[]):HTMLElement; // Must Check
    }

    interface Matchers {
        toHaveClass(className:string):bool;
        toBeVisible():bool;
        toBeHidden():bool;
        toBeSelected():bool;
        toBeChecked():bool;
        toBeEmpty():bool;
        toExist():bool;
        toHaveAttr(attributeName:string, expectedAttributeValue:any):bool;
        toHaveId(id:string):bool;
        toHaveHtml(html:string):bool;
        toHaveText(text:string):bool;
        toHaveValue(value:string):bool;
        toMatchSelector(selector:string):bool;
        toContain(selector:string):bool;
    }
}