???「えー、ということで!ですね、本日はふっ飛ばしたDBの復旧をやっていきたいと思います!」

GitLab.com Database Incident – 2017/01/31
読んでて胃が痛くなりましたが、詳細をここまで公開した上で復旧作業ライブストリーミングで配信するとかぶっ飛びすぎててすごいです。
今見てるんですがめっちゃ面白いしコメント欄一体感で溢れてるし悲壮感ないのでエンジニアじゃない方も是非見てほしい!

重大なミスをした時どうすればいいか学びを得られた気がします。問題が起こらないのが一番だけど、何か問題を起こした時にどう対応するかが大切なんですよね。
私はコードホスティングにgithubを使っていますが、たとえgitlab使ってたとしてもきっと笑いながらこの配信見てたと思います。

* Who did it, will they be fired?
Someone made a mistake, they won’t be fired.

このブログのSSL設定とかの話。

前Cipher Suitesの話をしたのでこのブログのSSL設定を紹介します。Webサーバはnginxです。
試験的にtag.retrorocket.bizにだけh2oを使ってるのですが、なかなかいい感じなのでそのうち乗り換えるかもしれません。
サブドメインで運用しているサービスは一部設定が足りてなかったりしてSSL LabsでA+じゃなかったりするのですが、AかA-なので及第点と思っています。retrorocket.bizはA+です。
SSL Server Test (Powered by Qualys SSL Labs)
http/2には対応済みです。

設定の一部

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

add_header Strict-Transport-Security max-age=15768000;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/ca-certs.crt;

resolver 8.8.8.8 8.8.4.4 valid=300s;

設定の根拠

基本的に「瀕死のリテラシー メカニカルに殺す」「世の中のいけてるところが推奨しているものは信頼できるもの」、という考えなので、MozillaWikiのIntermediate compatibilityの設定を使用しています。
Security/Server Side TLS – MozillaWiki
Modernの設定に寄せたいので、TLS1.0は切っていいかなと思ってアクセスログを見たのですが、利用者にAndroid4系の人がめちゃくちゃ多いので諦めました。
openssl 1.1.0以上を使用しているとCHACHA20-POLY1305が使用できます。
新しいTLSの暗号方式ChaCha20-Poly1305 – ぼちぼち日記

参考にしたサイト等

自分で理解しないまま設定するのは絶対避けたいので、以下のサイトを参考にしています。
理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話 · けんごのお屋敷
httpsだからというだけで安全?調べたら怖くなってきたSSLの話!? – Qiita
我々はどのようにして安全なHTTPS通信を提供すれば良いか – Qiita
OCSP StaplingはMozillaWiki見るまで知らなかったので勉強になりました。

Start SSLの証明書で運用しているサービスはそろそろ証明書更新の時期なので、Let’s Encryptに乗り換えようと思っています。

スプラトゥーンで封印ルールが最後に開催された時間を調べる。

シオノメヤグラとかホッケヤグラとか封印されているルールとステージが復活してるので各ステージがいつ開催されたか調べてみました。
splapiはクエリパラメータで開催情報を検索できるのですが、私以外使ってる人があまりいなくて寂しいです。

Bバスパークのガチホコ
→2016-01-15T07:00:00

ショッツル鉱山のガチホコ
→2016-01-21T11:00:00

シオノメ油田のガチホコ
→2016-01-19T07:00:00

ちなみにシオノメヤグラは2015-09-29T11:00:00だったので約1年ぶり、ホッケヤグラも2015-09-26T19:00:00なので約1年ぶりです。サービス終わるんじゃないかと心配になりますね。

ちなみに前もこんなことをしました。
今日までのスプラトゥーンのガチマッチの開催情報をelasticsearch+kibanaで解析した。

自分のサイトの広告にこーどあいきゅーの問題出されても答え合わせできない。

ほんとどうでもいい話でしかもオチも解決法もないです解決しました。Tumblrに書こうと思ったんだけど、こちらのブログに出てきた広告の話だったので。

誰だこのおっさん。

誰だこのおっさん。

