#chiroito ’s blog

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

JDK Mission Control の表示言語を変える

JDK Mission Control のインストールディレクトリにある jmc.ini に言語設定を追加します。 英語にするには -vmargs の下のどこかに -Duser.language=en を追加します。 (略) -vmargs (略) -Djava.net.preferIPv4Stack=true -Djdk.attach.allowAttachSel…

Javaで16進数の乱数を生成

Java で32桁の16進数の乱数を簡単に作りたいなと思ったので作ってみたメモ。 byte[] bytes = new byte[16]; SecureRandom random = new SecureRandom(); random.nextBytes(bytes); String hexString = HexFormat.of().formatHex(bytes); これで変数 hexStrin…

JetBrains GatewayとIntelliJ IDEAでリモート開発

3行で リモートの潤沢なリソースを使って開発したい! 軽いのが良い! IntelliJ Gatewayを試したよ 背景 普段はWindowsのデスクトップマシンでIntelliJ IDEAを使用して開発しています。外出することはほぼありませんが、外出の際はリソースの少ないノートPC…

JVM Language Summit 2023と OpenJDK Comitters' Workshop に参加してきました

8月7日(月)~9日(水) に開催された JVM Language Summit 2023 (JVMLS) と、10日(木)~11日(金)に開催された OpenJDK Comitters' Workshop (OCW) へ参加してきました。 JVM Language Summit は、OpenJDK の超ディープで難易度の高い技術的な話が聞けるカンフ…

podmanのメモ

これは自身の備忘録です。 接続先を確認する方法 podman info | yq '.host.remoteSocket.path'

WSLでの設定メモ

Mavenローカルリポジトリを Windows と共有 /home/<WSLユーザ名>/.m2/settings.xmlを作成 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> </settings></wslユーザ名>

Windows + Podman でQuarkusのDevサービスを使おうとしたら心が折れたけど、いつの間にか対応されてた

Quarkus は、開発モードで動かすと、使用しているミドルウェアをコンテナで起動してくれる Dev サービスという機能があります。開発環境に環境を構築しないで良いのはとても楽です。 Dev サービス は、その中で Testcontainers を使用しており、Testcontaine…

Windows に Docker 環境を構築したメモ

普段は podman を使っていましたが、一部 docker にしか対応していないツールが使えず不便なので、Docker 素人ながら Docker Desktop for Windows を使わずに Windows で docker を使う手順のメモ。 ゴール WLSに docker を入れて、Windows から使えるように…

GraalVM の native-imageで PostgreSQL の DataSource が使えない

要約 Java の native-image で PostgreSQL の JDBC ドライバに含まれる DataSource を使うには META-INF/native-image/serialization-config.json が必要です。 org.postgresql.ds.common.BaseDataSource を継承している全ての DataSource が対象になる可能…

nektos/actにイベントの情報を渡す

GitHub でリリースするときに、指定したバージョンをワークフロー内で使いたい時にnektos/act ではどうしたら良いか分からなかったので試したメモ。 Webにある記事や GitHub のマニュアルによると、${{ github.event.release.tag_name }} でタグの名前が取得…

nektos/act でシークレットを使う

GitHub Action で Maven Central へアップロードするワークフローを作成していたときに困ったのでメモ ワークフローは以下のYAMLで、シークレットには以下の2種類があります。 ユーザ名やパスワード、パスフレーズのように1行の文字列として表現されるもの…

WindowsにPodman Desktopを入れた後にIntelliJ IDEAと他のWSLから実行できるようにする

Windows に Podman Desktop を入れると、コマンドプロンプトやGUI上でコンテナを使えるようになります。 それだけだと不便なので、使用しているIDEとWSLからも使えるように設定をした備忘録です。 Podman Desktop を入れると WSL 上に podman-machine-defaul…

Google Trust Services CAの証明書を OpenShift に適用

※2024年3月13日に更新 自宅にGoogle Domainsでドメイン情報を管理しながらOpenShiftを導入したところ、Chromeからコンソールに繋ごうとすると接続できなくて困ったので、それを修正する備忘録です。 OpenShiftのインストールが終わるとこんな画面になります…

困ったときのGitコマンド集

自分がGitで困ったときに使ったGitコマンドをここに日々追加していきます。 PR をレビューしてもらっていろいろいじっていたら、よく分からなくなって変なのまでリモートに行ってしまった。 git push -f origin <戻したい位置>:<ブランチ> ローカルで良く分…

日本語訳:JEP 425 : Virtual Threads (Preview) Part 5

