メイン

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月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

WinGHCi & WinHugs

どちらもそれぞれのWinがつかないコマンドシェル上のインタプリタをWindowsアプリケーションにしたものです。

winghci - Project Hosting on Google Code
http://code.google.com/p/winghci/

image

WinGHCiはHaskell Platformからインストールすることもできます。

WinHugsはHugsのダウンロードページからダウンロードできます。

Downloading Hugs
http://cvs.haskell.org/Hugs/pages/downloading.htm

image

両方ともコンソールのインタプリタに若干のGUIがついているだけですが、その若干の違いでかなり使い勝手が良くなっているのと、エスケープシーケンスのサポートも若干あるようなので、その点でWindowsのコマンドラインで使うよりは使いやすくなっているかと思います。

ということで、明日はHaskell読書会と言うことで、三島でお待ちしておりますw

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: 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月20日

Ruby Best Practices がFreeに

英語版ですがRuby Best ParacticeがPDFでフリーで公開されたようです。

Ruby Best Practices - Full Book Now Available For Free!

Ruby Best Paractice 表示

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

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

静岡Developers勉強会 第四回Haskell読書会開催のお知らせ

今回は会場を三島に移しての開催ですので、ご注意ください。この機会に伊豆地区や、県東部で静岡遠いと思われていた方も是非ご参加ください。(近くて楽だなーw)

開催要領

  • 日 時 : 2010年4月24日(土) 13:00~17:00
  • 場 所 : 三島商工会議所会館 4階会議室B
  • 地 図 : http://www.mishima-cci.or.jp/profile.html
  • 定 員 : 20名
  • 費 用 : 一般 1000円,学生・未成年:無料
  • 持ち物 : パソコン(練習問題をやるのに使用)、課題図書
  • 課題図書: プログラミングHaskell (ISBN:4274067815)※各自事前購入
  • 環境 : OS依存はしないが、GHC又はHugsを事前導入しておく事
  • 範 囲 : 5 章
  • 担 当 : となかさん
  • 懇親会    : 調整中
  • 懇親会費:  一般 4,000 円、学生・未成年 2,000 円 程度の予定

詳しい参加方法については以下にてご確認ください。

http://www.haskell.shizu-dev.org/news/daiyonkaihaskelldokushokaikaisainooshirase

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が組み込まれるのは何時なんだっていうのは野暮なのかな。

Cacoo

 

Cacoo - Web上で図の作成とリアルタイムコラボレーション

オンラインでコラボレーションしながらドローイングができるサイトです。ブラウザとFlash Playerがあれば動作します。基本的な図形、マインドマップ、手書き風とリアルなUIモックの絵、ネットワーク機器構成図、UMLのダイアグラムなんかを書くことができます。上ではUMLのシーケンス図を書いています。(つもり)

ツールの性格上正確な製図や図面として紙に印刷することに向いていませんが、ホワイトボード代わりや、PNGでエクスポートもできるのでその他のドキュメント作成時の挿絵のスケッチの作成に使用することができそうです。

まぁだいじなのは複数ユーザーでコラボレートできる、同時に絵を編集できるところだと思いますので、遠隔地で散らばって仕事をしている人や、自分のアイデアをすぐにピアレビューしてその結果をどんどん反映させていきたいときなどにはすごく良いツール何じゃないかと思います。

※と言うことでiPadじゃ動かないんだよなぁ。HP Slateなら確実に動くけど。

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月31日

Channel 9 Live at MIX10: Bill Buxton & Erik Meijer - Perspectives on Design | NicFill | Channel 9

Get Microsoft Silverlight

Channel 9 Live at MIX10: Bill Buxton & Erik Meijer - Perspectives on Design | NicFill | Channel 9

Bill Boxton, Eric Meijer、MSの中でも「キャラの立つ」ふたりの「デザイン」についての鼎談です。Billはユーザーインターフェイスデザインの専門家であり、Ericはプログラミング言語の設計者です。

日本では「設計」と「デザイン」にわけてしまいがちですが、本質的にそれらの間に違いなど無いのです。

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()の位置違うやろと横から突っ込みが入り、全くその通りであるのでコードを修正しました。。。

The Verification Corner - Loop Termination | Peli at RiSE | Channel 9

Get Microsoft Silverlight

The Verification Corner - Loop Termination | Peli at RiSE | Channel 9

Dafnyおもしろいかも。

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月22日

東海アンカンファレンス発表資料 #tokaiun

スタッフ、来場の皆さんお疲れ様でした。

