Java

前回TypeScriptでやった「タグ付きユニオンのタグを指定して、型安全に値を取り出したい」をJavaでやってみた

前回書いたこれを同僚に「こんな感じだったよ。勉強になったよー!」って見せたら「なるほど勉強になった!ありがとう!」って言ってもらえたのでよかった。 bufferings.hatenablog.com そしてその同僚が「こういうのってJavaだったらどう書くの?」って言っ…

休日のリファクタリングあそび

いま「良いコード/悪いコードで学ぶ設計入門」を読んでる。今日はその途中で出てきたリファクタリングのサンプルで休日らしく息抜きに遊んでみたのでメモ。とても良い本なので読み終わったら感想を書こうと思ってる。 books.rakuten.co.jp 遊んだコード お…

Java の CLI アプリケーション用フレームワーク picocli はミスタイプ時にサジェスチョンを出してくれる

長くなっちゃったから最初にまとめ まとめ picocli は便利。 デフォルトでサジェスチョンの機能がついている。なので、オプションやサブコマンドの定義だけしておけば、ミスタイプしたときにサジェスチョンを出してくれる。 オプションの場合は、先頭2文字が…

Java 14-16 の新しい言語仕様が全体的に嬉しくて優しい

Java 16 も出たことだし 今年の9月にリリースされる LTS の 17 に備えて、きしださんの記事を読みながら新しい機能の言語仕様の部分だけ触って遊んどいた。 Java 14新機能まとめ - Qiita Java 15新機能まとめ - Qiita Java 16新機能まとめ - Qiita Java 12 …

GradleでJavaのバージョンを指定するときはsourceCompatibilityじゃなくてToolchainsを使うと便利

追記 2021-02-14 Toolchains はまだ IDEA ではサポートされてないみたい。IDEA を使うときはこれまでの書き方をしておく方が良さそう。 Support detecting SDKs from Gradles toolchain support https://youtrack.jetbrains.com/issue/IDEA-252328 追記ここ…

Gradleでマルチプロジェクトをやるならsubprojects{}じゃなくてプラグインシステムを使おう

Gradleでマルチプロジェクトってどうやるんだろう?って公式ドキュメントを眺めて遊んだのでメモ。タイトルの通りの話。 Gradleって変化が速い印象ある。ので、しばらくするとこのやり方も非推奨になるのかもしれない。2021年2月時点のGradle 6.8.2のお話。 …

Javaのコンテナのメモリ割り当ての考え方をまきさんに教えていただいたので記録

何度か教えていただいているので、今度こそしっかり覚えておきたくて、まきさんからのコメントを記録。 ## メモリサイズの考え方 SpringBootのアプリをコンテナとして動かす場合には768MB以上必要で、1GBくらいは割り当てる必要があるのではないかという僕の…

Netty HTTP HelloWorldの起動が600msくらいだったんだけどGraalVMのNative Imageを使うと15msくらいになったー

下記の記事を読んで「えー。実際に手を動かして、自分の目で見てみたいー。」ってなったので、書いてある通りにやってみたら10ms前後でほんとに起動した。へー。その途中で色々と知らないことがたくさんあって面白かった。 medium.com ## やったことを順番に…

JibでMicronautのアプリをビルドしてGCRにpush

昨日MicronautとDockerを触りながら「そういえばJibってのがあったけど触ってなかったなぁ」と思ったので触ってみた。感想は「気の利くやつだな」。 ## Jib? Googleの提供してるコンテナ化ツール。 github.com 去年の夏頃発表されたんだっけな。 cloud.googl…

怖くないR2DBC その3 spring-data-r2dbc

怖くないR2DBCシリーズ。 bufferings.hatenablog.com 前回までで、この3つを見てきた。 r2dbc-spi r2dbc-postgresql r2dbc-client r2dbc-spiがインターフェースで、r2dbc-postgresqlがそのPostgreSQL用実装。r2dbc-clientはr2dbc-spiを使いやすくするための…

怖くないR2DBC その2 r2dbc-client

これのつづき。 bufferings.hatenablog.com ## 1.0.0.M6 数日前に1.0.0.M6が出たので、この前はM5のソースを読んでたけど今日はM6のにする。 Happy to announce @R2DBC 1.0 Milestone 6. @h2database and @SQLServer drivers are available now. https://t.c…

怖くないR2DBC

注意:R2DBCはまだ本番では使わないようにね(2018-11-18現在) 昨日R2DBCを初めて触ってみて「ふーん、いまいちよく分かってないなぁ」と思いながら寝たんだけど。 bufferings.hatenablog.com 朝起きたら「あ、そういうことか」ってなったので、考えの整理…

Hello R2DBC

## R2DBC? https://r2dbc.io/ Spring One Platform 2018で発表されたリレーショナルデータベース用のリアクティブプログラミングAPI。みんなが待ってるやつ。 2016年頃からのSpring5を中心にしてWebやNoSQL周りはリアクティブ対応をしてきてるんだけど、RDBM…

Java 8でも安心。Dockerに対するCPU・メモリ対応。(2018年11月現在)

8u191でDocker対応がバックポートされたので、頭の整理と確認をしておいた。 ## まとめ Java 11使っておけばそもそも安心なんだけど、Java 8でも8u191以降を使えば安心。 ## 課題だったこと DockerでJavaを動かすときJavaが「そのコンテナに割り当てられたCP…

Spring Bootの起動を速くしてみるぞー

疲れた! ## How Fast is Spring? というSpring One Platformのセッションのビデオを見て、自分でも試してみたお話。このセッション、すごく面白いのでおすすめ。 springoneplatform.io ## 今日のコード github.com ↓JDK11でやった。 ❯ java --version openj…

