CLOVER🍀

That was when it all began.

OpenAPI Generatorを使って生成するSpring Web MVCのソースコードに、独自にバリデーションを追加したい

これは、なにをしたくて書いたもの? OpenAPIを使ってREST APIを定義した時に、requiredや文字列長、範囲についての記述をしておくと、OpenAPI Generatorを使って 自動生成した時にある程度バリデーションの定義も生成してくれます。 OpenAPI Specification …

Docker Composeで、構成ファイルを複数使って定義内容を上書きする

これは、なにをしたくて書いたもの? Docker Composeで、構成ファイルを複数使って上書きができることはなんとなく知っていたのですが、ちゃんと情報を追ったことが なかったので、ちょっと見てみることにしました。 Docker Composeでの構成の上書き ドキュ…

LocalStackとMinIOで、バケットにアップロードしたファイルをHTTPで参照する

これは、なにをしたくて書いたもの? LocalStackやMinIOをAmazon S3互換のオブジェクトストレージとしてAWS SDKやAWS CLIからアクセスすることはよくあるのですが、 バケットにアップロードしたファイルをHTTPで参照したことってないな、とふと思いまして。 …

Docker Composeを使った時に、コンテナ間で名前解決したい

これは、なにをしたくて書いたもの? ふだんDocker Composeをそんなに使っていないのですが、たまに使うとコンテナ間で名前解決するのにどうすればいいのかよくわからなく なるので、ちゃんと見ておくことにしました。 参照ページ 主に、以下のページを見て…

Ubuntu Linux 21.04以降でaptにも適用されているPhased Updates

これは、なにをしたくて書いたもの? Ubuntu Linux 22.04 LTSにしてから、パッケージを更新しようとした時に $ sudo apt upgrade 以下のようにパッケージの更新が保留されることが増えました。 以下のパッケージは保留されます: update-notifier update-noti…

TCP Echo Server/Clientを書いて、Netty io_uringを試してみる

これは、なにをしたくて書いたもの? Nettyのio_uringを少し見てみたいな、ということで。 io_uring まずは、io_uring自体について。 io_uringは、非同期IO用のAPIです。カーネル5.1から導入されたそうです。 https://kernel.dk/io_uring.pdf io_uringについ…

DateTimeFormatterでパースとフォーマット時の桁数や空白について調べる

これは、なにをしたくて書いたもの? DateTimeFormatterで文字列として表現された日時をパースする時に桁数や空白の扱いについてあまり意識していなかったので、 ちょっと見てみることにしました。 DateTimeFormatter (Java SE 17 & JDK 17) 環境 今回の環境…

Jacksonで、オブジェクトをシリアライズする際にnullのプロパティを出力しないようにする

これは、なにをしたくて書いたもの? Jacksonを使ってオブジェクトをJSONにシリアライズする際に、nullのプロパティの出力は抑制したくなることがあります。 JSONにした時に、以下のような状態を { "property1": "value1", "property2": null } こうする、と…

複数の宛先に対する簡単なTCPプロキシサーバーをsocat+Pythonで書く

これは、なにをしたくて書いたもの? 時々、TCPでの通信をローカルポートから別の宛先に転送したくなることがあります。いわゆるプロキシです。 個人的に、こういう時にはsocatをよく使っているのですが。 socatでTCPプロキシサーバーを立てる - CLOVER 転送…

IntelliJ IDEAを使ってコマンドラインでファイルをフォーマットする

こちらのエントリーを書いていて、IntelliJ IDEAを使ってコマンドラインでファイルをフォーマットできることがわかったので、 軽くメモしておきます。 Formatter Maven Pluginで、ソースコードのフォーマットを行う - CLOVER ドキュメントはこちら。 Format …

Formatter Maven Pluginで、ソースコードのフォーマットを行う

これは、なにをしたくて書いたもの? Javaでプログラムを書いていて、ソースコードを一括でフォーマットしたり、フォーマットするのを忘れないようにしたいとかいう 話があると思います。 こういうのを調べてみると、たいていEclipseのフォーマッターをCLIで…

Infinispan 14.0の新しいHot Rod Client APIのMutiny版を試す

これは、なにをしたくて書いたもの? 前にこういうエントリーを書きました。 Infinispan 14.0の新しいHot Rod Client APIを試して諦めたという話 - CLOVER Infinispan 14.0.0.Finalから新しいHot Rod Clientが含まれており、同期、非同期、Mutinyの3つの利用…

SSHでログインしていることを判定するには、SSH_CONNECTION環境変数を見ればよいという話

これは、なにをしたくて書いたもの? 現在のシェルがSSHでリモートログインして起動したものかどうか、判定する方法はないのかな?と思って調べてみたのですが。 SSH_CONNECTIONという環境変数が設定されているかを見ればよいみたいです。 SSH_CONNECTION環…

AWS SDK v3 Client mockでAWS SDK for JavaScript v3をモックする

これは、なにをしたくて書いたもの? AWS SDK for JavaScript v2の時には、モックライブラリとしてaws-sdk-mockがありました。 そういえば、AWS SDK for JavaScript v3の場合はどうなのかというと、AWS SDK v3 Client mockというものが存在しているようです…

lsp-modeのlsp-keymap-prefixのデフォルト値がよくわからないという話

lsp-modeのドキュメントにKeybindingsというページがあり、主な機能に対するショートカットが定義されています。 Keybindings - LSP Mode - LSP support for Emacs こちらを使う時に入力するlsp-keymap-prefixで指定されたデフォルトのprefixがs-lとなってい…

