メイン

2010年05月13日

MoqでEventを模擬する

Moqの評判がいいので、マイコミの記事とかを見ながらMoqを使い始めようとしています。

今回はMoqのRaiseを使ってMockでEvent発生の模擬やらせようと思います。

まずはMockの対象となるインターフェイスです。

   1:  namespace MoqTest
   2:  {
   3:      public interface IGreeting
   4:      {
   5:          string Print(string param);
   6:   
   7:          event EventHandler TestEvent;
   8:      }
   9:  }

これのイベント発生を確認するテストです。

   1:  [TestMethod()]
   2:  public void EventTest() {
   3:      bool flag = false;
   4:      var mock = new Mock<IGreeting>();
   5:      mock.Object.TestEvent += (o, e) => {
   6:          flag = true;
   7:      };
   8:      mock.Raise(x => x.TestEvent += null, new EventArgs());
   9:      Assert.IsTrue(flag);
  10:  }

まず5行目から7行目でIGreetingのモックオブジェクトにイベントメソッド(ここでは匿名メソッド)を登録しています。

次の8行目ではMock<T>クラスのRaiseメソッドを使って、IGreetingsのTestEventイベントを発生させます。このときRaiseの二番目の引数でInterface定義に合わせたEventArgsのオブジェクトを渡します。

ここでイベントが実際に発生し、flagがtrueに書き換わるので、9行目のAssertが通りテスト成功となります。

続きを読む "MoqでEventを模擬する" »

2010年05月11日

NUnitでeventのテストをする。その二。そして訂正。

3/30日に「NUnitでeventのテストをする。」という記事を書いたのですが、当初この方法でそれなりにうまく行っていたのですが、イベントをキックするメソッドを呼び出してからそれなりに時間のかかる処理ですと、当然イベントが呼び出される前にNUnitのGUIランナーがテストクラスを開放してしまうので、イベントメソッドが呼び出されずテストとしてはグリーンなんだけど意図した終わり方では当然無いと言うことになります。

ようは何とかしてイベントが呼び出されるまで、NUnitのGUIランナーをつなぎ止める。つまりは、Testメソッドが終わらないようにしないと行けないわけです。そういうことで、どうしたらいいんだろうと悩んでいたのですが、以下の記事で助かりました。

Unit Testing Multi-Threaded Asynchronous Events « John Opincar’s Blue Corner

正直Thread関係のクラスを使えばいいなんて思いつきもしませんでしたよと。ヲレだめすぎると。

   1:  //指定した日付のデータをデータベースから取得する
   2:  [Test]
   3:  public void TestGetLogData() {
   4:      //ManualResetEventのインスタンスを作るよ!
   5:     ManualResetEvent manualEvent = new ManualResetEvent(false);
   6:      //イベントが呼び出されたことを示すフラグを設定するよ
   7:      bool evenFired = false;
   8:      //必要な設定を読み込むよ
   9:      var settings = LogClientSettings.Load(testDataPath);
  10:      //テスト対象のインスタンスを作るよ
  11:      var model = new LogModel(settings);
  12:      //イベントメソッドを定義してやるよ
  13:      model.LogGetted += (o, e) => {
  14:        Console.WriteLine("Record Count {0}", model.Logs.Count);
  15:          //イベント発生のフラグを立てるよ
  16:          evenFired = true;
  17:          //待機を解除するよ
  18:          manualEvent.Set();
  19:      };
  20:      //Event Fire!!
  21:      model.GetLogData(new DateTime(2010, 4, 26));
  22:      //1秒待機するよ。
  23:      manualEvent.WaitOne(1000, false);
  24:      //イベント発生のフラグが立っていたらテスト成功!!
  25:      Assert.IsTrue(evenFired, "GetLogData Fired.");
  26:  }

このようなコードになります。

ManualResetEvent をつかって、まず、イベント呼び出す要因となるメソッドを呼び出した後に、WaitOneを使ってこのスレッドをブロックします。Setが呼び出されるかもしくは、設定時間が経過するまでブロックされます。そして、イベントメソッドの中でSetを使ってスレッドのブロックを解除します。このようにすることでイベント発生までテストランナーを待たせることできます。

当然WaitOneでの待ち時間は調整が必要でしょう。

2010年05月09日

SQL Server 2008 R2 開発環境の構築手順

SQL Server 2008 R2の開発ツールはVisual Studio 2008, .NET 3.5ベースの環境で、そのリリースタイミングにもかかわらずVisual Studio 2010ではありません。このため、現段階で環境構築する場合には注意が必要です。

またお約束ですが、Visual StudioとMS SQL Serverの言語エディションは必ずあわせてください

Windows 7 / Windows Server 2008 R2でのインストール手順です。

  1. .NET Framework 3.5 SP1のインストールと有効化。Win2008R2では有効化が必要なので機能の追加から有効化してください。
  2. IISの有効化。(必要に応じて)
  3. Visual Studio 2008のインストール。また、Database Editionのインストールも。
  4. Visual Studio 2008 SP1のインストール。
  5. SQL Server 2008対応GDRのインストール。
  6. Office 2010のインストール。
  7. SQL Server 2008 R2 Developer Edition(他)のインストール。
  8. VS2008向けサードパーティツールのインストール。
  9. Visual Studio 2010のインストール。

ざっとこんな感じです。

現実的な問題として、SQL Serverを使用した開発を続ける場合、まだしばらくはVisual Studio 2008とつきあう必要がありそうです。

2010年05月06日

Linq to XML 入門 その5 (名前空間)

やっていなかったことの一つに名前空間があります。ここではプレフィックスを持つ名前空間を宣言してみます。

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Xml.Linq;
   6:   
   7:  namespace TestLinqToXML
   8:  {
   9:      public class CreateXML
  10:      {
  11:          public XDocument createTestData() {
  12:              var settings = new XDocument(
  13:                  new XDeclaration("1.0", "utf-8", "yes"));
  14:              settings.Add(new XElement("LogClientSettings", 
  15:                  new XAttribute(XNamespace.Xmlns + "xsi", 
  16:                  "http://www.w3.org/2001/XMLSchema-instance"),
  17:                  new XAttribute(XNamespace.Xmlns + "xsd", 
  18:                      "http://www.w3.org/2001/XMLSchema")));
  19:              settings.Root.Add(new XElement("DatabaseName", 
  20:                  "TestDatabase"));
  21:              XElement list = new XElement("GridSettings");
  22:              XElement temp = new XElement("GridSetting");
  23:              temp.Add(new XElement("PointId", 1));
  24:              temp.Add(new XElement("ControlName", "dbGrid1"));
  25:              temp.Add(new XElement("ColumnNumber", 1));
  26:              temp.Add(new XElement("Description", "あの"));
  27:              list.Add(temp);
  28:              settings.Root.Add(list);
  29:   
  30:              
  31:              return settings;
  32:          }
  33:      }
  34:  }

肝は15行と17行です。XAttributeでつけるんですね。(当たり前ですね)

結果はこんな感じです。

<LogClientSettings 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <DatabaseName>TestDatabase</DatabaseName>
  <GridSettings>
    <GridSetting>
      <PointId>1</PointId>
      <ControlName>dbGrid1</ControlName>
      <ColumnNumber>1</ColumnNumber>
      <Description>あの</Description>
    </GridSetting>
  </GridSettings>
</LogClientSettings>

このほかLinq to XMLでの名前空間について詳しくは以下のMSDNドキュメントをお読みください。

XNamespace クラス (System.Xml.Linq)

2010年04月28日

Microsoft Visual Studio Express 日本語版一般公開

Express Editionの日本語版が無事公開されたようです。

現状はWebインストーラーのみのようで、セットアップは以下のサイトから可能です。

Microsoft Visual Studio Express

そのほか製品版の体験版等も大量にマイクロソフトダウンロードサイトにアップされているようです。

2010年04月27日

Isolation, Agents, and Message-passing in .NET : Axum for Visual Studio 2010 RTM is here!

そゆもの。

Isolation, Agents, and Message-passing in .NET : Axum for Visual Studio 2010 RTM is here!

Performance of Concurrent Collections in .NET 4

.NET 4のパラレルで追加されたスレッドセーフな各種データ構造と今までの同等のものとの並列実行時のパフォーマンスの違い、また、追加されたデータ構造間でのパフォーマンス比較について まとめられています。

Parallel Programming with .NET : Performance of Concurrent Collections in .NET 4

当然のことながらスレッド数が多い状況では追加されたデータ構造の方が早く、簡単なデータ構造の方が早いという結果です。ただ、定量的にまとめられて資料は今までほとんど無いと思いますので、大変参考になる資料だと思います、

2010年04月23日

patterns & practices – Enterprise Library

そゆもの。ちゃんと4.0に対応してきている。

patterns & practices – Enterprise Library

2010年04月22日

Samples for Parallel Programming with the .NET Framework 4 - Home

そゆもの。

Samples for Parallel Programming with the .NET Framework 4 - Home

並列拡張に関しては以下を参照。

.NET Framework の並列プログラミング
http://msdn.microsoft.com/ja-jp/library/dd460693(v=VS.100).aspx

ちなみに今からで並列プログラミングを勉強しようとか取り組もうとされる方は、4以前のスレッドやその周囲技術については特に勉強せずに、ここから始めればいいんじゃないかなと思います。

Dynamic Language Runtime 1.0リリース

.NET 4.0がRTMしたのでDLRもそろそろと思ってみたら16日付で1.0になっていました。その前にIronPython、IronRubyでは1.0となっていたので、これらと同じだと思います。

Dynamic Language Runtime

ソース内にはIronPython, IronRuby, 実装サンプルのsympl等の言語実装のコードも含まれています。

2010年04月21日

Visual Studio 2010で既ENUインストール済み環境で日本語版を上書きインストールした場合の注意点

Microsoft Silverlight 4 Tools RC2 for Visual Studio 2010もインストール済みの場合はこれを再度インストールする必要があります。

Download details: C# Language Specification 4.0

それでC#はねーのかなと思ったらあった。同じくWord版とCHM版。

Download details: C# Language Specification 4.0

Download details: Visual Basic Language Specification 10.0

ほほう。こんなものも。英語。WordとCHM版があります。

Download details: Visual Basic Language Specification 10.0

Visual Studio 2010 / .NET Framework 4 日本語版 MSDNサブスクライバダウンロードでダウンロード可能に

と言うことでございます。

日本語版ではAlamaiダウンローダーは使われていない模様。

まだみたいですね

                ∧        ∧  マチクタビレタ~     マチクタビレタ~/  マチクタビレタ~       /  ヽ      ./  ヽ      マチクタビレタ~/                 /   ヽ―――/   ヽ   マチクタビレタ~  マチクタビレタ~/    マチクタビレタ~  /       l___l   \        マチクタビレタ~/              |      ●  |    |  ●  |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/        へ    |  へ     ヽ   ./     | < ねえ、VS2010まだぁー?/         \\   \ \\     ヽ/     /   \____________/チン        \\  .> \\          ヽ/   チン      \\/    \\  _      |  マチクタビレタ~/      \ ̄ ̄ ̄ ̄ ̄ ̄ ̄/  / ̄   ヽ    /   _/        \回回回回回/ ̄ ̄ヽ        / ̄ ̄ /|    マチクタビレタ~/         \___/      ヽ____/  /  .|         マチクタビレタ~/                               /    |  マチクタビレタ~/   __________________/     .|/                             |      |     マチクタビレタ~

まさか、またアメリカ太平洋時間の21日というヲチデワ・・・・

2010年04月17日

Visual Studio 2010 各エディションの比較

http://www.microsoft.com/japan/visualstudio/products

完全なメモ書き。

2010年04月16日

Silverlight 4 Tools for Visual Studio