私の行った発表のスライドが以下にあるので必要な方はご覧ください。

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

静岡Developers勉強会 第3回Haskell読書会のお知らせ

私は先約があってこの日は参加できませんが、以下の通り読書会が開催されますので、ご興味をもたれた方はご参加ください。途中からの参加も大歓迎です。

また、今までと会場が異なるのでご注意ください。

日 時 : 2010年3月27日(土) 13:00~16:45(開場 12:30)
場 所 : 静岡市民文化会館 第二会議室
地 図 : http://www17.ocn.ne.jp/~bnk1103/page019.html
定 員 : 20名
費 用 : 一般 1000円,学生・未成年:無
持ち物 : パソコン(練習問題をやるのに使用)課題図書※各自事前購入
課題図書:プログラミングHaskell (ISBN:4274067815)
環境 :OS依存はしないが、GHC又はHugsを事前導入しておく事
範 囲 : 4 章
担 当 : いとうさん

あわせて、以下の要領で懇親会を開催いたします。
場 所 : くいもの屋 わん 静岡呉服町店
http://www.hotpepper.jp/strJ000024878/
時 間 : 17:30~19:30
懇親会費: 一般 4,000 円、学生・未成年 2,000 円
※参加申し込みはこちらから「http://bit.ly/b6izyX
申し込み確認はこちらから「http://bit.ly/dwlJHS

2010年03月17日

Visual Studio 2010 Express for Windows Phoneをインストールしてみました

image

VS自体はRC1ベースです。

上を見ればわかるように基本はVisual C# 2010 Express + XNA Game Studio 4.0です。そのほかSilverligh4等々がインストールされます。

慣習にならいHello Worldを作ってみました。

とにかくWindows Phoneエミュレータの起動に時間がかかるので、デバッグが始まるまでは気長に待ちましょう。それからこのエミュを動かすとグラボのファンの回転数が上がるのでそれなりにグラフィック側の負荷もあがるようです。

開発の感じはVS10上でのSilverlightのかはいつそのままといった感じです。

さてと、何作って小銭稼ぎましょうかw

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月14日

Tartoies SVNのセットアップ手順(ビデオ)

人生初YouTube投稿だったり。

やっぱり音(解説)がないと変だからちゃんとヘッドセット買おう。

2010年03月12日

テスト二題

ちょうどソフトウェアテストに関するBlog記事が二つあがったので紹介。

そろそろ大規模ソフトウェア開発に一言いっておくか。デイリービルドとリグレッションテスト

よしおか氏によるOracle在籍当時のデイリービルドとリグレッションテストに関する記事。

最新のソースをチェックアウトする→コードとテストを書く→入力と出力のテストデータを作る→テストする→修正→テスト通るまで繰り返す→同僚によるレビュー→チェックイン→デーリービルド&リグレッションテスト→次の日の朝→テスト結果の確認

このような1日のサイクルだったらしい。

テストの重要性に言及。

新規に開発するプログラムテストがなければレガシーシステムである。そして初めからテストを書いていれば、実装したプログラムの機能を確認できて、安心であり、心の平静が保てる。

テスト駆動開発の効果はどのくらいある? - Publickey

TDDはコード量を若干上げるが単体レベルでのバグを90%~30%減少させ品質を向上させるというレポートに関する記事。

TDDは一人からでも始められるので始めていたらどうだろうというまとめ。

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分ぐらい悩んじゃった。)

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

Tech Fest 2010

Tech FestはMicrosoft Research(MSR)の一般への研究発表の場でいわば学園祭です。

Get Microsoft Silverlight

上は責任者であるリチャード・ラシッドによるイントロデュースです。

また、これ以外にもTech Festに発表された研究がCh9で公開されています。

http://channel9.msdn.com/tags/TechFest/

Natural User Interfaces with Physiological Sensing | TechFest 2010 | Channel 9

Mobile Surface | TechFest 2010 | Channel 9

Project Gustav: Immersive Digital Painting | TechFest 2010 | Channel 9

TechFest 2010: Project Gustav | Laura Foy | Channel 9

2010年03月02日

I18N:縦書きの話

Sorting it all outで久しぶりの日本語だと思ったら縦書きの話でした。

ちなみに最近ではアジア言語でも縦書きが常用されるのは日本語だけとか。

Sorting it all Out : When something is just flipping wrong

JapanShirt
(元記事から引用)

縦書きのバランスの話もありますが、主な内容はプリンタ「ー」の音をのばす横棒の話です。