systemdのターゲット(SystemVのランレベル相当)を変更する

これは、なにをしたくて書いたもの? そういえば、systemdになってからSystemVのランレベルに相当するものを変更したことがないなと思いまして。 multi-user.targetなどの言葉には見覚えがあるのですが、これを切り替えたことがない、という話です。 systemd…

Node.js+TypeScriptでSQLite 3を使う

これは、なにをしたくて書いたもの? 以前に、SQLite 3をPythonから使ってみました。 SQLiteをPythonから使う - CLOVER 今度はNode.js(とTypeScript)から使ってみようと思います。 SQLite 3 SQLiteとはなんだかった?というところから。 SQLite Home Page …

REST AssuredをSpring Boot 3.0で使う

これは、なにをしたくて書いたもの? REST Assuredが5.1.0でSpring Boot 3.0に対応したようなので、REST AssuredとSpring Frameworkの組み合わせの確認を含めて 試してみることにしました。 https://github.com/rest-assured/rest-assured/blob/rest-assured…

Database RiderをSpring Framework(Spring Boot)と合わせて使う

これは、なにをしたくて書いたもの? 前に、Database Riderに関するエントリーを書いたことがあります。 Database Riderを試してみる - CLOVER Database RiderにはSpring Framework(Spring Boot)と組み合わせて使う機能があるようなので、試してみました。…

2022年の振り返り

2022年も終わりということで、恒例の振り返りをしてみましょう。 2021年の振り返りで言っていたこと 2021年の振り返りでは、アプリケーション寄りのことをやっていこう、と書いていました。 2021年の振り返り - CLOVER 加えて、LocalStackやデータストアまわ…

JAX-RS 3.1.0のSeBootstrapを使って、RESTEasy(+Undertow、CDI)をJava SE環境で動かす

これは、なにをしたくて書いたもの? RESTEasy 6.1.0に関するブログを見ていて、JAX-RS(Jakarta RESTful Web Services) 3.1ではJava SE環境でJAX-RSを動かすことが できるようになっていたことに気づいたので、少し試してみようかなと。 RESTEasy Releases…

JAX-RS(Jakarta RESTful Web Services) 3.1.0で、Contextアノテーションの代わりにCDIが推奨されるようになっていたという話

これは、なにをしたくて書いたもの? RESTEasy 6.1.0に関するブログを見ていて、JAX-RS(Jakarta RESTful Web Services)のインジェクションの仕組みはCDIの利用が 推奨されるようになっていたので、こちらを軽く確認しておきました。 RESTEasy Releases RES…

OpenAPI Generatorを使って、Spring Web MVCのエンドポイントを生成する

これは、なにをしたくて書いたもの? OpenAPI Generatorを使って、OpenAPIの定義ファイルからSpring Web MVCのエンドポイントを生成してみようかな、ということで。 OpenAPI Generator OpenAPI Generatorは、OpenAPIの定義ファイルからクライアントやサーバ…

Ubuntu Linux 20.04 LTSにShellCheckをインストールする

これは、なにをしたくて書いたもの? タイトル通り。 シェルスクリプトの静的解析ツールである、ShellCheckをUbuntu Linux 20.04 LTSにインストールしてみます。 ShellCheck ShellCheckとは、シェルスクリプトの静的解析ツールです。 ShellCheck – shell scr…

hadolintでDockerfileの静的解析を行う

これは、なにをしたくて書いたもの? hadolintというDockerfileのlintがあるので、試してみることにしました。 hadolint hadolintは、Dockerイメージをベストプラクティスに従って構築するためのDockerfileのlinterです。 Dockerfile Linter GitHub - hadoli…

Quarkus × SmallRye OpenAPIで、ビルド時にOpenAPIの定義ファイルを作成する

これは、なにをしたくて書いたもの? OpenAPIでのAPI定義を書こうとした時に、どうするのがいいのかなと思ったりしていたのですが。 Quarkusの場合、ビルド時にOpenAPIの定義ファイルを作成できそうなのでこちらを試してみようかなということで。 Quarkus × …

Serverless FrameworkでAWS Lambda関数をローカル環境でエミュレーションで動かす

これは、なにをしたくて書いたもの? これまでServerless Frameworkを使って作成したサービスをLocalStackにデプロイして動かしていましたが、デプロイせずとも動作確認する パターンも試しておきたいなと思いまして。 invoke localとgenerate-event 使うの…

Serverless Framework+LocalStackで、Amazon SNSのトピックをサブスクライブするAWS Lambda関数を作る

これは、なにをしたくて書いたもの? 今まで試してきたServerless Frameworkを使った例では、ずっとAmazon API Gatewayを使ったものだったのですが、別のものでも試して みようかなと思いまして。 今回は、Amazon SNSを使ってみたいと思います。 Amazon SNS …

Infinispan Server 14.0の設定まわりのファイルをメモしておく

これは、なにをしたくて書いたもの? Infinispan Serverの設定まわりを見ていて、いくつかポイントとなるファイルを目にしていたのでメモしておこうかなと。 対象はInfinispan 14.0.3.Finalとし、GitHub上のソースコードの位置で示していきます。 起動スクリ…

Infinispan 14.0の新しいインデックス用のアノテーションをHot Rodで試す

これは、なにをしたくて書いたもの? Infinispanで全文検索インデックスを使用する場合、Cacheに保存するエントリーの各プロパティに対してHibernate Searchの アノテーションを使用して設定を行っていました。 これがInfinispan 14.0で、Infinispan自身がイ…