tcコマンドを利用してqdiscを変更する

設定前

$ tc qdisc show dev enx0ex
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1014 target 5.0ms interval 100.0ms memory_limit 32Mb ecn

qdiscをnoqueueに設定する

sudo tc qdisc add dev enx0ex root noqueue

変化を確認

$ tc qdisc show dev enx0ex
qdisc noqueue 0: root refcnt 2

設定を削除する

sudo tc qdisc del dev enx0ex root

最初の状態に戻った

$ tc qdisc show dev enx0ex
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1014 target 5.0ms interval 100.0ms memory_limit 32Mb ecn

参考

https://qiita.com/hana_shin/items/d9ba818b49aca87b2314

JavaScriptのconsole.table() をブラウザとnodeで実行した時の見た目

ブラウザで実行するとこんな感じ

f:id:setouchinatsu:20190618092716p:plain

nodeで実行するとこんな感じ

$ node
> console.table({hoge1:1,hoge2:2,hoge3:3})
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│  hoge1  │   1    │
│  hoge2  │   2    │
│  hoge3  │   3    │
└─────────┴────────┘
undefined

HTMLとして出力してくれたらもっと捗りそうだ。

Prometheusのクエリでオペレータを使って特定の値以下の数値を除去する

アラート目的とかで一時間あたり特定の値以上のものを可視化したい時に小さな値が不要な事がある。そんな時は下記のようにオペレータを使って特定の値以上の値だけに絞ることができる。例は100。

(increase(app_request_total{target_id=~"$target_id"}[1m]) by (target2_id)) > 100

https://prometheus.io/docs/prometheus/latest/querying/operators/

Docker Swarmで立ち上がっているサービスをdocker service updateでパラメータを更新せずに更新する

環境変数の変更やDocker Imageが変更されれば通常のデプロイでコンテナは更新されます。

しかしコンテナが定期的に外部より情報を取得し内部にキャッシュするような構造の場合において、即時にそのキャッシュをリロードしたい時、再デプロイをするために環境変数をイジったりイメージを更新するのはだるいです。そこで docker service update --force っていうのがあります。

$ docker service update --force test_app
test_app
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged 

ヘルスチェックを指定しておけばコンテナが正しく立ち上がるのを確認してから一つずつ差し替わるので、気軽に実行できます。

あとは公式ドキュメントによれば --update-delay ってのがあって更新における遅延時間を指定できるみたいです。これで一気に差し替わって応答不能みたいなことが無いようにできるのかな。

https://docs.docker.com/engine/reference/commandline/service_update/

IEやEdge入りのWindowsのVMをVagrantで立ち上げる

VirtualBoxイメージをダウンロードしてGUIで設定することもできますが、Vagrantを使えば全てコマンドラインで行えるので、90日で有効期限が切れるWindowsのVMを何度も同じ設定で再構築する際に楽ですよ。

Vagrantのインストール

VirtualBoxをインストールして

https://www.virtualbox.org/

続けてVagrantをインストールしておきます

https://www.vagrantup.com/

イメージのダウンロード

昔はModern IEと呼ばれてたのですが、現在では普通にVirtual Machineとか言われて公開されています。ここからVagrantを選択してboxをダウンロードします。

https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

イメージを追加します

このように追加することで後でVagrantfileから指定できるようにします。

vagrant box add 'MSEdge - Win10.box' --name "MSEdge"

Vagrantfileを作成する

vagrant init

下記の様に設定する

Vagrant.configure("2") do |config|
config.vm.box = "MSEdge"
config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "2048"
end
config.vm.guest = "windows"
config.ssh.username = "IEUser"
config.ssh.password = "Passw0rd!"
config.ssh.insert_key = false
config.ssh.shell = 'sh -l'
end

より詳しくは下記の記事が参考になります。頻繁にチェックする人は日本語化や共有フォルダの設定などをすると良いです。

http://neos21.hatenablog.com/entry/2018/03/18/080000

4KディスプレイのためにScaleする

4Kディスプレイ等でScaleしている場合、そのままVMを立ち上げるとウィンドウが小さく表示されると思いますが、Scaleしてあげることで4Kディスプレイでも拡大することができます。

  config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "2048"
vb.customize ['setextradata', :id, 'GUI/ScaleFactor', '1.5']
end

下記を参考にしました。

https://forums.virtualbox.org/viewtopic.php?f=6&t=87826

Parcelを使ってTypeScriptやSassをビルドする

まずparcelをインストールする

yarn add parcel

console.log('hello world');的なファイルを作ってsrc/app.tsとかに保存しておく。

mkdir src && \
mkdir web && \
echo "console.log('hello world');" > ./src/app.ts

ビルドするときはこんなふうにやって

yarn run parcel build src/app.ts --out-dir ./web

変更を検知してビルドする

yarn run parcel watch src/app.ts --out-dir ./web

中に

import './app.scss';

などと書いておけば出力先ディレクトリに app.css という名前でCSSファイルができます。WebPackなどだと一つのファイルにまとめられていましたが、CSSはCSSファイルとして出力されるのは好感が持てます。