無人運用の記事バリデーション — 「終了日が無い」を書き漏らしと未公表に機械で仕分ける 無人で毎日更新するセール速報サイトでは、記事データの「終了日が無い」が“書き漏らし”なのか“調べたが未公表”なのかを取り違えると、記入漏れを見逃すか正当な記事を弾くかのどちらかになる。この区別を 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 #セキュリティ #脆弱性
アスペクト比の約分と行の自然順ソート — サーバなしのブラウザ完結ツールをGCDとIntl.Collatorで作る 1920x1080 を 16:9 に約分するのは最大公約数(GCD)だけで足りる。file2 を file10 より前に並べる自然順ソートは Intl.Collator の numeric オプションで一行。どちらもサーバ不要でブラウザだけで完結する。実際にハシトシステムへ追加した2つのツールの実装を、動くコードで解説する。 2026-07-22 プログラミング #JavaScript #フロントエンド #SEO #アルゴリズム #ツール
ツール入力の初動を速くする eager_input_streaming — 引き換えに失うものを把握する Claude APIのツール使用で、入力をサーバ側でバッファせず生成した端から流す eager_input_streaming。大きなパラメータの初動が速くなる一方、届いたJSONが妥当である保証を失う。有効化の条件と、必要になる3つの実装をまとめる。 2026-07-20 AI・機械学習 #LLM #API #Claude #ストリーミング #レイテンシ
Langflowの auto_login が既定で有効 — 未認証でsuperuserトークンが取れる CVE-2026-9103 Langflow 1.0.0〜1.10.0 の /api/v1/login/auto_login は、認証なしで長期有効な superuser トークンを発行する。しかも AUTO_LOGIN は既定で有効。同日公開の権限昇格と組み合わさると、公開インスタンスは実質そのまま乗っ取られる。自分の環境の確認手順をまとめる。 2026-07-20 クラウド・インフラ #認証 #LLM #セキュリティ #CVE #Langflow
JSで「東京の10時」を他都市に変換する — オフセットを引き算すると壊れる タイムゾーン変換ツールを作っていて、東京の10時が前日16時になった。原因はオフセット補正のループで、補正値を毎回 target から引き直さずに累積していたこと。Intl.DateTimeFormat だけで壁時計時刻から Date を求める正しい書き方をまとめる。 2026-07-20 JavaScript #JavaScript #Intl #タイムゾーン #日付処理 #デバッグ
LLMの出力をJSON Schemaで固定する — パース失敗のリトライを設計から消す LLMの応答をJSONで受け取る処理は、プロンプトで「JSONだけ返して」と頼む限りいつか壊れる。スキーマ強制(structured outputs)に移すと、パース失敗のリトライ処理そのものが不要になる。設計上の効き所と、スキーマ側の制約をまとめる。 2026-07-19 開発・自動化 #自動化 #LLM #API #データ検証 #JSON Schema
marimoの/terminal/ws未認証RCE(CVE-2026-39987)— 自分の環境が外に出ていないか確認する リアクティブPythonノートブックmarimoの0.23.0より前に、ターミナルWebSocket /terminal/ws の認証欠如による未認証RCEがある(CVSS v4 9.3、CISA KEV収載)。開発機やクラウドVMで0.0.0.0にバインドしていないか、実際に確認する手順をまとめる。 2026-07-19 クラウド・インフラ #Python #ネットワーク #セキュリティ #CVE #marimo
自動更新サイトに「捏造セールを弾く」検証ゲートをビルドに入れる(実装コード付き) セール情報サイトを毎日自動更新していると、いちばん怖いのは「実在しない割引」を載せることだ。運用中のocha/menrui/manga-dealsでは、build.jsの入口に正規表現ベースの検証ゲートを置き、裏付けの無い断定表現でビルドを止めている。実際のコードと設計の勘所をまとめる。 2026-07-19 開発・自動化 #自動化 #Node.js #静的サイト #データ検証 #ビルド