読者です 読者をやめる 読者になる 読者になる

xin9le.net

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

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

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

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

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

Docs.com はじめました

Microsoft さんが新しく Docs.com というドキュメント公開/共有サービスを始めました。Office ファミリーのひとつとして位置付けられており、Word / Excel / PowerPoint / PDF の各種ドキュメントのほか、新しいプレゼンテーションツール Sway にも対応して…

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

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

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

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

非同期メソッド単位で値を保持/提供するAsyncLocal<T>

2015/07/20 深夜、ついに Visual Studio 2015 が正式リリースされました。同時に .NET Framework も 4.6 にバージョンアップ。以下の記事にもある通り、関連の言語やライブラリも数多く更新されています。 Announcing .NET Framework 4.6 .NET 4.6 (@mataril…

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

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

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

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

Microsoft MVP for .NET 4 期目受賞しました!!

大変ありがたいことに、今年も Microsoft MVP を受賞しました!昨期は Visual C# のカテゴリーでの受賞でしたが、今年は Visual Basic や F# とのカテゴリー統廃合により .NET での受賞です。今回で 4 年連続 4 期目。こんなに長い間、しかも継続できるなん…

ASP.NET 5アプリをDocker上で実行する

前回は ASP.NET 5 アプリケーションを Linux 上で動作させてみました。今回はもう一歩進んで Linux OS 上に作成した Docker コンテナ上で実行してみます。de:code 2015 のキーノートでもデモが行われていたのは記憶に新しいですね。 de:code 2015 キーノート…

ASP.NET 5アプリをLinux上で実行する

ここ 2 回の投稿では、ASP.NET 5 アプリケーションを Mac OS / Azure Web Apps 上で動かす方法について見てきました。 ASP.NET 5アプリをMac OS上で実行する - xin9le.net Azure Web AppsにASP.NET 5アプリを配置する - xin9le.net .NET Core は Mac OS だけ…

Azure Web AppsにASP.NET 5アプリを配置する

今 ASP.NET 5 がアツい!(個人的に。前回は Mac OSX で動作させるところをやってみましたが、今回は Azure Web Apps です。ここで動かせることが確認できさえすれば、個人的な Web アプリケーションプロジェクトは ASP.NET 5 ベースにシフトさせても良いかな…

ASP.NET 5アプリをMac OS上で実行する

//build/ 2015 の基調講演で Mac OSX / Linux 向けの .NET Core 5 が Preview 版として公開されたとの発表がありました。 そんな発表からもうひと月が経過しましたが、遅ればせながら実際に Mac OSX 上で動作するかを試してみました。基本的には以下のチュー…

IAsyncDisposableについて考えてみた

Visual Studio 2015 も RC (= リリース候補版) となり、C# 6.0 も Go-Live となりました。言語チームは Roslyn という大物の開発に注力していたため、C# 6.0 は細かな使い勝手の向上を中心とした比較的小規模な機能追加となっています。詳細は以下をご覧いた…

Rx入門 (29) - メソッドの別名を提供するRx-Aliases

Rx

これまで全然気付いてなかったのですが、NuGet パッケージマネージャを眺めていたら Rx-Aliases というパッケージがあることに気付きました。約 1 年程前からリリースされているようですが、ダウンロード数が 500 に到達していないあたりメジャーでない感じ…

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

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

クラウドサービスを指定のリソースグループ内に作成する

Microsoft Azure の プレビューポータル にはリソースグループという考え方が導入されています。簡単に言うと、1 つのアプリケーション内にある複数のリソースをまとめて管理するための論理的なグループのことです。現行の管理ポータルを利用している範囲で…

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

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

北陸新幹線開通記念!北陸・信州合同勉強会に参加してきました

2015 年 3 月 28 日 (土)、北陸新幹線の開通を記念して Hokuriku.NET と JAZUG 信州で合同勉強会を開催しました。多くの方に遠方からお越しいただき、本当に活気に溢れた勉強会となりました。最新の Azure 事情から、地方でスタートアップをする方法や可能性…

IIS上のPHP環境で気を付けるべき3つのタイムアウト制御

C#/.NET はサーバーからクライアントまで、そして今となっては iOS / Android などのモバイルでも使える超オールマイティな言語です。たったひとつの言語で一気通貫した開発ができることは、極めて効率的と言えます。 Powered by C# - Microsoft Visual Stud…

パラメーターなし構造体コンストラクタ

C#

C# 5.0 までは構造体 (struct) はパラメーターのないコンストラクタを作ることができませんでした (IL の制約ではなく C# の言語仕様としての制約)。これが結構「ぐぬぬ...」なときがありましたが、C# 6.0 では晴れてこの制限が解放されました。 struct Poin…

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

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

C#もOK! paiza.IOでお手軽オンラインプログラミング

前回書いたオープンデータの記事 (オープンデータ先進県「福井」の残念なデータに思う) が大反響で、非常に多くの方に読んで頂けました。通常の 10 倍以上のページビューが出て、ただただ驚くばかりでした。 オープンデータ先進県「福井」の残念なデータに思…

オープンデータ先進県「福井」の残念なデータに思う

2013 年 6 月 14 日に閣議決定された世界最先端 IT 国家創造宣言。政府が打ち出した「日本は IT で 1 位になるんです!2 位じゃダメなんです!」というアレです。この方針に従うべく、日本中のアチコチの自治体/行政が自分たちの持っているデータを一般に公…

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,…

MVP Community Camp 2015 資料

富山合同勉強会 .NET & Java ~ぶりしゃぶで休もう~ という、.NET と Java とブリしゃぶがごった煮になった、激アツな勉強会に参加/登壇してきました。ホテルのイベントルームを貸し切って .NET 部屋と Java 部屋に分けてセッションを行い、興味のある方を…

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

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

ASP.NET 5はどうしてOWIN上に乗らなかったのか

2015/01/16 (金) に渋谷で開催された GoAzure 2015 に参加してきました。とても充実した内容で大変満足度が高いです。本当に参加して良かった。主催者のみなさん、本当にお疲れ様でした。 【Japan Azure User Group】GoAzure 2015 開催決定 Hanselman Unplug…

Hammer.jsでCarouselをスワイプできるようにする

先日大幅に改修したMSの公式サイトと揶揄されている私の個人サイトである xin9le.net。そこには Carousel と呼ばれるものがあります。いわゆるクルクルと画面が遷移する広告みたいなヤツです。 サイト自体のデザインにはかなり気を配ったし、流行りのレスポ…

DeclarativeSql

本記事は C# Advent Calendar 2014 最終日向けの記事です。なんとか間に合わせようと心底努力しましたが、業務上年末にシステムリリースがある関係で忙殺されていて全く余裕がなく、結局最終日に穴を空ける結果になってしまいました。ここまで繋いで下さった…

Friendlyエバンジェリストはミニスカサンタ

2014 年 12 月 20 日 (土) に日本マイクロソフト品川本社で開催された CLR/H in Tokyo 第 7 回に参加してきました 。ドレスコードが仮装というカソウ化デーということで、主催者 (@naoki0311) とその一味 (@miso_soup3) のご要望にお応えしてミニスカサンタ…

Room metro #28 資料

先日 2014 年 11 月 29 日 (土) に大阪で開催された Room metro #28 に参加してきました。「XAML Day」ということで、我こそは!という屈強な XAMLer 達が集結し、濃密なセッションが繰り広げられました。僕はと言うと ROM (Read Only Member) としてのほほ…

挿入文字列

C#

string.Format メソッドは大変汎用的で便利です。しかし、ちょっとばかり煩雑で、かつ書式文字列内のプレースホルダーの数が合わなかったりするエラーが発生しやすいという傾向にあります。 var p = new Person("xin9le", 30, Sex.Male); var t1 = string.Fo…

インデックス初期化子

C#

バージョン 5.0 現在の C# には「初期化子」と呼ばれる機能が 2 つあります。ひとつはオブジェクト初期化子で、インスタンス生成時にコンストラクタ引数を利用せずにフィールドやプロパティの値を設定するものです。もうひとつはコレクション初期化子で、こ…

Microsoft MVP ComCamp – Webcast 1st round. 資料

もう一か月以上も前になりますが、Microsoft MVP がお届けする参加自由の ICT 勉強会「Microsoft MVP Community Camp」の第1回 Webcast が開催されました。2014年9月22日 (月) ~ 2014年9月26日 (金) の一週間、アジアの MVP が日替わりで、各々のテーマに沿…

.NET Framework 4.5.3でのTask型への機能追加

しばらく前になりますが、2014/10/6 に Visual Studio 14 CTP 4 がリリースされました。そのリリースの中で .NET Framework も更新され、バージョン 4.5.3 となりました。少し触っていたら、Task 型 (System.Threading.Tasks 名前空間) に新しいプロパティと…

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

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

Hokuriku.NET vol.15 資料

2014年8月30日 (土)、我らがHokuriku.NET主催の定期勉強会Hokuriku.NET vol.15に参加/登壇してきました。今回は小島さん (@Fujiwo) と一緒にC# MVPsとしてC# vNextの新機能を紹介し、ひとつひとつ解説していきました。参加者のみなさんとの緩いディスカッシ…

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

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

Azure Web SitesチームのWordPress利用者判定アプローチ

Azure Web SitesチームがWeb Sites上でWordPressを利用者している人をどのように判定しているのか、Azure Web Sitesプログラムマネージャーの Erez Benari さんに教えて頂きました。そんなちょとしたドキュメンタリー。 コトの発端 先日、Azure Web Sitesチ…

Add拡張メソッドによるコレクション初期化子

C#

C# 3.0で導入されたコレクション初期化子をご存知の方は多いと思います。要素を追加した状態でコレクションを生成する機能です。以下のようなものです。 var languages = new List<string> { "C#", "Visual Basic", "JavaScript", }; これは次のコードの糖衣構文です</string>…

nameof演算子

C#

これまでC# vNextの新機能についていくつか紹介してきましたが、個人的にラムダ形式プロパティよりも、null伝搬演算子よりも、catch/finally句で利用できるawait演算子よりもずっと ×2 興奮したのが今回取り上げるnameof演算子 (nameof operator) です。簡単…

ラムダ形式メソッド

C#

前回ラムダ形式プロパティを紹介しました。ラムダ式チックなメンバー (Expression-bodied members) は、Visual Studio 14 CTP 2まではプロパティしか実装されていませんでしたが、一昨日 (2014/08/19) リリースされたVisual Studio 14 CTP 3にはメソッド版も…

ラムダ形式プロパティ

C#

みなさんもGetterだけのプロパティを作った経験があるかと思います。例えば以下のようなものです。 using System.Math; using System.Windows; namespace CSharpVNext { class Circle { public double Radius{ get; }; public Point Origin{ get{ return new…

null条件演算子

C#

三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。 var name = "じんぐる"; return name == null ? "不明" : name; /* //--- 以下と同じ意味 var name = "じんぐる"; i…

例外フィルター

C#

例外処理はtry句でスローされる例外の型に応じて処理を書き分けます。また、ひとつの例外の型でエラー条件が分かれる場合はcatch句の中にif文を書いて分岐します。例えば以下のような感じです。 try { //--- SQL Serverへの何らかのアクセス } catch (SqlExc…

catch/finallyでのawait

C#

C# 5.0で搭載された非同期メソッド (async/await) は、非同期処理を非常に簡単に記述できる言語機能として大変重宝し、愛されています。await演算子は通常のメソッドだけでなくラムダ式内でも利用できるなど、かなり広範囲への適用が可能です。しかし例外処…

変数宣言式

C#

これまで、以下のようなコードを面倒に感じたことはありませんか? static void Main() { try { Console.WriteLine(int.Parse("123")); //--- intに変換できなかったら例外発生! } catch { //--- 失敗したとき } } 絶対失敗しないと保証されているなら例外…