daisuzz.log

notify_slackを利用してalpの集計結果をSlackで通知する

最近はISUCONの過去問を解いています。今回はnotify_slackを利用してalpの集計結果をSlackで通知する方法をまとめます。 以下の流れで説明していきます。 notify_slackを利用してテキストをSlackで通知する notify_slackのインストール Slackアプリの作成 no…

netdataのinstallスクリプトが実行できない話

ISUCONの練習でnetdataのinstallシェルスクリプトを書いていたらshとbashの違いでハマったので、忘備録として残していきます。 問題 #!/bin/bash ... bash <(curl -Ss https://my-netdata.io/kickstart.sh) --no-updates --dont-wait --stable-channel --dis…

IntelliJ IDEAを使ってDDLからER図を作成する

ISUCONの過去問をやっていてIntelliJでDDLからER図を作成したくなったので方法をまとめます。 やりたいこと ローカルにあるDDLファイルからER図を作成したい 環境 IntelliJ IDEA Ultimate 2020.3 手順 DDLを用意する。 今回はisucon7-qualifyを使用します。 …

Spring Session Data RedisがどうやってRedis Keyspace Notificationsを有効にしているのかコードを読んでみた

iikanji.hatenablog.jp ↑こちらの去年の記事で、RedisのKeyspace Notificationsについて書いたのですが、その中でSpring SessionはRedisのKeyspace Notificationsを自動で設定してくれる、と書きました。 今回は、その設定をしているConfigureNotifyKeyspace…

UriComponentsBuilderとUriComponents、どちらのencodeメソッドを使えばいいのか?

UriComponentsBuilderが提供するencodeメソッドとUriComponentsが提供するencodeメソッドの違いがわからず調べたのでまとめてみます。 今回、使用したSpring Framework のバージョンは5.3.3です。 そもそもUriComponentsBuilderとは? Spring Frameworkが提…

UriComponentsBuilderで設定したクエリ文字列の値がnullの場合にクエリ全体を非表示にする

Spring Frameworkでは、UriComponentsBuilderやServletUriComponetnsBulder, MvcUriComponentsBuilder, もしくはUriBuilderインターフェースを実装したクラスを使うことでURIを簡単に作ることができます。 たとえば、以下のコードのようにUriComponetsBuilde…

Clockを利用してテストがしやすいコードを書く

Java 8から標準ライブラリとして提供されているClockというクラスを利用して、現在時刻を取得することができます。 Clock (Java Platform SE 8) 現在時刻を取得するためにSystem.currentTimeMills()やLocalDateTime.now()などのstatic methodを呼び出して利…

AlfredからIntelliJ IDEAのプロジェクトを開く方法

AlfredからIntelliJ IDEAのプロジェクトをマウスやクリックを使わずに開けたら便利だなーと思って設定したので、やり方をまとめていく。 Alfred Powerpackを有効にする https://www.alfredapp.com/shop/ からSingle LicenseかMega Supporterを購入する。 お…

2020年のインプット/アウトプットふりかえり

2020年、自分がどういったテーマについてどれだけインプット, アウトプットしたのかを振り返っていく。 2020年で読んだ本 今年は以下の本を読んだ。 他にも何冊か読んだが、記憶にあまり残っていないので割愛。 リファクタリング 既存のコードを安全に改善す…

Redis Keyspace Notificationsで発火されるイベントを見てみる

Redis Keyspace Notificationsとは Redisには、キーに影響を与えるコマンドが実行されたタイミングや、キーが期限切れになったタイミングなどにRedisのPub/Subチャネルを介してクライアントにイベントを通知するRedis Keyspace Notificationsという機能があ…

Spring Session Data Redis (2.4.1) のコードを読んでみる

Spring Session Data Redisのソースコードを読んだので備忘録としてまとめていきます。 ソースコードは以下を読みました。 github.com Spring Session Data Redisのパッケージ構成 Spring Session Data Redisのクラスは全部で13ファイル RedisSessionReposit…

はじめてのMutation Testing

Thoughtworks社が半年ごとに公開しているTechnology RadarのVol.23が最近公開されていたので一通り読んでみました。 その中でMutation testingという技術が気になったので、今回はこれについて書いていきます。 Mutation testingとは Mutation testingとは、…

docker-composeでSchemaSpyを使ったERドキュメント生成を行う方法

今回は、SchemaSpyを使ってERドキュメントを自動生成する方法をまとめていきます。 SchemaSpyは、ER 図やテーブルの情報をHTMLで出力することができるJava製ツールです。公式サイトやSchemaSpy を使って自動で ER 図生成してみた | メルカリエンジニアリング…

【Spring Boot】ThymeleafからのPOSTリクエストをPUT/DELETEで受け取る方法

背景 Spring Bootでは@PutMappingや@DeleteMappingなどを使うことでPUT/DELETEメソッドのHTTPリクエストを受け取ることができます。 一方でHTML5では、PUT/DELETEメソッドを送信することができないため、直接HTMLからサーバにリクエストを投げる場合には、HT…

AWSをはじめよう を読んだ

前回、前々回に続いて技術書典で知った面白そうな本を読んだのでまとめます。 今回は【ダウンロード版】AWSをはじめよう ~AWSによる環境構築を1から10まで~ - mochikoAsTech - BOOTH を読みました。 booth.pm 前回、前々回はこちら iikanji.hatenablog.jp …

