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 - Jakarta Persistence 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…

WSL2 Ubuntu に Docker 導入(Docker Desktop for Windows に変えて)

はじめに Convenience Script を利用したインストール インストールに必要なパッケージ導入 docker パッケージリポジトリの登録 dockerEngineのインストール docker デーモンの起動 docker コンテナの実行 一般ユーザで docker コマンドを利用する docker-co…

Java Stream を任意順序でソートする

はじめに Java8 Stream での任意順序ソート 未知のキーを末尾に持ってくる はじめに 以下のような Item を top -> middle -> bottom の順序でソートしたい。 List<Item> list = Arrays.asList( new Item(1, "bottom"), new Item(2, "top"), new Item(3, "middle"),</item>…

いつも忘れる CollectionUtils の集合演算

和集合 A ∪ B 差集合 A ー B 積集合 A ∩ B 排他的論理和 A ⊕ B Apache Commons Collections の CollectionUtils。 Collection 同士の集合演算はメソッド名が分かりにくくて、よく忘れるのでメモです。 色付きのものが結果に含まれます。 和集合 A ∪ B Collec…

Graal VM ネイティブイメージにおける制限事項

Native Image Compatibility and Optimization Guide Class Metadata Features (Require Configuration) Dynamic Class Loading Reflection Dynamic Proxy JNI (Java Native Interface) Serialization Features Incompatible with Closed-World Optimization…

Gradle が Unable to find a usable idle daemon で応答しない場合の対処法

年に数回程度の頻度で、Gradle のビルドが応答しない場面に遭遇することがあります。 以下のように IDLE で止まり、応答なし。 $ gradlew war > IDLE かなり待たされた後で、Gradle デーモンのプロセスに到達できないというエラー。 FAILURE: Build failed w…

リファクタリングを行うべきクラスを教えてくれる RefactorFirst

RefactorFirst とは RefactorFirst を使ってみる RefactorFirst レポート まとめ RefactorFirst とは どのクラスからリファクタリングを開始すべきかを教えてくれる Java 用のツールです。 現在のバージョンは 0.2 となっています。 github.com クラスの大き…

AsciiDoc から 日本語 PDF の作成手順

はじめに docker-asciidoctor によるPDF作成 よく使う docker-asciidoctor のオプション docker-asciidoctor のテーマファイル はじめに AsciiDoc で日本語を含む PDF を生成するには、asciidoctor-pdf を使うのが王道ですが、asciidoctor-pdf v1.5.0 以降で…