Перейти до вмісту

Блог ·

Коли назва не може бути заголовком

Правило, що назва статті дорівнює її заголовкові, стикається з межею у шістдесят символів. Пʼятьом мовам знадобився взірець, що вже існував.

Автор: Provibr

Одна з наших статей несе в назві слово, що має значення: вразливість. Це є текстом про сканер, що надсилає нуль байтів, і без того слова назва описує іншу річ.

Пʼятьма з девʼяти мов того слова не було. Не в тілі, а в назві, а отже і у вкладці браузера, у результаті пошуку і в передперегляді для соцмереж. Завданням було повернути його в усі девʼять.

Це виявилося неможливим у тій формі, у якій його записали, і цікавим є те, чому.

Два правила, що не можуть справджуватися обидва

Настанова була такою: назва, назва для соцмереж і заголовок є одним рядком. Кажіть те саме в усіх трьох місцях. Це є добрим правилом, і саме його ми записали після того, як читач знайшов посилання, що обіцяло одне, і сторінку, що стверджувала інше.

Другим правилом є смуга довжини. Породжена назва сторінки має бути від двадцяти до шістдесяти символів разом із суфіксом, бо саме стільки вміщується, перш ніж результат пошуку її обріже. Ця смуга не є вподобанням; цілий корпус із 850 породжених файлів сидів усередині неї, і поза нею не було нічого.

Поверніть відсутнє слово, і повний заголовок має 68 символів нідерландською та італійською, 70 португальською, 71 іспанською та французькою і 75 румунською. Англійська й німецька лягають рівно на 60, і цей збіг варто помітити: дві мови, де чесний заголовок випадково вміщується, є водночас тими двома, де правило виглядає працездатним.

Тож одне з двох правил мусило поступитися, і жодне не є необовʼязковим. Заголовок мусить називати предмет, а назва мусить уміщуватися.

Взірець уже був у домі

Розвʼязок не вигадали заради цього. З 850 породжених статей 197 уже мали назву, відмінну від заголовка. Для статті це є звичайною річчю: заголовок є реченням, а назва є ярликом.

Французька вже робила це саме на цій статті. Її назва читається як ярлик із двокрапкою, а заголовок як питання, на яке відповідає тіло. Ніхто не записував цього як рішення; це було просто тим, що хтось написав, коли речення не вмістилося.

Тож виправленням є те, що пʼять назв переймають форму, якою вже користувалися майже чверть корпусу і одна з девʼяти мов, а заголовки несуть повне речення. Слово присутнє в назві, у назві для соцмереж і в заголовку, і щоб бути тим самим твердженням, йому не конче бути тим самим рядком в усіх трьох.

Правило вціліло, але потребує переформулювання: справджуватися має те, що читач, який прийшов за посиланням, упізнає сторінку. Побайтова рівність була зручним способом це забезпечити тими мовами, де воно випадково було можливим.

Чому наявна сторожа не могла цього знайти

Ми щойно збудували сторожу саме для цієї родини проблем: текст посилання, що називає статтю інакше, ніж власна назва статті. Тут вона була зеленою, і зеленою вона була зі структурної причини, а не з випадковості.

Це є дефектом назви. Назви втратили слово, а тексти посилань, що на них указували, укоротили задля відповідності під час раунду, що будував сторожу. Обидва боки погоджувалися. Порівняння двох речей, які змінили разом, не може побачити, що хибними є обидві.

Знайшло це керування версіями. Коміт, що виправляв тексти посилань, показував три з них укороченими, нідерландською, італійською та португальською. Звіт згадував лише два. Читання різниці, а не підсумку, є тим, що перетворило завдання з двох пунктів на справжню форму проблеми.

Сторожа, що прибрала за нами

Наприкінці цього є мала послідовність, яку варто записати, бо це є сторожею, що поводиться краще за людей, які нею користуються.

Після зміни назв сторожа назв посилань спрацювала один раз, на нідерландському посиланні до іншої статті. Це виглядало як побічна шкода, і для нього записали виняток із причиною.

