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 でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring Data JPA でデータベースアクセス 〜

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

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring MVC で Hello World 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 Web Application 作成の流れを、細か過ぎる説明は省き、ざっくりと一通り見ていきます。 目次 Spring MVC で…

Java EE Spec 一覧

Java EE Spec Version JSR リリース JavaEE1.3 JSR-58 2001年9月 JavaEE1.4 JSR-151 2003年11月 JavaEE5 JSR-244 2006年5月 JavaEE6 JSR-316 2009年12月 JavaEE7 JSR-342 2013年5月 JavaEE8 JSR-366 2017年9月 バージョン一覧 太字が前バージョンからの変更…

JVM主要オプション

コンパイラフラグ GC戦略 GCログ ヒープ関連 設定しておきたい Java 起動オプション まとめ コンパイラフラグ JVMチューニングで最初に検討するのがコンパイラの選択となる。 ただ、近年は階層的コンパイルが有効になっていたり、プラットフォーム別で適した…

開発用 Windows マシンの SSD が ディスクフル なので色々消す

Maven のローカルキャッシュ削除 $ mvn dependency:purge-local-repository または HOME\.m2\repository をバッサリ削除。 Gradle のローカルキャッシュ削除 $ gradlew cleanBuildCache またはHOME\.gradle をバッサリ削除。 Oracle Database Express Editio…

Java7 と Java8 ランタイム配備の違い、または如何にして CurrentVersion has value '1.8', but '1.7' is required エラーが起こるか

はじめに JDK7(あるいはそれ以前の)インストール時の挙動 JDK8(あるいはそれ以降の)インストール時の挙動 Java Runtime Environment \ CurrentVersion Windows サービス起動する Java アプリの場合話しがややこしくなる Java7 と Java8 では MaxTenuringThre…

glassfish.org は消滅したので DTD が読み込めなくなったのですケド

TL;DR Java EE の Oracle から Eclipse Foundation への移管に伴い以下のような DTD の URL は今や存在しないので XML 操作時には注意 http://glassfish.org/dtds/glassfish-resources_1_5.dtd とあるプロジェクトで 久しぶりの改修。 Gradle スクリプトがエ…

商用環境で設定しておきたいセキュリティ関連 HTTP ヘッダまとめ

TL;DR X-Content-Type-Options X-Frame-Options(XFO) X-XSS-Protection Content-Security-Policy (CSP) Upgrade-Insecure-Requests Strict-Transport-Security (HSTS) Public-Key-Pins (HPKP) 設定 TL;DR X-Content-Type-Options MIME スニッフィングの無効…

NetBeans の JDK は netbeans.conf で設定する

単なるメモ。 JDKの設定 NetBeans自身の JDK は以下の定義ファイルで変更する。 C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf # Default location of JDK: # (set by installer or commented out if launcher should decide) # # It can be overridde…

20行ぐらいでリッチなテキストエディタをJavaFXで

Nashorn スクリプトで作る Ace Editor とは 50行ぐらいでファイル処理 実行 Nashorn スクリプトで作る ace.js として以下のスクリプトを作成します。 #!/usr/bin/jjs -fx var html = "" + "<html><head>" + "<style type='text/css' media='screen'>" + " #editor { position: absolute; top: 0; right: 0; bott</style></head></html>…