DNSをはじめよう を読んだ

iikanji.hatenablog.jp ↑の前回の記事に引き続き、技術書典で何冊か購入した本の中から【ダウンロード版】DNSをはじめよう ~基礎からトラブルシューティングまで~ 改訂第2版 - mochikoAsTech - BOOTH を読んだので、読書メモとして書いていきます。 booth.…

マンガでわかるDocker 3〜AWS編〜 を読んだ

技術書典のシーズンなので、何冊か良さそうな本を購入しました。 その中で #マンガでわかるDocker ③ 〜AWS編〜 【ダウンロード版】#jawsdays #技術書典 - 湊川あいの、わかば家。 - BOOTH を読んだので読書メモとして書いていきます。 booth.pm この本は…

はじめてのSpring Cloud Contract

はじめに Consumer Driven Contract Testingとは Spring Cloud Contract Spring Cloud Contractを使ってみる 環境 Provider Consumer ProviderにSpring Cloud Contractを導入する pom.xmlの設定 CDCの作成 YAMLの場合 Javaの場合 Kotlinの場合 Groovyの場合 …

【OpenAPI】Spring Bootで実装したREST APIのクライアントコードを自動生成する方法

今回は、Spring Bootで実装したREST APIのコードから、APIを叩くクライアントコードを自動生成する方法を書いていきたいと思います。 今回やりたいこと 環境 やることの流れ REST APIを実装する 自動生成に必要なライブラリ/プラグインをpom.xmlに追加する s…

【Spring】List<String>型のフォーム値が未入力の場合にnullのリストを受け取る方法

前回のエントリで、Spring FrameworkにおいてString型のフォーム値が未入力の場合に、空文字ではなくnullを受け取る方法を説明しました。 この方法では、List型のフォーム値が未入力の場合は空文字のリストになってしまうので、今回はこれをnullのリストで受…

【Spring】String型のフォーム値が未入力の場合nullで受け取る方法

Spring Frameworkで未入力のフォームの値をデフォルトで設定されている空文字ではなく、nullで受け取る方法をまとめます。 環境は以下です。 Spring Boot 2.3.1.RELEASE Thymeleaf 3.0.11.RELEASE Kotlin 1.3.70 以下のようなフォームと、フォームの値を格納…

【Spring】DefaultMessageCodesResolverについて調べてみた

Spring Framework のエラーメッセージ周りで詰まって調べたところを忘備録としてまとめてみる。 DefaultMessageCodesResolverとは? バリデーションによって作られたエラーコードからメッセージコードを作成するクラス。 オブジェクトやフィールドに対するメ…

【Spring】HandlerInterceptorの各メソッドが呼ばれる流れを追ってみた

HandlerInterceptorが呼ばれる流れを追ってみる。 ソースコードのバージョンはSpring Boot 2.3.0.RELEASE。 HandlerInterceptorは以下のようにpreHandle, postHandle, afterComplitionを実装することで、Controllerのメソッド(ハンドラ)の前後に任意の処理を…

【Thymeleaf】th:hrefで変数の値に応じて動的にクエリパラメータをつける方法

Thymeleafのth:hrefで変数の値に応じて動的にクエリパラメータをつける方法を備忘録として残しておきます。 やりたいこと th:hrefでURLを生成するときに以下のように変数の値に応じて動的にクエリパラメータをつけたい。変数の値が空の場合はクエリパラメー…

Safariの「戻る」「進む」操作を行ってページを復元したときにJavaScriptを実行させる方法

Safariでブラウザの「戻る」「進む」ボタンを押したときの挙動でハマったところがあったので備忘録としてまとめます。 bfcacheとは SafariやFirafoxでは「進む」「戻る」操作を行うと、bfcache(back forward cache)という仕組みでページを復元します。 bfcac…

Kotlinでjava.io.Fileを使ってファイルを読み込むときに便利な拡張関数

Kotlinのファイル読み込みの方法はいくつかありますが、今日はjava.io.Fileを使ったファイル読み込みでKotlinが提供している便利な関数について書いていきたいと思います。 java.io.Fileの拡張関数 Kotlinでは、java.io.Fileの拡張関数として便利な関数がkot…

"コンピュータシステムの理論と実装 第12章 オペレーティングシステム" を読んだ

「コンピュータシステムの理論と実装」を読んだメモを書いていきます。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon SchockenオライリージャパンAmazon 前回コンパイラの実装については、以下の記事に書いていま…

"コンピュータシステムの理論と実装 第11章 コンパイラ:コード生成" を読んだ

「コンピュータシステムの理論と実装」を読んだメモを書いていきます。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon SchockenオライリージャパンAmazon 前回のコンパイラ(字句解析器、構文解析器)の実装の記事は…

"コンピュータシステムの理論と実装 第9章 高級言語, 第10章 コンパイラ:構文解析" を読んだ

「コンピュータシステムの理論と実装」を読んだメモを書いていきます。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon SchockenオライリージャパンAmazon 前回は↓ iikanji.hatenablog.jp メモ 第9章 高水準言語 今…

"コンピュータシステムの理論と実装 第8章 バーチャルマシン #2: プログラム制御" を読んだ

「コンピュータシステムの理論と実装」を読んだメモを書いていきます。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon SchockenオライリージャパンAmazon 前回は↓ iikanji.hatenablog.jp メモ 前回実装したVM変換…