Skip to content

Instantly share code, notes, and snippets.

@maiha
maiha / RateLimit.md
Last active Jan 16, 2021
RateLimitアルゴリズムまとめまとめ (→ Sliding window countersでOK)
View RateLimit.md

TL;DR

  • Leaky bucket : キューイングして出力量(consume)で調節 (アルゴリズムというかキューを使って調節)
  • Token bucket : 定期的に資源を追加し平均値を調節。バーストに強い (ソシャゲのスタミナ回復)
  • Fixed window counters : 単位時間あたりの上限値を指定。キューを使わないLeaky bucket。境界の2倍問題あり
  • Sliding window log : 総数(counters)でなくアクセス時刻(log)で管理。境界問題を解消する一方、消費増加がぱない(IntArray(Time))
  • Sliding window counters : countersのままで、単位時間の割合計算によって境界問題を解消。これにしておけば間違いない

参考: 様々なrate limitアルゴリズム

View ディスク追加.md

/dev/vdb があることを確認

$ fdisk -l
...
Disk /dev/vdb: 2 TiB, 2147483648000 bytes, 4194304000 sectors
...

パーティション作成(2TB以下の場合)

View RabbitMQ.md

Queue

作成

Name
Durable (the queue will survive a broker restart)
Exclusive (used by only one connection and the queue will be deleted when that connection closes)
Auto-delete (queue that has had at least one consumer is deleted when last consumer unsubscribes)
Arguments (optional; used by plugins and broker-specific features such as message TTL, queue length limit, etc)
View XX operators with X-zero? method.md

Typical Operations

a ?? b # => a.typical_zero? ? b : a

def T#typical_zero?
  self == T.typical_zero
def T.typical_zero
  nil
View SQS.md
View 1.SMS provider.md

SMS Provider の責務

  • アプリケーションツーパーソン(A2P)メッセージング (アプリケーションから個人への通知)
    • モバイルプッシュ通知 (事前にアプリとモバイルデバイスを登録)
    • モバイルテキストメッセージング(SMS) (電話番号を指定してSMS対応デバイスに送信)
  • メッセージ配信の再試行 (サーバー側のエラー発生時に行う柔軟な再試行の設定)
  • デッドレターキュー (正常に配信できないメッセージを分析または再処理のために配信不能キューに保持)
  • メッセージ属性 (メッセージに関する任意のメタデータを提供)
  • メッセージセキュリティ (データの秘匿性)
  • メッセージの耐久性 (永続的なストレージおよび冗長化)
View VSCode Remote SSH.md

TL;DR

  • SSH Client には ssh コマンドが必要 (Windows10 付属のは動く。puttyは使えない)
  • .ssh/config の ProxyCommand には "ssh" でなく "ssh.exe" と書くべし
  • ssh-agent はプロセス起動でなく、サービスとして起動する
  • ssh-agent はバージョンが古くて自動で鍵認証できないので、最新版を自分で入れる必要あり (7.9以上が必要)

Windows10付属のSSH Clientのインストール

View Makefileチートシート.md

TL;DR

定義 事前実行 参照時 再参照
FOO=1 なし 実行 実行
FOO:=1 あり(cache) (cached) (cached)

基本

MAKE=make --no-print-directory
View openapi.md

TL;DR

  • server: apisprout
  • editor: VSCode

server

localroast

View job queue.md
### global
[vars]
var qname  = "foo"

### job request
var data = "bar"
var id   = (redis) INCR /slack/job/${qname}/ids/max
(redis) HSET  /slack/job/${qname}/datas ${id} ${data}
(redis) LPUSH /slack/job/${qname}/ids ${id}
You can’t perform that action at this time.