おーすとらりあー

に行こうと計画し始めましたが、
日航空券の値段を skyscanner で調べてみると、先週末に調べた航空券が破滅的な値段になっていたり。
(ANAさん、なんでや。。。)

海外旅行はまず航空券押さえねばという考えをすっかり忘れていました。

まぁとりあえず航空券は無事押さえられたので、あとは宿泊先決めとけば何とかなるでしょという甘い考えの人です。
(プレミアムエコノミーが楽しみで楽しみで。英語?まぁなんとかなるなる?)

さてどうなることやら。

Cacoo フルリニューアル記念-新しいUIが生まれた背景とその経緯- に参加してきました #newCacoo

nulab.connpass.com

Cacoo の新 UI に関するお話を伺いたくて行ってみました。

いろいろつぶやいたけど、これに尽きますか。

あ、SVG レンダリングでスライドがぼやけなくなったそうで。 図を作成して Google スプレッドシートへ埋め込むという芸当が不要になりそうで嬉しいです。

フロントエンド寄りおじさんとしては、ダッシュボードを Vue.js + GraphQL にできた点が羨ましい限りですのー。

YAPC::Fukuoka 2017 HAKATA に参加しましたー #yapcjapan

お久しぶりです

というわけで、 3 月の楽しかった大阪 YAPC から早 4 ヶ月。 YAPC::Fukuoka 2017 HAKATA に参加してきました。

涼しくゆったりとした LINE 福岡の会場で、色々なお話を聞くことができ、勉強になりました! Test2 はぜひ会社で導入目指してみたいところです。

次の YAPC は 2018 年 3 月 3 日に沖縄で開催とのことなので、楽しみです!

日本酒日記 (本編?)

今回は、 YAPC 前日に福岡入りして翌日に帰るゆったりプランでした。
やっぱ、福岡来たら日本酒堪能せにゃーちゅうことで、色々堪能しちゃいました。
YAPC 大阪のときもベロベロでしたが、今回もベロベロでしたん。最高です!

中洲西にある、福蔵というお店 (福岡のお酒を堪能できるお店) f:id:munepom:20170706001548j:plain

庭のうぐいす 純米吟醸 うすにごり f:id:munepom:20170706001537j:plain

若波 純米吟醸 TYPE-FY2 (福岡夢酵母 2 号) f:id:munepom:20170706001526j:plain

三井の寿 愛醸 美田 山廃純米 愛山 f:id:munepom:20170706001515j:plain

山の壽
左: 雄町 右: 山田錦
左: 27BY 右: 28BY (27BY のがどちらも奥深い味わい) f:id:munepom:20170706001505j:plain

繁桝 中汲み 純米大吟醸 生々 f:id:munepom:20170706001454j:plain

黒兜 夢一献 純米吟醸 f:id:munepom:20170706001442j:plain

h 槽口直汲み 純米吟醸 f:id:munepom:20170706001431j:plain

Docker コンテナから疎通確認するたった1つの楽な方法

なんか煽りっぽいタイトルで書いてみます

  • Docker コンテナ内で、 host 側のポートチェックしたいとき、ありますよね?
  • でも、 nc コマンド入れてないから使えない。。。
  • perl は CentOS7 からデフォルトでインストールされなくなったし。。。

そんな時、 bash の /dev/tcp 使ってみては?

echo -n > /dev/tcp/$host/$port

でチェックできますよー。 ポートが開いてるかどうかのチェックぐらいなら、 echo -n で十分なのでは?と思っています。

例:

echo -n > /dev/tcp/munepom.hatenablog.com/80

ウェッブアプリのちょっとしたパフォーマンスチューニングの方法

Web アプリケーションのパフォーマンス測定やってると

  • 大量リクエストで負荷がかかった際に、リクエストを処理できないこと、ありませんか?

そんなときは

  • netstat や ss コマンドなどでコネクションの状態を見ながら、カーネルパラメータなどを調整すると良いと思います。

