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

JSON5 まとめ

JSON5 とは JSON との比較 コメント オブジェクトのキー 末尾のカンマ 文字列 数値 JSON5 とは JSONフォーマットのスーパーセット 設定ファイル向けに人間による読み書きが容易になるように拡張 JSON with Comments(jsonc) を発展させた感じ ES5のサブセット…

Gradle 9 で変更された ear / war プラグインのアーティファクト生成

blog1.mammb.com はじめに jar タスクの生成を抑止する archives configuration から jar を除外する はじめに Gradle 9 では ear/war プラグインで生成されるアーティファクトや archives configuration が変更になりました。 リリースノートでの記載はあり…

【Jakarta EE 12】Jakarta Concurrency 3.2 変更点まとめ

スケジュールされたメソッドの自動起動 Jakarta Concurrency 3.1 における @Schedule Jakarta Concurrency 3.2 における @Schedule Lock アノテーションの追加 MaxConcurrency アノテーションの追加 @Asynchronous にアノテーションリテラルの追加 スケジュ…

【Jakarta EE 12】Jakarta Contexts and Dependency Injection 5.0 変更点まとめ(2025/12時点)

tl;dr @Eager アノテーション @Reserve アノテーション @AutoClose アノテーション追加 BuildCompatibleExtension の手動登録 MavenグループID/アーティファクトID 変更 非同期 method invokers プリミティブ型とラッパー型に対する仕様明確化 コンテキスト…

Scoop チートシート

インストール 基本操作 Bucket コマンド一覧 インストール PowerShell Terminal で以下実行。 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression 以下メッセージと伴…

Error Prone で Java コンパイラを強化する

Error Prone is 何? Error Prone の導入 Error Prone の動作 チェックの抑止 Error Prone is 何? Google がオープンソース化(2012年)した Java コンパイラプラグイン SonarQube、FindBugs/SpotBugs などと同様の静的解析ツール コードの抽象構文木(AST)を解…

java.nio.file.Files.newBufferedWriter() で生成した Writer に関する注意点

はじめに Files.newBufferedWriter() は何が違う? MalformedInputException と UnmappableCharacterException まとめ はじめに java.nio.file.Files には Reader や Writer 用のスタティックファクトリメソッドが用意されています。 Reader reader = Files.…

テキスト処理のためのデータ構造 - Rope

テキストエディタのデータ構造 Rope データ構造とは Rope は Copy on Write の実現が容易 Rope 実装例 Rope の結合と分割 挿入と削除処理 Rope の実行例 まとめ テキストエディタのデータ構造 テキストエディタでよく使われるデータ構造には、Gap Buffer、Pi…

Windows ホームディレクトリの AppData 配下にいる Roaming / Local / LocalLow って何ぞ

まとめ AppData\Roaming AppData\Local AppData\LocalLow プラットホーム別の対比 user’s home directory user’s preference directory user’s config directory user’s local config directory まとめ ユーザホームディレクトリの AppData 配下には Roaming…

【PowerShell】WinRM で リモートサーバ接続

接続先(操作される側)の設定 クライアント(操作する側)の設定 接続先(操作される側)の設定 Windows Server 2012 以降では、既定で WinRM が有効になっているので、特別な作業は必要ない。 以下のようなサービスと Windows Defender ファイアウォールが構成済…

一番人気の Java CSVライブラリ Fast CSV

Fast CSV とは Fast CSV の使い方 CSV読み込み CSV書き込み まとめ Fast CSV とは Java用 の CSVライブラリは数多あります。例えば以下のようなものです。 Super CSV Commons CSV Opencsv SimpleFlatMapper Jackson Data Format Module しかしこれらは、積極…

(Rustで)動画ファイルから音声データを抜き出す

