lib/ を丸ごと読み込むと実際いくらかかるのか
このサービスの唯一の入口ファイル、46 行目。 foreach (glob(__DIR__ . '/lib/*.php') as $f) { require_once $f; } 65 ファイル、1.5 メガバイト。要求のたびに読み込まれる。カウンター画像でも、統計ページでも、404 でも同じだ。昨日はそれが 20,734 回起きた。 意匠 26 系統 — 715…
キャッシュが逆向きに育つとき
このサービスのキャッシュ用フォルダに、小さなファイルが四つある。いちばん大きいもので 35 バイト。合わせてカウンター番号を三つ持っていて、カウンターへの要求があるたびに読まれる。…
インデックスを足すと遅くなるとき
日ごとの数字が入った表の鍵はひとつ、カウンターと日付の組である。コードの五か所は、この表に別の問いを立てる — 「このカウンターの時間変化」ではなく「これらの日の全カウンター」だ。トップページの一覧、ランキング、サイトマップ、90 日ぶんのグラフ、そして状態の数字。日付の列にインデックスがなければ、そのどれもが 114,113 行すべてを読む。…
AI を自分のサーバーで動かさない理由
このサイトを配信している機械では、言語モデルは動いていません。要約は二台目の装置で計算されます。その装置が依頼を取りに来て、作業をして、文を持ち帰ります。 理由は算数です。3B のモデルは一ギガバイト超のメモリを占め、一回の答えに数秒かかります。このアプリケーション全体で最も重いデータベース問い合わせは 581 ミリ秒です。両方を同じ基板に載せるということは、379,000…
カウンター画像をメモリに置く
このサービスが描くカウンター画像のうち、五分の一近くはもう何も変えません。前の世代のマウス追跡スクリプトが動くたびに画像を読み直し、そしてそれらのリクエストが何も増やさなくなって以来、続けて二回で同じ画像がバイト単位で同じように出てきます。 キャッシュの明らかな候補です。面白かったのは、どこに置くか、そして鍵を何に基づかせるかという二つの判断でした。 ディスクには置かない…
2015 年の script が今もカウンターを読み直す
このサービスの前の世代には、マウス追跡のスクリプトが付いていました。カウンター画像をまず普通に一度読み込み、そのあとマウスが動くたびにもう一度読み込むのです — 座標をクエリ文字列に入れ、rerun=1 という印を付けて。名前は正直です。これは同じ訪問のもう一度であって、新しい訪問ではありません。 そのデータを誰も読んだことがありませんでした。rerun…
非力なハードウェアでパスワードにかかる値段
ここでは統計ページにパスワードをかけられます。そのパスワードのハッシュを計算する処理は、このサービスで唯一、遅くあるべき処理です — 盗まれたハッシュの解読を高くつかせているのが、まさにそれだからです。問題は、このハードウェアでどれくらい遅いか。 このサイトを動かしている機械で実測、PHP 8: PASSWORD_DEFAULT560 ms(cost 12 になる) cost…
同じファイルを毎回圧縮する
Apache はレスポンスをその場で圧縮します。毎回中身が違うページなら、それしか手がありません。月に一度しか変わらないスタイルシートにとっては、サーバーが訪問者ごとに同じ作業をやり直し、何週間も続け、そのたびに結果を捨てるということです。そのためのキャッシュはありません。 2026 年 8 月 19 日、確立済みの接続の上で、このサイト自身の style.css(124…
JavaScript なしで動くカウンター
ここにあるカウンターデザインのうち、かなりの数が動きます。数字が自らカウントアップしたり、パネルが描かれるように現れたり、何かが所定の位置に落ち着いたりします。 そのいずれもJavaScriptを1行も使っていません。 仕組み…
Stats4U 3が登場
あなたが今これを読んでいるこのサイトは、今月作り直されました——見た目を変えただけではなく、カウント処理の経路から作り直したのです。そこに至るまでの静かな11年間については、別の記事で取り上げています。この記事では、実際に何が変わったのか、そしてそもそもこれをやる根拠となった測定結果について書きます。 決め手となった数字…