Docker でRDB環境構築盛り合わせ

 はじめに PostgreSQL PostgreSQL への接続 ロールの作成 データベースの作成 テーブルの作成と操作 オブジェクトの削除 psql の代表的なメタコマンド MariaDB MariaDB への接続 ユーザの作成 データベースの作成 テーブルの作成と操作 オブジェクトの削除 …

Java によるネットワークプログラミングの基礎知識

 はじめに ソケット ソケットによるサーバ実装 スレッドプールを利用したサーバ実装 ブロッキングI/Oの課題 ノンブロッキングI/O I/O多重化(multiplexing) バッファ操作 I/O多重化を使ったサーバ実装 非同期チャネル NIO2 によるエコーサーバ まとめ はじめ…

Docker による nginx の導入と基本設定

はじめに nginx のプロセス docker で nginx を導入する nginx の構成 nginx コマンド nginx の基本設定 location ディレクティブのマッチング アクセス制限を行う はじめに Docker による nginx の導入と、nginx の基本設定についての説明です。 nginx のプ…

Java でシンプルなインタプリタを実装する

はじめに プログラミング言語 インタプリタ 字句解析器 Lexer 抽象構文木を生成する Parser 評価機 Evaluator まとめ はじめに Writing An Interpreter In Go を元に、Java を使って 1,000行 以下でインタプリタを作ります。 Go言語でつくるインタプリタ作者…

【Modern Java】Java15で正式リリースとなったテキストブロック(JEP 378: Text Blocks)

JEP 378: Text Blocks テキストブロックの使い方 テキストブロックのインデントの扱い エスケープ・シーケンス 文字列補間(string interpolation) blog1.mammb.com JEP 378: Text Blocks テキストブロックは複数行の文字列リテラルで、ほとんどのエスケープ…

【Modern Java】JEP 330 Launch Single-File Source-Code Programs

JEP 330: Launch Single-File Source-Code Programs Source-file mode Source-file mode の処理の流れ ランタイム・オプション まとめ blog1.mammb.com JEP 330: Launch Single-File Source-Code Programs Java11 より単一のファイルの Java コードを、明示…

【Modern Java】Local-Variable Type Inference

JEP 286: Local-Variable Type Inference ローカル変数宣言型推論の注意点 4つの原則 7つのガイドライン 「インターフェースを使ったプログラミング」についてはローカル変数では重視しなくてよい ダイヤモンド<> やジェネリックメソッドにおける var 利用は…

【Modern Java】java.net.http.HttpClient (JEP 321)

JEP 321: HTTP Client (Standard) Http Client で GET リクエスト Http Client で POST リクエスト 非同期リクエスト Json レスポンスからオブジェクトへマッピング Json の POST HttpRequest.Builder のコピー レスポンスヘッダ Cookie リダイレクト Proxy …

【Modern Java】主要新機能 もくじ

長期サポート(LTS) の Java8 以降の主な拡張機能です。 Java 9 (2017年9月21日) Java 10 (2018年3月20日) Java 11 (2018年9月25日) Java 12 (2019年3月19日) Java 13 (2019年9月17日) Java 14 (2020年3月17日) Java 15 (2020年9月15日) Java 16 Java 17 Java…

Gradle における Java Platform Module System (JPMS) の運用

はじめに Gradle でのモジュールシステムの運用 モジュールの依存関係の定義 非モジュール・ライブラリの利用 複数モジュールから構成されるアプリケーションの例 list モジュール utilities モジュール application モジュール まとめ はじめに Java 9 で導…

【Modern Java】Java Platform Module System (JPMS)

JSR 376: JavaTM Platform Module System モジュール宣言 モジュールの定義 ServiceLoader の依存関係 システムモジュール Automatic Module(自動モジュール) と Unnamed Module(無名モジュール) Gradle における Java Platform Module System blog1.mammb.c…

【Modern Java】JEP 269 Convenience Factory Methods for Collections

JEP 269: Convenience Factory Methods for Collections 旧来のインスタンス生成 コレクションの生成 マップの生成 その他特記事項 blog1.mammb.com JEP 269: Convenience Factory Methods for Collections Java 9 でコレクションとマップのインスタンスを簡…

【Modern Java】Java 14 で正式導入となった Switch 式(JEP 361)

JEP 361: Switch Expressions (Standard) フォールスルー Switch 式 値の生成 まとめ blog1.mammb.com JEP 361: Switch Expressions (Standard) Java 12でプレビュー(JEP 361)として導入された、Switch Expressions が Java 14 で正式導入となりました。 以…

【Modern Java】jpackage ツール(JEP 343) の使い方

JEP 343: Packaging Tool (Incubator) jpackage の使い方 jpackage のオプション Gradle からの jpackage 利用 パッケージのインストール まとめ blog1.mammb.com JEP 343: Packaging Tool (Incubator) Java 14 で追加されたパッケージングツールによりプラ…

Java で暗号化 ZIP を作成する

