2009-09-01から1ヶ月間の記事一覧

コードブロックを受け取るメソッドは便利

C#

Ruby を使うようになってから、C# でもコードブロックを受け取るメソッドを多様するようになった。 public static class DatabaseHelper { public static bool Transaction(this Database db, Action<Database> block, int retryCount) { bool success = false; for (i</database>…

internal を利用してテスト時にモックと差し替える方法

C#

internal を利用すれば、DI コンテナを使わなくても、呼び出すクラスをモックに差し替えられるんじゃないだろうか。例えば次のクラス。 public class FooService { public Foo FindFoo(int id) { FooDataAccsss dac = new FooDataAccess(); return dac.Find(…

スペイン料理バル難破船

今回は夕食を食べるために、福岡市中央区今泉にある、スペイン料理店「バル難破船」に行きました。平日なら2500円のコースが食べられるんですが、行ったのは週末。仕方ないので、「エビの土鍋焼き」「ムール貝の白ワイン蒸し」「魚介の炊き込み」の3品を注文…

RealProxy を使った WCF サービスクライアント

C#

「チャネル生成→サービス呼び出し→チャネルを閉じる」という処理を、サービスを呼び出すたびに記述するのは面倒です。できれば、これらの処理を一度のメソッド呼び出しで完結させたい。何か上手い方法がないか考えたところ、RealProxy を使う方法を思いつき…

Windows に Ruby 環境を簡単に構築できる「Ruby Installer」

Windows に Ruby 環境を構築する場合、Ruby Installer を利用すると簡単です。 RubyForge: Ruby Installer for Windows: Project Info 『One-Click Installer』の後継で、インストーラーを実行するだけで、Ruby の Windows 用バイナリやツールを一括インスト…

google appengine の gem でインストールされる appcfg のバグ?

Windows XP で、日本語で名付けたアカウントにログインし、下記のコマンドを実行。 appcfg.rb.bat gem install インストールするgem名すると、「Document and Settings 下にフォルダがない」といった内容のエラーが発生する。肝心のフォルダ名は文字化けして…

LINQ to SQL で動的にデータベースとテーブルを作成できる!

C#

LINQ to SQL の DataContext を使えば、簡単にデータベースを作成できます。しかも、同時にテーブルまで作成してくれます。これはウレシイ。 using System; using System.Data.Linq; using System.Data.Linq.Mapping; using System.Data.SqlClient; namespac…

WCF のコンテキスト付バインディングで任意のオブジェクトを送信する方法

C#

WCF には NetTcpContextBinding や WsHttpContextBinding といった、コンテキスト付バインディグが提供されています。コンテキスト付バインディングを使えば、クライアントからサービスに、任意のメタ情報を送信できます。 クライアントからコンテキストを送…

DataContractSerializer の使い方

C#

WCF ではサービスを呼び出す際、DataContractSerializer を使って、渡すデータをシリアル化しています。DataContractSerializer はインスタンス化可能なので、自分でシリアル化・逆シリアル化をすることも、まあ可能です。DataContractSerializer を使ったサ…

C#で定義したクラスを IronPython で継承する

IronPython では、C# で定義したクラスを継承したり、インタフェースを実装することができます。 C# 側 namespace PythonSampleLib { public abstract class Greeting { public abstract string Greet(string name); } } using System; using System.IO; usi…

LINQ to SQL を使ってテストデータの作成・削除を楽にする

C#

データアクセス層の単体テストで、個人的に大変だと思っているのは次の2つです。 データベースにテストデータを挿入 使ったテストデータをデータベースから削除 今までは、テストデータを挿入・削除する SQL 文を、ADO.NET のクラスを使って実行していまし…

データアクセスロジックコンポーネントの単体テストでは LINQ to SQL を使うと良い

C#

データアクセスロジックコンポーネント(以下 Dalc)の単体テストが嫌い 特に更新系のメソッド。更新されたか確認するのが面倒くさいです。いつも、データベースから値を取得するために、テスト用の Dalc を作っていました。クラス作って、取得用 SQL 書いて……

C# から IronPython を実行する

IronPython を試した事が無かったので、超簡単なサンプルを作ってみました。IronPython だけ使っては芸がないので、C# からスクリプトを呼び出すようにしています。その代わり Python スクリプトは手抜き。 Python 側 print('Sample.py Called') message = '…

アプリケーション構成ファイルを記述して WCF サービスに派生クラスを渡せるようにする

C#

アプリケーション構成ファイルに system.runtime.serialization セクションを記述することで、WCF サービスに派生クラスを渡せるようになります。 <configuration> <system.runtime.serialization> <dataContractSerializer> <declaredTypes> </declaredtypes></datacontractserializer></system.runtime.serialization></configuration>

Moq のススメ

Tech Ed 2009 で、「Moq」というライブラリの存在を知りました。Moq はモックを使った単体テストを記述するためのライブラリです。 moq - The simplest mocking library for .NET and Silverlight - Google Project Hosting Moq の特徴は、モックの振る舞い…

ケータイのメールは Gmail にバックアップする方が楽

先日 au ケータイのメールを PC にバックアップする方法を紹介しました LISMO を使えば、メールを PC にバックアップできます。でも、手順がちょっと面倒ですよね。定期的にやらないと意味がありません。できれば、自動でメールをバックアップしたい。 受信…

アントンのドリアランチ

今回言ったのは天神にある「アントン」。この店はグラタンとドリアが有名です。私が注文したのは「ドリアランチ」。ドリアとサラダとコーヒー(またはオレンジジュース)のセットです。ドリアのホワイトソースには栗が使ってあるため、ほんのり甘いです。栗が…

ケータイの受信メールは LISMO でバックアップしておこう(※ただし au に限る)

ケータイのメールをバックアップしたい! 私のコミュニケーション手段は、ケータイのメールが多くを占めています。友人、同僚、家族など。電話と違って、内容が手元に残るので重宝しますよね。緊急でもない限りは、メールで連絡を取るようにしています。なの…

WCF で集約例外ハンドラを実装する

C#

WCF サービス内部で発生した例外は、1ヶ所でまとめてハンドルして、ログ出力などのエラー処理を行いたいですよね。WCF では catch されなかった例外をハンドルするために、IErrorHandler インタフェースが提供されています。このインタフェースを実装したク…

「あとで読む」を使って、気になる記事を自席でゆっくり見よう

私の会社は自席でネットを見ることができません! 会社でネットを見るには、共用のネットマシンを使う必要があります。この共用のネットマシンはフロアに3台設置。共用なので、長い時間占領することができません。 面白い記事を見つけても読めない! 後ろが…

取扱注意!WCF で例外情報をクライアントに返す方法

C#

前回、WCF の例外処理に関するエントリを書きました。 WCF の例外処理 - present このエントリで紹介した方法よりも簡単に、例外情報をクライアントに返す方法があります。 ServiceBehavior の IncludeExceptionDetailInFaults プロパティを true にする た…

WCF の例外処理

C#

WCF は例外を握りつぶしてしまう WCF サービス内で発生した例外は、何もしなければ握り潰されます。そして、代わりに FaultException がクライアントに返されます。例外の内容も、「例外がハンドルされなかった」という旨に変更されてしまいます。これじゃ何…