KotlinのtoXxx系の型変換用拡張関数とそれによってもたらされるコードの一貫性

どうも、久しぶりの記事です! なんで書いたの? Kotlinのコードの一貫性に関する個人的感想を社内開発メンバーに共有したのですが、もったいないからオープンにしようと思い久しぶりに記事を書いてみます。 超短いです。 概要 日々コードを書く中で、Kotlin…

KotlinのtoXxx系の型変換用拡張関数とそれによってもたらされるコードの一貫性

どうも、久しぶりの記事です! Kotlinのコードの一貫性に関する個人的感想を社内開発メンバーに共有したのですが、もったいないからオープンにしようと思い久しぶりに記事を書いてみます。 超短いです。 日々コードを書く中で、Kotlinがコードの一貫性を重視…

Javaのバージョンは最新に追随するか、LTSを乗り換えていくか

先日こんなことをつぶやいていた buildpacks使う場合、EOLになったjavaバージョン用のランタイム提供されないのか…2週間くらいで消されてる— uuuu.kt (@yushi_koga) April 26, 2021 今の状況で猶予期間が2週間しかないの辛いなぁLTSで動かしておいたほうが良…

Spring Bootのバージョンを2.4.4にあげるときの落とし穴

概要 Spring Bootのバージョンを2.4.4に上げたタイミングで自動的に解決されるmysql-connector-javaのバージョンが8.0.23に変わります。 しかし、このバージョンからタイムゾーンを接続文字列に含めて明示してない(serverTimezoneなどを指定していない)場…

MDCInsertingServletFilterとSentryAppenderを組み合わせると一部のMDCのvalueがnullになっているせいで、処理途中でNPEになってしまいsentryにイベント通知できない

掲題の通りの事象に遭遇して、解決に手間取ったのでメモを残しておきます。 その時ぼやき半分につぶやいていたのはこちら。 spring bootとsentryとlogbackの組み合わせがうまく動かなくてデバッグしている少しでもトラブるとライブラリ側のコード読むことに…

Atomic Designの段階の分類の指針について考えていること(2020/6/10バージョン)

概要 掲題についてだらだらと考えたことを表にまとめたのでメモに残しておきます。 大筋としてはそんなに間違えていないと思いますが、兼業フロントエンジニアなのであまり信じすぎないでください…。 前提 nuxt.js 分類とその説明 分類 該当フォルダ 説明 at…

io.lettuce.core.RedisCommandExecutionException: ERR no such key

以下のようなエラーを見かけたので調べてみた。 io.lettuce.core.RedisCommandExecutionException: ERR no such key at io.lettuce.core.ExceptionFactory.createExecutionException(ExceptionFactory.java:135) at io.lettuce.core.ExceptionFactory.create…

テストコードを書くその前に

今日テストコードを書く前にどんな事を考えているかつぶやいたのでブログにも転記しておく。 テストで一番大事にしているのも(テストケースの)設計だったりする。— uuuu.kt (@yushi_koga) April 8, 2020 闇雲に、探索的にテストするのではなく、テストケー…

私が考えるファーストクラスコレクションを定義しておく意味や意義みたいなもの

