2024-01-01から1年間の記事一覧

1年のアウトプットを振り返る

6年目もやっていきます。 wrongwrong163377.hatenablog.com 雑感 今年は引越しを始め土日が潰れる系のイベントが多く、やりたい開発があまりできなかった感が強いです。 また、その間にメンテナンス作業等溜めてしまったので、来年もしばらくはその返済に追…

【Gradle】ビルドがハングして二進も三進も行かない場合、Javaプロセスをkillすれば回復するかも【Kotlin】

TL;DR Javaを利用していそうなアプリケーション(e.g. IDE)を全て閉じた上で、なお生きているJavaプロセスがある場合、それをkillすれば回復する可能性が有ります。 自分はmac環境にて、アクティビティモニタからプロセスを目grep・終了とすることで対処し…

JIS Macでキーボード認識がおかしくなり、ログイン画面でパスワードが正常に入力できない状況への対処

TL;DR 自分の環境では、入力ソースにABCを選ぶことで解決できました(英字と出ている場合不具合が起きている)。 また、以前起きた際はUS配列の外部キーボードなら正常入力できました。 自分は試せていませんが、アクセシビリティキーボード(ソフトウェアキ…

Spring WebFlux/R2DBC/jOOQ/PostgreSQL/Kotlin Coroutines環境でselectクエリがハングする時の個人的対処法3選

Spring WebFlux/R2DBC/jOOQ/PostgreSQL/Kotlin Coroutines環境で、不意にselectクエリがハングする状況が何度か有りました。 関連する内容が多すぎて原因は解析し切れていませんが、そのような状況に対して見出した3つの対処法をまとめます。 何かより良い対…

【Spring WebFlux】jOOQで組み立てたクエリをConnectionFactoryへ直に発行する【R2DBC】

jOOQで組み立てたクエリをConnectionFactoryへ直発行する仕組みを作ったのでまとめます。 なお、これは事情が有って作ったものであり、本来一切推奨できないコードであることはご承知おき下さい。 コード全体は以下の通りです。 基本的にはSelectクエリでの…

【Gradle】finalizedBy("formatKotlin")がTask 'formatKotlinMain' uses this output of task...で失敗する場合、finalizedBy("formatKotlinMain")にすると成功するかも

状況 jOOQのコード生成後にフォーマッティングするため、kotlinterを用いfinalizedBy("formatKotlin")としていたプロジェクトで、nu.studer.jooqからorg.jooq.jooq-codegen-gradleに移行する際、以下のようなエラーが出るようになりました(※編集しているた…

KotlinリポジトリのcodegenTarget8Jvm8Testを実行するとToolProvider.getSystemJavaCompilerがnullを返して一部が失敗する問題への対処

Project StructureのSDKに指定しているJDKバージョンが違うのにcodegenTarget8Jvm8Testを使っていたのがダメだったらしい 指定されているJava 11に合わせ、codegenTarget8Jvm11Testを使うよう変更したら完全に通るようになった 試した限り、codegenTarget8Jv…

【jOOQ】getSqlでプリペアドステートメントが$1, $2, ...形式のクエリを取得する【PostgreSQL】

文脈 jOOQでは、getSqlでパラメータが埋め込まれる前のクエリ文字列を得られます。 このクエリについて、デフォルトでは、select * from table where id = ?というように、プリペアドステートメントが?で表現されています。 一方PostgreSQLでは、select * fr…

【MockK】mock/spyされたオブジェクトを大量に呼び出すと異常な負荷・OOMが生じた【Kotlin】

状況 パターン網羅のために大量の呼び出しを行うようなテストを追加した所、java.lang.OutOfMemoryErrorでテストが失敗する状況が生じました。 外形的な挙動としては、テスト関数が1つ終わってもメモリが解放されず、テストが進むにつれメモリ使用量も線形に…

【Java】Java17以降で整数の完全な16進数文字列を得たいならHexFormatがおすすめ

Long.toStringは上位ビットが0だった場合に削れた文字列を返してしまいます。 完全な16進数表記を得るにはString.format("%016x", number)を利用する例がよく引っかかりますが、内部処理を見ると結構重そうなことをしています。 一方、Java 17からは、このよ…

【jOOQ】UUIDを大量指定する際の省メモリ化【PostgreSQL】

状況 大量のUUIDを指定したin句を発行する際に、メモリ消費量が問題になりました。 見たところ、jOOQではUUID1件当たりcast('b81b8735-6ac8-4b0b-a969-658e70425616' as uuid)みたいな形のクエリになってしまうことが原因のようでした。 対処 応急処置として…

【Java】AWS SDK2で、S3からファイルへgetObjectする際、デフォルトでは失敗時にDL先ファイルが削除される

AsyncClientの方で調査していますが、通常の方も同じ内容が有るはずです。 特にコンフィグ無しでAsyncResponseTransformer.toFileを呼び出した場合、FileTransformerConfigurationはdefaultCreateNewで設定されます。 aws-sdk-java-v2/core/sdk-core/src/mai…

【Kotlin】kotlin-reflectを弄るためのメモ

github.com greadle.propertiesを弄る ビルド・テストで全論理コア使われると他アプリの動作が重くなるので、kotlin.test.junit5.maxParallelForksを全論理コア数 - 最低限確保したい論理コア数にしていいかも。 以前はJDK7以前を無視するオプションも有った…

OpenAPI Generatorで、何でも入れてOKのプロパティの値に型付け(Map<String, String>とかに)する方法

以下のように、additionalPropertiesのtypeを指定すると、値の型を変えられます。 例ではstringを指定しているので、Kotlinで生成した場合Map<String, String>になります。 type: object additionalProperties: type: string type: integerにすればMap<String, Int>になりますし、type: st</string,></string,>…