#chiroito ’s blog

Java を中心とした趣味の技術について

書評:みんなのJava OpenJDKから始まる大変革期!

2月頭に著者のきしださんとスウェーデンへ行った時に、毎日進捗を確認したおかげか、著者から献本をいただきました。 献本いただきました~。前書きから涙なしでは読めない!!#minjava pic.twitter.com/NKIYx38ofN— いとうちひろ(Chihiro Ito) (@chiroito) …

Infinispan 10 のメトリックを Prometheus と Grafana で可視化する

システムを運用する時や検証する時にオシャレなGUIで状況を確認したいことはないでしょうか。Infinispan 10にはこの様な要求を実現する機能が含まれています。今回はその機能を使って Grafana でオシャレなダッシュボードを作れるようにするところまで紹介し…

Infinispan 10 Server のログレベルを変える

ここでは、Infinispan 10 のログレベルを変更する方法を紹介します。通常の動かし方と公式コンテナを使った場合の2通りを紹介します。 プロセスを起動する場合 以下の流れでログレベルを変更します。 ログファイルを編集 infinispan Server を起動 設定ファ…

OpenJDK開発記:JDK-8219904: ClassCastException when calling FlightRecorderMXBean#getRecordings()を直してみた。

これは何? 今回、パッチを書いたのはJDK-8219904のClassCastException when calling FlightRecorderMXBean#getRecordings()です。 [JDK-8219904] ClassCastException when calling FlightRecorderMXBean#getRecordings() - Java Bug System これはJMXのリモ…

OpenJDK開発記:JDK-8222489: jcmd VM.system_properties gives unusable paths on Windowsを直してみた。

これは何? 今回、パッチを書いたのはJDK-8222489のjcmd VM.system_properties gives unusable paths on Windows。 [JDK-8222489] jcmd VM.system_properties gives unusable paths on Windows - Java Bug System Java 14までにはjcmd <PID> VM.system_properties</pid>…

Jfokus 2020 に参加してきた。

2020年2月3日~5日にスウェーデンのストックホルムで開催される VM Tech Summit と Jfokus に参加してきました。私としては初ヨーロッパでもちろん初北欧なわけですが、経由地であるフィンランドのヘルシンキも含め雪がなく、札幌と比べて暖かかったです。 w…

JFR Event Streamingを軽い気持ちで非同期にしてみたら動かなかった

もともとこんな感じで同期で作っていたので「es.start()の部分をes.startAsync()にしたら非同期になるだろ」と思いやったらイベントが全然処理されない。 import jdk.jfr.Configuration; import jdk.jfr.consumer.EventStream; import jdk.jfr.consumer.Reco…

QuarkusでOpentracingを利用する

QuarkusはデフォルトではOpentracingを利用していませんが、拡張機能(extention)を追加して設定を少しするだけでOpentracingを利用できるようになります。 Opentracingの追加 Opentracingの拡張機能を利用するにはmvn quarkus:add-extensionに-Dextensionsで…

Quarkusのデバッグポートを変更する

Quarkusのデバッグポートはデフォルトでは5005ですが、これを変えるには起動時(mvn compile quarkus:dev)に-Ddebugを指定します。 ポート番号を1234に変更する方法は以下の通りです。 mvn compile quarkus:dev -Ddebug=1234 以下のログが出れば変更成功です…

Quarkusで実装したAPIをSwagger-uiで見る

QuarkusでSwagger UIを見るには拡張機能としてSmallRye OpenAPIを追加します。 Swagger UIへのアクセスはホスト名にswagger-uiを追加するとアクセスできるようになります。 拡張機能を追加する方法は以下の3つあります。 https://code.quarkus.io/で作成時に…

Quarkusが公開するポート番号を変更する

src/main/resources/application.propertiesにquarkus.http.portを指定します。 ポート番号を80に変更する方法は以下の通りです。 quarkus.http.port=80

Jfokusについてまとめてみた

Jfokusとはスウェーデンのストックホルムで開催されるカンファレンスです。 www.jfokus.se 2018年にじゅくちょーが参加されたレポートはこちら。 www.sakatakoichi.com 日時 Jfokus 2020は2020年2月3日(月)から5日(水)に開催されます。 この前に2月1日(土)~…

CPUによるOpenJDKのビルド時間の推移

OpenJDK の開発環境を E3-1265 V2 から i9-9900K へ変えてみたのでビルド時間を計ってみました。 ※i5-9400H のCPUもゲットしたので表でだけ性能を追加しました。 それぞれの性能はこんな感じです。 プロセッサ名 物理コア数 ベース動作周波数 ターボブースト…

Windows Subsystem for Linux を使って OpenJDK をビルド

Windows 上で Windows Subsystem for Linux (WSL) を使用して OpenJDK 14 の Windows バイナリをビルドする方法をまとめます。 やりがちですが、Windows Subsystem for Linux (WSL)側のUbuntu 側で hg するのは必須ではありません。(やった) Windows側で好…

エンタープライズ向けのシステムを自動構築するツール

