java
状況 Java 21化後、Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK.という警告が出るようになりました。 github.com 当該プロジェクトではMockitoを利用していなかったため…
TL;DR 壊れていたのはIntellijのプロジェクト設定だった(元から壊れているものが顕在化した) 基本的にProject StructureからJDKを設定すれば直るはずだが、自分の場合何故か直らなかった 諸事情から.idea配下のファイルを弄って直した プロジェクトをpull…
TL;DR 「MethodHandle Aからの戻り値 -> MethodHandle Bの引数」という形の合成は、MethodHandles.filterReturnValueを使えば実現できる docs.oracle.com やること 「Method Aを呼び出し、その結果をMethod Bに渡す」というような場合、従来のリフレクション…
TL;DR Javaを利用していそうなアプリケーション(e.g. IDE)を全て閉じた上で、なお生きているJavaプロセスがある場合、それをkillすれば回復する可能性が有ります。 自分はmac環境にて、アクティビティモニタからプロセスを目grep・終了とすることで対処し…
Long.toStringは上位ビットが0だった場合に削れた文字列を返してしまいます。 完全な16進数表記を得るにはString.format("%016x", number)を利用する例がよく引っかかりますが、内部処理を見ると結構重そうなことをしています。 一方、Java 17からは、このよ…
AsyncClientの方で調査していますが、通常の方も同じ内容が有るはずです。 特にコンフィグ無しでAsyncResponseTransformer.toFileを呼び出した場合、FileTransformerConfigurationはdefaultCreateNewで設定されます。 aws-sdk-java-v2/core/sdk-core/src/mai…
自分が取り組んでいるKotlin製OSSプロジェクトにて、Gradle 7.6.2 -> Gradle 8.3の移行をやった際にハマったことのメモです。 github.com きっかけ このプロジェクトには、GitHub ActionsでKotlin x Javaのバージョンを組み合わせ毎の挙動を確認するグリッド…
TL;DR ローカル関数を利用するとパフォーマンスが低下する このため、パフォーマンスが重要な場面ではローカル関数を利用すべきでない 文脈 日頃からお世話になっているintellij-rainbow-bracketsのコードを読んでいた所、以下のコードを見つけました。 gith…
記事執筆時点で、FlowにはgroupByが実装されていません。 kotlin.github.io 一方、FluxにはgroupByが実装されています。 projectreactor.io (kotlinx-coroutines-reactiveが入っているような環境では)FlowとFluxは相互変換できるため、検討の余地が有ると…
TL;DR Java 16でAssertJのassertThatを使ってOffsetDateTime同士を比較するとエラーになる場合がある Mockkに関しては直接の原因じゃない? 原因はJDK内部のカプセル化の強化 Java 11に変えるか、オプションを指定することで解決できる 本文 冒頭に書いたよ…
状況 JUnit5のParameterizedTestで、MethodSourceが空Streamを返した場合、以下のようなエラーになります。 Configuration error: You must configure at least one set of arguments for this @ParameterizedTest org.junit.platform.commons.PreconditionV…
TL;DR ローカルのJavaバージョンを16から1.8に変更することで成功するようになった 本文 当該のgradlewはバージョン6.xで生成されたもので、これはJava 16には対応していません。 gradlewの再生成ができない状況だったため、ローカルのJavaバージョンを1.8に…
TL;DR DB跨ぎの外部キーが絡む状態でDatabseSetupすると、外部キーの元になるinsertがコミットされずにデッドロックが発生する エラーメッセージはCaused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded;…
NamedParameterJdbcTemplateに対して発行するクエリで、JSON配列をパラメータとして設定する所で詰まったので、備忘用のメモです。 状況 以下のような処理を行うクエリを作成していました。 select JSON_OVERLAPS(/* テーブルから取得したJSON配列 */, /* パ…
TL;DR Orikaの依存をjmhImplementationではなくimplementationで定義した所解決しました。 Orikaに限らず、ライブラリによってはjmhImplementationだと上手く動かないようです。 問題 jmh-gradle-pluginでOrika 1.5.4を利用したベンチマークを作成していた所…
TL;DR JMHのベンチマークスコアが安定しなかった (正確に特定はしていないが)全体の実行に5時間かかる内容であるため、途中でバックグラウンド処理が走った結果が原因と推定 start /affinity ${マスク} ${呼び出すプログラムと引数}とすることで、ベンチマ…
マサカリ避け 本読んでないです。 経験則です。 DDDチョットデキル人になりたいです。 前書き 「大量の相関チェック(しかもDBアクセスなど層をまたぐ処理や複数オブジェクト間の相関チェックを含む)とその後の登録が発生する状況」を想定して書きます。 言…
やりたかったこと 以下のようにinterfaceが2つあるとき、この2つのinterfaceを継承したinterfaceを作ろうとしました。 public interface Interface1 { String hoge(); } public interface Interface2 { int fuga(); } やろうとしたこと interfaceなので、以…
内部エラー周りの設計について自分の経験から得た知見をまとめます(なのでセオリーとかアンチパターンとか有れば教えていただけるとありがたいです)。 内部エラーとは基本的に自分で書いてThrowするようなエラーを想定しています。 エラーハンドリングに関…
やりたかったこと vuejs-datepickerでPOSTした日時から、サーバーサイドで日付を取得する 問題の概要 vuejs-datepickerはタイムゾーンまで含めてデータを出力する Jacksonはフォーマット設定をしなければ受け取った日時をGMT基準(=日本時間-9時間)に変換し…
Java8でプロジェクトをやっていて後悔していることを5点挙げます。 上から後悔している順です。 nullを返すな、Optionalを使え 文字通りなんですが、null が絡むと何が返ってくるのか分からない状態になるのでOptional使った方がいいです。 特にnullを返しが…
状況 下記の記事を参考に環境変数を設定しても設定が反映されず、javaコマンドが通りませんでした。 www.atmarkit.co.jp コンソールには以下のようなエラーが出ていました。 PS C:\Users\wrongwrong> java Error opening registry key 'Software\JavaSoft\Ja…
以下のコードは、Listを内容のクラスの名前の配列にして返すという内容です。 List内の型に関係なく実行できるコードであるため、一見正しいように見えますが、このコードはコンパイルできません。 String[] toNameArray(List list) { return list.stream().…
以下のようなエラーに対処します。 org.modelmapper.ConfigurationException: ModelMapper configuration errors: 1) The destination property [セッター名] matches multiple source property hierarchies: 対処 ModelMapper#getConfiguration().setAmbigu…
概要はSSIAです。 ここではEntityをデータベースのテーブルそのままのPOJOとします。 原因 ここではis_active_sampleという名前のカラムに対して、isActiveSampleというBoolean/booleanのフィールドを持つEntityを挿入する状況をサンプルとして書きます。Lom…
BeanPropertySqlParameterSourceの配列を作ってSimpleJdbcInsert#executeBatchに入れるとできます。 //配列を作る関数 private BeanPropertySqlParameterSource[] makeParamArray(List entities){ BeanPropertySqlParameterSource[] sources = new BeanPrope…
wrongwrong163377.hatenablog.com 前回の記事がトラブっていた原因が判明したので書き直します。 原因 NOT NULLなEnumカラムに対して値を指定しない場合、com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column '[カラム名]'…
この記事に書いたやり方でも動きますが、より演繹的な方法が有ったのでこちらもどうぞ。wrongwrong163377.hatenablog.com 問題 SimpleJdbcInsertでInsert時に、DDLでNOT NULLとDEFAULTを設定したカラムについてMapSqlParameterSourceに値を指定しなかった場…
wrongwrong163377.hatenablog.com 今更ですが、↑の内容ならFunctionalInterface使った方が楽な場面も有るかな?と思ったので書きました。 使い方 全部まとめ これ以降で書く内容を全部まとめたクラスが以下です。 public class Main { @FunctionalInterface …
Intellij IDEAでWebSocketを使います。 やること やることは以下の通りです。 (Intellij IDEAでコンパイル・実行までできるようにする) Java EEを持ってきて配置する Application Serverを設定する 参考ページ ここから書く内容は以下のページと同様です。 j…