かまたま日記3

プログラミングメイン、たまに日常

父親になった&育休を取りました

半年以上前の話ですがずっと下書きのまま放置して忘れてたのを公開します。ついでに他の方の参考になるかもしれないので、既に12/30ですが後付でAdventarにも登録しておきます。25日目の記事、という体です。

adventar.org


5/10に第一子となる子供を授かりました。その後、6週間ほど育休を取って子育てしてきたのでその記録。

出産まで

本来5/1が予定日だったので、9日遅れでした。8時間ほどの格闘を経て子供が出てきた時は感動と言うかママお疲れというか、色々な感情がありました。 産婦人科に4日ほど入院し、抱っこの仕方、おむつの変え方、授乳の仕方などを教えてもらい退院。

退院後

基本的には2~3時間に一回食事が必要なので

授乳 or ミルク

寝るまであやす(おむつ変えたり抱っこしたり)

授乳 or ミルク

あやす

...

の無限ループです。時間が無いのでごはんもスーパーやコンビニ弁当とかがメイン*1。 最初は勝手が分からず全然泣き止んでくれないし、それが夜も遅いと眠いし、赤ちゃんの何気ない変化(ミルクを吐く、湿疹がひどい、しゃっくりが止まらない、凄いえび反りをする、など)にいちいち慌てたりでけっこう大変でした。

1ヶ月超えた後はある程度慣れてきて、赤ちゃんも我々も生活のリズムが出来てくるとだいぶ楽になりました。後述する産後ケアにも随分助けられました。

産後ケアセンター

我々夫婦は里帰りをせず二人で子育てすることを選択しましたが、初期は休める時間が本当に無かったので思った以上に大変でした。親族の手助けを借りれる人は積極的に借りたほうが良いと思います。そんな中、出産した産婦人科での産後ケア入院や、桜新町にある産後ケアセンターは、授乳や沐浴指導なんかをしてくれたり、夜赤ちゃんを預かってくれたりするので大変助かりました。結構お高いのですが、休息は何事にも代えがたいです。

その他雑感

  • ベビー用品(ベッド、ベビーカーなど)は新品だと結構高いので、レンタルで借りて色々必要なものを見極めて行くのが良いと思いました。自分はダスキンレントオールを使ってます。
    • ベビーベッドを借りたのだけど、うちの赤ちゃんは全然泣き止んでくれなかったんのでほぼ物置きになっていた、あとあれはスペースを結構取るので買わなくてよかった。
  • 子供服はすぐ小さくなるので、メルカリやヤフオクなんかで安く仕入れる、そして使えなくなったら売るのが良い。
  • カーシェアリングをしている場合、チャイルドシートを車に置いておけないので、毎回運ぶのがかなり面倒。
  • (余談) もともと5/1から育休を取っていたが、取れるのが産後じゃないとダメ*2なのを会社の誰も知らず*3、5/1~9の間の営業日は後付けで有給扱いになった, GW中だったのでそこまで多くなくて助かった..w

*1:なるべくヘルシーめのチョイスをしてましたが...料理できないのですいません 🙇

*2:弊社の場合だけかも

*3:弊社初の育休社員だったため

minikubeでRBACを有効にした時に、dashboardが見れないのを直す

とりあえず、 cluster-admin のClusterRoleを kube-system:default のServiceAccountにつければ動くようになる。最低限の権限とかは詳しく調べてないので分かりません!

$ minikube start --extra-config=apiserver.Authorization.Mode=RBAC
$ kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
$ minikube dashboard

Gistをcloneしてpushする

GistのURLを構成しているハッシュ値的な値を使ってcloneします。そのままcloneすると分かりづらいので、ディレクトリ指定でcloneするのが良いと思います

$ git clone git@gist.github.com:ab123456789012345678901234567890.git my_gist

あとは普通にローカルcommitしてmasterにpushすれば反映されます。 master以外のremote branchを作った場合はブラウザからは見えないですが、cloneするとあります。

TOEIC 224回 結果

Listening:365 (315), Reading:330 (370), Total: 695 (685) *1

久しぶり(9ヶ月ぶり)のTOEIC, Listeningが上がったけどReadingが下がったので全体的には微増。700超えられなかった。。

過去ログ

*1:括弧の中は前回(217回)の得点

PostgreSQLでMySQLのshow processlistみたいなのを出す

pg_stat_activity というテーブルに入っているようです。 datname でデータベース単位で絞り込めます。

$ echo '\pset pager off \\ select pid, usename, datname, application_name, client_addr, client_hostname, state, query from pg_stat_activity where datname = '\''some_database'\'';' | psql postgres
Pager usage is off.
  pid  |   usename |    datname    |                       application_name                       | client_addr  | client_hostname | state |                                     query
