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

Oracle 空文字比較の厄介

はじめに Oracle における空文字の扱い UNKNOWN の扱い Oracle と PostgreSQL 双方で動くSQL はじめに 空文字と null を区別しない Oracle と、PostgreSQL のように''空文字と null を区別するデータベースの双方に対応するアプリケーションにしたい場合を考…

GitHub ホストランナーラベルとアーキテクチャの対応表

仮想マシン アーキテクチャ ラベル 説明 Linux x64(amd64) ubuntu-latest、ubuntu-24.04、ubuntu-22.04、ubuntu-20.04 Linux arm64(AArch64) ubuntu-24.04-arm、ubuntu-22.04-arm Public リポジトリのみ macOS x64 macos-13 Intel Mac macOS arm64(AArch64) …

コマンド一発でローカル LLM を動かす Ollama の使い方

Ollama とは インストール Ollama の起動 Ollama の使い方 Ollama とは Ollamaは、主要なLLMオープンソースモデルをダウンロードし、ローカルのターミナル上でチャットできるようにするツールです。 github.com 以下のように動作します。 インストール macOS…

Java で始める DuckDB

DuckDB とは DuckDB JDBC DuckDB 操作 Batch Insert Appender データのインポート DuckDB とは OLAP(オンライン分析処理)ワークロードに特化した組み込み SQLite といったイメージです。 Apache Parquet ファイルをストレージとして使用 ベクトル化されたク…

OpenRewrite の AutoFormat レシピで一括コードフォーマットする

はじめに AutoFormat レシピ TabsAndIndentsStyle BlankLinesStyle WrappingAndBracesStyle EmptyForInitializerPadStyle EmptyForIteratorPadStyle SpacesStyle AutoFormat で適用されるデフォルトスタイル はじめに OpenRewrite の AutoFormat レシピを使…

Checker Framework で Java を Null safety にする

Checker Framework とは Gradle の設定 Gradle 構成キャッシュは無効に Checker Framework の実行 Nullness Checker のその他のアノテーション Checker Framework とは Checker Framework は、Java の型システムを拡張して Java プログラム内のエラーを検出…

OpenRewrite の OrderImports レシピでインポート宣言を一括整形する

はじめに Gradle 設定 rewrite.yml の準備 OrderImports レシピの実行 はじめに OpenRewrite の OrderImports レシピを使ってインポート宣言を一括整形することができます。 OpenRewrite のレシピは親切なドキュメントが提供されておらず、ソースを見てね と…

Java ランタイムイメージ用の新しいURLスキーム jrt について

はじめに Java でリソースにアクセスする場合、file や jar といった URLスキームで参照することができます。 file:/path/to/resource.txt // ファイルシステム上のリソース jar:file:/path/to/foo.jar!/resource.txt // jarに固められたリソース モジュール…

Gradle convention プラグインでプラグインのバージョンを指定する

blog1.mammb.com buildSrc/src/main/kotlin/xx-common-conventions.gradle.kts の中でバージョンを指定してプラグインを適用した場合 plugins { java id("org.openrewrite.rewrite") version "6.29.0" } 以下のようなエラーとなる。 Invalid plugin request …

JUnit4 → JUnit5 migrate チートシート

依存の変更 インポート宣言の置換で完結するもの クラスの置き換えで済むもの expected から assertThrows への書き換え timeout から assertTimeout への書き換え @RunWith から @ExtendWith への変更 その他必要な書き換え OpenRewrite によるJUnit4 → JUn…

Gradle からシステム環境変数をアプリケーションに渡す

blog1.mammb.com Gradle では -D オプションでシステム環境変数を設定できる。 ./gradlew run -Denv=dev しかしこのように設定した環境変数は、Gradle には渡るが、そこから起動するアプリケーション側には渡らない。 ビルドスクリプト内で systemProperty …

Gradle の application プラグインでキーボード入力を受け付ける

blog1.mammb.com application プラグインで ./gradlew run すると、コンソールからのキーボード入力が受け付けられない。 デフォルトでは JavaExec タスクに標準入力が割り当てられないためである。 この場合は build.gradle.kts に以下のように標準入力を指…