JUnit5 Jupiter による Parameterized Test の使い方

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

CSS だけで並び替え矢印 ソートインジケータ を作る

はじめに CSS で三角形を作る 準備 ボーダーで正方形を書く ボーダーを広くする ボーダーをさらに広くする 不要なボーダーを消す 2つ目の三角形を作成する 2つの三角形の並びを調整する テーブルを作る ソートインジケータ を付ける クリックイベントで動き…

REST と RESTful と RESTish について

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

Docker でロードバランサ・アプリケーションサーバ・DBサーバの環境構築

はじめに Nginx でロードバランサを構成する Webサーバ1号機の作成 Webサーバ2号機の作成 ロードバランサの作成 ロードバランサとWebサーバの起動 Web アプリケーションの準備 Docker でアプリケーションをビルドする DBサーバの準備 ロードバランサとアプリ…

Docker のインストールからイメージビルド・コンテナ起動・Composeまで

はじめに Docker のインストール Docker の起動 コンテナの起動 Docker Hub から nginx のイメージを取得 取得したイメージから ws-nginx という名前でコンテナを作成 作成したコンテナを起動 コンテナの操作 動いているコンテナの一覧 コンテナの停止 停止…

Chrome と Firefox で異なる Cookie の送信について

はじめに Cookie 検証用コード Chrome による Cookie 送信 Firefox による Cookie 送信 RFC 6265 での定義 まとめ はじめに とあるシステムで Chrome では動くけど、Firefox だと動かないという障害がありました。 JavaEE の Flash スコープを使った箇所で問…

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

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

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

はじめに プロジェクトの作成 Entity の作成 サービスの作成 リソースの作成 データベースの起動 アプリケーションの起動 登録レコードの確認 まとめ はじめに 以下では Quarkus による JAX-RS を使った簡単なアプリケーションを作成しました。 blog1.mammb.…

アクセスログフォーマットの種類とカスタマイズ

Common Log Format Combined Log Format カスタム Log Format Common Log Format 伝統的な host ident authuser date request status bytes 形式のログ出力です。 以下のような出力となります。 127.0.0.1 user-identifier frank [10/Oct/2000:13:55:36 -070…

Quarkus による初めてのアプリケーション作成

Quarkus とは このガイド アーキテクチャ プロジェクト作成 エンドポイント リソースの作成 開発モードで起動 インジェクションの利用 機能テスト パッケージング Quarkus とは Red Hat が作っている、最近流行りのマイクロサービス向けの Java アプリケーシ…

Amazon Corretto 11

Amazon Corretto Amazon 提供の無償利用可能な JDK Corretto 8 の LTS は四半期ごと、最短でも 2023 年 6 月まで更新予定 Corretto 11 の LTS は四半期ごと、最短でも 2024 年 8 月まで更新予定 Corretto 11 brew でインストール $ brew cask install corret…

双方向の依存を避ける

これがあったら こうして こうして こう これがあったら こうして こうして こう

Protocol Buffers Proto3 文法 早めぐり

概略 メッセージタイプ スカラー値型 サービス 入れ子のメッセージ enum repeated map oneof デフォルト値 パッケージ インポート オプション コンパイラオプション blog1.mammb.com 概略 .proto ファイルを作成し、protoc というコンパイラで各言語向けのス…

Java デバッグオプション (JDWP)

JVMのデバッグを有効にするには Javaデバッグワイヤプロトコル(JDWP)エージェントを有効にします。 デバッグを有効にした場合、オーバーヘッドが生じることに加え、セキュリティ上の問題となる場合がありますので、本番環境では使用してはなりません。 Java5…

gRPC はじめの一歩 in Java

gRPC とは プロジェクトの作成 .proto ファイルの作成 サーバコードの実装 クライアントコードの実装 実行 gRPC とは .proto による IDL(Interface Description Language)からRPC用のソースを生成 REST と比べ API 仕様が規定しやすい Go、Java、Node、Pytho…

「Spring Boot で persist()」 のあらすじ

はじめに 題材 トランザクションインタセプタ リポジトリの save() 呼び出し 永続化イベント トランザクションの commit コミット前処理の flush() ActionQueue の実行 まとめ はじめに フレームワークも成熟しており、中身の動作を意識することも少なくなっ…

Gradle 5.2 系の BOM サポート

Spring Boot を例に。 Gradle 5.2 から BOM インポートが正式にサポートされました。 implementation platform を使い以下のように書けます。 plugins { id 'java' id 'org.springframework.boot' version '2.1.8.RELEASE' } sourceCompatibility = targetC…

Java 言語でつくるインタプリタ 〜パーサ#3〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

Java 言語でつくるインタプリタ 〜パーサ#2〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

Java 言語でつくるインタプリタ 〜パーサ#1〜

Java 言語でつくるインタプリタ 「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go…

Java 言語でつくるインタプリタ 〜レキサー〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

今始めずにいつやるの? Rust の始め方

Rust とは Rust のインストール rustup のインストール バージョンの確認 アップデート アンインストール Hello World Hello Cargo ビルド 実行 check リリースビルド クレート 依存の追加 ドキュメント Rust plugin for IDEA Rust の文法以前、環境構築と使…

Java Stream におけるソートのお作法

ソート対象 昔ながらのソート Lambda を利用した冗長なソート Java8 Stream における正しいソート thenComparing による複合キーのソート ソート条件の指定 null コンパレータ Map のソート まとめ ソート対象 以下のような id と name プロパティを持った I…

Windows PowerShell で wget

Windows 環境で wget したい場合は PowerShell で代替できます。 PowerShell 2.0 で wget PowerShell 3.0 以降で wget PowerShell 2.0 で wget (new-object System.Net.WebClient).Downloadfile("https://example.com/", "C:\tmp\example.html") PowerShell …

Micronaut で Hello World するだけしてみる

Micronaut とは Quick Start アプリケーションの作成 実行 Micronaut とは マイクロサービスベース用のフルスタックフレームワーク 低フットプリント JVMベースで、Java・Kotlin・Groovy などで書ける GraalVM の native image の実験的サポートがある コン…

Kotlin/Native で Hello World するだけしてみる

Kotlin/Native で Hello World してみます。 Kotlin なので IDEA を使いましょう。 Plugin 最新化 プロジェクトの作成 プロジェクト構成 サンプルソース まとめ Plugin 最新化 Kotlin Plugin を最新化しておきます。 Update ボタンで更新。プラグインのイン…

AdoptOpenJDK のインストール

Mac mini 2018 が来たのでセットアップ Homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Homebrew version $ brew --version Homebrew 1.8.2 Homebrew/homebrew-core (git revision 4d0d; …

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring Boot DevTools で Automatic Restart 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の5回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 Bootstrap と Thymeleaf でページネーション 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の4回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 登録・更新処理と Bean Validataion 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の3回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …