ねののお庭。

かりかりもふもふ。

【C#】TypeHandle について。

TypeHandle について知りたい、そうでしょう?(CV:井上麻里奈) という事で (?)、TypeHandle について纏めておくと地味に便利そうだったので書いておくこととしました。 オブジェクトのメモリレイアウト TypeHandle とは何か? オブジェクトの参照が指し示す…

【C#】C# 14 / .NET 10 の新機能 (RC 1 時点)

というタイトルで.NETラボで喋ってきました。 スライドはこちら 内容はこんな感じ。 C# 14 の新機能 Extension members field keyword の追加 First-class Span Types 暗黙的型変換 オーバーロード解決時における Span / ReadOnlySpan の優先 nameof が unbo…

【C#】Aspire のプリミティブとカスタムリソース。

Aspire は大変便利です。 開発用の docker compose の yaml 等を書く必要がなくなり、全て C# で型安全に記述する事ができるようになりました。ハッピーだっピね! 開発をしていると頻出の PostgreSQL, MySQL, Redis, RabbitMQ といったコンポーネント向けの…

Microsoft MVP を再受賞しました。

Microsoft MVP を再受賞しました。 カテゴリは前回の受賞と同様 Developer Technologies です。 Microsoft MVP 再受賞しました 引き続き C# / .NET を中心に活動していくのでよろしくお願いします...! pic.twitter.com/ciwZIXoE3h— 何縫ねの。 (@nenoMake) J…

【C#】Aspire をカスタマイズしよう & Aspire 9.2

というタイトルで.NETラボで喋ってきました。 スライドはこちら。

【C#】何故 C# を好むのか。~他の言語と比較しながら~

世の中には多くの C# に関する誤解が蔓延っています。 偏見にも満ちています。 そして技術的に正しい批判ではなく、根本的に技術的に誤った批判ばかりで正直悲しい。 技術的に正しい形の批判なら「お、そうだな。そしてそれの解決策はですねぇ...(ニヤニヤ)」と…

【C#】Aspire と gRPC UI を使って快適に開発しよう。

先日「分解して理解する Aspire」というタイトルで Aspire 入門的なお話をしたのですが、引き続き Aspire ネタを。 さて、皆さんはバックエンドのアプリケーションを開発する際どのように開発しているでしょうか? 自分の場合はとにかく GUI ぽちぽちして WE…

【C#】分解して理解する Aspire。

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 資料のお品書きとしてはこんな感じ。 Aspire とは (公式の言) Aspire とは (分かりやすく) 最小構成で Aspire を使う (not 必要最低限) Aspire を最低限活用する ServiceDefaults Aspire を…

【C#】JsonContent と Request Header。

JsonContent と Request Header Cloud Run と Request Header JsonContent と Request Header JsonContent を使う事は多いでしょう。 直接 JsonContent を使わない場合でも、PostAsJsonAsync 等の拡張メソッドは内部的に当然 JsonContent を用いるので、めち…

【C#】Unsafe.BitCast のすゝめ。

今まで Unsafe.As() を使っていた箇所の多くは Unsafe.BitCast() を使う事をオススメします...! Unsafe.As() Unsafe.As() の安全な使い方 Unsafe.BitCast() まとめ Unsafe.As() Unsafe.As() はパラメータとして渡されたオブジェクトを問答無用で任意の型にキ…

2024年振り。

今年も色々と C# 周りで活動しましたね...! 今年の一番のビッグニュースはやはり何といっても Microsoft MVP を受賞した事でしょう...! ブログ 企業ブログ 登壇 スライド OSS お仕事 趣味 シーシャ ドール 映画 来年の抱負 ブログ 【C#】Microsoft.Extension…

【C#】非同期 IO の仕組み。

この記事は C# Advent Calendar 2024 24 日目の記事です。 はじめに ネイティブでの非同期 IO の仕組み I/O Completion Port C# / .NET 上での非同期 IO の仕組み ThreadPoolTypedWorkItemQueue おわりに 非同期・マルチスレッド関連記事 References はじめ…

【C#】.NET 9 のパフォーマンス改善

というタイトルで .NET Conf 2024 の日本ローカルイベントで喋ってきました。 スライドはこちら。 登壇の録画はこちら。 概要とそれぞれのキーワードは以下の通り。 Dynamic PGO Cast に対する最適化 IsInstanceOfClass そもそも TypeHandle とは何か Tier 0…

【C#】C# 13 / .NET 9 の新機能 (RC 1 時点)

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇の録画はこちら。 ざっくりした内容は以下の通り。 C# 13 の新機能 Partial Properties Params Collection lock / System.Threading.Lock allows ref struct OverloadResolutionPriority…

【C#】StandardResilienceHandler で HTTP リクエストの回復力を高める。

