2021年10月17日日曜日

文字列にはシングルクォートを使うべきかダブルクォートを使うべきか

文字列はシングルクォートとダブルクォートのどちらで囲うべきか、ときどきコーディングスタイル論争に上がりますね。もちろん、JavaScriptとかPythonのようにどっちを使っても文法上問題ない言語に限ります。CやJavaでは必ずダブルクォートを使わなければいけません。

今回のテーマは、そんな今更感あふれる話題です。

2021年10月10日日曜日

最近のTypeScriptのES Modules対応事情

コロナの影響で中止となった幻のTSConf 2020で、TypeScriptとES Modulesについて登壇する予定でした。

最近のTypeScriptは、モジュール関連で新たな仕様が出てきたようなので簡単にまとめておきます。前職同僚でNode.js Core Collaboratorのshisamaおよびdeno-ja Slackコミュニティーからの情報を勝手に集約しました。みなさんありがとうございます。

2021年10月3日日曜日

value-schema v3.1.0をリリースしました

Node.jsとDeno界隈に一大センセーションを巻き起こした(※個人の感想です)データ検証ライブラリーvalue-schemaの新バージョンがリリースされました。

今回の目玉はenumeration()です。名前の通り、TypeScript(Deno含む)でenum等の列挙型を使うときに真価を発揮します。

2021年9月26日日曜日

Sequelerのebuildファイル(Gentoo用パッケージ)を作った

SequelerというLinux用のDBクライアントがあります。名前が似ていますがmacOS用のSequel ProとかSequel Aceとは別物です。

Linux用のツールですが、Gentoo用のリポジトリーに入っていなかったので自前でebuildファイルを作りました

サクッと作って終わり!というわけではなかったので、ちょっと苦労話でも語らせてもらいます。興味のない方はebuildファイルだけパクってトンズラこいても大丈夫です。

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ビルド中は扇風機で風を送り込むという極めてアナログ&原始的な方法で解決しました。もしかしたら並行処理の数を減らしてもよかったかも。