Jakarta EE 10 - Jakarta Faces 4.0 変更内容まとめ

拡張子なしの自動マッピング @ClientWindowScoped アノテーションの追加 JSF から Faces への変更 XML ネームスペースの変更 Java で Facelet を作成するためのAPI追加 その他のAPIの変更 タグとタグ属性の変更 廃止された仕様 拡張子なしの自動マッピング …

Jakarta EE 10 - Jakarta Expression Language 5.0 変更内容まとめ

はじめに 関数インターフェースを受け取るメソッドの呼び出しが可能となった インターフェースのデフォルトメソッドにプロパティアクセス可能となった jakarta.el.MethodExpression から MethodReference を取得可能となった Java モジュールシステムのため…

Jakarta EE 10 - Jakarta Annotations 2.1 変更内容まとめ

はじめに jakarta.annotation.Nonnull / Nullable の追加 jakarta.annotation.Priority アノテーション適用範囲の拡大 その他の変更の無いアノテーション はじめに Jakarta Annotations (旧 Common Annotations) は、他の仕様で使用可能な共通のアノテーショ…

Jakarta EE 10 - CDI 4.0 の変更内容まとめ

はじめに CDI Lite と CDI Full の仕様分割 Build Compatible Extensions bean-discovery-mode 属性のデフォルトが annotated となった Startup イベントと Shutdown イベント Handle からBeanのメタデータを簡単に参照できるようになった ステレオタイプに …

Jakarta EE Security API の始め方

はじめに Security API とは AuthenticationMechanism CustomFormAuthenticationMechanismDefinition IdentityStore API DatabaseIdentityStoreDefinition 認証テーブルの作成 まとめ はじめに Java EE 8 で導入された Security API(JSR-375) ですが、取りま…

需要はほぼ無い EntityGraph からの Subgraph 取得

はじめに EntityGraph からの Subgraph 取得 はじめに JPA の EntityGraph を使うことで、クエリーで取得する対象をカスタマイズすることができます。 同じ Entity から様々なデータの見せ方が必要で、パフォーマンスの為に最小限のデータセットのみを取得し…

java.nio.file.Path の分かりにくいメソッドについて

はじめに startsWith() と endsWith() normalize() resolve() relativize() Zip ファイルシステムプロバイダ はじめに ずいぶん昔、Java 1.7 で java.nio.file.Path が導入されました。 Path はファイルやディレクトリを表現するのではなく、あくまでもファ…

MicroProfile Fault Tolerance 4.0 まとめ

はじめに @Asynchronous @Timeout @Retry @Fallback @CircuitBreaker @Bulkhead はじめに MicroProfile 5.0 に含まれる MicroProfile Fault Tolerance 4.0 仕様のまとめです。 マイクロサービスの構築では、ある処理の実行可否やタイミングを制御したり、正…

【Modern Java】Java18で追加された Code Snippets in Java API Documentation (JEP 413)

JEP 413: Code Snippets in Java API Documentation インラインスニペット ハイライト リンク テキストの置き換え 外部スニペット(External snippets) source-path オプションの設定 外部スニペットのスニペットパス指定 ハイブリッドスニペット snippet タ…

軽量なVMマネージャ Multipass の使い方(Dockerを添えて)

Multipass とは macOS でのインストール Windows でのインストール VM起動から終了まで 利用可能なOSイメージの一覧 VMのスペックを指定 ホストディレクトリをマウントする VMの情報を確認する Docker で Nginx を起動する cloud-init でVMを初期設定する Mu…

【Modern Java】Java18で追加された Simple Web Server (JEP 408)

JEP 408:Simple Web Server jwebserver API からのサーバ起動 まとめ blog1.mammb.com JEP 408:Simple Web Server すぐに使用できる静的ファイルのみを提供する最小限のWebサーバーが追加されました。 Webサーバーは、コマンドラインツールから起動できる…

Java Bean マッパーのコードジェネレータ MapStruct の基本

MapStruct とは MapStruct の導入 MapStruct の簡単な使い方 @Mapping でプロパティをマップする 様々な @Mapping 定義 @MappingTarget でオブジェクトを更新する @Mapper インスタンスの取得 まとめ MapStruct とは Java Bean 間のプロパティのコピーを簡素…

Rust のフロントエンドフレームワーク Yew の始め方

Yew とは Yew の始め方 Hello World Yew アプリケーション まとめ Yew とは Rust のフロントエンドフレームワークです。 React のような感じで、フロントエンドアプリケーション全体を、Rust コードからコンパイルした WebAssembly で構築することができます…

Jakarta EE 10 - JPA 3.1 の変更点

はじめに datetime function の追加 java.util.UUID データタイプのネイティブサポート追加 GenerationType.UUID の追加 EntityManager(Factory) の AutoCloseable 実装 いくつかの数値関数の追加 local date/time 用の関数の追加 PersistenceException 系で…

Java のオブジェクトグラフストレージエンジン MicroStream の使い方

はじめに MicroStream とは Hello World 設定 オブジェクトの操作 データのロード クエリ ObjectCopier バックエンドにデータベースを使う まとめ はじめに MicroStream 5.0 からOSS化された、オブジェクトグラフストレージエンジンの使い方の紹介です。 Mic…

