きり丸の技術日記

技術検証したり、資格等をここに残していきます。

2021-01-01から1年間の記事一覧

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にはSQL*Loaderという標準でついていて、高速で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で法律に従った暦による期間計算(日割りにならない1ヵ月を求める)

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

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

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

Javaでnull様等のnullという文字列を埋める(MessageFormat)

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

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

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

仕事は終わりから逆算して考える

新人のころから言われてきていて、30目前になってもまだ上手く仕事ができないことがあるので、見つめなおすためのポエム。全ての仕事に当てはまるわけではないので、ご注意ください。 この記事は要約すると「ホウレンソウをしっかりしよう」です。 当たり前…

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

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

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

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

200記事突破しました

2021/04/15(木)に投稿した記事で200記事を突破しました! 投稿数を確認してみると、100記事を突破したのが2020/09なので、8ヵ月で100記事を書きました。3日に1投稿、週に2-3記事を書いたことになりますね。12月がアドベントカレンダーということもあり、投…

JavaでNullPointerException回避する方法をまとめる

今日も小ネタ。 NullPointerExceptionを回避するのは簡単だけど、もうちょっとスマートに書けない? ということを纏める記事。 余談ですが、NullPointerExceptionは「ぬるぽ」とか大文字取って「NPE」とか呼んでます。以後、「NPE」で統一します。 環境 Java…

【Tips】GoogleDriveでバックアップするなら元ファイルを最新とすべき

小ネタだけどよくやらかすのでメモ。 ファイルをコピペして、特定のバージョンを示すためにバックアップを残すことはよくあると思います。 GoogleDriveのスプレッドシートでは、履歴を持つことができ、更に復元できます。 しかし、バックアップのファイルの…

JavaでNullを意識せずにNullableな配列項目をStream APIで処理する

超がつく小ネタ。よく忘れるのでブログ化。 環境 Java 15 結論 Optional型のofNullableメソッドでNullでも問題なく処理できるようにする。 そのあと、Stream APIのflatMapメソッドとCollection型のstreamメソッドを組み合わせる。 Optional.ofNullable(detai…

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 に変…

2021/03の第4週に読んで参考になった記事の紹介

今週も読んで参考になった記事をまとめます。 気が向いたら、同じ内容を自分のブログとしても書きます。Zennのスクラップみたいな感じにしようと思っています。カテゴリも「スクラップ」にしました。 IntelliJ IDEAにて「Command line is too long」でテスト…

エンティティを渡すだけでDBのユニットテストのセットアップしたい・改

前にデータセットアップを面倒くさがって、BeanPropertySqlParameterSourceを使ってパラメータの項目名を取得していました。その時の記事。 そのまま使用していると、自分の目的通りには使えなかったので結局自作しました。 その時のメモ。 環境 Java 15 H2 …

ノートPCが急に休止状態になったりスタンバイになったときに疑うこと(Thinkpad L13の磁気リードスイッチ)

最近、会社のWindows端末を新しくしたのですが、なぜか何もしていなくても急に休止状態になることがありました。 今後のノートPCも同じような仕組みで急に休止状態になることもあるかもしれないので、共有兼メモとして残しておきます。 環境 Thinkpad L13 ww…

2021/03の第3週に読んで参考になった記事の紹介

役に立ったけど自分でブログにするほどじゃないし、元々の記事やヘルプが優秀だからそちらを参照してほしいという物を集める記事。 つまり、この記事自体には中身はありません。まぁ、本の紹介記事があるなら、ブログの記事を紹介する記事だってあっていいは…

AWS 認定 クラウドプラクティショナーの合格記(AWS CLF)

掲題の通り、「AWS 認定 クラウドプラクティショナー」を受験し、合格したので合格記を記します。 合格日 2021年03月13日(金) 合格した時の点数 1000点満点で、869点でした。 700点が合格ラインですので、かなり余裕で合格できたことになりますね。分から…

SpringBootでRequest前後に処理を挟むインターセプタを実装する(テストコードもあり)

JavaでRequestの前後に処理を挟むことができるインターセプタを実装したので、メモをします。 実装方法は色んな記事で書いてあるものの、テストまでは書いてないことが多いのでそこで差別化を図ります。 環境 Java 15 SpringBoot 2.4.1 ユースケース APIの流…

基本型以外を使って設計レベルアップ!(Primitive ObsessionとFCC)

いいコードとは、悪くないコードのことを指すと考えています。 そして、悪くないコードを目指していくには、Code Smellsに注目すると改善できます。 今回の記事では、Code SmellsのなかのPrimitive Obsession(基本データ型の執着)に注目します。 Primitive…