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に置いてあります。

続きを読む

JavaScriptで実装するエクスポネンシャル・バックオフとジッター

AWSが推奨するエクスポネンシャル・バックオフとジッターについて、その効果といくつかの実装方法について説明されている記事があります。

Exponential Backoff And Jitter | AWS Architecture Blog

この記事では内容を要約しつつ、擬似コードで書かれているコードをJavaScriptで実装してみました。

続きを読む

シェルコマンドでSHA256ハッシュをおこなう

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

シェルコマンドでSHA256ハッシュをおこなう方法をメモしておきます。

hex形式(16進数)で出力

$ echo -n "abcde12345xyz" | sha256sum | awk '{ print $1 }'
5b4538f8719e2662a2be85365d53d6b583bf06d92dd98cc1d682ecb3b69e977e

Base64形式で出力

$ echo -n "abcde12345xyz" | sha256sum | xxd -r -p | base64
W0U4+HGeJmKivoU2XVPWtYO/Btkt2YzB1oLss7ael34=

もしくはbasencコマンドを使ってBase64形式で出力

$ echo -n "abcde12345xyz" | sha256sum | xxd -r -p | basenc --base64
W0U4+HGeJmKivoU2XVPWtYO/Btkt2YzB1oLss7ael34=

Base64URL形式で出力

$ echo -n "abcde12345xyz" | sha256sum | xxd -r -p | base64 | sed s/\\+/-/g | sed s/\\//_/g | sed -E s/=+$//
W0U4-HGeJmKivoU2XVPWtYO_Btkt2YzB1oLss7ael34

もしくはbasencコマンドを使ってBase64URL形式で出力

$ echo -n "abcde12345xyz" | sha256sum | xxd -r -p | basenc --base64url | sed -E s/=+$//
W0U4-HGeJmKivoU2XVPWtYO_Btkt2YzB1oLss7ael34
続きを読む

「クラッシュ・オンリー」設計を読んだ

The Twelve-Factor App (日本語訳)のIX. 廃棄容易性に出てきたcrash-only software(クラッシュ・オンリー・ソフトウェア)を聞いたことがありませんでした。

The Twelve-Factor Appに記載されていたリンク先(Crash-only software: More than meets the eye [LWN.net])をざっくり読んだので、以下にメモを残しておきます。

続きを読む

AWSの「コンテナ化のためのリアーキテクチャ」を体験しといた

コンテナというかDockerの勉強をしようと思って例のごとく2~3年してないままです。

ちょこちょこDockerの概念とかコマンドは勉強しているものの、 dockerfileを書いたり、開発っぽいことをしたりはできていないです。

今回は、このあとDockerというかコンテナを勉強するにあたって、 何をしようかというのがわかった気がする動画と記事(ワークショップ)があったので紹介しておきます。

続きを読む