へー、と思いながら見ていた。
Ruby 3.1.5, Ruby 3.2.3 あたりが出たときに修正されるのかな? という感じだったので注意しておきましょう。
(まさにどっちのバージョンも本番運用しているけど、以前のバージョンと比較できる環境がないのでメモリ使用量が増大しているかはわからないのだった
java の引数に指定する、いわゆるこういうやつ。
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.registry.ssl=false
これが掲題の通り、 macOS 環境の ColdFusion 2023 (JRE17) で動作しなかった。
確認する限りだと Java 8 あたりでデフォルト有効化されているっぽかった。
とはいえ以下のような記事もあり、過去には ColdFusion 付属の JRE 環境でも jmxremote が動いている模様は観測されていた。
わからん。
jvm.config
ファイルを直接編集したり、 ColdFusion Administrator の Java と JVM 項目から変更してみたりしたけど、結局バンドルされている JRE では動作させることができなかった。
掲題の通り macOS 環境で、なおかつ anyenv を利用していたので、 jenv をインストールしてから brew で openjdk@17
パッケージをインストールして、 ColdFusion を配置したディレクトリ以下で jenv local openjdk64-17.0.8.1
などしたあと、 ColdFusion が利用する Java を入れ替えた。
備忘録として雑に記載しておく。
❯ anyenv install jenv ❯ exec $SHELL -l ❯ brew install openjdk@17 ❯ jenv enable-plugin export ❯ exec $SHELL -l ❯ sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk ❯ echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc ❯ jenv add `/usr/libexec/java_home -v "17"` ❯ cd ~/Workspace/ColdFusion_2023_WWEJ_macos ❯ jenv local openjdk64-17.0.8.1
この後 ColdFusion Administrator なり jvm.config ファイルなりから Java へのパスを書き換えて ColdFusion プロセスを再起動すれば設定される。
ちなみにシンボリックリンクを貼るトコは brew でインストール時に表示されるが、忘れた場合は brew info
すると教えてくれるので活用しよう。
❯ brew info openjdk@17 ==> openjdk@17: stable 17.0.8.1 (bottled) [keg-only] Development kit for the Java programming language https://openjdk.java.net/ /opt/homebrew/Cellar/openjdk@17/17.0.8.1 (635 files, 305MB) Poured from bottle using the formulae.brew.sh API on 2023-10-16 at 18:25:37 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/o/openjdk@17.rb License: GPL-2.0-only with Classpath-exception-2.0 ==> Dependencies Build: autoconf ✘, pkg-config ✔ Required: giflib ✔, harfbuzz ✘, jpeg-turbo ✔, libpng ✔, little-cms2 ✔ ==> Requirements Build: Xcode (on macOS) ✔ ==> Caveats For the system Java wrappers to find this JDK, symlink it with sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk openjdk@17 is keg-only, which means it was not symlinked into /opt/homebrew, because this is an alternate version of another formula. If you need to have openjdk@17 first in your PATH, run: echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc For compilers to find openjdk@17 you may need to set: export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include" ==> Analytics install: 30,027 (30 days), 91,023 (90 days), 185,024 (365 days) install-on-request: 20,494 (30 days), 61,393 (90 days), 109,428 (365 days) build-error: 106 (30 days)
改めて jmxremote 周りの記述を jvm 設定として投入する。
結局これを設定して何がしたかったか、というと、VisualVM などで JVM メトリクスをウォッチしたかった。
ある処理がデータ取得・整形など走ったりしていてめちゃくちゃ重く、なおかつ集計対象として時間軸に比例して増えるテーブルをフルスキャンする仕様で、直接 JVM 側にアタッチしたかったという所から始まったのだけど、めちゃくちゃ時間がかかってしまった。 次はリファクタリングだ……。
というわけで jmxremote
がなんか動かねえんだけど! という人はバンドルされている Oracle JRE から OpenJDK などに変更してみてください。 ちなみにこれ本番系では推奨されない (動作保証環境から逸脱する) のは当然なので、開発や検証などの環境にとどめておきましょう。
Github には revert ボタンがあるのでカジュアルに使いがちだけど、 compare で差分 0 になるのなんでなんだろう、と思っていたら同じような悩みの人はいるのだった。
結局のところ、 revert を指定するコミットで含まれるファイルに、より後のコミットで変更があれば差分が出てくるという理解でよさそう。
man を読んでもいまいちわからねえし、日本語ドキュメントでは打ち消しと表現されるけど、個人的には revert は無効化であると思う。
指定したコミットに含まれる変更内容をすべて無効とする。 なので、同じ内容の変更をもう一度 push しても、 Github などの画面上で差分が出ないという理解だ。
revert したいモチベーション、おそらく初期に罹患するのはこのあたりだと思う。
で、とりあえず Github 上から revert して PR 出して merge すると、該当ブランチの HEAD から消えるので「よかったよかった」となり、再度 feature ブランチを作成して、同様の修正を push する。 そうすると差分が出ずに「ナ、ナンデ!?」となる。
ここで取るべきは、 revert の revert と言われるやつである。 まあ直感的に分かりづらいのだけど、 revert した内容とまったく同一の内容を復活させるには revert しかない、と思っておけば良い。
なのでこの場合、feature ブランチに push すべきなのは、個々のファイルではなく revert したコミットを再度 revert する、というコミットだ。
revert というか歴史修正系でよくあるのが、 conflict するのが嫌でやりたくない、というやつ。 わかるんだけどそれはお前の罪なのでやれ。 どうすれば良いかわかんなかったら、修正内容をまとめて git おじさんかおばさんに頭を下げるしか無い。
万能の解決方法はないのだ。
いや僕もこのあたりは「git は (SVN など先発とは違って) 頭がいい」という説明をよくされたので、いわゆる merge の際の挙動がすごいのだと思っていた。 実際はそうではない。 そうではないのだ……!
つらい。
よくわからなくなってきた。 備忘録みたいな記事のつもりだったのに。
とりあえず PullRequest 必須にしておいて直接 push されないようにして置けば最低限いいかな、という感じ。
[main,develop]*
ちなみに上記の条件だと、予想外のブランチが引っかかることがある (実際引っかかった)。
作業ブランチの大本 (main や develop など) 単独で保護する、とかでも全然作業回っているので、あえて上記のように複数設定する必要はなさそう。
大正義クラスメソッドくんも「個別にルールを作れ……」と言っています。
Docker 化できないフレームワークを使うハメになっているので、久しぶりにシステムワイドで色々入れている。
❯ brew install httpd
❯ brew services start httpd
❯ brew services stop httpd
❯ brew services info httpd
/opt/homebrew/var/www
The default ports have been set in /opt/homebrew/etc/httpd/httpd.conf to 8080 and in /opt/homebrew/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo.
❯ gls /opt/homebrew/etc/httpd/ total 100K drwxr-xr-x 7 donbulinux admin 224 11 23 2022 . drwxrwxr-x 25 donbulinux admin 800 9 22 19:10 .. drwxr-xr-x 15 donbulinux admin 480 2 3 2023 extra -rw-r--r-- 1 donbulinux admin 21K 10 2 18:38 httpd.conf -rw-r--r-- 1 donbulinux admin 13K 10 2 18:38 magic -rw-r--r-- 1 donbulinux admin 60K 10 2 18:38 mime.types drwxr-xr-x 4 donbulinux admin 128 11 23 2022 original
/opt/homebrew/etc/httpd/httpd.conf
/opt/homebrew/etc/httpd/extra/httpd-ssl.conf
マジでよくわかんなかったので備忘録として書いておきます、これどれくらいの人に需要あるんだろうな。
続きを読む