しばやん雑記

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

C#

マルコフ連鎖を使って文章を自動生成するクラスを C# で書いた

C#

NMeCab で形態素解析が簡単に行えるようになったので、何となくマルコフ連鎖での文章生成を選びました。少し時間かけて C# で実装したので、作成したコードを GitHub に置いておきました。shibayan/MarkovDemoデフォルトでは MarkovKey クラス内で N = 2 と…

NMeCab と NuGet を使って手軽に形態素解析を試した

C#

Azure Search で久しぶりに形態素解析周りが気になったので MeCab でも使うかと思って調べると、今は C# で実装された NMeCab というライブラリがあるんですね。NMeCab - 形態素解析エンジンMeCabの.NET版 (エヌメカブ ケイタイソカイセキ エンジン メカブ …

Twitter や Facebook が SSL 3.0 を無効にしたので死にかけた話

C#

今朝、Twitter や Facebook が SSL 3.0 を素早く無効化したため、API を使って処理を行っていたアプリが全滅するという悲惨な出来事が発生しました。Twitter や Facebook の API を使っている場合、Global.asax.cs とかの初期化コードに以下のような設定を書…

SendGrid の公式 C# クライアントが残念な感じだったので

本来なら SendGrid の Template Engine を使ってみた的な内容になるはずだったんですけど、公式に提供されている C# のクライアントがバグ持ちで、直すには PCL を捨てないとダメなんじゃないかという感じだったので、カッとなってオレオレクライアントを作…

.NET Framework 4 から追加された ObjectCache と互換性のある RedisCache クラスを作った

.NET Framework 4 から追加された System.Runtime.Caching 名前空間に ObjectCache クラスと、その唯一の実装である MemoryCache クラスが用意されています。ObjectCache クラス (System.Runtime.Caching)ASP.NET には専用のキャッシュが用意されていますが…

接続文字列の書き方をまとめてみる(2014 年版)

接続文字列の書き方をまとめてみる - しばやん雑記 でまとめた内容が、流石にちょっと古くなってきたので Azure 周りも含めてアップデートを行っておきます。 SQL Server LocalDB LocalDB は SQL Server 2012 から追加された、インスタンスが常時起動しない…

Azure Web サイトの .NET Framework が 4.5.2 にアップデートされていた話

Windows Azure Web サイトがいつの間にか .NET 4.5.1 に対応していた件と Helios 0.1.4-pre の話 - しばやん雑記 で Azure Web サイトのランタイムが .NET 4.5.1 にアップデートされたと書きましたが、今日も Web サイトのアップデートがあったのでレジスト…

C# と FFmpeg を使って動画のサムネイルを生成してみた

C#

ちょっと前になりますが WPF を使って動画のサムネイルを生成してみた - しばやん雑記 で書いた通り WPF を使って動画のサムネイルを自動的に生成するコードを書いてみたのですが、これが Azure Web サイト上で動いてくれなくて困りました。やはりサーバー O…

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 を呼び出す必要がないのは、キャス…