多くの日本人ならまず間違えない漢字の「一」と「ー」が違うというのは、漢字の意味なんて当然知らないし、漢字が絵にしか見えない人たちにとっては、まぁ区別つかないよね。ましてや縦書きになったら字が反転して回転するなんて考えもしないでしょう。(おっと、「ー」は漢字じゃないやw)

ということで、「ニホンゴムズカシイネ」という例の一つですね。

(テクニカルな話は是非もと記事を)

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月21日

昨日印象に残ったお言葉

仮装化をしない/それは/重力に魂を引かれている

 

まぁ昨日は浜松ITカンファレンスに2010に行ってきたのですが、その中での日本仮想化技術 宮原徹氏のお言葉。

仮装化しないのがオールドタイプ。世間的に仮装化を反対していた上司が、システムを仮装化をして思わぬ効果があった場合にはぜひこれが、オールドタイプと言うことなのか。(ライラ・ミラ・ライラ)」と言ってほしいが、言わないだろうな。

なんかMSの某エバンジェリストのBlogみたいになってきたな。

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月06日

静岡Developers勉強会 第二回Haskell読書会 募集中です。

1月より始まっったプログラミングHaskell読書会の第二回を行います。もちろん第一回に参加されていない方でも参加できます。

日時:2月27日(土)13:00~17:30
場所:静岡市産学交流センター 演習室3
店員:20名
費用:1000円(学生・未成年は無し)
課題図書:プログラミングHaskell (ISBN:4274067815)
環境:OS依存はしないが、GHC又はHugsを事前導入しておく事
範囲: 3 章

今回は第3章が読書会対象ですので、参加される方は第三章まで読み進めてください。

詳しい内容、申込先につきましては以下の回のお知らせにてご確認ください。

第二回Haskell読書会開催のお知らせ (Haskell読書会)
http://www.haskell.shizu-dev.org/news/dainikaihaskelldokushokaikaisai

プログラミングHaskell
プログラミングHaskell 山本 和彦

オーム社 2009-11-11
売り上げランキング : 5619

おすすめ平均 star
starわかるってたのしいなー。
starHaskell

Amazonで詳しく見る
by G-Tools

2010年02月03日

「プログラマという職業は「ふつう」の人には厳しくないか」いやそうではないプログラマには一足早くそれがきているだけ。

UK STUDIO - プログラマという職業は「ふつう」の人には厳しくないか

「ふつう」の人達はプログラマになるべきじゃないのだろうか? 例えば、プロスポーツ選手であれば普段の生活からそれ相応の生活を求められるだろうが、プログラマもそういう職種なのだろうか。

少なくとも今現在まわりと見渡すと「ふつう」のプログラマも結構いるように思う。結婚して妻子がいて、そういう勉強の時間があまり取れないって人もいると思う。そういう人達にプログラマはもう無理だねと言ってしまってもいいのだろうか。

これはプログラマやIT技術者が他の人より一歩先にこういう状態になっているだけ。基本的にいわゆるホワイトカラーと呼ばれる業種についている人間はそういう状態になるし、勉強量の差はあるだろうけどそれは程度の問題になると僕は思っているわけだけど。実際企業会計に関わっている人たちもやれJSOXだ、国際会計ほにゃららだと毎年のように新しい法規や制度でが出てきて対応しなければならない状態が続いているし。

ドラッカーの言うように頭を使ってお金を得る人たちは総プロフェッショナル化の道に進んでいるのは間違いないだろうし、それは確かにプロ野球選手のように生活することなんだと思う。(それも程度の差があるわけだけど)

本件興味を持たれたなら以下の本をお薦めします。

プロフェッショナルの条件―いかに成果をあげ、成長するか (はじめて読むドラッカー (自己実現編))
プロフェッショナルの条件―いかに成果をあげ、成長するか (はじめて読むドラッカー (自己実現編))
ダイヤモンド社 2000-07
売り上げランキング : 163

おすすめ平均 star
star当たり前だけど大切なこと。
star手許に置いといて良かった。
star知的な興奮を感じる一冊

Amazonで詳しく見る
by G-Tools

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月21日

Kindle Development Kit(KDK)の申し込み受け付け開始

詳細内容全く不明ですが、以下のリンク先にてKindle SDKというか、KDKと言うものの申し込みを受け付けています。どんな言語を使うとか、どんな開発環境なのかはよくわかりません。一応Amazonで販売した場合Amazonの取り分は3割、こちらは7割となるようです。

動作環境の制限がiPhoneやAndroidよりも遙かに厳しいので、よりアイデア勝負な感じになると思います。

