java

JUnitテストからtestcontainersで起動したDockerコンテナへの接続情報を環境変数で指定する

目的 未公開記事の発掘 これ少し役に立った記憶がある testcontainersで起動したRDBの接続情報を起動時に調整するなどした 前提 Java (Kotlin) プロジェクト ビルドツールは Gradle テストコードで testcontainers-java を使ってる 課題 利用する Docker は…

Java プロジェクトのソースコードの静的解析と構文チェック

目的 未公開記事の発掘 過去に導入されて、どうしてそうなってるか誰も知らない場合がよくあるやつだった 前提 静的解析って何 ソフトウェアの性質を区分値や数値で表現する手法 凝集度みたいな抽象的なメトリクス パッケージ数とかクラス数みたいな具体的な…

SonarQube の Java Rule S2229 を検証する

目的 未公開記事の発掘 3回くらい「動かないんですけど」と相談されたから機械的にチェックしたくて調べてたやつらしい あるメソッドから同じクラスのメソッドを呼び出すとき、 @Transactional の propagation 属性に指定した値に間違った組み合わせがあると…

MavenやGradleの依存ライブラリ解決にかかる時間を少し短縮できるかもしれない

目的 未公開記事の発掘 ニッチな話題だった 2015年からGCSにMaven Centralのコピーを公開するようになったそうです。知らなかった。 どれくらい違いが出るのか検証してみる。 検証 対象のホストは以下。 Maven Central(repo.apache.maven.org) Maven Central…

代表値を固定する代わりに指定した範囲から確率的に取り出したサンプルを確かめる

目的 未公開記事の発掘 製品コードの特性をテストが知っているのは役割分担を間違えてるような気がする 値域や事後条件をアノテーションで書けるといいのにな jlink/jqwik の利用例を紹介します github.com/jlink/jqwik ユーザーガイド Java でプロパティベ…

Get Started With JHipster6

目的 未公開記事の発掘 JHipsterの現行バージョンはv7.9.3です Release Notes 少なくとも2年以上前に書いていたらしい 目的 Get Started With JHipster6 で JHipster に入門します 説明書きを解釈してメモします 作られたソースコード JHipster is 何 Angula…

コードレビューでありそうなやりとり

この画像はBackground Image Generatorで生成したものです オンライン会議用の背景画像を生成するやつを作った - hitode909の日記 この文章の目的 放置していたテキストを発掘してるだけ 具体的なことは何も覚えてない たぶん他の人がコードレビューしている…

Javaアプリケーションのコンテナに割り当てたCPUリソースの影響

結論:垂直方向(CPUコア数の増減)より、水平方向(コンテナ数の増減)で検討するほうが有意義だと思う TL;DR PostgreSQLへ接続するWeb API(Spring Bootアプリケーション)のOCIイメージを、CPUコア数を指定して実行したとき、スループットやレイテンシに…

QuarkusのSpring Integrationとネイティブ実行可能ファイル作成とコンテナイメージ作成を実験

QuarkusのSpringインテグレーション機能 プロジェクトの生成 ネイティブ実行可能ファイルの作成 コンテナイメージの作成 Javaアプリケーションとしてコンテナイメージを作成 ネイティブ実行可能ファイルからコンテナイメージを作成 QuarkusプロジェクトにSpr…

Spring Native(ベータ版)が公開されたので実験してみた

目標 環境 [OK] Getting Startedで動作を確認 [NG] samplesの何かで動作を確認 [OK] samplesの何かで動作を確認 準備 実験 [OK] Spring Initializrでプロジェクトを作って動作を確認 参考リンク 目標 Getting Startedで動作を確認 samplesの何かで動作を確認…

Javaプロジェクトのビルドツール、Gradleにするか、Mavenにするか

最近になって突然理解した。 選択するときは、柔軟性とAPIの安定性のトレードオフを考えないといけない。 総合評価 「成果物のビルド」を改善する意思と時間の有無に応じて選択するとよさそう。 消極的な姿勢なら Maven を、前向きな姿勢なら Gradle を採用…

testcontainers のための Docker への接続情報を環境変数で指定する

前提 Java プロジェクト ビルドツールは Gradle テストコードで testcontainers-java を使ってる 課題 利用する Docker は環境変数で制御したい なるべく既存の環境変数は変更したくない 解決方法 環境変数をいい感じに解決するため dotenv-gradle を利用す…

JPA のエンティティクラスに必要なデフォルトコンストラクタは直接記述する