追記(7:35)

以下のMSダウンロードよりダウンロードください。内容的には以下のようになるようです。

Instructions

This package is an add-on for Visual Studio 2010 to provide tooling for Microsoft Silverlight 4 and RIA Services. It can be installed on top of either Visual Studio 2010 or Visual Web Developer 2010 Express. It extends existing Silverlight 3 features and multitargeting capabilities in Visual Studio 2010 to also create applications for Silverlight 4 using C# or Visual Basic.
Silverlight 4 Tools for Visual Studio 2010 includes several features:

  • Support for targeting Silverlight 4 in the Silverlight designer and project system
  • RIA Services application templates and libraries
  • Support for Silverlight 4 elevated trust and out-of-browser applications and other new Silverlight 4 features

This download will install all components necessary for Silverlight 4 and RIA Services development:
  • Silverlight 4 developer runtime (final release)
  • Silverlight 4 SDK (software development kit, final release)
  • Update for Visual Studio 2010 and Visual Web Developer Express 2010 (KB976272, pre-release)
  • Silverlight 4 Tools for Visual Studio 2010 RC2
  • WCF RIA Services for Silverlight 4 RC2

The final release of Silverlight 4 Tools will be made available in the near future.

Microsoft Silverlight 4 Tools for Visual Studio 2010
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bf5ab940-c011-4bd1-ad98-da671e491009

RuntimeはRTM、ToolsはRC2という状態ですね。

続きを読む "Silverlight 4 Tools for Visual Studio" »

2010年04月14日

Visual Studio 2010でのF#インタプリターの開き方

VS10を入れるとF#としてのメニュー項目がスタートメニューにないので、インタプリターをどう開くかみたいのもありますが、インストール先は今まで通りなので、VS2010のコマンドプロンプトを開けば必要なパスは通っているようなので「FSi」とタイプすれば起動します。

image

Silverlight 4のリリースは4/15

今基調講演が終わりました。

4/15にリリースとなるようです。また同時にVisual Studio 2010も提供となるようです。

Expression Blendもそこから8週間以内の提供となるようです。

基調講演後もCh9のLiveは続いています。

http://www.microsoft.com/silverlight/silverlight-4-launch/

2010年04月13日

IronPython - Release: 2.6.1

IronPythonもリリースです。

IronPython - Release: 2.6.1

今回の2.6.1から.NET4版のバイナリー配布も行われるようです。

IronRuby 1.0 Released !!

Jimmy SchementiさんからMLにお手紙来たよ。

http://rubyforge.org/pipermail/ironruby-core/2010-April/006748.html

Ruby and .NET developers,
The IronRuby team is pleased to announce IronRuby 1.0!
Download IronRuby 1.0 now:
http://ironruby.net/download
Direct download links (Windows installers and ZIP files for both .NET 2.0 SP1 and .NET 4.0):
http://ironruby.codeplex.com/releases/view/25901
IronRuby 1.0 is the first stable version of IronRuby, targeting Ruby 1.8.6 compatibility. For a high-level compatibility report solely based on RubySpec, see http://ironruby.info. For a detailed change-log since 0.3, see the change-log page: http://rubyforge.org/frs/shownotes.php?release_id=43292.
IronRuby now comes in two flavors - one that runs on top of .NET 4.0, and one that runs on any earlier framework starting with .NET 2.0 SP1. The .NET 4.0 flavor features faster startup time, compatibility with C#'s dynamic keyword, and access to the new features in .NET 4.0. So, the .NET 4.0 flavor is the preferred download now, as the Microsoft .NET Framework 4.0 is publically available as of today. For Mono compatibility, use the zip file release for 2.0 SP1.
Download .NET 4.0:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
Since IronRuby's first public release there have been 455 reported bugs fixed, 98 community members reporting bugs, 100+ code contributions by 15 community members, and 11 core-team members. Thank you to everyone who made IronRuby 1.0 possible:
IronRuby Core Team Alumni:
Curt Hagenlocher, Dave Remy, Haibo Luo, John Lam, John Messerly, Oleg Tkachenko, and Srivatsn Narayanan.
Source code contributors:
Daniele Alessandri, Eric Nicholson, Ivan Porto Carrero, Jayme Edwards, Jb Evain, Jirapong Nanta, Kevin Radcliffe, Michael Letterle, Peter Bacon Darwin, Ryan Riley, Seo Sanghyeon, Shay Friedman, Timothy Chen, Unnikrishnan Nair, and Wayne Kelly.
Bug Reporters:
Aghoda, akaranta, Alex C., Alexandro Rocha, Andrius Bentkus, Antonio Cangiano, Antti Karanta, aslakhellesoy, atownley, Bela Babik, Ben Hall, Bex_3000, Brad Wilson, Brian Blackwell, brunomlopes, Charles Lowe, chrismaduro, Coder42, crèmes, Dan Fitch, Daniele Alessandri, DavidSchmitt, daytrip00, DotNetNerd, eoinomeara, Eric Nicholson, Florian Kruesch, giggio, glennen, Greg Houston, harald42, hedge_hog, hoornet, hotgazpacho, i_iob, imasho, Ivan Porto Carrero, Jirapong Nanta, john5exonets, Joxter Mumurik, just3ws, Justin Bailey, JustinCle, jwthompson2, K E, kaiwren, KAZUu, Kevin Radcliffe, kralor, lukesmith, m4dc4p, maslov, mayuki, meinrad recheis, michaelerasmus, MiddleTommy, motobuzz, Narko, Nick , chrock, niclasnilsson, nikosd, Nobody, nolith, Orion Edwards, ourben, Peter Bacon Darwin, PlasticLIzard, pwistrand, raubarede, Ray Vernagus, rbandrews, rbrother, rifraf, riles01, Robert Brotherus, rohancragg, romanvbabenko, ruzplex, Seo Sanghyeon, SergeyMirvoda, shannoncornish, Shay Friedman, Stefan Dobrev, Steve Eichert, stkenned8, Thibaut Barrère, TimothyB, timross, Timothy Chen, turp, undees, vaderpi, vertiginous, vvnurmi, Wayne Kelly, xerxesb, xport, and Zyl Wolf.
I think I speak for everyone when I extend a very special thanks to John Lam, for without his pursuit of an integration between Ruby and the CLR, IronRuby would surely never gotten a chance to exist.
As always, if you find any bugs or have a feature request, please open an issue on CodePlex: http://ironruby.codeplex.com/WorkItem/Create.aspx.
We hope you enjoy writing Ruby code for the .NET framework, and thank you for your continued support!
Sincerely,
The IronRuby Core Team
Shri Borde, Jim Deville, Tomas Matousek, and Jimmy Schementi

とにかくすげぇ、とにかくめでてぇ。

Microsoft Kin One and Two

twoloopprint1[1]

ということで、Microsoft謹製Windows Phoneです。(といっても製造はシャープ)

Microsoft Kin One and Kin Two announced: Windows Phone roots with a social slant (updated with video) – Engadget

WP7ベースで、kin用にカスタマイズされた非常に印象的なUIを持っています。

超コミュニケーション指向あるいは相手先指向とでも言うべきUIデザインですね。

化粧箱にもこりまくりです。

Visual Studio 2010 RTM !!

ということで、予定通りRTMです。

現在MSDNサブスクライバダウンロードでダウンロード可能になっています。

Visual Studio各エディションはAkamaiダウンローダーでそれでも速度が出ている模様。通常のダウンローダーを使うTeam Foundation Serverは全く速度が出ていません。(まぁいつもの事)

また、各エディション、チームファウンデーションサーバーのトライアルもあがっています。

Download details: Microsoft Visual Studio 2010 Ultimate
http://www.microsoft.com/downloads/details.aspx?FamilyID=06a32b1c-80e9-41df-ba0c-79d56cb823f7&displaylang=en

Download details: Microsoft Visual Studio 2010 Professional
http://www.microsoft.com/downloads/details.aspx?FamilyID=5414e4c0-c1f8-473e-8e9d-a1a7be786141&displaylang=en

Download details: Microsoft Visual Studio Team Foundation Server 2010
http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&displaylang=en

2010年04月12日

4月17日 Bar VSUG Vol.5 クラウドで大きく変わるモデリング技術~UMLを超えて(東京都)

4月17日 Bar VSUG Vol.5 クラウドで大きく変わるモデリング技術~UMLを超えて(東京都)

マイクロソフトの萩原さんとアバナードの福井さん両アーキテクトによる、濃い、きっと濃すぎるクラウドコンピューティングというかPaaS使用におけるソフトウェアモデリングのお話となるようです。

この日残念ながら私は北海道に行っていて行けないのですが、現在と今後のソフトウェア開発のエッジにふれてみたい方は参加されてみてはどうでしょうか。

2010年04月07日

Windows Azure Platformの仮想マシンに.NET 4 RCが組み込まれたようです。

.NET4のRTMも近くなってきて、Azureの仮想マシンのWindows Imageに.NET4が組み込まれたようです。

Windows Azure : Upcoming Support in Windows Azure for .NET Framework 4

で、RTMが組み込まれるのは何時なんだっていうのは野暮なのかな。

Ch9: Using Rx in Real World

Get Microsoft Silverlight

ということで、その筋の人向け。

書評: .NET 2.0 Interoperability Recipes: A Problem-Solution Approach

.NET 2.0 Interoperability Recipes: A Problem-Solution Approach
.NET 2.0 Interoperability Recipes: A Problem-Solution Approach

もうこれ無くしては生きていけないかもと思える1冊。

.NETの世界だけで開発が完結する環境というのは大変幸せな環境であって、何らかのレガシーな既設システムやファームウェアとの連携をとる必要があるシステム開発の方がまだ普通の現場だと思う。そういった現場においてはレガシーなシステムとの連携のためにそれらが持つWin32 DLL、COMコンポーネント、ソケットベースのインターフェイスと自分たちが作るシステムとの連携をとるためのコードを書く必要があります。通常は.NETの豊富な相互互換性機能が助けになってくれますが、それらを使うのにはコツがいるのと、すんなりそのままでうまくいかない部分もあります。そこで頼りになるのが本書です。典型的なケースごとにソリューションが用意されており、ソースコードも豊富なので、.NETのCOM互換性機能、Win32互換機能について困っていることがあるなら本書をおすすめします。

(ブクログから転記)

2010年04月06日

Visual Studio 2010のローンチまで

もう1週間らしいですよ

7 days until the #VS2010 launch!

Twitter / VisualStudio: 7 days until the #VS2010 l ...

2010年03月30日

NUnitでeventのテストをする。

NUnitでは当然ながら一つのTestCaseは一つのパブリックなメソッドで表されます。このためイベントのテストをするためには少し工夫がいります。

   1:  //Connectを呼ぶとOnConnectedイベントが呼び出されること。
   2:  [Test]
   3:  public void TestOnConnect() {
   4:      var server = new AfwServer(handler);
   5:      server.OnConnected 
   6:          += new EventHandler<OnConnectedEventArgs>(
   7:              (sender, e) => { 
   8:                  Console.WriteLine("ServerConnected");
   9:                  Assert.Pass("** TEST PASS ***");
  10:              }
  11:          );
  12:      server.Connect();
  13:      
  14:  }

まぁ簡単書くとイベントメソッドを匿名メソッドでテストのメソッド内にに書いてしまいなさいと言うことです。

このほかこっちの方が断然COOLだぜ!って書き方をなさっている方がおられましたらぜひご連絡ください。

(追記:16:30)

Assert.Pass()の位置違うやろと横から突っ込みが入り、全くその通りであるのでコードを修正しました。。。

2010年03月28日

書評: Silverlightリファレンスブック

