yak shaving life

遠回りこそが最短の道

Java

List.ofで作ったリストでcontainsするとNPEが出る?

タイトルの通り、JavaのList.ofで作ったリストでcontains(null)するとぬるぽになった。 jshell> var list = List.of(1, 2); list ==> [1, 2] jshell> list.contains(1); $2 ==> true jshell> list.contains(3); $3 ==> false jshell> list.contains(null); |…

Vacuous Truth という概念を知っておくとプログラミングに(ちょっとだけ)役に立ちそう

TL;DR 空のコレクションに allMatch() 的な判定をするとtrueになるぞ!気をつけろ! 背景 あるリストの全ての要素がとある条件を満たすどうかを返すメソッドがあり、 allMatch(何かしらの条件) した結果をbooleanとして返すという実装になっていた。このメソ…

JavaのUnboxingでNullPointerExceptionが出てほしくない

Java初心者なので、戻り値の型がLongなAPIを使いたいけどnullとか嫌だからlongにしちゃおーといって適当にAuto boxingしたらNullPointerExceptionが出てしまった。こんな感じ。 // SomeLibrary#count の戻り値の型はLong long count = SomeLibrary.count(); …

Spring Data RedisでZPOPMIN(MAX)を使う

RedisにはSorted Setというデータ型があって、ユーザランキングみたいなものを作るときに便利だったりする。このSorted Setに対する操作はZADDとかZRANKのようにZから始まるものとなっている。 Sorted Setから一番スコアが低い(高い)ものを破壊的に取り出…

HomebrewでJmeterをインストールしたらちゃんと動かなかった

諸事情によりJmeterのGUIを動かしたかったのでMacでのインストール方法を調べると、Homebrewにあるとのことだったのでインストールした。が、ちゃんと動かなかったのでやったことをメモ。 環境 macOS 10.15.13(Catalina), JavaはOpenJDK 11.0.4, MacBook Pro…

Spring BootでJS/CSSのバージョニングをするための最小設定

ググってもなんか古い情報とかが多くてうまく見つけられなかったのでメモ。Spring Bootのバージョンは2.5.x。 基本的に、application.yml / application.properties に spring.web.resources.chain.strategy.content.enabled プロパティを追加するだけででき…

ParallelStreamは親スレッドというか元のスレッドも並列処理に使用するし一部のスレッドで例外が発生しても正常処理のスレッドは継続する

PararellStream絡みでなんだかよくわからないことになったので公式ドキュメントなどを読んでみたけどたいした記述がない。(もっと詳しく書いてあるページがあるのか?) docs.oracle.com しばらくうんうん唸っていたけどもう一度ググり始めたら神記事を見つ…

独習Java 新版 を読んだ

独習Java 新版作者:山田 祥寛発売日: 2019/05/15メディア: Kindle版 なぜ読もうと思ったか 大学の研究室に置いてあった独習Java(Java 6まで対応だった気がする)を読んで、なるほど、オブジェクト指向ってこういう感じなのかー。へー。なんかわかんないけど…

Java ビルドツール入門 を読んだ

Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応作者:掌田津耶乃発売日: 2017/02/08メディア: 単行本 なぜ読もうと思ったか あまりJavaと関わらずに生きていたのだが最近仕事で使い始めたのもありJava関連の書籍などを眺めていたところ発見。へー、Javaの…

「Javaによる高速Webアプリケーション開発のためのSpring Boot入門」を読んだ

タイトル Javaによる高速Webアプリケーション開発のためのSpring Boot入門作者:WINGSプロジェクト 小林 昌弘発売日: 2020/05/31メディア: Kindle版 Javaによる高速Webアプリケーション開発のためのSpring Boot入門 なぜ読もうと思ったか Spring Bootの新しい…