xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Tips

PHPのechoにBOMが混入するのを防ぐ

C#er な私が PHP の記事なんて書くことになるとは...。ペチパーな方には当たり前かもしれませんが、最近業務でハマったのでメモとして残します。 こんな時間まで仕事するなんて完全に負け組感ある。チキショー、PHPなんて嫌いだ。— じんぐる (@xin9le) 2015,…

PropertyGridを実行時に読み取り専用にする

みなさん PropertyGrid 使ってますか?プロパティ名と値を一覧にして閲覧/入力させてくれるコントロールです。Visual Studio のプロパティでも使われているアイツですね。Windows Forms と言えば DataGridView がすべて!みたいな風潮も多少なり (謎) ありま…

AutoMapperで特定の命名規則で変換する

WebアプリケーションやMVVMに則ったクライアントアプリケーションを作っていると、ModelとViewModelの相互変換がよく行われます。設計におけるレイヤーの違いを埋めるこの型変換ですが、基本的に同じような名前/型のプロパティが並ぶため、変換コードの実装…

Web APIでリクエスト単位のキャッシュを利用する

ASP.NET Web APIで開発している際、パフォーマンスを上げるためにリクエスト中で取得/生成した値をキャッシュして使い回したいケースがあります。特にWeb APIにはHTTP Message Handlerという機構があるので、外側のレイヤー (Handler) で共通処理として認証…

Visual Studio 14 CTPでC# vNextを試す

2014年6月3日にVisual Studio 14 CTPがリリースされました。次世代コンパイラサービスであるRoslyn、クラウド最適化や大幅なライブラリ統合が進んでいるASP.NET vNextが搭載されています。これらだけでも十分お腹いっぱいになりそうですが、我らがC#にも新し…

IIS Expressを64bitモードで動かす

Visual StudioでWebアプリ開発をするときによくお世話になるIIS Express、これは既定では32bitモードで動作します。これまでのWebアプリ開発では特に何事もなかったのですが、最近業務で以下のような環境下での開発をしていてハマりました。 Windows 7 x64 V…

Azure Web Sitesの仮想ディレクトリにWeb Deployする方法

Azure Web Sitesには仮想アプリケーション/仮想ディレクトリという機能があります。wwwrootなどのルートディレクトリでなくても (その他のサブフォルダでも) 仮想的なルートディレクトリとして認識させ、アプリケーションを動作させることができます。設定は…

CSV/TSVなどの区切り文字形式ファイルを簡単生成

CSV (Comma-Separated Values : カンマ区切り)、TSV (Tab-Separeted Values : タブ区切り)、SSV (Space-Saparated Values : 半角スペース区切り) と言った「データを特定の区切り文字で区切って並べたファイル形式」があるのはご存知の事と思います。特に表…

ASP.NET MVCでCamel CaseなJSONを出力する

ASP.NET MVCでWebアプリを開発しているときに非同期でサーバーからJSONを取得するのはよくあることだと思います。このとき、サーバー側は標準機能のJsonResultを利用してJSONの生成を行うのが定石ですが、.NETのクラスインスタンスのプロパティから名前と値…

Azure Web SitesでIP制限をかける方法

2013年11月13日、Visual Studio 2013 Launch EventにおいてVisual Studio Online (コードネーム : Monaco) が発表されました。MonacoはAzure Web Sitesを利用した開発をサポートしていますが、サイトのURLはWebサイトができた瞬間から完全に全世界Openなので…

ActionFilter属性を利用した簡易時間計測

One ASP.NET Advent Calendar 2013の19日目担当、今年4度目の登場@xin9leです。そろそろ完全に大顰蹙のような気がしていますが、気にしないことにして...。今回は大好きなSignalRのお話ではなく、ASP.NET MVCやWeb APIにあるAction Filterを使った処理時間の…

Web APIからSignalRへの連携

One ASP.NET Advent Calendar 2013も17日目になりました。すでに3度目の登場です、@xin9leです。ASP.NET/IISのMVPさんよりも多く登場していて場違い感を多少なり感じておりますが、今回も飽き足らずSignalRのネタで攻めます。ご了承ください。 最近の体験談 …

暗黙的にenumに変換できるゼロ

ここ最近、#じんぐる先生とか言って部署の新人さんにC#プログラミングを教えています。クラス/継承/多態などのオブジェクト指向の基礎から時間を掛けてみっちりと。そんな中、例題を出して説明しながら答え合わせしていたとき次のような現象に出くわしました…

DynamicSignalR

One ASP.NET Advent Calendar 2013、12日目を担当させて頂きます@xin9leです。「1000年に1度のアイドル」と言われて人気を博した橋本環奈ちゃんじゃないですが、「北陸のイケメンMVP」とか嘘八百言われつつの2回目の登場です。今回も前回同様SignalRネタです…

Azure Web Sites + WebSocketにおけるSignalR Transport

