2022-11-01から1ヶ月間の記事一覧
GitHub Actionsからサービスアカウントを使ってCloud Runにデプロイを行なった時に次のようなエラーが発生した。 ERROR: (gcloud.run.deploy) PERMISSION_DENIED: Permission 'run.services.get' denied on resource このエラーの内容からgcloud.run.deploy…
テスト時にViewModelを初期化する処理を次のように書いた。 class LabelListViewModelTest { private val testScheduler = TestCoroutineScheduler() private val dispatcher = StandardTestDispatcher(testScheduler) private val repository = mockk<LabelRepository>(relax</labelrepository>…
DroidKaigi 2022のコードを眺めていると次のような記述にでくわした。 inline fun Modifier.ifTrue(value: Boolean, builder: Modifier.() -> Modifier): Modifier { val modifier = Modifier return then(if (value) modifier.builder() else modifier) } f…
.github/workflows/Build.yamlを作成して、リモートリポジトリにプッシュしようとしたらエラーが発生した。 ! refs/heads/ci-build-workflow:refs/heads/ci-build-workflow [remote rejected] (refusing to allow a Personal Access Token to create or upda…
NavigationBarのNavigationBarItemを何度もタップし、最後に一番左のNavigationBarItemを連打するとアプリがクラッシュする現象に遭遇した。 これがその時のエラーの抜粋。 java.util.NoSuchElementException: List contains no element matching the predic…
Cloud RunでKtorアプリを動かしていると、次のエラーログが表示された。 error: Failed to sign the provided bytes 色々調べたらCloud Storageに保管してある画像の署名付きURLの生成時に発生しているようだった。 serverfault.com stackoverflow.com なの…
Cloud RunにデプロイしようとしたKtor + Exposedのアプリケーションイメージが、Cloud SQLへ接続できないことが原因で何度もデプロイに失敗してしまった。解決までに数時間要してしまい、ネットを探してもExposedを使った時のCloud SQLへの接続方法を記した…
Androidアプリを開発していると直面するライセンス表示問題。 色々調べるとCookpadさんが公開しているプラグインにたどり着いた。だが、お察しのとおりすでにアーカイブされている。 github.com 代わりにおすすめされているのが、Googleが公開しているOSS Li…
次の様な画面遷移図のアプリを考えてみる。 今までは全ての遷移時に次の様なコードを実行していた。 fun navigate( destination: TnaNavigationDestination, route: String? = null, from: NavBackStackEntry? = navController.currentBackStackEntry ) { if…
Android Studioで、resディレクトリを右クリックして、New -> Android Resource Directoryを選択する。 Directory Nameにvalues-nightを入力して、OKをクリックする。 values-nightディレクトリが表示されない場合は、Projectビューに切り替える。 values-ni…
Androidアプリをコンパイルした後だったり、新しい画像をResource Managerに追加した後に、アプリで表示されていた画像がまったく異なる他の画像に置き換えられているケースが多々あった。 そろそろ対処しないとなーと思って色々調べていたら次のコメントを…
次の様なディレクトリの構成を考えてみる。 a_lot_of_settings a settings.json b settings.json c settings.json src main kotlin com takagimeow main.kt a_lot_of_settingsディレクトリの中にはaディレクトリとbディレクトリとcディレクトリが存在し、そ…
docker-composeでPostgreSQLコンテナを立ち上げる。docker-compose.ymlの内容は次のような感じで、Ktorプロジェクトのルートディレクトリに作成する。 version: "3.7" services: postgres: image: 'postgres:13' container_name: takagimeow-postgres restar…
PostgreSQLをデータベースと使用しているときに、一部のカラムをEnumとして表現したい。 そのためにはまず、Enumを型として定義する必要があるので作成してみる。これはテーブルの定義よりも前にやっておく。 こんな感じ。 class PGEnum<T : Enum<T>>(enumTypeName: Stri</t>…
Ktorでデータベースを使用したいので、com.takagimeow.infrastructure.database.daoにDatabaseFactoryを実装してみます。 package com.takagimeow.infrastructure.database.dao import com.takagimeow.infrastructure.database.models.Users import kotlinx.…
ディープリンクを開くには次の書式でコマンドを実行する。 adb shell am start -W -a android.intent.action.VIEW -d <ディープリンクのURI> <アプリのパッケージ名> 実際に入力するときは次の様な感じ。 adb shell am start -W -a android.intent.action.VI…
Androidでは、アプリのアイコンと通知用のアイコンは異なる。 特に異なる部分はカラーの部分で、通知用のアイコンには基本的に色をつけることはできない。 Android 5.0以降では通知機能が大幅に変更されたため、アイコンのカラーチャンネルがすべて無視され…