-------+-----------+---------------+--------------------------------------------------------------+--------------+-----------------+-------+--------------------------------------------------------------------------------
 16082 | some_user | some_database | unicorn worker[0] -E production -p 5000 -c config/unicorn.rb | xx.xx.xxx.xx |                 | idle  | SELECT COUNT(*) FROM "some_table" WHERE "some_table"."type" IN ('SomeType')
 16326 | some_user | some_database | unicorn worker[1] -E production -p 5000 -c config/unicorn.rb | xx.xx.xxx.xx |                 | idle  | SELECT COUNT(*) FROM "some_table"
(2 rows)

NGINXのupstream keepaliveをtcpdumpで確認する

TL;DR

UpstreamサーバとNGINXサーバの負荷軽減のために、 upstream keepaliveを導入したときに、実際Keepaliveしてるかをtcpdumpで確認した時の仕方のメモです

登場人物

  • 10.21.2.25: Upstreamサーバ, sinatraアプリが5000でlistenしている
  • 10.21.1.43: NGINXサーバ

nginx.conf

upstream test_server {
  keepalive 5;
  server 10.21.2.25:5000;
}

server {
  listen 80;
  server_name kamatama41.example.net;

  location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass http://test_server;
  }
}

動作確認

$ curl -H 'Host: kamatama41.example.net' http://localhost
Powered by Deis
Release unknown on ip-10-21-2-25

tcpdumpで調べてみる

上記のcurlコマンドを打ちながら別のウインドウで見ます。 最初に開いた 56996 ポートがずっと使われてることがわかります。

$ sudo tcpdump -n | grep '10.21.2.25'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
06:03:13.938970 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [S], seq 434416119, win 26883, options [mss 8961,sackOK,TS val 903841576 ecr 0,nop,wscale 7], length 0
06:03:13.939291 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [S.], seq 3534912600, ack 434416120, win 26847, options [mss 8961,sackOK,TS val 61090501 ecr 903841576,nop,wscale 7], length 0
06:03:13.939306 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 1, win 211, options [nop,nop,TS val 903841576 ecr 61090501], length 0
06:03:13.939328 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 1:76, ack 1, win 211, options [nop,nop,TS val 903841576 ecr 61090501], length 75
06:03:13.939553 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [.], ack 76, win 210, options [nop,nop,TS val 61090501 ecr 903841576], length 0
06:03:13.940954 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 1:223, ack 76, win 210, options [nop,nop,TS val 61090501 ecr 903841576], length 222
06:03:13.940958 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 223, win 219, options [nop,nop,TS val 903841576 ecr 61090501], length 0
06:03:17.044635 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 76:151, ack 223, win 219, options [nop,nop,TS val 903842352 ecr 61090501], length 75
06:03:17.046437 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 223:445, ack 151, win 210, options [nop,nop,TS val 61091278 ecr 903842352], length 222
06:03:17.046452 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 445, win 227, options [nop,nop,TS val 903842353 ecr 61091278], length 0
06:03:21.081645 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 151:226, ack 445, win 227, options [nop,nop,TS val 903843361 ecr 61091278], length 75
06:03:21.083652 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 445:667, ack 226, win 210, options [nop,nop,TS val 61092287 ecr 903843361], length 222
06:03:21.083665 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 667, win 236, options [nop,nop,TS val 903843362 ecr 61092287], length 0

CoreOSもろもろメモ

色々ログを見たい場合

journalctl使う、詳しい使い方とかはこちらを参考に。 yomon.hatenablog.com

(例)

$ journalctl -u docker --no-pager

# 特定のユニットのログを見る場合
$ journalctl -u foo.service

docker.service.d をカスタマイズしている状況をみる

/etc/systemd/system/docker.service.d の中に色々ファイルが入っている

coreos.com

$ ls /etc/systemd/system/docker.service.d
10-require-flannel.conf  50-insecure-registry.conf

Fleet関係

Unitファイルを読み込む/起動

$ fleetctl load myunit.service
$ fleetctl start myunit.service

読み込んだUnitのチェック

$ fleetctl list-units | grep myunit.service
myunit.service                      0c2af091.../10.11.2.129 active      running
myunit.service                      36d6af16.../10.11.2.61  active      running
myunit.service                      599307fe.../10.11.2.126 active      running
myunit.service                      c7918571.../10.11.2.22  active      running

Unitを削除する

$ fleetctl destroy myunit.service

Unitログをtailで見る (on サービスがスケジュールされてるホスト)

$ journalctl -fx -u myunit.service