雑多なメモ
リクエストの中身を確認したい時、nc -l <ポート番号>
を叩いてそのポートにリクエストを送れば中身が見れる。
> nc -l 8088
POST /test HTTP/1.1
Host: localhost:8088
Connection: keep-alive
Content-Length: 143
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-platform: "macOS"
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryqnqyPLpi3cMiEA5c
Accept: */*
Sec-Fetch-Site: none
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: ua=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.114%20Safari%2F537.36; company_code=weeds; pharmacy_id=2; pharmacist_id=369; pharmacist_name=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%AE%A1%E7%90%86%E8%80%85369; pharmacist_admin_flg=2; fuel_csrf_token=a8288d28b4b163be30349d184ddae4615bb5c53ff3eac178585535605034765b6c5e20e244f2d2eef4c987110c7f6c2e709e4351f7de5ae7290c67bc8232a176
------WebKitFormBoundaryqnqyPLpi3cMiEA5c
Content-Disposition: form-data; name="field1"
aaaaaa
------WebKitFormBoundaryqnqyPLpi3cMiEA5c--![](https://storage.googleapis.com/zenn-user-upload/7e0666fbe7e1-20211117.png)
shiftを推しながらスクロールすると横スクロールができる
if elseのコメントの書き方でしっくりきたのが以下の書き方
// Aの場合:
// ...
// Bの場合:
// ...
// Cの場合:
// ...
if A {
// Aの場合
...
} else if B {
// Bの場合
...
} else {
// Cの場合
...
}
先頭に書くことでif elseブロックの中を読み進めなくても、処理の概要が分かる。
各分岐の中で長々とコメントを書かなくて良い。
サーバーのポートが解放されていることを外部から確認する時、telnet, curlだけでなくncコマンドも使える。
サーバーによって入っているコマンドが違うので、使い分ける
コマンドラインで計算ができるbcコマンドがある
k6で一定のスループットの負荷をかけたい時はRPSよりもconstant-arrival-rateを使うといい
k6で複数のシナリオや設定を行うにはscenariosを使う
virtualboxからホストに接続する時は10.0.2.2を使う
kafkaのブローカーで耐障害性を持たせるには少なくとも3台以上でクラスタを作る必要がある。
パイプはforやwhileのワンライナーの中でも書ける
while true; do sleep 1 | df | awk '{print strftime("%H:%M:%S"), $0}'; done
sshしてコマンドを実行中にexitすると、カーネル(間違ってるかも)が子プロセスであるコマンドたちにsighupを送って、停止させる。
停止させないと、waitする親プロセスがいなくなってコマンド達はゾンビプロセスになってしまうため。
たしかシェルの機能ではなかった。詳しく調べる。
bash -c コマンド
は必ずしも新しいbashプロセスを立ち上げてからforkしない。
dashとかいうシェルは違うらしい。
メリット・デメリットがある。
いろんなランタイムのバージョンを管理できるasdf入れてみた
nodeのバージョン管理
> asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
> asdf list all nodejs 14
14.0.0
14.1.0
14.2.0
14.3.0
14.4.0
14.5.0
14.6.0
14.7.0
14.8.0
14.9.0
14.10.0
14.10.1
14.11.0
14.12.0
14.13.0
14.13.1
14.14.0
14.15.0
14.15.1
14.15.2
14.15.3
14.15.4
14.15.5
14.16.0
14.16.1
14.17.0
14.17.1
14.17.2
14.17.3
14.17.4
14.17.5
14.17.6
14.18.0
14.18.1
14.18.2
14.18.3
14.19.0
> asdf install nodejs latest
> asdf global nodejs latest
> asdf install nodejs 14.19.0
> cd <repo> && asdf local nodejs 14.19.0
> echo .tool-versions >> ~/.config/ignore
jsのテストフレームワークjest
オールインワンで設定しなくても使えるらしい
describeで関連するテストをまとめる
describe(name, fn)
test.eacでテーブルドリブンなテストを行う。
test.each(table)(name, fn, timeout)
vscodeでjestを使おうとしたらこんなエラーが出る
env: node: No such file or directory
asdfでnodeを入れ直したときに、npmがおかしくなったと予感。
// Homeで実行
> which npm
/Users/kawasaki/.asdf/shims/npm
// プロジェクトのディレクトリで実行
> which npm
/usr/local/bin/npm
> ll /usr/local/bin/npm
lrwxr-xr-x 1 kawasaki admin 46 2 4 18:25 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npmの実態が違う。
追記:
先輩に聞いてみたら、プロジェクトの設定的に無理っぽい。たぶん、超頑張ればって設定いじればいけるけど。
コマンドでいけるからそっち使ってるとのこと。
ソケットについて
通信する場合、通信する両者がソケットを作る必要がある。
システムコールのbindとlistenは違う。
bindはプロセスとポートを紐づけて、listenは指定のソケットが接続を待ち受けるソケットであることをカーネルに伝える。
command
コマンドはエイリアスとかを効かさずにコマンドを実行したい時に使う