私の考え 私は、ドメインオブジェクトのコレクションには常にファーストクラスコレクションを定義しておくと良いと考えています。 例えば、List<DomainObject>という生の配列をクライアントコードに操作させる場合、あちこちのクライアントコードに同じ操作が(しかもちょ</domainobject>…

クラスなどの名付けで抽象的にするか具体的にするかで悩んだら

OperationServiceとするかSomeSpecificOperationServiceで悩んだらSomeSpecificOperationServiceを選びます。 ここって、確かに迷いがちなところですが、抽象度が高い名前をつけると責務が大きくなりすぎる傾向が強いので、具体的な名前をつけるほうが私は好…

私のコードレビュー観点について

仕事でまとめる機会があったので、ブログに残しておきます。 私が考えるレビュー観点は以下の4点に分類できます。 仕様 内部品質 セキュリティ パフォーマンス 1. 仕様を満たしているか 仕様の漏れがないか 仕様の誤りがないか 2. 内部品質 変数名・関数(メ…

Spring BootでMVCを自己署名証明書(オレオレ証明書)を使ってHTTPSでListenさせる方法

オレオレ証明書を使ってSpring Bootをhttpsで起動させてると、macがcatalinaでブラウザがchromeの場合にアクセスしてもERR_CERT_REVOKEDと表示されて先に進めない(警告を無視するオプションが提示されない)事象に出くわして4時間溶けました。 めちゃくちゃ…

ReactとVueのどちらを採用するか

掲題について、とりとめもなくメリット・デメリットなどを考えているので、メモを残しておきます。 執筆時点ではReactは経験が非常に浅く、事実や経験というよりはほとんどが思い込みや予想です。 React メリット フロントエンドをうまく作るために頭が良い…

レガシーをぶっつぶせ。現場でDDD!2nd 「インプット<アウトプット!」の参加レポート

レガシーをぶっつぶせ。現場でDDD!2nd 「インプット<アウトプット!」の一部と二部に参加してきました。 過去に多くの勉強会に参加してきましたが、その中でも特に学びを得られた強い実感がありました。間違いなく上位に入る満足度です。 学んだことを反芻…

Qiitaでも記事を書き始めました

ちゃんと検証した技術記事は今後Qiitaに投稿するようにしようと思います。 このブログはアイディアや、検証結果・内容に自身がない技術ネタなどを低頻度で更新していきます。 ちなみに、最近Qiitaに投稿したのはこの2つの記事です。 Spring MVCのRestControl…

ログ収集基盤の(再)設計

はじめに 個人的に考えていることのメモです。真似してやけどしても責任持てません。 データサイエンティストに聞いてわかったデータ分析基盤アーキテクチャの勘所ってのを以前書きましたが、その続きのようなポストです。 おことわり 現在関わっている案件…

cluster-autoscalerでnodegroupを0にスケールする方法

ASGにk8s.io/cluster-autoscaler/node-template/label/{key}={value}のタグをつけるだけでした。 たったこれだけです。公式にも書いてあります たどり着くのに数時間かかってしまったので他の日本人の助けになれば、と思って残します。。

Nuxt.jsのSPAにvuexでサイドメニューを実装する

はじめに サイドメニューを実装する機会があり、手っ取り早い方法がvuexだったためvuexを使って実装してみました。 そのやり方を残しておきます。 どんなアプリか 実際の動きをみてもらったほうが早いです。 こんな感じでメニューをクリックしたら対応するペ…

TypeScriptを学んでいる

TypeScriptを学び始めている中で感じていること 実践TypeScriptをざっくり読んで、ざっくりとTypeScriptについて理解したので現時点の感想を残しておく。 はじめに 自分用メモの位置づけの記事です。 現時点で好印象を抱いています。 感じた違和感 今まで身…

brewで古いバージョンをインストールする

微妙に分かりづらかったので、メモを残しておきます。 Formulaのディレクトリに移動 $ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ 古いコミットをフェッチ $ git fetch --unshallow インストールしたいバージョンを確認する $ gi…

Kotlinの好きなところ

tl;dr kotlinを勉強していて特に気に入った言語仕様と例をひたすら紹介します 紹介するコードは実際に書いてgithubにあげています。 2019/08/04に改訂しました。 気に入った言語仕様 演算子オーバーロード ifとwhen(switch)が式 null安全 イミュータブルにし…

AWS EKS上のアプリからSESでメールが飛ばせない不具合にどう対処したか

現象 Spring Boot x AWS EKS x Istio x AWS SESって組み合わせでアプリを動かしていますが、SESにメールを送ろうとしても以下のような感じのExceptionが出てメールが送れないという現象に遭遇しました。 Request processing failed; nested exception is org…

データサイエンティストに聞いてわかったデータ分析基盤アーキテクチャの勘所

データサイエンティストに聞いてわかったデータ分析基盤アーキテクチャの勘所 ログ収集&可視化のためのアーキテクチャについて、同僚のデータサイエンティストからお知恵を拝借しました。 お聞きした内容がかなり有益だったため、メモを残しておきます。 ロ…

障害調査のコツ(ログの調査方法など)

新卒とかに何度も説明しているので、再共有時用のメモです とにかくまずはアプリケーションが出力しているログを見ることです。 大抵の場合は、答えか大きなヒントがそこに書いてあります。 特にフレームワークの出力しているエラーメッセージとスタックトレ…

DAO(Repository)の単体テストについて

DbSetUpとAssertj-DBの組み合わせがとても良さそうです。 さらに組み込みDBのH2と組み合わせてSpringのTest系の機能を組み合わせるとほぼ理想通りのDAOのテストがかけるようになりました。 具体的には以下が実現出来ています。 h2でテスト実行するからMySQL…

分散トレーシングをテーマにして勉強会に登壇してきた

だいぶ前ですが、とある企業様との合同勉強会で、分散トレーシングの説明とデモを行ってきました。 そのサンプルコードのURLを共有します。 https://github.com/kogayushi/ist-distributed-tracing-demo スライドの元となるmarkdownファイルもこのリポジトリ…

私はなぜ今からKotlinを学ぶのか

それなりにJavaのことはわかってきた気がするので、よりよいコードを書けるようになるべくKotlinを学びはじめました Kotlinに着目したきっかけは特に思い出せません。 better Javaと言われているからJavaより書きやすいんだろうな、くらいの印象からスタート…

言語やFWなどの選定基準

みなさんは言語やFWなどの選定基準について考えたことがあるでしょうか? 私は使いたいと思ったFWなどを採用するかどうかを考える場合に、以下を基準にしています。 プロダクションで利用されている事例が多い バグが改修される速度が早い あるいは未対応で…

Spring Security 5.xでログイン失敗時にmessages.propertiesで上書きしているにもかかわらず常に"Bad credentials"が表示されてしまう

messages.propertiesで、メッセージを上書きしているにも関わらず、デフォルトのBad credentialsというメッセージが表示されてしまう不具合に遭遇しました。 どうも、AbstractUserDetailsAuthenticationProviderにinjectionされているMessageSourceが不正な…

昔作ったOOPなサンプルコードが出てきたからブログに残しておく

大昔に作ったOOPなコードの紹介記事を世に出していなかったので、恥ずかしいけど記録として公開しておきます。 今書けばもっと洗練できると思います(けど管理職になってから多忙で、その時間がないです…)。 オブジェクト指向プログラミングのサンプルコー…