Silverlightリファレンスブック Webアプリケーション開発者のための (X・K BOOKS for developers)
Silverlightリファレンスブック Webアプリケーション開発者のための (X・K BOOKS for developers)

この本は著者のはじめにもあるように、Visual StudioやExpression Blendの使い方については全く書かれておらず、XAMLとC#コードのサンプルとその解説をやりたいことドリブンで項目だてして書いています。

そういう点でリファレンスとしては、今読んでいる初版のサンプルコードの間違いが第二刷(あれば)などで修正されればよいと思いますが、これから Silverlightを学習しようという人には全く向いていません。

ということで、リファレンスとして使われることが前提の書籍なので、私としてはとりあえず端からは端まで読んでいくことはやめにしました。
できるだけ早く正誤表がまとまっていくといいなぁ。

(ブクロクから転載)

2010年03月24日

IronRuby 1.0 RC4リリース

Jim DevilleからMLにお手紙が届きましたよと。

The IronRuby team is pleased to announce version 1.0 RC4!

http://ironruby.net/download

Direct download link:

http://ironruby.codeplex.com/releases/view/41854#DownloadId=112345

As IronRuby approaches the final 1.0, these RCs will

contain crucial bug fixes and enhancements that IronRuby

requires to be a fast and compatible 1.0. Now that IronRuby

is in the release-candidate stage, your feedback is even

more important. Please use these new binaries as much as

you can and report any issues you find here:

http://ironruby.codeplex.com/WorkItem/Create.aspx.

Note: The actual version of the assemblies is 1.0.0.0.

