Windows11の設定を変更して使いやすくする

Windows 11 ってログイン直後の状態は以下のように一見おしゃれに見えます、が、実際は Windows 10 から大幅に使いにくくなっています、、、 そこでいくつか追加の設定をすることで Windows 10 の見た目に寄せて使いやすくする設定をいくつか紹介したいと思…

【C#】非同期で排他制御できるSemaphoreSlimクラスの使い方

最近使用する回数が増えてきた非同期 (async/await) 対応の排他制御の紹介をしたいと思います。 はじめに 同時実行数に制限がある排他制御を行うため SemaphoreSlim クラスを使います。 このクラスはプロセス内に限定した排他制御を行いたい時(すなわち、別…

Windows11のDoSVCとAppXSVCを無効化する

注意 本内容は、ある程度PCに知識がある人向けです。操作によって問題が発生する可能性があり紹介する内容の実践は全て自己責任です。 AI需要過多のためPCパーツ価格が高騰している昨今省リソースの重要性が増している現状に逆行し、マイクロソフトがPCのリ…

【C#】ListとObservableCollectionを同期する

初めに XAML 環境で、Model は List<T>, ViewModel は ObservableCollection<T> で双方向でバインドしたい、、、のようなケースが発生したときに汎用的にバインドする実装例を紹介したいと思います。 Model 側が既に List<T> で定義されてしまって変更できない場合や</t></t></t>…

VContainerでのメソッドインジェクション用スニペット(VS2022向け)

はじめに VContainer を使用して [Inject] 属性を付けてインジェクションする場合、以下のような事を検討します。 VContainer が存在しない環境を考慮して設定用メソッドが必要? つまりフィールドインジェクションだけだと不足 Constructメソッドでインジェ…

【C#】Gif画像を分解してpngファイルで保存する

ゲーム開発で買ったアセットの 2D アニメーションが gif しかなかったので gif を分解して個別の png に保存する + 全て結合して SpriteSheet 化(Unityなどのゲーム開発環境の SpriteEditor などで利用可能な形式)するプログラムを作成してみました。 特に…

【C#】gRPCで証明書の状態をクライアント側で無視する

gRPC で HTTPS な環境の場合、サーバー側で証明書の設定が必要になります。が、localhost にサーバーとクライアントが存在する場合は VisualStudio がそこらへんうまく調整して開発時のローカル作業時は特に問題が発生しません。 ただ、開発中期あたりになる…

【C#】protobuf-net.GrpcでコードファーストなRPCを実装する

「protobuf-net 」という .NET 向けの protocol buffers という Google 製のデータシリアライザーがあります。このライブラリ、基本的にはオブジェクト ⇔ バイナリ形式に相互変換する機能を持っています。 が、 protobuf-net は「protobuf-net.Grpc」という…

【C#】シンプルなLRU(LeastRecentlyUsed)キャッシュを実装する

Wiki を眺めていたらキャッシュアルゴリズムの一つでLRU(Least Recently Used)というものを見つけたので C# で実装してみたいと思います。 LRUの実装方法ですが、データの時間的局所性という概念(最近アクセスされたデータは近いうちにまた使われやすいが…

【C#】Taskにタイムアウトを追加する

C# の非同期タスクにタイムアウトを追加して処理をキャンセルする方法の紹介です。 .NET の標準ライブラリのネットワーク呼び出し系の API は呼び出しにタイムアウトがついてることが多いですが、一般の API だと通常はタイムアウトがありません。上位から C…

【C#】ラムダのローカル変数のキャプチャーを回避する

string.Create の実装を見て気が付いた内容です。 ラムダ式の変数キャプチャーを回避して実行時に生成されるデリゲートでヒープのメモリ確保を削減できるという内容になります。 ラムダ式の変数キャプチャーとは ラムダ式内からローカル変数やフィールドを参…

【C#】R3のReactivePropertyのスニペット

R3 という Reactive Extensions(Rx) のモダンな実装が登場しました。Unity 向けの専用機能としてではなく、通常の .NET 開発環境でも利用可能なため、R3 を使った Observable なメッセージングの仕組みを環境を選ぶことなく利用できるようになりました。 利…