Start Debugging

タグ: how-to

65 件 · ページ1/7

C# のコンソールゲームループで Console.ReadKey の前にバッファされたキー入力を破棄する方法
新しいキーを待つ前に while (Console.KeyAvailable) Console.ReadKey(true) で入力バッファを空にし、ゲームループでは毎フレーム空にしてキーリピートが溜まらないようにします。.NET 10 の Windows と Unix でのバッファの仕組み、キーを押し続けると遅延する理由、Unix のエコーの罠、FlushConsoleInputBuffer も解説します。
EF Core でエンティティを Attach する前に、DbContext がすでに追跡しているか確認する方法
DbSet.Local.FindEntry(key) を使えば、データベースへの往復やスキャンなしで、指定したキーのエンティティが追跡されているかを変更トラッカーに問い合わせられます。この確認で Entry(entity).State が当てにならない理由、Find がクエリを発行する理由、EF Core 10 で検証済みの AttachOrMerge ヘルパーを紹介します。
go_router の StatefulShellRoute で NavigationBar の選択タブを現在のルートと同期させる方法
NavigationBar.selectedIndex は、setState で持つフィールドや initState で作ったコピーではなく、StatefulNavigationShell.currentIndex から取得します。Flutter 3.44.8 と go_router 18.0.2 で検証し、ディープリンク、context.go、ブランチをまたぐ push でずれるパターン、location から算出したインデックスが誤る理由、didUpdateWidget でタブ変更に反応する方法を解説します。
.NET の正規表現でバランシンググループを使って、ネストした括弧とタグの対応を一致させる方法
バランシンググループ (?<name>) と (?<-name>) を使うと、.NET の正規表現のキャプチャグループをスタックとして扱えるため、1 つのパターンで任意の深さにネストした括弧や <div> タグに一致させられます。完全なパターン、スタックの仕組み、(?<inner-open>) による内側の内容のキャプチャ、そして .NET 11 RC1 で確認した注意点 (空スタックのチェック、壊滅的なバックトラック、NonBacktracking、複数種類の括弧の混在) を解説します。
SDK スタイルのプロジェクトで厳密な名前付きアセンブリの完全な公開キーを InternalsVisibleTo に追加する方法
署名済みアセンブリは、フレンドをトークンではなく 320 文字の完全な公開キーで指定する必要があり、そうしないとビルドが CS1726 または CS0281 で失敗します。sn -p と sn -tp、またはクロスプラットフォームの .NET スクリプトでキーを取得し、.csproj の InternalsVisibleTo 項目の Key メタデータに設定します。PublicKey プロパティによるフォールバック、Moq の DynamicProxyGenAssembly2 のキー、改行の落とし穴も扱います。
C# アプリで Windows セッションのロック、ロック解除、ログオン、ログオフのイベントを検出する方法
デスクトップアプリやコンソールアプリでは SystemEvents.SessionSwitch を使い、Windows サービスでは OnSessionChange をオーバーライドし、あるいは WM_WTSSESSION_CHANGE を自分でフックします。3 つすべての .NET 10 コード、隠れた '.NET System Events' スレッド、サービスではログオンが見えるのにデスクトップアプリでは見えない理由、順序が入れ替わる通知、WTSQuerySessionInformation で現在のロック状態を問い合わせる方法を解説します。
Npgsql を使う EF Core の全接続に search_path や statement_timeout などの PostgreSQL セッションパラメーターを設定する方法
一度だけ実行した SET は、Npgsql が接続をプールに戻した瞬間に DISCARD ALL で消去されます。Search Path と Options の接続文字列キーワードで search_path と statement_timeout をスタートアップパケットに含め、うまくいかない場合は ALTER ROLE か ConnectionOpened インターセプターにフォールバックします。また、UsePhysicalConnectionInitializer の SET が黙って失われる理由も解説します。
2026-09-27 dartfluttervs-code
大規模な Flutter モノレポで VS Code の遅い Dart 解析サーバーを高速化する方法
pubspec.yaml が何十個もあるモノレポでは、Dart 解析サーバーがパッケージごとに解析コンテキストを 1 つずつ作り、メモリと 1 分近い起動時間はそこで消費されます。pub workspace に変換し、analysis_options.yaml で生成コードを除外し、レガシーのアナライザープラグインを外し、Insights ページで効果を確認します。Dart 3.12.2 での実測で、ピークメモリは 2.3 分の 1、コールド解析時間は半分になりました。
ASP.NET Core ですべてのログエントリに現在のユーザー ID を追加する方法
BeginScope ミドルウェアでは、例外ハンドラーのエラーログと Request finished の行が漏れます。IHttpContextAccessor からユーザーを読み取る ILogEnricher を登録し、処理がリクエストの外に出るときだけスコープを開き、Serilog の AddSerilog がエンリッチメントを黙って無効化する点に注意しましょう。
EF Core と Npgsql で PostgreSQL の jsonb 配列にアトミックに追加する方法
エンティティを読み込み、List.Add を呼んで保存すると、jsonb ドキュメント全体が書き換えられ、同時に行われた追加は黙って失われます。追加処理は jsonb の || 演算子を使った 1 つの UPDATE にまとめます。ExecuteSqlAsync を使うか、ExecuteUpdateAsync の中でマップした関数を使い、さらに @> によるガードで冪等にします。
次へ