後編:JMH(Java Microbenchmark Harness)のサンプルを動かしながら勉強

これの続き bufferings.hatenablog.com ## 実行時オプション サンプルを実行しながらなんとなくそんな気がしてたけど 実行したいベンチマーク名を正規表現で指定できて アノテーションで指定した値は実行時パラメータで上書きできる。 ❯ java -jar target/be…

JDK 11の重要なポイントを勉強してきた

ちょうど今週は東京に出張で来てたのでJJUGナイトセミナーに参加してきたー。面白かった! jjug.doorkeeper.jp Java is Still Free 会場に着いたらJava is Still Freeの日本語版がスクリーンに映ってた。じゅくちょーすごいなぁ。 はてなブログに投稿しまし…

数カ月後の自分へ。僕がどういうときにJava10のvarを使いたいと思っているか。

先月リリースされたJava10は、その日に遊んで楽しんだんだけど bufferings.hatenablog.com ちょっと時間が経って落ち着いたから、自分の考えを整理しておこうと思った。忘れるので。 この2つを読んだ どちらもすごく面白いのでおすすめです。 orablogs-jp.b…

SpringBoot2のBlocking Web vs Reactive WebについてLTしてきた

社内ミートアップでLTの時間をもらったので、ここに書いた内容を3分で喋ろうとしたんだけど、どうしても3分をちょっと超えてしまうので無理を言って4分もらって喋ってきた(運営のみなさんありがとうございます)。ぐったり。明日から普通のエンジニアに戻りま…

Java10の祝日はvarを雰囲気で遊んでた!

昨日は朝起きたらJava10が出てたので新しく導入された var で遊んでた。 わーい$ java --version openjdk 10 2018-03-20 OpenJDK Runtime Environment 18.3 (build 10+46) OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode)— Mitsuyuki Shiiba (@buf…

読みやすいコード(僕にとって)

最近気づいたことがある。それは、僕はみんなみたいに複雑なことが理解できない、ってこと。話をしてても「ごめんなさい。いまのわかんなかった。もう一回教えて欲しい。」とかよくあるし。ドキュメントも、ちょっと複雑なことが書いてあると、全然頭に入っ…

Java8のDate and Time APIではyyyyじゃなくてuuuuを使う

2,3日前にこういうのを書いたんだけどbufferings.hatenablog.comirofさんと喋ってたら「yyyyじゃなくてuuuu使わなきゃとかもありますよねー」って言われて「え?そうなんだっけ・・・あれー?全然知らない!・・・ような、頭の隅にあるような・・・」ってな…

僕がJavaのWebアプリのコードレビューをするときって何を気にしてるっけなぁ?

コードレビューをするときには、フォーマットや慣例的な書き方とか、名前ちゃんとした方が良いよとか、処理にも名前をつけようねとか、そういうことは伝えるんだけど。それよりももっと気にするのは、「ここで見つけておかなきゃいけない」ってことだなぁっ…

てことでValidationの実装を書いてみた

今日の昼にValidationについて考えて、「こんな感じだといいかなー?」ってテストだけ書いたんだけど。 bufferings.hatenablog.com それの実装を書いた。とりあえずテストだけパスするような感じであります! T がいっぱいでてきて泣きながら書いた。 ソース…

こんな感じのValidationどうかなぁ?「この方が好き」ってあったら知りたいです!

バリデーションについてぼーっと考えてて、この辺見ながら「なるほどわからん!」ってなりながら 面白かった!半分も分かってないけど雰囲気楽しんだ! / “Java8 と fugue で Validation (エムスリー Advent Calendar 2015 18th) · GitHub” https://t.co/7Gb…

#KanJavaParty で喋ったよ(ヽ´ω`)

kanjava.connpass.com直前までコード触ってた。ローカルでデモを見てもらうけど、実際のアプリも触ってもらえたらいいなと思ってAzureでも動かした。んで、ほんとにギリギリでAzure上で動き始めて、そしてなぜかローカルが動かなくなった。Azureでも動いてな…

#Java本格入門 は実践的だなー!

Java本格入門を読み終わりました。著者の谷本さんからいただきました。ありがとうございます。もし面白くなかったらどうしようwとドキドキしながら読み始めましたけど、全然そんなことはなくて色々と勉強になりました。本当に読んで良かったです。周りの人に…

bufferingsはwebjarsを覚えた

JJUG CCCのデモアプリ作るときに色々勉強になったのでメモに残そかなと。mavenで管理できるの安心感あるね。本番で使うかどうかは考えてないけど、個人の開発なら楽だなー。 <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>2.2.4</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>angularjs</artifactId> <version>1.5.9</version></dependency>

MavenでビルドするSpringBootアプリをGithubにpushしたらTravisCIでDockerhubに自動push

できたー(∩´∀`)∩ワーイbufferings.hatenablog.comの続き。 DockerHubのAutomated Build そうか。MavenのビルドがDocker Hubで実行できるわけないか。jarを作っといてgithubにpushしたらそれを実行するImageをビルドすることならできる。か。ふむー。— しーば@1…

#kanjava Thymeleaf・JShell・Webセキュリティ・実践マイクロサービスなJavaの勉強会でお腹いっぱい!

そんな勉強会に参加してきました。というか、僕もスピーカーとして、Thymeleafについて喋りました!会場は楽天大阪のカフェテリアです!kanjava.connpass.com関ジャバといえば、会場の鍵を開ける人が寝坊してきたりするくらいの、ゆるふわな勉強会なイメージ…