xin9le.net

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

C#

C# 12 の新機能「Primary Constructors」に対する IntelliSense の神対応

C#

2023 年 11 月に C# 12 が正式リリースされました!大変おめでたいし、Microsoft 本社の C# 開発チームの方々には (毎年のことながら) 感謝申し上げます...! で、C# 12 で導入された目玉機能のひとつに Primary Constructors というものがあります。必須コ…

Azure Functions (Isolated) における ITelemetryInitializer / ITelemetryProcessor の注意点

最近 Azure Functions (Isolated) から出力される Application Insights のテレメトリと格闘していました。何を今更そんなに格闘することがあるのかというと、テレメトリの一種である RequestTelemetry に対するアクセスが全くできないという問題に遭遇した…

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…

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 年近く毎年ライブコーディング対決をしていますが、一見「こんなの簡単だろ」と思えるような問題でも全然解けないんですよねぇ...。 今…

.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 に強制変更されてリダイレクトされてしまいます。通常はこの…

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

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

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

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

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

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

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

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

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 は遅い」と言われ続けていたので何か手を入れたいと思っていたのですが、突然やる気になりました。久々にプライベートのコーディング意欲が爆上げしたー。勢いが強過ぎて毎日寝不足の…

C# でインストールされている Windows Store App の一覧を取得する

とある先輩に「Windows Store のアプリ一覧を取得したいんだけど、やり方知らない?」と聞かれたのでやってみました。今回は、その方法と簡単な実装のメモの回。 最初から答えを授かりました 2 分ほど iPhone で調べて PowerShell コマンドで最低限できそう…

LINQPad.Controls でお手軽 GUI 操作

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

Minecraft に C# からコマンド叩き込んで操作してみた

最近日本マイクロソフトさんが #くらでべ という YouTube チャンネルをやっていて、その中で Minecraft の自動化を取り上げていました。誕生日もクリスマスも Minecraft の LEGO やグッズをせがむくらい Minecraft が大好き過ぎる娘がいるのですが、ここは自…

超絶大盛況!de:code 2019 で「ドキドキ・ライブコーディング対決」をやってきました

去る 2019/5/29 (水) - 2019/5/30 (木) に日本マイクロソフトが主催する年次開発者イベント de:code 2019 が開催されました。大変ありがたいことに @chack411 さんこと井上章さんから登壇の依頼を受け、北陸のコミュニティではもはや毎年恒例になっている「…

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

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

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

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

CloudStructures now supports .NET Standard!!

Grani 時代から Redis 操作ライブラリとして長く愛用してきた CloudStructures ですが、残念ながらこれまで .NET Core に対応していませんでした。ただ、こればっかりはさすがの @neuecc 先生もあれもこれもメンテするのは難しいので仕方ない!.NET Core 対…

値の破棄

C#

1 年ほど前 C# 7.0 の新規のについていろいろ書いていたのですが、値の破棄 (discards) という機能について書いてなかったことに気が付きました!ということで、イマサラですが紹介します。 これまでの「値を使わない」ときの書き方 コンパイルを通すために…