きり丸の技術日記

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

技術

PlayWrightで動かしているシナリオを動画で記録する

公式ヘルプに設定方法は載っているので、この記事で知れることは「PlayWrightで動画を撮影できる」というのがこの記事の最大の目玉です。 環境 PlayWright 1.12.1 対応 new_contextのパラメータにビデオ用のディレクトリを設定するだけです。new_contextして…

SpringのAssertクラスで簡単にValidationする【Java】

この記事はAssertクラスを紹介するだけの小ネタです。 Springには、Assertクラスという簡単にValidationしてくれるようなクラスがあります。複雑なことはできませんが、サクっとメソッドのパラメータを検証したい時は便利です。なお、複雑なことをしたければ…

GCPのACE(Associate Cloud Engineer)の合格記

掲題のとおり、Google Cloud PlatformのAssociate Cloud Engineerを受験し、合格したので合格記を記します。 前提 GCPの業務経験なし App EngineとCloud Firestoreを使用したSlackAppは作成経験あり AZ-900は所持 AWS CLFは所持 合格日 2021年10月01日(土)…

Wiremockをモックサーバとして使用してJavaの単体テストをする

弊社ではモックサーバにWiremockを使用しています。 この記事ではWiremockを知ってもらうきっかけを提供することを目的としています。詳しいことは他の方の記事を参考にした方が良いでしょう。 ゴール WiremockのモックサーバでJUnitでテストする Wiremockの…

【Pytest】不安定なテストに失敗したら自動リトライさせる(flaky)

以前、Javaで不安定なテスト(flakyなテスト)をリトライさせるライブラリを素振りしました。今回の記事はPython版です。 Pytestの公式ページにてFlakyなテストに対する解決策となるライブラリを複数提示されており、その中でもGitHubのStar数が一番多かった…

Ansibleで失敗時のエラーメッセージをカスタマイズしたい

※ もっといいやり方があれば教えてください。 この記事では、Ansibleでエラーメッセージをカスタマイズするやり方を記します。 正確な表現としては異なるので、あくまで「したい」です。 環境 Ansible 2.11.5 ゴール 処理失敗時に、目的のエラーメッセージを…

Pythonで設定ファイルを読み込む処理をラップしてクラスとして扱うと便利

普段Javaで使っている感覚と同じように、Pythonでもプロパティファイルを扱いたかったため、調べた記事です。 環境 Python 3.8.10 ゴール 設定ファイル(.ini)をコード内で読み込めるようにする 読み込んだ設定ファイルを他クラスからも簡単に扱えるように…

JestでParameterizedTestを行う(異なるテストデータで同じ内容のテストを行う)

小ネタ。 Jestを使って、異なるテストデータで同じ内容のテストを行うParameterizedTestをやろうとしたときのメモ。なお、JestではParameterizedTestという名称では表現されていません。 なお、使い方自体は参考情報に乗せている公式を見てください。 環境 J…

TypeScriptでPythonのキーワード引数みたいな挙動をさせる(ROROパターン)