とりあえずいじるなら

  • net.core.somaxconn の値を調整してみると、いいことあるかもしれません。
  • sysctl -w net.core.somaxconn=65535 のように設定すると、一時的に設定を反映できます。
  • 再起動しても設定を維持するなら、別の方法で、、、 (調べると出てくると思います)

Docker コンテナ側でも設定するなら

  • --sysctl net.core.somaxconn=65535 のように、オプションで渡せます。
  • docker-compose なら、 sysctls 項目を設定すると良いですね。 (swarm だと、またやり方変わってくるかもです)

ではでは

  • 素敵なパフォーマンスチューニングライフを!
  • ちなみに、パフォーマンス計測には ab や gatling を使うのが好きです。
    • AWS の t2.micro インスタンスなどを利用して、クライアントを別環境にしておくのが理想的ですね。個人でやるには、ちょっとハードルがあるかもしれません。

Docker 版 Nginx で timezone 指定にハマらない簡単な方法

Docker 版 Nginx

  • https://hub.docker.com/_/nginx/
  • ウェブサーバーのデプロイ、超楽になったご時世ですよね。
    • (envsubst のやり方だけが気持ち悪いと思っていますが…)

Alpine Linux イイヨイイヨー

  • 私は、軽量なイメージが好きなので、使えそうなら Alpine Linux 版を使います。

んが、 timezone を楽に指定できない。。。

  • docker-compose.yml の environment で、 TZ=Asia/Tokyo 指定したい場面、ありますよね。
  • Alpine Linux がベースのイメージだと (nginx:x.y.z-alpine) 、環境変数に TZ を指定して起動しても、 timezone 指定できません。
  • Issue には上がっているようですが、現状、 Dockerfile 書いて頑張るしか道はないようで。
  • ※ 2017 年 3 月 13 日段階の情報です。
# Alpine Linux ベース (TZ 指定なし)
$ docker run --name nginx_test -p 8080:80 nginx:1.10.3-alpine
172.17.0.1 - - [13/Mar/2017:13:36:59 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

# Alpine Linux ベース (TZ 指定あり)
$ docker run --name nginx_test -p 8080:80 -e TZ=Asia/Tokyo nginx:1.10.3-alpine
172.17.0.1 - - [13/Mar/2017:13:38:16 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

timezone を楽に指定したいなら

  • Alpine Linux ベースではない方のイメージ (Debian jessie ベース) を使って、環境変数 TZ を設定するのが一番簡単だと思います。
# Debian jessie ベース (TZ 指定なし)
$ docker run --name nginx_test -p 8080:80 nginx:1.10.3
172.17.0.1 - - [13/Mar/2017:13:34:35 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

# Debian jessie ベース (TZ 指定あり)
$ docker run --name nginx_test -p 8080:80 -e TZ=Asia/Tokyo nginx:1.10.3
172.17.0.1 - - [13/Mar/2017:22:35:06 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

一応、イメージサイズ比較のために、ペタッときます

$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
nginx                          1.10.3-alpine       f94d6dd9b576        9 days ago          54 MB
nginx                          1.10.3              e526633b91df        12 days ago         181 MB
  • まあ、3.5 倍ほどイメージサイズ違いますね。。。

まとめ

  • Docker 版 Nginx で timezone を楽に指定したいなら、 Debian jessie ベースのイメージを使うとお手軽ですね。
  • Alpine Linux ベースのイメージを使いたいなら、 tzdata を入れる Dockerfile を自分で作って管理すると良いのでは?

monit の config が更新されない現象にハマらないために覚えておくべき、たった1つのこと

自戒を込めて書いとく!

  • monit conf の内容変えたら、 monit reload 忘れるなよ!
  • https://mmonit.com/monit/documentation/#reload に、ちゃんと書かれてますね。。。ドキュメントは読みましょうというお話でした。。。
reload
    Reinitialise a running Monit daemon, the daemon will reread its configuration, close and reopen log files.