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

CSS フレームワーク Bulma チートシート

CSS

Bulma とは Bulma の導入 Container Columns カラムサイズ カラムグリッド 固定幅カラム ブレークポイント Button カラー指定 サイズ指定 スタイル グループ フォームコントロール Form group Horizontal form Table Box Panel Card Modal Media Object Noti…

RDS for Oracle で Data Pump によるエクスポート/インポート

AWS

はじめに RDS 上の DATA_PUMP_DIR の操作 Data Pump によるエクスポート テーブル単位でのエクスポート バージョン指定 Data Pump によるインポート テーブル単位でのインポート 統計情報を除いたインポート 既存テーブルの更新/追加 スキーマのリマップ Dat…

JDK 16 : stream.toList() に見るAPI設計の難しさ

はじめに JDK 16 で導入された stream.toList() Collectors.toList() の API と実装 stream.toList() の API と実装 stream.toList() には安易に切り替えられない はじめに JDK 16 で追加された stream.toList()。 タイプ量が減るのは良いのですが、API 設計…

【Modern Java】Java16で正式リリースとなった instanceof パターンマッチング (JEP 394: Pattern Matching for instanceof)

JEP 394: Pattern Matching for instanceof パターン変数のスコープ パターン変数によるシャドーイング まとめ blog1.mammb.com JEP 394: Pattern Matching for instanceof インスタンスの型を判断して処理を行う instanceof-and-cast イディオム以下のよう…

【Modern Java】Java16で正式リリースとなった Records (JEP 395: Records)

JEP 395: Records レコードクラス宣言 レコードクラスのルール レコードクラスで出来ないこと レコードクラスでできること カノニカル・コンストラクタにパラメータ検証を追加する 引数の異なるコンストラクタを定義する ローカルレコードクラス アノテーシ…

Java で .tar.gz の圧縮・解凍

はじめに 対象ディレクトリ配下を .tar.gz .tar.gz を解凍 はじめに 成熟した Commons Compress を使うのがベスト。 dependencies { implementation 'org.apache.commons:commons-compress:1.20' } <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.20</version> </dependency> 対象ディレク…

WebSocket によるサーバサイドレンダリングなテトリスの作り方(その3)

はじめに テトロミノ ゲーム盤面上のブロック ゲームの実装 WebSocket エンドポイント WebSocket クライアント ゲームの実行 まとめ はじめに 前回からの続きです。 blog1.mammb.com 前回は Java API for WebSocket について見てきました。 今回は、前回の内…

WebSocket によるサーバサイドレンダリングなテトリスの作り方(その2)

はじめに エンドポイントの構成 ライフサイクルアノテーション @OnOpen @OnMessage @OnClose @OnError Session コネクションのクローズ User Properties すべての Session へ通知 RemoteEndpoint Encoder と Decoder サーバから定期的にPushするエンドポイン…

WebSocket によるサーバサイドレンダリングなテトリスの作り方(その1)

はじめに WebSocket とは Java API for WebSocket エンドポイント Tyrus サーバ WebSocket クライアント サーバの実装 まとめ はじめに WebSocket の利用方法について説明します。 サーバ側には JSR 356 Java API for WebSocket を使い、クライアント側には …

JOL で Java オブジェクトのメモリ情報を取得する

はじめに Java Object Layout (JOL)とは JOL の導入 JOL の使い方 GraphLayout ClassLayout VM まとめ はじめに Java にはオブジェクトが使用するメモリ容量を得る演算子がありません。 例えば、C や C++ における sizeof であったり、Rust における std::me…

Rust の非同期Webアプリケーションフレームワーク Tide

はじめに Tide とは プロジェクトの作成 Hello World パスパラメータを受け取る JSON を返す クエリパラメータを受け取る POSTパラメータを受け取る はじめに Rust の Web アプリケーションフレームワークとしては actix-web rocket がメジャーで、 tide war…

Payara(Glassfish)のライブラリフォルダとクラスローダの関係

要約 各クラスローダの役割 Bootstrap class loader Extension class loader Public API class loader Common class loader Connector class loader LifeCycleModule class loader Applib class loader Archive class loader add-library Logback 利用時の注…

JCenter は2022年2月で終了するので Gradle プロジェクトは早めの対応を!

JCenter の終了 どうすれば良いか JCenter への依存の確認方法 JCenter の終了 JFrog の以下の発表によると、JCenter は 2022年2月1日 で利用できなくなるとのことです。 jfrog.com 当初は 2021年5月1日 で終了でしたが、2022年2月1日 まで延期されました。 …

Rust の簡単な CLI用テンプレート

シンプルなケース StructOpt 利用 シンプルなケース 標準ライブラリのみのシンプルなケース。 use std::env; use std::process; use std::error::Error; use std::path::PathBuf; fn main() { let opt = Opt::from_args().unwrap_or_else(|err| { eprintln!(…

POI で巨大なExcelファイルを操作する

はじめに Usermodel 低メモリフットプリントなAPI Event API Streaming Usermodel API SAX Event API はじめに POI による Excel 操作はメモリ消費が激しいため、大きなファイルを操作する場合には注意が必要です。 xlsx 形式のファイル読み込みには SAX Eve…

Windows 環境への Rust インストール

インストーラの入手 Visual Studio C++ Build tools の導入 Rustup のインストール 確認 インストーラの入手 Windows 環境に Rust をインストールするには WSL を使う方法もあるが、ここではネイティブなインストールを行います。 といっても、基本的にイン…

AWS Lake Formation で生成される Glue ジョブ

AWS

Lake Formation とは ブループリント Glue ワークフロー Glue クローラ事前ジョブ Glue クローラ事後ジョブ ETL ジョブ ETL 事後ジョブ まとめ Lake Formation とは AWS の提供するデータレイク構築のためのマネージドサービスです。 Glue のクローラを利用…

PuTTY で EC2 へ SSH 接続

AWS

はじめに PuTTYgen でプライベートキーの変換 接続 Tera Term の場合 はじめに PuTTY から EC2 接続は、いつも忘れてしまう。 PuTTYgen でプライベートキーの変換 PuTTY はプライベートキー形式をネイティブにサポートしていないため、EC2 接続用のプライベ…

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

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

Windows server 2016 の日本語化手順

簡易手順 画面キャプチャで見る Settings から Time & Language を選択 Region & Language から Add a language を選択 Add a language のメニューから 日本語 を選択 Set as default で最上部に移動させ、Options を選択 Download language pack でインスト…

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() イベントでロガーを s…

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…

Gradle で始める Payara 5 〜 CDI・JPA 〜

はじめに データソースの登録 CDI の有効化 JPA の導入 Entity の作成 リポジトリの作成 サービスの作成 リソースの作成 アプリケーションの実行 まとめ はじめに 前回作成した、 blog1.mammb.com に続き、データベース処理を追加してみましょう。 データソ…

Gradle で始める Payara 5

はじめに プロジェクトの作成 Payara を組み込みモードで動かす JUL(Java Util Logger) から SLF4J への変更 buildSrc の追加 war モジュールの作成 Hello サーブレット アプリケーションのデプロイ Hello JAX-RS まとめ はじめに いまさら何故? という気は…