formで(送信ボタンを押さずに)エンターキーで送信する
入力フォームに値を入力して、(送信ボタンを押すのではなく)入力フィールド内でエンターキーを押すと送信される機能、"Implicit Submission"(日本語にすると"暗黙的送信"ですかね?)というそうです。
メモ: テスト観点
書籍「ソフトウェアテストの教科書 - 品質を決定づけるテスト構成の基本と実践」第4章 ブラックボックステスト 表4-4 分類の基準として利用できる指標の一例 より。
Ubuntu20.04 で Kindle for PC
以前記載していたUbuntu16.04(及び18.04)用の Kindle for PC セットアップ手順だと起動時にネットワーク接続できず利用できなくなってしまっていた
Ubuntuで使うKindle for PCのメニュー文字化け解消
Ubuntuに初回セットアップしてから放置していたのですが、ずっとメニューが文字化け(豆腐表示)になっていたのが気になっていました。
この度、目次を使い倒す必要ができたので、改めて調べ直し、UbuntuでKindle for PC使う場合でも文字化けせずに利用できるようになる方法がわかりました。 次のリンクを参照してください。
SLF4Jでplaceholderも使いつつstacktraceも出力したい
SLF4J の Logger のメソッドを眺めていると、 Throwable を引数にとれるのは 他に Marker と String メッセージだけを持つものばかりで、プレースホルダを利用したい場合にはどうしたら良いのだろう…と思っていたら、普通にプレースホルダと併用できるようです。
ガバガバOIDCモックサーバを作る
OIDCフローの調査などで本物でないOIDC IdP Mock Serverが欲しくなったので検索してみました。
世に数多あるように見えたのですが、結構真面目に認証処理してたりして、ちょっとオーバースペックだと感じたので自作することにしました。
Spring Boot の CORS 設定を全許可する
Spring Boot のリファレンス 4.7.1. The “Spring Web MVC Framework” > CORS Support を見ると、次のように設定すれば良いように見えます。
Spring Sessionをインメモリで利用する
昔は spring.session.store-type の選択肢に hash_map というものがあったようですが、現在は存在しません。(ちなみに none は Spring Session を利用しない、という意味になるようで、挙動が変わってしまいます( JSESSIONID と SESSIONID とか))
ControllerでUnauthorizedExceptionを投げると401でなく403になる
Http403ForbiddenEntryPoint がデフォルトで設定されているため、 ExceptionTranslationFilter において AuthenticationException のサブクラスは全て 403 になっている模様。
認証通った上でunauthorizedってことはforbiddenなんだよな?ということでしょうか。…この言い方だと全然ニュアンス伝わらないか。
Spring Boot 2.4.1->2.4.2アップグレードで発生した問題メモ
Spring Framework 5.3.3 で対応された
の影響で、 HttpServletRequest#getDispatcherType() メソッドが呼ばれるようになっています。
これにより、 HttpServletRequest をモック化して実行していたテストケースが(想定外のメソッド呼び出しで null を返すため)失敗するようになっていました。
Ubuntu 20.04 LTS にアップグレードして問題が発生した
さて2021年にもなったし、そろそろUbuntuアップグレードしても解消できない地雷は無くなっているだろう、と思い18.04からアップグレードを敢行しました。
Spring Boot 2.3.5 で MapStruct を利用しているプロジェクトのビルドが失敗した
調査したところSpring Bootの問題と言うよりは、Lombokのバージョンが 1.18.12 から 1.18.16 に上がったことによる非互換性の問題でした。
Lombokのchangelogに説明があります:
Spring SecurityのOAuth 2.0 Login でログインしても UserInfo Endpoint にアクセスしてくれない
Spring Security OAuth 2.0 Login を利用してログインしたのですが、通常ログイン後 UserInfo Endpoint へアクセスしてくれるはずなのにこの処理がスキップされてしまうような事象に出会いました。