#ツール
16 件
モールス符号 — 表が一つ、曖昧さが二つ、細部が三つ
モールス自体は簡単で、難しいのは細部です。空白は誰のものか、全角の点をどう正規化するか、そして「1 単位」がどれだけか。
ファイルの原子的書き込み:一時ファイルに書いてから rename
上書きは停電・クラッシュ・並行読み取りの瞬間に半端なファイルを残します。一時ファイルと rename を使えば、ファイルシステムの原子性で「半端」を不可能にできます。
Base64:暗号でも圧縮でもない
Base64 は 3 バイトを 4 文字の可読文字に変換し、容量を三分の一増やします。解くのは「バイナリをテキスト経路に通す」ことで、秘匿ではありません。
デバウンスとスロットル:違いは「誰が実行時刻を決めるか」だけ
どちらも実行頻度を制限します。デバウンスは最後の呼び出しが、スロットルは固定の時間窓が時刻を決めます。選び間違えると、ドラッグが離した時だけ更新されたり、入力中に 200ms ごとに送信したりします。
工数見積もり:なぜ「だいたい三日」が三週間になるのか
見積もったのはコーディング時間で、約束したのは実装+結合+レビュー+手戻り+待ち時間です。不確かな部分を明示する方が、日数を二倍するより効きます。
フィーチャーフラグ:設定ではなく負債である
フラグは到達可能なコード経路を倍にし、そして自動では消えません。精巧な仕組みを作るより、各フラグに削除日を決める方がはるかに重要です。
git bisect:「どのコミットで壊れたか」を一本のコマンドにする
退行調査の難所は二分探索ではなく「壊れている」の定義です。自動で判定するスクリプトを先に書けば、bisect は n 回のビルドを log n 回に縮めます。
セマンティックバージョニング:主番号の約束は「挙動が黙って変わらない」
MAJOR は「変更が大きい」ではなく「破壊的」の意味です。リファクタで主番号を上げたり、破壊的変更を副番号に隠すと、下流の自動更新が事故になります。
技術的負債の利息とは何か
負債は醜いコードではなく、以後の変更が毎回余分に払うコストです。判定は測定可能で、1 回の変更で触るファイル数、テスト時間、同時に直す箇所の数です。
cron パーサを書く:5 フィールド、和集合の規則、そして 2 月 30 日
構文は 30 分で書けます。難しいのは意味論です。日と曜日を両方指定したときは積ではなく和、存在しない日時には終了条件が要り、7 も 0 も日曜です。
CSV はカンマで切るものではない:RFC 4180 の引用符と改行
引用符付きのフィールドが 1 つ現れた時点で split は破綻します。引用符は区切り文字と改行を包み、内部の引用符は 2 つ重ねて書きます。30 行の状態機械が正規表現より確実です。
進数と単位換算:非線形なのは温度だけ
2 から 36 進数の変換は BigInt で精度を守る必要があります。10 カテゴリのうち 9 つは線形の比率ですが、温度だけはアフィン変換で、単一の倍率では必ず間違えます。
色とコントラスト:相対輝度はチャンネルの平均ではない
記法の相互変換は入口にすぎません。本当の罠は WCAG のコントラストで、ガンマを戻してから重み付けする必要があります。黒文字か白文字かの判断も閾値ではありません。
ハッシュとチェックサム:CRC32 と MD5 を自分で書く理由
ブラウザーが提供するのは SHA 系だけで、しかも安全なコンテキストに限られます。CRC32 と MD5 は Web Crypto にありません。大きなファイルを一括で読まない方法と、チェックサムを目視で比べない方法も。
正規表現テスト:ヒット・グループ・置換プレビューとゼロ幅の罠
正規表現テスターには三つの役割があります。一致位置とグループを明示し、置換結果を先に見せ、ゼロ幅一致で止まらないこと。
JSON スタジオ:整形・検証・差分を一つの画面に
使い捨てのコマンドで JSON を整える習慣から作りました。整形・圧縮・ソート、行と列で示す解析エラー、二つの文書の構造差分。すべてブラウザ内で動きます。