人生でPHP書いたことある時間が1時間未満の人間だけどさすがにこれはわかる、というかわからないとさすがに怒られる(誰に)。答え:何も出力されない
PHPの変数宣言とかスコープ周りってクセがあるなぁと思います。なんでgrobalがあるのにlocalがないんだろ、とか。

問題は「答え合わせしたいけど、自分のブログのアドセンスをクリックすると不正とみなされてクリックできない」ことで、やっぱり答え気になるなぁっていう。自分でアドセンスクリックしたらどうなるんだろうと思ってヘルプを見たのですが、誤クリックしたときは特に何もしなくていいそうです。
アカウントを適正に運営する – AdSense ヘルプ
でも誤クリックじゃなくて、広告で紹介されているリンクの内容を知りたい場合にどうすればいいのかわかりませんでした。下手にクリックして何かあっても嫌だし、仕方ないのでラズパイ2のPHP 5.6.26-0+deb8u1で答え合わせをしました。

そもそもこの問題公式ドキュメントの内容そのまんまですね。実際にスクリプト動かすまでもなかった。
PHP: 変数のスコープ – Manual

追記

コメントで、Google Publisher Toolbarを導入すると広告がクリックできる、との情報をいただいたので導入して解決しました。ありがとうございました。
参考サイトは以下
あ、安西先生・・・adsenseの広告を自己クリックしたいです・・・。[解決編] – 日なたと木陰

zshを諦めてfishを導入した。

fish-shellを使ってみませんか – Qiita
zsh から fish にした。 – yoshiori.github.io

なんだかんだで大学院いたときから周りがzsh使ってたのでzsh使っていたのですが、やっぱり使いこなせなかったのでユーザーフレンドリーだと話題のfishに移行しました。シェル食って生きてる人間とマウスないと何もできない私みたいな人間を一緒にすべきではなかった。

やったこと

omfの導入

oh-my-fish/oh-my-fish: The Fishshell Framework.
マウスが友達の人はomfコマンド使えないと辛いので導入します。

pecoプラグインの導入

oh-my-fish/plugin-peco: Browse your fish history with peco.

zプラグインの導入

oh-my-fish/plugin-z: Integration with z (autojump alternative).

vimのビルド

yumで入れたvimはfishに対応していないので、8.0をcloneしてビルドしました。
vim/vim: The official Vim repository

lessをvimのマクロに変更

config.fishはこんな感じになりました。

set -gx LANG ja_JP.UTF-8
set -gx LC_ALL ja_JP.UTF-8
set -gx LANGUAGE ja_JP.UTF-8

set -gx Z_SCRIPT_PATH ~/z/z.sh

set vim_version (vim --version | head -1 | sed 's/^.*\ \([0-9]\)\.\([0-9]\)\ .*$/\1\2/')
alias less "/usr/local/share/vim/vim$vim_version/macros/less.sh"

function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
end

themeはbobthefishを使いました。
oh-my-fish/theme-bobthefish: A Powerline-style, Git-aware fish theme optimized for awesome.

フォントはPowerline適用済みRictyDiminishedを使ってるのですが、mobaXtermとの相性が悪いのか原因不明で矢印がかけちゃいますね。なんだろうこれ。

fishを導入した

fishを導入した

サブマシンでスクショとったのでザギザギしてますがメインマシンはmactype入れてるのでもっときれいです。

追記

Z_SCRIPT_PATHはinit.fishが読み込まれる前に設定しないと、ログイン時に「Please install ‘z’ first!」というメッセージと一緒にエラーコード(リターンコードは1)を吐いてしまうので、WinSCPとかSFTP使おうとした時に「大きなSFTPパケット(1416128883 B)を受信しました。サポートしている最大パケットサイズは 102400 B です。(中略)メッセージが “Plea” で始まっています。」のようなエラーが発生します。
$OMF_CONFIG配下にbefore.init.fishを作って、その中でZ_SCRIPT_PATHを設定すると解消します。参考サイトは以下。
How can I install 'z' in fish? · Issue #2 · oh-my-fish/plugin-z
余計なお世話感がすごい。最悪プラグインいじってもいい気がします。