Buildクロス投稿は重複コンテンツか — 消す前に一致率を測ったら散文の一致は3行だったZenn / Qiita / dev.to へのクロス投稿を重複コンテンツと疑って外部記事を消しかけたが、行単位で測ったら一致795行のうち762行はコードブロックで、散文の一致は393行中3行だった。測り方と、canonical を指定できるプラットフォームとできないプラットフォームの整理。
BuildGoogleスプレッドシートの .xlsx は Excel で静かに壊れる — 203セルを動的配列なしで書き直すGoogleスプレッドシートから .xlsx で書き出すと、ARRAYFORMULA / FILTER / SORTN / QUERY が Excel に存在しないまま残る。しかも外側の IFERROR が例外を握りつぶすので、画面にはエラーではなく「該当なし」が出る。openpyxl で壊れたセルを数え、ヘルパー列+INDEX/MATCH に書き直して Excel 2016 でも動くようにした記録。
Build通知を outbox で冪等に届ける — 検知と送信を分け、送信直前に再確認する「条件を検知した瞬間に通知を送る」と、検知から送信までの間に在庫や条件が変わって誤報になる。検知は outbox に積むだけにして、送信直前に再照会・再判定し、崩れていたら送らず落とす。冪等な投入・送信直前の再確認・指数バックオフの再送を、Cloudflare D1 上の状態機械として組んだ設計を共有する。
BuildCloudflare Workers の cron 1本で複数ジョブを回す — 毎分tick+時刻分岐Cloudflare Workers の無料プランは cron トリガーがアカウント単位で5本まで。複数サービスを同居させると足りなくなる。cron を毎分1本に集約し、tick 内で UTC 時刻を見て巡回・送信・日次保守などへ振り分ける設計と、1 実行50サブリクエストの無料枠にバッチを収める方法を共有する。