Kontaktovat podporu

Odpovíme e-mailem, obvykle do dvou dnů.

Google reCAPTCHA kontroluje toto odeslání kvůli ochraně před zneužitím; data se přitom předávají společnosti Google. Skript se načte až při otevření tohoto formuláře.

← Všechny články

Nadbytečné escapování v osmi diagramech

Osm článků na tomto blogu nějakou dobu ukazovalo sedm znaků — uprostřed věty, uvnitř diagramů. Ne pomlčku. Doslovný text. Mezitím byl opraven ve všech jazycích.

81 řádků, 91 výskytů. V běžném textu týchž osmi článků: ani jeden.

řádky diagramů, které místo pomlčky vypsaly entitu jedenáct jazyků počítání bez cookies middot, mdash export dat jako CSV nebo JSON mdash počítadlo přes správce značek mdash počítadlo na stránce s HTTPS mdash počítadlo v profilu na chomikuj mdash dlouhá URL shodila počítadlo mdash proč seznam vyloučení není hashovaný mdash mezipaměť, která žije v paměti mdash 81 řádků v 8 článcích, 91 výskytů — a v běžném textu ani jeden kontrola šířky je viděla jako příliš široké, nikdy jako chybné

O jedno escapování víc

Diagramy jsou inline SVG zapsané přímo v těle článku. Popisek, který chce pomlčku, nese —, z něhož prohlížeč udělá pomlčku, přesně jako v odstavci.

Uloženo však bylo —. Prohlížeč z toho poslušně udělal sedm znaků, které vypisují entitu, a vykreslil je. Běžný text zůstal nedotčen, protože nikdy neprošel tím, co escapování navíc přidalo; prošly tím jen popisky, a to jen v článcích, jejichž popisky vznikly v té době.

Příčina je malá a nudná. Stojí za zapsání spíš to, proč zůstala tak dlouho na očích a co ji ukončilo.

Kontrola to viděla a řekla něco jiného

Existuje kontrola, která měří, zda se popisek diagramu vejde do svého obrázku. Tyto popisky hlásila už několik dní — jako příliš široké.

Což byly. Popisek, který kreslí sedm znaků místo jednoho, je asi o čtyřicet pět pixelů širší, než měl být, takže měření bylo správné a hlášení také. Závěr, který by si z hlášení čtenář vyvodil, ale ne. Číslo říkalo, že geometrie je příliš těsná. Pravda byla, že text není tím, čím se zdá.

Tak to celé vypadá. Kontrola odpovídá na otázku, kterou dostala, a nedokáže nahlásit, že otázka byla špatná. Nic tu nebylo změřeno špatně; měření se jen týkalo jiného problému, než jak vypadalo.

Co to odhalilo

Vykreslit jeden diagram a podívat se na něj. Headless Chromium, jeden snímek obrazovky, deset sekund. Entita byla na třetím řádku obrázku, písmeny stejně velkými jako všechno ostatní.

Opravou byla migrace, která zaměnila &amp; za & u pevného seznamu názvů entit, a to jen uvnitř <svg class="dg"> bloků, aby ampersand míněný jako ampersand ampersandem zůstal. Cokoli mimo ten seznam bylo nahlášeno a ponecháno, místo aby se hádalo. Všech 81 řádků bylo opraveno ve všech jazycích; jediné výskyty, které v blogu zbyly, jsou ty, které tento článek záměrně cituje.

Co z toho plyne obecně

Každá automatická kontrola v tomto projektu měří něco číselného, protože čísla jsou to, co program umí porovnat. Žádná z nich nevidí, že se obrázek změnil v nesmysl, že je rámeček prázdný nebo že je slovo vypsané tam, kam patří symbol.

Pravidlo, které z toho vzešlo, je tedy krátké: po každé změně diagramu jeden vykreslit a podívat se na něj, v jazyce, který potřebuje nejvíc místa. Zachytilo už dvě věci, které žádné měření zachytit nemohlo — tuto a prázdný rámeček, který zůstal, když se z něj přesunul titulek.

Reklama