Kontakt z pomocą

Odpowiadamy e-mailem, zwykle w ciągu dwóch dni.

Google reCAPTCHA sprawdza to zgłoszenie pod kątem nadużyć; dane trafiają do Google. Skrypt ładuje się dopiero po otwarciu formularza.

← Wszystkie wpisy

Jedno wyjście za dużo w ośmiu diagramach

Przez pewien czas osiem wpisów tego bloga pokazywało w środku zdania siedem znaków —, i to w diagramach. Nie myślnik. Sam tekst. Od tego czasu jest to naprawione we wszystkich językach.

81 wierszy, 91 wystąpień. W tekście tych samych ośmiu wpisów: ani jedno.

wiersze diagramów, które narysowały encję zamiast myślnika jedenaście języków Liczenie bez ciasteczka middot, mdash Zabierz swoje dane mdash Licznik przez tag managera mdash Twój licznik na stronie HTTPS mdash Licznik w profilu na Chomikuj mdash Długi adres położył licznik mdash Dlaczego lista wykluczeń nie jest hashowana mdash Bufor, który żyje w pamięci mdash 81 wierszy w 8 wpisach, 91 wystąpień — a w tekście ani jedno kontrola szerokości widziała je jako za szerokie, nigdy jako błędne

Jedno maskowanie za dużo

Diagramy to osadzone SVG, wpisane w treść artykułu. Podpis, który chce myślnika, niesie —, a przeglądarka robi z tego myślnik, dokładnie tak jak w akapicie.

Zapisane było jednak —. Przeglądarka posłusznie zrobiła z tego znaki, które literują encję, i je narysowała. Tekst został nietknięty, bo nigdy nie przeszedł przez to, co dodawało dodatkowe maskowanie; przechodziły tylko podpisy, i tylko w tych wpisach, których podpisy powstały wtedy.

Przyczyna jest drobna i nudna. Warte zapisania jest to, dlaczego stała na widoku tak długo i co ją zakończyło.

Kontrola go widziała i mówiła co innego

Jest kontrola, która mierzy, czy podpis diagramu mieści się w swoim obrazku. Zgłaszała te podpisy od dni — jako za szerokie.

Czym rzeczywiście były. Podpis rysujący siedem znaków zamiast jednego jest jakieś czterdzieści pięć pikseli szerszy niż powinien, więc pomiar się zgadzał i zgłoszenie się zgadzało. Nie zgadzał się wniosek, jaki czytelnik takiego zgłoszenia wyciąga. Liczba mówiła, że geometria jest za ciasna. Prawda była taka, że tekst nie był tym, na co wyglądał.

Taki jest kształt tej sprawy. Kontrola odpowiada na pytanie, które dostała, i nie potrafi zgłosić, że pytanie było złe. Nic tu nie zostało źle zmierzone; pomiar dotyczył po prostu innego problemu niż ten, na który wyglądał.

Co go znalazło

Wyrenderowanie jednego diagramu i spojrzenie na niego. Chromium bez okna, jeden zrzut ekranu, dziesięć sekund. Encja stała w trzecim wierszu obrazka, literami tej samej wielkości co wszystko inne.

Naprawą była migracja zamieniająca &amp; na &, dla ustalonej listy nazw encji i wyłącznie wewnątrz bloków <svg class="dg">, żeby ampersand mający być ampersandem nim pozostał. Cokolwiek spoza listy było zgłaszane i zostawiane w spokoju, a nie zgadywane. Wszystkie 81 wierszy poprawiono w każdym języku; w blogu zostały tylko te wystąpienia, które ten wpis cytuje celowo.

Co się uogólnia

Każda automatyczna kontrola w tym projekcie mierzy coś liczbowego, bo liczby są tym, co program potrafi porównać. Żadna nie widzi, że obrazek zamienił się w bezsens, że pole stoi puste albo że słowo jest rozpisane tam, gdzie należy się znak.

Reguła, która z tego wyszła, jest krótka: po każdej zmianie w diagramie wyrenderować jeden i na niego spojrzeć, w języku, który potrzebuje najwięcej miejsca. Złapała już dwie rzeczy, których żaden pomiar złapać nie mógł — ten przypadek i puste pole, które zostało po wyciągnięciu z niego podpisu.

Reklama