きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

技術

スプレッドシートでAセルにBセルの文言が含まれていることを確認する(Containsみたいなの)

AセルにBセルの文言が含まれていることを確認したかった時のメモ。 固定値がAセルに含まれていることを確認することは簡単でしたが、確認したい文言を可変にして確認する方法を調べるのに時間がかかりました。 環境 Google スプレッドシート 2021/06/17時点 …

PythonのPytestでParameterizedTestをする

PythonのPytestでもParameterizedTestをしたかったので、それを調べた時のメモ。ParameterizedTestのメリット等は特に解説しません。 環境 Python 3.8.6 Pytest 5.4.3 ゴール 2021年の各月の末日を求める。求める際にはParameterizedTestを使用する。 使い方…

私が好きなアーキテクチャ(ポートアンドアダプター)を説明する

新人育成用に自分が知っている知識を棚卸するための記事です。なお、解釈が誤っている可能性は十分にあります。 キーワード ポートアンドアダプター ヘキサゴナルアーキテクチャ ミュータブル/イミュータブル 腐敗防止層 ポートアンドアダプター(ヘキサゴナ…

Mavenのproxy設定は1つしか有効に設定できない

タイトルの出オチ記事。これを知るためだけに4日くらい無駄にしました。参考先のブログに感謝です。 環境 Maven 3.6.0 結論 Mavenでproxyを通す設定は、~/.m2/settings.xmlに設定する必要があります。 ただし、~/.m2/settings.xmlに複数定義できても、設定は…

Pythonの標準ライブラリで先月今月来月の月初月末を求める(datetime, calendar)

Pythonの標準ライブラリを使って、先月今月来月の月初月末を求める方法がわからなかったので、記事にします。 なお、サードパーティ製のライブラリdateutilを使ったほうが楽に導き出せるようですが、この記事では標準ライブラリにこだわることにします。 環…

Playwrightの実行環境をDockerで用意する

最近、私の中でMicrosoft製のE2EツールのPlaywright(Star数25.6K)がアツイです。 今回、PlaywrightをCI環境で使いたかったため、実行環境をDockerで準備する手順を残します。また、CIでE2Eのシナリオを実行できるようにします。 環境 Python 3.8.6 Playwrigh…

DBからJavaのResultSetにLocalDateTimeやBigInteger等の基本型以外の型を直接設定する

TwitterやJavaのオープンチャットででたまーにResultSetから直接LocalDateTimeやBigIntegerを取得できずに、一旦Stringやjava.sql.Dateで取得した後に変換している、ということを見かけることがありました。直接LocalDateTimeやBigIntegerで取得することがで…

WSLでAWS Vaultを使えるように設定する

副業でWSL1にAWS Vaultを導入する必要があったので、その手順をメモします。なお、こちらのIssueコメントを読めば、9割完了です。英語が読める人はこちらを参考にしてください。 環境 WSL1 Ubuntu 20.04.2 LTS (Focal Fossa) AWS Vault v6.3.1 ※ WSL2でも同…

Javaで比較するときはObjects.equalsを使うのがオススメ

小ネタ。正直、記述量が増えるので好き嫌いで言うと嫌いですが、NullPointerException(以後、NPE)が発生しなくなるので安全に処理したい時はオススメです。 環境 Java 15 出現時期 java.util.Objects Java1.7 Java7の時代からあります。分かりづらいですが、…

AI-900: Microsoft Azure AI Fundamentalsの合格記

掲題の通り、「AI-900: Microsoft Azure AI Fundamentals」を受験し、合格したので合格記を記します。 前提 JavaのエンジニアでAIで何かをやった経験は無し Azureでの開発経験あり 構築はしてないので、一からやれと言われたら分からない AZ-900は所持 AI系…

Docker HubにDockerイメージをアップロードする(ECR等でも流用可能?)

自作のDockerイメージをDockerHubにアップロードすることができると、簡単に同一の環境を配布できます。DBをイメージ化すればマスタデータやトランザクションデータも含めて共有することもできますし、他システムに対して自システムをモックとしてコンテナで…

LombokでToString.IncludeとExclude、callSuperで便利にログ出力する

小ネタ。JavaにはLombokという便利なライブラリがあります。その便利なライブラリの中にあるToString、その中でもIncludeとExclude, callSuperを駆使すると便利だったので、ぜひ覚えてください。 この記事では、ToStringのInclude, Exclude, callSuperの3つ…

Dockerのコンテナ間通信をする方法をまとめる

コンテナ間通信をしたい時に、どのURLを指定すれば通信できるか分からなかったので、それを調べた時のメモです。 Dockerを単体でrunさせることは想定していないため、docker composeで起動する前提で記載いたします。 環境 Docker version 20.10.5, build 55…

echoコマンドで文字色や背景色を変更する

echoコマンドで出力する文字色や、背景色を変更できることを知っていましたか?こちらを覚えると、正常終了時には緑色で完了メッセージ、異常終了時には赤色で異常メッセージを出力することで、シェルの終了を視覚で検知することができます。 今回の記事では…

Javaで起動後DBの値をキャッシュに持つ等をPostConstructで処理させる(SpringBoot)

Javaのオープンチャットにて、「SpringBootの起動時にDBアクセスしてマスタデータを保持することは可能ですか?」といった質問が出てきました。 この記事は、解決方法として挙げられたPostConstructという処理を理解していなかったので、PostConstructを勉強…

JenkinsでGit PushしたらGit detached HEADが発生した

Jenkinsで2回も同じ箇所で引っかかったので、ブログ化。新規性はありません。 状況 Jenkins上でGitリポジトリとブランチを指定して、JenkinsFileを取得している。同一のリポジトリにリリースバージョンを管理するファイルがあり、パイプラインでリリースする…

Javaで最近使っているParameterizedTest【2021年版】

※ JUnit5のアップデートを知るための記事ではありません。私の知識アップデートをお伝えする記事になっています。 以前、ParameterizedTestに関する記事を書きました。その時は、テストコードの表現力を意識して、ArgumentsSourceを使ったほうが良いという結…

SpringのSpELでネストしたクラスの値をリフレクションして取得する

Java単体でもリフレクションで値を取得できます。しかし、ネストされた値を取得することは非常に面倒です。 Springではもっと簡単に値を取得することができます。それは、Spring式言語(Spring Expression Language、以後 SpELと表現します)を使用した方法で…

Javaでリフレクションを素振りする

基本的にはIDEのサポートが得られなかったり、静的解析してくれないので、リフレクションは使ってはいけません。しかし、非推奨であることと、使えないことは違います。 当記事では、Javaでリフレクションを使ってprivateメソッドとフィールドを呼び出せるこ…

JavaでLocalDateとLocalDateTimeを元に月末日を求める

年と月のパラメータから月末日を求めるYearMonth型の記事を書きました。しかし、個人的に時刻を扱うときはLocalDate, LocalDateTimeのどちらかで扱いたいです。 今回の記事では、LocalDate, LocalDateTimeを元に月末日を求めます。 環境 Java 15 前提条件 な…

Javaで年と月を元に月末日を求める(YearMonth)

Javaにて年と月から、その年の月末日を求める方法をメモとして残します。 環境 Java 15 前提条件 パラメータは年と月のみ 「2021-05」等の1つにまとまったパラメータも含む ゴール 閏年も含めて、月末日を求めることができる YearMonth型 Java8からjava.time…

TeraTermで自動ログインできるようにマクロ作成を素振りする

転職して開発端末はMacでしたが、特定のサーバを作業するときはセキュリティの関係でWindowsの踏み台サーバから操作する必要がありました。 その踏み台サーバには、データベースの操作にA5M2、ターミナルにTeraTerm等々のよく使われているWindowsのソフトが…

Javaで法律に従った暦による期間計算

以前、法律に従った暦上の計算方法を記事にしました。 当記事ではJavaで法律に従った暦による期間の計算を求める方法を記します。 環境 Java 15 ユースケース 月次で契約するサブスクリプションサービスを実施しています。中途半端な日に解約されてしまうと…

Javaで○○様等の○○を埋める(MessageFormat)

あまり明示的に書くことが無かったので、MessageFormatを知りませんでした。 この記事では、メール等のタイトルや文言に対して、MessageFormatを使うことで「○○様」というフォーマットから「きり丸様」という文言を導き出すことをゴールとします。 環境 Java…

Javaで数値から1桁ずつの数値配列に変換する(109を1,0,9の配列に変換する)

小ネタ。業務で使ったことは無いですが、LeetCodeで必要になることが多いので自分向けに整理します。 なお、もっとよりよいやり方があれば教えていただきたいです。 環境 Java 15 ゴール 入力値は数値 戻り値は数値の配列(Listでも配列でもOK) 最も早く変…

腐敗防止層を意識して綺麗なドメインを保ちたい

Qiitaに書いた記事のお引越し記事です。 本記事は ドメイン駆動設計#1 Advent Calendar 2019 20日目の記事です。 こんにちは、会社でエリックエヴァンスのDDDの輪読会が開催されていて、半年経ってようやく飲み込めてきた程度のレベルのきり丸です。 注意 私…

トヨタで学ぶソフトウェアの品質管理:自動化とニンベンの自働化(AutomationとAutonomation)

トヨタの品質管理には、自動化(Automation)とは異なるニンベンの付いた自働化(Autonomation)という概念があります。海外でも英語でも判別できるように異なるスペルが存在します。日本語では同音異句なので、口頭では英語の方が分かりやすいでしょう。 こ…

IntelliJ IDEAでGradleのテストが遅いときに試す(タスクランナーの変更)

小ネタ。処理が遅いと同僚が困っていたので、教えたら劇的に改善しました。 環境 IntelliJ IDEA Ultimate 2020.3 タスクランナーを変更する Gradleの設定画面から、ビルド及び実行に使用(Build and run using)とテストの実行に使用(Run tests using)をデ…

JavaのBigDecimalをまとめる(リストのBigDecimalの計算も)【2021年】

自分が知りたかったBigDecimalの知識を集める記事。なお、基本型を扱う関係上、新規性は多くありません。強いて言えば、2021年でも扱えるってことくらいですかね。 環境 Java 15 この記事を読んでわかること一覧 precisionとscale(有効桁数と精度) 型宣言 …

【2021】SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く

去年書いた記事で使用していたクラスがDeprecatedになっていたので、新しく更新します。 前回の記事を書いた時にアップデートしておけばよかったです。 変更点 ConfigFileApplicationContextInitializer から ConfigDataApplicationContextInitializer に変…