2021年9月19日日曜日

Jestで特定のファイルのみテストができなかった問題

 Jestで特定のテストだけ実行したい場合ってあるじゃないですか。

ここに書いてあるとおりjest path/to/my-test.jsのように実行したんですがNo tests found, exiting with code 1というメッセージが出て何もテストできずに終了。テスト対象のファイルもちゃんと存在してるし意味がわからない。

しばらく悩んでも答えが出なかったので放置していたんですが、ある日こんな指摘をもらいました。

「Jestの引数はファイルのパスじゃなくて正規表現パターンだよ!」

どれどれ。。。

引数を付けてjestコマンドを実行した場合、その引数はプロジェクト配下のファイルを照合する正規表現として扱われます。

ほんまや。

それが何か関係あるの?と思った方。実は、テスト対象のファイルには$が含まれていたために正規表現のパターンとしてちゃんとマッチングしなかったようです。

解決方法は2つ。要はメタ文字を無効化すればいいので、

  • $[$]で置き換える
  • $\\$で置き換える

このどちらか。後者は単に\$だとバックスラッシュがシェルに吸収されてしまい、Jestにはただの$が渡されます。

偉そうに解説していますが、アホらしいミスをやらかしました。。。

2021年9月12日日曜日

Drone CIでRedisクラスターを使う・改

 半年以上前にDroneでRedisクラスターを使う記事を書きましたが、localhostでしか動かないRedisクラスターはテスト用とはいえ使い物にならないので、まともに動くようにしてみました。

結論から言うと、横着せずにちゃんと3台以上でクラスター作れよってことです。

2021年9月5日日曜日

Chromiumビルド中にマシンが落ちる

 タイトルのとおりなんですが、GentooでChromiumをビルドしていると急にマシン自体が落ちました。ビルドエラーが起きたとかビルドプロセスが落ちたとかじゃなくてマシン自体が落ちました

何が起きたんだと思って再起動すると、「CPUが熱暴走したからマシン落としたよ」的なメッセージが。マジか。

まあ確かにChromiumはビルドするファイルも多いし時間もかかるけど、今までこんなことなかったのになぁ。ちなみにビルド時のnice値(PORTAGE_NICENESS)は15。とってもナイスな値なんですがそれでも熱暴走しました。

結局どうしたかというと、Chromiumビルド中は扇風機で風を送り込むという極めてアナログ&原始的な方法で解決しました。もしかしたら並行処理の数を減らしてもよかったかも。


2021年8月29日日曜日

Go 1.14からgoroutineがプリエンプティブになったらしい

goroutineはスレッドのようなものと説明されることが多いですが、一方でノンプリエンプティブ、つまり空の無限ループのようなコードを書いたら他のgoroutineにも処理が移らずにハングしてしまうとも説明されます。処理の切り替わりタイミングはめちゃくちゃ大雑把に言えばNode.jsのasync/awaitのようなものだと思ってください。内部処理は結構違いますが。

今までそう思っていたんですが、どうやらGo 1.14からプリエンプティブになったようです。Goを真面目に勉強している人にとっては今更感が強いでしょうけど、つい最近知ったんで勘弁してください。

見たのはここの記事。今回はそれについての検証です。

2021年8月22日日曜日

openssl verifyコマンドでシステム内のルート証明書を参照しない方法

現在、とある事情により普通のSSL証明書(Let's Encryptとかで取得したやつ)をオレオレCA証明書でクロス署名するという怪しげなことをやっています。

そんな怪しい証明書はどうやって作るんだと気になった方は今後の記事を楽しみにしていてください。そのうち説明します。

正しくクロス署名できているかを確認するためにopensslコマンドで検証しようと、以下のようなコマンドを入力してみました。

openssl verify -CAfile oreore-ca.pem -untrusted inter.pem server.pem

oreore-ca.pemがオレオレCA証明書、inter.pemが中間証明書、server.pemがサーバー証明書です。

この方法で無事OKのメッセージが出て検証成功したんですが、念のためにエラーケースも確認しようと-CAfileに全然関係ないルート証明書を指定したところ、なぜかそれでも検証成功してしまいました

今回はその奮闘記です。上の情報だけで原因と解決方法がわかった方はこの記事はスルーしてください。

2021年8月15日日曜日

エンジニアが大量に退職するとき

 なんとなく書きたくなったので、ここに書き散らしておきます。エンジニアに限らない話かもしれませんが。

最初に言っておきますが、退職者が常に大量出ている(そしてそのために常に大量に新規募集をしている)ような職場の話ではありません。人が入っては数ヶ月で辞めるを繰り返している職場はなにか慢性的な問題を抱えていると思いますが、そのあたりの話はここではしません。

退職は必ずしも後ろ向きな理由だけではなく、さらなるステップアップのために退職することもあるので一概によくないことというつもりはありませんが、短期間に大量に退職者が出るということはステップアップ以外に何かしらの理由があると思うので対策を打ったほうがいいかもね、という話をします。

結論から言うと、会社の内部に理由があることもあれば外部に理由があることもあり、それ以外の理由のこともあります。「全部言えばどれか当たるに決まってるだろ何いってんだこのクソ雑魚無能手品オタク」と思うかもしれませんが、理由がいろいろあるということは理由を見誤らないようにしないといけないということでもあり、見誤るとさらなる退職者が出る可能性があります

それでは見ていきましょう。

2021年8月8日日曜日

Install SSH Key v2.3.1を公開しました

 Install SSH Keyの最新版v2.3.1を公開しました。上がったのはパッチバージョンということから推測できるとおり、割とショボ目の変更です。