MacBook Pro Retina 15!(ヒュー!)

うれしいとき、ヒュー!、って死語?

♪あきらめました...17インチのことは...、この曲も古い?(って私の頭の中に流れた懐メロ誰にもわからんちゅうの)。

17インチMacBook Proがどうにもこうにも、もうオワコンぽいので、待つのはあきらめて、MacBook Pro Retina 15への乗り換えしたのだ。先代MacBook Pro 17インチもSSDに換装してからはそんなに不満無く使ってたのだけれど、消費税増税前のどさくさということで。

ブラウン管ディスプレイ以来の光沢ディスプレイだけど、思ったほど違和感ない。

C#のイベントパターン(EventHandler パターン)は、今となっては、利用することを強調するほどのパターンじゃ無くてよいのでは、と思うのですよ(タイトル長い)

だって、
Func デリゲート
とか
Action デリゲート
などができたので、EventHandlerとEventArgsは"過去の遺物"扱いでよいかと。

マイクロソフトさん、イベントパターンについては、プログラミングガイドや、クラス ライブラリ開発のデザイン ガイドラインで布教するのは控えて、フェードアウトしていいと思いますよ。
ましてや、コード分析のルールCA1009 CA1009: イベント ハンドラーを正しく宣言しますとか、そんな目くじら立てなくても。

でも、WinRTでもけっこう使われてるか。

C# EventWaitHandleクラスにはAsync無いのか。ThreadPool.RegisterWaitForSingleObject

C# でイベントEventWaitHandle,(C#言語のeventデリゲートじゃなくてWin32イベントのほうね)のシグナルを待つのに、非同期のXxxAsync()は無いのか...。せめてeventデリゲートあるかと思ってた。Processクラスには終了待つイベントハンドラあるのにね。
AutoResetEventやManualResetEventの待ち合わせで非同期的にしたいときは、ThreadPool.RegisterWaitForSingleObjectってのを使えるのか。なんだWin32まんまだな。async/awaitになれた身にはちょっとめんどくさいな。Task使って非同期Asyncメソッド自作しちゃえばいいんだが。スレッド使うのもったいないとかスケール気にする場合は、ThreadPool.RegisterWaitForSingleObjectだなあ。

今日知ったこと Windowsでも! apt-getやbrew的な、Chocolatey

Chocolatey Mac環境でbrew便利ですので、Windowsにもあれば当然うれしい。自分の場合Win環境はParallels上の仮想マシンWin8なので、極力最低限のものだけ入れてたんだけど、これなら、もうちょっといろいろ入れてみようかな。

Chocolateyの入れ方とかは、Chocolateyにあります。PowerShellコマンドで。

まずはGow、(Win環境は小さく保ちたいからCygwinじゃなくGowにしておこうと)

cinst Gow

Chocolateyコマンドはいくつかエリアスがあって、インストールは"cinst"です。

ちなみに今日2013/12/29現在は、RubyのパッケージはRuby2.0でRuby2.1ではありませんでした。でもWinには入れないけどね。

Vert.x

Node.jsいいね!npmが秀逸でさ!、とか思ってたら、Vert.xですと。

さっそくインストール。Mac環境なのでHomebrewですわ。

> brew install vert.x

あっという間。brew万歳。 vertxコマンド動作確認してみる。

> vertx version
2.1M2 (built 2013-12-01 13:02:34) 

ちゃんと入った。

せっかくなのでRuby(JRubyね)にしてみよう。

require 'vertx'
puts "Hello Vert.x"
Vertx.exit

こんなvertx.rbを書いたら

> vertx run vertx.rb
Hello Vert.x

おけ。

プログラミングC# 第7版

第6版持ってるけど、第7版も出たら買おうと思ってたので。C#5(.NET4.5)対応した内容を是非読みたかった。
Rxがまるまる1章分ある。RxとTask(やasync/await)の扱いの比重は、個人的には逆のほうがうれしかったな。Rxは確かにおもしろいけど。
とはいえ、C#を学ぶ上で大変良い本であることに変わりないと思いました。

プログラミングC# 第7版

プログラミングC# 第7版

NUnitのTestCaseとTestCaseSourceはいっしょに使える

private enum MyEnum
{
    AAA,
    BBB,
    CCC
}

private static IEnumerable<string> GetCaseSource() 
{
    return Enum.GetNames(typeof(MyEnum));
}

[Test]
[TestCase("abc")]
[TestCaseSource("GetCaseSource")]
public void FuncTest(string arg)
{
    Assert.なにか;
}