daisuzz.log

daisuzz.log

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

"ザ・ダークパターン"を読んだ

ザ・ダークパターン ユーザーの心や行動をあざむくデザイン作者:仲野 佑希翔泳社Amazon 翔泳社のポイントの期限が切れそうだったので、お盆前に買ったこちらの本を読んだ。 元々ダークパターンという言葉自体は聞いたことがあったけど、企業の利益のためにユ…

"ソフトウェアテスト技法ドリル"を読んだ

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際作者:秋山 浩一日科技連出版社Amazon ユニットテストや、シナリオベースのテストケースのレビューをする機会が増えたため、テスト観点の洗い出しやテストケースの上手な作り方を学ぶ目的で、少し古い…

Spring Securityを使ってエンドポイントに応じて複数の認証方式を切り替える方法

Spring Securityを使ったAPIを実装していたときに、REST APIにはBASIC認証をかけて、画面にはフォーム認証をかける、ということがやりたくなったのでその方法を備忘録として書いておきます。 環境 Spring Boot 2.7 Kotlin 1.6.21 方法 /api/から始まるREST A…

HttpSecurityはどうやってSecurityFilterChainを生成しているのか

タイトルの通り、Spring Securityで認証認可を行う場合に利用するHttpSecurityの処理について調べたので備忘録として書いていきます。 前置き ソースコードを読んだ上で書いていますが、正しい情報はSpring Securityの公式ドキュメントや、リポジトリを参照…

Spring Securityを使ったモック認証処理を実装する

Spring Securityを使った認証処理を実装したアプリケーションにおいて、モックの認証情報を使って動作確認をする方法を書いていきます。 認証処理の実装と、認証対象の画面や機能の実装が並行して行われているときに、Spring Securityの仕組みを使いつつもモ…

Spring SecurityをComponent-basedな設定方法で設定してみる

背景 Spring Security without the WebSecurityConfigurerAdapter を見て、従来のSpring Securityの設定方法がSpring Security5.7から非推奨になることを知ったので代わりの設定方法を試してみます。 環境 Spring Boot 2.6.7 Kotlin 1.6.21 何が変わるのか S…

"採用基準"を読んだ

採用基準作者:伊賀 泰代ダイヤモンド社Amazon 以前、チームメンバー全員に薦めている、というツイートを見かけてずっと気になっていた採用基準を読みました。 リーダーシップを持つことが重要であるということ、リーダーがなすべきタスクとはなにか、リーダ…

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

2022年になってしまったが、2021年のインプット/アウトプットしたものを振り返っていく。 2020年の振り返りは↓ iikanji.hatenablog.jp 2021年で読んだ本 テストから見えてくる グーグルのソフトウェア開発 ソフトウェア品質を高める開発者テスト アジャイル…

Spring BootでElasticsearch Java API Clientを使ってみる

Elasticsearch Java API Client について Spring BootでElasticsearch Java API Clientを使う pom.xmlにライブラリを追加 ElasticsearchClientの設定 ElasticsearchClientを使ってみる Elasticsearchの勉強の一環で公式ドキュメントを読んでいたところ、 dep…

JEP 408 Simple Web Server を試す

JDK18で提案されている、JEP 408: Simple Web Serverが気になり触ってみたので書いていきます。 JEP 408: Simple Web Serverでは、静的ファイルを提供する最小構成のWebサーバを起動するためのCLIツールをJavaの標準機能として提供することが提案されていま…

Spring BootアプリケーションのセッションをDBで管理する

はじめに 今回は、Spring BootアプリケーションのセッションをDBで管理する方法を調べたので備忘録として書いていきます。 書いてある内容は手を動かして確認したものですが、正しい情報は公式ドキュメント(以下は2.4.3のもの)の内容を見てください。 Spring…

Technical Writing Courses for Engineerを読んだ

はじめに Technical Writing Courses for Engineerの構成 メモ Words Active Voice Clear sentences Short sentences Lists and tables Paragraphs Audience Documents Punctuation 感想 はじめに 最近聴いたe34.fmの7: News September 2021 - e34.fm の中で…

Gitで管理しているファイルの特定の期間の変更頻度をTSVで出力する

やりたいこと ファイルの変更頻度を調べたい 追加したファイルや削除したファイルは変更として扱いたくない 過去の任意の期間を指定できるようにしたい スプレッドシートにコピペしたいので、出力はTSV形式にしたい 方法 以下のワンライナーで出力することが…

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 この本は…