日々常々

ふつうのプログラマがあたりまえにしたいこと。

GradleWrapperの追加や更新の手順

Gradle 7.3.2 Gradleを使っているプロダクトだと、基本的にGradleWrapperを使うと思います。 プロジェクト作成時に最新のGradleを使うかと思いますが、Gradleの更新でたまにビルド時間短縮とかもあるんで、新機能使わなくてもWrapperも更新していきたいとこ…

Javaで「ライブラリの最新版がある」と言うときの基礎知識

Log4j 2のバージョンアップのやりかた で "「Mavenリポジトリ」の指すもの" を軽く書きましたが、いい機会なのでもう少し書いておきます。 最新版は使える? https://twitter.com/irof/status/1469139048954724354 こういうツイートをしまして。 見てる順番…

Gradle+SpringBootでLog4j 2のバージョン更新(DependencyManagementPlugin不使用)

Log4j 2のバージョンアップのやりかた からの派生。 特化した内容なので別エントリにします。 2021-12-13追記: 今気づいたけどSpring公式ブログのLog4J2 Vulnerability and Spring Boot見るほうがシンプルでよいかもです。 本稿はバージョンダウンとか選択と…

Log4j 2のバージョンアップのやりかた

「Log4j 2に脆弱性があるらしい、バージョンアップしたら治るらしい。」 本日話題のこのテーマで軽く書いておきます。 未完です。 未完公開の言い訳。更新した内容は最後に書いてます。大きな間違いは(今のとこ)ないので、よかった。 2021-12-20追記: 2.17…

Apache POI 5.1.0出てた

irof.hateblo.jp の後続エントリ。 5.1.0でサイズは戻ったです。(少なくとも私が使う範囲は) 依存ツリーも4.1.2の頃とだいたい同じ見た目。 左が5.1.0で右が5.0.0(の前1/3くらい)です。これがまんまjarの数になる。 4.1.2 -> 5.1.0で見るとほとんど差は…

JUnitのNestedなMethodSourceの注意点

JUnit 5.8.1 Java 17.0.1 IntelliJ IDEA 2021.2.3 JUnit5での @MethodSource のおさらい JUnit5にはパラメタライズドテスト用の @ParameterizedTest があり、様々な方法でパラメーターを与えられます。 その中でもパラメーターにある程度柔軟性が欲しい場合…

公式ドキュメントを読めというけど

公式ドキュメントだからと言って、考えなしにそのコードを切り貼りしてはいけないんです。 っていう私の失敗談。露悪趣味はありません。 Javaの公式ドキュメントとしてJSLのAPI仕様(Javadocと呼ばれたりする)があります。 コード例が載ってると「挙動理解…

技術から入ってもいいと言う話

システム開発の分野は技術の移り変わりが早く(これも他の分野と比べたことないので「早い気がする」と言うだけなのだけど)、なんらかの成功を収めた企業などの採用しているものがバズワードとなって一気に広まったりします。この時、その技術だけを追って…

コード、区分、フラグ、IDと名前。

システム開発ではよくコードや区分、フラグと呼ばれるものを扱います。 これらが混同していたり、曖昧になっていたりすることは多いので、その辺りを整理しておきます。 IDや名前なんかもこの文脈に登場するので、ついでに。 コード コードはエンコード/デ…

ローカルクラスとしてrecordを使う

irof.hateblo.jp こちらで書いた「Local record classes」を使う時の注意。 触ってると案外使う機会が出てきそうな感触があったので、気をつけるところを書いておきます。 ローカルクラス そもそもローカルクラスってあまり使わないものなんで存在も認識され…

recordのネスト、ついでに他も

record Outer(int a) { record Nest(int b) { } } こんなことしたらどうなるんだろうと気になりまして。 record が単にクラスのシンタックスシュガーであれば、NestはインナークラスになるのでOuterのインスタンス変数、ここでは a にアクセスできるんですが…

IntelliJ IDEAで複数のクラスをマージする

IntelliJ IDEA 2021.2.3 値オブジェクトなクラスを呼吸をするように作っていると「あれ、これ同じじゃ?」となることがたまにあります。 使用箇所が少なければ手作業でマージしてもいいのですが、多くの箇所で使っているクラスだと大変。 文字列の一括置換で…

IntelliJ IDEAのGradleが使うJDKバージョン設定箇所

IntelliJ IDEAでGradleのタスク実行しようとしたら意図したバージョンで動作しなくて文句言われる場合の設定。複数のJDKを設定していなかったら起こらないと思います。 IntelliJ IDEA 2021.2.3 あ、Mavenも大体一緒です。 設定する場所 Build, Execution, De…

Recordを使ってく上で気にしとくこと

Java16で導入されたRecordですが、Java17リリースによりこれから一気に使われていくことかと思います。 Java17雑感で「データクラスを新しく作るならRecordを使ってみる」とか書いたんで「よしRecordを使おう!……ところで何気にしなきゃなんだっけ?」な私向…

開発環境のJDKセットアップ

