Carpe Diem

備忘録

Homebrewで過去のバージョンを使いたい【tap版】

概要

以前以下の記事でhomebrewの過去バージョンの使い方を紹介しました。

christina04.hatenablog.com

あれからHomebrewも変わり、以前の方法ではうまくいかなくなったため新しい過去バージョンのインストール方法を紹介します。

環境

  • macOS Catalina 10.15.6
  • Homebrew 2.5.2
続きを読む

CircleCIの新UIでのslack連携 (Webhook URL版)

追記

現在(slack orb v4)は新しい連携方法に変わっています↓

christina04.hatenablog.com

以下(slack orb v3)は古い連携方法です。

概要

旧UIでは以下のような設定画面でslack連携を行っていましたが

f:id:quoll00:20200924011339p:plain

新UIからはこの設定方法はサポートされなくなり、新しくSlack Orbを使った設定方法に変わりました。

続きを読む

メールにおけるSPFのドメイン認証の仕組み

概要

SPF(Sender Policy Framework)はメールのなりすましを防ぐための送信ドメイン認証の手法です。

さらに細かく説明すると

SMTPTCPコネクションの送信元IPアドレス送信元メールアドレス(エンベロープFrom)のドメインのTXTレコードに含まれるIPアドレスが合致するかどうかを確認する手法です。

この仕組みを図を交えながら説明します。

事前知識

前もって知っておいた方が良いことを書きます。

エンベロープFromとヘッダFrom

From 役割
エンベロープFrom バウンスを処理する場合などに使われるシステムが利用するアドレス
SMTPのMAIL FROMコマンドで指定されるreverse-path
メールボックスに受信するとReturn-Pathヘッダとして挿入される
ヘッダFrom メールクライアントでFromとして表示される人間が利用するアドレス

SPFはこのエンベロープFromが正しいかチェックする仕組みです。

続きを読む

GoのCLIで標準入力とファイル読み込みの両方に対応する

概要

Goでは簡単にコマンドラインツールが作れますが、人によって引数やオプションといったインタフェースがバラバラになりがちです。

POSIX Utility Syntax Guidelinesというガイドラインがあるので、これに則るとUnixライクな統一されたインタフェースのCLIツールになります。

環境

インタフェースのイメージ

例えば文字列の入ったファイルがあり

$ cat sample.txt
hogefuga

入力文字列をすべて大文字にするコマンドcapitalizeを作る場合、以下の3つのインタフェースをサポートするイメージです。

$ cat sample.txt | capitalize
HOGEFUGA

$ cat sample.txt | capitalize -
HOGEFUGA

$ capitalize sample.txt
HOGEFUGA
続きを読む

gRPCのkeepaliveで気をつけること

概要

gRPCでは1つのHTTP/2コネクション上でstreamを多重化します。
しかしidleなコネクションは、LBなど間に介在するネットワーク機器によって気づいたら切断されているケースがあります。
そうならないよう、定期的にパケット(PINGフレーム)を流して「idleではないよ」とコネクションを維持しようとするのがいわゆるkeepaliveという仕組みです。

gRPCではデフォルトの設定では無効になっている&地味に設定が細かいので1つ1つ説明します。

gRPCのkeepaliveの役割

大きく2つあります。

1つ目は先に述べたようにidleコネクションを維持するためです。

2つ目は死んだコネクション(TCPハーフオープン)があったら切断し、再接続するためです。

例えばNLBでは350秒以上idleなコネクションが切断される仕組みがあり、これによって普段あんまりトラフィックの無いサービスでいつの間にか切断されており、次回のリクエストでもその死んだコネクションをそのまま使おうとしてエラーになるケースをちらほら見かけます。

1つ目の対応でコネクションを維持するのも解決策の1つですが、切断された古いコネクションを使い続けないよう、再接続するというのも1つです。

環境

  • Go v1.15.0
  • grpc-go v1.29.1
続きを読む

Bigtableに時系列データを保存する

概要

Bigtableで時系列データを保存する手段として

  1. 縦長のテーブルを使用する
  2. 横長のテーブルを使用する
  3. 列バージョンを利用する

の3種類あるのでそれぞれの特徴、使い方を紹介します。

環境

続きを読む