二段階認証を使いながらGithubのアカウントを複数使い分ける

Githubは本業用とプライベート用を使い分けるといった運用が可能ですがコツがいります。

リポジトリをcloneする時に https から始まるURLで管理すれば、pushするときにGithubのIDとパスワードを求められ、認証すれば鍵など不要でpushができるのですが、二段階認証を導入するとこれが使えなくなります。(部分的に認証を通るようにできるみたいですが、全てのリポジトリに対してこの設定をするのが面倒。)

解決策として今の所思いつくのが、.ssh/configでホスト毎に使う鍵を分けることです。

アカウント毎の鍵を.ssh/configで指定する

.ssh/config を開いて下記のように、それぞれの鍵にそれぞれのHostを割り当てます。

Host one.github.com
HostName github.com
IdentityFile ~/.ssh/one_rsa
Host two.github.com
HostName github.com
IdentityFile ~/.ssh/two_rsa

リポジトリのURLがをちょちょいと変更

最後にプロジェクトの.git/configを開いて下記のようになっている項目を

[remote "origin"]
url = git@github.com:user/repo.git

このように変更することで指定した鍵を使わせることができます

[remote "origin"]
url = git@one.github.com:user/repo.git

BigQueryで時間単位の集計を行う方法

時間単位での計算をする場合、MySQLではHOURを使っていたが、BigQueryではそれではできず、下記の2種類の方法で行う。

EXTRACTを使う場合

この方法だと時間の数値部分だけを得られる(例えば2019-07-04 12:13:14だと、12が得られる。)

SELECT
EXTRACT(HOUR FROM datetime) AS hour,
COUNT(*)
FROM example.hoge
GROUP BY hour

TIMESTAMP_TRUNCを使う場合

これはEXTRACTと違ってDATETIME全体を得ることができます。(例えば2019-07-04 12:13:14だと、2019-07-04 12:00:00が得られる。)

SELECT
TIMESTAMP_TRUNC(datetime, HOUR) AS hour,
COUNT(*)
FROM example.hoge
GROUP BY hour

おわり

EXTRACTの場合は純粋な時間だけなので、日をまたぐ場合は混ざってしまいますが、TIMESTAMP_TRUNCを使えば年月日を意識することなく直で日を跨いだ処理ができるのがポイントです。