Java

POI による大きなExcelファイルの扱い

Usermodel 低メモリフットプリントなAPI Event API Streaming Usermodel API SAX Event API Usermodel Usermodel はPOIが提供する一般的で高レベルなAPIです。 以下のようにスプレッドシートのメンタルモデルとマッチした操作が可能です。 Workbook workbook…

h2database に見る Assertion スイッチによる初期化

h2database のソース見てたら以下のようなコードがあった Assertion (表明) Assertion スイッチによる初期化 h2database のソース見てたら以下のようなコードがあった private static final boolean ASSERT; static { boolean a = false; // Intentional sid…

JSF Bean Validation のエラー表示を Bootstrap で

はじめに 入力フォーム BeanValidation はじめに JSF における Bean Validation でのエラー表示についての小ネタです。。 入力フォーム 以下のようなテキスト入力を考えます。 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:jsf="http://xmlns.jcp.org/jsf"> ... <form jsf:id="form"> <div class="mb-3"> </div></form></html>

JSF HTML5-Friendly Markup における selectManyCheckbox の扱い方

はじめに selectManyCheckbox タグ selectBooleanCheckbox タグで代替する HTML5-Friendly Markup はじめに JSF の <h:selectManyCheckbox> タグは使わずに、<h:selectBooleanCheckbox> タグで代替しましょう という話です。 selectManyCheckbox タグ JSF の HTML BASIC タグである selectManyCheckbox のレ</h:selectbooleancheckbox></h:selectmanycheckbox>…

JSF Facelet タグライブラリのXMLネームスペースについて

はじめに XMLネームスペース 定義ファイルの所在 Facelet タグライブラリの定義 DOCTYPE の設定 はじめに JSF2.2 (JSR-344 2013年) から Facelet タグライブラリのXMLネームスペースが変更になりました。となりました。Sun 時代のネームスペースは下位互換の…

Logback でログが出力されなくなる時の対処法

結論 Logback の LogbackServletContainerInitializer 自動登録の無効化 ロガーの終了 結論 Logback は自動的に ServletContextListener を登録しており、サーブレットのシャットダウンやアンデプロイにより contextDestroyed() イベントでロガーを stop す…

JPA2.2 における persistence.xml の定義方法まとめ

はじめに persistence.xml persistence-unit provider jta-data-source non-jta-data-source mapping-file jar-file class exclude-unlisted-classes shared-cache-mode validation-mode properties タイムアウト系 property validation property schema-gen…

Java で touch する

ファイルのタイムスタンプを変えるには Files.setLastModifiedTime() が使える。 public static void touch(final Path path) throws IOException { if (Files.exists(path)) { Files.setLastModifiedTime(path, FileTime.from(Instant.now())); } else { Fi…

実行時の Java バージョン取得方法

Java8 以前 システムプロパティから java.version のキーで取得できます。 String version = System.getProperty("java.version"); Java9からは表記が変わるので注意が必要です。 Java8 まで:1.6.0_23、1.7.0、1.7.0_80、1.8.0_211 Java9 から:9.0.1、11.0…

Apache POI 4.X チートシート

はじめに 依存 ワークブックの新規作成 既存ワークブックのオープン ブックの保存 シートの作成 シートの取得 行の取得 行と列の移動 セルの取得 セルへの値設定 セル値の文字列取得 行とセルの走査 値が設定されている範囲の取得 罫線の設定 セルスタイルプ…

Apache PDFBox でテーブルを表示する

はじめに PDFBox での矩形描画 PDFBox でのテーブル描画 セルテキストの Box 表示 easytable によるテーブル表示 まとめ はじめに 前回は PDFBox による文章の Box 表示を見ました。 blog1.mammb.com PDFBox が提供する PDF 操作の API は、低レベルな操作に…

Apache PDFBox で折り返しのある文章を表示する

はじめに HelloWorld True Type Font の指定 段落文章の表示 まとめ はじめに Apache PDFBox は PDF を操作する Java ライブラリです。 PDFの作成やテキストの抽出、PDFの分割やマージなどを行うことができます。 Apache PDFBox は比較的低レベルな API セッ…

Java におけるタスクのキャンセル処理

タスクのキャンセル 単純なキャンセル可能タスク スレッドのインタラプト Future によるキャンセル Future による実行時間の制限 インタラプトできないブロッキング Socket の I/O ブロックに割り込みする まとめ タスクのキャンセル Java にはスレッドを強…

JavaFX で ace.js を使ったエディタのテキストがコピーできない

はじめに Workaround 1 Workaround 2 Workaround 3 ace.js におけるコピー処理 まとめ はじめに windows での挙動は試していませんが、MacOS 上で JavaFX の WebView を使い、ace.js を組み込んだ際にテキストのコピーが動かない事象がありました。 環境は J…

Java lambda における this 参照について

はじめに 匿名クラスの this 参照 lambda の this 参照 lambda コードの展開 lambda で自身を参照する はじめに lambda は、匿名クラスの単なる構文糖ではなく、その実現方法の違いから発生するいくつかの違いがあります。 ここでは、lambda ブロックにおけ…

JavaFX でダイアグラムを書く

はじめに マウスドラッグ可能なダイアグラムの作成 最初のダイアグラムの表示 ダイアグラムを繋ぐコネクタの作成 クラス図の表示 まとめ はじめに 前回は JavaFX の環境構築についてのポストでした。 blog1.mammb.com 今回は、JavaFX により、上記のような簡…

JavaFX の始め方(Gradle 編)

はじめに プロジェクトの作成 OpenJFX プラグインの導入 アプリケーションの実行 モジュール はじめに Java 11 からは、JavaFX が同梱されなくなったため、別途 OpenJFX を導入する必要があります。 しかし、Maven や Gradle 向けにプラグインが提供されてい…

ANTLR による構文解析の始め方

ANTLR とは ANTLR の導入 ANTLR の実行 ANTLR による構文解析 ANTLR の文法ファイルと生成ファイルの関係 まとめ ANTLR とは ANTLR (ANother Tool for Language Recognition) は構文解析器を生成するパーサジェネレータで、yacc や JavaCC などと同じ類いの…

JPA Schema Generation プロパティ

はじめに プロパティ一覧 persistence.xml での設定例 Spring Boot での設定例 はじめに JPA2.1 から標準化されたスキーマ生成プロパティですが、意外にまとまった情報が見当たらないので。 プロパティ一覧 javax.persistence.schema-generation 説明 connec…

Maven Central Repository への公開手順(Gradle版)

はじめに sonatype で JIRAアカウント作成 New Project の issue 登録 GnuPG の導入 GnuPG による鍵の生成 公開鍵を鍵サーバへ登録 秘密鍵をエクスポート Gradle プラグインの導入 build.gradle の設定 リポジトリへの公開 まとめ はじめに Maven Central Re…

Set や Map のキーを前方一致の Like 検索する

はじめに NavigableSet NavigableMap まとめ はじめに 入力項目の自動補完(auto complete)などで、前方一致の Like 検索を行いたい場合があります。 Set や Map は、key または key-value のデータ構造なので、これらの用途には向いたものではありませんが、…

Quarkus 1.1 で追加されたテンプレートエンジン Qute

はじめに Qute とは プロジェクトの作成 Hello Qute Qute テンプレートの文法 Template Extension Methods まとめ はじめに マイクロサービス・アプリケーション・フレームワークである Quarkus の バージョン 1.1 が 2019年12月17日にリリースされました。 …

Java でリストを逆順にイテレートする

はじめに ListIterator による逆順イテレート ListIterator ユーティリティを利用した逆順イテレート DescendingIterator による逆順イテレート はじめに 以下のようなリストを逆順で末尾からイテレートしたいケースがあります。 List<String> list = Arrays.asList(</string>…

Java Stream でよく使う Map 変換

Map へ変換(キー重複無し) Map へ変換(キー重複有り) LinkedHashMap へ変換 任意キーでグルーピング グルーピングして集計 グループ分け Map へ変換(キー重複無し) 以下の Item のリストを id をキーにした Map に変換します。 List<Item> list = Arrays.asList( n</item>…

Vaadin と Spring Boot で作る 「Javaだけ」 Web アプリケーション

はじめに プロジェクトの作成 最初のアプリケーション 画面レイアウトの設計 レイアウト構築の概要 レイアウトの実装 エンティティの準備 アカウント一覧コンポーネントの作成 アカウント一覧のフィルタリング AccountService の追加 アカウント編集フォーム…

Java Beans の大罪 〜 getter/setter を捨てて美しきオブジェクトの世界で生きよ〜

まえがき はじめに Java Beans の誕生 サーバサイドの台頭 Struts と BeanUtilsの興起 Enterprise JavaBeans ORM の台頭 getter/setter は良くない習慣です なぜ getter/setter は悪なのか 悪の囁きに対する処方箋 まとめ まえがき 以下のコードを見てくださ…

Quarkus の始め方 〜 Gradle 編 〜

はじめに Project Starter アプリケーションの起動 プロジェクトの構成 ネイティブ・ビルド ネイティブバイナリの実行 JVM モードのコンテナ作成 RestAssured によるテスト まとめ はじめに クラウドネイティブなアプリケーションフレームワークである Quark…

JUnit5 Jupiter による Parameterized Test の使い方

はじめに JUnit5 の導入 CsvSource による Parameterized Test Parameterized Test の型変換 ArgumentsAccessor で引数をまとめて受け取る ArgumentConverter で任意のオブジェクトを受け取る ArgumentsAggregator で複雑なインスタンスを扱う MethodSource …

REST と RESTful と RESTish について

はじめに REST とは RESTful とは RESTish とは まとめ はじめに REST と RESTful 、さらに最近では RESTish という用語についてのまとめです*1。 REST とは REST(REpresentational State Transfer)という言葉が何を指すかは、かなり発散する話題です。 元と…

Quarkus で Panache を使ったアプリケーション作成

はじめに Panache とは Panache の利用準備 Entity の定義 Entity の操作 永続化 IDによる検索 一覧取得 ソート 件数取得 削除 Stream 操作 ページング ページの取得 件数の取得 メソッドチェーン クエリー Entity メソッド トランザクション ロック カスタ…