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

WinSW チートシート

WinSW とは ダウンロード 使い方 設定ファイル 基本設定 実行ファイル サービス設定 ログ・障害復旧 その他 WinSW とは 任意のプロセスを Windows サービスとして管理するための実行バイナリ。 Jenkins を Windows サービスから管理するために使われている。…

Rust のテンプレートエンジン Tera - テンプレート構文チートシート

Tera とは デリミタ リテラル 変数 演算 四則演算 比較演算 論理演算 文字列連結 in checking フィルタ if for include macro extends row ブロック ビルトイン関数 Tera とは Tera は、Rust のテンプレートエンジン。 Rust 製の Static Site Generator であ…

Github の Markdown アラート記法を再現する CSS

GitHub の Markdown 拡張 - Alerts GitHub のアラートは、ブロッククォート構文に基づいた Markdown 拡張で、以下のように書くことができる。 > [!NOTE] > Highlights information that users should take into account, even when skimming. > [!TIP] > Opt…

【Rust】Into トレイト

blog1.mammb.com Into トレイト std::convert::Intoトレイトはある型の値を消費して別の型を返す変換を表す。 以下の定義となっている。 pub trait Into<T>: Sized { fn into(self) -> T; } std::convert::Intoトレイトは、std::convert::Fromトレイトと対を成</t>…

【Rust】 From トレイト

blog1.mammb.com From トレイト std::convert::Fromトレイトは、ある型から別の型のインスタンスを生成するための汎用のコンストラクタとして機能する。 pub trait From<T>: Sized { fn from(value: T) -> Self; } 引数の所有権を受け取り、自身の型に変換を行</t>…

JDK の統合ログフレームワークによるGCログのオプション指定

はじめに Unified JVM Logging 旧来オプションとの相対 Xlog ヘルプ全文 はじめに 今更な話ですが、JDK 9 JEP 158: Unified JVM Logging にて Java の内部のロギングの仕組みが統一され、統合ログフレームワークが導入されました。 GC ログについても JEP 27…

Java で高速LLM推論 Jlima の始め方

