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

Markdown で簡単にオンラインドキュメントを生成できる mdBook の使い方

mdBook とは mdBook の導入 mdBook の始め方 mdBook でビルドする mdBook のコマンド mdBook での作業 mdBook で Rust コードを実行 mdBook とは Markdown 形式できれいなドキュメントを作成するためのツールです。 チャプター別に執筆した Markdown ファイ…

Java Stream でよく使う Map 変換

Map へ変換(キー重複無し) Map へ変換(キー重複有り) 値が null 値となる場合に注意 LinkedHashMap へ変換 任意キーでグルーピング 任意キーでグルーピングしてマッピング グルーピングして集計 グループ分け Map へ変換(キー重複無し) 以下の Item のリスト…

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

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

Rust のマルチプラットフォーム UI ライブラリ OrbTk の使い方

OrbTk とは プロジェクトの作成 Hello OrbTk Template によるレイアウト定義 イベント処理 まとめ OrbTk とは Redox という Rust で書かれた UNIX ライク OS のサブプロジェクトとして開発されている Widget Toolkit です。 OrbTk の機能としては以下が謳わ…

Bootstrap のファイル選択を custom-file-input できれいにする

はじめに テンプレート デフォルトの ファイル インプット カスタム・ファイル・インプット bs-custom-file-input を使う ラベルの変更 取消ボタン 取消イベントのマルチブラウザ化 まとめ はじめに Bootstrap の Forms コンポーネントは、デフォルトだと fi…

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

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

macOS アップデート後にいつも出くわす invalid active developer path エラー

macOS のメジャーアップグレード後にいつも出くわすやつ macOS のメジャーアップグレード後には、いつも以下のようなエラーに出くわします。 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Libra…

bash の初期化ファイル .profile, .bashrc, .bash_profile の使い分けと管理方針

はじめに bash の初期化ファイル ログインシェルとは インタラクティブ(対話的)シェルとは ログインシェルとインタラクティブシェルの分類 各種環境における初期化ファイル CentOSの初期化ファイル Ubuntuの初期化ファイル macOS(Catalina以前)の初期化ファ…

Node のバージョン管理ツール n の使い方

Node のバージョン管理ツールである「n」を紹介します。 はじめに n のインストール n 利用準備 node のインストール node のバージョン切り替え node のバージョン削除 はじめに Node のバージョン管理ツールは、nvm nodenv 日本だと nodebrew など色々あり…

Quarkus の始め方 〜 Gradle 編 〜

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

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…