アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

WSL2でssh-add

WSL

Could not open a connection to your authentication agent. 以下を実行してから。 eval "$(ssh-agent -s)" ssh-addをする。 ssh-add ~/.ssh/id_rsa

Elastic Beanstalkで使っているロードバランサを作り直してみる

AWS

EC2のロードバランサから当該ロードバランサを削除済み。 作り直す 名前は適当に設定。 VPCは元からデフォルトだったので特に設定はいじらず。 セキュリティーグループは前に付いていたものと同じものを付ける。リスナも同様。 注意点 ここのドメインは変わ…

NginxでAWS VPC内で通信するためにDNSを指定する

AWS

構成 internalなドメインを使ってVPC内で通信を行います。 フォワーダを一回通してから後段のアプリケーションに通信を流します。 (ALB -> Application(Nginx)) -> (ALB -> Application) 設定 所属しているVPCのIPを調べます。ここでは 172.31.0.0 です。 こ…

Elastic BeanstalkでECRを使えるようにする

AWS

既にECRにpushはされている前提。 ポリシーを追加する Elastic BeanstalkのIAMインスタンスプロフィールのIAMにポリシーを追加します。 AmazonEC2ContainerRegistryReadOnly ポリシーをアタッチします。

Elastic BeanstalkサービスロールとIAM インスタンスプロフィールの違い

AWS

デフォルトでは以下のようになっていました。 サービスロール: aws-elasticbeanstalk-service-role IAM インスタンスプロフィール: aws-elasticbeanstalk-ec2-role サービスロール https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts-r…

Elastic Beanstalkで作った環境にIPでアクセス制限を入れる

AWS

開発用でアクセスを制限したいのでやります。 セキュリテーグループを探す Elastic BeansTalkの以下を確認します。 設定 -> インスタンス -> インスタンスセキュリティグループ そのセキュリティーグループをEC2から探します。 インバウンドルールのソースに…

WSL2のDockerトラブルシューティング

環境 Ubuntu ECRにログインできない場合 AWSのECRの説明どおりにコマンドを実行すると、docker loginする時に問題が発生します。 time="2021-10-09T00:26:47+09:00" level=error msg="failed to create file hook: while creating logrus local file hook: u…

xargsで一つづつコマンドを実行する

複数行の出力を加工してコマンドに適用します。 タグが付いていないイメージを削除 xargs -L 1 docker images | grep "<none>" | awk '{ print $3 }' | xargs -L 1 docker rmi</none>

awk備忘録

使用文字列 docker images で出された文字列 REPOSITORY TAG IMAGE ID CREATED SIZE name latest abcdefghijkl About a minute ago 615MB <none> <none> abcdefghijkl 3 minutes ago 615MB <none> <none> abcdefghijkl 5 minutes ago 615MB 使用 docker images | awk '{ print $3 }' </none></none></none></none>…

jq備忘録

オブジェクトから値を取得する jq '.[]' echo '{ "name": "value", "name2": "value2" }' | jq '.[]' "value" "value2" echo '{ "array": [ {"name": "value", "name2": "value2"} ] }' | jq '.[]' [ { "name": "value", "name2": "value2" } ] オブジェクト…

SupervisorJobは基本必要が無いのではないかと思っている

はじめに 以下のコードではtry-catch構文は使用せず、runCatchingを使用しています。文章の中で出てくるrunCatchingはtry-catchと置き換えてもらって大丈夫です。 SupervisorJobを使用しないコード 以下のコードは特にエラーもなく動きます。 withContext im…

targetSdkVersionをアップデートする前に先にcompileSdkVersionだけ上げませんか

Target 仕事でアプリ開発をしている人 QAの工数がまだ取れないのでまだtargetSdkVersionが上げられない compileSdkVersionを上げよう 詳しくは全てここを読めばいいです。 https://medium.com/androiddevelopers/picking-your-compilesdkversion-minsdkversi…

【Jetpack Compose】テキストのベースラインとその他の要素の下部を合わせる

テキストのベースラインとアイコン等を下部に揃えます。 ベースラインではなくて、ただ単純に要素の下部を揃えたい場合は Row(verticalAlignment = Alignment.Bottom) で十分です。 テキストのベースラインを揃える まずテキストのベースラインを揃えるには …

【Jetpack Compose】横幅に応じてLayoutをScaleさせる

Usecase デザイン上、1行で表示させたいが、デバイスによっては横幅に収まらない。しかし改行をさせたくないものがあったので作りました。 上の様な感じではなく、下のように表示したい場合に使用します。 両方とも文字サイズ30spを使用し、表示できるデバイ…