クラウドでアプリケーションを動かす上で HTTP リクエストの回復力を高める事は極めて重要です。それは何故か? クラウドでアプリケーションを動かすという事は、ホスティング環境は動的であり、ネットワークの問題やサーバー側の問題など様々な問題によって…

【C#】.NET 8 世代で追加された ConfigureHttpClientDefaults について。

.NET 8 世代で追加された、という言い回しが微妙なところです。.NET 8 で追加された、というと語弊があるので仕方ないのですが。 ともあれ、.NET 8 のリリースと同時に Microsoft.Extensions 系パッケージも v8 系がリリースされています。 この記事では Mic…

OpenTelemetry の Python 実装には気をつけろ!

OpenTelemetry の Python 実装であるところの opentelemetry-python と計装ライブラリ群である opentelemetry-python-contrib。 この記事ではこれらを使うときに自分が色々踏み抜いた点を紹介します。 Django に対する計装が機能しない Processor/Exporter …

Re:ゼロから始める Observability

実際のところ Observability とは一体なんなのでしょうか? 「Observability とは?」と自問自答した際、どのような回答が内から生じるでしょうか? わりとボヤけた答えしか返ってこなかったりしませんか? という事で、この記事ではその問に対して明確に返…

Microsoft MVP を受賞しました。

Microsoft MVP を受賞しました。カテゴリは Developer Technologies です。 Twitter もとい X の方では4週間以上前に受賞報告(?)をしていたりします。 この度 Microsoft MVP を受賞しました...! これからも C#/.NET を中心にいろいろやっていきます...! pic.…

【C#】open/closed type 及び bound/unbound type の定義。

generic type における open type と unbound type の違い、あるいは closed type と bound type の違いを明確に説明できますか? この記事では open/closed type 及び bound/unbound type の厳密な言葉の定義について取り扱います。 とはいえ、ぶっちゃけ厳…

【C#】Microsoft.Extensions.Logging のログを BigQuery で引きやすくする。

C# のデファクトの logger である Microsoft.Extensions.Logging で出力した構造化ログを BigQuery で引く時に一工夫するとなにかと楽ですよ、というお話。 課題 解決策 関連記事 課題 Microsoft.Extensions.Logging は以下のような構造化ログを出力します。…

2023年振り返り。

なんか登壇したりブログ書いたりをやたらとしていた一年でした。 ブログ 振り返ってみるとたくさん書いてますね...。 一番読まれたのは 【C#】C# の async/await は実際にどうやって動いているか。 でした。 文章量みればお察しいただけると思いますが、書き…

C# ではじめる OpenTelemetry。

この記事は Qiita C# Advent Calendar 2023 23 日目の記事です。 登壇版 OpenTelemetry について プロジェクトの主要なコンポーネント API 及び SDK という言葉について 仕様のステータス 各言語のサポート状況 OpenTelemetry Collector OpenTelemetry Colle…

【C#】zero-byte reads という最適化とピン留めについて。

現代の .NET では "zero-byte reads" という最適化が随所で行われています。 この記事ではその "zero-byte reads" とはなんなのか、という事についてつらつら書いていこうと思います。 そしてそれに深く絡むピン留めのお話も。 どんな最適化か。 ピン留め手…

.NET 8 で既定で有効になった Dynamic PGO について

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇のアーカイブはこちら。 40 分程度です。

【C#】TaskCompletionSource を使う時に意識すべき事。

みんな大好き TaskCompletionSource。 TaskCompletionSource は死ぬほど重要かつ便利な class なのですが、TaskCompletionSource.Task を await した時の continuation (= await 後に行われる継続処理) がどこのスレッドで実行されるか意識しないと危険だよ…

【C#】.NET Worker Service の health check。

.NET Worker Service 便利ですよね。 Generic Host が最高という話でもある。 この記事では dotnet new worker コマンドを叩いて作成したテンプレのような、Generic Host を用いた console application における health check のお話をしたいと思います。 we…

【TypeScript】C# における MemberNotNullWhen に相当する type guard の書き方。

C#er 的には 「TypeScript でも [MemberNotNullWhen] に相当する事をやりたいんだけど、どうするの?」でだいたい伝わるお話。 C#er ではないなら「TypeScript の class のメンバ変数が null でない事を保証するメソッドを呼んだあとに、該当のメンバが null…

【C#】明日から使える ASP.NET Core ロギング術!

登壇版 ConsoleFormatter HttpLogging ConsoleFormatterOptions.IncludeScopes W3C Trace Context ExceptionHandler DbDataSource HttpClientFactory まとめ References 登壇版 .NET ラボ 2023/07/22 で発表した資料です。 スライドはこちら。 スライドはア…

【C#】ASP.NET Core と W3C Trace Context とお手軽ロギング。

最初に結論。 Example のコード そもそもログの目的とは何なのか。 W3C Trace Context Trace Context の HTTP ヘッダとフォーマット Traceparent Header version version-format trace-id parent-id trace-flags 用語 Distributed trace 要するに。 System.D…