最近「どこどこのサイトからダウンロード」とかしてないなぁ、と思ったので。 IntelliJ IDEA Community Edition 2021.2.2 SDKMAN 5.12.4 macOS(メイン) SDKMAN!にお任せ。 IntelliJ IDEAからはAdd JDKで ~/.sdkman/candidates/java に入ってるのの主だった…

テストでのデータベース単位の捉えかた

データベース(に限らずあらゆる永続化リソース)を使用するテストをいかにして行うかはいつだって悩みの種です。この悩みは「どうやったらデータベースを使用するテストを行えるかわからない」ではなく「なんとかやってるけど、不満のようなものがある」と…

Java17雑感

LTSとなるJava17が出ました。組織が今後もJavaを使っていけるかの試金石になるバージョンだと思います。 実際のとこLTSだから特別安定してるとかそんなことはないと思うし、6バージョン(3年)ごとにLTSにするってのもたぶんOracleさんが言ってみただけで、…

とりあえずSpringBootアプリケーションをherokuで公開する

手順の全て mkdir {てきとうななまえ} cd {てきとうななまえ} curl -O https://start.spring.io/pom.xml -d dependencies=web -d javaVersion=8 Applicationクラス作成(後述) git init git add . heroku create heroku git:remote -a {createで作られたも…

アームがないモニターアームを買ってみた、その後

irof.hateblo.jp ということです。 移動に自由度がない。上下移動するにはネジまわさなきゃで面倒。 デッドスペース(10数センチ)を許容するには机が小さすぎる モニターの上下移動は使いづらい。上端、下端でとまらないからカーソルが行方不明になる。 あ…

「Springのドキュメントの探し方」を実装してみた

Springのドキュメントの探し方 で書いたのをChrome拡張機能にしてみた。使う人がいるかどうかは知らない。 自分用なんで別段公開する必要はないんだけど、公開してインストールしてると別端末でも同じアカウントなら勝手に入ってくれるんで楽なんだよね。別…

Springのドキュメントの探し方

私のね。 三行で Single page HTML でページ内検索する。 Googleでは site:https://docs.spring.io/spring-boot/docs/current/ を検索条件に含める。 GitHubの spring-projects で in this organization で検索する。 蛇足 該当ツイート、発端はbouzuyaさん…

アームがないモニターアームを買ってみた

キングジム モニターアーム(1面2軸タイプ) ARM110クロキングジム(Kingjim)Amazon 気づいたらなぜかモニター増えて、机買って誤魔化してたんだけど、やっぱモニターアーム欲しいなーって思ってたら届いてました。ポチっただけで届くなんて不思議です。 irof.h…

SpringBootでRestTemplateの設定を変えたい

Spring Boot 2.5.2 本稿の対象 以下のような人が対象です。 SpringBootを使っていて new RestTemplate() とかを書いた/見たことがある。 SpringBootを使っていて new RestTemplateBuilder() とかを書いた/見たことがある。 ぼんやり知ってるけど仕組みとか…

SpringBootとJSPと

JSPはすごくいい技術なんだけど、使い所も減ってきて最近はあまり見なくなってきました。 Spring Boot(2.5.2)のドキュメントを見てるとこんな感じ。 7.7.1. The “Spring Web MVC Framework” / Template Engines Spring MVC supports a variety of templati…

年中税金的なものを払ってる気がする

多いと思ったら1年の12ヶ月中6ヶ月は何かしら払ってるんですね。打率5割。そりゃ多いわ。 4月 国民年金保険料。20万円。 5月 所得税。所得に応じて。確定申告の締め切り延期でちょっとズレてる。 消費税。売上の10%あればいい。確定申告の締め切り延期でちょ…

完全食漬けで1年過ごした結果

特に問題なく生きてます。健康診断とか献血とかの数値的にはよくなってたりする。 内訳 合計 1,857kcal * 365日=677,805kcal COMP 440,000kcal Huel 13,600kcal BASE BREAD 4,208kcal 2020-04-01から2021-03-31の1年分。約67.5%です。後述のようにわからな…

開発時間の内訳を眺めてみよう

開発効率を上げたいとか、開発速度を上げたいと言うのはプログラマの自然な欲求だと思います。 「そう思いはするもののどうすればいいかわからない」のであれば、開発時間の内訳を眺めてみましょう。 この図はグルーピングが微妙だったり、重要なものが抜け…

コミット対象をよりわけるのをやめてみよう

git add {ファイル名} でステージングするファイル単位で選べます。10ファイル変更しててそのうち3ファイルだけコミットしたい時とかに便利です。 git add -p でステージングする変更を行の塊単位で選べます。関係ないコメントを足しちゃったのとか、うっか…

privateメソッドをテストしたい

と思うのは、とてもいいこと。 前置き もし行いたいテストが外的振る舞いを示すものであれば(少なくともテストにより観測できる見通しがなければ「テストしたい」とは思わないだろうから、何かしら外から観測可能なものではある可能性は高い)、それがpriva…

開発時に実際にProfileをどう指定するか

導入 SpringBootでProfileを使用するようになると、何かのprofileを指定しないと起動しなくなるような構成になりがちだと思います。 たとえば application-local.yml 、 application-dev.yml 、 application-prod.yml など環境ごとのプロファイルを用意する…