One ASP.NET Advent Calendar 2013、3日目担当の@xin9leです。昨年に引き続き@chack411さんの後ろで光栄です。この1年はASP.NET MVC、SignalR、Web APIなどなど、ASP.NETの技術を次々と業務に実践投入してEnjoyしてました。特にSignalRは毎日のように触れ合…

Web APIでPUT/DELETEに失敗するときの対処

ひと月ほど前、仕事でASP.NET Web APIを使った開発をしていたときでした。コントローラーにキチンとCRUDを実装し、開発環境のIIS Expressで動作確認も無事終え、部内のテストサーバーのIISにホストしました。そしてそのAPIを利用することになっている同僚に…

システムメニューを操作するビヘイビア

WPFはUI要素に関する操作は恐ろしいほどに柔軟です。(意味があるかは別として) コンボボックスの項目に動画を流すことすら簡単にできてしまいます。ですが、ウィンドウに関する操作はWindows Formsの方が楽だったなと思う場面がいくつもあります。そう感じる…

VisualTreeの子孫要素を取得する

非常に稀なことかもしれませんが、UIコントロールの奥底にある要素にアクセスして操作したい場合があります。例えば、DatePickerコントロールとして提供されているけれども、何かの都合でその中のTextBox部分をイジらなければならない、と言ったケースです。…

ボタンをプログラム側からクリックする

クライアントアプリケーションを作成していると、稀に「ボタンをクリックしたことにしたい」場合があります。ボタンのイベントハンドラやコマンドを直接呼び出すのもありかもしれませんが、何か気持ち悪い感じがしないでもないのでクリックを模倣してみまし…

ExpressWeb上のWordPressをAzureに移行する

Windows Azureが提供するWeb Sitesは超クールなヤツです。簡単で綺麗な管理サイトでの操作/設定だけでなく、Visual StudioやWebMatrixとの親和性も非常に高く、作成したサイトをビックリするほどお手軽に発行/ホストできます。ExpressWebさんは非常に安価で…

例外発生時にリトライする

アプリケーションの要件によっては「ココは失敗してもらっちゃ困る!」という処理が出てきます。こんな場合に例外が発生したりすると、もう目も当てられない状態になります。失敗しないように制御することは大事ですが、失敗しないことを過度に期待するのは…

Azure Web Sitesでカスタムドメインを設定する

Azure Web Sitesは大変にお手軽です。インフラ関連に疎い僕でも簡単にサイト公開できちゃうので、とっても好きです。そんなAzure Web Sites上にサイトを作成すると、標準では「http://○○○.azurewebsites.net」のURL (azurewebsites.netのサブドメイン) が振…

SQLでエスケープ文字を挿入する

普段C#などからLINQ to SQLやLINQ to Entity、DapperなどのO/Rマッパーを使っているとあまり気にしないのですが、SQLを直接書くときに稀に改行やタブなどのエスケープ文字を入力したい場合があります。特に難しくないのですが、(特にANSIコードを)よく忘れて…

Azure SQL Databaseのスナップショットを取る

Windows Azure上のSQLデータベースのバックアップは、通常「BLOBストレージ」と呼ばれるところにエクスポートすることで行います。同じく、リストアはBLOBストレージからインポートすることで行います。これらはWindows Azureの管理ポータルからGUIを利用し…

ThreadPool監視のすゝめ

先日7月20日、@neueccさんがASP.NETでの定期的なモニタリング手法ということで、Webアプリケーションの状況把握のためにThreadPoolのスレッド数を監視をしていると書いておられました。社内システムとはいえリアルタイムアプリケーションでThreadPool使いま…

PowerPoint起動時のストーリーボード表示を抑制する

Microsoft Office 2007以降がインストールされている環境にVisual Studio 2012をインストールすると、PowerPointのアドインとしてストーリーボーディングを利用できるようになります。下図のようにウィンドウの右側にストーリーボード図形というペインが表示…

参照設定せずにFormを表示する

ハンズオン勉強会、Hokuriku.NET C# メタプログラミング ~リフレクション~に参加しました。その中で、アセンブリの動的読み込みをする時間がありました。参照設定に加えられていないアセンブリに含まれているクラスのインスタンスを作る、というものです。…

web.configでリダイレクト

URLリダイレクトをかけたい、という事は比較的よくあることかと思います。当サイトもテーマを組み直すついでに記事のURLも微妙に変更したので、古いURLでのアクセスを受け入れるためにリダイレクトを設定する必要がありました。リダイレクトにもいくつかあっ…

LINQにオレオレ機能を追加

LINQは便利です。LINQが使える環境なら率先して使いたいところです。LINQに出会ってからは、LINQに依存し過ぎてLINQがないと生きられない体になってしまいました。LINQさん、愛してます.../// と、くだらない前フリはさておき、LINQを使っていて思うことは「…

Null許容型と三項演算子

イマサラですが、三項演算子 (条件演算子) ってコンパクトに書けていいですよね。利用条件というか制約はありますが、オブジェクト初期化子などif文が書けないようなところにも書くことができて大変便利です。三項演算子は書き方がどーのこーのということが…