Satisfactoryの風景

2019年からコツコツやってるSatisfactory

全体像

位置的には、GRASS FIELDS (草原)の近くにある池?が2つ繋がっているエリアです。 地域住民の反対を無視してきれいな湖を埋め立てて建築を強行

MAP

全体風景
あのきれいな湖の面影すら残っていないくらい完璧に埋め立て工場 鉄、銅などから始まるすべての素材をこの工場で生産しているので超ツメツメ状態

生産設備①

1つの工場にすべての生産を突っ込んでるが流石に鉄系、銅系などによってエリア分け

鉄系のライン

地下1
地下2
工場全体が二重底構造で、汚いものはすべて床下に隠してしまえ発想 各生産ライン間の接続はすべて、床下に詰め込んで地上スッキリ中カオス

生産設備②

ここももとはきれいな湖で、もちろん埋め立て アルミの生産ラインはここ

アルミ系生産ライン

Updateが入って途中から水が必要!窒素が必要!とか言われて都度工事。

お家

お家には各種素材は生産物を保存する全手動の倉庫を完備 どこに何が入っているかわかりやすくてイイね!

倉庫

ブレーカー

工場の生産エリアごとに分電盤を設置して、エリア単位で供給停止ができるように。 なぜ? 停電になったときに復旧を簡単にするためですよ

ブレーカー

以上、とりあえずこんな感じでセンスないですが、Updateの度に増改築してマイルストーン達成していますが、そろそろこの工場では敷地的に厳しくなってきたなー

スクリーンショットの画像に枠線を付ける

ブログ記事書くために、スクショ取って載せる時になんか、締り?見栄えが良くないなーって思って画像の1pxの枠線を付けるんですよね

これを こういう風に

特に背景が白のときはスッキリ見えて個人的にこの一手間が好きです ただ、これいろいろやり方があり、ここ数年では、[Windows] + [Shift] + [S]によるスクリーンショットの枠線を自動で追加の機能が非常に便利でしたが、スクショ撮ったときにしか使えなかったのでちょい不便

C#使ってクリップボードから画像を取り出して、Bitmap作ってGraphicsで四角書いて~とかやってましたがいま時代、ブラウザでも簡単にできたんですよね 作ってみた、完全に個人の趣味

wakusentsuika.com

  • クリップボードやローカルの画像ファイルを読み取って任意の太さ、色の枠線を追加
  • JavaScriptですべて処理をするので、外部に画像を送信しない安心設計

WebView2を使ってブラウザごとにユーザプロファイルを作成する方法

FormのロードイベントなどWebViewが初期化されるタイミングで、下記の環境設定をいれることでプロファイルの保存先を自由に変更することが可能です。
WebView2のインスタンスごとにプロファイルの保存先を設定すれば各WebView2で異なるプロファイルを保持できるため擬似的にプロファイルを保持しないブラウザを作成することが可能になります。

 var environment = await Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(
     null,
     ".\profile"
 );

 await webView.EnsureCoreWebView2Async(environment);

AWSSDK.RDS/スナップショット作成

CLIではなく、あえてC#で作ってみる

CLIやWebコンソールから行える、RDSのスナップショットの作成をC#から行います。

パッケージ

www.nuget.org

前提

Visual Studio 2019
.NET Framework 4.7.2
Consoleアプリケーション
AWSSDK.RDS 3.5.8

ソースコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Amazon;
using Amazon.RDS;
using Amazon.RDS.Model;

namespace AWS_SDK_TEST
{
    class Program
    {
        static void Main(string[] args)
        {
            string awsAccessKeyId = "********************";
            string awsSecretAccessKey = "****************************************";
            RegionEndpoint region = RegionEndpoint.APNortheast1;

            AmazonRDSClient rdsClient = new AmazonRDSClient(awsAccessKeyId, awsSecretAccessKey, region);

            CreateDBSnapshotRequest request = new CreateDBSnapshotRequest()
            {
                DBInstanceIdentifier = "{インスタンスID}"
                , DBSnapshotIdentifier = "{スナップショット名}"
            };

            CreateDBSnapshotResponse responce = rdsClient.CreateDBSnapshot(request);

            if (responce.HttpStatusCode == System.Net.HttpStatusCode.OK)
            {
                Console.WriteLine("スナップショット作成開始");
                Console.WriteLine("DBSnapshot.Status:" + responce.DBSnapshot.Status);
            }
            else
            {
                Console.WriteLine("スナップショット作成失敗");
            }
        }
    }
}

解説

CreateDBSnapshotRequest とCreateDBSnapshot関数を使って作成を行います。 CLIやWebコンソールと同様に作成といっても作成を開始するだけで、作成完了まで待機しません。 作成後のステータスは、「responce.DBSnapshot.Status」で確認が可能ですが、型がStringのためステータスの判定を行うのが厄介です。

SDKのリファレンスには、定数の一覧が記載されていませんでしたが、RDSのリファレンスのDB instance statusの英語表記が一致していると思います。

DB instance status - Amazon Relational Database Service

注意事項

認証情報をソースコードに、サンプルを簡潔にするためにアクセスキーとシークレットキーを直接指定していますが、実際に開発を行う場合には、プロファイルの利用が推奨されています。 AWS 認証情報の設定 - AWS SDK for .NET(バージョン 3)