と言うことで、これが1.0です。(キリッ

よほどのバグがない限りこのまま1.0リリースになるはず。

追記:

肝心のDLRがずっとバイナリリリース無しの状態なので気になります。ソースコード自体はそれなりにチェックインされているので、CodePlex版の開発が止まっているわけではないと思うのですが。(4.0製品版のコードについては時期的に見てもうFixされているんじゃないかと思う。)

2010年03月20日

Hudsonのmsbuild pluginが地雷過ぎる

Hudsonのmsbuildプラグイン、これ結構地雷です。

正直これは使わずにWindowsのバッチコマンド実行で素直にmsbuildを実行した方が確実です。

まぁなにがだめかって言うと引数設定の扱いです。

たとえば

/p:ReferencePath="C:\Program Files\NUnit 2.5.3\bin\net-2.0\framework\"

という引数設定があったとしましょう。

これが実際に実行されるときには

"/p:ReferencePath="C:\Program Files\NUnit 2.5.3\bin\net-2.0\framework\""

に変換されてしまい、当然ビルドに失敗します。

/p:ReferencePath=\"C:\Program Files\NUnit 2.5.3\bin\net-2.0\framework\ \"

こんな感じで"をエスケープしてやると何となく動きますけど。。。

このほかまだ引数に関する細かいいけていないところが多いので、素直にコマンドを書いてあげた方が確実ですね。実際の手間もそれほど変わりませんし。。。

バグなのかなー。

Hudsonのバージョンは1.351、MSBuildプラグインのバージョンは1.3です。

2010年03月19日

Trac Explorer

Trac ExplorerはVisual Studioのアドオンとして動作するTracのWindowsクライアントで、Visual Studioの中でチケットやWikiページの確認ができます。

上の図はVSの下側にドッキングしているTrac Explorerからチケットの一覧ウインドウを表示させたようす。ここでチケットを選択すると以下のようになる。

送信者 Blog

これとTracLightning, TortoiseSVN, AnkhSVNを組み合わせるとだいぶTFSっぽくなってきます。

Trac Explorer ダウンロード:
http://sourceforge.net/projects/vstrac/

追記:

TartoiesSVNとの連携設定については以下のBlog記事が詳しかったです(多謝)

Trac Explorerを導入する | Ryuzee.com

2010年03月17日

Visual Studio Express for Windows Phone(Beta)

そゆもの。

http://www.microsoft.com/express/Phone/

ちなみにここでさりげなくVisual Studio 2010のExpressEditionがお目見えしていたりする。

まだベータ2何ですが、もう一月ぐらいで正式リリースになると思います。

Solverlight 4 RC開発環境

以下のサイトにて開発者用ランタイムRC、Sliverlight4 Tool kit RC(ENU) for VS10 RCほか開発環境のダウンロードが可能になっています。

http://www.microsoft.com/japan/silverlight/development_SL4.aspx

2010年03月15日

Microsoft MIX10が始まりましたよ

日本時間だと明日の午前1時からKeyNoteの中継が始まるようです。(起きてられるかな)

Microsoft MIX10: Designers & Developers Las Vegas March 15-17

また、各セッションのスライドビデオはセッション後24時間以内(Wao!)に随時サイトに上げられていくようです。

また、Twitterで#mix10jをウォッチしておけば現地の状況を皆さんつぶやいてくれるようですよ。

2010年03月12日

ASP.NET MVC 2 RTM

ということで、これを待望にしていた皆さんおめでとうございます。

Download details: ASP.NET MVC 2 RTM

この公開は.NET 3.5/VS2008向けです。.NET4/VS10向けはVS10の製品リリースにあわせた方になると思います。

2010年03月06日

Ch9 : Your Rx.NET Prescription Has Been Refilled

Get Microsoft Silverlight

Your Rx.NET Prescription Has Been Refilled | Rx Dev Videos | Channel 9

その筋の人向け。

2010年03月03日

NUnit 2.5で追加されたAssert.Throwsでの注意点

NUnit 2.5からAssert.Throwsというメソッドが追加されていて、インラインでエクセプションのテストができるように拡張されています。

こんな感じですね。

   1:  private void ExceptionDashimakuri(string a) {
   2:      if (a == null) {
   3:          throw new ArgumentException("a is Null !!");
   4:      }
   5:  }
   6:   
   7:  [Test]
   8:  public void TestExceptionDashimakuri() {
   9:      string a = null;
  10:      var ex = Assert.Throws<ArgumentException>(
  11:              () => ExceptionDashimakuri(a)
  12:          );
  13:      Assert.That(ex.Message == "a is Null !!");
  14:  }

インラインで想定されているExceptionが飛んできているか、その後Assert.That等によってメッセージ内容が適切か、Exceptionのソースが適切か等も確認することができます。

Assert.Throwsすばらしいですね。見事ですねという感じなのですが、テスト実行の時に一つだけ注意点があります。Visual Studio上でテスト実行する場合には「必ずDebug無しで実行する」事です。Debug実行してしまうとVisual Studioに例外がハンドルされていないって冷たく言われます。。。(常識ですよねそうですよね。。。30分ぐらい悩んじゃった。)

しかし、日本語の情報無いなー。

2010年02月25日

TechDays 2010 2日目 T2-302 Visual Studio 2010で実践するアジャイル開発 #techdaysj

講師:長沢智治

VS2010におけるチーム開発機能、ユニットテストツール、コード分析機能、モデリング機能とチーム開発環境との連携、仮想化を使ったテスト環境の管理ツール、VSとは独立したテストスィートに関する説明でした。

VS開発チームが実際にVSを使いScrumで開発を行っており、そのフィードバッグが製品に良く反映されているのだと思います。

VSのコードエディタ上でメソッド選択して、リバースでUMLのおシーケンス図を書いてくれるのにはちょっと感動しました。(逆はできませんけど)

あるいみ、VSのUMLモデリング機能はものすごくスケッチャー向けの機能なんだと思います。

ではtsudaりのまとめ。

TechDays 2010 2日目 T2-306 WCF Data Servicesの新機能とOpen Data Protocol #techdaysj

講師:小高太郎

Open Data Protocol(OData)とそれを.NET上で実現するWCF Data Servicesについての説明でした。

OSSのサーバーソフトウェアだとよくXML RPCによるAPIがあり外部プログラムから操作可能ですが、それと同様なことがMSのサーバー製品やその他においてもODataで実現されていくのだと思います。他社への実装の働き崖が大事になってくると思います。

ではtsudaりのまとめ。

TechDays 2010 2日目 T2-301 .NET Framework 4.0 時代の言語 #techdaysj

講師:荒井省三

内容は.NET 4で取り入れられた、あるいは改良されたプログラミングパラダイムについての解説で、その中でF#, XAMLといったものが解説されました。

Ruby作者のMatzさんとかも言っていますが、今後10年の言語トレンドは宣言型、あるいは関数型のパラダイムが主流になっていくと思っているので、資料を見れる方は見ていると良いかもしれません。

  • 引き続きRoom C #T2_301 #techdaysj posted at 10:48:59
  • .NET Framework 4.0 時代の言語 #T2_301 #techdaysj posted at 10:54:13
  • Dynamic(動的) #T2_301 #techdaysj posted at 10:57:29
  • 動的とは?ダックタイピングを実現するのが「動的」 #T2_301 #techdaysj posted at 10:58:12
  • Linqがすでに導入されている。エクスプレッションツリーを調べるとラムダ式が遅延実行されていることが理解できる #T2_301 #techdaysj posted at 11:00:31
  • DLRが.NET4から正式に追加される。System.Dynamic名前空間。言語ごとのバインダーがある。バインダーは振る舞いを決めるもの。 #T2_301 #techdaysj posted at 11:01:31
  • DLRと動的言語との関係。表にまとめられている。オープンソースのDLRコアは2.0対応になっているので名前空間が.NET4と違う。Mcrosoft.Scriptingで始まるヘルパーはOSS #T2_301 #techdaysj posted at 11:04:03
  • C#4、VB10とDynamic 各言語ごとのバインダーがある。C#ではdynamicキーワードが追加。実際にはこれはクラス。 #T2_301 #techdaysj posted at 11:05:22
  • VB10ではレイとバインディングを実現するクラスがDynamicを使うように再設計された #T2_301 #techdaysj posted at 11:05:57
  • DLRを提供するメリット。動的言語が作りやすい。性的言語と動的言語、動的言語同士ののり付けがしやすい。Dynamicオブジェクトが作れる、新しいCOM互換性の提供 #T2_301 #techdaysj posted at 11:09:00
  • 埋め込みスクリプトのデモ #T2_301 #techdaysj posted at 11:10:24
  • C#のコードと動的言語のスクリプトとの相互運用についてのデモ。簡単なペイントアプリケーション。ペイントオブジェクトを動的言語で制御する。 #T2_301 #techdaysj posted at 11:13:47
  • RCW Runtime COM Wrapper #T2_301 #techdaysj posted at 11:16:50
  • @k1ha410 IronRuby, IronPythonの話も出ていますが、話の内容としてはC#/VB側からの視点です。 #T2_301 #techdaysj posted at 11:23:09
  • ExpandoObjectはリテラルなメンバとDelegateを動的に増やすことができる #T2_301 #techdaysj posted at 11:24:49
  • いつDyamicを使うべきか #T2_301 #techdaysj posted at 11:25:26
  • DIコンテナの代わりにスクリプトをホスト(コンテナ)の代わりにする。振る舞いの変更をスクリプトにする。いろいろな方法論があるけど難しいかも。 #T2_301 #techdaysj posted at 11:27:45
  • 動的言語ユーザーはAOPに関心がない。(そりゃ振る舞いを自由に変えられるんだからね。。) #T2_301 #techdaysj posted at 11:28:34
  • 宣言型とは何か。 関数型言語、処理方法ではなく対象の性質を宣言する。 #T2_301 #techdaysj posted at 11:29:41
  • 宣言型パラダイム。Linq, ラムダ式 ラムダ式は関数型言語の基礎。ノイマン型プログラムはラムダ式で表現できる #T2_301 #techdaysj posted at 11:30:43
  • 宣言型パラダイム。 XAML。XAMLは対象オブジェクトの性質を宣言している。オブジェクトの複合化、依存プロパティシステム。 #T2_301 #techdaysj posted at 11:32:05
  • .NET4でのXAML。汎用言語化。SLのXAMLとWPFのXAMLとの互換性向上 XAML2009(?) #T2_301 #techdaysj posted at 11:33:09
  • 宣言型パラダイム F#言語 F#はマルチパラダイム言語 #T2_301 #techdaysj posted at 11:33:52
  • XAMLの進化。Syste.Xaml.dll XAMLエンジンの共有化され、フレームワーク化されている。 #T2_301 #techdaysj posted at 11:35:24
  • XAMLノードストリームのDemo #T2_301 #techdaysj posted at 11:35:49
  • XAMLで汎用的にオブジェクトのシリアライズ、デシリアライズができる #T2_301 #techdaysj posted at 11:40:46
  • マークアップ拡張 #T2_301 #techdaysj posted at 11:41:50
  • F# 関数をファーストクラスをとして持つ。型推論 #T2_301 #techdaysj posted at 11:44:37
  • 「副作用がない」店に関するデモ #T2_301 #techdaysj posted at 11:47:28
  • F#の型推論の説明 #T2_301 #techdaysj posted at 11:49:58
  • F#は対話インターフェイスとコンパイラが用意されている #T2_301 #techdaysj posted at 11:51:08
  • 関数は式、式は絶対値を返す。 #T2_301 #techdaysj posted at 11:54:47
  • 同時実行(Concurrent) #T2_301 #techdaysj posted at 11:55:26
  • ムーアの法則 CPUはメニーコアへ。リーク電流により実際には微細化は難しくなってきている。絶縁体の工夫、立体化による延長はあるが。。 #T2_301 #techdaysj posted at 11:56:47
  • マルチコアのの同時実行はタイムスライスによる疑似並列は違うことに注意 #T2_301 #techdaysj posted at 11:57:55
  • アムダールの法則 基本的に悲観論 #T2_301 #techdaysj posted at 11:58:08
  • .NETでの並列 #T2_301 #techdaysj posted at 11:59:38
  • OSのユーザーモードスケジューラーの説明。OSスレッド単位での管理 #T2_301 #techdaysj posted at 12:00:22
  • ユーザーモードスケジューラ。OSのカーネルベースのスケジューラーとユーザー空間内のスケジューラーを分ける #T2_301 #techdaysj posted at 12:01:12
  • .NET 3.xまではスレッドプールのキューはAppDomainごとに一つ #T2_301 #techdaysj posted at 12:01:47
  • .NET4ではタスク(ワークスレッド)ごとにスケジューリングキューを持つ。マルチコアでのキャッシュ破壊をできるだけ少なくしたい #T2_301 #techdaysj posted at 12:03:09
  • 言語と同時実行 F#にはASYNCライブラリがある #T2_301 #techdaysj posted at 12:03:50
  • PLinq #T2_301 #techdaysj posted at 12:04:01
  • PlinqのDemo #T2_301 #techdaysj posted at 12:04:18
  • まとめ #T2_301 #techdaysj posted at 12:08:28
  • 並列化を突き詰めていくとアルゴリズムになる。関数型言語でなくても良いが関数型のパラダイムを取り入れる必要が出てくる #T2_301 #techdaysj posted at 12:09:47
  • このセッションのつぶやきは以上 #T2_301 #techdaysj posted at 12:10:00

2010年02月24日

TechDays 2010 2日目 T2-303 並列プログラミングパターンとVisualStudio 2010を使ったその適用 #techdaysj

講師:川西裕幸

Visual Studioで追加された並列関係機能、特に.NET 4.0での並列化についての解説でした。このようなフレームワークによる並列化支援はあるものの、結局のところアムダールの法則を乗り越えるには正しいアルゴリズム設計、分割可能なデータ構造の設計といったものが結局のところ必要だと感じました。

ではtsudaりのまとめです。

2010年02月23日

TechDays 2010 1日目 T1-402 クラウド時代のアーキテクチャ + Azure + Data #techdaysj

講師:森屋英治(株式会社アークウェイ)

このセッションでとりあえず参加費の元は取れました。

セッション資料中の図表類は非常に効率的で有用なので、参加者の方は今すぐ見ておくことを進めします。また資料は後日一般公開がされるようなので、参加されてない方もAzureでの開発はなくても一般的なエンタープライズアプリケーションの構築に関わる方はごらんになっておくと良いと思います。

とにかく縦横無尽にWCF何とかを中心としたアーキテクチャ解説とデモは見事というしかありません。エクセレント。

TechDays 2010 1日目 T2-307 コードネーム”Oslo”の今、そして #techdaysj

講師:長沢智治

Osloは交代しているように見えるが実は現実的なところに戻って、これから元々の構想のように大きくなっていくのではないかという長沢さん言葉が印象的でした。

では自分のtsudaりのまとめです。

  • Room E #T2-307 #techdaysj posted at 14:31:32
  • 無線LANが不安定 #t2-307 #techdaysj posted at 14:36:01
  • コードネームOsloの今、そして#t2-307 #techdaysj posted at 14:38:06
  • 2007年 複数年にわたる計画として発表 #t2-307 #techdaysj posted at 14:38:43
  • PDC08 ビジネスモデリングツール #t2-307 #techdaysj posted at 14:39:01
  • PDC09 SQL Server Modeling #t2-307 #techdaysj posted at 14:39:20
  • 一エヴァンジェリストの意見としては知事待っているように見えるが現実的なっているだけ #t2-307 #techdaysj posted at 14:40:10
  • IT's ALLL DATA アプリケーションもデータである #t2-307 #techdaysj posted at 14:40:52
  • PDC08 M Quadrant Repository モデリングプラットフォームとしての要素 #t2-307 #techdaysj posted at 14:43:03
  • PDC09の段階でも構成要素は変わらないが位置づけと呼び方が変わった(決まった) #t2-307 #techdaysj posted at 14:43:42
  • SQL Server Modeling CTP VS201 Beta2が対象なので注意 #t2-307 #techdaysj posted at 14:44:23
  • Oslo Developer Center は無くなり Data Developer Centerに統合 また、英語版のサイトで確認すること(日本語のWEBでは表示されない) #t2-307 #techdaysj posted at 14:45:34
  • SQL Server Modeling 対象はアーキテクトと開発者 SQL Serverの将来バージョンの一部として提供される予定 #t2-307 #techdaysj posted at 14:47:35
  • M言語 言語仕様は08から大きく変更はないが、呼び方塔で変更がある。#t2-307 #techdaysj posted at 14:49:20
  • M言語の仕様はオープンになる #t2-307 #techdaysj posted at 14:49:40
  • Mはデータのための言語 MからT-SQL, EDMX等へのトランスレートが考えられる #t2-307 #techdaysj posted at 14:50:38
  • MVCやMVVMのModelをM出記述する #t2-307 #techdaysj posted at 14:51:23
  • ”M" えどったー #t2-307 #techdaysj posted at 14:52:48
  • プロジェクトのプロパティにM Deploymentというタブが尽かされ、リポジトリの位置を特定する。 (デモ中) #t2-307 #techdaysj posted at 14:55:32
  • M Languageのデモ中 #t2-307 #techdaysj posted at 15:04:25
  • Quadrant 開発者に様々なデータとの対話を提供 SQL Serverのデータを可視化していくためのツール 今回のCTPからはワークフロー間駅は視野に入っていない #t2-307 #techdaysj posted at 15:10:07
  • Quadrant のデモ #t2-307 #techdaysj posted at 15:10:31
  • QudrantはInteliPadの機能も内包し、様々なビューでデータの表示が行える #t2-307 #techdaysj posted at 15:15:41
  • Mによってモデリングのやり方に多様性がある。Mは構文解析ができるなど柔軟性がある #t2-307 #techdaysj posted at 15:20:58
  • Repository = SQL Server Modeling Service #t2-307 #techdaysj posted at 15:21:42
  • 現行CTPではできないがSQL Server Modeling Serviceよりリポジトリ情報を読み込んで、VS10で依存関係の表示(demo) #t2-307 #techdaysj posted at 15:27:43
  • Eclipseを使ってXMIのSQL Server Modeling Serviceへのインポートデモ #t2-307 #techdaysj posted at 15:35:37
  • すべてのデータがレポジトリ似格納される時代が来るかもしれない#t2-307 #techdaysj posted at 15:43:04
  • OData #t2-307 #techdaysj posted at 15:45:30
  • このセッションでのつぶやきは以上です #t2-307 #techdaysj posted at 15:47:40
  • @shin135 がんばって気力のある限りつぶやいていきます #t2-307 #techdaysj posted at 15:59:51

TechDays 2010 1日目 T1-301 Windows Azure アドバンスドアプリケーション解説 #techdaysj

講師:スティーブ・マークス

このセッションに関して私がtsudaった内容のまとめです。

また、セッション資料は後日一般向けにも公開されるようです。

PDC09以降Azureでの変更点特にWorker Roleの役割の大きな変更似合わせ、今のAzureアプリケーションの作成方法、アーキテクチャーに関するナイスな解説でした。

  • T1-301 は事前スライドなしか。がんばってつぶやく posted at 13:10:28
  • Azure上で動作しているPort 25を開いているサービスに送信するデモ。 Telnetでの送信デモ #T1-301 #techdaysj posted at 13:15:00
  • ロールアーキテクチャ #T1-301 #techdaysj posted at 13:15:44
  • WEBアーキテクチャ ASP.NET MVC SMTP(TCPListner) Search Lucene.NET でデモをしている #T1-301 #techdaysj posted at 13:16:41
  • Azure の新機能も使用 インターロールコミュニケーション 非HTTPエンドポイント ロールインスタンスライフサイクル VMサイズ ローカルストレージ #T1-301 #techdaysj posted at 13:17:46
  • Azureのアプリケーションモデリング 箱と矢印で書く 箱はサービス(ロール) サービスの参照方向が矢印。これから始めてみる #T1-301 #techdaysj posted at 13:19:44
  • どのロールがインターネットを向いているのか、Azureの中だけを向いているのか、外部はHTTPなのか、他のプロトコルなのか、なんで作るのかを考え、WEBロールを決定していく #T1-301 #techdaysj posted at 13:21:18
  • 入力エンドポイント 同一ドメイン上の異なるポート 常に付加分散される Service.Definition.csdefで定義。WEBロールのIISで処理。Workerロールであれば自分でどのようなプロトコルでも実装できる。 #T1-301 #techdaysj posted at 13:24:12
  • 入力エンドポイントのデモ #T1-301 #techdaysj posted at 13:24:35
  • 外に開かれているポートと実際にアプリケーションがListenするポートは違うので、APIでListenするポートを確認する必要がある #T1-301 #techdaysj posted at 13:28:41
  • スパマーがAzureを使う可能性がある。BlackListにAzureのIPアドレスが載ってしまう可能性がある リレーによるメール送信がおすすめ(Hotmailtとか) 受信は問題がない #T1-301 #techdaysj posted at 13:30:34
  • Search Lucene.NET 人気のある検索API C#の実装 データのインデクシングの機能 検索の提供(WCF) #T1-301 #techdaysj posted at 13:32:30
  • キューを使用しない非同期処理 テーブルを使った非同期の処理 セカンダリインデックスの構築 オーダー参照 (クロックドリフトに注意)要は常にテーブルに検索をかけ、変化を確認し、変化に応じた処理をする。 #T1-301 #techdaysj posted at 13:36:40
  • インスタンス間で時刻がちゃんと同期されていないので、時刻をキーにせず数字で代用するなどする必要がある (クロックドリフト) #T1-301 #techdaysj posted at 13:37:28
  • 初期化 listenするまで受信できない ロールインスタンスライフサイクルを使う OnStart() Run()#T1-301 #techdaysj posted at 13:38:32
  • OnStop() のイベントが発生する #T1-301 #techdaysj posted at 13:38:54
  • OnStart() で必要な初期化を行いポートを開く準備をする。 Run() 通常の状態 ここでPortを開き通常の動作を行う OnStop() では停止を安全に行うためにリソースをスイープする #T1-301 #techdaysj posted at 13:40:29
  • 内部エンドポイント システム内部で使われるエンドポイント Service.Definistion.csdefでエンドポイントを定義 WorkerRoleと同様にAPIでlistenするポートを確認する必要がある。#T1-301 #techdaysj posted at 13:42:02
  • ポートはAzureのシステムがランダムに決定する 相手先についてはAPIにてすべてのロールのIPアドレスを取得することができる #T1-301 #techdaysj posted at 13:42:57
  • Searchのデモ中 #T1-301 #techdaysj posted at 13:43:53
  • 内部エンドポイントのインスタンスはロードバランサーがないので使う側が自分で相手先を選択する必要がある #T1-301 #techdaysj posted at 13:46:37
  • デモのコードって後で公開されるんだろうか #T1-301 #techdaysj posted at 13:47:09
  • RAMの追加 RAMDirectoryはすべてをメモリに置くストレージ 多くのメモリがいるのでVMサイズを選択する #T1-301 #techdaysj posted at 13:50:05
  • Smallで2GB Extra Largeで16GB 設定ファイルで定義できる #T1-301 #techdaysj posted at 13:50:46
  • インデックスの保存 オンメモリのインデックスはOnStop()で保存 設定ファイルに設定を書くときにローカルストレージに保存するように設定できる。ただし、必ず保存される保証はない。 保証がほしいならAzure Storageを使用する #T1-301 #techdaysj posted at 13:52:59
  • サイドバイサイドアップグレード バージョン1とバージョン2でIPアドレスをスワップする(つまり元に戻せる) #T1-301 #techdaysj posted at 13:57:24
  • インプレースアップグレード(ローリングアップグレード) どのロールをアップグレードするかの特定。(全体をSWAPしなくて良い) ローカルストレージデータの維持。ステートフルなロールに最適 #T1-301 #techdaysj posted at 13:59:19
  • まとめ中 #T1-301 #techdaysj posted at 14:03:30
  • とりあえずここでのつぶやき終わりです #T1-301 #techdaysj posted at 14:04:47

TechDays 2010 1日目 キーノート Tsudaったまとめ #techdaysj

自分でtsudaった分のまとめです。

3スクリーン + クラウドの解説と関連製品・サービスの紹介。

Azureの導入事例の紹介でした。とりあえず今Azure上でシステム構築する場合オンプレミスとクラウドをうまく連携させることを考えるとうまくいくようです。

TechDays 1日目 CM-204 Visual Studio 2010でプチ・パラダイムシフトせよ!つぶやきまとめ

頭の中を変えなければならないが、適したパラダイムにすればコードがシンプルになる #tdcm204 #CM-204 #techdaysj
posted at 16:33:27

関数型 関数脳が必要 #tdcm204 #CM-204 #techdaysj
posted at 16:24:01

宣言型の記述の方がS/N比が低い #tdcm204 #CM-204 #techdaysj
posted at 16:21:37

VS10でクラススタブ、プロパティスタブが追加された #tdcm204 #CM-204 #techdaysj
posted at 16:19:27

VS10ではTDD強化 TDDは「どうかくか脳」から「何を書くか脳」に変化させるのですき #tdcm204 #CM-204 #techdaysj
posted at 16:16:27

プログラミングはモデリングなので言語ツール選択が重要 #tdcm204 #CM-204 #techdaysj
posted at 16:15:02

宣言型 "What"を記述 今までは"How"を記述 #tdcm204 #CM-204 #techdaysj
posted at 16:13:10

マルチパラダイム 関数型(C#の進化 F#) 動的 並列 #tdcm204 #CM-204 #techdaysj
posted at 16:12:21

Ctrl + コロコロ で検索しても無駄 #tdcm204 #CM-204 #techdaysj
posted at 16:10:41

Navigate To #tdcm204 #CM-204 #techdaysj
posted at 16:10:02

VBとかC#とか行っているのは時代遅れ #tdcm204 #CM-204 #techdaysj
posted at 16:07:35

VBでないといけない理由 条件式のショートサー期キットをしたくない Myを使いたい #tdcm204 #CM-204 #techdaysj
posted at 16:06:51

気に入らない Call Hierarcy VBに無いのがいや#tdcm204 #CM-204 #techdaysj
posted at 16:05:52

InteliTrace 値変化のログがとれるので落ちないバグを探すのに良い #tdcm204 #CM-204 #techdaysj
posted at 16:04:48

お気に入りの新機能 #tdcm204 #CM-204 #techdaysj
posted at 16:03:36

#tdcm204 このタグをつけてつぶやくべし #CM-204 #techdaysj
posted at 16:03:20

MEF - Release: MEF Preview 9

The Managed Extensibility Frameworkのプレビュー9が出ていました。

MEF - Release: MEF Preview 9

変更点としてはSilverlight向けにいくつかの名前の変更や名前の空間に変更があったのと、バグフィックス、サンプルの追加となっています。

2010年02月22日

TechDaysキーノートライブ配信 #techdaysj

明日からいよいよ始まるTechDaysですが、キーノートがSmoothStreamingで公開されます。(要Silverlight)

技術的な背景とか詳しいところは以下で。

Twitterを活用したTechDaysの楽しみ方(その2):高画質版のUST?でキーノートライブ配信:Azureの鼓動:ITmedia オルタナティブ・ブログ

現在もページは生きていてデモのSmoothStreamingのビデオが流されているので、自分の環境で見ることができるか確認しておくといいでしょう。

キーノート ライブ中継 - Microsoft Tech·Days 2010
http://td10.ds.ipcasting.jp/?lang=original

2010年02月19日

Introduction F# @ Channel 9

MSRの主任研究員でF#の開発者でもあるSyme先生によるF#解説の3回シリーズがChannel9で公開されています。これはエリック・メイヤー先生による長かったHaskellを使った関数型言語講義に続くChannel 9の講義シリーズのようです。

Get Microsoft Silverlight

続きを読む "Introduction F# @ Channel 9" »

2010年02月17日

Visual Studio 2008 でも定期的に累積パッチを出せないんだろうか

以下のページにVS2008 SP1以降に出たパッチ類の情報があります。

Visual Studio 2008 サポート ページ

かなりの数があって、直接のダウンロード、メールでの問い合わせによるダウンロードができるものがありますが、ほとんどはサポートの電話問い合わせが必要です。

これだけの数のパッチについてそれをやるにはあまりにも大変なので、一括でダウンロードできるようにしてほしいです。

かつて、VS2008にはGDRが出た実績もあるのだし、これらのパッチについてもSQL Serverのように定期的に累積パッチを出せないものなんでしょうか。

2010年02月13日

書評:Microsoft.NETでのテスト駆動開発

ジェームス・ニューカーク,アレクセイ・ウォロンツォフ
日経BPソフトプレス
発売日:2004-09-02

実際はだいぶ前に読み終わっていたのですが、社内向けTDD勉強会向け資料作成のため読み返した。

NUnit自体の記述についてはもう出版されてから数年たっていることもあって古くなってきてはしまっているが、TDDやユニットテストの本質が多きく変わったわけではないので、NUnitに関して自分で情報をアップデートできれば、ほとんど問題ない。

実際問題として、日本語で読めるTDDの本はそれほど多くないし、ましてや.NETに関するものほぼこれだけなので大変貴重。

洋書も出版後アップデートしてないのだが、VSの単体テスト機能やNUnitのアップデートにあわせた改訂版がそろそろほしいところ。

(ブクログより転載)

2010年02月12日

Inside Sync Framework 2.0

って言う本があったら今すぐ買う!っていう状態なのですが、そんな本はありません。ただ、幸いなことに以下のMSDNドキュメントに続くものがほぼそれに相当するので、何とかなりそうです。。。

標準のカスタム プロバイダーの実装

自らカスタムプロバイダーを作ろうという人はそんなにいないとは思いますが、標準のプロバイダを使っていてもこういう時にどうするんだろうとか、リファレンスを読んでもその言葉に意味がわからないと言うときにはこちらを読むと、Sync Frameworkがやっていることが何となくわかって、目的の物を見つけられたり、サンプルだけでは合点がいかなかったところが合点がいくようになります。

まぁ、Sync Frameworkは何も考えなければ数行でファイル同期とれるようになるすごいやつなのは確かなので、あまり日の目を見ませんがこういうものがあると覚えておくといいと思いますよ。

何も考えなければこれだけ。(ちなみにこれは動かしてないですw)

   1:  using System;
   2:  using System.IO;
   3:  using Microsoft.Synchronization;
   4:  using Microsoft.Synchronization.Files;
   5:   
   6:  namespace FoldersSync
   7:  {
   8:      class MyFolderSync
   9:      {
  10:          public void FoldersSync() {
  11:              SyncOrchestrator agent = new SyncOrchestrator();
  12:              FileSyncProvider source 
  13:                  = new FileSyncProvider(@"C:\Folder1");
  14:              FileSyncProvider destination 
  15:                  = new FileSyncProvider(@"C:\Folder2");
  16:              agent.LocalProvider = source;
  17:              agent.RemoteProvider = destination;
  18:              agent.Synchronize();
  19:              return;
  20:          }
  21:      }
  22:  }

2010年02月11日

IronRuby 1.0 RC2

そゆもの。DLは以下からお願いします。

Download – IronRuby

変更点はRubyForgeの方をご覧ください。

RubyForge: IronRuby: リリースノート

また、.NET Fx 4.0 RC対応のものがほしい方は以下より入手できます。

IronRuby - Release: CTP for .NET 4.0 RC(Code Plex)

IronPython - Release: 2.6.1 RC1 for .NET 4.0 RC

IronPython - Release: 2.6.1 RC1 for .NET 4.0 RC

.NET  Fx 4.0 RC向けがリリースされました。

2010年02月10日

Visual Studio 2010のヘルプシステム。

image

基本はオンラインのMSDNライブラリのようです。

インストール時にローカルにヘルプドキュメントをインストールできます(分かりづらい)が、上にあるように以前のような専用ツールではなく標準ブラウザでローカルのHTMLを見るようになりました。

また、このローカルドキュメント管理のために以下のようなツールが追加されています。

image

ここでオンライン・オフラインの切り替えなど行うようです。

2010年02月09日

VIsual Studio 2010 & .NET Framework 4.0 RC

英語版ですが、RCがMSDNでダウンロードできるようになりました。

Somasegar's WebLog : Visual Studio 2010 and .NET Framework 4 Release Candidate now available

Jason Zander's WebLog : Announcing VS2010 / .NET Framework 4 Release Candidate (RC)

2010年02月02日

Windows Azure : Windows Azure Tools and SDK 1.1 Released

Windows Azure : Windows Azure Tools and SDK 1.1 Released

いよいよWindows Azure Drive対応となりました。

そのほかは基本Bug Fixのようです。

This release supports Visual Studio 2008 SP1 and the upcoming Visual Studio 2010 RC.

VS2010 RC ??

ダウンロードはこちら

Download details: Windows Azure Tools for Microsoft Visual Studio 1.1 (February 2010)

2010年01月28日

Microsoft TechDays 2010の参加証届く

届きましたよと。

うーんTwitterでどんだけMS好きなんだといわれましたが、確かに言われても仕方のない番号。

何でも早く登録した人特典でプレミアム特典がついたらしいです。

そんなTechDaysも後二十といくつか寝たら来てしまいますねー。皆さん宿の手配、飛行機の手配等々おぬかりなく。

参加登録がまだの人は以下のバナーをクリック。

公式twitterハッシュタグは #techdaysj です。今のうちから追っかけておくといいことがあるみたいですよ。

Tech・Days 2010

2010年01月20日

All-In-One Code Framework

All-In-One Code Frameworkは.NETやWindows開発での様々なコードサンプルを一つにまとめて、一挙に提供しようというプロジェクトのようです。現在のコードサンプルは290。

以下のサイトよりダウンロードできます。

All-In-One Code Framework

うーんこれすごいかも。

2010年01月19日

KODU PC版Tech preview

以前紹介したXBox 360のキッズ向けヴィジュアルプログラミング環境のKODUのPC版が出たようです。

image

KODU Game Lab

使用に当たっては.NET Framework 3.5とXNAのランタイムが必要になります。(インストーラでインストールするように言われ、ダウンロード先がリンクされます)

また、操作に当たってはXBox 360コントローラと互換性のあるPC用ゲームコントローラがあった方がいいと思います。

image

image

image

image

【レビュー】複雑化するゲーム開発と『Kodu』の意義 - ゲーム作りの興味を失う前に | ネット | マイコミジャーナル

2010年01月12日

C#たん 痛ンブラーを作ってみた

思い立ったら吉日と言うことで昨日作ってみましたよ。

送信者 Tumbler

元絵はこんな感じです。

I Love CSharp

作成にはクリタンメーカを使わせていただきました。

ということで、君も2月23日24日はC#たんタンブラーをもってお台場に集まろう(マテ

2010年01月06日

OPC UA SDK 1.01

http://www.opcfoundation.org/Downloads.aspx?CM=1&CN=KEY&CI=288&CU=59

12/31にSDK1.01がバージョンアップしていました。現状は開発ベータ扱いです。

Buildとしては308になるようです。

Build 308 Release Notes

This is a Beta (Development) Build for the UA SDK v1.1.

All of the available downloads are described on a roadmap page.
Documentation for the COM interoperability components is available here.

The major changes include:

This release includes the support for

  • COM servers supporting DA 2.05a, DA 3.00, AE 1.1 or HDA 1.2;
  • COM clients supporting DA 2.05a and AE 1.1;

The auto-generated information models have been updated to reflect the latest versions of Part 9 (A&C), Part 11 (HA) and Part 13 (Aggregates).

The ANSI C Quickstarts now use the ANSI C stack APIs to automatically create self-signed certificates when they are run for the first time.

The Mantis issues that have been fixed in this build can be viewed by setting the "Fixed in Build" property set to "1.01.308.0"

2010年01月04日

謹賀新年 2010

新年あけましておめでとうございます。

以下は国立情報学研究所佐藤先生の1月3日分の日記から

Windows開発者の皆様方にはたいへん失礼な物言いなのですが、Windows向けアプリケーション開発は時間が止まったような世界。そんな世界に浸った開発者がクラウドコンピューティング向けの新しいサービスを作れるかというと疑問なのですよね。あるプラットフォームが既存の開発者が有利という印象を与えたら、新規開発者はそのプラットフォームは避けるものです。Azureをイノベーティブになるには、既存のWindows開発者を切り捨ててでも、新規の開発者をAzureに引き込む必要があったのではないでしょうか。

それと過去の歴史を考えると新旧プラットフォームでアプリケーションの重複はない。例えばメインフレートとミニコンでは、メインフレームからミニコンに移行したアプリケーションよりも、ミニコン向けに新たに開発されたアプリケーションの方が多い。Azureのことに話題を戻すと、現在のWindowsのアプリケーションはWindowsで動かせばよく、Azureで動くアプリケーションは今までにないものになるということです。このため既存Windows開発者をAzureに連れて行ったために、Azureというせっかく新しいプラットフォームなのに古いアプリケーションを動かし続けることになりかねません。

ならばどうすればいいのかですが、他のプラットフォームの開発者を引き入れることも重要ですが、やはりエンドユーザによる開発ができるようにすることが求められるように思います。実際、Force.comはWebブラウザで開発できるので、開発ツールや統合環境のインストールは不要なのですが、こうしたインストール有無だけでもエンドユーザ開発の障壁になっていましたから、Visual Studioのインストールが必要なAzureって時代錯誤なのですよね。

Ichiro Satoh Homepage

Windowsの開発で時間が止まっているのはそうだろうな。SilverlightといってもVBから続くフォームベースのRADと大きく何かパラダイムが変わっているわけではないですし。

AzureですがAzure自体ワーカーロールで実質何をしてもいいという状態になり、いったいユーザー(この場合はAzure上にアプリケーションを作る立場の人・物)に何をさせたいのか余計にぼやけてきていますが、EUC(エンドユーザーコンピューティング)は一つの方向性を示していくと思うけど、なんでもつくれるAzureのままなんだろうなぁ。

ということで、今年はクラウド・コンピューティングが現実的な選択肢になり、本格的な普及に向けて最適なプロセス、最適な設計手法を求めてすったもんだして行く年になるのでしょう。

今年こそ、今までの何かの焼き直しでない突き抜けた新技術を見てみたいところ。オブジェクト指向を過去の物として本当に置き換える何かとか、既存のマイクロプロセッサアーキテクチャを根底から覆すようなプロセッサーアーキテクチャとか、いい加減HTTPから離れて、これからの時代に合う新しいプロトコル(wave?どうだろう?)とか、そういう物をみたいですね。

2009年12月18日

Microsoft TechEd Japan 2009のセッションが一般公開に

以下のリンク先でTechEd 2009のセッション内容をストリーミングで確認できるようです。 (要Silverlight)

Microsoft TechEd Japan 2009

スライドもPDFとして落とせるようになっています。

Azureストレージのテーブルでは最終的に非正規化するが設計において正規化しないわけではないと思う

 Azureストレージのテーブルでは正規化しないことがポイント - かめログ2

いくつかのソリューションサンプルを見たり、プロトタイプを作成しているうちに件の結論に行きつきました。間違っていたら教えてください。

単純に正規化しないは間違ったメッセージだと思います。

これははじめから正規化を放棄した(する)と受け取ったのですが、実際の設計作業ではそうでないと思います。KVSというかISAMが1つのKey値しか持ち得ないため、最終的なそれのデータ構造が非正規化してしまうのはある種仕方のないことなのですが、それがすぐに設計段階でデータを正規化しなくていいと言うことにはならないです。

基本的には一度従来通り正規化を行った上で、アプリケーションの特性や、Azureのテーブルならテーブル、GAEならGAEにと、それぞれにあわせた形で非正規化を行っていくというプロセスになると思っています。

無秩序にKey付きの構造化されたデータがあちこちに散らばるという状況はおそらく収拾がつかなくなるのでしょうし、RDBのように結合やグルーピングで後から任意の形にデータをまとめることができませんし、それを前提に将来のアプリケーション改修や保守を見込む必要もあり、むしろRDBの時よりAzureのようなKVSの方がデータ構造の設計は難しくなってきていると考えます。

当然非正規化されてしまっているので、データ更新するプログラムの処理も煩雑でわかりにくいコードになりがちです。

データパティーショニングの粒度設計なども絡んでクラウド・コンピューティングでのデータ設計の方が、従来のDBMSを前提としたC/SシステムやWebアプリケーションよりもデータ設計やソフトウェア設計においては難易度が高く、安易に考えない方がよいと思います。

いや、ほんとサンプル以上のものを作るのは大変だと思うんですよね。。。

Mono 2.6 ,MonoDevelop 2.2 and Moonlight 2

Nine Months Later: Mono 2.6 and MonoDevelop 2.2 - Miguel de Icaza

Releasing Moonlight 2, Roadmap to Moonlight 3 and 4 - Miguel de Icaza

ということで、立て続けにリリースされました。

たぶん一番大きいのがMonoでLLVMを使用したことだと思います。

2009年12月16日

IronRuby 1.0 RC1 - Ruby Forum

何というか、これが正式アナウンスのようです。

ということで

IronRubyがとうとうRCになりました。

[ANN] IronRuby 1.0 RC1 - Ruby Forum

こちらのBlogのスライドにありますが、だいたい全体的にCRuby(1.8.6?)との互換性は90%以上にまでなってきたようです。

2009年12月14日

NTEmacs 23.1をインストールしてみた

自分の中で秀丸以外のエディタ環境を模索しつついろいろ試していますが、ある意味王道であるEmacsに戻ってみることにしました。

まずは環境作り。(NT)Emacsはバージョン23系が最新で、Windows用のものはNTEmacsと呼ばれています。(今はソースコードレベルでは本家にマージされているはず)日本国内の有志の方々がIMEでの日本語入力に対応するパッチの配布、パッチ適応のバイナリ配布をされているのですが、残念ながらSourceForge.jpのプロジェクトではまだ公開されていません。どうも最近は2chのスレで公開が主流らしい的な話もあってどうしたものかと思ったのですが、まとめていてくれた方がいらっしゃいました。

[ソフトウェア] NTEmacs 23.1 のインストール・設定 - itouhiroメモ

基本的に、ここに書かれている手順でダウンロードインストール、設定ファイルの作成を行えばほぼ問題はありません。

次にEmacsをインストールしたならC#も色づけしたくなるのが人情なので、C#モードの追加、設定もしたいところです。これまたやり方を書かれている方がいらっしゃいます。

Emacs/MeadowにC#モードをいれてみる - うっかりプログラミング日誌

これも悩むことはありません。書かれているとおりで問題ありません。ただC-x/cで呼び出すコンパイルのコマンドはCSCなので、そこは設定ファイルの修正が必要です。

また、素直にrunemacsを起動してしまうと、コマンドラインの.NETのツール類にパスが通ってなく、使いづらいので以下のようなバッチを作ってそこから起動しています。

@Echo off
cd /d %home%
call "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
C:\bin\emacs\bin\runemacs.exe -rv %*

ちなみにこれはVS2008をインストールしている場合です。

SDKオンリーやC# Expressionオンリオーの場合には適宜同様にバッチで環境変数やパスを通してからEmacsを起動するようにすると便利だと思います。

まぁ後は精進といったところですね。。。

IronPython - Release: 2.6

リリースとなりました。 1年ぶりのメジャーバージョンアップです。

IronPython - Release: 2.6

うーんDLR自体には変化がないなぁ。。IronPythonが正式リリースとなったので、こちらもリリースとなるのではないかと思います。

2009年12月10日

SQL Server Compact Editionはじめました

諸般の都合でSQL Server Compact Edition 3.5を使い始めることとになり、いろいろと祟られています。。

まぁぼやいていても仕方ないので、自分で調べたところはWikiの方にまとめ始めましたので、興味のある方はご覧ください。

しかし、これも情報が少ない。MSDNだけでもとりあえず何とかなりますが。。。

2009年12月09日

IronRuby - Release: 1.0 RC1

ということで、先月20日RCだったみたい。。。

IronRuby - Release: 1.0 RC1

なんかRSSにはRCxだのRC2とかあるけどみなかったことにしておこう。

2009年12月08日

IronPython.net

IronPython.net

IronPython 2.6の正式リリースに向け、IronPythonのサイトができたようです。これから最新のリリースバイナリや文書の提供といった正式な窓口はこちらになるようです。ただし、CodePlexのサイトは今まで通りなので、最新および開発中のコード・バイナリの入手、バグ登録はこちらを使うことになります。

2009年12月03日

Windows AzureでRuby On Railsが動いたらしい

動作しているサイト:

 http://rubyonrails.cloudapp.net/

Blog記事:

Simon Davies' Blog : Running Ruby on Rails on Windows Azure

もしやIronRubyで動いているのでわ!と勇んでいったわけですが、mingw32でコンパイルされた方のCRubyでした。ちぇつまんねーのw

Ruby version  1.8.6 (i386-mingw32)

まぁ多くの人にとってはCRubyの方がうれしいんでしょうけどねw個人的にはIronRubyが動いてくれる方が楽しいわけです。ただ、これでRedmineとかtDaiaryとか動くかもしれないので、適当なRubyが動くホスティング環境を探している人にはいいかもしれません。

2009年11月03日

IronRuby - Release: 0.9.2

ということで、日本時間的に今日リリースされました。

IronRuby - Release: 0.9.2

チェンジログはこちらです。

http://rubyforge.org/frs/shownotes.php?release_id=41087

2009年10月31日

Halloween special

Trick and Treat !(あれ?)

今日はアングロサクソンのお盆です。(キッパリ)

と言うことでCh9もホラー風味です。

Get Microsoft Silverlight

Bug Killer – A Channel 9 Halloween special | Laura Foy | Channel 9

2009年10月22日

Visual Studio 2010 Beta2を入れてみました。

image

まだ入れてみましたってところです。

個人的にいいなぁとお思ったところは、VS2008で設定していたフォント設定や背景色、C#のソースコードの書式設定等をちゃんと引き継いでいるところです。

IDEもBeta1の時より確実に早くなっている気がします。

IronRuby, IronPythonのVIsualStudio 2010, .NET Fx 4 Beta2向けCTP

IronRuby、IronPythonそれぞれで10/4 B2向けCTPが公開になったようです。

IronPython - Release: 2.6 CTP for .NET 4.0 Beta 2

We’re quite pleased to announce the release of "IronPython 2.6 CTP for .NET 4.0 Beta 2". This is our third preview of IronPython running under the Dynamic Language Runtime that is built directly into a .NET 4.0 release! As before, this release allows you to use IronPython objects and types as .NET 4.0 dynamic objects from within C# and Visual Basic code. This release is extremely similar to IronPython 2.6 RC 1. Please also note that "IronPython 2.6 CTP for .NET 4.0 Beta 2" will run only under .NET 4.0 Beta 2.

IronRuby - Release: CTP for .NET 4.0 Beta 2

We’re pleased to announce the release of the IronRuby CTP for .NET 4.0 Beta 2. This is our third preview of IronRuby running under the Dynamic Language Runtime that is built directly into a .NET 4.0 release! As before, this release allows you to use IronRuby objects and types as .NET 4.0 dynamic objects from within C# and Visual Basic code. These binaries are roughly equivalent to the functionality found in IronRuby 0.9. Please also note that the IronRuby CTP for .NET 4.0 Beta 2 will run only under .NET 4.0 Beta 2.

ネタもと:
DevHawk - IronPython and IronRuby CTPs for .NET 4.0 Beta 2

2009年10月21日

Visual Studio 2010 Beta2が一般公開

MSDNを持っていなくてもB2を試用できるようになったようです。

Try Visual Studio - Trial Options

どうもネットワークインストールしかできないようなので、それなりの時間は覚悟する必要はありそうです。

2009年10月20日

Visual Studio 2010 and .NET Framework 4 Beta 2

そゆこと。

Visual Studio 2010 and .NET Framework 4 Beta 2

MSDNサブスクライバダウンロードより段ロード可能です。現在のところ英語版のみ。

2009年10月17日

IronRuby in Action

ということで、アメリカではIronRuby本出版のようで、早速Eary Access Editionがでています。

第1章のみPDFでただで読むことが出来ます。

Manning: IronRuby in Action

筆者サイト : Ivan Porto Carrero

2009年10月16日

Microsoft がスマートグリッドに関するホワイトペーパを発表

Microsoft Power and Utilities Blog : Microsoft Worldwide Utilities Group Releases Architecture Vision for Smart Energy Ecosystem

マイクロソフトがスマートグリッドに関するホワイトペーパを発表しました。全部で130ページほどあるなかなか気合いの入ったものです。

http://download.microsoft.com/download/0/C/2/0C2F64B1-241D-4433-9665-5F802E7510D6/Microsoft%20Smart%20Energy%20Reference%20Architecture.pdf

スマートグリッドとはいわば電力線のネットが情報のネット化すると同時にこれまで、日本であれば電力管内という県をまたぐ大きな地域レベルで行われてきた電力の需給バランス調整を、極端な言い方をすれば町内会レベルの超ミクロなレベルを行うと言うことです。

そのためにはスマートメーターと言われているような、プロセッサを積んで、ITネットワークにデータを流せる電力計や、それらの間やそれと電力会社とを結ぶバックボーンのITネットワークインフラが必要なのはもちろんですが、本当に必要なのは超ミクロなレベルでの電力調整を実現するための莫大な情報処理能力です。

したがって、その莫大なな情報処理能力(ソフトウェアの力)を得るためにGEはGoogleと組んで、Googleのクラウンドコンピューティングにその処理をさせようとしていたりします。

特に北米では元々基幹の送電電力網の設備がかなり古くメンテナンスにも限界があることや、オバマのグリーンニューディールでスマートグリッドに関する投資期待がかなり高くなっています。

当然そうした状況にマイクロソフトがただ指をくわえてみているだけのはずが無く、満を持してこのホワイトペーパが出てきたのではないかと推察します。

どっかの経産官僚は日本にスマートグリッドなどいらんとか行っているらしいですが、この国でも家庭や小規模な事業所が設置する太陽光発電や燃料電池や、これから流行りそうなそれらの余剰電力を蓄える蓄電池の有効活用を考えればスマートグリッド化は必要で不可避な流れだと思うので、将来突然仕事が回ってきたりするかもしれないので関係ないとは言わずに読んでみると良いと思います。

ああCEPってこう使うんだとか、ESBとかもう普通だよねとかまぁいろいろ思う所もあるんじゃないかと思います。

うーんMSはArevaと組みそうなのか、同じAで始まる別の会社じゃないのか。。残念。。

2009年10月12日

Windows 7 64-bit 環境で Application Manifest が無視されることがあるように見える - NyaRuRuの日記

めも

Windows 7 64-bit 環境で Application Manifest が無視されることがあるように見える - NyaRuRuの日記

Application Manifest (Windows)
http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx

Windows 7/Server 2008 R2のプログラムだと宣言する - 新日々此何有哉
http://d.hatena.ne.jp/kkamegawa/20090705/p1

2009年09月30日

IronPython - Release: 2.6 Release Candidate 1

すっかり見逃していましたです。

23日に2.6 RC1となりましたよ。

IronPython - Release: 2.6 Release Candidate 1

2009年09月29日

IronRuby - Release: 0.9.1

そゆもの。

IronRuby - Release: 0.9.1

基本的にバグ修正のみのようです。

Linq to XML 入門 その4 結合(JOIN)その2

忘れた頃にやってくる連載記事です。

今回は、やらないと前回書いた左外部結合とグループ化結合について説明します。

また、サンプルで使用するXMLファイルで、前回との違いは、category.xmlにカテゴリを一つ追加しています。

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <Categories>
   3:   <Category id ="1">
   4:     <CategoryName>飲料</CategoryName>
   5:   </Category>
   6:   <Category id ="2">
   7:     <CategoryName>前菜</CategoryName>
   8:   </Category>
   9:   <Category id ="3">
  10:     <CategoryName>主菜</CategoryName>
  11:   </Category>
  12:   <Category id ="4">
  13:     <CategoryName>デザート</CategoryName>
  14:   </Category>
  15:   <Category id ="5">
  16:     <CategoryName>お持ち帰り</CategoryName>
  17:   </Category>  
  18: </Categories>

グループ化結合

グループ化結合は、階層データ構造を作成する場合に便利です。グループ化結合は、最初のコレクションの各要素と、2 番目のコレクションの相関関係を持つ要素のセットを組み合わせたものです。

使用するXMLは内部結合のものと同じです。

以下の例ではカテゴリごとの料理のリストを作成しています。

   1: XDocument menu = XDocument.Load(@"..\..\menu.xml");
   2: XDocument category = XDocument.Load(@"..\..\category.xml");
   3:  
   4: var menuList = from c in category.Descendants("Category")
   5:                join m in menu.Descendants("item")
   6:                on
   7:                    (string)c.Attribute("id")
   8:                equals
   9:                    (string)m.Attribute("CategoryId")
  10:                into menusByCategory
  11:                select new {
  12:                    ID = c.Attribute("id"),
  13:                    CategoryName = c.Element("CategoryName").Value,
  14:                    Menus = from me in menusByCategory select new { Name = me.Element("name").Value }
  15:                };
  16:  
  17: foreach (var c in menuList) {
  18:     Console.WriteLine("{0} - {1}", c.ID, c.CategoryName);
  19:     foreach (var m in c.Menus) {
  20:         Console.WriteLine("\t{0}", m.Name);
  21:     }
  22: }

1,2行目でXML文書を読み込みます。

5行目から今回新しく説明するポイントです。

5行目のjoin句で、4行目のfrom句でcategory.xmlから取り出したxmlのエレメントに結合するmenu.xmlのエレメントを指定します。

6行目からon句から始まり9行目までが結合条件で、この場合にはcategory.xmlがもつidアトリビュートとmenu.xml側が持つ CategoryIdアトリビュートの値の一致をもって結合するようにしています。アトリビュート同士の値が同値であることの確認には"=" (オペレータ)ではなくequals句を使う必要があります。正確には

from <左辺XML>

join <右辺XML>

on <左辺条件> equals <右辺条件>

となります。

10行目ではinto句を使ってcategory.xmlのエレメントが持つidアトリビュートごとにmenu.xmlのエレメントをグループ化して、category.xmlのエレメントに結合します。

14行目ではselectをネストして、グループ化された中からメニューの名前のリストを作成しています。

動作結果

   1: d="1" - 飲料
   2:        コーラ
   3:        アイスコーヒー
   4:        ブレンドコーヒー
   5:        生ビール
   6: d="2" - 前菜
   7:        フレンチフライ
   8:        湯で海老
   9:        チーズ盛り合わせ
  10:        オニオングラタンスープ
  11:        シェフのお任せミニサラダ
  12:        シェフのお任せスープ
  13: d="3" - 主菜
  14:        御殿場高原で育った子羊のロースト
  15:        あしたか牛のフィレ肉を使ったビーフシチュー
  16:        沼津港スズキのグリル
  17:        焼津マグロのカルパッチョ
  18:        あしたか牛のサーロインステーキ
  19: d="4" - デザート
  20:        韮山苺を使ったショートケーキ
  21:        西浦みかんのババロワ
  22:        朝霧高原の牛乳から作ったティラミス
  23: d="5" - お持ち帰り

左外部結合

左外部結合は、2 番目のコレクションに相関関係を持つ要素があるかどうかに関係なく、最初のコレクションの各要素が返される結合です。LINQ を使用すると、グループ結合の結果に対して DefaultIfEmpty を呼び出すことで、左外部結合を実行できます。

以下の例は、カテゴリーID、カテゴリー名、メニュー名を表示するプログラムで、カテゴリーに対応するメニューが無くてもカテゴリーIDとカテゴリー名は表示します。

処理の手順は次のようになります。

最初手順ではグループ結合を使用して内部結合を実行します。今回の例ですと、先ほどと同じようにmenu.xmlのエレメントのリストは、 category.xmlのエレメントが持つidアトリビュート と一致する menu.xmlのエレメントに基づいて、category.xmlのエレメントの一覧に内部結合されます。

2 番目の手順では、右側のコレクションに一致する要素がない場合でも、最初 (左側) のコレクションの各要素を結果セットに含めます。これを行うには、グループ結合から一致する要素の各シーケンスで DefaultIfEmpty を呼び出します。以下の例では一致する menu.xmlのエレメントの各シーケンスで DefaultIfEmpty が呼び出されます。一致する menu.xmlのエレメントのシーケンスがすべての category.xmlのエレメントに対して空の場合、各 category.xmlのエレメントが結果コレクションに表示されるように、1 つの既定値を含むコレクションが返されます。

   1: XDocument menu = XDocument.Load(@"..\..\menu.xml");
   2: XDocument category = XDocument.Load(@"..\..\category.xml");
   3:  
   4: var menuList = from c in category.Descendants("Category")
   5:                join m in menu.Descendants("item")
   6:                on
   7:                 (string)c.Attribute("id")
   8:                equals
   9:                 (string)m.Attribute("CategoryId")
  10:                into menusByCategory
  11:                from mx in menusByCategory.DefaultIfEmpty(
  12:                 new XElement("item", new XAttribute("id", c.Attribute("id").Value), new XElement("name", ""), new XElement("price", "")))
  13:                select new {
  14:                    ID = c.Attribute("id"),
  15:                    CategoryName = c.Element("CategoryName").Value,
  16:                    MenuName = mx.Element("name").Value
  17:                };
  18:  
  19: foreach (var c in menuList) {
  20:     Console.WriteLine("{0} - {1} \t:\t{2}", c.ID, c.CategoryName, c.MenuName);
  21: }

11行目はメニューで使われていないカテゴリが表示できるように、DefaultIfEmptyメソッドでmenusByCategory内の各シーケンスを調べ、シーケンスが空でないならシーケンスの各要素をmxに入れ、シーケンスが空であるなら、規定値としてDefaultIfEmptyメソッドの引数で与えている値がすべて空のitemエレメントをmxに入れています。(ここでは値の無いエレメントを追加していますが、それが適切かどうかは場合によります。)

動作結果

   1: id="1" - 飲料   :       コーラ
   2: id="1" - 飲料   :       アイスコーヒー
   3: id="1" - 飲料   :       ブレンドコーヒー
   4: id="1" - 飲料   :       生ビール
   5: id="2" - 前菜   :       フレンチフライ
   6: id="2" - 前菜   :       湯で海老
   7: id="2" - 前菜   :       チーズ盛り合わせ
   8: id="2" - 前菜   :       オニオングラタンスープ
   9: id="2" - 前菜   :       シェフのお任せミニサラダ
  10: id="2" - 前菜   :       シェフのお任せスープ
  11: id="3" - 主菜   :       御殿場高原で育った子羊のロースト
  12: id="3" - 主菜   :       あしたか牛のフィレ肉を使ったビーフシチュー
  13: id="3" - 主菜   :       沼津港スズキのグリル
  14: id="3" - 主菜   :       焼津マグロのカルパッチョ
  15: id="3" - 主菜   :       あしたか牛のサーロインステーキ
  16: id="4" - デザート       :       韮山苺を使ったショートケーキ
  17: id="4" - デザート       :       西浦みかんのババロワ
  18: id="4" - デザート       :       朝霧高原の牛乳から作ったティラミス
  19: id="5" - お持ち帰り     :

このように「お持ち帰り」はメニューに存在しませんが表示されています。

ということでひとまず結合を含むクエリ式の説明はこれで終わりです。

それではまた次回!(あるのかー)

これまでの記事:

参考図書:

Essential LINQ (Microsoft .NET Development Series)

Essential LINQ (Microsoft .NET Development Series)
Charlie Calvert
Addison-Wesley Professional 2009-03-22
売り上げランキング : 109833
Amazonで詳しく見る by G-Tools

プログラミングMicrosoft LINQ (マイクロソフト公式解説書 Microsoft Visual Studi)

プログラミングMicrosoft LINQ (マイクロソフト公式解説書 Microsoft Visual Studi)
小高 太郎 (株)オーパス・ワン
日経BPソフトプレス 2009-05-25
売り上げランキング : 43591
Amazonで詳しく見る by G-Tools

2009年09月26日

Java 7 JSR 275: Units Specification

F#のUnits of Measureについて書きましたが、 Java 7でJavaでもこの機能が追加されるようです。(matarilloさん多謝)

具体的にどんな書き方になるかは以下を見ていただくとして、いい感じです。

【コラム】Java API、使ってますか? (9) けっこう便利! 単位を扱うAPI -- JSR 275: Units Specification | エンタープライズ | マイコミジャーナル

で、まぁこれを見て思ったのは.NETの標準クラスライブラリにならないのかなと言うこと。やはりF#に限らず使えると便利だと思うんですよね。

jsr-275: ホーム
http://www.google.co.jp/search?hl=ja&q=JSR-275&sourceid=navclient-ff&rlz=1B3GGGL_jaJP339JP340&ie=UTF-8

2009年09月23日

F# Units of Measure

Get Microsoft Silverlight  

Andrew Kennedy: F# Units of Measure | Charles | Channel 9

F#のUnits of MeasureはそのままF#で単位と単位変換を処理できるようにするものです。

詳しくは下に書くリンク先のMSDNライブラリを参照してほしいですが、あらかじめ単位と変換式を定義しておくことで、F#のコードで単位付きの工業技術計算式をほぼそのまま書くことが出来ます。

これは僕らのように工業技術計算が主となるアプリケーションを作っている人間にとってはソースコードの可読性を大幅に向上し、潜在的な単位変換によるミスを減らすことが出来るので大きな進歩です。非常に強力なツールになりそうです。

Units of Measure (F#)
http://msdn.microsoft.com/en-us/library/dd233243%28VS.100%29.aspx

Microsoft F# PowerPack for .NET 4.0 Beta1
http://www.microsoft.com/downloads/details.aspx?FamilyID=e475a670-9596-4958-bfa2-dc0ac29b4631&displaylang=en

Units of MesureはPowerPackに含まれています。

また、ビデオにもでているアンドリューのBlogも参考になります。

Andrew Kennedy's Blog
http://blogs.msdn.com/andrewkennedy/default.aspx

Blogを見るとSI単位系等メジャーなものについては定義があらかじめされているようです。

http://blogs.msdn.com/andrewkennedy/archive/2008/09/02/units-of-measure-in-f-part-two-unit-conversions.aspx

2009年09月21日

STM.NET, .NET Frameworkでソフトウェアトランザクショナルメモリを使用する。

川西 裕幸のブログ : STM.NET

STM.NETに関しては上の川西さんのBlogに付け足すことなんて無いです。

ググったらbingったら8月はじめぐらいにInfoQで記事になってたんですね。

並列化のプログラムでやっかいなのが共有リソース(特にメモリ)に対するロック、特にデッドロックが起きることです。このデッドロックを回避するためにフレームワークが提供する機能を利用したり、デッドロックを回避するためのアルゴリズムを実装するわけですが、たいていコードは複雑化して、そしてデッドロックします。

このため、並列化プログラムにおける共有メモリに対する処理をコード的にわかりやすくし、出来るだけデッドロックの恐怖から解放するための仕組みがソフトウェアトランザクショナルメモリになります。まぁ私がうだうだ書くよりWikipediaでも読んでいただいた方がいいですね。

とりあえずこのすばらしいソフトウェアトランザクショナルメモリ(STM)が.NET Fx上でも使えるようになりますよと言うことですね。来年と言わずに今すぐくださいw

STM.NET
http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx

リリースノートやプログラミングガイド、ブツもここです。

チームBlog
http://blogs.msdn.com/stmteam/

2009年09月15日

Connecting a OPC-Server in VB.Net

.NET APIの使い方サンプルとしてわかりやすかったので、メモ。

Connecting a OPC-Server in VB.Net

2009年09月11日

CodePlex Foundation

CodePlex Foundation

The CodePlex Foundation, a non-profit foundation formed with the mission of enabling the exchange of code and understanding among software companies and open source communities, launched today, September 10, 2009.

10日CodePlexの運営母体がMicrosoft Corp.からNon-profit foundationであるCodePlex Foundationに変更され、MSから管理と運営が同団体に委譲されたました。

CodePlex FoundationはMSから援助を受けるもののアメリカ国内法に基づくNPO法人として設立され、法人としてはMSとは全く別の法人となります。

これはmonoのMiguelが書いているように、MSにとっては過去フィクションとも思えていたような大きないい方向への変化だと思います。

Miguelも理事会に入るようですね。

CodePlex Foundation - Miguel de Icaza

I am glad that I was asked to be part of the board of directors of the foundation. And to work together with some great advisory board.

I hope that I can last more on this foundation than I lasted at the FSF, where I was removed by RMS after refusing to be an active part of the campaign to rename Linux as GNU/Linux.

なるほど、RMSみたいに意に沿わないからって尻を蹴っ飛ばす人はいないと思うけど。

2009年09月10日

Expression Studio 3 (x86) - DVD (Japanese)

そゆうものがMSDNサブスクライバダウンロードに

2009年09月09日

Microsoft Robotics Developer Studioのお勉強ページ

そゆもの。

Microsoft Robotics Developer Studio

日本語化されることは・・・・・・・まず無い。

Future Technology Days - Azure

MS主催でAzureのセミナーがあるようです。

ううデイビット チャペルが来るのか・・・

Future Technology Days - Azure

10/14 13:00から

平日だよなぁ。。

いろいろ多すぎるよね。まるでJavaみたいに。

Twitter / Vineet: Silverlight. WPF. WCF. WF. ...

Silverlight. WPF. WCF. WF. C#. VB. IronRuby. IronPython. ASP.Net. ASP.Net MVC. C++. 1.2.3.4.5 Hey throw out some more stuff will ya?

もっとスタッフよこせーという気持ちはわからんでも無い。

2009年09月06日

Sessions :: Microsoft PDC09

PDC09のセッションリストが公開されているが、確実に去年のPDCでは目玉であったはずのOsloのOの字もないという。 まぁまだ全部じゃないようなので、これから追加されるかもわかりませんけど。

Sessions :: Microsoft PDC09

2009年09月04日

Silverlight 3 GDR 2

Nicholas Allen's Indigo Blog : Silverlight 3 GDR 2

Silverlight 3 has been updated with a small set of bug fixes and support for the GB18030 code page for developing Chinese localized applications.

いつの間にGDR1が出てたんだって方が気になりますが、GDR2が出たようです。

GB18030のサポートと言うことで、外字を使われている方は検証をしっかりやった方が良さそうです。Macでもすべきかはちょっと資料が見つけられてなくてわかりません。Silverlightの文字列周りは実際には環境依存するらしいので、気になる方はGB18030の文字でUNICODEにマップできない文字がどこにマップされるのか調べて、自分たちが使用している外字エリアと重ならないか確認した方がいいでしょう。

Windowsについては以下を参考にしてください。

OPC Diary: WindowsにおいてはUNICODEのユーザーエリアに東アジア言語のコードページ用の予約領域がある。

2009年09月02日

ironrubyのruby specへの準拠度は92.4%

ironruby.info

一応上のリンク先の数字が現在の数字らしい。

個人的にあんまり意味のない数字だと思っていたりもするのだけど、純粋にIronRubyをCRubyの代替として使いたい人には気になる数字だろう。

私としてはRails動くとか言うよりも.NETやSilverlight上でそれらのクラスライブラリや自作のライブラリやCOMを簡単に扱えるRuby言語であってほしかったりもしたのだけどもう方向性違うよなぁ。

2009年09月01日

ビービーシステム TFS Online サービス

ビービーシステム TFS Online サービス

TFSをサービスとして提供されるようです。

ユーザー数課金のようなのですが、レポジトリデータベースの容量制限についてどこにも書かれて無く、人ごとながら心配です。。。

2009年08月30日

C#たん