sh1’s diary

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

プログラミング

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

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」を個人的に雑訳したものです。 この記事では、一般的なソフトウェアエンジニアリング ガイドラインを紹介します。これらの…

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…

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」が有名…

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

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

C# .Net Framework と Visual C 再配布パッケージのインストール確認

.NET Framework のバージョン確認 Visual Studio 20XX Visual C++ 再頒布可能パッケージの確認 サンプル おまけ(ランタイム is なに) 参考 いまでも WPF の Windows ネイティブアプリケーションを作るときに .NET Framework を使うことがあるのですが、古…

Unity アセット管理 Addressables の基本的な考えと使い方

Addressables の仕組み is なに? Addressables の使い方 テスト Event Viewer ロード/アンロードを可視化する 参考 画像などのアセットデータをプロジェクトに追加して利用する方法として、以下のような手法が主に利用されると思います。 Resources Asset B…

Unity Assets, Resources and AssetBundles の記事(雑訳)

1. AsesetBundle と Resources のガイド 2. Assets, Objects and serialization 2.1 アセットとオブジェクトの内部 2.2 オブジェクト間の参照 2.3 なぜファイル GUID とローカル ID か? 2.4. 合成アセットとインポーター 2.5 シリアライズとインスタンス Mo…

Unity MVP パターンを利用した UI 設計

MVP パターン is なに? Model は POCO なオブジェクトか? サンプル 参考 この記事は torisoup さんの「UniRX/UniTask 完全理解」P318 の MVP パターンについて個人的に学習内容をメモする記事です。 MVP パターン is なに? UI を実装するときの実装パター…

Unity アプリ名、アイコン、スプラッシュスクリーンなどアプリ開発の初期設定まとめ(Android)

アプリの名称の設定 デフォルトの名前空間設定 アイコンの設定(Android) スプラッシュスクリーンの設定 アプリケーションのコードビルド 参考 アプリを作成するときに最低限やったほうがいいと思った設定をまとめます。(Android 対応) アプリの名称の設…

Unity HP スライダーのサンプル

スライダーを HP(体力)ゲージにする 体力 33% 以下 で Fill Area を差し替える HP(体力)ゲージを減らすサンプル サンプル 参考 テストしていたプログラムの副産物として HP スライダーが出来たのでメモ。 EventTrigger のちょうどいいテストデータでもあ…