エンタープライズで使われるミドルウェアを使うためには、環境が使えるようになるまで構築に膨大な時間がかかるほか、開発用途などでちょっと使うだけで莫大なライセンス料がかかります。 クラウドが当たり前になって、ライセンス料が非常に安価になって触り…

OpenJDK を開発する流れ

自分が使うコマンドをうっかり忘れるときがあるのでその備忘録のために、開発の流れとそこで使ってる内容をメモ。 公式のガイドはこちらを参考にしてください。The OpenJDK Developers' Guide – Index OpenJDK の開発は以下のような流れで行います。 バグを…

Oracle Management Cloud エージェントをインストールしてみる

はじめに システムを運用するときは、ログやメトリックをモニタリングします。オンプレのシステムでは決まった台数を監視すれば良いことが多いです。また、ストレージが書き込める限り、あとからストレージからログやメトリックを収集できます。クラウドでは…

OSが起動したままマウントしてる XFS のサイズを増やしてみた

/ の領域が足りなくなってきてしまったけど、仮想マシンからデタッチして、他の仮想マシンにアタッチ・マウントしてからサイズ増やして、また戻してからマウントするの面倒臭いなと2ヶ月ぐらい思っていたら、growpartというツールでマウントしたままパーティ…

Terraform を使って Cloud上に OpenJDK の開発環境を整えてみた

OpenJDK のビルドやテストは時間が非常に掛かるので、クラウド上で大量の CPU リソースを使って短時間化できないかを試してみました。 今回作った環境に自分で書いたパッチを置いて Terraform を実行すると、あとはクラウド上で大量のリソースを使ってビルド…

OpenJDK のテストをデバッグ実行するためいろいろ試みてみた

Java のコードをデバッグ実行するには-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:12345みたいな感じのを付けます。これを使って OpenJDK の Java 部分のデバッグができるだろうなと思って試してみました。 jtreg で実行する…

JShell 自体をデバッグしてみた

Java Bug System を見ていたら JShell 自体のデバッグを見つけたので、パッチを書こうと思いJShellについて調べてみた。 使い方や 2 つの JVM が動くぐらいは知っていたけど、具体的には知らないので調べてみました。 試しにjshellコマンドを実行してからjmc…

Yumによるパッケージの自動更新を無効にしてみた

VirtualBox 上で動かしている Linux が yum のキャッシュのせいで時折ディスクフルになっていた。これまでは毎回yum clean allでキャッシュを消してたけど、根本原因を探ってみた。 yum-cronなるものがあると定期的にyumを実行するようだ。 # rpm -qa | grep…

Terraform で Oracle Cloud Infrastructure を構築する

Terraform を使って以下のような構成の Oracle Cloud Infrastructure を構築してみました。 Terraform で作成する環境 設定を以下の 4 つに分けて紹介します。 パラメータ OCI プロバイダの設定 インフラの設定 インスタンスの設定 パラメータは terraform.a…

Oracle Cloud Infrastructure で Terraform へ入門してみた

Oracle Cloud Infrastructure (OCI) で Terraform へ入門するため準備とその確認を以下の手順でしていきます。 Terraform のダウンロード OCI を使った Terraform ファイルを作成 Terraform の初期化 OCI プロバイダの実行 Oracle Cloud Infrastructure の T…

電車情報を使ったIoTリアルタイムストリーム処理

この記事はOracle Cloud Advent Calendar 2018 - Adventar」の12月22日の記事として書かれています。 今回やること これまで仕事で散々 IoT やストリーム処理をしてきたので簡単に作ってみたいと思います。 作ってみたシステムは下図のように東京メトロさん…

Oracle Cloud Infrastructure でインターネットからの通信を許可する

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月10日の記事として書かれています。 セキュリティ・リストで入力方向の通信を設定をします。 変更することは滅多に無いものの、設定画面までの遷移が非常に長いのでいざ変更しようと思うと大変で…

Oracle Digital Assistant のチャットボットのフロントエンドを Facebook Messanger にしてみた

チャットボットを使ったシステムでは、フロントエンドのインターフェースとしてユーザが使い慣れた Facebook Messanger や LINE をインターフェースとして使うことが多いです。 Oracle Degital Assistant は様々なメッセージアプリをフロントエンドとして使…

Oracle Object Storage へマルチパート・アップロードしてみた

この記事はOracle Cloud Advent Calendar 2018 - Adventarの12月8日の記事として書かれています。 大きなファイルのアップロードにはマルチパートアップロードが有効です。今回はOracle Cloudのオブジェクトストレージにファイルをマルチパートアップロード…

Oracle Digital Assistantのチャットボットをエクスポートしてみた

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月7日の記事として書かれています。 Oracle Degital Assistant で作ったチャットボットをExportしてみましょう。 チャットボットの一覧画面でエクスポートしたいチャットボットのメニューを選択し…

Oracle Digital Assistantのチャットボット入出力をGoogle翻訳で翻訳してみた

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月6日の記事として書かれています。 Oracle Digital Assistant は外部の翻訳サービスを使って翻訳できます。 本例では、Google翻訳を使用して翻訳します。事前に Google Cloud Platform で Google…