しばやん雑記

Azure Serverless とメイドさんが大好きなフリーランスのプログラマーのブログ

C#

System.Drawing が画像の方向を無視するので対応した話

C#

最近は仕事で画像をいろいろと弄ることをやっているのですが、スマートフォンで撮影された画像を System.Drawing で処理させると向きがおかしくなるんですよね。原因は Exif の orientation 情報を正しく処理していないからなんですが、これがまあまあ面倒な…

Windows Azure Web サイトがいつの間にか .NET 4.5.1 に対応していた件と Helios 0.1.4-pre の話

またも気が付かなかったんですが、Windows Azure Web サイトは .NET Framework 4.5.1 へのインプレース更新が行われたようで、いつの間にかに使えるようになっていました。基本的に Web サイトでの表記としては .NET Framework 4.5 で統一されているので、実…

.NET Framework の正規表現とメールアドレス検証に悩まされた件

今週は .NET Framework の正規表現とメールアドレス検証に目いっぱい悩まされました。事の顛末を説明すると以下のような感じ。 正規表現 Regex クラスはデフォルトでは文字クラスの扱いなどが、ECMAScript の挙動とは異なるので悩みました。もしかして:.NET…

.NET 4.5 で SmtpClient の挙動が変わっていたらしい

C#

.NET 4.5 で作ってるアプリケーションにメール送信機能があるんですが、どうも特定の環境で件名が文字化けする現象が発生しました。何故か件名の最後の方の文字だけ化けるという嫌な感じな化け方でした。ちなみに、日本語の件名なので以下の記事のように ISO…

RazorEngine を使う上での Tips

C#

RazorEngine を使ってみる - しばやん雑記 で RazorEngine を使い始めてみたんですが、ASP.NET MVC の Razor との違いにちょいちょい悩むことがあったのでメモします。 文字列をエスケープせずに出力する 通常の Razor でいうところの Html.Raw に相当する機…

AutoMapper の基本とちょっとした Tips

C#

AutoMapper最近はモデルの詰め直しをする時に AutoMapper を使うようになりました。MvcFutures には ModelCopier というコピー専門のクラスがあったりしますが、やはり自由度が低すぎるので AutoMapper が便利だと思います。インストールも NuGet から一発で…

RazorEngine を使ってみる

C#

ASP.NET MVC 3 で追加された Razor ビューエンジンだけを切り出して、テンプレートエンジンとして使えるようにした RazorEngine というライブラリがあります。Antaris/RazorEngine · GitHub var Matt = new Hero(); » An early look at RazorEngine v3とりあ…

Web API よりも HttpClient に注目したい

C#

NuGet で公開されていた System.Net.Http.dll が .NET Framework 4.5 では BCL 入りを果たしました。このアセンブリには HttpClient という全く新しい HTTP のクライアントが入っています。これって元々は ASP.NET Web API 向けに HTTP を綺麗にラップしたク…

WCF WebSockets で実現するリアルタイム Web

最近は Node.js と socket.io で WebSocket を使うことが多いようですね。Windows Azure でも動作する node.exe がリリースされたり、Microsoft もオープンソース寄りになってきたのかと思います。しかし!わざわざ .NET 開発者が Node.js を使う必要がある…

ReSharper 6 の Razor 対応がやばい

C#

ReSharper 6 Enhances Razor Support | JetBrains .NET Tools Blogまだ EAP ですが、非常に期待させてくれる機能満載となっています。詳細は上記のブログを見てもらうとして、ちょっと日本語にしてみますか。 Importing Namespaces using していなくてもクラ…

接続文字列の書き方をまとめてみる

C#

内容が古くなってきたので 接続文字列の書き方をまとめてみる(2014 年版) - しばやん雑記 にて Azure にも対応した 2014 年版を公開しました。毎回、本番環境にアップする前に迷うのが SQL Server の接続文字列だったりします。レンタルサーバでは基本的に…

ReSharper を入れてみた

C#

OSS 向けのライセンスを申請していたのですが、無事に通ったみたいなので 5.1.1 Full Edition をさくっとインストール。ReSharper :: The Most Intelligent Extension for Visual Studio相変わらず重いですねー。前試したのが ReSharper 3.0 の頃だったのと…

.NET 4 の罠に引っかかった

C#

みについを .NET Framework 4 に対応させたバージョンを昨日、半自動更新でのアップデートを開始したのですが、今朝にテーマが読み込めなくて落ちるという報告を頂きました。帰宅後すぐに調査し始めたのですが 2 つの罠に引っかかったことがわかりました。 …

Repository パターンまとめ

C#

まとめになるかはわかりません。タイトルを思いつかなかっただけです。Repository for ASP.NET MVC - しばやん雑記 で Repository の使い方をちょろーんと書きましたが、IRepository で共通部分くくりだしてるのに、実装はそれぞれの Repository 任せってダ…

.NET Framework における GC と Mutex の関係

C#

Mutex を使ってアプリケーションの多重起動をブロックする場合、検索して見つかるのは以下のような実装。 Mutex mutex = new Mutex(false, "hoge"); if (!mutex.WaitOne(false, 0)) { // 既に起動されている return; } Application.Run(new Form1()); Mutex …

COM の CoClass について調べた

C#

COM の CoClass を .NET から使う場合は、空のクラス定義に ComImportAttribute と GuidAttribute を付け、同じように定義しておいたインターフェースにキャストするのが一般的です。しかし以下のようにインターフェースを new しているように書かれているコ…

.NET Compact Framework で Win32 メッセージを処理する

C#

.NET Compact Framework に用意されている Form クラスには WndProc メソッドが存在しないので、ウィンドウプロシージャの処理をオーバーライドできません。Win32 メッセージを処理するためには Microsoft.WindowsCE.Form.EventWindow を使えば、WndProc を…

Runtime Callable Wrapper (RCW) を使う時の注意点

C#

Runtime Callable Wrapper (RCW) のおかげで、COM を簡単に C# などから使うことが出来ますが、今回素晴らしくその挙動ではまったので忘れないうちにメモ。 Marshal.ReleaseComObject の呼び出し Marshal.ReleaseComObject を呼び出す必要がないのは、キャス…