« 2008年11月 | トップページ | 2009年1月 »

2008年12月の19件の記事

2008年12月31日 (水)

[TDD の練習(3)] 和暦年月の文字列を検証する

とある掲示板より。
> 号年月(例 H2012)が実在する年月であるかをチェックしたいです。
> 年号は、H=平成 S=昭和のみを対象とします。

質問者は、 旧 VB の IsDate() 関数と互換のメソッドが使えるような実装が出来た、 というところで終わっています。 そのコードは、 「一部省略しております」 とのことで、 文字列を分解する前の文字列長チェックとかは書かかれていません。

で。 こういう検証器、 つまり、 引数が何らかの基準を満たしていたら true、 そうでなければ false を返すというモノは、 テストを書きやすいのでネタにしてみます。
また、 和暦を扱う上で厄介なのは、 境界値の前後をどうするかという仕様の問題ですが、 ここでは IsDate() の挙動に合わせる、 ということにします。

ということで、 いつものようにどんなテストコードを書いていけばいいのかを、 文章で書いてみますので、 ユニットテストに書き下してみてください。

今回は、 VB.NET 2008 + NUnit です。
・ プロジェクト名: IsDateを使ってみる
・ テストクラス: 年月検証器のテスト
・ 製品クラス: 年月検証器 ( +α )
・ 製品に実装するメソッド
Public Shared Function それは実在する年月か (ByVal 元号年月 As String) As Boolean

続きを読む "[TDD の練習(3)] 和暦年月の文字列を検証する"

| | コメント (0) | トラックバック (1)

2008年12月30日 (火)

[TDD の練習(2)] (すっかり出遅れた) 縦書き祭

わんくま blog での縦書き祭は → このへんから

てことで、 仕様はこんな感じにします。
・ 入力は全角のテキストだとする。 ( そうじゃなかったら、 読み込んだときに変換してね )
・ Console.WriteLine() で出力していくと、 縦書きしてあるように見えること。
・ 無駄な空白 (右端と下端) は、 出力しない。

前回と同様に、 どんなテストコードを書いていけばいいのかを、 文章で書いてみますので、 ユニットテストに書き下してみてください。

  1. 最初に、 どんな使い方をするものなのか、 考えます。
    コードの流れはどんなふうでしょう。 その中で、 今回作るモノはどのように使うでしょう? 分かりにくいときは、 ざっと書いてみます。
    ここは回答例を書いておきましょう。 こんな感じでしょうか…

// 読み込んだら、UNICODE 正規化と全角変換して
List<string> 横書きデータ = new List<string>();
foreach (string 一行 in 横書きデータ元) {
  string 正規化済み
   
= 一行.Normalize(
      System.Text.NormalizationForm.FormC);
  string 全角化済み
    = Microsoft.VisualBasic.Strings.StrConv(
      正規化済み,
      Microsoft.VisualBasic.VbStrConv.Wide,
      0x0411);
  横書きデータ.Add(全角化済み);
}

// 縦横変換機を呼び出して
IEnumerable<string> 変換後データ
  = 縦横変換機.縦書きに直せ(横書きデータ);

// コンソールに書き出させる
foreach (string 横一行分 in 変換後データ) {
  Console.WriteLine(横一行分);
}

上で書いたコードで、 まだ無いモノは 縦横変換機 ってヤツです。 こいつを作るためのテストを書いていきます。

続きを読む "[TDD の練習(2)] (すっかり出遅れた) 縦書き祭"

| | コメント (0) | トラックバック (1)

2008年12月28日 (日)

[.NET] yield return はコードカバレッジでカバーできない