Python の Webアプリフレームワーク Django の始め方 -その2-

はじめに モデルビューテンプレート テンプレートの配備場所 ベーステンプレート 静的ファイルの取り扱い index ページのテンプレート index ビューの作成 ブックリストページの作成 ブックリストページへの遷移 ブック詳細ページの作成 ブック詳細ページへ…

Python の Webアプリフレームワーク Django の始め方 〜導入からモデル定義まで〜

はじめに Django とは Python と Django Python の導入手順 Python 仮想環境の作成と Django のインストール Django プロジェクトの作成 サーバの起動 アプリケーションの作成 簡単な View の作成 モデルの定義 データベースマイグレーション Django 管理サ…

Java Enum の getDeclaringClass() と前方参照に纏わるしがない話

Enum クラスの getDeclaringClass() Enum 定数の前方参照定義 クラスの同一性について Enum クラスの getDeclaringClass() 以下の Enum があったとします。 public enum Season { SPRING, SUMMER, AUTUMN, WINTER, ; } getClass() と getDeclaringClass() は…

Jakarta EE(Java EE) のリソース定義方法まとめ

はじめに アプリケーション・コンポーネントのネームスペース リソースの定義 データソース リソース メッセージング・コネクタ・ファクトリ リソース メッセージング・デスティネーション リソース メール・セッション リソース コネクション・ファクトリ …

FlexBox または CSS Grid で作る header/footer/sidebar のスクロールバーレイアウト

はじめに ヘッダーがあり、Sticky フッダー があり、サイドメニューがあり、コンテンツが個別にスクロールする、よくあるレイアウトの FlexBox での作り方を、毎度分からなくなるので、メモしておきます。 FlexBox の基本 Flexible Box Module は行(row)方向…

GitHub Actions の基本

はじめに GitHub Actions の構成 ワークフローの構成 アクション ワークフローの作成 アクションの指定方法 ワークフロー サンプル トリガの指定 依存のキャッシュ コンテキスト 環境変数 Secrets Build Matrix アーティファクト ジョブの依存関係 ステータ…

イマドキの Kotlin アプリケーション向け build.gradel.kts

はじめに Build.gradle.kts kotlin() 標準ライブラリ(stdlib)の依存 Java ツールチェーンサポート kotlin.testAPI JavaFX アプリケーション まとめ はじめに Gradle Kotlin DSL もいろいろと変わっており、2022年における Kotlin アプリケーション向けの Bui…

Python 環境構築(Mac編)

はじめに Mac環境へのインストール Python のバージョン切り替え venv で仮想環境を作成する pip でパッケージをインストールする はじめに 古い情報があふれているため、2021年における Python のインストール手順についてまとめます。 Python のインストー…

Python 環境構築(Windows編)

はじめに Windows 環境へのインストール py コマンド venv で仮想環境を作成する pip でパッケージをインストールする はじめに 古い情報があふれているため、2021年における Python のインストール手順についてまとめます。 Python のインストールは、オリ…

現場で良く使う Java Stream イディオム

キャスト null 除外 否定フィルタ Streamから配列へ 配列からStreamへ リストの集約 リストからマップへ変換 コレクションの変更 任意キーでグルーピング 任意キーでソート カンマ区切り プリミティブRangeからリストへ オブジェクト型の合計 BigDecimal の…

Jakarta EE Spec 一覧

はじめに Jakarta EE バージョン 仕様一覧 はじめに Java EE から Jakarta EE への変更以降の仕様一覧まとめです。 Java EE8 以前の仕様については以下を参照してください。 blog1.mammb.com Jakarta EE バージョン バージョン リリース日 APサーバ 備考 Jak…

Unicode のスペースは色々あるし、半角スペースと &nbsp は同じでもない

はじめに Unicode の White_Space(Zs) カテゴリ Java における trim と strip はじめに 通常目にするスペースには、半角スペース と全角スペース があるが、Unicode の定義上でスペースに分類されるものは(Unicodeのバージョンによっても異なるが)18種類存在…

いつからか変更になっていた Oracle のLike検索エスケープ

はじめに Oracle Database における Like 検索 全角 % _ が特殊パターン一致文字から除外されたのは 各データベースのLike検索エスケープ事情 はじめに Oracle Database 11gR2 から、特殊パターン一致文字の % と _ の扱いが変わりました。 Oracle Databas…

Node のバージョン管理は Volta でいいかな

Volta とは インストール 公式インストーラ(*nix) Homebrew 公式インストーラ(Windows) volta install で Node エンジンを導入する volta list で現在のツールチェーンを一覧する volta pin でバージョンを固定する コマンドラインツールのグローバルなイン…

WSL環境から(Symantec Endpoint Protectionが邪魔して) apt update できない場合の対処法

事象 対応方法 Apache の導入 Apache の設定 apt update && apt upgrade proxy 環境変数の定義 事象 WSL2 の Ubuntu から外部へのネットワークが繋がらず、apt update で以下のエラーとなる。 Err:1 http://security.ubuntu.com/ubuntu focal-security InRel…