Kontakta supporten

Vi svarar via e-post, oftast inom två dagar.

Google reCAPTCHA kontrollerar det här inskicket mot missbruk; data skickas till Google. Skriptet laddas först när formuläret öppnas.

← Alla inlägg

En escapning för mycket i åtta diagram

Under en tid visade åtta inlägg på den här bloggen de sju tecknen — mitt i en mening, inne i diagrammen. Inte ett tankstreck. Den bokstavliga texten. Det har sedan dess rättats på alla språk.

81 rader, 91 förekomster. I brödtexten i samma åtta inlägg: inga alls.

diagramrader som skrev ut entiteten i stället för tankstrecket elva språk räkna utan cookie middot, mdash exportera data som CSV eller JSON mdash räknare via tag manager mdash en räknare på en HTTPS-sida mdash en räknare i en chomikuj-profil mdash en lång URL tog ner räknaren mdash varför undantagslistan inte hashas mdash cachen som lever i minnet mdash 81 rader i 8 inlägg, 91 förekomster — och inga alls i brödtexten breddkontrollen såg dem som för breda, aldrig som fel

En escapning för mycket

Diagrammen är inbäddad SVG, skriven direkt i artikeltexten. En etikett som ska ha ett tankstreck innehåller —, och webbläsaren gör om det till ett, precis som i ett stycke.

Det som hade sparats var dock —. Webbläsaren gjorde plikttroget om det till de sju tecken som stavar ut en entitet och ritade dem. Brödtexten var orörd eftersom brödtexten aldrig gick igenom det som lade till den extra escapningen; det gjorde bara etiketterna, och bara i de inlägg vars etiketter byggdes vid den tiden.

Orsaken är liten och tråkig. Det som är värt att skriva ner är varför felet stod fullt synligt så länge som det gjorde, och vad som satte stopp för det.

Kontrollen såg det och sa något annat

Det finns en kontroll som mäter om en diagrametikett ryms i sin bild. Den hade rapporterat de här etiketterna i flera dagar — som för breda.

Vilket de var. En etikett som ritar sju tecken i stället för ett är ungefär fyrtiofem pixlar bredare än tänkt, så mätningen var rätt och rapporten var rätt. Den slutsats som en läsare av rapporten skulle dra var det inte. Siffran sa att geometrin var för trång. Sanningen var att texten inte var vad den såg ut att vara.

Det är så det ser ut. En kontroll besvarar den fråga den fick, och den kan inte rapportera att frågan var fel fråga. Ingenting mättes fel här; mätningen gällde helt enkelt ett annat problem än det som det såg ut att vara.

Vad som hittade det

Att rendera ett diagram och titta på det. Headless Chromium, en skärmbild, tio sekunder. Entiteten stod på bildens tredje rad, med bokstäver i samma storlek som allt annat.

Reparationen var en migrering som ersatte &amp; med & för en fast lista med entitetsnamn, och bara inuti <svg class="dg"> och ingen annanstans, så att ett et-tecken som var menat som et-tecken förblev ett. Allt utanför den listan rapporterades och lämnades orört i stället för att gissas. Alla 81 rader rättades på alla språk; de enda förekomster som finns kvar i bloggen är de som citeras med avsikt i det här inlägget.

Den allmänna lärdomen

Varje automatisk kontroll i det här projektet mäter något numeriskt, eftersom siffror är vad ett program kan jämföra. Ingen av dem kan se att en bild har blivit nonsens, att en ruta är tom eller att ett ord är utskrivet där en symbol hör hemma.

Regeln som kom ut av det är därför kort: efter varje ändring i ett diagram, rendera ett och titta på det, på det språk som behöver mest utrymme. Den har nu fångat två saker som ingen mätning kunde — den här, och en tom ruta som blev kvar när en bildtext flyttades ut ur den.

Annons