kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

MSDN Library VS2008 SP1版

マイクロソフト公式ダウンロード センターから MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版) をダウンロード
登場している…のですが、2GBを超えているためIE6ではダウンロードできません。IE7以上かFirefoxなどでどうぞ。私が会社で試したときはまだMSDNサブスクライバダウンロードにもなかったので、Firefoxを使いました。ちなみにIEだと一度テンポラリフォルダにダウンロードしてからコピーということになるので、既定ではシステムドライブに空きがないと泣きを見ます。
SQL Server 2008にPowerShellやWindows Installer 4.5が必要なのは困るからなんとかISOでワンパッケージ版もほしいみたいなことをTech・EdのPeer Talk lunchの場でいってのですが、「それやるとたぶん2GB超えるからダウンロードセンタに登録するのは難しい」みたいなことを言われたんですけどね…。
まぁライブラリはオンライン参照という手もあるし、別なのかもしれませんが。

LINQ使いどころ

Visual Studio 2008使ってもいろいろな事情で.NET Framework 2.0プロジェクトしか作らせてもらえないという向きもあるかもしれません。そんな場合に単体テストプロジェクトで使ってみるといいかもしれません。

public  List<string> foo_func()
{
   List<string> bar = new List<string>();
   ...
   return bar;   
 }

[TestMethod]
public void foo_functest()
{
  List<string> expected = new List<string>{ "...","...", };
  List<string> actual = target.foo_func();
  IEnumerable<string> result = actual.Except(expected);
  if(result.count != 0){
    Assert.Fail("結果が一致しませんでした");
  }
} 

こんな感じ。順番も重要ということになればこれでは無理ですが、大抵内容が一致していればいいはずなのでこのくらいでいいかなと。先日の日記で、個人的に「StartWith()使えば…厳密には同じではないかも」という突っ込みをいただきました。や、そんなメソッドもありましたね(^^;;。
それからこれも完全に忘れていましたが、正規表現RegexクラスにあるIsMatch()なんてのもばっちり使えますね。考えてみたら私の用途ではほとんどLINQにIsMatch()使うだけでカバーできてしまうかもしれません。
ところで日本語メソッドに対して「単体テストを作る」を実施すると、作成された単体テストメソッドの末尾(上でいえばfoo_functest()の次)に変な文字?がついてしまって、そのあとの識別子が認識してくれなくなるという現象が出てきました。どんなときに再現できるかちょっとやってみます。

続:HPET

なぜかid:kkamegawa:20080914:p2の件でコメントが(^^;。
id:hito_hpp wrote:
>> 比較的最近のマザーボードでも、BIOSで無効にされている事が多いようです。
HPETに対応したOSを使っているならば、必ず有効にしておくべきなのですが。
特に、マルチコア全盛の今にあっては。

LINQ to XML大助かり

もともと.NET FrameworkXMLプログラムってほとんどしたことないのですが、それでもLINQ to XMLの便利さにはいたく感動しています。今までの環境*1だとたぶん300行くらい使って書くようなプログラムがわずか4行。もちろんその裏でコンパイラさんやランタイムさんが頑張ってくれているのは言うまでもないのですが。

var lists1 = from xmldat in hoge
                  where xmldat.条件1.Length == 0
                  select xmldat;
var lists2 = from xmldat in hoge
                  where xmldat.条件1.Length > 0
                  select xmldat;
XElement xEle = new XElemet("ROOT",
                      new XElement("Node", 
                      lists1.Select(p => 
                          new XElement("Element1", p.name)),
                          list2.Select(t => new XElement("Element1", t.name), new XAttribute("value", t.attribute)))));

こんな感じかな。多分間違っているので、雰囲気だけ。メンバの内容に特定の値が含まれていれば属性を追加してXML treeを作るなんてことが一文でできるのはちょっと感動です。あと、Visual Studioの自動インデントも構文確認に大いに役立ちます。適切なインデントが行われなかった場合、たぶん間違いなくXMLの構文間違いを指摘されます…無視して実行すると、なんど例外が起きたか(;-;)。
こことは直接関係ないですが、Visual BASICはソース中にXMLリテラルを直接書いて、カラーハイライトが行われます。これデモンストレーター向け機能だろうと思っていたら、単体テストで使うときに便利だということに今日気づきました。XDocument.Parse()で書いてもいいんだけど、ダブルクォーテーションの前に\を書くのめんどくさい…。
もう一つ、ラムダ式の一時変数って、ちょっと間違えるとスペースバーを押したタイミングで、行末に移動してしまうので、やや困ってます。.NET Frameworkもキーワードなどが多く増えてアルファベットや記号であきのありそうなものなんてそうそうありません。こんなので困っているの私だけ?
MSDN Libraryも多少参考にするのですが、実際の書き方としてはどうも役に立つ記述ってほとんど見かけないのです。書き方にちょっと困ったらPro LINQを読んで参考にさせていただいています。洋書だけど非常に助かります。

Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net)

Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net)

あ、ちなみにこの本にクエリ構文はほとんど出てきません。ほとんどと書いているけど、実例コーナーでは多分一つもないです。

*1:Visual StudioJavaではない