.NET Core
みんな大好き TaskCompletionSource。 TaskCompletionSource は死ぬほど重要かつ便利な class なのですが、TaskCompletionSource.Task を await した時の continuation (= await 後に行われる継続処理) がどこのスレッドで実行されるか意識しないと危険だよ…
.NET Worker Service 便利ですよね。 Generic Host が最高という話でもある。 この記事では dotnet new worker コマンドを叩いて作成したテンプレのような、Generic Host を用いた console application における health check のお話をしたいと思います。 we…
登壇版 ConsoleFormatter HttpLogging ConsoleFormatterOptions.IncludeScopes W3C Trace Context ExceptionHandler DbDataSource HttpClientFactory まとめ References 登壇版 .NET ラボ 2023/07/22 で発表した資料です。 スライドはこちら。 スライドはア…
最初に結論。 Example のコード そもそもログの目的とは何なのか。 W3C Trace Context Trace Context の HTTP ヘッダとフォーマット Traceparent Header version version-format trace-id parent-id trace-flags 用語 Distributed trace 要するに。 System.D…
はじめに 登壇版 Taskの本質 C# のイテレータ async/await Compiler Transform ExecutionContext builder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先…
リアルタイム通信するなら、やはりシリアライズ/デシリアライズは高速であればあるほどいい。 というわけで、TypeScript の SignalR client でも JSON ではなく MessagePack を使いたいよね、使おう!というお話。 SignalR の protocol シリアライザと言語 M…
以前 .NET ラボで 「C# と HTTP/2 と gRPC」というタイトルで登壇しました。その時のスライドがこちらなのですが、ちらほら反応を頂きました。その結果、HTTP/2 や gRPC について勘違いしている人がちょこちょこいる事が分かったので、少し補足を書こうと思…
.NET 7 から dotnet user-jwts という機能が生えてきました。ASP.NET Core で認証認可に JWT を使って開発している人間にとっては大変便利なのですよ、コレが。 はじめに dotnet user-jwts の使い方...の前に下準備 dotnet user-jwts の使い方 気になるかも…
というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇のアーカイブはこちら。 30 分程度です。 内容の大筋としては、以下のような感じ。 HttpClient の基礎 HttpClient / HttpMessageInvoker / SocketsHttpHandler のお話 HTTP/2 の stream …
Type か Types かの違い。 何の話だよ、っていうと Roslyn の API のお話です。Source Generator を開発する場合は Roslyn と踊る事になるので今はまだ Roslyn 触ってない人でも頭の片隅に置いておくといいんじゃないでしょうか。 さて、型のシンボルを取得…
というタイトルで.NETラボで喋ってきました。 スライドはこちら。 登壇の録画はこちら。 内容の大筋としては、以下のような感じ。 SignalR の開発どうしてる? TypedSignalR.Client.DevTools を使えば大解決! TypedSignalR.Client.DevTools の使い方 TypedS…
この記事は C# Advent Calendar 2022 21 日目の記事です。 背景 TypedSignalR.Client.DevTools の使い方。 TypedSignalR.Client.DevTools そのものの作り。 まとめ 背景 みなさん、SignalR は好きですか?私は大好きです。 SignalR は ASP.NET Core にビルト…
Generic Method 内部で null 比較を行ったら、はたして boxing するんでしょうか? たとえば以下みたいな関数があったとします。 // 参照型の null と、Nullable<T> の null の数が知りたい。 public static int CountNull<T1, T2, T3>(T1? value1, T2? value2, T3? value3)</t1,></t>…
背景 注意) サーバサイドはC#で書く前提です。 こんなご時世なのでサーバとクライアントを通信させない、なんて事は滅多にないでしょう。 その際皆さんは通信の中身というかコンテンツ、要するにWEB APIの場合はhttpのbodyですが、をどのような形で定義/シリ…
この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#…
タイトルが分かりずらいですね、はい。 コンソールアプリ、Main関数が終了すると同時にアプリは終了します。 それはそう、当たり前。 なんですが裏のスレッドでなんか動いてるからアプリは落ちてほしくない、けどMainは終わっとるし別にawaitするべきものも…
ASP.NET Coreにおける認証。 googleを外部プロバイダとしてOAuthを利用する。 準備 サービスの設定 AddAuthentication() AddCookie() / AddGoogle() http pipeline Challenge / Sign in / Sign out Authorize 全体の流れ まとめ。 References なんでこんなの…
タイトルの通りなんですが、C# 9で導入された新機能であるSource Generatorを使った、SignalR Clinetに強く型付けするためのライブラリをリリースしました。 github.com SignalRってなんぞ、っていうと、リアルタイム通信用のライブラリ。Socket.IOと似たよ…
画面共有した際にニコニコみたいにコメント流すアプリケーション作ってみました。 アプリケーション名はReaction is All You Need. を略してRaynです。 画面共有している人はクライアントアプリのダウンロードが必須ですが、視聴者側はブラウザで完結します…
C#のGuidは16バイトです。なので個人的にはDBにも16バイトのまま入ってほしいところ。 なのでBINARY(16)とかでDBのテーブルを作るわけです。 が、DapperはデフォルトでGuidを文字列に変換するため、Guidに対応するカラムの型をBINARY(16)で作ったテーブルと…
C++だとこんな感じで簡単にint配列をbyte(char)配列として取り扱うことができます。 int* intArray = new int[2]; intArray[0] = -1; //32ビット全部1が立つ intArray[1] = 2; for(int i = 0; i < 2; i++) { cout << intArray[i] << endl; } cout << "======…
シーケンスからn番目に小さい/大きい値を効率よく取得するにはどうすればいいのかなー。という話。 C++だとstd::nth_elementって関数が標準であって、n番目の値とか比較的簡単に効率的な実装で求めることができます。 C#...というか多くの言語で標準ライブラ…
はい、素でgRPCのデイリービルドからUnity用のzip落としてきて、Unityに突っ込んでも動きません。 やっかいな。。。 Unity側でgRPC使えるようにするための一連の流れを説明して、動作を確かめるべくサーバ側(ASP.NET Core)も用意します。 Unity側 Unity用の…
Riderのほうにもこんな感じのissueが存在していたで問題は認識されてるっぽい。2019.3になれば普通に解決するのかなぁ。(問題にぶつかったの2019.2です) C#でgRPCのため、protoファイルからC#のテンプレートを生成して参照するため、 Grpc.Toolsパッケージを…
最近3Dスキャンとかで3Dモデル吐き出すとかありますよね。まぁあるんです。あったんです。 でこれらのモデルの体積がほしいなーと思っても、複雑な形状のmeshの体積を求めるのは地味に難しいです。ぱっとアルゴリズム思いつく人はきっと数学に慣れ親しんでい…
双方向通信大事。 というわけでASP.NET CoreでWebSocketを使ったチャットのサンプル作りました。 でなんでこんなことやっているかというと、msのドキュメントに書いてあるあるやつ だと自分が送信したものに対して自分に返ってくるだけで双方向通信生かされ…
クライアントサイドでasync/await利用するときってだいたいメインスレッドで長々計算するとUI固まってアカンので別のスレッドでスレッド回すぜ!っていっているケースが多いと思います。 そのノリでサーバサイドのC#を書くと、疑問にぶち当たって、 別にサー…
.NET Standard完全に理解していますか? .NET Standard,いろんな環境で使える共通のAPIという認識はみなさんしていると思います。が、内実...というか.NET Standardで作成したライブラリが、どのように.NET Core環境と.NET Framework環境で動いているのか、…
その1(s_implは何ですか) その2(クラスとその役割) その3(動作を追ってみる) 動作を追う。 メソッドチェーン時(Subscribe前) サブスクライブが走るまでは、単にIObservableを返し、生成されたオブジェクトとしては、上流のObservableと、Func<TSource, TResult>の関数を保存す</tsource,>…
その1(s_implは何ですか) その2(クラスとその役割) その3(動作を追ってみる) 使われているクラスなどを見ていく。 前回具象クラスがなんであるかわかったので、一番最初の疑問であった public static partial class Observable { //〜略〜 public static IOb…