個人的には初代Simcityなんていいんじゃないかと思ったりします。モノクロだし。

Kindle Development Kit

2010年01月20日

All-In-One Code Framework

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

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

All-In-One Code Framework

うーんこれすごいかも。

書評 : ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)
ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)

ブルックスの「人月の神話」を踏まえ、ソフトウェアエンジニアリングの歴史を網羅し、そのれぞれの問題点を踏まえ、それらについて解説した本。

ブルックスの著作を読み終わっており、ソフトウェアエンジニアリングについての知識を持っているなら第4章から読み進めてもかまわないかもしれない。

最後の最後で『新しいパラダイムでも本質的困難は普遍的であり、これをあるがままに受け入れる姿勢が求められている。』と身も蓋もなく救いの無い文で終わっているが、これはおそらく人間がソフトウェア開発を続けている限り逃げ切れないものなんだろうと思う。

(以上ブクログから再掲)

追記:

脚注がすばらしい。更なる学習への道筋を示している。同様に巻末の読書ガイドも秀逸。

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月16日

静岡デベロッパー勉強会 第1回プログラミングHaskell読書会

第1章

関数型言語とはなんかという話とHaskellの歴史。

明らかにラムダ式は(数学として)知っているぐらいの書き方なので、関数型言語入門書としてはあれげ。ただ、コンピュータサイエンス学科の学生向け教科書の第1章としてはこんなものかと思います。

第2章

Haskellとしてのイントロダクション。

文法の基本と書き方の基本。

次回

次回は2月27日です。

第3章が対象。発表担当は高橋会長です。

2010年01月15日

Haskell Platform Download (Beta)

Haskell Platform Download (Beta)

Haskellのコンパイラ、対話環境、各種ライブラリをまとめてインストールできるもののようです。

私のようにとりあえずHaskellを始めてみようという方にはよろしいのではないかと思います。

ということで、明日は静岡デベロッパー勉強会 Haskell読書会の第1回読書会です。

まだ、参加申し込みは可能なので以下からよろしくお願いします。

第一回Haskell読書会

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月15日

新春座談会 このコンピュータ書がすごい! 2010年版 2009年に出たコンピュータ書ならこれを読め!

http://www.junkudo.co.jp/newevent/evtalk.html#20100109ikebukuro

ということで、今年も開催の運びとなったようです。

■2010年1月9日(土)19:00~
昨年度店頭・ネットで好評を博した、あのコンピュータ書年間ふりかえり企画が帰ってきました!
1年間365日8760時間のあいだに発行されるコンピュータ書は1000点以上。その中から注目したい作品を数十冊ほど選び出し、1時間半の間に紹介し倒すというチャレンジングな企画。おかげさまで前回開催当日は会場の定員を超える多くの方々に参加していただいた上に、開催後もネットで話題にのぼったり、紹介された本の著者様から感謝のお言葉をいただく等、実に大きな反響がありました。
その声に後押しされ、今年も「このコンピュータ書がすごい!2010年版」と銘打って、この2009年に発売されたコンピュータ書を振り返ってみたいと思います。
ベスト3、ベスト10などと絞りこむのはもったいない、20冊や30冊でもまだ足りない。ベストセラーやロングセラーや話題作だけでなく、コンピュータやそれを取り巻く現在の環境・状況をするどく見せてくれる本、これまでの類書とは一味違う新しさを感じさせてくれる本、そんな見逃せない本の数々をご紹介できれば幸いです。
講演者は昨年同様、コンピュータ書を生み出す最前線で活躍されている出版社の方々と、「日本Rubyの会」会長で『たのしいRuby』などの著者(共著)としても知られる高橋征義さんです。

できるだけ今年も行こうと思いますが、どうなることやらw

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年11月06日

VMware Player 3.0がちょっとすごすぎる件

朝から感動していますw

vmwarePlayer3AndWin7x64

いつの間にかPlayerではなく、普通のデスクトップ仮想環境になっていました。当然ですがWorkstationよりは機能がありません。ただ私にはこれで十分かな。Virtual PCの機能は全部あってかつAMD64対応だから。

ちなみに上の図はVMware PlayerにWindows 7 Ultimate x64日本語版をインストールしてスコアを出させたところです。

