すきま風

勉強したことのメモとか

2019-01-01から1年間の記事一覧

Spring Boot 2.2.1以降でWebClientを利用して巨大なResponseを受け取るとDataBufferLimitException が発生する

Spring Boot 2.2.1 (Spring 5.2.1) から、WebClientで256KBを超えるJsonを扱うと DataBufferLimitException が発生するようになりました。Spring 5.1.11 以降でも発生すると思います。 (こっちは自分で試していません) issueはこちら になります。詳細は公式…

フロントエンド開発勉強日誌 2

フロントエンド開発勉強日誌の続きです。前回は Thymeleaf 導入までやっています。 今回はTypeScript開発環境を作ります。 TypeScript開発環境を作る やることは以下 事前勉強 Node Install ProjectにScript実装用のDirectoryを用意する package.json用意 Li…

クソ雑魚バックエンドエンジニアのフロントエンド開発勉強日誌 1

Thymeleaf HTMLを用意するためにThymeleafを入れます。そこからかよって感じですが、過去にフロントエンド開発をしたときに使っていたフレームワークがCatalyst (Perl製のフレームワーク) で、Thymeleaf経験すら皆無なのでやむなし。 Presenter class テンプ…

クソ雑魚バックエンドエンジニアのフロントエンド開発勉強日誌 0

モダンなフロントエンド開発の知識皆無の雑魚ですこんにちは。 今までずっとバックエンド側の開発ばかりしており、フロントエンドの勉強を放置していましたが、ここ最近チームのチケットの7割がフロントエンドのものになり、このままだと社内ニート待ったな…

Slackのリアクションemojiを非表示にする

あるSlack嫌いエンジニアの悩み 私はSlackが好きではないので、普段からなるべく見ないようにしています。 しかし、会社はSlackに完全に依存しているため、どうしても1日数回は見る必要があり、その際は給料のために我慢しています。 Slack嫌いな理由は色々…

2019年11月の登山日記

高尾山 - 相模湖 台風19号が各地の登山道に残した爪痕は未だ深く、多くの登山道が閉鎖、非推奨の憂き目を見ている状況の中で、まあここなら大丈夫だろうということで。 11月も半ばをすぎると早朝はヘッドライトが必要になりますが、早い時間から登り始めれば…

無題

ガチャ爆死のショックで体調を崩し会社を休む。色即是空

自殺の文学史 感想

自殺の文学史という非常に面白い本を読みました。以下、簡単に内容と感想を書いてみます。 1章では、社会学、地理学、哲学、宗教、歴史 etcを軸にして自殺を論じており、自殺学の総合カタログの感があります。 カルト宗教の集団自殺や日本の切腹、心中など興…

Kotlin sealed classを活用したい (願望)

sealed classはクラスの継承を制限するための機構です。 継承を同一ソースファイル内で定義したclassのみに制限します。(Kotlin 1.3) 残念ながら個人的にいまいち使いこなせていない (^^;) のでブログに使用法をまとめてみます。 拡張enumとしての利用 概念…

IntelliJでExternal LibrariesのDebugをする

普通にbreak point設定できます。今までできることを知りませんでした ^^; 色々調査するときに便利です。stack trace追ったりとか。 IntelliJ-screen

ファーストクラスコレクションにコレクションのメソッドを委譲する

data class Book( val title: String, val price: Int ) data class Books( private val books: List<Book> ) : List<Book> by books // コレクションメソッドをdelegate // List<Book> -> Books fun List<Book>.toValue() = Books( map { Book(it.title, it.price) } ) fun main() {</book></book></book></book>…

HydraPak(ハイドラパック) ウォーターストレージ SEEKER インプレッション

HydraPak(ハイドラパック) ウォーターストレージ SEEKERを購入してみました。 この手のウォーターストレージのデファクトはプラティパスで、自分も愛用していますが なんとなく強度が不安 洗浄後乾くまでに時間がかかる という点がちょっとだけ不満でした。…

socket timeoutに関するちょっとした誤解

今まで握手してから完全にデータが到達するまでの時間、だと思っていたが、正確にはdata packet間のアイドルタイムの制限時間という意味だった。 https://www.baeldung.com/httpclient-timeout the Socket Timeout (http.socket.timeout) – the time waiting…

data classのtoString()で特定のフィールドを隠蔽する

https://mustafaali.net/2018/01/14/Kotlin-data-classes-and-sensitive-information/ ラッパークラスにしてあげると良い。 class ProtectedProperty<T>(var value: T) { override fun toString() = "███████████" } data class Customer( val name: String, va</t>…

