データベースの構造は実際どこにあるのか
このサービスがすることは、すべてバージョン管理の中にある。少なくともコードは。動いている先のデータベースは 32 の表で、そのうち 15 はリポジトリのどこにも定義がない — CREATE TABLE もなければ、スキーマのファイルもなく、何もない。バックアップは 32 すべてを形ごと戻す。リポジトリにないのは、その形の二つめの、独立した写しである。…
設定ファイルがほぼ注釈である理由
このサーバーの .htaccess は 478 行ある。そのうち 98 行が規則。309 行が注釈だ。 何かをする一行につき、説明が三行。この比率は計画したものではない。規則を書くときの決まりが「理由を隣に置くこと」であれば、こうなる。 なぜ書き換え規則には段落が要るのか…
翻訳を一件ずつ点検する仕組み
このブログには十一の言語で 64 本の記事がある。704 行、およそ 220 万文字。どの言語にも欠けた記事はない — これは何かがそれを強制していてはじめて意味を持つ主張だ。 強制しているものがある。訳された行が書き込まれる前に英語の原文と突き合わされ、通らなかった行はそもそも書き込まれない — 報告され、人が見るために残される。 それぞれの点検は何のためか 同じリンク先。…
壊れたカウンターの見つけ方
カウンターは静かに壊れることがあります。サイトが作り直され、埋め込みが引っ越しを生き延びず、そして誰もそれを告げません — 統計はただ止まり、持ち主が気づくのは何か月も後、気づけばの話です。 当然の機能が自分から名乗り出ます。沈黙に気づいて一言送る。そして当然の作り方は、すでにそこにある数字から故障を推し量ることです。その版は作られ、測られ、捨てられました。 それを殺した測定…
自分のログを数え違える二つの道
ここでの一週間の変更は、アクセスログ一日分から数えた数字に載っていました。百万行、うち十万行が自分たちのものです。効いたかどうかを知るには、同じ数字をあとでもう一度数える必要があります——そして手で集めた二度目の集計が、一度目とまったく同じになることはありません。ボット一覧が違い、日付範囲が違い、grep が違います。…
公開ディレクトリのバックアップはソースの流出
大きなファイルをいじる前に、まず複製を取るのは自然な動きです。cp index.php index.php.変更前、それから作業。そのファイルがウェブサーバーの公開するディレクトリにあるなら、その時点でソースコード一式が平文でダウンロードできる状態になります — データベースの資格情報も、秘密も、そのファイルにたまたま入っているすべてを。 Apache が index.php…
Perl に見えた言語コード
2026年8月19日、.htaccessに、ブラウザに直接配信されてはならない種類のファイルをブロックするルールを追加しました。編集後にWebルートに残ったソースコードのコピー——index.php.bakや、うっかり残ったconfig.py、その他スクリプト系の拡張子を持つファイルで、訪問者がそれを実行するのではなく、ソースコードのままプレーンテキストとして取得できてしまうも…
同じファイルを毎回圧縮する
Apache はレスポンスをその場で圧縮します。毎回中身が違うページなら、それしか手がありません。月に一度しか変わらないスタイルシートにとっては、サーバーが訪問者ごとに同じ作業をやり直し、何週間も続け、そのたびに結果を捨てるということです。そのためのキャッシュはありません。 2026 年 8 月 19 日、確立済みの接続の上で、このサイト自身の style.css(124…
列より長かったページのアドレス
2026 年 8 月 9 日、二十枚のカウンター画像が描かれませんでした。誤って描かれたのでも、遅く描かれたのでもありません — 訪問者はカウンターがあるはずの場所で何も受け取れませんでした。 原因は 255 文字を超えるページのアドレスだった。いまは書き込みの時点で切り詰められ、カウンター画像は、告げられたアドレスの長さに左右されない。 連鎖…