xin9le.net

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

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 年 になっ…

SqlBulkCopy + IDataReader を利用した IEnumerable<T> の高効率なバルク挿入

C# / .NET + SQL Server 環境において Bulk Insert をするのはなかなかお手間です。それもこれも SqlBulkCopy という専用クラスがなかなか曲者なためなのですが。ただただ IEnumerable<T> のようなコレクションを挿入するのにひと工夫というか、ひと手間必要な</t>…

.NET 6 で Microsoft.Extensions.Configuration から DateOnly / TimeOnly 型に直接マッピングする

.NET 6 で DateOnly および TimeOnly 型が追加されました。日付や時間のみを扱う (若干残念な名前を除けば) 待望の子ですね。 ところで、アプリケーション構成として日付や時間 (特に時間) を扱うことはちょくちょくあるのではないかと思います。現代の .NET…

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

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

あいうえお表、10 分で作れますか?

Burikaigi 2022 が開催されました。運営のお仕事と「C# ドキドキ・ライブコーディング対決」の登壇をしました。もう 10 年近く毎年ライブコーディング対決をしていますが、一見「こんなの簡単だろ」と思えるような問題でも全然解けないんですよねぇ...。 今…

起動速度は?メモリ使用量は?Azure App Service における環境ごと (Windows / Linux) の ASP.NET Core 実行時のパフォーマンス差を調べてみた!

業務で (最近では副業でも) ずっと利用している Azure App Service!大変便利で使いやすく、大好きです。ところで最近の風潮的には ASP.NET Core も Docker とか Linux インスタンスでホストするのがポピュラーな感じがします。時代は Linux、ということなん…

2021 年の振り返りと 2022 年の抱負

明けましておめでとうございます!今年もいい年にしよう ZE! ということで年末年始。大事なひと区切りなので、今年も忘れないように振り返りと抱負を書き残しておこうと思います。2021 年は一瞬で過ぎ去ったというか、働き過ぎのせいでそれ以外の記憶がかな…

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 未満…

_FunctionsSkipCleanOutput を利用しないで Azure Functions プロジェクトのビルド時 DLL 自動削除から DLL を保護する

タイトルが長過ぎてなんのこっちゃワカランと思います。僕も良いタイトルが浮かびません...( 今回は下記の Issue の内容と公式回答についてザックリ解説します。僕の理解が正確かは分からないので、Issue も読んでもらえると助かりますw Issue の内容 System…

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

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

C# / .NET 向けの Paidy SDK を公開しました

あの Amazon でも利用できる (特に) 若者に人気の Paidy 決済。その API の C# / .NET 向けラッパーを作成し、公開しました!普段 EC サービスの開発 / 運用を業務で行っているのですが、とあるお客様で Paidy 導入が必要になったので作りました。 本当はす…

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

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

2020 年の振り返りと 2021 年の抱負

明けましておめでとうございます!今年もいい年にしよう ZE! ということで年末年始。大事なひと区切りなので、忘れないように 2020 年の振り返りと 2021 年の抱負を書き残しておこうと思います。2020 年は本当に密な年でしたね。COVID-19 一色。とにかく密…

Azure Functions SDK の更新に伴う FunctionsStartup の書き方の変更

2020/9/16 に Microsoft.Azure.Functions.Extensions パッケージが v1.1.0 がリリースされました。これに伴い、Azure Functions で DI を利用するときに書くことになる FunctionsStartup にアプリケーションの構成情報ソースをカスタマイズするためのオーバ…

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

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

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

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

XSitemaps - SEO のためのサイトマップファイルを作る

業務で (主に) EC サイトの実装 / 運営をしているのですが、EC サイトと言えば SEO!お客様が来ないことには商売にならないので、検索エンジンを上手に操って流入を確保することは非常に重要です。ということで、ページのクローリングを制御するために Googl…

2019 年の振り返りと 2020 年の抱負

明けましておめでとうございます!今年もいい年にしよう ZE! ということで年末年始。大事なひと区切りなので、忘れないように 2019 年の振り返りと 2020 年の抱負を書き残しておこうと思います。 プライベート まず、2019 年の振り返りから。「2019 年を漢…

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

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

FastEnum の初期化コストと利用指針

先日、FastEnum に関して非常に良い質問を受けました。短期間だけ起動してすぐにアプリ/インスタンスが死んでいくバッチ処理などにおいては、逆に初期化コストが大きくなってしまうのでないか?というものです。 はい、初回アクセス時に一度のみ初期化される…

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

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

DeclarativeSql rebooted - Now supports .NET Standard 2.0

数年間開発を放置した DeclarativeSql を更新して .NET Standard 2.0 に対応させました!過去バージョンとの互換は結構崩れてしまっている点は大変申し訳ないのですが、今の自分が欲しいなぁという機能をシンプルに詰め込むために致し方なし。 実は .NET Cor…

FastEnum - 更なる高速化を果たした v1.1.0 リリース

先の記事で FastEnum という超高速な Enum Utility ライブラリを作ってリリースしてから 3 日。v1.1.0 をリリースしました。パフォーマンスはさらに磨きがかかっていて、他の追随を許さないレベルに昇華されました。最早グラフにしても棒が表示されてない...…

FastEnum - 世界最速の enum ライブラリ

というのを、この数日をかけて勢いで作りました。ずーーっと昔から「enum は遅い」と言われ続けていたので何か手を入れたいと思っていたのですが、突然やる気になりました。久々にプライベートのコーディング意欲が爆上げしたー。勢いが強過ぎて毎日寝不足の…