xin9le.net

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

Tips

HTC Vive でコナミコマンド実装してみた

先日 Japan VR Summit 2 に向けて制作し、ブース展示した Grani VR Office Tour。その開発の一環でデバッグコマンドを入れていました。要件はこんな感じ。 特殊なコマンド入力したらとある処理が発動 普段の操作ではまず入力できない難易度 覚えやすい 「そ…

ConcurrentDictionary.GetOrAdd のファクトリーメソッドは排他制御されていない

というタイトルの通りなのですが、案外忘れがちです。例えば以下のような期待をしてはいけません。 //--- こんな排他制御機能付きの辞書があるとする var dic= new ConcurrentDictionary<string, int>(); //--- 値がなければ追加したいけれど... var value = dic.GetOrAdd</string,>…

1Password for Windows Store をインストールする方法

数年愛用しているパスワード管理ツールの 1Password。iOS や Mac 向けのアプリは非常に素晴らしく、なくてはならないアプリのひとつです。パスワードデータの同期機能があるので、Windows 環境でも (なんなら Windows 10 Mobile でも) 使いたいものです。 そ…

Spy++ が見つからないときの対処方法

Windows のデスクトップアプリ (今だとクラシックデスクトップアプリって言うんでしたっけ?) 開発者にとっては必需品と言っても過言ではないレベルの神ツールである Spy++。ウィンドウハンドルやウィンドウメッセージを拾う楽しさを知ってしまうと、別プロ…

サクッと簡単!Excel → PDF 変換

会社で今日こんなお願いをされました。 このフォルダ以下にある全部の Excel ファイルを PDF にしてほしい!ファイル数メッチャあるからチマチマやってられーん!Help !! ということでサクッとツールを作ってあげたわけですが、案外便利なのではないかと思っ…

タスクバーのアイコン表示が壊れたときの対処方法

Windows 10 を使っていると、タスクバーに表示される Microsoft Edge などの UWP 関連アプリのアイコンの表示がおかしくなるときがあります。以下の画像で言うところの、Edge とか Store のアイコンみたいな感じです。今回はこれにハマったのでメモ。 原因と…

最新の C# コンパイラ を利用してビルド/デバッグしてみた

そんな方法はひとつしかない、リポジトリをクローンしてビルドすることだ ということでやってみましょう!ちなみにこの記事は 5/9 現在の情報を基に書いています。近い将来に変更になる可能性は多分にありますので、その点ご了承ください m( )m Step.1 - Ros…

ローカル関数の使いどころ - LINQ 拡張 -

C# 7 で搭載予定のローカル関数。その詳細は以下を参照いただくとして、どういうケースで使えそうかと考えていたら「あ、そうか LINQ だ!」と思ったので紹介します。 yield (遅延評価) の罠 と書くだけで察しの良い方はお気付きかと思いますが、yield を含…

DependentUpon を利用した入れ子ファイル管理

継承関係にあるクラスを作るとき、1 ファイルにたくさんの派生クラスを書くか 1 クラス 1 ファイルで分割するかで悩んだ経験ありませんか?今回はそんな迷える子羊のための機能を紹介します。 1 つのファイルに実装を収める 基本は 1 クラス 1 ファイルのル…

多次元配列を LINQ で簡単に扱おう

コレクション操作と言ったら LINQ!もはやコレがないと今の時代のプログラマとしてご飯を食べていけなくなるくらい、ないと困る存在であり強い味方です。 以前インデックス付きで簡単にアクセスする方法として、Indexed 拡張メソッドを作ってしまおうという…

Null 許容型の既定値付き文字列変換

タイトルはそれっぽいですが、大したことありません。何度も作るのがめんどくさいのでメモとして残しておこうというだけのカジュアルなものです。 Null 許容型の文字列化 Web でもクライアントでもそうですが、MVVM 的な考え方をする場合に「データとしては …

Azure Web Appsで補足できなかった例外を確認する

