読者です 読者をやめる 読者になる 読者になる

WCF って TPL をサポートしていたのか

ものすごく今さらだけど、知らなかった。 というか、試そうともしていなかった。 using System; using System.ServiceModel; using System.ServiceModel.Channels; using System.Threading.Tasks; namespace WcfAsyncSample { [ServiceContract] public inte…

ASP.NET MVC 5 でビューを PDF に変換

以前、iTextSharp を使って ASP.NET MVC で PDF を作成する方法を試した。 ASP.NET MVC で PDF を作成 - present ASP.NET MVC で PDF を作成 - present ただ、実現したいのは「表示している HTML を PDF でダウンロードする機能」なので、 iTextSharp だと H…

ASP.NET MVC 5 のコントローラーでアクションの URL を作成する

コントローラーでも UrlHelper を使ってアクションの URL を作成できたのでメモしておく。 var helper = new UrlHelper(ControllerContext.RequestContext); var indexPath = helper.Action("Index", "Home"); // => / var indexUrl = helper.Action("Index"…

ASP.NET MVC 5 でビューから文字列を作成する

ASP.NET MVC 5 でビューが描画する HTML を、そのままレスポンスとして返すんじゃなくて、 いったん文字列で変数に格納したかったのでやってみた。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web…

ASP.NET MVC 5 実践プログラミング

ASP.NET MVC を体系的に勉強するなら書籍が一番だと思い本書を購入。 期待通りの良書だった。 ASP.NET MVC はリリースされてから今まで、ほとんど使ったことがなかった。 Web アプリケーションフレームワークで使うのはもっぱら Rails。 今回初めて ASP.NET …

ASP.NET MVC で PDF を作成

ASP.NET MVC でチャートを表示するには、 System.Web.Helpers にある Chart クラスを使えばいいことが分かった。 ASP.NET MVC でチャートを表示 - present ASP.NET MVC でチャートを表示 - present ここからさらに、チャートを含んだドキュメントを PDF でダ…

ASP.NET MVC でチャートを表示

ASP.NET MVC でレーダーチャートを表示する方法を調べたところ、 System.Web.Helpers にある Chart クラスを使うのが手っ取り早そうだった。 System.Web.Helpers は ASP.NET MVC 5 のプロジェクトを新規作成すると、 既にアセンブリ参照に含まれているから、…

PostgreSQL で Dapper を使う

.NET Server Framework がリリースされたら、Mac OS X や Linux で動く .NET アプリケーションを作ることもありそう。そうなるとデータベースは PostgreSQL かなぁ。My SQL や MariaDB も捨てがたい。 どちらにしても、ORM には Dapper か Entity Framework …

最小の Owin アプリケーションを Heroku にデプロイしてベンチマーク計測してみた

はじめに heroku-buildback-mono を使えば C# で書いた WEB アプリを Heroku で動かすことができる。 ランタイムは .NET Framework じゃなくて Mono だけど。 Heroku + Mono のパフォーマンスが知りたくなったので 最小の Owin アプリケーションをデプロイし…

NetTcpBind​ing の TCPポート共有を有​効にしているとトレー​スファイルに大量の警​告とエラーが出力され​る

WCF を使っているアプリをデバッグしていて、WCF のトーレス機能を ON にしていると、 クライアント側のトレースファイルに大量の警告とエラーが出力されていた。 アプリは一見普通に動いていたから、今の今まで気づかなかった。なんという悪夢。 2日ほど調…

ChannelFactory の閉じ忘れに注意

チャネルを閉じて安心するな。ChannelFactory にも Close メソッドがあるぞ。 var factory = new ChannelFactory<IGreetingService>( new NetTcpBinding(), "net.tcp://localhost:808/IGreetingService"); var channel = factory.CreateChannel(); var result = channel.Greet(</igreetingservice>…

MSTest を使って RSpec っぽくテストを書いてみた

プライベートで RSpec 使ってテストを書いていると、 仕事でも RSpec っぽくテストを書きたくなる。 でも、仕事で使っている言語は C# だから、Visual Studio の単体テスト機能(MSTest) しか使わせてもらえない。 RSpec は describe や context を入れ子に出…

内部で使っているクラスを無理やりモックと差し替え可能にする方法

素人が購入することは考えにくい Visual Studio 2010*1で、クラス内部で使っている他のクラスを無理やりモックに差し替え可能にする C# サンプルコードを書いてみた。 public class Foo { public Foo() { // デフォルトを設定 CreateBar = () => { return ne…

Azure SQL データベースのデータを Azure Storage Services にバックアップするサンプル

Azure SQL データベースのデータを DAC Framework を使ってエクスポートし、Azure Storage Services にアップロードするサンプルを書いてみた。バックアップだけでなく、バックアップ一覧の取得と、復旧も実装している。エミューレータで動くことは確認した…

SQL Server 2012 の DAC Framework を試してみた

Windows Azure + Azure SQL データベースでサービスを提供するにあたって、今頭を悩ませているのがデータのバックアップ。ファストサーバーの件もあるし…。Windows Azure ポータルサイトから手動でバックアップする手段は提供されてるけど、定期的に自動でバ…

Azure SQL データベースでは SqlBulkCopy で一時テーブルにデータを書き込めない

集計中のデータを SqlBulkCopy を使って一時テーブルに流し込もうとしたら、 目的のテーブル '#tblae9a0940ec5d4a81912e3598ba6c24cf' にアクセスできません。 っていうエラーが発生した。原因を調べていてたどり着いた MSDN フォーラムの投稿では、 これは …

JavaScript 以外での即時関数パターン

以前書いた次の記事を読み返していて思ったんだけど、 目から鱗が落ちた JavaScript の即時関数パターンの使い方 - present C# でも無名関数作れるから即時関数パターンできるよね。 using System; using System.Diagnostics; namespace ImmediateFunctionSa…

Azure SQL データベースの課金の仕様がややこしい

Azure SQL Database で、データを Insert したり Delete したり、ときにはデータベースを CREATE したり DROP したりしていたら、無料評価版の有効期限を30日残して Azure SQL Database の使用制限に達してしまった。てっきり、データベースに保存しているデ…

WorkerRole で WCF サービスを NetTcpBinding を使ってホストする手順

はじめに Windows Azure の WorkerRole で、WCF サービスを NetTcpBinding を使ってホストできたので、その手順をメモしておく。ネット上で見つかるサンプルはセキュリティを無効にしているものばかりだけど、それだと実戦で使えないので、SSL over TCP を使…

WorkerRole で WCF サービスを BasicHttpBinding を使ってホストしようとしたけど断念

WCF サービスを BasicHttpBinding を使って WorkerRole でホストするサンプルを作成したけど、Windows Azure にデプロイしたら WorkerRole インスタンスの開始に失敗してしまう。例外が発生したらキャッチしてログを出力するように修正して再度デプロイした…

C# で RetryHandler ってやつを実装してみた

仕事では調査や資料作成が多くて、ここのところ C# でコード書いていない。たまには書かないと忘れちゃいそうだし、何かお題ないかな〜って探してたら、こんなのを発見。 Peercastでどんな配信してるか可視化してくれるサイト作った。 - キモブロ Ruby の re…

Selenium でブラウザを自動操縦して Web アプリをテストする

はじめに Jasmine の RubyGems を使ってコマンドラインから JavaScript のテストを実行できたけど、Ruby からブラウザを自動操縦するのには Selenium WebDriver を使っているみたい。この Selenium WebDriver 、Ruby だけじゃなくて、C# や Java や Python …

.NET で WebSocket 使うなら WCF WebSockets で FA

WCF WebSockets で WebSocket クライアントが提供されていることを今さら知りました。WebSocket サーバーが提供されていることは前から知っていたんですけどね。ここのところずっと Ruby や JavaScript でばかり遊んでいたので、.NET の情報にだいぶ疎くなっ…

Jenkins の WebSocketNotifier プラグインの Windows クライアントを作ってみた

ちょっと前(?)に仕事で Jenkins を導入したとき、Jenkins でビルド失敗時にチーム全員にメールを送るように設定してみました。しかし、誰もメールを見ている気配がない…。まぁ、メーラー起動するの面倒だし仕方ないかな。私もメール見てないし。 ビルド結果…

Jenkins で Visual Studio のコード分析結果を表示する方法

はじめに 先日、Jenkins でテスト結果やコードカバレッジを表示できるようにしました。 Jenkins で MSTest の結果とコードカバレッジを表示する方法 - present これで終了と思いきや、「コード分析の結果も表示して」との要望が。 まぁ、Visual Studio 2010 …

Jenkins で MSTest の結果とコードカバレッジを表示する方法

はじめに Jenkins で .NET ソリューションのビルドとテストが出来るようになりました。これだけでも便利ですけど、欲を言えばテスト結果を Jenkins 上に表示したい。あと、コードカバレッジのレポートも表示できると、いろいろ捗りそうです。ということで、…

さすがMoles!Moq たちにできない事を平然とやってのけるッ

はじめに Jenkins を導入して継続的インテグレーション(以下 CI)を始めてみたものの、作成済みテストの多くは他のテストの事を考えて作成されていないので、テスト環境を破壊するものが結構ありました。このまま常時テストしたところで、常時失敗するだけ。…

.NET 開発者のための Jenkins 入門

はじめに 仕事で Subversion と Trac を使っていますが、残念ながら、活用できているとは言えません。継続的インテグレーション(以下CI)?何それおいしいの?って状態。そもそも CI やるために Trac とか諸々導入したはずなんですけどね…。CI 導入しなきゃと…

WebRole でログを Azure Storage Services に保存する方法メモ

SDK 1.3 になってやり方が変わっていました。RoleInstanceDiagnosticManager を使って現在の設定を取得し、プロパティを色々変更して再び RoleInstanceDiagnosticManager にセットしないといけないみたい。 using System; using System.Linq; using Microsof…

WebRole で大きなサイズのファイルをアップロードするための設定メモ

調査用に Blob ストレージを使った簡単なアプロダを作って Windows Azure にデプロイしたけど、いざ 100MB 超のファイルをアップロードしようとするとエラー。 ASP.NET ではアップロードできるファイルのサイズが制限されている(デフォルトでは 4MB)ので、下…

Windows のレジストリを読み書きするサンプルを書いてみた

ここのところ Python や Java ばかり触っています。たまには .NET の記事も書かないと怒られそうです。誰に怒れられるのかはわかりませんけど。.NET のネタが無いか考えていたら、Windows のレジストリ操作が必要な場面に遭遇したので、読み書きを行うサンプ…

C#で名前埋め込み型の文字列フォーマット操作

Python の文字列フォーマット操作では sql = "SELECT %(name)s FROM %(table)s WHERE 10 < %(code)s" % \ {"name":"C2", "table":"TBL1", "code":"C1" } という風に、名前で変換する項目を指定出来ます。この方法、どんな値に置換されるか分りやすいので便利…

Managed Extensibility Framework でプラグイン機能を実装する紆余曲折

.NET Framework 4 で提供されている Managed Extensibility Framework (以下 MEF) は、シンプルな DI 機能を提供していて、アプリにプラグイン機能を実装するのに使えます。私も最近、MEF を使ったプラグイン機能の実装を検討し始めました。 MEF を使ってプ…

Code Recipe はじめました

Code Recipe がリニューアルされて、サンプルコードを投稿&公開できるようになっていました。トップページのデザインが変わったことは確認していましたが、そんなステキ機能まで追加されていたとは…。 さっそくはじめてみました。 Sample Code - MSDN Examp…

WCF でメッセージヘッダにデータを埋め込んでこっそりやり取りするメモ

WCF を使ったアプリにて 自前のセッション機能を実装してるんですが、それで使うセッション ID をクライアントとサービスの間でやりとりしたい。引数や戻り値ではなく、裏でこっそり渡すのがベターです。そんなちょっとしたデータを、WCF のメッセージヘッダ…

結局最後は「MVVM + Messenger + Behavior パターン」に行き着いた

はじめに 前回、Messenger パターンという、ViewModel から View に要求を送る方法を試しました。 いまさら聞けない「MVVM + Messenger パターン」超入門 - present ただ、「View のコードビハインドにメッセージを処理するコードなんて書きたくない!」って…

いまさら聞けない「MVVM + Messenger パターン」超入門

はじめに 以前、MVVM パターンで ViewModel から View を操作する話題で祭になりました。 MVVM パターンで VM から VIEW を操作したい MVVMでVMからViewを操作する考察 - The Road to C# Master Trapemiya MVVMパターンでVMからVに通知する方法 - かずきのBl…

Reactive Extensions 入門(5)

Reactive Extensions(以下 Rx)で個人的に注目していたものに、非同期呼び出しを IObservable に変換する機能があります。これに興味をもったから Rx に入門したといってもいいくらいです。 ちなみにここで言う「非同期呼び出し」は、「Beginなんとか」と「En…

Reactive Extensions 入門(4)

Observable クラスは IObservable を生成するいろんな機能を提供しています。その中でちょっと変わっているのが、C# のイベントを IObservable に変換するもの。さっそく試してみます。 まずは下準備。イベントを発生させるクラスを用意します。 public clas…

Reactive Extensions 入門(3)

Reactive Extensions (以下 Rx) の Observable クラスには、IObservable 用の拡張メソッドが大量に用意されています。インテリセンスに表示されるメソッドが多いのなんの。その中には Where や Select といった、LINQ でお馴染みのメソッドも数多く見られま…

Reactive Extensions 入門(2)

Reactive Extensions (以下 Rx) には中核を担うクラスがあります。その名も Observable。LINQ でおなじみの Enumerable を彷彿とさせる名前ですね。Observable クラスは IObservable を生成するメソッドと、その IObservable 用の拡張メソッドを提供していま…

Reactive Extensions 入門(1)

入門するのは私なんですけどね。.NET Framework 4 SP1 で追加されると噂の Reactive Extensions(以下 Rx)。ずっと気にはなっていたんですが、まったく触っていませんでした。 id:okazuki さんが Rx の入門記事を書いていたり、neue さんが Rx の詳細な解説を…

Type オブジェクトを使ってジェネリックメソッドを呼び出す方法

下のように、ジェネリックなメソッドを、非ジェネリックなオーバーロードメソッドから呼び出したいときがたま〜にあります。 // ジェネリックなメソッド public string Greet<T>(string name) { return string.Format("{0} {1}", typeof(T).Name, name); } // </t>…

UIをコードでXAMLっぽく構築する方法

WPF や Silverlight では、XAML で UI を記述するのが基本です。でも、どうしてもコードで記述せざるを得ない場合がまれにあります。たとえば、配置する要素がユーザーの設定内容で変わる場合とか。 だいぶ前に、C# のコードで XAML っぽく記述できる DSL を…

『MCTS: .NET Framework 3.5, Windows Presentation Foundation アプリケーション』に合格

土曜日に『MCTS: .NET Framework 3.5, Windows Presentation Foundation アプリケーション』を受験しました。今回が MCP 初受験。 結果は 一発で合格することができました。これで私も MCTS の仲間入りです。 この1か月ほど、高い的中率で評判のC社の問題集…

SQLite でページング

データベースに SQLite を使っているアプリでページングを実装するために、例えば検索したデータのうち101行目から150行目までを取得したいとき、LIMIT と OFFSET の構文を使ってこう書けます。 SELECT id, name, price FROM product WHERE price BETWEEN 50…

.NET Framework 4 で System.Data.SQLite を使うその場しのぎの方法

____ / \ /\ キリッ . / (ー) (ー)\ アプリの設定を保存するなら SQLite が便利だお / ⌒(__人__)⌒ \ .NET で SQLite 使うなら System.Data.SQLite があるお | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''…

列挙体のメンバを持つクラスを返す WCF サービスを Windows Azureで動かしたらハマった

次のような列挙体とクラスがあるとします。 public enum ProductType { Normal = 1, Demo, Support, } [DataContract] public class Product { [DataMember] public int Id { get;set; } [DataMember] public string Name { get;set; } [DataMember] public …

Silverlight と HTML5 の使い分け

ネタ元→「マイクロソフトが戦略変更。HTML5が唯一のクロスプラットフォーム、SilverlightはWindows Phone 7のプラットフォームに - Publickey」 こんなニュースがあったので、今後 HTML5 と Silverlight をどう使い分けていくか、自分なりの方針を考えてみ…

匿名クラスを使ったリファクタリング

最近、メソッド内のローカル変数の数が多くなると、関連性のあるものを匿名クラスを使ってまとめるようになりました。こんな風に。 // WCF で使う設定を匿名クラスにまとめる var config = new { BaseAddress = "net.pipe://localhost", Address = "Greeting…