xin9le.net

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

Tips

Path.GetDirectoryName() は overload によって挙動が異なる

久々に Path.GetDirectoryName() を使ったら、件名の通りの挙動に引っ掛かりました。文章で説明するよりもサンプルコードを見た方が早いので、以下をご覧ください。 const string fileName = "A/B/C/D.cs"; var dir1 = Path.GetDirectoryName(fileName); dir…

Swashbuckle.AspNetCore.Cli で FileLoadException が出る場合の対処

最近社内で「CI で swagger.json を生成したいから対応してほしい」と言われてやってみました。そして思いっきりハマりました。ということで忘れないようにメモ。 ちなみに本内容は執筆時点での最新版である「.NET 7 + Swashbuckle.AspNetCore (v6.5.0)」で…

Azure Functions (Isolated Worker) で QueueMessage 型にマップする

.NET で利用する Azure Functions には In-Process Model と Isolated Model のふたつがあります。Isolated Model は .NET 6 から利用できるようになった新しいタイプです。それぞれの違いについては公式ドキュメントをご覧ください。 .NET 7 以降では Isola…

.NET 6 以前の環境下で C# 11 の required キーワードを利用する

C# 11 / .NET 7 で required キーワードが利用できるようになりました。詳細は公式ドキュメント等に譲りますが、簡単に説明するとプロパティやフィールドのオブジェクト初期化子で値を代入することを強制する機能です。 // こういうクラスがあるとして... pu…

Azure Functions (Isolated Worker) で AppInsights に出力したログが LogLevel.Warning 以上にフィルターされてしまう問題への対処

タイトルがだいぶ長いんですが、執筆時点でタイトル通りの問題が発生します。最近 .NET 7 がリリースされたので、業務コードを順次 C# 11 / .NET 7 へ移行を開始しています。そんな中 Azure Functions を In-Process Model から Isolated Model に乗せ換える…

C#/.NET で和暦の元年表記をするときの注意点

ちょっとした Tips というか「あれ?」となったので備忘録としてメモします。 ひと言まとめ 元年表記したければ y と 年 をくっ付けろ 日頃から数字と文字の間に半角スペースを入れる癖があって、何気なくいつも通り半角スペースを入れたら 令和 1 年 になっ…

Azure App Service の Always On リクエストにのみ応答する

Azure App Service を使っている場合、特に本番環境では Always On を有効化することになると思います。日本語の Azure Portal だと「常時接続」と表記されるもので、一定間隔でホストしている Web アプリに対してリクエストを投げることで、アプリがアイド…

SDK Style の csproj で ASP.NET (.NET Framework) を動かす

世の中は .NET 6 RC1 がリリースされ、.NET 6 (LTS) の時代がもうすぐそこまで来ています。が、現実はそんなに甘くない!.NET Framework 4.8 + ASP.NET MVC 5 で頑張っている人もいるんです!ただ、一度でも .NET Core 時代の SDK Style の .csproj (新形式)…

LINE Profile+ に対応した LINE ログイン Provider ライブラリを作りました

業務で LINE ログインを実装することになり、合わせて LINE Profile+ から情報を取得する必要が出ました。ということで LINE Profile+ をサポートした OAuth2 ライブラリを作りました! 弊社メンバーで Microsoft MVP for Azure の吉野くんが以前 .NET Core …

.NET 5 未満でもモジュール初期化子を利用する

.NET 5 じゃなくても C# 9.0 をできる限り使いたい!そんなあなたのために「.NET 5 未満でも」シリーズ第 2 弾。第 1 弾はこちら。 今回はタイトルにある通りモジュール初期化子についてですが、それ自体の用途や詳細挙動は岩永さんのサイトに譲ります。 .NE…

.NET 5 未満でも C# 9.0 の init アクセサを利用する

init アクセサは大変良いです。C# 9.0 で追加された初期化のタイミングでのみプロパティに値を設定できる set アクセサです。アクセシビリティは狭ければ狭いほどコードは安全になるので、僕は set を見たらとりあえず init に置き換える勢い! .NET 5 未満…

Basic 認証情報を含む URL を HttpClient で利用する

Basic 認証のあるページにブラウザでアクセスしたことがある方はご存じかと思いますが、以下のような認証情報を入力するダイアログが表示されます。毎度面倒ですよね。 実は、ブラウザなど一部の Web Client は https://UserName:Password@example.com のよ…

POST を維持したままリダイレクトする

Web サービスを使っているとレスポンスとしてリダイレクトを返すことはちょくちょくあると思います。このとき 301 / 302 のようなステータスコードを返すとたとえ POST リクエストであっても GET に強制変更されてリダイレクトされてしまいます。通常はこの…

Microsoft 365 (旧 Office 365) のアプリを個別インストールする

昔 Office のセットアップをしようとしたらアプリごとにインストールするかどうかを選択できました。しかし Microsoft 365 (= Office 365 からリブランドされた) のセットアップを叩いても、インストールしたいアプリを選択できません。 つまりどうなるかと…

Azure Functions の TimerTrigger の処理時間を可視化する

最近、業務でバッチ処理の最適化を行っています。弊社のバッチ処理は Azure Functions の TimerTrigger で書くことが多いです。主な理由は、仮想マシンなどを利用することなくマネージドな環境でタイマーを発動できて丁度よいという点ですが、Consumption Pl…

WCF で認証が必要な Proxy を利用する [.NET Framework / .NET Core / .NET Standard 完全対応]