ここ 3 ヵ月ほど Mashup Award 11 向けのサービスを作っていました。そこで相も変わらず超お手軽な Azure Web Apps を使っていたのですが、本番のデモ中にサービスがダウンするという事件が発生しました。独自に記録していたアクセスログが途切れていたので…

NuGetパッケージの取得エラーを回避する

諸事情で CocosSharp を使ってみようということになり NuGet から PCL 版の取得を試みました。 ですが、安心した顔で待っていたら以下のような大変不親切なエラーを見てガッカリ...。 私の現在の環境は Visual Studio 2015 Enterprise ですが、バージョンが …

OWINセルフホストのサービスを外部公開する

ASP.NET 5 が OWIN を互換レイヤーとしてサポートすることを決定したということで、OWIN is dead などという記事を書いたわけですが。率先して選ぶことは減ってきているのかもしれませんが、そうは言っても OWIN は (一応) 現役です。 ASP.NET 5はどうしてOW…

ClickOnceアプリケーションを外部exeから起動する

ClickOnce を使ってアプリケーションを配布している人は減っているような気がしないでもないですが、そうは言っても社内イントラネット環境などではやはり重宝します。そうするとアプリケーション連携などで ClickOnce アプリケーションを別の exe から起動…

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

半月ほど前になりますが Visual Studio 2015 が正式にリリースされました。コードページの問題などいろいろありますが、本当にたくさんの機能追加や機能改善があります。そんな機能たちの中でも最近は特に ASP.NET 5 / MVC 6 に関心があって、サンプルとして…

SignalRのコネクション切断時に自動再接続する

リアルタイムな双方向通信を容易に実現させてくれる SignalR。その特性上、常時サーバー側とクライアント側のコネクションを張っています。定期的に ping を飛ばし合って死活監視を行い、長時間接続状態を確認できなければコネクションは切断されたものとみ…

AccessViolationExceptionを捕捉できるようにする

最近お仕事で開発している SignalR 製の Web アプリケーションが本日... を遂げるという怪奇事件が起こりました。常時接続なので落ちないように結構気を配っていたので、かなり思わぬ事態でした。何事かとイベントビューアーでログを見ていると、ODP.NET を…

Visual Studio CodeのShell拡張を一括削除する

Visual Studio Code を使っている方はどれくらいいるでしょうか?クロスプラットフォームなコードエディターとしてにわかに注目を集めるコイツですが、Windows 環境にインストールするとエクスプローラーのファイル選択時の右クリックメニューにコマンドが表…

Azure上のリソースを別リソースグループに移動する

ひとつ前の記事でも紹介しましたが、Microsoft Azure のプレビューポータルからリソースグループという概念が導入されました。そして、各リソース (= Web Apps / 仮想マシンなどのサービスひとつひとつ) は必ずどこかのリソースグループに属するようになって…

Monaco上のファイルを一括ダウンロードする

Azure Web App (旧 Azure Websites) に統合されているオンライン IDE の Visual Studio Online "Monaco"。多くの開発言語/ファイル形式をサポートし、ビルドしたり出力結果が表示できるのは当然こと、シンタックスハイライトやインテリセンスによる補完まで…

paiza.IOの実行環境を覗き見る方法4選

ブラウザだけで様々な言語のコードを即時実行できる、超便利なオンラインプログラミング環境 paiza.IO。前の記事で C# で実行環境を調査するという遊びをやっていました。 C#もOK! paiza.IOでお手軽オンラインプログラミング - xin9le.net 今回はその延長と…

using staticするとObsoleteが警告されない

Obsolete 属性、使ってますか?「もう古い API だから使わないでねー」とコンパイラ警告を出すて注意喚起するための便利属性です。以下のように利用します。 class Program { [Obsolete("NewMethod を利用してください")] public static void OldMethod(){ .…

Unicodeエスケープ文字を元に戻す

稀に出くわす Unicode 文字のエスケープシーケンス。以下のようなヤツです。 var text = @"\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01"; その文字をプログラムで戻さなければならない場合があります。今回はそんな方法のメモ。 正規表現の置換…

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…