きり丸の技術日記

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

Git LFSでプロキシを経由させる・させない(HTTPS_PROXY, NO_PROXY)

Git Large File System(Git LFS)のツールを使っていて、プロキシを経由させたり、経由させないようにする方法が見つからなかったのでメモします。 環境 Mac zsh 対応 次の設定値を使用します。大文字と小文字で設定値の優先度が異なります。 # 上に記載し…

SpringのValueに初期値を与える(エラーを起こさずにnullも初期値にする)

小ネタ。@Valueで初期値を与えたい時の記法をメモします。マッピングするプロパティがない場合、BeanCreationExceptionが発生してしまうので、それが発生しないようにします。 環境 Java 17 SpringBootTest 2.7.4 ゴール SpringのValueで初期値を渡す マッピ…

SpringでRedisを使う(データベース、キャッシュとしての使い方)

本業はJavaのバックエンドエンジニアなのですが、Redisを使ったことがないので、素振りします。 今回の記事では、データベース、キャッシュとしての機能を検証することをゴールとします。メッセージブローカー、キューとしての挙動は記載いたしません。 環境…

SpringのDisabledIfを素振りする

条件によってはテストを実行しないアノテーション、JUnit5のDisabledIfだけでなく、SpringのDisabledIfもあります。 基本的にはJUnit5のDisabledIfシリーズで十分なことが多いのですが、Spring側で用意されているものも素振りします。 環境 Java 17 SpringBo…

vmwpを終了したい(kill vmwp)

ピアソンVUEの自宅受験(OnVUE (オンビュー) - オンライン監督)をしたかったのですが、vmwpのプロセスの殺し方が分からなかったので残します。 環境 Windows 対応 vmwpはWSLで使用されているようです。そのため、WSLを停止したらvmwpは殺しきれるはずです…

Flywayで特定のDBだけSQLを実行する(Spring, vender, Postgres)

小ネタ。なお、私のユースケースを満たせていなかったので、調査結果だけです。 環境 Java 17 org.flywaydb 8.5.13 org.springframework.boot 2.7.7 対応 設定ファイルの変更 PostgresやOracle等々で実行するSQLを変更するために、spring.flyway.locationsに…

Gitのコミット時間を変更する(git commit --amend --date="`date -R`")(git squash と組み合わせる)

小ネタ。 環境 Git git version 2.24.1.windows.2 対応 次のコマンドを実行すると、最新のコミット更新時間が現在時刻になります。また、特定の時間に更新したい場合は、Git internal format、RFC2822、ISO 8601形式のどれかで渡してください。 # 現在時刻で…

Javaで1行でNull許容の配列を作りたかった

結局、願ったとおりに動かなかったので、思考錯誤したときのメモだけ残します。 環境 Java 17 対応 Collections.singletonList(T o)を使用することで、1行でnull許容した配列を作成できます。 動作確認 1行で配列を作成する方法は、List.of(), Arrays.asList…

IntelliJ IDEA ULTIMATEでOpen APIのコードを生成する

小ネタ。以前、OpenAPI Generatorをカスタマイズしたコードを生成する(Swagger Codegenとほぼ同じ)という記事を書きました。 上記の記事では、openapi-generatorのjarをCLIで実行してソースコードを生成しています。その検証中に、IntelliJ IDEA ULTIMATE…

何をもってN月第1週とする?

