O escapare în plus în opt diagrame
O vreme, opt articole de pe acest blog au afișat cele șapte caractere — în mijlocul unei propoziții, în interiorul diagramelor. Nu o linie de pauză. Textul literal. Între timp a fost reparat în toate limbile.
81 de rânduri, 91 de apariții. În textul propriu-zis al acelorași opt articole: niciuna.
O escapare în plus
Diagramele sunt SVG inline, scrise în corpul articolului. O etichetă care vrea o linie de pauză conține —, iar browserul o transformă în linie de pauză, exact cum face într-un paragraf.
Ce era stocat însă era —. Browserul a transformat conștiincios asta în cele cinci caractere care formează o entitate și le-a desenat. Textul propriu-zis nu a fost afectat, pentru că nu a trecut niciodată prin ce a adăugat escaparea în plus; doar etichetele au trecut, și doar în articolele ale căror etichete au fost construite atunci.
Cauza este mică și banală. Partea care merită notată este de ce a stat la vedere atât de mult timp și ce i-a pus capăt.
Verificarea a văzut-o și a spus altceva
Există o verificare care măsoară dacă o etichetă de diagramă încape în imaginea ei. Raporta aceste etichete de zile întregi — ca prea late.
Și chiar erau. O etichetă care desenează șapte caractere în loc de unul este cu circa patruzeci și cinci de pixeli mai lată decât trebuia, deci măsurătoarea era corectă și raportul era corect. Concluzia pe care ar fi tras-o cititorul raportului nu era. Cifra spunea că geometria este prea strânsă. Adevărul era că textul nu era ceea ce părea.
Aceasta este forma problemei. O verificare răspunde la întrebarea care i-a fost pusă și nu poate raporta că întrebarea era cea greșită. Nimic nu a fost măsurat greșit aici; măsurătoarea privea pur și simplu o altă problemă decât cea care părea.
Ce a găsit-o
Randarea unei diagrame și privirea ei. Chromium headless, o captură de ecran, zece secunde. Entitatea era pe al treilea rând al imaginii, cu litere de aceeași mărime ca tot restul.
Reparația a fost o migrare care a înlocuit & cu & pentru o listă fixă de nume de entități, iar blocurile <svg class="dg"> au fost singurul loc atins, astfel încât un ampersand gândit ca ampersand să rămână ampersand. Tot ce era în afara acelei liste a fost raportat și lăsat neatins, în loc să fie ghicit. Toate cele 81 de rânduri au fost corectate în toate limbile; singurele apariții rămase în blog sunt cele citate intenționat în acest articol.
Ce se poate generaliza
Fiecare verificare automată din acest proiect măsoară ceva numeric, pentru că numerele sunt ce poate compara un program. Niciuna nu poate vedea că o imagine a devenit fără sens, că o casetă este goală sau că un cuvânt este scris în litere acolo unde ar trebui să fie un simbol.
Așa că regula care a rezultat este scurtă: după orice modificare a unei diagrame, randați una și priviți-o, în limba care are nevoie de cel mai mult loc. Până acum a prins două lucruri pe care nicio măsurătoare nu le-ar fi putut prinde — acesta și o casetă goală rămasă în urmă când o legendă a fost mutată din ea.