JPA のエンティティクラスにデフォルトコンストラクタとして Lombok の @NoArgsConstructorを利用すると開発の邪魔になる問題が発生するので使わないほうがいい。 @Entity @Table(name = "staff") @Data @AllArgsConstructor @NoArgsConstructor(onConstruct…

Oracle Developers Live Java 視聴ログ

developer.oracle.com Java 15 のリリースに合わせて開催されたオンラインイベントのセッション動画が公開されたので面白かったところのメモ。 Java Language Futures—Mid 2020 Edition (35:32) ZGC: The Next Generation Low-Latency Garbage Collector (39…

testcontainers のための Docker への接続情報を環境変数で指定する

前提 Java (Kotlin) プロジェクト ビルドツールは Gradle テストコードで testcontainers-java を使ってる 課題 利用する Docker は環境変数で制御したい なるべく既存の環境変数は変更したくない 解決方法 環境変数をいい感じに解決するため dotenv-gradle …

Public Cloud Provider ごとの Java ランタイム

ちょっと気になったのでリストアップした。 OCI (Oracle Cloud Infrastructure) は Oracle JDK を無償で(!)利用できる。 blogs.oracle.com AWS (Amazon Web Service) は Amazon Corret (OpenJDK) を利用できる。 aws.amazon.com Microsoft Azure は Azul Zul…

Java で1つのソースコードファイルに複数のクラスを記述する

実験で書いてみましたが業務で利用するといろんな人がびっくりするのでやめましょう テストコードならありなのかなぁ 前書き的なやつ 理屈 実践 前書き的なやつ よくライブコーディングで見かけるやつが気になったので整理しました。 Java でも 1 つのソース…

Spring Framework のアプリケーションを停止したときの振る舞い

Spring Framework で実装したアプリケーションを停止するときに何が起きているのか整理しました。 具体的な停止方法については Shutdown a Spring Boot Application(Baeldung) にまとまっているので参照してください。 要点 Spring Framework のアプリケーシ…

Java プロジェクトの依存ライブラリの脆弱性を OWASP Dependency Check でチェックする

用語 準備 dependency-check cli の使用例 いけてないところ スキャン対象が pom.xml や build.gradle ではなく jar や war Maven プラグイン の使用例 Gradle プラグイン の使用例 用語 OWASP The Open Waeb Application Security Project、という非営利団…

debian:stable-slim に adoptopenjdk-8-hotspot をインストールすると postinst スクリプトが失敗する

そもそもの話 AdoptOpenJDK は各種OS(ディストリビューション)向けのインストーラーを提供してる。 medium.com Debian や Ubuntu のように APT を使ってるなら adoptopenjdk-8-hotspot みたいなパッケージとして導入できる。 できなかった話とできるようにし…

「Java 13のDynamic CDSで想像以上に起動速度が速くなった」を Docker コンテナで試してみた

nowokay.hatenablog.com気になったので自分でも計測してみることにしました。 あと、マルチステージビルドでうまく分離できそうだったので試してみました。 java dynaimc cds in container 工夫したつもりなのは次のような点。 3ステージで構成 Micronaut の…

Incorrect Core Java Interview Answers を勝手に日本語化

Incorrect Core Java Interview Answers | Java Code Geeks - 2018が面白かったので勝手に日本語にしてみました。 しかも途中で面倒になって止めた。正確に記憶してるかどうかってよりも、嘘情報を鵜呑みにしないことのほうが大事だと思います。 サブルーチ…

JDBCAppender で h2(embedded) に書き込み

こんな設定でいけた。 が、テーブル作っとかないといかんのが面倒。 初期処理とかで作るようにすればいいんだろうな。 log4j.appender.logdb=org.apache.log4j.jdbc.JDBCAppender log4j.appender.logdb.driver=org.h2.Driver log4j.appender.logdb.URL=jdbc:…

h2 の WebConsole 用の接続を設定ファイルで

H2 Database Engine NetBeans が 8082 を使ってるようなので困ってたら見つけた。 ドキュメントからは見つけられんかったのが残念。 ファイル名 .h2.server.properties プロパティ webPort 数値 ポート番号 webAllowOthers 真偽値 他のホストからの接続の可…

配列型のほうが罪深い

http://www.infoq.com/jp/news/2009/06/java-without-primitives

javanews の feed はなんとかならないか

http://javanews.jp/javanews-utf8.rdfもうちょっと頑張ってほしい... <item> <title> [ BROWSER ] Firefox.next新機能 about:me </title> <link> http://journal.mycom.co.jp/news/2009/06/16/039/index.html </link> </item>

swt を内包した実行可能な jar てどうやって作るの ?

あまり考えずに assembly:assembly したら駄目だった。 swt の jar の中にも MANIFEST があるから、なんかかぶっちゃっているのかな ?

シェルスクリプトから log4j のロギングを使いたかった

結局途中で挫折して変なものができた ...ファイル経由が楽なのかなーと思ったけど、stream.read が eof になるので駄目。 名前付きパイプならーとか思ったけど、これも同じく駄目。 unixドメインソケットならー、駄目だと思ってたけどやっぱり駄目。 (そもそ…

Web アプリ開発用のあれ

とりあえず Tomcat を使うことにして、IDE から利用するにはどれがいいかなと。結論ありきのメモだけど、とりあえず書いておこう。 WTP ? TomcatPlugin ? WebLauncher ? WTP WTP は一番 Eclipse との一体感があるけど、いわゆるホットデプロイの振る舞いがち…

実績があるからといって盲目的にフレームワークを決めるのはどうかと

最近の技術記事に 1.2 ベースの struts の話題が出てたのがきっかけです。Webアプリケーションの世界だけかもしれない。 いつまでも struts に縛られてるのがどうにも気持ち悪い。ほんとに真面目に品質、生産性を考えるなら、実績だけを見て選ぶのは危険だと…