Тоді назви поправили ще раз, щоб увести їх у смугу довжини, і знахідка зникла. Виняток тепер був мертвим: рядком у списку дозволеного, що не збігається ні з чим.

У тій сторожі є тест, чиєю єдиною роботою є зазнати невдачі, коли виняток ніколи не спрацьовує. Він зазнав невдачі, і рядок пішов геть. Кінцева різниця проти каталогу сторожі є порожньою, а це є найсильнішим доступним твердженням: виправлення не потребувало жодної зміни правил.

Список дозволеного, що лише росте, є документом усього, від чого хтось коли-небудь відступився. Список дозволеного, що вилучає власні мертві записи, є списком, який ви ще зможете прочитати через рік.

Дрібниці, вивчені мимохідь

Двокрапка в назві є формою, а не рішенням, яке зміряли. Вона читається радше як ярлик, ніж як речення, вона добре вкорочує, і французька вже її обрала. Це записано як вибір, зроблений за формою, бо вдавати, ніби він вийшов із вимірювання, було б нечесно щодо того, які частини цього зміряли, а які є смаком.

Смуга довжини є обмеженням на кожну мову, навіть коли виглядає загальним. Те саме речення є на вісім символів довшим однією мовою і на пʼятнадцять іншою, і будь-яке правило, висловлене як «той самий рядок усюди», зламається першим тією мовою, що є найбагатослівнішою. Тут такою мовою зазвичай є румунська.

А завдання, записане настановою на два рядки, може містити суперечність, що виявляється лише тоді, коли ви беретеся вдовольнити обидві половини. Правильною відповіддю не є вдовольнити ту половину, яку легше перевірити.

Що ми б записали

  1. Коли два правила стикаються, хибним не є жодне з них. Зʼясуйте, яке з них є гарантією, а яке було зручним способом її забезпечити.
  2. Побайтова рівність є замінником упізнаваності. Назвіть річ, якої ви справді хочете.
  3. Шукайте взірець у корпусі, перш ніж вигадувати його. Наш уже був у 197 з 850 файлів.
  4. Одна мова, що вже так робить, є свідченням, навіть коли ніхто не записав цього як рішення.
  5. Сторожа не може побачити дефекту там, де обидва боки змінено разом. Згода не є правильністю.
  6. Читайте коміт, а не підсумок. У різниці було три записи там, де у звіті було два.
  7. Тест, що зазнає невдачі на мертвому записі списку дозволеного, прибирає за вами. Наш вилучив виняток, який ми щойно додали.
  8. Порожня різниця проти ваших правил є найсильнішим наслідком виправлення. Вона означає, що правила були слушними.
  9. Межі довжини є на кожну мову. Те саме речення десь є на пʼятнадцять символів довшим.
  10. Кажіть, які рішення зміряли, а які були формою. Змішування коштує зміряним їхньої довіри.

Для ясності про те, чим це є: збірка вмісту породила 850 статей без жодного застереження там, де раніше давала пʼять, перевірка вмісту 851 із 851 породжених файлів байт у байт тотожних, набір вебу зеленим на 4594, перевірка типів чистою, лінтер без помилок, побайтове сканування 25 зачеплених файлів незмінним за кожною лічбою, різниця рівно 174 рядки всередину і 174 геть, сканування верстки 27 із 27 на 390 пікселях по статті девʼятьма мовами, покажчик блогу 54 із 54 і шість українських статей 18 із 18 проти виробничої збірки. Не доведено: досі є один читач на мову, а вибір форми з двокрапкою є рішенням щодо форми, а не вимірюванням.

Із платформної роботи над Provibr. Звідки взялося правило про назви й посилання, описано в Три вади, яких не міг побачити жоден скрипт, а як сторожа, що його забезпечує, відрізняє вкорочення від підміни, описано в Дві назви для однієї статті.

Почніть з одного хоста й одного агента

Створіть обліковий запис, встановіть агента однією командою та підключіть свій перший хост Proxmox. Пробний період триває 14 днів і не потребує платіжних даних.