build.gradle.ktsに移行する! Tips編

以前記事にしたプロジェクトをbuild.gradleからkotlin-dslに移行します。 build.gradle.ktsにすることでスクリプト内でKotlinを使えるようになるし、IntelliJの補完が賢くなるし、groovyの文法をいちいちググらなくてよくなります。Spring Initializrでのデ…

build.gradle.ktsに移行する! 変換編

以前記事にしたプロジェクトをbuild.gradleからkotlin-dslに移行します。プロジェクト構成などについてはそちらを参照ください。 Spring Boot 2.2.0のリリースに伴いコードを書き直しました (最終更新: 2019/11/14) ※ リンクの記事はspring-data-r2dbc など…

Kotlin groupingByって便利だね 2

問題: 生徒オブジェクトのリストがあり、性別ごとの所持金額を集計する data class Student( val name: String, val gender: Gender, val wallet: Int ) enum class Gender { MALE, FEMALE } val students = listOf( Student("foo", MALE, 1000), Student("b…

Kotlin groupingByって便利だね

問題: 生徒オブジェクトのリストがあり、クラスごとの人数を集計する data class Student( val classNumber: String, val name: String ) val students = listOf( Student("1-1", "foo"), Student("1-1", "bar"), Student("1-1", "fizz"), Student("1-2", "b…

ktlintをGradleに導入する

Gradle projectにKotlinの静的解析ツールktlintを設定します。 コードには以前記事にしたプロジェクトを利用します。

Kotlin Coroutineのerror handlingを理解する

Kotlin Fest 2019 での Kotlinコルーチンを理解しよう 2019 が素晴らしかったので、忘れないうちに復習することにします。 サンプルプログラムは前回記事にしたクリーンアーキテクチャのコードを利用しています。

Spring Boot2 × Kotlin × Gradle5でクリーンアーキテクチャのアプリケーションを構築する (実装編)

build.gradleまで書いた前回記事の続きです。Apiをcallした体のプログラムを記述します。

Spring Boot2 × Kotlin × Gradle5でクリーンアーキテクチャのアプリケーションを構築する

要旨 Gradleの勉強。クリーンアーキテクチャを実装してみます。 この記事ではgradleについて記述します。実際のコードについては次回記事を参照ください。 元ネタはSpring IO 2019で紹介されていたこちら 以前書いたレイヤーアーキテクチャのサンプルはこち…

JUnit5 で BDD

JUnit5のinner classを利用したBDD記法のサンプルです。 検証環境 software version OS MacOS Mojave Spring Boot 2.2.0.M4 Java Corretto-11.0.4.11.1 Kotlin 1.3.41 JUnit5 5.5.1

protobufをHTTP通信する

protocol bufferは通常gRPCで利用しますが、API定義をprotoファイルで行い 通信自体はHTTPで行いたい、というケースが実務でありましたので方法を記載します。 検証環境 software version OS MacOS Mojave Spring Boot 2.1.5 Java 1.8.0_192-b12 Kotlin 1.3.…

Spring Boot × MyBatis × HikariCPで複数データソースを動的 (透過的) に利用する方法

前置き 以前、静的な方法で複数データソースを利用する方法を記事にしました。 今回は透過的に複数データソースを利用する方法について記述します。 透過的とは、リクエスト時のユーザ情報とか、アクセス時間とか、何らかのパラメータを元にアクセスするデー…

Spring Boot起動時に環境毎の設定ファイルを利用する方法 3パターン

Spring Boot × Gradleで起動時に読み込む設定ファイルを切り替える方法を3種類記載します。 方法の概説 spring.profile.activeで起動時のapplication.yml (application.properties) を指定 build時に環境毎の設定ファイルディレクトリをclass pathに追加 起…

Spring Boot2 × MyBatis × HikariCPで複数データソースにアクセスするコードを実装する 静的バージョン

前置き MyBatisを利用した複数データソースの実装には データソースごとのmapperをpackageレベルで分割する静的な手法と、SpringのAbstractRoutingDataSource を使って都度利用するデータソースを決定する動的な手法があります。今回は静的な手法のコードを…

Spring Boot2 × Kotlin × Gradle5でレイヤーアーキテクチャのアプリケーションを構築する

要旨 Gradleマルチプロジェクトの勉強用です。Spring Boot2, Kotlin, Gradleを使ったシンプルなレイヤーアーキのサンプルです。 クリーンアーキテクチャの記事はこちら ソフトウェアバージョン software version OS MacOS Mojave Spring Boot 2.1.5 Java 1.8…