sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

2021-01-01から1年間の記事一覧

現実的なマルチスレッド (ロック) 対策

マルチスレッドとロックとは? マルチスレッド処理の準備 ロックしないマルチスレッド処理 lock 注意すること Interlocked ReaderWriterLockSlim SemaphoreSlim Mutex 実行結果のまとめ 補足 Volatile 修飾子 原子性 サンプル 参考 2021 年末現在、C# におけ…

C# パターンマッチングのデコンパイルコードを確認する

C# Advent Calendar 2021 を見てると、C# のパターンマッチングが便利らしい。 C#のアプデでめちゃくちゃ便利になったswitch文(パターンマッチング)の紹介 C#のプロパティによるパターンマッチングを使おう でも、パターンマッチングの中身が実際どんな判…

Git tag の基本的な使い方

タグ (tag) の使い方 Visual Studio からタグをつけるとき GitHub でリリースを作るとき 参考 Git のコミットにタグをつけておくと、GitHub なんかのサービスだと特にバージョン管理が見やすく、やりやすくなります。 タグ付けしたほうがよいタイミングが明…

なんでプログラミングは簡単だけど、ソフトウェアエンジニアリングは難しいのか?

Yujian Tang さんの記事が元です Twitter を見てたら流れてきた記事が気になったので、個人的な和訳をメモした内容です。 首がもげるほど頷いた英語記事「なぜプログラミングは簡単なのにソフトウェアエンジニアリングは難しいのか?」職場では後者も必要。…

ローカルアプリでも API キーの取り扱いに注意する

ローカルのサンプルプログラムでも、GitHub にコミットするときなんかに API キーを使用していると困ることがあります。GitHub にサンプルコードをあげるときは、当然 API キーを隠します。で、API を使用する(実際に動作する)実行コードに書き換えるたび…

Prism 子ウィンドウ(ダイアログ)IDialogAware を表示する

Prism App.xaml MainWindow (View + ViewModel) Dialog1 Dialog2 サンプル 参考 Prism を利用するプロジェクトで子ウィンドウ(ダイアログ)を表示する方法は、バージョンの進化によって変化してきているようです。 現在(下記のバージョン記載)では、ダイ…

C# コーディングガイドライン&プラクティス 2021

この記事は、Microsoft MVP のひとり Vincent Maverick Sanchez Durano のブログ記事「C# Coding Guidelines and Practices - 2021」を個人的に雑訳したものです。 この記事では、一般的なソフトウェアエンジニアリング ガイドラインを紹介します。これらの…

2021 年 会社勤めの買ってよかったモノ、まとめ(好きなモノ10選)

はてなブログ10周年特別お題「10にまつわる4つのお題」の「好きな◯◯10選」ということで、ちょっと早いけど 2021 年の好きな(買ってよかった)モノ10選をまとめてみました。(毎年やっているやつですね) 今年は結構マニアックというか、個性的なものも多…

WPF PasswordBox のバインドとその対策 (Windows Hello)

非推奨でも Password プロパティを Binding する Windows Hello を利用した認証 エラー発生するとき サンプル 参考 PasswordBox コントロールの Password プロパティは仕様のため、バインディングをすることができません。まずもって、バインディングをする…

Prism EventAggregator はユニットテストに Moq を使うこと

この記事は、ARCTOUCH のブログ記事「Using Moq for unit testing with Prism EventAggregator」を個人的に雑訳したものです。 前回記事では、Publisher-Subscriber パターンと EventAggregator を使用するメリット、そして、プロジェクトでの使用方法につい…

Prism EventAggregator を使用する方法

環境構築 (Installation?) コンストラクターの注入 (inject) イベントの作成 イベントの購読 イベントの発行 イベントの購読解除 高度なこと (Advanced stuff) 参考 この記事は、ARCTOUCH のブログ記事「How to use Prism EventAggregator for .NET app deve…

Prism EventAggregator をなぜ使うべきか

EventAggregator is なに? .NET アプリ開発に Prism EventAggregator をなぜ使用するのか? Prism EventAggregator をいつ利用するのか? Xamarin.Forms の EventAggregator ちょっとした注意点 参考 この記事は、ARCTOUCH のブログ記事「Why you should us…

WPF Prism サンプルコードの学習6(公式外サンプル1)

1. Bootstrap 2. ViewModelLocator 3. Module 4. MVVM の基本クラス 5. InteractionRequest 6. Navigation 7. EventAggregator 8. ModuleLoadSeq 9. RegionBehavior 10. ModuleCatalog まとめ 参考 前回まで Prism の公式サンプルを確認しました。補足として…

WPF Prism サンプルコードの学習5 (Navigation, Invoke)

14. UsingEventAggregator 15. FilteringEvents 16. RegionContext 17. BasicRegionNavigation 18. NavigationCallback 19. NavigationParticipation 20. NavigateToExistingViews 21. PassingParameters 22. ConfirmCancelNavigation 23. RegionMemberLifet…

