daisuzz.log

daisuzz.log

ソフトウェアエンジニアをしています。ソフトウェア開発に関することや読んだ本について書いているブログです。

はじめての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変換…

"コンピュータシステムの理論と実装 第7章 バーチャルマシン#1:スタック操作" を読んだ

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

"コンピュータシステムの理論と実装 第6章 アセンブラ" を読んだ

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

"コンピュータシステムの理論と実装 第5章 コンピュータアーキテクチャ" を読んだ

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

"コンピュータシステムの理論と実装 第4章 機械語" を読んだ

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

"コンピュータシステムの理論と実装 第3章 順序回路" を読んだ

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

"コンピュータシステムの理論と実装 第2章 ブール算術" を読んだ

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

"コンピュータシステムの理論と実装 1章ブール論理" を読んだ

「コンピュータシステムの理論と実装」を読んだメモを書いていきます。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon SchockenオライリージャパンAmazon メモ ブール代数 ブール値 0/1, false/trueなどのラベルで…

LinkedHashMapを使った簡単なLRU Cacheを実現する

LinkedHashMapを使うと簡単なLRU Cacheを作れるということを最近知ったので、使い方とどう実現されているかを書いていきます。 LRUとは 小容量で高速な記憶装置(例えば、キャッシュメモリ)がいっぱいになったとき、その中にあるデータのうち、未使用の時間…

JDK9以降のJavaの構文にふれてみる

Project Amberで検討されているJavaの言語仕様にふれてみます。 OpenJDK: Project Amber 今回触れるのは以下の言語仕様です。 JEP 286: Local-Variable Type Inference JEP 323 Local-Variable Syntax for Lambda Parameters JEP 325 Switch Expressions JEP…

sdkmanでインストールしたSDKをIntelliJで使う

sdkmanでinstallしたSDKをIntelliJで利用するための設定を書いていきます。 環境 IntelliJ 2019.3 sdkman 5.7.3+337 MacOS Catalina 1015.2 方法 IntelliJのスタート画面 -> Configureを選択 Structure for New Projects を選択 Platform Settings -> SDKs -…

2020.1.8 DMM英会話の振り返り

無料体験の2回目を終えたので、ふりかえりを書いていきます。 無料体験はこれで最後なので、これから有料会員になって継続してやっていこうと思います。 できたこと スピーキングテストに挑戦した 英文のスピーキングを褒めてもらえた 「I'm sorry. I didn't…