いきなりJavaアプリケーションサーバの保守を任されることになった人のためのチートシート(2)
はじめに
前回はアプリケーションサーバにデバッガをアタッチする方法までを説明しました。
今回は、ソースコードを眺めているだけでは通ることを見つけにくい(のでbreakポイントを仕掛け忘れがちな)クラス/メソッドについてリストにしていきます。
いきなりJavaアプリケーションサーバの保守を任されることになった人のためのチートシート(1)
目的
Javaを用いた開発にある程度慣れている場合でも、初めてアプリケーションフレームワーク上で開発するとなると戸惑うことがあります。
ここでは、ある程度Javaに対する知識が、Java EE/Spring Bootアプリケーションの保守を担当になって、ローカルで実行する、そしてデバッグを行おうとした際に引っかかりそうなポイントをまとめていきたいと考えています。
Maven Enforcer Pluginの実行をスキップする
とあるMavenプロジェクトを mvn clean install
しようとしたところ、次のエラーになり正常終了しませんでした。
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.BannedRepositories failed with message: Current maven session contains banned repository urls, please double check your pom or settings.xml: central - http://my.internal.repo/xxx snapshots - http://my.internal.repo/yyy
MyBatisでストアドプロシージャを実行する
(もしかしたら以前どこかで書いたかも…)
MyBatisでストアドプロシージャを実行する必要に迫られたことがありましたが、オフィシャルリファレンスを見てもどこにもストアドプロシージャについて記述がないので困った記憶をふと思い出しました。
td-agentにプロキシを設定する
sudo systemctl edit td-agent
で編集画面を開き、次を記述:
[Service] Environment="HTTP_PROXY=http://myproxy.example.com:8080"
finalと実質finalの違い
https://ja.stackoverflow.com/a/63099/2808 を見ていて気づいたのですが、 実質final
というのは脳内(コンパイラ)で final
を補完してくれる、というような処理が行われるわけではないのですね。
Spring Bootでは -parameters オプションは有効化されている
MyBatisの設定項目として useActualParamName
というものがあります。マニュアルの説明によると、
…ステートメントの引数を参照する際、メソッドシグネチャで宣言されている名前で参照できるようにします。 このオプションを有効にする場合、プロジェクトを Java 8 (コンパイラオプション -parameters 付き)でコンパイルする必要があります。 (導入されたバージョン: 3.4.1)
Hello Project Panama
追記: Hello Project Panama, on Java17 に Java17 版を記載しました。
はじめに
今個人的にすごく知りたいのはこちらです。ご回答よろしくお願いします!!!!
- 動的確保したメモリー領域の解放戦略 - スタック・オーバーフロー
(質問読んでもらえれば(というかタイトル見てもらえれば)わかると思うんですけど、別に Java がわからん、とか Rust がわからん、という質問では無いです。念の為。もちろん Java も Rust もわからない(多分コード正しくない)ですけどそれは別の話。)
…Nodeのnative moduleをRustで書いてみる(Neon)
RustプログラムのGUIにElectronを使うことを考えています。
その前調査としてNodeのネイティブモジュールとしてRustプログラムを利用できるようにする Neon というツールを使ってHello, worldしてみることにしました。
`fluent-plugin-bigquery` のパラメータ `request_timeout_sec` 、未設定の場合はどうなるの?
要旨
fluent-plugin-bigquery
の README を読んでいると、 request_timeout_sec
のデフォルト値が nil
になっている(その下の request_open_timeout_sec
には 60
が設定されているのに)のが気になりました。
結論としては、 request_timeout_sec
は最終的に httpclient
の send_timeout
及び receive_timeout
パラメータとして利用され、未設定の場合は そこで指定されているデフォルト値である send_timeout = 120
, receive_timeout = 60
が採用されるようです。
Spring BootのRestTemplateで text/plain;Windows-31J なRESTレスポンスを処理する
要旨
JSONを返してくるのだけれどMIME typeが text/plain;charset=Windows-31J
なレスポンスを、RestTemplateで扱いたい。
@GetMapping(produces = "text/plain;charset=Windows-31J") public String response() { return "{\"text\": \"こんにちは世界\" }"; }
reqwest使おうとしたけどよくわからん
はじめに
年の瀬にスクレイピングしたくなって Rust 勉強し始めたけれど、直前に reqwest ライブラリに更新が入ったみたいでコピペコーディングが阻まれた。
知っとかないといけなかったこと
- 今回の更新 reqwest 0.10.0 で async/await がデフォルトになった(ので従来のサンプルコードは動かなくなった)。
- Cargo には feature flag(feature toggle) 機能があって、reqwest やら(オフィシャルサンプルで利用している)tokio やらもこれを利用している。
- (async/await を使わない、従来の)blocking 版をどうやって使うのか全然わからなかったけれど、features で明示的に指定する必要があった。
- オフィシャルサンプルを動かすにしてもこれを知っておかないといけなかった。
- tokioを用いる必要があった。