はじめに プロジェクトの作成 Jlama の利用 LangChain4j インテグレーション はじめに Jlama は、Java で LLM を実行するためのライブラリです。 Jlama は JDK の Vector API により SIMD命令を使うことで高速な推論が可能となっています(Vector API はJDK25…

Java におけるエンコーディング関連システムプロパティの最近の変遷について

はじめに JDK16におけるエンコーディング関連システムプロパティ JDK17におけるエンコーディング関連システムプロパティ JDK18 UTF-8 by Default JDK19 におけるコンソールI/Oの文字コード まとめ はじめに JDK 18 の、JEP 400: UTF-8 by Default 前後で、エ…

Java の環境変数 JAVA_TOOL_OPTIONS と JDK_JAVA_OPTIONS について

TL;DR JAVA_TOOL_OPTIONS JDK_JAVA_OPTIONS TL;DR Java のツールが自動的に読み込む環境変数に JAVA_TOOL_OPTIONS と JDK_JAVA_OPTIONS があります。 これらの主な違いは、その提供範囲で、以下のようになります。 JAVA_TOOL_OPTIONS : java, javac, jar, ja…

Windows の Podman で Dev Container 上の Swift で Hello world

Podman はインストール済みで起動している前提。 VS Code のインストール winget install -e --id Microsoft.VisualStudioCode 作業フォルダ作成して Dockerfile 作成して VS Code 起動(PowerShellターミナル上) mkdir swift cd swift echo "FROM swift:late…

Git コミット・メッセージの規約 Conventional Commits チートシート

git

Conventional Commits とは 追加の type Semantic Versioning との対応 Conventional Commits とは Conventional Commits は、コミットメッセージのための軽量の規約です。 規約に従うことで、各種ツールによる自動処理が可能になります(例えば JReleaser が…

Rust の GUI フレームワーク Makepad

Makepad とは サンプルの実行 簡単なアプリケーションの作成 イベント処理 まとめ Makepad とは Makepad は、Rust で書かれたクロスプラットフォーム(ネイティブおよびWeb)な UIフレームワークです。 2019年から開発が始まり、2025年5月15日に 1.0.0 版がリ…

Javaで OSコマンドを実行 - JBang Jash -

jbang-jash とは jbang-jash の使い方 その他の使い方 jbang-jash とは Java でOSコマンドを実行するには、ProcessBuilder を使います(旧来はRuntime)。以下のような感じですね。 ProcessBuilder builder = new ProcessBuilder("java", "-version"); Process…

JDK 24 で追加された Stream Gatherers 用ユーティリティライブラリ Gatherers4j

Stream Gatherers Gatherers4j とは シーケンス操作 結合操作 インデックス付与 並び替え 繰り返し スロットル フィルタリング/選択 debounce 重複削除 フィルタ Grouping と Windowing 算術操作 検証 Stream Gatherers JDK 24 で追加された JEP 485: Stream…

JDK25 JEP 483: Ahead-of-Time Command-Line Ergonomics

JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking JDK 25 の Ahead-of-Time Command-Line Ergonomics blog1.mammb.com JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking によ…

JEP 519 : Compact Object Headers

はじめに コンパクト・オブジェクト・ヘッダの有効化 オブジェクト・ヘッダ 従来のオブジェクト・ヘッダレイアウト コンパクト・オブジェクト・ヘッダのレイアウト blog1.mammb.com はじめに JDK 24 にて実験的機能として公開されたコンパクト・オブジェクト…

JEP 506 : Scoped Values

はじめに ThreadLocal の問題点 Scoped Values blog1.mammb.com はじめに java.lang.ScopedValue は、java.lang.ThreadLocal と同様に、スレッド毎のローカル変数を提供します。 java.lang.ThreadLocal と異なり、この変数はイミュータブルで限定的な生存期…

JEP 513 : Flexible Constructor Bodies

はじめに JDK 25 前のコンストラクタ Flexible Constructor Bodies blog1.mammb.com はじめに JDK 25 では、コンストラクタ本体は明示的にせよ暗黙的にせよ、super(...) または this(...) で始まらなければならない、という構文ルールが削除されます。 以前…

JEP 512: Compact Source Files and Instance Main Methods

はじめに JEP 512: コンパクト・ソース・ファイルとインスタンス・メイン・メソッド インスタンス・メイン・メソッド コンパクトソースファイル コンソール・インタラクション blog1.mammb.com はじめに 伝統的な Hello,World プログラムは public class Hel…

JEP 511 Module Import Declarations

はじめに モジュールインポート まとめ blog1.mammb.com はじめに JDK 25 からインポート宣言にモジュール名を指定できるようになります。 import module java.base; 例えば以下のようなストリーム処理を行う単純なコードは、 String[] fruits = new String[…

Aurora PostgreSQL のフォールト・インジェクション・クエリ

インスタンスのクラッシュ レプリカの障害のテスト ディスクの障害 ディスクの輻輳 Aurora PostgreSQL ではフォールト・インジェクション・クエリを発行することで、インスタンスのクラッシュをシミュレートできる。以下のクエリが利用可能。 フォールト・イ…

JDK 24 で追加された JEP 483: Ahead-of-Time Class Loading & Linking

はじめに Ahead-of-Time Class Loading & Linking に至る歴史 AOTキャッシュの作成 AOTキャッシュの制限 トレーニング・ランのヒント AOTキャッシュの効果 blog1.mammb.com はじめに JDK24 にて、クラス・データ共有(CDS)が拡張され、旧来からあるアプリケー…

JDK 24 で追加された java.io.Reader.of()

はじめに java.io.Reader.of() まとめ blog1.mammb.com はじめに CharSequence は文字の並びを表すインターフェースで、その実装には String に加え StringBuffer, StringBuilder, CharBuffer などがあります。 CharSequence から Reader を得るには、以下の…

G1GC でヒープ開放 JEP 346 Promptly Return Unused Committed Memory from G1

はじめに G1PeriodicGCInterval G1PeriodicGCSystemLoadThreshold G1PeriodicGCInvokesConcurrent まとめ blog1.mammb.com はじめに G1GC は、full GC か concurrent cycle で Java Heep を解放しますが、G1GC は full GC を回避するように試み、concurrent …

Gradel でビルドした war をその場で実行する

blog1.mammb.com はじめに Eclipse GlassFish 7.0.18 以降、glassfish-embedded の jar が実行可能 jar になったので、コマンドラインから war を渡すことで直接アプリケーションを実行できるようになりました。 blog1.mammb.com Gradle で war を実行 Gradl…

Gradle アノテーションプロセッサでJPAメタモデルを生成する

blog1.mammb.com Hibernate Hibernate の jpamodelgen の場合は単に以下のように依存を追加する dependencies { annotationProcessor("org.hibernate.orm:hibernate-jpamodelgen:6.6.7.Final") } Jakarta EE 11 から追加された Jakarta Data に対応したメタ…

Windows コマンドの改行エスケープ

改行エスケープ Windows コマンドの改行エスケープは毎度忘れて、調べてもなかなか検索ヒットしないので書いておく。 環境 改行エスケープ Windows コマンドプロンプト 末尾に ^ Windows Terminal(Power shell) 末尾に ` Linux シェル 末尾に \ cmd \ --opti…

jlink でカスタム・ランタイム・イメージ作成時には jdk.charsets モジュールも含めたい

jdk.charsets モジュールはjava.base にない Charset を提供します。 このモジュールには、2バイト文字とIBM文字セットなどが含まれます。 このモジュールは明示的に指定しないとランタイムイメージに含まれないので、例えば windows-31j などを扱った場合に…

git diff をリッチにする Difftastic の使い方

Difftastic とは インストール Git での設定 エイリアス設定 difftool 登録 Difftastic とは Difftastic は、リッチな diff 表示を行うコマンドラインツールです。 行単位の変更差分ではなく、コードを解析(50超の言語に対応しています)することで、構文ツリ…

StringUtils の isAlpha 系メソッドを Deprecated にしてほしい

はじめに StringUtils の isAlpha 系メソッド Unicode Letter カテゴリ はじめに Commons lang の 以下のメソッドは見た目に反して true を返します。 StringUtils.isAlpha("あ") いつまでたっても間違いが減らないので、isAlpha 系メソッドは Deprecated に…