ねののお庭。

かりかりもふもふ。

【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…

【C#】C# の async/await は実際にどうやって動いているか。

はじめに 登壇版 Taskの本質 C# のイテレータ async/await Compiler Transform ExecutionContext builder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先…

【C#/TypeScript】TypeScript の SignalR client でも MessagePackHubProtocol を使いたい!

リアルタイム通信するなら、やはりシリアライズ/デシリアライズは高速であればあるほどいい。 というわけで、TypeScript の SignalR client でも JSON ではなく MessagePack を使いたいよね、使おう!というお話。 SignalR の protocol シリアライザと言語 M…

HTTP/2 と gRPC に対するよくある誤解。

以前 .NET ラボで 「C# と HTTP/2 と gRPC」というタイトルで登壇しました。その時のスライドがこちらなのですが、ちらほら反応を頂きました。その結果、HTTP/2 や gRPC について勘違いしている人がちょこちょこいる事が分かったので、少し補足を書こうと思…

【C#】dotnet user-jwts はいいぞ。

.NET 7 から dotnet user-jwts という機能が生えてきました。ASP.NET Core で認証認可に JWT を使って開発している人間にとっては大変便利なのですよ、コレが。 はじめに dotnet user-jwts の使い方...の前に下準備 dotnet user-jwts の使い方 気になるかも…

【C#】C# と HTTP/2 と gRPC

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇のアーカイブはこちら。 30 分程度です。 内容の大筋としては、以下のような感じ。 HttpClient の基礎 HttpClient / HttpMessageInvoker / SocketsHttpHandler のお話 HTTP/2 の stream …

【C#】GetTypeByMetadataName ではなく GetTypesByMetadataName を使った方が無難かもしれない。

Type か Types かの違い。 何の話だよ、っていうと Roslyn の API のお話です。Source Generator を開発する場合は Roslyn と踊る事になるので今はまだ Roslyn 触ってない人でも頭の片隅に置いておくといいんじゃないでしょうか。 さて、型のシンボルを取得…

【C#】SignalR を使ったアプリケーション開発をより快適に!

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇の録画はこちら。 内容の大筋としては、以下のような感じ。 SignalR の開発どうしてる? TypedSignalR.Client.DevTools を使えば大解決! TypedSignalR.Client.DevTools の使い方 TypedS…

2022年振り返り。

今年(2022)は3月で大学院を卒業し、4月から労働者になるタイミングだったりしました。 労働者はつらいね(特に事務手続き)。 ソフトウェア関係 去年(2021)あたりから自分が GUI を TypeScript + React (Next.js) で書くようになっている事もあり、 今年は C# …

【C#】SignalR にも SwaggerUI 的なのがほしい!

この記事は C# Advent Calendar 2022 21 日目の記事です。 背景 TypedSignalR.Client.DevTools の使い方。 TypedSignalR.Client.DevTools そのものの作り。 まとめ 背景 みなさん、SignalR は好きですか?私は大好きです。 SignalR は ASP.NET Core にビルト…

【C#】Roslyn とその活用法。

というタイトルで.NETラボで喋ってきました。 スライドはこちら。 内容的には Roslynはいいぞ! Roslynを使うとあんなことやこんな事ができるぞ! というのを、OSSという具体例と共に紹介 みたいな具合です。よかったらどうぞ! 以下、スライド中で紹介して…

【C#】Generics と null 比較と boxing。

Generic Method 内部で null 比較を行ったら、はたして boxing するんでしょうか? たとえば以下みたいな関数があったとします。 // 参照型の null と、Nullable<T> の null の数が知りたい。 public static int CountNull<T1, T2, T3>(T1? value1, T2? value2, T3? value3)</t1,></t>…

【Python】trimeshでmeshから色付きの点(群)をサンプリングできるようになりました。

動機 自分の研究では、しばしば3d meshをコードからこねくり回していました。操作対象は深層学習の学習用データだったので、数が多く、とてもGUIでチマチマやれる量ではなかったのです。 で、こんな需要が私にはありました。 「テクスチャ付きの3d meshから…

【C#】 C#の型定義からTypeScriptの型定義を生成するTapperというライブラリ/CLI Toolをリリースしました。

背景 注意) サーバサイドはC#で書く前提です。 こんなご時世なのでサーバとクライアントを通信させない、なんて事は滅多にないでしょう。 その際皆さんは通信の中身というかコンテンツ、要するにWEB APIの場合はhttpのbodyですが、をどのような形で定義/シリ…

【C#】マルチスレッド関連操作の詳説。

この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#…

【C#】ConsoleアプリがMain関数の終了と同時に終了しないようにする。

タイトルが分かりずらいですね、はい。 コンソールアプリ、Main関数が終了すると同時にアプリは終了します。 それはそう、当たり前。 なんですが裏のスレッドでなんか動いてるからアプリは落ちてほしくない、けどMainは終わっとるし別にawaitするべきものも…

【C#】ASP.NET CoreでIdentityやEFを使わずに、googleなどの外部プロバイダによるOAuthを利用する方法。

ASP.NET Coreにおける認証。 googleを外部プロバイダとしてOAuthを利用する。 準備 サービスの設定 AddAuthentication() AddCookie() / AddGoogle() http pipeline Challenge / Sign in / Sign out Authorize 全体の流れ まとめ。 References なんでこんなの…

Open3Dでlookatするためのextrinsic matrixの作り方、及びextrinsic matrix (CG的にはview matrix)の解釈。

Open3dでは標準で任意の視点からのlookatが出来ない。 Open3dでは標準で任意の視点からのlookatが出来ません。ViewControlにset_lookatという関数生えてるんですが、残念ながらGUIでマウスぐりぐりしたときにlookatする点を設定できるだけで、特定の座標から…

【C#】Source Generatorを使ったSignalR Clinetに強く型付けするためのライブラリをリリースしました、という話。

タイトルの通りなんですが、C# 9で導入された新機能であるSource Generatorを使った、SignalR Clinetに強く型付けするためのライブラリをリリースしました。 github.com SignalRってなんぞ、っていうと、リアルタイム通信用のライブラリ。Socket.IOと似たよ…

【CV】深層学習ベースの3D Reconstruction / Completionの論文紹介。

深層学習ベースの3D Reconstruction / Completionの手法およびデータセットの紹介スライド。 ラボ内向けに作ったんですが、結構気合入れて作ったのでパブリックにしておきます。 紹介してる論文たちは以下の通り。 データセット NYU (ECCV 2012) ShapeNet (arxi…