きり丸の技術日記

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

スプレッドシートで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を使用する。 使い方…

Javaで標準入力と標準出力を使ったコードをテストする

標準入力と標準出力をテストしようとすることは基本的にはありません。標準出力ではなく、Loggerに書き込まれていることを確認することが多いでしょう。 しかし、知っておいて損はありません。今回の記事では、FizzBuzzを使って標準入力と標準出力のテストを…

『思考法図鑑 ひらめきを生む問題解決・アイデア発想のアプローチ60』の読書感想

翔泳社が翔泳社ブックアンバサダーを100名募集というサイトにて、翔泳社の本の感想をSNSを通じて発信するアンバサダーを募集していました。前回の第1回も参加させていただき、そのときのレポートはこちらになります。今回の第2回も当選させていただき、非常…

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

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

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系…

【Tips】Google スプレッドシートの日付フォーマットを変更する

Googleスプレッドシートに関しては、公式ヘルプが優秀なので、画像以外は新規性ないです。 スプレッドシートの言語と地域を元に通貨・日付・番号フォーマットが決定されます。 言語と地域をアメリカ合衆国に設定していると、デフォルト日付フォーマットは「M…

営業は隠れた不安を発掘して解決策を売る(SPIN営業)

「営業は不安を売る」という、伝聞で聞いた話を忘れないようにメモします。なお、私は営業でもないし、伝聞なので正確なことは話せません。 大前提 価値に金を出す 相手が営業に応じて契約を結ぶとき、それは相手が営業してくれた内容に対して価値を認めてく…

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を取得している。同一のリポジトリにリリースバージョンを管理するファイルがあり、パイプラインでリリースする…

まとめて処理するよりも1つずつ完成させた方が早い(1個流しとロット流し)

豆知識編。 製造現場の概念として、1個流しとロット流しという概念があります。 1個流し 部品作成し、組み立て、1つ1つを完成させてから、次に着手する 1分後に1個完成する ロット流し 1つの作業をまとめて作業し、最後にまとめて完成させる 10分後に10個完…

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

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

SQL*Loaderを使ったら実行時にORA-00001, ORA-01502が発生した

当たり前といえば当たり前の話ですが、知らなかったのでブログに残します。 環境 Oracle Database 11g Docker環境で使用していました 事象 Oracle DatabaseにはSQLLoaderという標準でついていて、高速でCSV等の外部ファイルからDatabaseにImportできるCLIが…

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 ユースケース 月次で契約するサブスクリプションサービスを実施しています。中途半端な日に解約されてしまうと…

【Tips】暦上の期間計算の定義(1ヵ月の定義、パターン記載)

「1ヵ月」って定義難しいですよね。2月は28日なのに、3月は31日だったり、月に含まれる日数は異なります。1ヵ月、3ヵ月等の契約をするときは、暦で計算することが普通です。「1ヵ月 = 30日」で計算すると楽ではあるのですが…。 どのように定義するかを悩んで…