TypeScriptを書いていて、Pythonでいうキーワード引数(名前付き引数)のような挙動をしたいとTwitterに呟いたところ、【公式】皮しばきさん、suinさんに反応していただけました。 その中でsuinさんに教えていただいたデザインパターンのROROパターン(Recei…

JSで文字列から数値に変換する(カンマで3桁ごとに区切られた文字列を数値に変換する)

小ネタ。 JavaScript(ECMAScript)、TypeScriptで文字列型(String型)から数値型(number型)に変換しようとしましたが、小数点セパレータが国によって違うため、微妙にハマったのでメモします。 なお、きれいな処理だとは思っていないので、もしよりよい…

GitのURLをHTTPSからSSHに変更する

小ネタ。公式ヘルプ読めば一発。 ゴール GitをCloneした後に、接続方法をHTTPSからSSHに変更する。 対応 変更したいリポジトリのURLを変更するだけ。コマンドはgit remote set-url。 次のコマンドはリモートリポジトリ名がデフォルト名のoriginである前提で…

XPathで親要素にさかのぼって検索する

Seleniumを含めたE2Eツールでは、XPathで指定できると動作が安定します。 今回の記事では、XPathで親要素を検索する方法を記載します。 概要 ../と記載すると、指定したDOMより親の要素を検索できます。 この記事では、次のXPathを導きます。 //td[contains(…

PythonのConfigParserで読んだ設定ファイルの値を出力する(Python ConfigParser print all values)

Pythonの標準ライブラリのConfigParserで設定ファイル(Config.ini)を読み込めます。しかし、読み込んだ設定ファイルをprintにて出力しようとすると、読み込みに使用したSectionしか返却されません。Keyを指定することで値を出力できますが、読み込んだファ…

CSSで文字の上に強調のドットを付与したい

CSSで文字の上に強調のドットを付与したかったので、それを設定した時のメモ。 ゴール 特定の文字の上にのみドットを付与して強調する 文言はiZooのテーマソングから。 環境 Windows Chrome iPhone Chrome 対応 次のCSSを設定すると、文字の上にドットを付与…

ピュアなJavaScript(ECMAScript)でQRコードを生成する(qrcodejs)

仕事で必要になったので、QRコード生成ライブラリのqrcodejsを素振りします。 Star数が10.5Kと調べたQRコード生成ライブラリの中でも多かったです。懸念点は2015年に更新が止まっていることですね。 ゴール QRコード生成ライブラリのqrcodejsを素振りする。 …

CLIでgrepしたGitのtagをリモート・ローカルともに削除する(Mac, WindowsのPowershell)

Gitのtagを一斉に消したかったので、CLIで実施できないか模索したときのメモ。 環境 Git Mac HighSiera Windows Powershell ゴール CLIでGitのtagをリモート・ローカルともに削除する。 grepした結果を元に一斉削除する。 Mac, Linux, Windowsのどの環境でも…

Excelで合計が24Hを超える時刻を正しく表示する(時刻の足し算をする)

自分の稼働計算しているときに、混乱したのでメモ。 環境 Microsoft Office Home and Business 2019 Microsoft® Excel® 2019 MSO (16.0.14228.20216) 64 ビット ユースケース 合計が24Hを超える計算をする 副業の稼働計算をしたい 対応 セルの書式設定を次…

CSSでフォントをBoldよりもさらに太くしたい(text-shadow)

フォントのサイズはこれ以上調整できない、フォントの太さもBoldにしているのでこれ以上太くできない。 そんな時にtext-shadowを使うことで文字を太く見える方法があったのでメモします。もっとよりよい方法があれば教えていただきたいです。 ゴール フォン…

Excelで時刻を時間単位の数値に変更する(1:15 -> 1.25H)

時間計算で混乱したのでメモ。 環境 Microsoft Office Home and Business 2019 Microsoft® Excel® 2019 MSO (16.0.14228.20216) 64 ビット ユースケース 分単位の稼働を時間単位で計算したい 対応 時刻表示のまま、24を掛け算すると時間単位の数値に変換で…

副業で気にするべきこと

7月から副業をしているのですが、仕事の進め方が本業と違い、うまくいきませんでした。 この記事では本業と副業の差分を棚卸し、来月以降の副業を円滑に進められるように振り返りをしていきます。なお、私個人の感想のため、現場によっては異なる可能性はあ…

HTML, CSSで表示領域を超える文言は3点リーダーの...で省略する(1行、複数行)

よく使うけど、毎回忘れるので。 環境 Chrome ゴール 表示領域を超えていれば文言を省略する 1行 複数行 アイコン + 文言の表示領域でも正しく省略する 1行で表示領域を超えていれば文言を省略する <div style="width:150px;border: 10px solid red"> <div class="wrap-text"> ルイズ・フランソワーズ・ル・ブラン・ド・ラ・ヴァリエ</div></div>…

Javaでカンマ区切りの文字列を作る(StringJoiner, StringBuilder, String)

小ネタ。JavaのStringJoinerを使うことで、カンマ区切りの文字列を簡単に作れます。 今回の記事は、StringBuilderを使ったカンマ区切りの文字列の作り方をメモします。既存のStringBuilderでのカンマ区切りの文字列を作り方も併記します。 環境 Java 15 クラ…

HTMLでブラウザの大きさによって表示する画像を変更する

ヘッダ画像等をスマートフォン、タブレット、PC等で表示分けをしたい、というユースケースで使える技。 環境 HTML 対応 sourceタグのmedia属性に目的の端末のウィンドウサイズを指定することで、端末ごとに画像を表示分けできます。 詳しいことは、MDN Web D…

Flexboxでtableのrowspanやcolspanのように結合したい

なぜ動いているかはちゃんと理解していませんので、解説はしません。ソースコードのみ残します。 ゴール HTMLのtableタグのrowspanやcolspanのように、縦列結合、横列結合をする。画像のように緑はrowspan=3、オリーブ色はcolspan2で結合しています。 ソース…

IntelliJ IDEAでMavenの依存関係をbuild.gradleにコピペするとGradleの依存関係に自動変換される

超小ネタ。Mavenでライブラリが書いてあるから、それをGradle用に書き直したいとコピペしていた時に気づきました。 なお、IntelliJ IDEAでこの機能名を探したのですが、見つかりませんでした。 環境 Intellij IDEA Ultimate 2021.1.2 機能 Spring Bootを例に…

Node.jsで実行中のOSがWindowsであることを判別する

小ネタ。 環境 Node.js v12.22.3 ユースケース WinとMac, Linuxで実行したいファイルが異なるので、事前に判別したい gradlew.batとgradlew等々 OSごとに最適なパスに切り替えたい 対応 process.platformがwin32であることを確認する。 const isWin = proces…

Javaで事前条件を満たしていないテストを安全に終了させる(AssumeTrue)

たとえばDBは本番環境ではOracle、テスト環境ではH2を使っているケースがあるとします。その場合、Oracleでは動くがH2では動かないSQLを作成してしまうことが考えられます。 他にも、本番環境はAmazon RDS for Oracleを使っているが、テスト環境で用意できて…

OracleのFOR UPDATEの排他ロックを解除する

既に同様の記事がありますが、自分の備忘録として残しておきます。 トランザクションをCOMMITしたり、ROLLBACKしたりすると、FOR UPDATEで行ったロックが外れます。しかし、デバッグしながら動作検証する等々でCOMMITもROLLBACKもせずに処理を終了してしまう…

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