普段N月M週という表現で何となく通じていますが、具体的な定義があるかをしらべました。 結論を先に述べると、明確な定義をしている表現はありませんでした。ですが、週について色々と調べたのでまとめておきます。 木曜日を起点として1年を週に分割する(IS…

Pytestにてネストしたテストケースを作成する

JUnit 5だと@Nestedアノテーションを付与すると、テストクラス内にさらにテストクラスを用意できます。 Pytestでも同様にテストクラスをネストさせたかったのですが、ググってもすぐには出てこなかったので、自分のブログにまとめます。 環境 Pytest 7.1.1 …

開始日と解約"月"を元に暦上で日割のない解約"日"を求める(Java)

小ネタ。「今年の12月に解約したい。日割りが必要ない日付を教えてほしい」といった、解約する「年月」までは把握しているが、解約する「年月日」までは分からないといったケースに対応するロジックをJavaで求めます。 環境 Java 17 対応 暦上の1ヵ月の定義…

Pythonで初期配列をset型で作りたければbrace {} リスト型はbracket []

小ネタ。いつもset([data for data in datum])のように、List型を経由してたので、備忘録。なお、タイトルの出オチ記事です。 環境 Python 3.8 対応 ブレース(brace, {})でくくると、set型になります。 ブラケット(bracket, [])でくくると、list型になり…

WindowsのVS CodeのデフォルトターミナルをGit Bashに変更する

WindowsのVS Codeのデフォルトターミナルを変更したかったので、Git Bashに変更する方法を残します。 環境 VS Code 1.64.2 Windows 11 Git Bash 4.4.23 方法 VS Codeのsettings.jsonを開く。 $HOME/AppData/Roaming/Code/User/settings.json settings.jsonに…

よく使うInterfaceの活用方法【Java】

Java Advent Calendar 2022の8日目の記事です。指摘コメントよろしくお願いします。 Javaに限らず、interfaceは使い道を理解することは難しいです。この記事では、私が普段使用しているinterfaceの使い方実例を記すことで、情報共有を行うことを目的としてい…

nohupと&を使用して、性能試験をバックグラウンドで実行する

性能試験でJMeterを使用しているのですが、24時間負荷をかけ続ける長期安定の性能試験を使用するときに失敗したのでメモとして残します。 環境 CentOS 対応 nohupと負荷をかけたいコマンドを記載する。 nohup コマンド & # nohup jmeter xxxx & 失敗した理由…

JavaのMockitoで部分モックをしたい・本物のメソッドを呼びたい(PartialMock, Answer)

JavaのMockitoを使って、対象クラスをモックにすることがあります。ただし、該当クラスのメソッドすべてではなく一部だけモックにして、他は本物のメソッドを呼びたいことがあります。 今回は、モッククラスから本当のメソッドを呼ぶ方法、デフォルト設定で…

MyBatisでEagerLoad, LazyLoadをする(Annotationにて)

MyBatisのアノテーションで親クラスのデータ取得時に、子や孫クラスを一緒に取得する方法(EAGER LOAD)、必要になってから取得する方法(LAZY LOAD)を記載します。 なお、常に子クラスと一緒に扱うときはEAGER LOAD, 必要に応じて子クラスを使用する場合は…

LazyLoadのエンティティを取得しようとしてClass Not Foundが発生した(原因不明・Spring・MyBatis)

自宅で再現できなかったので原因はわかっていません。しかし、対策はうまくいったので残します。 MyBatisにてLazyLoadで取得したエンティティの子データをJavaでgetter経由で取得しようとしました。その時にClass Not Foundが発生しました。詳細なメッセージ…

SQLで複合したキーの検索条件でIN句検索する(複合、複数の組み合わせで条件検索)

1組の乱太郎、2組のきり丸、3組のしんべヱの情報が欲しい、といった組と名前の両方をキーにした検索をしたい時があります。 この記事では、単純にANDで結合できず、複数の条件を組み合わせた複合でのキーを検索条件として実行する方法を記載します。 環境 My…

Javaでデバッグ用にnullは出力しないToStringのようなメッセージを出力したい(JSON, Object Mapper, JsonInclude.Include.NON_NULL)

タイトルではToStringを加工するような書き方をしていますが、処理イメージを伝えるものですのでToStringは使用しません。 デバッグのためにLombokで大量のフィールドをもつクラスをToStringで出力すると、当然大きな文字列となります。基本的には全フィール…

ビジネス統計スペシャリスト エクセル分析ベーシックの合格記

掲題のとおり、ビジネス統計スペシャリスト エクセル分析ベーシックを受験し、合格したので合格記を記します。 前提 Excelは最低限のSUMやVLOOKUPしか知らない 普段業務では使用していない 合格日 2022年10月12日(水) 合格した時の点数 925点。 合計1000点…

Pythonで可変長引数のメソッドに配列を渡したい(位置引数、positional argument)

Pythonで可変長引数のメソッドしか用意されていないものの、処理上は配列にしてパラメータを渡すしかないことがあります。 今回の記事では、配列を可変長引数に渡せるようにする方法を残します。 環境 Python 3.9 方法 配列の変数に対して*を付与すると、可…

Docker + Poetryでライブラリを追加する(cannot operation `poetry add library`)

Docker環境のPoetryで構築しているアプリケーションがありましたが、poetry add libraryではライブラリの追加ができませんでした。 今回の記事では、Docker環境のPoetryで構築しているアプリケーションに対してライブラリを追加して、poetry add libraryと同…

途中に余計なBOMが付与されたファイルが作成された(FastAPI, StreamingResponse, Generator)

PythonのFastAPIのStreamingResponseでGeneratorを使用しながら、UTF-8 BOMのファイルをダウンロードさせるAPIを作成しました。ただ、作成したファイルを確認したところ、ファイルの途中で余計なBOM(\ufeff)が付与されてしまっていました。 今回の記事では…

build.gradleファイルを分割する(別gradleファイルを読み込む)

JavaでGradleで開発していると、build.gradleに静的解析タスクであったり、コード自動生成タスクであったり、間接的なタスクが増えることがあります。 今回は不要なタスクを別ファイルのgradleファイルに分割する方法を記事にします。 環境 Java 17 Gradle 7…

OpenAPI Generatorをカスタマイズしたコードを生成する(Swagger Codegenとほぼ同じ)

OpenAPI Generatorの使用方法については、基本的にSwagger Codegenと同じようにカスタマイズできます。 今回の記事では、OpenAPI Generatorの生成コードをカスタマイズします。 環境 OpenAPI-Generator-CLI 6.2.0 ゴール 任意のカスタマイズしたコードを生成…

Javaで現在行を取得する

Javaで現在行を取得する方法を記載します。 環境 Java 17 対応 現在スレッドのlineNumberを取得すれば、現在行が取得できます。 return Thread.currentThread().getStackTrace()[2].getLineNumber(); 0番目 Threadクラス 1番目 この処理している行 2番目 呼…

JMeterでproxyを経由したくない(no proxy, non_proxy)

JMeterでproxy設定をする記事は見つかりましたが、proxyを経由しない設定が公式マニュアルを見ないと見つからなかったので、記事にします。 環境 JMeter 5.5 対応 CLIでの設定 起動時のオプションで-Nを付与すると、proxyを経由しなくなります。 jmeter -N *…

SpringのInterceptorでGETメソッド以外を拒否するようにコードで表現する

※ 特に見どころはありません。 業務都合にて、「アプリケーションをメンテナンスモードに切り替えても、参照系APIだけは参照できるようにしたい。更新系APIは拒否したい。」との要望が出てきました。 そもそも、「そんなこと可能?」ということを素振りした…