gRPC という超クールなものが大人気な昨今、WCF なんてひと昔もふた昔も前のもの...と鼻で笑っているあなた!古き良き (?) WCF はまだまだ現役の世界線もあるのですよ! ゴンドアの谷の歌にあるもの。「WCF に根を下ろし、SOAP と共に生きよう。XML と共に …

ASP.NET Core 3.0 で cshtml の Edit & Continue を有効化する

ASP.NET Core でフロントエンド開発をするときは「デバッグ実行しながら cshtml の編集をしてブラウザを Reload!」というのが王道中の王道なのではないかと思います。所謂 cshtml に対する Edit & Continue です。少なくとも僕は今までずっとそうしてきまし…

LINQPad.Controls でお手軽 GUI 操作

今頃気が付いたのですが、超カジュアル IDE の LINQPad に LINQPad.Controls なる GUI 部品の名前空間が追加されていたので遊んでみました。以下のようなインタラクティブなことがお手軽にできるようになります。 使い方 使い方はかなり簡単で、C# で WinFor…

LinkGenerator : ASP.NET Core の DI で利用可能な URL 生成機構

ASP.NET Core でリダイレクト機能を持つ Action Filter を作っていたときのこと。Controller や View で利用できる IUrlHelper を Action Filter で利用できないことに気が付きました。Controller だと以下のように Url プロパティで IUrlHelper にアクセス…

Bug Fixed : n 秒間押し続けたらイベント発火するボタンを作る

前回 (というか昨夜)「3 秒押し続けたらイベント発火するボタン」を作ってみたのですが、朝起きてみたら早速以下のようなバグが発見されていました...(oh いつも参考にさせて頂いています!こういうケースZipだと、DownしたけどUpしなかった(Atl+Tabで別ウィ…

3 秒間押し続けたらイベント発火するボタンを作る

Twitter で @amay077 さんが以下のような内容を呟いていたのを見て、頭の体操と思って Rx を使って解決してみました。 3秒間押し続けてないと onClick 発火しないボタン的なの作りたいけど何が手っ取り早いかなー?エフェクト考えなくてもまあまあめんどいな…

キャリッジリターン (CR) を無視する ModelBinder を適用する

タイトルの通りです、それ以上の情報がないのですが...!下記のドキュメントを参考に、そういうものを作りました。 動機 iOS の Safari から改行を含む <textarea> のデータを POST すると勝手に CR が付与されるという問題がありました。Form の Submit イベントを Ja</textarea>…

SQL Server Management Studio のテーブルデザイナの列をカスタマイズする

SQL Server Management Studio のテーブルデザイナ、デフォルトでは以下のような画面で表示されます。 DataGrid として表示される項目が非常に少なく、編集するに頻繁に使用する「既定値」や「説明」のプロパティが下部の PropertyGrid になっているのが非常…

ImageMagick でお手軽 TGA → PNG 変換

業務で .tga で納品される大量のファイルを一括して .png に変換したいということがあったので、ImageMagick Converter を使ってチャチャっとやってみた系のメモです。 ImageMagick をダウンロード 下記サイトからダウンロードできます。各々の OS 環境に合…

Visual Studio 2017 (15.1) インストール後に Unity で Windows Store App 向けビルドが通らないときの対処

4/11 から一般提供が開始された Windows 10 Creators Update。このリリースに合わせて Visual Studio 2017 も更新され、内部バージョンが 15.0 から 15.1 になりました。Visual Studio 上ではこんな感じで通知が来ます。 これをクリックして更新するだけで、…

Vuforia 6.2.x が Unity 5.5.x の Windows Store App 環境下でビルドエラーになるのを回避する方法

Tokyo HoloLens Meetup vol.2 の LT で Vuforia という AR ライブラリについて話していたので、「面白そう!」と思ってチャレンジしてみています。AR マーカー的なものはまだ作ったことがなかった上に HoloLens に対応していると聞いて俄然ヤル気に! と思っ…

Unity における Windows Store App のアプリケーションライフサイクル

Unity で VR などの PC / Standalone 向けのアプリケーションを作っている場合、アプリの終了処理をしたかったら MonoBehaviour.OnApplicationQuit を使います。ですが、HoloLens などの Windows Store App (Universal Windows Platform) 向けのアプリケーシ…

1 次元配列から 2 次元辞書を作ろう

以前 2 次元配列の要素をインデックス付きで 1 次元配列に落とす、というのを紹介しました。 となると、その逆もやってみたくなりませんか…?*1 拡張メソッドを作る 通常の ToDictionary メソッドはひとつのプロパティをキーにして辞書を作りますが、このキ…

ニンテンドーアカウントが Outlook.com で受信できないときの対処

やってますか?スーパーマリオ ラン!僕も少し嗜む程度にはやっています。 そんなスーパーマリオランはニンテンドーアカウントとの連携ができ、連携するといろいろ良いことがあります。 セーブデータが消えても大丈夫! アイコンを Mii に設定できる 連携し…

React ベースでもお構いなし!API を使わずに Instagram の投稿サマリーをスクレイピングで取得する

諸事情あって Instagram の投稿の情報を取得することになりました。とりあえず API 使うなんて超メンドクサイので、個人ページに表示されている投稿の情報をスクレイピングで取り出そうと考えます。簡単に言うと、以下のサムネイル部分の情報ですね。 Instag…