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

jlink によるカスタムJREイメージ

はじめに Hello World アプリの準備 Hello World アプリのコンパイルと実行 jlink でカスタムJREを生成する モジュールイメージ ランチャーを生成 Gradle からイメージを作成 jlink-gradle プラグイン まとめ はじめに Java Platform Module System (JPMS) …

Gradle アプリケーションプラグインでデバッグ実行する

blog1.mammb.com アプリケーションプラグインの run タスクをデバッグ実行するには以下のようにJVM引数を渡します。 application { applicationDefaultJvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005") } デバッグ…

Gradle Plugin for GraalVM Native Image の使い方(Windows platform)

はじめに Visual Studio Build Tools の準備 プロジェクトの準備 単純なアプリをネイティブイメージ化 リフレクションを利用したアプリをネイティブイメージ化 まとめ はじめに GraalVM 公式のGradleネイティブイメージプラグインの使い方です。 Gradleネイ…

macOS で Gradle Plugin for GraalVM Native Image を動かすための抜け道

はじめに Gradle のツールチェーンでプロビジョニングした GraalVM はシンボリックリンクが壊れている Native Image Plugin(0.9.25)は、Gradle 8.3 では動かない Native Image Plugin のトレースエージェントは GRAALVM_HOME / JAVA_HOME が必須 はじめに ma…

JavaFX の Uber Jar から GraalVM ネイティブイメージを生成(Windows platform)

はじめに サンプル JavaFx アプリケーションの準備 Visual Studio Build Tools の準備 GraalVM の準備 ネイティブイメージの作成(フォールバックイメージ) リフレクション構成ファイルとネイティブイメージの生成 ネイティブイメージ実行時のコマンドプロン…

【Java】ArrayList のコンストラクタ参照にご用心

例えば、sRGB の10進定数をフィールドに持つ Item があったとして、 public static int RED = Integer.parseInt("FF0000", 16); public static int GREEN = Integer.parseInt("00FF00", 16); public static int BLUE = Integer.parseInt("0000FF", 16); priv…

JavaFx の Node クラス階層

はじめに Node クラス階層 javafx.scene.Node javafx.scene.Parent javafx.scene.layout.Region javafx.scene.layout.Pane javafx.scene.control.Control javafx.scene.Group javafx.scene.shape.Shape はじめに JavaFx では javafx.scene.Node で表される木…

JavaFx の3つの矩形境界 LayoutBounds, BoundsInLocal, BoundsInParent の違い

はじめに Transformation と effect Plain Transformation effect まとめ はじめに JavaFx のさわり始めに、必ず混乱する 3つの矩形境界 LayoutBounds, BoundsInLocal, BoundsInParent について説明します。 Transformation と effect テキスト Text を作成…

Ora2Pg による Oracle から PostgreSQL へのデータ移行手順

はじめに 基本的な作業の流れ Ora2Pg 設定ファイルの準備 Oracle への接続確認 テーブル定義のエクスポート シーケンスのエクスポート 各種エクスポートオプション テーブル名のリマップ カラム名のリマップ boolean型への変換 データのエクスポート テーブ…

Podman で Oracle Database 23c Free

はじめに Oracle 23c コンテナの起動 カスタム・スクリプト コンテナ内から sqlplus で接続 コンテナ外から sqlplus で接続 Pod 化 はじめに Oracle 23c から Docker コンテナイメージが提供されるようになりました。 旧来の Oracle express edition では、…

【PostgreSQL】全テーブルの制約を一時無効化する

はじめに session_replication_role の設定 制約の削除/再作成 トリガの無効化/有効化 制約の遅延化 はじめに データのインポート操作やテストデータ投入時など、制約を一時的に無効化したい場合はよくある。 一律設定レベルで変更することはできず、以下の3…

【Podman】Payara と PostgreSQL の JavaEE Web アプリ Pod 作成方法

Podman インストール Payara Docker イメージのビルド postgres ドライバ post-boot-commands.asadmin イメージビルド PostgreSQL イメージ Pod の作成 Payara コンテナ Postgres コンテナ 起動確認 K8s の YAML からのPod起動 Java EE の WAR を Payara 4 …

Java21 でプレビュー公開された Unnamed Classes and Instance Main Methods

はじめに instance main メソッド unnamed class プレビュー機能の有効化 blog1.mammb.com はじめに Java21 で、JEP 445 Unnamed Classes and Instance Main Methods がプレビュー公開されました。 この JEP では以下を実現します。 Java言語の初心者に対し…

Gradle で Uber Jar(Fat Jar)を作る

blog1.mammb.com Uber Jar タスクの作成 ビルド時に Uber Jar を作成する Jar タスクで Uber Jar を作成する Uber Jar を実行可能 Jar にする Uber Jar タスクの作成 新規で Uber Jar 作成のタスクを登録。 tasks.register<Jar>("uberJar") { duplicatesStrategy </jar>…

郵便番号データ ken_all.csv の改定は、本質的に未だ何の解決にもなっていない

はじめに 郵便番号データ改定の経緯 町域名の問題点 郵便番号データの泥臭い編集 まとめ はじめに 2023年6月より、日本郵政の公開する郵便番号データ、通称 ken_all.csv の改定版が公開されました。 旧来の ken_all.csv に加えて、「住所の郵便番号(1レコー…

Podman チートシート

インストール Podman machine イメージ コンテナ Volume Pod 確認 Podman machine 再作成 Example postgresql Oracle Database 23c free インストール macOS $ brew install podman Windows > winget add RedHat.Podman 確認 $ podman --version $ podman in…

Gradle で Uber Jar(Fat Jar) の Source Jar を作成する

blog1.mammb.com sourcesJar タスク sourcesJar へのソース追加 sourcesJar タスク Source Jar は、Java Plugin で 提供される withSourcesJar() メソッドにより、 sourcesJar タスクを追加することができる(プロジェクトに sourcesJar という名前の既タスク…

イチオシな負荷テストツール k6 の始め方

k6 とは インストール MacOS Windoes Docker バージョン確認 簡単な負荷テストの例 出力メトリクス xk6-dashboard テストスクリプトの構成 実行オプション HTTP リクエスト HTTP レスポンスのCheck スクリプトの自動生成 k6 とは Go で書かれた開発者フレン…

Gradle で Jar ファイルをマニュアルダウンロードする

blog1.mammb.com Jar ファイルを任意ディレクトリに配備する Jar ファイルを任意ディレクトリに配備する Configuration を作成して依存定義 Copy タスクで任意ディレクトリにJarをコピー val copyJar: Configuration by configurations.creating dependencie…

Windows Package Manager - winget クイックマニュアル

winget とは バージョン確認 利用可能なコマンド インストール済みパッケージの確認 パッケージの検索 アプリケーションのインストール アプリケーションのアップグレード アプリケーションのアンインストール 導入パッケージのエクスポート/インポート wing…

Gradle で OS と アーキテクチャを判定する

blog1.mammb.com システムプロパティから取得 OS Detector Plugin DefaultNativePlatform システムプロパティから取得 単純にシステムプロパティから判定できる。 val os = System.getProperty("os.name") val targetOs = when { os == "Mac OS X" -> "macos…

Gradle のビルドスクリプトで IDEA による読み込みかどうか判定する

blog1.mammb.com システムプロパティによる判定 オプションの設定箇所 システムプロパティによる判定 val idea = System.getProperty("idea.active") == "true" || System.getProperty("idea.sync.active") == "true" if (idea) { // } IDEA から Gradle タ…

区切り文字を含めて文字列分割する

はじめに ゼロ幅分割 ゼロ幅 (zero-length) とは はじめに 以下のような文字列を : で分割する。 var string = "aa:bb::cc"; split を使うと : で分割され、分割文字である : は含まれない。 string.split(":"); // Arrays.deepToString(string.split(":"));…

Java21 で正式追加された switch でのパターンマッチ(JEP 441: Pattern Matching for switch)

はじめに プレビュー版からの変更点 Pattern Matching for switch による機能拡張 switch ラベルによるパターンマッチ case ラベルの guard 条件指定 null と switch enum 定数 ラベルの改善 case ラベルの Dominance(優位性) 型の網羅性(Exhaustiveness) パ…

Java21 で正式追加されたレコード・パターン(JEP 440: Record Patterns)

はじめに レコードパターン ネストされたレコードパターン var による型推論でのマッチング generic レコードのマッチング マッチングが失敗するパターン exhaustive switch blog1.mammb.com はじめに Java16 で導入されたレコードクラス(JEP 395: Records)…

Gradle で モジュールの add-exports を指定する

blog1.mammb.com add-exports / add-opens によるパッケージ公開 Gradle Kotlin DSL でコマンドライン引数を指定する オプションをまとめて定義する MANIFEST での Add-Exports 指定 add-exports / add-opens によるパッケージ公開 Java モジュールシステム…

Gradle でメッセージの不要なローカライズを無効化する

blog1.mammb.com グローバルに無効化 プロジェクト毎に無効化 グローバルに無効化 Gradle のタスク実行時のメッセージがローカライズされて鬱陶しかったり、メッセージが文字化けしたりする場合は、ホームディレクトリ配下の .gradle/gradle.properties でロ…

Gradle で Jar ファイル名を指定する

blog1.mammb.com TL;DR プロジェクト作成 コマンドライン引数でバージョン指定 バージョンプロパティを指定する Jar アーカイブ名を直接指定する プロジェクト自体を変更する Base Plugin の archivesName を指定する TL;DR gradle init タスクで作成したプ…

Gradle で Java プレビュー言語機能を有効にする

blog1.mammb.com Java プレビュー言語機能 Gradle Kotlin DSL でプレビュー機能を有効化する Gradle Groovy DSL でプレビュー機能を有効化する Java プレビュー言語機能 Java でプレビュー言語機能を使用するには、コンパイラとランタイム・システムで明示的…

Windows Update 「更新サービスに接続できませんでした」エラーの解消

はじめに エラーコード エラーの原因 WSUS の接続先 WSUS とは はじめに Windows Update で「更新サービスに接続できませんでした」エラー がいつまでたっても直らず。 対処方法として、DNS や Proxy などの設定見直しが多く挙げられているが、問題はそこで…