手順書に「デプロイ前に検査せよ」と書いても守られない — ゲートはラッパの中に置く build と deploy が1コマンドのラッパには、手順書が割り込む余地がない。実際に「デプロイ後に検査する」形で運用されていた事例と、ゲートをラッパ内部へ移した実装、飛ばすときに理由を必須にする設計までをコード付きで示す。 2026-08-04 開発プロセス #CI/CD #デプロイ #自動化 #Node.js #運用
改行コードで壊れるものを一通り潰す — CRLF/LFとGitの.gitattributes シェルスクリプトの bad interpreter、Gitで全行が差分になる現象、.env の値に混ざる見えないCR。原因はどれも改行コードで、対処も共通している。現状の確認・変換・.gitattributes による再発防止までを、実行できるコマンドで一通り並べる。 2026-08-03 プログラミング #開発環境 #Git #テキスト処理 #シェル
記事の回遊導線が欠けるのをデプロイ前に止める検査を書いた 記事末尾の前後リンクや関連リンクは、規約があっても書き忘れると誰にも気づかれない。実際に60本中7本で欠けていたので、デプロイ前ゲートに検査を足して止めた話と、そのまま使える実装。 2026-08-02 開発ツール・効率化 #テスト #Node.js #静的サイト #SEO
孤立ページを構造的に作らない:sitemapに書く前に一覧から辿れるかを検証する sitemap.xmlにだけ載っていて一覧からリンクされていないページは、生成スクリプトが「成功」を返すたびに増える。ページ追加スクリプトに到達性チェックを入れて exit 2 で落とす設計と、既存サイトの孤立ページを数えるNodeスクリプトを紹介する。 2026-08-01 開発ツール・効率化 #自動化 #Node.js #静的サイト #SEO #サイト運用
アフィリンクの「タグ抜け」を公開前に機械検出する — 配信HTMLを見てASINで正規化する Amazonリンクからアソシエイトタグが抜けても表示は壊れないので気づけない。配信HTMLのhrefだけを走査して検出し、ASINで正規URLへ直すNode.jsスクリプトを実際に動かす。 2026-07-31 開発ツール・効率化 #自動化 #Node.js #静的サイト #アフィリエイト
Base58とは何か — Base64/Base32との違いと、ビットコインが使う理由をJavaScriptで確かめる Base64やBase32は知っていても、Base58は「ビットコインアドレスで見る謎の文字列」で止まりがちだ。なぜ58なのか、Base64/Base32と何が違うのか、そして「大きな整数として58進数に変換する」という他のエンコードと決定的に異なる仕組みを、実際に動くJavaScriptで確かめる。ブラウザで試せるツールも用意した。 2026-07-29 プログラミング #JavaScript #エンコード #Base58 #Bitcoin #データ設計
日次ランキングを「決定論スナップショット」にする — 同じデータなら必ず同じ並び 毎日ランキングを更新する静的サイトを無人運用すると、「順位を人手で入れ替える」誘惑と「実行のたびに並びがブレる」問題に必ずぶつかる。実際に運用しているアニメランキングサイト anime-trend の設計をもとに、順位を乱数も時刻も使わない決定論的なスナップショットとして日付つきで残す方法を JavaScript で組み立てる。 2026-07-26 プログラミング #JavaScript #自動化 #静的サイト #データ設計
無人運用の記事バリデーション — 「終了日が無い」を書き漏らしと未公表に機械で仕分ける 無人で毎日更新するセール速報サイトでは、記事データの「終了日が無い」が“書き漏らし”なのか“調べたが未公表”なのかを取り違えると、記入漏れを見逃すか正当な記事を弾くかのどちらかになる。この区別を fail-closed で機械判定するバリデーションを、実際に運用しているセール速報サイト manga-deals の設計をもとに JavaScript で組み立てる。 2026-07-25 プログラミング #JavaScript #自動化 #静的サイト #データ検証
JavaScriptで「見た目の1文字」を数える — Intl.Segmenterで書記素クラスタ単位に分割する 絵文字や結合文字が混ざると `str.length` も `[...str]` も人が数える文字数と合わない。Intl.Segmenter を使って書記素クラスタ(grapheme cluster)単位で分割し、入力欄の文字数カウントや先頭N文字の切り出しを正しく実装する。単語・文単位の分割まで含めてブラウザだけで試せる形にする。 2026-07-24 プログラミング #JavaScript #テキスト処理 #Unicode #Intl
NVD APIが2002年のCVEを返してくる — 日付フィルタ無しの検索は「登録順の先頭」を返す 毎日CVEを取りに行く自動処理が、2002年のOpenSSHの脆弱性を「新規」として返してきた。原因はNVD APIのクエリに日付フィルタが無かったこと。cvssV3Severity=CRITICAL だけでは「重大なCVEのうち登録順で先頭のもの」が返る。pubStartDate/pubEndDate の使い方と、120日制限、並び順の落とし穴をまとめる。 2026-07-23 プログラミング #自動化 #Node.js #API #セキュリティ #脆弱性