s1r-Jの技術ブログ

Linuxのdateコマンドを使ってISO8601形式で出力する

dateコマンドを使ってISO8601の形式で現在時刻を表示します。 ログ出力などで使えるはずです。

ISO8601でもYYYY-MM-DDTHH:mm:ss.sssZまたはYYYY-MM-DDTHH:mm:ssZの形式が使いやすい(見やすい)と思っているので、それを出力させます。 (本当はミリ秒の表記はISO8601には存在しないようです。)

先に結論だけだしておきます。

$ echo `date '+%Y-%m-%dT%H:%M:%S.%3N' --utc`Z
2024-11-02T06:54:32.123Z

ミリ秒が不要ならば以下でよいです。

$ echo `date '+%Y-%m-%dT%H:%M:%S' --utc`Z
2024-11-02T06:54:32Z
続きを読む

Windows10でPowerShellを使ってgzipファイルを解凍する

Windows11では標準でtarファイルやgzipファイル(gzファイル)を解凍(展開)できるようですが、Windows10ではできません。

PowerShellを使ってgzipファイルを展開できると知ったのでここで紹介しておきます。 この記事で紹介している方法は下のMicrosoftの記事に書かれていたものです。

Unzip GZ files using Powershell | Microsoft Learn

この記事での環境情報を先に示しておきます。

続きを読む

dotenvで環境変数ファイルの読み込みを複数回おこなうと基本的には先勝ちになる

Node.jsで環境変数ファイルを読み込むdotenvを使って、複数回読み込みをおこなったときにどの環境変数ファイルの環境変数の値が有効になるのかを検証しました。

また、Node.js v20.6.0から追加された--env-fileオプションによる環境変数ファイルの読み込みも試しました。

続きを読む

Node.jsでcsv-parseを使ってcsvファイルを読み込む

この記事に書いてあること

タイトルの通り、Node.jsでcsv-parseを使ってcsvファイルを読み込む実装を紹介します。 Node.jsにはcsvファイルを読み込むライブラリが複数ありますが、おそらく一番人気っぽいcsv-parseを使ってみました。

csv vs csv-parse vs csv-parser vs fast-csv | npm trends

ちゃんとTypeScriptにも対応しています。

この記事での実装の全体はGitHubに置きました。 よければ参照してください。

続きを読む

JavaScriptでプライベートプロパティを持つクラスをクローンしようとすると上手くいかない

JavaScriptにはプライベートプロパティというクラス構文で使うことができる機能があり、これを使うとクラス外部からこのプロパティにアクセスすることができなくなります。 使い方としては、プロパティの接頭辞に#をつけるだけです。

プライベートプロパティ | MDN

このプライベートプロパティは非常に便利ですが、今回このプライベートプロパティを持つクラスをクローンしようとしたら、エラーが発生してしまいました。 クローンのやり方(使うライブラリ)によってもエラーが違っていました。

原因はプライベートプロパティがどうやっても外部からアクセスできないというJavaScriptの仕様に関連していそうですが、全然わかりませんでした。 上手く解決できないままですが、どんな動きになってしまうのかをこの記事で紹介します。

続きを読む

sortコマンドを使ってヘッダ付きのcsvファイルを指定した列をキーにしてソートする

この記事に書いてあること

csvファイルをコマンドを使って、特定の列を条件にソートする方法をメモしておきます。 ヘッダもソート結果のファイルに移動します。

$ (head -n 1 test.csv && tail -n +2 test.csv | sort -t , -k 3) > test_sort.csv

上のコマンドによって、 test.csvの先頭行をヘッダとして扱って出力先ファイルにもヘッダとして書き出し、 2行目以降からファイル末尾までを区切り文字をカンマとして3列目をキーとしてソートしてファイルに出力します。

続きを読む

エクスポネンシャル・バックオフとジッターのアルゴリズムの違いと総試行回数、処理完了時間の比較

以前、このブログでAWSが推奨するエクスポネンシャル・バックオフとジッターの記事について取り上げ、JavaScriptでの実装をおこないました。

s1r-j.hatenablog.com

今回は、1度に1リクエストしか処理ができないサービスと複数の競合するクライアントをJavaScriptで用意しました。クライアント数が増えたとき、それぞれのバックオフ・アルゴリズムの処理が完了するまでの総試行回数と処理完了時間がどのように変化するかを確認します。 AWSの記事の最後にあったようなグラフに本当になるのかを試しました。

用意した実装はGitHubに置いてあります。

続きを読む