日々常々

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

ThreadContextやMDCはremoveせずにcloseしよう

新くもなんともない話です。当たり前と思う人には昔から当たり前(昔度合いはおまけ3を参照)。でも知らないことは悪ではないし、そうなんだーってなればいいだけの話。 一連のログに同じ値を付与したい時、 MDC (SLF4J) や ThreadContext (Log4j2) を使う…

コードレビューのコメントすべてに対応する必要があるか

いろんな現場でちょいちょい話題になるので「前にツイートしたなぁ」と見てみたらすっごい長かった。 コメントあると「対応しなければならない」ってなるの。あれが諸悪の根源だと思ってる。— irof (@irof) 2020年9月17日 諸悪の根源? とりあえず全文転記。…

getとfindの使い分け

メソッド名の getXXX と findXXX どっちがいいの?みたいな話になることがある。 この手の話ができるだけでもいい感じだと思います。名前が記号化していないってことなので。 世の中には名前に力を割くのが無駄な文脈もあって、そう言うのに晒されて続けると…

コードを人に寄せたい(という題の書きかけ)

ブログの下書きを眺めてたら書きかけで飽きたっぽいのがみつかったので供養しておきます。 もう二年前になりますが、「コードをどまんなかに(該当スライド)」でこんな風に人とコンピュータとコードの関係を話しました。(なんかこれのブログ書いてないな………

2021年のJavaとnullの話

ブログの下書きを眺めてたら長文がみつかったので供養しておきます。 TODOがDOされるかはわかりません。心の目で見てください。 Javaには null があって、この子がいない世界がいいんですけど、いなくなったりはしてくれないので、仕方がありません。いい感…

わからないことの調べかたを考えてみる(2018年版)

ブログの下書きを眺めてたら長文がみつかったので供養しておきます。 「まず公式サイトから読もうよ」って言い続けてたら、数年越しで結果的にその方が効率いいって気づいてくれた人もいるので、言い続けるのも大事だなーと思った。最近。— irof (@irof) 201…

2023年のふりかえり

ことし10本目のエントリ。 毎回このブログの1単位を「記事」と呼ぶか「エントリ」と呼ぶかとかで無駄に悩んだりします。「本記事」とか「本投稿」とかそういう、書いている文章内のスコープを指すの。 で意識的には「エントリ」を使ってるんだけど、これはは…

いま使ってる音を鳴らす装置たち

なんだかんだで色々あるなぁと。音質の違いなんてわかる耳をしていない私なので、たぶん費用対効果そんな良くないんだけど、まぁ。 違う端末間で接続切り替え面倒、Bluetoothのマルチ接続もできなくはないんだけど、それやるとSlack通知音とかが別の端末で鳴…

Kindleアプリの入れ替えで一括解除しようとしたら間違えて削除してしまった間抜けの記録

買ったコンテンツを間違えて消しちゃって、サポートに問い合わせたけどごく一部しか復元できず、再購入するしかなくなりました。その一部始終を記録しておきます。 私のKindle事情 MacのKindleアプリは「Kindle for Mac」とかで、長らく出来がイマイチなもの…

SpringBootでAsyncを使う時に知っておきたいExecutorのこと

SpringFramework 6.0.11 SpringBoot 3.1.2 @Async と @EnableAsync の使い方 SpringFrameworkで @Async を使うとかんたんにメソッドを非同期で実行できます。 @Component class AsyncComponent { @Async void method() { // 時間のかかる処理 } } 使う側は単…

「コーヒーの味はわかんないけどなんとなく豆挽いて手で淹れるのがいいなぁ」

ぶっちゃけコーヒーの銘柄とか覚えてないけど、なんとなく好きだなーいまいちだなーとかはある。 あ、ブルーマウンテンだけはわかる気がする。あんま好きじゃない方に属するけど、飲む飲まないで言うと飲む感じ。 その程度の味覚だけど「毎日一人分のコーヒ…

Javaのバージョンの取り扱い(2023年6月)

ツイート したらそれなりに反応があったので、少し丁寧に書いておこうかなと。 水物な内容なので、自動でつく投稿日時以外にもタイトルに「2023年6月」を入れて強調しておきます。 しょーとあんさー よくわかんないならJava17にしておきましょう。 前提 ツイ…

たすけてあっぷる、iPhoneのロック画面に閉じれないモーダルダイアログが出たの!

(絶望してるときのツイート) 一見ロック画面に表示されるただのダイアログなんですが、どちらのボタンを押しても閉じてくれません。 経緯 ノイズキャンセリングヘッドセットはBoseのQC35IIを使ってます。 Bose QuietComfort 35 wireless headphones II ワ…

API仕様をHTMLファイルで出力する(SpringBoot+Redocly CLI)

このエントリでの「API」はHTTP APIです。Javadocなどでドキュメント化できるAPIではないです。この件に関してはいつかブログとか書くかもだけど、いまは ツイートを参照してください。 SpringBoot 3.1.0 springdoc-openapi 2.1.0 springdoc-openapi-gradle-…

ローカルでSonarQubeを触ってみる(MavenとJaCoCoと)

SonarQube 9.9.1-community Maven 3.9.1 これはなに SonarQubeよくわからん人向け。 「何できるもんなんだろ」とか「現場でSonarQube使ってるものの、設定とか影響範囲わからなくて怖い」とか、色々とあると思う。ローカルでいじくれるとイメージも湧きやす…

Mac mini M2が届いたのでセットアップのメモ

Mac miniが届いたのでセットアップのメモ が 2020-11-15 なので、 P2Y2M22D ぶり。2ならび。 前回は1週間で届いたけど、今回は3週間弱。発表直後だしね。M1出る直前にIntellのを買ってジリジリしてたのだけど、メモリとか使うソフト(主にDocker)の対応とか…

内部構造から学ぶPostgreSQL設計・運用計画の鉄則

届いてた pic.twitter.com/StH3T8GYiW— いろふ (@irof) 2022年11月26日 改訂3版。定番なのかな?少し前にTwitterのTimeLineに流れてきたのをポチって忘れてたのが届きました。やはり物理本は良い……。 [改訂3版]内部構造から学ぶPostgreSQL―設計・運用計画…

3月末のSpringFrameworkのRCEを紐解いてみる

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement Spring Shell がかわいそうなのでSpring4Shellって呼び方はしてほしくないなーと。でもCVEの番号なんて覚えれないので、通称は欲しい。この名前で広まっちゃったから検索に使っ…

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](https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-sprin…

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