はじめに プロジェクト準備 ffmpeg_sidecar の利用 実行 はじめに FFmpegを使えば、コマンドラインから動画ファイルの様々な操作が可能 FFmpeg の導入が面倒な場合は、ffmpeg_sidecar クレートを使えば、FFmpeg を自動でダウンロードして、各種処理が可能 (e…

JDK26 JEP 500: finalを「本当にfinal」にするための準備

はじめに 500:Prepare to Make Final Mean Final クラスパス上のすべてのコードに許可 特定のモジュールに許可 動作モードの指定 はじめに 従来のJavaプラットフォームでは、java.lang.reflect.Field クラスの setAccessible(true)と set(...) メソッドによ…

Podman 4.x から 5.x へのアップグレード(Windows)

はじめに winget でアップグレードしたら podman machine start 以下のようなエラーとなった。 Error: unable to load machine config file: "json: cannot unmarshal string into Go struct field MachineConfig.ImagePath of type define.VMFile" Podman 5…

PowerShell コンソールで操作ログを記録する

操作ログの記録開始 操作ログの記録終了 Start-Transcript 操作ログの記録開始 Start-Transcript -Path "c:\logs\transcript_$(Get-Date -Format "yyyyMMdd-HHmmss").log" -Append 操作ログの記録終了 Stop-Transcript Start-Transcript Start-Transcript は…

Rust の GUI ライブラリ Xilem

Xilem 何? Rust で書かれた実験的なマルチプラットフォーム GUI ライブラリ Druid の後継と位置づけられ、Druid が直面したいくつかの課題を克服することを目標 wgpuベースの描画処理 React や SwiftUI などから影響を受けたリアクティブなアプローチ 現時…

JavaFX 25 で追加された HeaderBar (プレビュー)

はじめに 最近のディスクトップアプリケーションは、ウインドウのタイトルバーにコントロールを配置するものが増えてきました。Electron 系だと一般的ですね。 例えば VS Code のタイトルバーは以下のようになっています。 JavaFX でこのようなタイトルバー…

Gradle 9.1 で気になった新機能2つ

タスク間依存関係のグラフィカル表示 コンソール表示オプション値 colored の追加 タスク間依存関係のグラフィカル表示 Gradleでは、タスクの実行順序を決定するために有向非巡回グラフ(DAG)が利用されます。 Gradle 9.1 で追加された --task-graph オプショ…

GitHub Actions の Intel mac サポートの終焉

はじめに 移行パス はじめに Apple による x86_64(Intel) アーキテクチャのサポート終了に伴い、Github Action の以下のランナーイメージは 2025/12/04 までに廃止されます。 macos-13 macos-13-large macos-13-xlarge 今後の廃止に向けた周知のため、macOS …

Java におけるインスタンス生成パターンについて

コンストラクタの課題 Telescoping Constructor Static Factory Method Builder Wither JEP 468: Derived Record Creation (Preview) 名前付き引数 コンストラクタの課題 多数のフィールドを持つクラスを考えます。 例えば以下のような Circle クラスを考え…

JDK 25 JEP 以外の変更点まとめ

主な新機能 java.io.Reader から残りの文字をすべて読み取るサポート(JDK-8354724) 標準システムプロパティ stdin.encoding の追加(JDK-8350703) CharSequence と CharBuffer の新しい getChars(int, int, char[], int) メソッド(JDK-8343110) 接続を識別す…

Gradle で Maven Central Portal へのライブラリ公開(OSSRH Sunset を超えて)

はじめに Central Portal へのログイン ネームスペースの登録 鍵生成と公開鍵の登録 トークン作成 プラグインの設定 公開 はじめに OSSRH(Sonatype OpenSourceSoftware Repository Hosting)は2025年6月30日でサービス終了となり、Central Publisher Portal …

JEP 517 : HTTP/3 for the HTTP Client API

HTTP Client API HTTP/3 サポート blog1.mammb.com HTTP Client API JDK 11 で導入された HTTP クライアント API(JEP 321: HTTP Client API) は HTTP/1.1 と HTTP/2 をサポートしています(デフォルトでは HTTP/2 を優先し、対象サーバーが HTTP/2 をサポート…

Java 標準API でパスワードベースの暗号化・複合化

はじめに 秘密鍵の生成 暗号化 複合化 まとめ はじめに パスワードで暗号化/複合化のサンプルをメモ。 package org.example; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.c…

【PostgreSQL】外部キー参照しているレコードを芋づる式に削除する

PostgreSQL の外部キー制約には ON DELETE CASCADE を指定することができる。 ... FOREIGN KEY (parent_id) REFERENCES parent_table (parent_id) ON DELETE CASCADE これにより、親テーブルのレコードが削除されたときに、その親レコードを参照する子テーブ…

Rust 製の静的サイトジェネレータ Zola のはじめかた

Zola なに? インストール プロジェクト生成 基本的な構成 テンプレート テーマ Zola 利用の流れ Shortcodes 補足 Zola なに? Rust 製の静的サイトジェネレータ テンプレートエンジンには、こちらも Rust 製の Tera を使用(Jinja2 とだいたい同じ文法) シン…

【続】JVM 終了時の ShutdownHook が動きません

はじめに MCVE MCVE jpackage こいつか、犯人は はじめに jdk-21.0.2+13 で行われた変更により、シャットダウン・フックが動かなくなった原因の継続調査。 以下の続きになります。 blog1.mammb.com MCVE MCVE にして調査を進めよう。 App.java public class …

JVM 終了時の ShutdownHook が動きません

tl;dr ことの経緯 そもそも シャットダウン・フック 何? tl;dr Windows 環境で Java のシャットダウン・フックが動作しない事象があったのでその経緯をログとして残します。 結論としては jdk-21.0.2 前後でシャットダウン・フックの挙動が異なるようだ。 J…

Java Flight Recorder (JFR) のはじめかた

JFR とは JFR と JMC(JDK Mission Control) JFR の有効化 JFR のオプション指定 StartFlightRecording オプション設定一覧 FlightRecorderOptions オプション設定一覧 jcmd からの操作 JFR とは Java Flight Recorder(JFR)とは、実行中のJavaアプリケーシ…

PowerShell で Windows Defender 除外設定

除外パス(フォルダ/ファイル)の一覧 除外パス(フォルダ/ファイル)の追加 除外パス(フォルダ/ファイル)の削除 除外パス(フォルダ/ファイル)の一覧 (Get-MpPreference).ExclusionPath プロセスの場合は ExclusionProcess、拡張子の場合は ExclusionExtension …