AWSのEC2(WindowsServer)でキャプチャ取得を自動化したかった話

主題のままなのですが、AWSのEC2でテストを消化する機会があり、ファイル収集やキャプチャ取得が面倒だと思ったので、パワーシェルで自動化しました。

キャプチャ取得は、メモ帳とエクスプローラー。
ファイル収集はそんなに難しくないと思うので省略です。

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$exeFolder = $MyInvocation.MyCommand.Path
$exeFolder = Split-Path "$exeFolder" -Parent

Function openExprolerAndGetCapture($folderPath) {

    # エクスプローラーを開く
    Start-Process explorer.exe -ArgumentList $folderPath -WindowStyle Maximized
    # ウィンドウが表示されるのを待つ
    Start-Sleep -Seconds 5

    # エクスプローラーのウィンドウを探す
    $folderName = $folderPath.split("\")
    #Write-Host $folderName[-1]
    $explorerWindow = Get-Process | Where-Object { $_.MainWindowTitle -eq $folderName[-1] }

    if ($explorerWindow) {

        # 画面キャプチャを取得
        $rect = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
        $bitmap = New-Object System.Drawing.Bitmap($rect.Width, $rect.Height)

        $graphics = [System.Drawing.Graphics]::FromImage($bitmap)
        $zero = New-Object System.Drawing.Point(0, 0)
        $graphics.CopyFromScreen($zero, $zero, $bitmap.Size)

        # 画像を保存
        $saveFileName = $exeFolder + "\" + $folderPath.replace("\", "_").replace(":", "") + ".png"
        Write-Host $saveFileName
        $savePath = $saveFileName
        $bitmap.Save($savePath, [System.Drawing.Imaging.ImageFormat]::Png)

        # ウィンドウを閉じる
        $explorerWindow.CloseMainWindow()

    }
    else {
        Write-Host "エクスプローラーのウィンドウが見つかりませんでした。"
    }

}

Function openNotepadAndGetCapture($filePath) {

    # メモ帳を開く
    Start-Process C:\Windows\notepad.exe -ArgumentList $filePath -WindowStyle Maximized
    # ウィンドウが表示されるのを待つ
    Start-Sleep -Seconds 5

    # メモ帳のウィンドウを探す
    $fileName = $filePath.split("\")
    $windowTitle = $fileName[-1] + " - メモ帳"
    Write-Host $windowTitle
    $explorerWindow = Get-Process | Where-Object { $_.MainWindowTitle -eq $windowTitle }

    if ($explorerWindow) {

        # 画面キャプチャを取得
        $rect = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
        Write-Host $rect.Width ":" $rect.Height
        $bitmap = New-Object System.Drawing.Bitmap($rect.Width, $rect.Height)

        $graphics = [System.Drawing.Graphics]::FromImage($bitmap)
        $zero = New-Object System.Drawing.Point(0, 0)
        $graphics.CopyFromScreen($zero, $zero, $bitmap.Size)

        # 画像を保存
        $saveFileName = $exeFolder + "\" + $filePath.replace("\", "_").replace(":", "").replace(".", "_") + ".png"
        Write-Host $saveFileName
        $savePath = $saveFileName
        $bitmap.Save($savePath, [System.Drawing.Imaging.ImageFormat]::Png)

        # ウィンドウを閉じる
        $explorerWindow.CloseMainWindow()

    }
    else {
        Write-Host "メモ帳のウィンドウが見つかりませんでした。"
    }

}

try {

    # memo
    openNotepadAndGetCapture -filePath "C:\test\test.txt"

    # explorer
    openExprolerAndGetCapture -folderPath "C:\test"

}
finally {
}

さくらVPSでmariaDB + nginxをDockerで

なぜDockerなのか

試行錯誤したいからです。

構成

OS:Ubuntu 20.04
スクリプト:Setup and update
 ー初回起動時にパッケージ更新する:する
 ー日本語環境 ja_JP.UTF-8 に変更する:する

準備

アップデートなどしていきます。

sudo apt update
sudo apt upgrade

Docker

sudo apt docker.io

Docker-compose

sudo apt docker-compose

docker-compose.yml

太字部分は適宜、変更してください。
特にmariaDBは、ポート番号を変更してください。
バージョンを固定する必要ないならlatestとかでも大丈夫じゃないでしょうか。(試してない)
できればstable(安定版)にすることをおすすめします。

version: '3'

services:
  db:
    image: mariadb:11.0.2
    environment:
      MYSQL_ROOT_PASSWORD: Password
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./mysql/data:/var/lib/mysql
  web:
    image: nginx:1.24.0
    volumes:
      - ./nginx/templates:/etc/nginx/templates
    ports:
      - "8080:80"
    environment:
      - NGINX_HOST=www.domain.net
      - NGINX_PORT=80

アクセス

パケットフィルタリングを有効にしている場合は通すようにしましょう。
mariaDBのユーザIDとパスワードは、上記のymlの設定ならroot/Passwordです。

当然ながら、外部からアクセスする場合にはドメインが必要になります。
(もしくはIPアドレス指定ですかね)

まとめ

とりあえず、アクセスできることだけ確認しました。
アプリの実装やデプロイ自動化などについては、また今度。

田舎から都会へ出る人へ

時期外れだけど
ひとりになる前に知っておいた方が、
あるいは、聞いておいた方が良かったのではというポイント。

保険関連

貯蓄があって、危険の少ない仕事なら、保険料の高い保険は不要。
通勤が電車のシステムエンジニアなら、とりあえず貯蓄を500万くらい貯めて、
あとは都民共催の月千円のプランでよいかと思います。

地方で自動車通勤とかなら別途、車関連の保険には入った方がいいかもしれませんね。

引っ越し関連

大手不動産仲介会社とかに全部任せると、逆に高くついたりする。
必要ないものは断って、お安い会社に任せるのも検討した方が良いと思います。
たとえば不動産の紹介だけやってもらって、引っ越しは安い業者に任せるとか。

今では少なくなったかもしれませんが、社会人1年目なら寮のある会社はオススメ。
変な先輩とかいればご愁傷様って感じですが、一緒に過ごすことで同期の仲が深まることもあります。

キッチン回り

シンクの周りは台拭きを置いておき、使用後は水をかならず拭うこと!
ステンレスでも錆びは移ります。
金属の缶とか絶対置かないでください。
使った後は水気をきちんと拭うこと!(大事なことなので(ry )

換気扇は100均とかでフィルターを購入して、そもそも汚れないようにする。
また、風呂場に防カビ燻煙材を焚いて、なるべくカビが発生しないように。
できればルンバが動きやすい床の物件だと掃除も自動化できますね。
時間は有限なので自動化できるところは自動化して、
汚れにくい環境を作りましょう。

フライパンはテフロン加工されているか、鉄鍋、アルミパンなど、
きちんと特性を理解して使用、メンテナンスしましょう。
特にメンテナンス方法を理解することは大事。
この前、オムライスを作るときは強火が良いと言っていたテレビがあったけど、
テフロンなら死んだなと。

目覚まし

太陽電池が組み込まれた目覚まし時計がオススメです。
そういえば、うちのCITIZENの時計は5年くらい電池を変えてないはず。。。

こたつ・扇風機

冬の電力消費を抑えたいならコタツがオススメ。
エアコンは暖房も冷房もお金がかかります。
お金に余裕がなければこたつや扇風機を買った方が安上がりの場合があるはずです。
特に、物件に備え付けのエアコンは古い場合が多いので。

食生活

節約するならお安いスーパーの近く。
ある程度の日数分を購入して、お休みの日に作り置きするのがベター。
たとえば、オクラとかほうれんそう、小松菜などをゆでて麵つゆ、鰹節に漬けるとか。
毎日作るのは料理好きでも大変です。

ひとりだと購入する食材が偏ったりするので、
一日分のビタミンをサプリなどで不足分は補いましょう。

ごはんは基本的には常温保存。
温めなおす前提なら、冷蔵or冷凍。
冷凍の場合はあたためコース、冷蔵の場合は500wで1分20秒程度。
冷ごはんにはレジスタントスターチになってるらしいので、
カロリーを気にしているなら冷ごはんがオススメ。
できれば麦ごはん。

食材ごとに書きたいことがあるけど、それは別で書きます。

フィットネス

ジムよりもSwitchのフィットボクシングがおすすめ。
家から出ずに運動できるし、汗をかいたら家だからすぐにお風呂に入れます。
Switchはゲームではなく、フィットネスマシンです。
ただし、何事もやりすぎは禁物なので、ほどほどにしましょう。

体重計よりも体組成計がオススメです。
とりあえずは、体重と体脂肪率が分かるやつです。
体重と体脂肪率が分かれば脂肪の重量が分かるので、脂肪の重量を減らすことを目標にしましょう。

きちんと運動していなかったときは豆類を食べてもイソフラボン効果が感じれませんでしたが、
ちゃんと運動をするようになってからは、イソフラボン効果が感じれるようになりました。
(肌にハリが出てきた気がする。あと、カサカサしにくくなったかな?)

街中で声をかけてくる人

基本的には無視してください。冷たいのではなく、自衛です。
悪い人間や自分のことしか考えていない人間が多いです。
こちらも自分優先で生きましょう。

そもそも、街中で声をかけてくる人が困っていることは、ほぼありません。(経験上)
本当に困っていたら、常識的な人は交番行きます。

声掛けの例(実例):
・外人から、恵まれない人にという話で千円の寄付を求められた。
・〇〇に行きたい→乗る電車を教える→自信ないのでそこまで連れてって
・今、お時間いただけませんか。(多分、どこかの営業の新人研修)
・ちょっと教えてほしいんですけど→今急いでるんで→タクシー乗り場どこですか?
 →あっち!(ほんとに急いでたけど、ほんとに知らないようなので指を指しながら)
・アンケートにご協力いただけませんか。
 →〇〇保険なんですけど、ご住所はどちらですか。
 →え、嫌なんだけど。(はっきり言いましょう)
・○○テレビの該当インタビューなんですけど。
 (今の時代、インタビューで炎上することもありますのでリスクは避けましょう)

そのほか、何かアップデートあれば追記します。

Minecraftサーバーを立ち上げようとした

minecraftサーバーを立ち上げようとしてみました。
結論から言うと、メモリ不足で失敗(^^;

今のサーバーのメモリが512MBで、やっぱりスペック的には1GBは必要そうです。

使用したのはpaperMCという軽量化したminecraftサーバーソフトで、
ver1.17からJava16になったようです。
Java16(openJdk)のインストールは、↓のコマンドでやりました。

yum install -y java-latest-openjdk.x86_64 which

やる前に↓のコマンドで、存在することを確認してください。

yum search openjdk

ちなみに、何回もリトライしましたが、ワールドの生成が何回やってもダメでした。
当然それ以降は確認できていないので、他のエラーが出てきてもちょっと分かりません。
ポートあたりがつまづきそうですけど。
※スペックを上げてまで立ち上げる意思はないです・・・。


以下、コマンドのメモです。

--グループ作成
groupadd minecraft

--ユーザ作成(パスワードは後で設定)
useradd -g minecraft minecraft

--ユーザ切り替え
su minecraft_username

--CD
/home/minecraft_username

--ディレクトリ作成
mkdir minecraft_server

--CD
cd minecraft_server/

--jarダウンロード
curl -LO https://papermc.io/api/v2/projects/paper/versions/1.17.1/builds/139/downloads/paper-1.17.1-139.jar

--起動(1回目はeula.txtの許諾が必要)
java -Xmx1024M -Xms1024M -jar paper-1.17.1-139.jar

サーバーのメモリは512MBだけど、1024MBでも動きました。
OutObMemoryにはなりませんでしたので、実質1024MBでは動いていなかったようです。
まぁそりゃそうか。

長く誰かと遊ぶなら専用サーバーを契約してもいいですね。

2021年07月25日 近況

オリンピック

世間はコロナで大変ですがオリンピックが始まりましたね。
テレビ欄にたくさん中継が出てました。
正直あまり賛成派ではありませんでしたが、せっかくやるなら楽しんでほしいですね!

ログイン失敗

このWordPressを入れているサーバーにはSSH接続でTeraTermからログインできるようにしていたんですけど、一昨日、ログインできなくなってました。
パスフレーズも変えた覚えがないし、ファイルも同じなんだけど・・・?
まぁ結論から言うとExcelのセルをコピーして貼り付けていたので、
改行文字がパスフレーズに含まれちゃってたんですよね。
ひさびさにログインしたから忘れてました!

お仕事

1年半くらいテレワークです。
電車に乗らなくていいって最高ですね。
来週は離任手続きで久々の出社があるので、ちょっと面倒です。

報酬はしばらく今のままですかね。
でも残業もあまりなく、ほどほどの報酬もいただけてテレワークなので、
今くらいがちょうどいいのかもしれません。

あとは性能改善系を少しずつ進めていて、PLAN_HASH_VALUEとか、
実行計画の見方とかなんとなく分かってきました。

dTV

dTVに加入。
「デッドプール」とか「ワカコ酒」とか観ました。
ワカコ酒とか孤独のグルメみたいなのが好きなのかも。
「おいしい給食」の3話はぜひ見てほしいので、リクエストしておきました笑

要件定義

要件定義でデザインとJavaScriptは専用部隊で作ることになっているんですけど、
出てくる成果物の品質がイマイチなことが多々あり。
やっぱり要件定義の時に「どの項目がどんな属性でどんな動き方をするのか」を共有する必要がある。
フォーマットに追加したので、次からはもうちょっと品質が上がればいいな。

ゲーム

モンハンは最近やってないかも。
Apexをやってることが多くなりました。
普通に面白いけれど、操作にちょこっとストレスを感じるので。
まぁでもカンストと勲章集めはやりたいし、
これからもアップデートはあるので期待してます。

テレビ

今期の中で個人的に面白いかも?と思ってる番組です。
・迷宮ブラックカンパニー
・RE-MAIN
・ピーチボーイリバーサイド
・孤独のグルメSeason9
・ひねくれ女のボッチ飯

料理

ナスを揚げ焼きして、めんつゆ、唐辛子、酢、ゴマ油を入れた出汁に漬けるとうまい。
酢が入ってるのである程度は日持ちするのでは。
できれば一度、火を通した方がベターと思われます。
ナス、ホウレンソウ、オクラとかを入れておけば副菜によさげ。

この前、ニラ玉を作ったんですけど、うまくできました。
・卵にちょっと出汁を入れる。
・ニラは2cm幅くらい。
・蓋をして蒸し焼きにする。
・ウェイパーを水溶き片栗粉でトロミつけて餡にする。

酢豚を作ったとき、消費期限前だったせいかちょっと豚が臭かったのと
下味をつけてなかったのでイマイチでした。
ちゃんと下処理をした方が絶対おいしかったのに・・・!

株主優待

オリックスのふるさと優待が届きました。
信州のハムにしたので、ウィンナー3パック、ハム2パックでおいしそうです。
ライザップも株を持ってるんですけど、
めぼしい商品は品切れになってたので使えないという・・・。