WPF Prism サンプルコードの学習4 (Commands)

11. DelegateCommands 12. UsingCompositeCommands 13. IActiveAwareCommands まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: 8.1.97 (2021/05/25) GitHub - Prism Sa…

WPF Prism サンプルコードの学習3 (ViewModelLocator)

8. ViewModelLocator 9. ChangeConvention 10. CustomRegistrations まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: 8.1.97 (2021/05/25) GitHub - Prism Sample WPF …

WPF Prism サンプルコードの学習2 (Module)

7. Modules 7.1 Modules - AppConfig 7.2 Modules - Code 7.3 Modules - Directory 7.4 Modules - LoadManual 7.5 Modules - Xaml まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは…

WPF Prism サンプルコードの学習1 (Bootstrapper, Region)

1. BootstrapperShell 2. Region 3. Custom Region Adapter 4. View Discovey 5. View Injection 6. ActivationDeactivation 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: …

Prism Full App (.NET Core) テンプレートを体験する

テンプレートの構成について WPF_Core_FullSample プロジェクト Core プロジェクト Modules.ModuleName プロジェクト Services.Interfaces プロジェクト Services.Services プロジェクト 新しいサービスを追加するテスト Services.Interfaces の修正 Service…

DI パターンを体験するために IoC Unity を使ってみる

テスト1 テスト2 テスト3 テスト4 サンプル 参考 IoC Unity とは、ゲームエンジンの Unity ではないです。inversion of control (IoC) コンテナの Unity です。 DI コンテナを C# で体験してみるなら、デファクトスタンダートに近い存在である Unity コ…

DI パターンと DI コンテナについて

DI DI コンテナ サービスロケータのアンチパターン テストと DI まとめ 参考 DI とは「dependency」を「injection」するプログラミングのデザインパターンのこと。日本語訳だと「依存性の注入」となっており、どのように意味を解釈したものかむつかしくなっ…

Heroku Postgres と navicat を接続する

Heroku Postgres を有効化 navicat の設定 テーブルのサンプル 参考 Heroku Postgres と navicat をテスト接続する機会があったので、その内容をメモ。 Heroku Free Plan 珍しく RDBMS でも無料で使えるクラウドサービスです。行数の制限が厳しいのでテスト…

TypeScript セットアップ方法のメモ

ターミナルで実行するコマンド tsconfig.json ファイルの修正 ESLint の設定ファイルを追加 実行確認 TypeScript を使うコーディングをはじめるときに、VScode だとターミナルを使ってプロジェクトの初期設定をすると思います。 この部分は、新しくてよい書…

C# インターネットに接続しているかどうかを調べる方法

ReadySunValley 0.61.0 のコード ReadySunValley 0.52.1 以前のコード 補足 おまけ 参考 ローカルアプリケーションを作るときに、ネットワーク接続の有無をチェックすることがあります。どういうコードを書くでしょうか。 Windows 10 から Windows 11 への更…

npm vs npx - その違いは?

npm vs npx npm the package manager npx the package runner Run a locally installed package easily(ローカルにインストールされたパッケージを簡単に実行する) Execute packages that are not previously installed(インストールされていないパッケー…

C# Core Audio API を使ってみる

音量を変更するための P/Invoke 音量を変更するコード サンプル 参考 Core Audio API は Windows Vista から追加された OS のスピーカー設定(音量など)にアクセスするためのものです。 Core Audio API OS のスピーカーまわりをイジるには丁度よい API なの…

WPF + .NET 5 で CsWin32metadata を利用するサンプル

.NET 5 環境で Win 32 API を利用しようと思ったら、従来なら P/Invoke(DllImport)で利用する関数や構造体なんかを再定義して利用していたと思います。2021 年末を完成目標にして「win32metadata」が立ち上がっているので、こっちを利用してみるテスト。 w…

C# DMM 版ウマ娘のウィンドウ画像をキャプチャー保存する (+OCR メモ)

指定したウィンドウ(DMM 版ウマ娘)を取得する ハンドルからウィンドウの表示画像を取得する 画像の切り出し OCR にかけるとき サンプル 参考 DMM 版のウマ娘のウィンドウ画像をキャプチャーをして、あれこれサポートするツールでは「UmaUmaCruise」が有名…

PowerPoint スライドの画像出力サイズを変更する方法

PC

変更の手順 参考 PowerPoint のスライドを PNG 形式の画像ファイルとして保存するときの画像サイズを変更する方法をメモします。 これ 変更の手順 Win + R で「ファイル名を指定して実行」を起動 regedit 下表から対応する Power Point のレジストリサブキー…

GAS (Google Apps Script) を使って、フォルダーの更新検知と自動メール通知をする

Spread Sheet と GAS コーディング スクリプトエディターを開くとき デバッグを有効化する サンプルコード トリガーを設定する 参考 古来からのプログラマーは、Excel VBA を覚える気がなくても日本の社会通念より必ず身につけてしまうものでした。現在でも …