良かったところは以下の点です。

  • 簡易インストールが楽。
    • Windowsだと最初にプロダクトキーとアドミニストレータのパスワードを入力してしまえば、あとはほぼ何もせずにOSセットアップが始まり、VMware toolsのインストールまで終わってしまいます。
  • ゲストのWindows 7でAeroが使えている。
    • 有償のWorkstationならともかく無償のPlayerでできてしまいます。Windows Virtual PCもVirtual Boxもこれはできません。
  • パフォーマンスインデックスがまず使えてそこそこの数字が出てくる。
  • ディスクアクセスが早い
    • Virtual Boxに比べゲストのディスクアクセスが体感的に早く感じます。

で、ただ。

ダウンロード等についてはこちらを参照。

http://www.vmware.com/jp/products/player/

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月27日

静岡で開発・言語系の勉強会立ち上げます - 静岡 IT Pro 勉強会日誌

去年、その場の勢いでやると言ってしまった静岡ITPro勉強会ですが、みなさんの協力でなんとか続けることができています。

そこで、調子にのって、開発・言語系の勉強会を立ち上げます。

静岡で開発・言語系の勉強会立ち上げます - 静岡 IT Pro 勉強会日誌

私も調子こいてのかって見たいと思います。

まだ方向性も定まってませんが、立ち上げに参加したいという方がおられましたら、以下のGoogle Groupに参加していただけたらと思います。

静岡 IT勉強会 準備会 | Google グループ

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年10月07日

Windows 7でCOM APIが拡張されていてびっくり

そしてその拡張の地味っぷりにもw

Changes to COM in Windows 7 (COM)

追加された関数はこれ。

CoGetApartmentType Function (COM)

自分自身の現在のアパートメントタイプを返してくれるようです。

2009年10月04日

Pairwise Independent Combinatorial Testing(PICT) Tool

お恥ずかしながら、MSにこんなツールがあるとは知りませんでした。

Pairwise Independent Combinatorial Testing (PICT) Tool

PICT is an efficient way to design test cases and test configurations for software systems. With PICT, you can generate more effective test cases than you could reasonably hope to achieve manually, and in a fraction of the time that normal test case design consumes.

Downloads

このツールを知ったのはこの論文です。
Pairwise法と制約表による制御パステストのテストケース自動生成

このツールを元に、MTGと言うExcelベースのツールを作られているようです。

MTG プロジェクト トップページ - SourceForge.JP

ソフトウェアテストはまだまだ勉強不足で学ぶことがいっぱいありますが、この論文も大変参考になりました。

元ネタ:

【公開】SQIP2009講演資料「チケット駆動開発- BTSでExtreme Programmingを改善する-」: プログラマの思索

これ以外の論文も大変勉強になります。

2009年10月03日

TracLightning 2.4.0 alpha1

Heretic Programmer(2009-10-03)

TracLightningがTraMを取り入れて、マルチプロジェクト対応した、2.4.0の開発を始めたようです。

自社の現行のTracにTraM入れようかと思ってましたが、バージョンアップを素直に待とうw

リリース情報
http://sourceforge.jp/projects/traclight/releases/43810

2009年10月01日

Courier デモビデオ

Courier User Interface from Gizmodo on Vimeo.

続報で判明! クリエイターに大重宝な魅惑のMSタブレット「Courier」の詳細機能(動画) : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ

これを見て、ああ確かにCEにSilverlightが必要だよねと言うのと、CEなのかとも嘆息。CEだとも言い切れないけど、おそらくそうでしょう。(XBoxのWindowsミニカーネルだって可能性もまだあるけど)

Xerox Parcで15年前ぐらいに研究されていたタブレット端末のアイデアから大きく外れていないとはいえ、(コラボレーションという意味では衰退!)今の技術でより洗練されたものであるのは確か。PCでない何かの一つの方向性ではあるんだろうと思う。いや、やっぱPCか。

なんて言うか、最近本当にこれは見たこともないぐらい新しいぜ!と言うものに出会わないんですが、技術に対するわくわく感が減衰していく一方なので、見たこともないもの出してください。そういうものがみたいです。

2009年09月30日

気になる本

技評のSE新書シリーズが最近静かだと思っていたら、過去でたものの第二版がでるようです。両方ともなかなか良かったので、これは期待。

ソフトウェア開発の名著を読む 【第二版】
ソフトウェア開発の名著を読む 【第二版】

Amazonで詳しく見る
by G-Tools

ソフトウェア開発で伸びる人、伸びない人 【第2版】 ソフトウェア開発で伸びる人、伸びない人 【第2版】

技術評論社 2009-10-21
売り上げランキング :

Amazonで詳しく見る
by G-Tools

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をネストして、グループ化された中からメニューの名前のリストを作成しています。

動作結果