「プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで」を読み進めて練習課題が出てきたので解いた
Q. ファクトリメソッドを主としたクラス実装で、クラスの初期化を外から隠したい
A. private_class_method :new
を記述する
参考にしたコードは「良いコード/悪いコードで学ぶ設計入門」の「5.2.1 private コンストラクタ+ファクトリメソッドで目的別初期化」より
Links
gup をインストールした (バージョンアップ ツール)
gup update
で go install [package name]
でインストールしたバイナリ群を最新版に更新できる
Link
.NET C# で画像から文字列を検出する (Google Cloud Vision API)
ゴール
Vision API に渡した画像ファイルから、特定文字列が含まれているか否かを判定する
セットアップ
初期設定・チュートリアルは「Using the Vision API with C#」が詳しい
メモ
あとで調べられるようにメモ
- 手元の Windows で
gcloud
コマンドをインストールする: Cloud SDK - プロジェクトにパッケージを追加:
dotnet add package Google.Cloud.Vision.V1 -s https://api.nuget.org/v3/index.json
- 認証情報を保持する JSON ファイルを生成する
# # JSON 生成とその準備 # gcloud auth list # で <my_account>@<my_domain.com> が得られる gcloud config list project # で <PROJECT_ID> が得られる gcloud services enable vision.googleapis.com # サービス有効化 export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project) gcloud iam service-accounts keys create ~/key.json --iam-account my-vision-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
コード
Links
指定ウィンドウの特定領域を画像キャプチャする
ゴール
- Android ゲーム用のアプリケーション (BlueStacks) ウィンドウを指定
- ウィンドウ中に描画されているなかの特定領域を、画像として保存する
本文 次のコード例に書かれている NativeMethods
は過去記事参照のこと
コード
任意の領域をキャプチャする
コード例ではウィンドウ全体のキャプチャを示したが:
Size
,Bitmatp
のサイズ指定で生成・キャプチャする画像のサイズと領域- X, Y の指定でウィンドウ内の座標指定
この2つを調整することで、キャプチャしたい場所を狙って画像化できるはず
Links
C# で Win32 API を呼び出す
ゴール
C# から Windows API を呼び出すことで、マウスの自動操作、キーボードの自動操作を実現する
コード
上のように定義して、click(x, y)
で指定座標に対してクリックすることができる
キーボード操作は単純で、直接 SendKeys.SendWait("{ENTER}")
のように呼び出すことで、アクティブウィンドウに対してキー操作を送ることができる
SendWait() が使えない...?
SendKeys.SendWait()
が含まれている System.Windows.Forms
は、プロジェクトをコンソールアプリケーションとして作成した場合 (dotnet new console
) 利用できない
GUI アプリケーションとしてプロジェクトを初期化 (dotnet new winforms
) することで各種メソッドが使用可能になる
Link
ゲームの周回操作をスクリプト記述機能で省力化する (BlueStacks)
ゴール
周回要素のあるゲームアプリのプレイで、いつもの操作をちょっとラクにしたい
前提
- BlueStacks で ゲームプレイしている (Android アプリ)
スクリプトの記述
基本的には「待つ (wait x (ms)
)」「タップする (tap x y
)」でだいたいの操作は賄えるはず
# ゲームリザルト画面から抜ける wait 1000 tap 85.58 05.05 # ステージ選択画面表示まで待つ wait 8000 # ゲーム開始ボタンを押す (1/2) tap 89.40 91.28 wait 2000 # (タイミングずれを考慮して もう一度 押す) tap 89.40 91.28 wait 2000 # ゲーム開始ボタンを押す (2/2) tap 86.71 60.77 wait 1000 # (タイミングずれを考慮して もう一度 押す) tap 86.71 60.77 wait 1000 # # ゲーム開始時に消費するポイントが足りなかった場合の案内画面を抜ける # tap 86.71 60.77 wait 1000 tap 07.06 05.32