個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。 原文はこちら:JEP 425: Virtual Threads (Preview) 全パートはこ…

日本語訳:JEP 425 : Virtual Threads (Preview) Part 4

個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。 原文はこちら:JEP 425: Virtual Threads (Preview) 全パートはこ…

日本語訳:JEP 425 : Virtual Threads (Preview) Part 3

個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。 原文はこちら:JEP 425: Virtual Threads (Preview) 全パートはこ…

日本語訳:JEP 425 : Virtual Threads (Preview) Part 2

個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。スターやブコメが付くとモチベーションが上がるかもしれません。(…

Infinispan / Red Hat Data Grid を監視する

Infinispan (Red Hat Data Grid) が提供している監視に使える機能についてまとめました。環境に合わせて適宜設定することをお勧めします。 この記事では Infinispan および Red Hat Data Grid のインストール先のディレクトリをINFINISPAN_HOMEとしています…

日本語訳:JEP 425 : Virtual Threads (Preview) Part 1

個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。スターやブコメが付くとモチベーションが上がるかもしれません。(…

JFRのイベントをCSVに出力する

JDK Flight RecorderファイルをJDK Mission Controlで分析して異常を見つけたら、レポートを作成するためにExcelに取り込みたいなぁと思うことがあります。その場合はjfrコマンドとjqコマンドを使って任意のイベントをCSVに変換しましょう。 イベントを探す …

QuarkusのReactiveからBlockingする処理を呼び出す方法まとめ

前回(Quarkusはどのようにスレッドを使うのか - #chiroito ’s blog)の記事にある通り、QuarkusでReactiveのアプリケーション開発をしていると、Reactiveに対応したデータストアのAPIを使います。これによってReactiveのメリットを完全に得られます。ですが…

Quarkusはどのようにスレッドを使うのか

Quarkusを使ったアプリケーション開発では、従来のフレームワークなどで使われている命令型に加え、ここ最近のフレームワークで使われているReactive型の2種類の実装方法が選べます。命令型の実装ではBlockingとして動作し、Reactiveの実装ではNon Blocking…

Infinispanの認証を無効化する

本番環境では有用な認証ですが、デフォルトで有効になったため開発環境では認証を無効にしたいこともあると思います。 認証を無効にするにはserver/infinispan.xmlを編集します。 <security> <credential-stores> <credential-store name="credentials" path="credentials.pfx"> <clear-text-credential clear-text="secret"/> </credential-store> </credential-stores> <security-realms> </security-realms></security>

コンテナ時代における最新のJava&JVM監視

私は、OpenJDKのCommitter業や仕事でミドルウェアのSolution Architectとして活動している関係上、最近はコンテナ上でJavaアプリケーションを動かすことが非常に多いです。 KubernetesでJavaアプリを監視する場合には、Elasticsearch+KibanaやPrometheus+Gra…

JJUG CCC 2020 Fall で「パフォーマンスのトラブルシュート入門」という内容で喋ってきました

2020年11月7日(土)に開催された JJUG CCC 2020 Fall にて「パフォーマンスのトラブルシュート入門」というタイトルで話をしてきました。 動画はこちらです。 CCC 2020 Fall A02-パフォーマンスのトラブルシュート入門 スライドはこちらになります。 speake…

The changes of JVM Specifications - JVM仕様の変更点

Java 8 以降の Java 仮想マシンの仕様のうち、各バージョンの差分を洗い出しました。the が that になったり、item が entry になる変更で、文の意味が変らない変更は除いています。 I listed the differences between each version of the Java Virtual Mac…

最初の1リクエスト目で何をしているのか?

1 リクエスト目がもの凄く遅くなると言う話を聞いたので分析してみました。 今回は、SpringBootのアプリケーションを OpenJDK 14 で動かしています。そのアプリケーションへ 5 回のリクエストを投げてみて処理のされ具合にどんな違いがあるのかを確認してみ…

Rediness Probeでアプリケーションが十分にJITされたことを検知する

どうも、趣味でOpenJDKのコミッタをやってます。JVMの専門家ではないです。 今回はJITコンパイルによる暖気が十分に行われてから処理を受けられるようにする方法を紹介します。 今回の実装は Oracle の有償機能から OpenJDK へ寄贈され OpenJDK 11 に追加さ…

JITとコードの暖気の実体

どうも、趣味でOpenJDKのコミッタをしてます。 とあるブログを読んでいたら気になる点があったので検証してみました。 JITと暖気 Javaプロセスはアプリケーションを動かしながら必要に応じてバックグラウンドでバイトコードをネイティブコードにコンパイルし…