いきなりJavaアプリケーションサーバの保守を任されることになった人のためのチートシート(2)


はじめに

前回はアプリケーションサーバにデバッガをアタッチする方法までを説明しました。

今回は、ソースコードを眺めているだけでは通ることを見つけにくい(のでbreakポイントを仕掛け忘れがちな)クラス/メソッドについてリストにしていきます。

Read more ⟶

いきなりJavaアプリケーションサーバの保守を任されることになった人のためのチートシート(1)


目的

Javaを用いた開発にある程度慣れている場合でも、初めてアプリケーションフレームワーク上で開発するとなると戸惑うことがあります。

ここでは、ある程度Javaに対する知識が、Java EE/Spring Bootアプリケーションの保守を担当になって、ローカルで実行する、そしてデバッグを行おうとした際に引っかかりそうなポイントをまとめていきたいと考えています。

Read more ⟶

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
Read more ⟶

MyBatisでストアドプロシージャを実行する


(もしかしたら以前どこかで書いたかも…)

MyBatisでストアドプロシージャを実行する必要に迫られたことがありましたが、オフィシャルリファレンスを見てもどこにもストアドプロシージャについて記述がないので困った記憶をふと思い出しました。

Read more ⟶

td-agentにプロキシを設定する


sudo systemctl edit td-agent

で編集画面を開き、次を記述:

[Service]
Environment="HTTP_PROXY=http://myproxy.example.com:8080"
Read more ⟶

finalと実質finalの違い


https://ja.stackoverflow.com/a/63099/2808 を見ていて気づいたのですが、 実質final というのは脳内(コンパイラ)で final を補完してくれる、というような処理が行われるわけではないのですね。

Read more ⟶

Spring Bootでは -parameters オプションは有効化されている


MyBatisの設定項目として useActualParamName というものがあります。マニュアルの説明によると、

ステートメントの引数を参照する際、メソッドシグネチャで宣言されている名前で参照できるようにします。 このオプションを有効にする場合、プロジェクトを Java 8 (コンパイラオプション -parameters 付き)でコンパイルする必要があります。 (導入されたバージョン: 3.4.1)

Read more ⟶

Hello Project Panama


追記: Hello Project Panama, on Java17 に Java17 版を記載しました。

はじめに

今個人的にすごく知りたいのはこちらです。ご回答よろしくお願いします!!!!

(質問読んでもらえれば(というかタイトル見てもらえれば)わかると思うんですけど、別に Java がわからん、とか Rust がわからん、という質問では無いです。念の為。もちろん Java も Rust もわからない(多分コード正しくない)ですけどそれは別の話。)

Read more ⟶

Nodeのnative moduleをRustで書いてみる(Neon)


RustプログラムのGUIにElectronを使うことを考えています。

その前調査としてNodeのネイティブモジュールとしてRustプログラムを利用できるようにする Neon というツールを使ってHello, worldしてみることにしました。

Read more ⟶

`fluent-plugin-bigquery` のパラメータ `request_timeout_sec` 、未設定の場合はどうなるの?


要旨

fluent-plugin-bigqueryREADME を読んでいると、 request_timeout_sec のデフォルト値が nil になっている(その下の request_open_timeout_sec には 60 が設定されているのに)のが気になりました。

結論としては、 request_timeout_sec は最終的に httpclientsend_timeout 及び receive_timeout パラメータとして利用され、未設定の場合は そこで指定されているデフォルト値である send_timeout = 120, receive_timeout = 60 が採用されるようです。

Read more ⟶

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\": \"こんにちは世界\" }";
}
Read more ⟶

reqwest使おうとしたけどよくわからん


はじめに

年の瀬にスクレイピングしたくなって Rust 勉強し始めたけれど、直前に reqwest ライブラリに更新が入ったみたいでコピペコーディングが阻まれた。

知っとかないといけなかったこと

  • 今回の更新 reqwest 0.10.0 で async/await がデフォルトになった(ので従来のサンプルコードは動かなくなった)。
  • Cargo には feature flag(feature toggle) 機能があって、reqwest やら(オフィシャルサンプルで利用している)tokio やらもこれを利用している。
  • tokioを用いる必要があった。
    • 自分が見ていた(古い)サンプルではfuturesfutures::executor::block_onを利用していたので当初それをコピペったのだが次のエラーが出た: ’not currently running on the Tokio runtime.',
    • async/await 構文が標準に取り込まれた、ということは非同期ランタイムを別のものにすげ替えることが可能、みたいなイメージを持っていたのだが、そうではなさそう。
    • おそらく自転車本の補遺が言うところの「非同期エコシステム」が関係する話題。

サンプルを動かすには

https://github.com/seanmonstar/reqwest

Read more ⟶

Rustでライブラリを作成する


はじめに

他の言語で言うところの"ライブラリ"は、Rustでは "ライブラリクレート"(library crate) と呼ぶようです。

Read more ⟶