【Jetpack Compose】@ComposableをInner関数で使用しないほうが良い

env composeOptions { kotlinCompilerVersion "1.5.10" kotlinCompilerExtensionVersion "1.0.0-rc01" } code 2つ目のViewを押すと called が2回呼ばれています。 TestViewをRoot関数の外に出すと1回だけになりました。 何故か更新の無いはずのRowの最初のVi…

【差分計算の仕組み】@Composableの引数にListを取ると差分計算がされない。 【Stable, Immutable】

このような動的に変更されるtimeがあります。 class TagViewModel(private val coroutineScope: CoroutineScope) { val time: MutableStateFlow<String> = MutableStateFlow("") init { coroutineScope.launch(Dispatchers.Default) { while (isActive) { time.value</string>…

【Android】Jetpack Composeの画像読み込みと加工のバットプラクティス

※追記 デバッグビルドと本番ビルド、端末ごとにパフォーマンスが大きく異る事がわかったので、パフォーマンスが悪いのはそれのせいかもしれません。(特に自分はPixel5でパフォーマンスが悪かったです。Pixel3は問題なかったですが。) 前提 rc01が出ています…

IntelliJ IDEAでアップデートしたらクリックが効かなくなった場合

クリックしても何も反応しない場合、IntelliJ IDEAを動かしているJavaのバージョン(Java Runtime)を変更する事で直ることがあります。 Shiftを2回押して検索パネルを開いて choose runtime とか打ちます。そこからバージョンを戻したり、最新にしたりを試し…

lightweightとheavweightとは【Java AWT】

SwingやAWTを使用する時にWindowsのAPIを叩きたい時にネイティブウィンドウハンドル(HWND)を取得したい場合があります。 heavweightはネイティブスクリーンリソースに紐付けられている為、HWNDが取得できますが、lightweightはネイティブに紐付けられていな…

Jetpack Compose Desktop 0.3->0.4のマイグレーション

自分の観測したものだけですが、記述します。 バージョン from: 0.3.0-build152 to: 0.4.0-build168 build.gradle.kts 0.3.0 compose.desktop { application { mainClass = "MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Ms…

Enumを扱う【kotlinx.serialization】

Enumもカスタムタイプのパースと同じく、 Serializer を作成しなければなりません。Jacksonは @JsonCreator と @JsonValue だけでできるので、少し面倒に感じましたが、メリットはあります。 Stringの値でパースする abstract なシリアライザを作成しました…

Apollo KotlinでCustomTypeを使用する

GitHub APIで使用していたら、一部がAnyになってしまいました。 以下のようなファイルが生成されていました。 これを2つの工程で好きな型に変換します。 // AUTO-GENERATED FILE. DO NOT MODIFY. // // This class was automatically generated by Apollo Gr…

テキストとrippleのテーマを上書きする【Jetpack Compose(Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 本文 PopupMenuを作成するのに黒くしたいなということで行いました。 CompositionLocalProvider を使用して上書きします。 CompositionLo…

フレームなしウィンドウをダブルクリックで全画面化する【Jetpack Compose Desktop】

バージョン情報 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 本文 フレームなしウィンドウを作成してウィンドウを移動させるまで【Jetpack Compose Desktop】 の続きになります。 https://matsudampe…

フレームなしウィンドウを作成してウィンドウを移動させるまで【Jetpack Compose Desktop】

バージョン この記事は古いです、Composeのバージョン 1.1.x 以降のコードはこちら。 https://matsudamper.hatenablog.com/entry/2022/06/13/032259 今回紹介するバージョン plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version …

Listを作成する【Jetpack Compose (Desktop)】

バージョン情報 0.3.0 で LazyColumnFor が無くなって、LazyColumnに統合されたようなので、そちらを使用します。 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 古い情報はこちら。 https://matsudamp…

ネットワークからの画像読み込み【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 以下のようにImageBitmapに変換して返す関数を作成しました。ついでにキャッシュもしてみました。 object ImageUtil { private val cache…

@ComposableのライフサイクルとCoroutine【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 注釈 0.3.0-build150 CompositionLifecycleObserver は RememberObserver に名前が変わりました。 ライフサイクル ライフサイクルは以下…

Listを作成する(deprecate:0.2.0)【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 0.3.0 で LazyColumnFor が無くなって、LazyColumnに統合されたようなので、最新情報はコチラを見てください。 https://matsudamper.hate…

UIを組むためのDSLとデータの持ち方の考え方【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 考え方 普通のKotlinの書き方と全く異なります。Kotlin-Nativeで freeze というものがあるのと同じくらいには違います。Kotlin-NativeやK…