c#

Microsoft Azure の Cloud Services のデプロイで嵌った

c#

嵌ったのでメモ。 WCF Service WebRole を含む Cloud Service を、Visual Studio 2013 Update 4 で Microsoft Azure にデプロイしたら、 パッケージを作るところでエラー発生。 Could not load file or assembly ‘Microsoft.WindowsAzure.Packaging, Version…

WCF で呼び出されたサービスのメソッド名とクライアントのIPアドレスを OperationContext から取得するメモ

c#

OperationContext の IncomingMessageHeaders や IncomingMessageProperties から取り出せる。 でもこれくらいはプロパティで用意しておいて欲しいな。 public static class OperationContextExtensions { // 実行中のサービスのオペレーション名を取得 publ…

ASP.NET MVC 5 で JavaScript を使ったページを PDF に変換する

c#

先日 TuesPechkin を使って、ASP.NET MVC 5 のビューを PDF に変換できることを確認した。 ASP.NET MVC 5 でビューを PDF に変換 - present ASP.NET MVC 5 でビューを PDF に変換 - present TuesPechkin は wkhtmltopdf のラッパーで、wkhtmltopdf は JavaSc…

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

c#

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

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

c#

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

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

c#

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

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

c#

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 を作成

c#

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

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

c#

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 アプリケーションをデプロイし…

ChannelFactory の閉じ忘れに注意

c#

チャネルを閉じて安心するな。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 っぽくテストを書いてみた

c#

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

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

c#

素人が購入することは考えにくい 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 を試してみた

c#

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

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

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

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

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

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

c#

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

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

c#

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

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

c#

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

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

c#

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

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

c#

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

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

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

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

c#

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

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

c#

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

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

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

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

c#

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

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

c#

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

Code Recipe はじめました

c#

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

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

c#

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

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

c#

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

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

c#

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

Reactive Extensions 入門(5)

c#

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

Reactive Extensions 入門(4)

c#

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

Reactive Extensions 入門(3)

c#

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

Reactive Extensions 入門(2)

c#

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

Reactive Extensions 入門(1)

c#

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

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

c#

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

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

c#

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

SQLite でページング

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

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

c#

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

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

c#

次のような列挙体とクラスがあるとします。 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 …

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

c#

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

Drive 作成前に PageBlob を作成する必要はない

Windows Azure の本番環境で Drive を作成するとき、事前に PageBlob を作成しておく必要はないです。もし PageBlob を作成していたら、Mount するときに Unknown Error HRESULT=D000000D というエラーが発生してしまいます。 原因がわからず MSDN フォーラ…

Silverlight で XAML 内のテキストをローカライズする方法

c#

以前、WPF で XAML をローカライズする方法を紹介しました。 Resourcesに定義した文字列を XAML で使う方法 - present Silverlight には x:Static マークアップ拡張が無いので、WPF の方法が使えません。残念。その代わりと言ってはなんですが、Binding を使…

CloudStorageAccount の FromConfigurationSetting メソッドの注意点メモ

c#

最近、ようやく Windows Azure 本番環境を試せるようになりました。そして、Development Storage との動作の違いに悪戦苦闘する日々。同じクラウドでも、Google App Engine のときはこんなに苦労しなかったのに。。。 …そろそろ本題に入ります。 Windows Azu…

DropDownButton を実装する添付ビヘイビア

c#

私が WPF で不満に思っていることの1つに、「DropDownButton が無い」があります。過去に何回かこの話題を記事にしていますが、それくらい私にとっては大問題です。Windows Forms の ToolStripDropDownButton みたいなコントロールが、なんで WPF には無い…

TextBox でプレースホルダーを表示する方法

c#

WPF の TextBox にはプレースホルダーを表示する機能がありません。あ、プレースホルダーっていうのは、WPF で以前 Watermark って呼んでいたやつです。HTML5 の影響で、プレースホルダーなんて格好つけて呼ぶようになってしまいました。 WPF がベータ版のと…