xin9le.net

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

Cloud Translator - Slash Commands によるお手軽翻訳 -

最近は ChatOps って素晴らしいなぁと思う日々を送っております。会社でも導入されていて bot に話しかける楽しさなんかを感じています。巷では Slack が大流行りなのでそういう体験をされている方もきっと多いと思います。 Slack の良いところは生の API を…

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

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

DeclarativeSql v0.2.2 リリース

ちょうど 2 ヵ月前にリリースした DeclarativeSql v0.2 をマイナー更新し、v0.2.2 をリリースしました。最近 v0.2 系を使ってくださっている会社さんがあるとの連絡を受けまして、内心かなり嬉しく思っています :) 今回はマイナーということで機能改善がメイ…

脱・読みづらいコード!今日から一段上のプログラマーになる方法 5 選

「ソースコードを綺麗に書く」というのは、プログラマーであれば誰しもが心掛けたいと思っている極めて重要な事柄です。そもそも「綺麗なコードってなんぞ?」という感じですが、いくつかあると思います。 改行位置/空行の数/インデントなどに一貫性があり整…

30 分のライブコーディングでテトリス作った

2016/2/20 (土)、Japan ComCamp 2016 powered by MVPs という Microsoft MVP が中心となったイベントが全国一斉に開催されました。僕は例年通り北陸エリア (金沢開催) を担当していて、毎年恒例で超大好評の C# MVP によるドキドキ・ライブコーディング対決…

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

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

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

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

DeclarativeSql v0.2 リリース

もう半年以上前から構想はしていたけれど、案の定 (?) 放置し続けてきた自作のデータベースアクセス補助ライブラリ DeclarativeSql。搭載したかった機能の中でも特に重要度が高かった機能を詰め込んでアップデートしました。この記事を書いている今現在はま…

Azure で Oracle VM 立てたらサービス停止くらった話

明けましておめでとうございます!今年の元日は DeclarativeSql の vNext を作ろうということでほぼコーディングをして過ごしていました。 これまでしばらくやるやる詐欺をしていたのですが、実際に製品で使ってくださっている方から「とても便利で感激した…

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

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

Microsoft MVPが社内システムを担当するのは本当にもったいないか

私が Microsoft MVP を受賞したのは 2012 年 7 月でした。ちょうどその頃から社内システムの開発に従事するようになり、早 3 年が経ちました。そんな話をすると「MVP が社内システムを作ってるなんてその会社は何してんの?宝の持ち腐れじゃん」と言われるこ…

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 から起動…

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 名前空間) に新しいプロパティと…