そーいや yield return を自分で使ったこと無かったやん~ f(^^;
…と思い立って使ってみたんだけど。 その話はさておき。

前から気になってはいた、 yield が Visual Studio のコードカバレッジでちゃんとカウントしてくれない、 って問題。
けっきょく、 Visual Studio 2010 で対応、 ってことらしいです。 ( …とメモ f(^^; )

・ MSDN フォーラム: Visual Studio フィードバック
yield returnはコードカバレッジでカバーできない。

・ MS Connect : Feedback ID = 329830
Code Coverage is incorrect when using 'yield return' block

It has been resolved as fixed and the fix should appear in the upcoming beta of Visual Studio 2010.
投稿者: Microsoft、投稿日時: 2008/11/18 23:56

| | コメント (0) | トラックバック (0)

[.NET] StreamWriter を使って シフト JIS のテキストファイルを書き出すと 2GB でエラー

あれま。
まぁ、 Encoding 無指定で ( てことは UTF-8 だっけ? f(^^; ) 書き出す分には、 問題無く 2GB 越えられるようだし。 どうしてもシフト JIS で 2GB 越えを、 ってときには、 自前で変換してバイナリで書き出せば、 きっと回避できるし。

MS Connect: FeedbackID = 389622
StreamWriter に Encoding を指定してファイル出力を行うと、 2GB を超える直前でArgumentException が発生する。
Encoding を指定しない場合は、 問題なく出力される。

けれど、 知らずにログの書き出しとか実装してたら、 大ハマリするよねぇ (;;

※ 直して欲しい人は、 レイティング付けましょうね f(^^;


( 2009/01/08 追記 )

上記フィードバックに MS からの回答が付いてました。

This problem has been fixed and the fix will appear in the next major release of the .NET Framework..

投稿者: Microsoft、投稿日時: 2009/01/06 14:21

もう直ってるけど、 公開は次の .NET Framework のメジャーリリース ( つまり、 4.0 のことでしょうね ) で …って、 また微妙な言い方を。 既存のバージョン用の修正は出るのかどうかワカランじゃん。

| | コメント (0) | トラックバック (0)

サンプルコードはサンプルであって製品じゃないんだからねっ

…っていう、 昔はあたりまえだった ( …ハズ f(^^; ) ことを、 このごろはどんどんしつこく言わないといけないご時世なようで。

いつからなのか分からないけど、 今日ふと気付いたら、 MSDN ライブラリにも、 こんな注意書きが。
20081228_msdnlib01

このサンプルコードは概念を示すためのものであり、 その概念に関連するコードのみを示しています。 特定の環境について必ずしもセキュリティ要件を満たしていませんので、 そのまま使用しないでください。 セキュリティおよびエラー処理コードを追加して、 プロジェクトをより安全かつ堅牢にすることをお勧めします。

| | コメント (0) | トラックバック (0)

2008年12月25日 (木)

[.NET] SandCastle 用に、 namespace へのコメントをソースコードに埋め込む方法

いや、まだだから」 より。

その3.名前空間ごとに NamespaceDoc クラスを作成する。

ということで、この方法があったりします。
つまり、名前空間のコメントを入れるためのクラスを定義してしまうってゆー、まーなんというか、盲点というか、抜け道というかw
C# だとこんな感じですねー。

namespace 対象とする名前空間 {
    /// <summary>
    /// 名前空間の概要
    /// </summary>
    /// <remarks>名前空間の補足</remarks>
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    class NamespaceDoc {
    }
}

…ぐふぅ。 そんなぁ~!? f(^^;
はい、 まさにドキュメント読んでませんでした orz

続きを読む "[.NET] SandCastle 用に、 namespace へのコメントをソースコードに埋め込む方法"

| | コメント (1) | トラックバック (1)

2008年12月21日 (日)

[TDD の練習] FizzBuzz 問題

わんくま同盟 東京勉強会 #27上野さんセッションで紹介された、 FizzBuzz 問題。
100 まで表示せい、 ってお題に、 即座にその場で書き下した yukiyukki初音さん、 さすがです。

けど、 あれれ? 0 始まりじゃなくて、 1 からだよ~ f(^^;
あ、 それだけじゃないよ~な…

これって意外と難しい? f(^^;

ということで、 NUnit ( VS 2008 Pro. 以上を持ってるなら、 そのユニットテストでも OK ) 用のテストコードを考えてみてください。

続きを読む "[TDD の練習] FizzBuzz 問題"

| | コメント (2) | トラックバック (1)

[わんくま同盟 東京勉強会] 第27回 (2008/12/20) の資料

初めて参加させていただいた東京の勉強会では、 名古屋第1回でもやった MSF Agile を話させていただきました。 → わんくま同盟 勉強会の資料

1年前のプレゼン資料がほぼそのまま使えたというのは、 喜ぶべきか悲しむべきか…
いまだに MS のサイトには MSF ver.4.x の日本語資料が無いみたいだし、 日本では TFS を真剣に売り込むつもりが無いんじゃないの? …と、 つい愚痴りたくなります f(^^;
# ひょっとして、 米国外には MSF は広めないでくれ って圧力が掛かってるとか? (w

そうそう。 東京の勉強会参加者には、 自営や社長さんが大勢いらっしゃってちょっとびっくり。 名古屋とはだいぶ雰囲気が違いますね。

| | コメント (0) | トラックバック (0)

2008年12月20日 (土)

なんてこった、 もう東京へ行く日になってしまった…

…っていうか、 一週間なんも書いてないじゃん m(_`_)m

でもとりあえずは、 5時間後にお出かけすることだ f(^^;

| | コメント (0) | トラックバック (0)

2008年12月13日 (土)

ちゃんとした Web ページだと、 その中身も応援したくなるよね

12月ともなると、 年明け 1月から始まるアニメの新番組の Web サイトが、 そこかしこでオープンするわけです。 f(^^;
で… どんどん酷くなるのが、 ユーザビリティ欠落サイトの増加 (--;

おまえら、 検索エンジンを回避して、 読み上げソフトが必須な人を無視して、 Flash とかが動かない携帯端末の利用者を敵に回して、 それで人気が出ると思っとるんかいっ!? …と、 思わず愚痴りたくなる日々が続きます orz

20081212_erin01

そんな中で出会ったのが、 NHK の 「獣の奏者エリン」 のページ

一見すると、 画像 1枚が置いてあるだけの、 文字情報ゼロのページに見えます。
「またまた、 検索エンジン無視かい!?」 …と思いつつ、 CSS を切ってみると…

続きを読む "ちゃんとした Web ページだと、 その中身も応援したくなるよね"

| | コメント (2) | トラックバック (0)

2008年12月 9日 (火)

Excel VBA で、 ファイルのバージョンとタイムスタンプを取得する

今回のプロジェクト、 納品が頻繁に発生するので、 納品したモノのバージョン管理も欠かせません。 となると、 いつ、 どんなファイルバージョンのものを納品したのか、 記録しておかないといけないのですが…
ひとつひとつ、 ファイルのプロパティを開いてファイルバージョンを書き写すのって… めんど~ orz

どーせなら、 VBA でサクっと書けて、 Excel の表になってくれちゃえばいいのに~ f(^^;

続きを読む "Excel VBA で、 ファイルのバージョンとタイムスタンプを取得する"

| | コメント (2) | トラックバック (0)

Eee Box に、 さらに Vista バージョンも !?

現行 B202 の他に、 高機能の B204, B206 と、 セレロン搭載の廉価版が予定されているようなわけですが…
さらに、 Windows Vista 搭載の B203 も。

20081208_eeebox_b203 現在、 Asus のサイトには、 まったくスペックが書かれていない状態で "B203" のページが出来ていて、 そこを見るかぎりではどうやら Vista を搭載するようです。

# Atom で Vista って、 ちとありえんだろー って感じに思うのですがね~ f(^^;

| | コメント (4) | トラックバック (0)

2008年12月 8日 (月)

[NEWS] 生命の源・アミノ酸、隕石衝突で簡単に合成…実験で確認

へぇ~、 これはすごい。
高温高圧で有機物が生成されるとは。

‘生命の起源’ 有機分子は隕石の海洋爆撃によって生成した!
- 固体炭素・鉄・水・窒素ガスからの生物有機分子の生成を衝撃実験で証明 -

平成20年12月8日
独立行政法人物質・材料研究機構
東北大学大学院理学研究科

概要
独立行政法人物質・材料研究機構の中沢弘基名誉フェローらは 東北大学大学院理学研究科と共同で、 炭素(固体)・鉄・ニッケル・水・窒素ガスをステンレスカプセルに詰め、 高速の飛翔体を衝突させた後カプセルを回収し、 生成物を分析して、 グリシン*1 (アミノ酸*2)、 各種アミン*3、 同カルボン酸*4 (脂肪酸*5) など生物有機分子*6 および その前駆体の生成を確認した。  この実験は、 初期地球に海が出現した後、 40~38億年前頃に頻繁にあった隕石の海洋爆撃の際の化学反応を模擬したもので、 生命の起源の端緒となる生物有機分子の起源を強く示唆している。

続きを読む "[NEWS] 生命の源・アミノ酸、隕石衝突で簡単に合成…実験で確認"

| | コメント (0) | トラックバック (0)

2008年12月 6日 (土)

[わんくま同盟 名古屋勉強会] 第5回 (2008/12/06) の資料

20081206_wankuma 第5回では Lightning Talk ( LT ) ということで、 いつもと違ってちょっとヨタ話 f(^^;わんくま同盟 勉強会の資料

もと機械設計屋さんから見た、 「オブジェクトを志向しているプログラム」 ( Object-Oriented Program ) ってモノのイメージを、 5分間で喋らせていただきました。

| | コメント (0) | トラックバック (3)

2008年12月 5日 (金)

HONDA、 F1 撤退

HONDA の広報発表より。

2008年12月5日
F1レース活動について

私ども Honda は、 このたび、 2008年をもって F1 レース活動から撤退することを決定いたしました。

あらま、 なんてこと。 orz
第2期のエンジン開発にほんのちょっと ( ほんとにほんとにほんのちょっと。 延べで 1日にも満たない時間だったはず f(^^;;; ) だけ関わったこともあり、 寂しい限りではあります。

WORLD CAR FANS: Honda NSX See-Through Technical Illustration Leaked まぁ、 来年は、 200mph オーバー ( 320km/h オーバー ) を目指してるという新 NSX が出てくるはずなので、 宣伝効果としてはそっちだけで十分足りるはず、 ってこともあるのかもしれません。

| | コメント (0) | トラックバック (0)

2008年12月 4日 (木)

Unity でアスペクト指向

メモだけ f(^^;

EntLib4.1 での PIAB 仕様変更 (2) より。
「Unity だけでアスペクト指向プログラミングが可能になっています。」

ぉお、 そーだったのか!

| | コメント (0) | トラックバック (0)

2008年12月 3日 (水)

新型 Eee Box は、 動画対応の高機能版と廉価版

日本ではようやく先週末にまともに販売が始まったばかりの B202 ですが、 グローバルで見ればモデル末期… と、 やはり新型の情報が出てきましたよw

20081204_eeeboxb204 まずは高機能版。
これは、 公式発表になったものです。

ATI Radeon HD 3400 を載せたそうで、 リビング PC として狙ってた人、 いかがっすか~?
また、 なんと、 バッテリー搭載型もあるとのこと。 ( これが 「最長約 6時間」、 ですか~? (違w )

続きを読む "新型 Eee Box は、 動画対応の高機能版と廉価版"

| | コメント (2) | トラックバック (2)

地デジ完全移行に黄色信号

いやもう、 個人的にはとっくに赤信号だと思ってたりするわけですが… f(^^;

地デジ完全移行に黄色信号、行政も推進団体も危機感あらわ - MSN産経ニュース
2008.12.1 18:36

 平成23年7月の、 テレビの地上デジタル放送 (地デジ) の完全移行に向け、 行政や推進団体に危機感が漂っている。 9月時点の地デジ受信機の世帯普及率が46・9%と初めて目標 (50%) を下回ったためだ。 加えて全世帯の2割強とされる、 電波が届きにくい過疎地や集合住宅の共同アンテナの改修が遅れ、 予定通りの実施に黄色信号がともり始めた。

続きを読む "地デジ完全移行に黄色信号"

| | コメント (0) | トラックバック (0)

2008年12月 2日 (火)

[C#] ?? 演算子と GetValueOrDefault() メソッド

どっちも同じようなコトに使います。 つまり、 変数が null だったときの値を指定してやる、 という…

[TestMethod]
public void GetValueOrDefaultTest()
{
    int? x = 3;
    Assert.AreEqual<int>(3, x.GetValueOrDefault(-1));
    Assert.AreEqual<int>(3, x ?? -1);

    int? y = null;
    Assert.AreEqual<int>(-1, y.GetValueOrDefault(-1));
    Assert.AreEqual<int>(-1, y ?? -1);
}

おんなじようなもんだから、 どっちを使うか好みで決めちゃえばいいか~、 …と軽く考えていたんですが。 なんたるおバカ。 演算子はオブジェクトに使えるのに対して、  GetValueOrDefault() メソッドは Nullable<T> 型だけが持っているメソッドなんですね。
つまり…

string s = null;
//Assert.AreEqual<string>("(null)", s.GetValueOrDefault("(null)")); ← コンパイルエラー
Assert.AreEqual<string>("(null)", s ?? "(null)");

…ということ。 f(^^;

| | コメント (0) | トラックバック (0)

« 2008年11月 | トップページ | 2009年1月 »