はじめに zip4j zip4j の利用 暗号化ZIPファイルの作成 まとめ はじめに Java で暗号化ZIP扱うライブラリなんて腐るほどあるだろう。 なんなら標準ライブラリだけで完結できるだろう。 と高を括っていましたが、Commons Compress でも no support for encryp…

「gyp: No Xcode or CLT version detected!」を修正する

No Xcode or CLT version detected npm install や yarn install などで以下のエラーが発生。 gyp: No Xcode or CLT version detected! gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 ... macOS Catalina でバージョンを…

Deno on VSCode

はじめに VSCode Deno extension はじめに 前回 blog1.mammb.com で Deno を使った TypeScript の始め方について紹介しました。 TypeScript なので VSCode を使うことが多いと思いますが、そのままだとエディタ上でエラー表示されます。 最初のエラーは、イ…

TypeScript のはじめかた - Deno編 -

はじめに Deno とは Deno のインストール Hello TypeScript With Deno Http server TypeScript Compiler Options はじめに 前回 blog1.mammb.com では Node を使った TypeScript の始め方について見てきました。 今回は、Deno を使って TypeScript の始め方…

TypeScript のはじめかた-環境編-

はじめに Node のインストール プロジェクトの初期化 TypeScript コンパイラの導入 TypeScript の設定 Hello TypeScript DOM 操作 まとめ はじめに 簡単なサンプルを交えて TypeScript の始め方について紹介します。 Node のインストール Node (と npm ) が…

SchemaSpy で既存データベースから綺麗なデータベースドキュメント生成

はじめに データベースの準備 SchemaSpy の準備 SchemaSpy の起動 SchemaSpy のドキュメント Redmine のデータベースドキュメント まとめ はじめに SchemaSpy は、既存のデータベースからデータベースのドキュメントをHTMLで出力するJava製のツールです。 こ…

Docker Compose で Redmine 公式イメージを起動する

はじめに Docker Compose の準備 Redmine の起動 コンテナの停止 はじめに Docker Compose で Redmine をとりあえず起動するだけの手順です。 Docker Compose の準備 Docker の準備は以下を参照してください。 blog1.mammb.com Docker Compose を使うので準…

Docker エンジンと docker-compose.yml のバージョン

Docker エンジンと Compose ファイルのバージョン対応表 Version 2.0 Version 2.1 Version 2.2 Version 2.3 Version 2.4 Version 3.0 Version 3.1 Version 3.2 Version 3.3 Version 3.4 Version 3.5 Version 3.6 Version 3.7 Docker エンジンと Compose ファ…

IntelliJ IDEA Command Line Launcher の使い方

はじめに Command Line Launcher の作成 Command Line Launcher の使い方 はじめに IntelliJ IDEA をコマンドラインから起動する Command Line Launcher の使い方について紹介します。 Command Line Launcher の作成 Tools - Create Command-line Launcher..…

Quarkus のスレッドモデルと Quarkus Reactive Routes

はじめに Micronaut のスレッドモデル Quarkus のスレッドモデル Quarkus Reactive Routes Quarkus Reactive Routes のパフォーマンス まとめ はじめに 先日、Quarkus のブログに以下の記事がポストされました。 quarkus.io Micronaut 陣営が行ったマイクロ…

テトリスから何か学んだことがあるとすれば、間違いが積み重なると成果は消え去ってしまうということだ

etc

2011年ごろに Twitter で(様々な亜種とともに)広まった格言 If Tetris has taught me anything, it's that errors pile up and accomplishments disappear.

Quarkus 1.4 で追加されたコマンドラインモード

はじめに プロジェクトの作成 メインクラスの作成 実行 QuarkusMain アノテーション main メソッドからの実行 メインスレッドでの待機 はじめに Quarkus 1.4 で Web アプリケーションではなく、コマンドラインアプリケーションの作成がサポートされました。 …

ソフトウェアシステムアーキテクチャ構築の原理におけるビューポイント

アーキテクチャとアーキテクチャ記述 アーキテクチャ記述(architecturaldescription,AD)とは、ステークホルダが理解でき、アーキテクチャがその関心事に合致していることを説明できる方法で、アーキテクチャを文書化した成果物のことである。 優れたアーキ…

クラウドネイティブシステムの特性

Cloud Native DevOps with Kubernetes におけるクラウドネイティブシステムの特性 自動化可能 アプリケーションのデプロイや管理が自動化されている ユビキタスかつ柔軟 ディスクなどの物理リソースや、実行基盤となるコンピューティングノードに関する詳細…

Quarkus リリースノートまとめ

Quarkus 1.4 Quarkus 1.3 Quarkus 1.2 Quarkus 1.1 Quarkus 1.4 2020年4月 Java11 が標準となり Java8 が非推奨になった Java8 のサポートは Quarkus 1.6 で終了予定 コマンドラインアプリケーションの構築が可能となった Quarkus 1.4 で追加されたコマンド…

Apache POI 4.X チートシート

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