Rust の Result を良い感じにまとめるには


…というのを検索する用語が “エラーハンドリング(error handling)” だということに気付くまでにも時間がかかるくらいの初級者です。

Rust でのエラーハンドリングについては歴史的変遷があるようで、ググると結局今はどうやったらええねん、という新たな疑問が湧いてきます。

Read more ⟶

Hello Project Panama, on Java17


はじめに

で、 Project Panama (リンク1, リンク2) の機能を利用して、 Java から Rust を呼び出してみました。

当時(Java14)は Project Panama 用にビルドされた JDK を利用する必要がありましたが、 Java17 では incubator ではあるものの JEP 412: Foreign Function & Memory API が標準 JDK に導入された

Read more ⟶

Tauri を GUI にして Rust と React に入門する


はじめに

Tauri という、 WebView を利用して GUI を実現する Rust 製フレームワークを試してみました。

Rust も React も入門書から陸続きで書き始められるので、余計なことに気を取られずに済みそうです(ただし、 JS - Rust 間のデータ受け渡しに利用する JSON オブジェクトのシリアライズ/デシリアライズに利用する Serde についての知識は少し必要になりそうでした)。

Read more ⟶

JPA Entity には Lombok の @Data(@EqualsAndHashCode) を使用すべきでない


問題になりそうなキーワード:

  • lazy loading

  • collection

  • 循環参照

  • mutability

@Data(@EqualsAndHashCode) を付与すると hashCode() は自動で算出されるようになりますが、JPA @Entity では上記のような理由で、ハッシュ値が計算できなかったり要件を満たせなくなったりします。

Read more ⟶

RestTemplateが採用するHTTPクライアント実装の順序


By default the built RestTemplate will attempt to use the most suitable ClientHttpRequestFactory

RestTemplateBuilder JavaDoc

とありますが、具体的にどうやって決めているの?という話です。

ClientHttpRequestFactorySupplierをみると一目瞭然ですが、

  1. Apache HttpClient (org.apache.http.client.HttpClient) がクラスパスに存在すればそれを採用する

  2. OkHttp (okhttp3.OkHttpClient) がクラスパスに存在すればそれを採用する

Read more ⟶

Spring BootとTypeScriptで開発するためのプロジェクト設定(Gradle) - Polyfillも必要とする場合


はじめに

前回ts-loader を用いて TypeScript をビルドしました。

簡潔にセットアップできたのは良いのですが、実際にはPolyfillを行いたいので babel-loader をベースに再構築することにします。また、自動テスト( jest )も導入します。

Read more ⟶

Spring BootとTypeScriptで開発するためのプロジェクト設定(Gradle)


はじめに

Spring Boot で JavaScript を扱うときは素のJSをhtml(Thymeleafテンプレート)に <script> タグで埋め込む、というのが多分一般的で手っ取り早い方法かと思います。

Read more ⟶

Spring Boot 2.5.0(Spring Security 5.5.0-M2)でremoteUserの値が変わった


HttpServletRequest#getRemoteUser() をログ出力(Tomcatの %u)しているのですが、Spring Boot 2.5.0 から返ってくる値が変わったようです。

どの変更が影響しているのか調べたところ、次のものが該当するようです。

実際にどうなったか見てみます。

Read more ⟶

AWS EC2 で squid プロキシサーバを立てる


はじめに

SteamのDLC等をダウンロードしようとしたとき、IPアドレスによるアクセス制限が課されている場合があり、それを回避する必要が出る状況がたまにあります。

Read more ⟶

Spring Boot で Tomcat のメトリクスを出力する


Spring Boot アプリケーションの性能評価を行っているのですが、実装したアプリケーション部分ではなく、webサーバかどこかがパフォーマンスボトルネックになっているように思われる事象に直面し、その原因を調べたいと思っています。

Read more ⟶

GitHub Actions を使って GitHub Pages を定期更新する


これまで GitHub Actions を使ったことがなかったのですが、

という質問を見かけ、丁度よいお題だと思ったのでこれを実現してみることにしました。

Read more ⟶

Spring BootでTomcatのデフォルトエラーページが出るのを抑止する


Spring Boot を実行していると、Tomcatのデフォルトエラーページが表示されるような事象に遭遇することがあります。

このページのカスタマイズ方法は、上記issueにありますが、現状Spring Boot フレームワークでは提供されておらず少しトリッキーです。

Read more ⟶

Git の merge も思いの外危険


次のblogエントリがバズっていました:

大局としては同意なのですが、ミクロな点では、 rebase 恐怖症というか、 merge を信頼し過ぎているというか、少し私とは意見が異なると感じました。 そして、上記のblogのような意見が多数派ではないかと思いますので、改めて merge の怖いところを具体例で示したいと思います。

Read more ⟶