Юмористический детектив о том, как нам подсунули свинью котлеты. Он не то что основан на реальных событиях, - это их подробное описание, без доли вымысла. Только отметок времени нет, для большей детализации. Но могу сказать, что на всё про всё ушло часа 3.
Вероятно, заголовок сбивает с толку, может показаться что это какой-то кликбейт. Но так вы сможете себе лучше представить мои эмоции, когда у меня спросили: «А откуда у нас в проекте котлеты?»
Понятное дело, что проект бы вряд ли от этого погиб, но, когда непонятные ошибки выпрыгивают накануне приёмо-сдаточных испытаний – относишься к ним соответственно. Да и как посмотреть в глаза заказчику, когда у тебя «котлеты»?!
Лучше один раз увидеть
Объяснить словами о каких котлетах идёт речь, сложно. Это надо видеть. Я не стал уточнять с макарошками или с пюрешкой, а пошёл смотреть на них. И таки да, действительно котлеты.
Появляются они в браузере, когда открываешь таблицу с данными для просмотра. Данные в таблице для удобства можно фильтровать, сортировать, и вот в настройках фильтра как раз и появились эти пресловутые котлеты.
У меня всё работает
И при этом все сразу подумали, что это разработчики так подшучивают, и занесли ради теста какую-то белиберду, а потом забыли удалить. Конечно, я пошел проверить на своём компьютере, и… никаких котлет.
Т.е. что удалить были должны, - удалили. Откуда же котлеты там? Ну может где-то когда-то что-то закэшировалось браузером… кэш очистили – не помогло, зашли в режиме инкогнито – котлеты исчезли. Ну вроде нормально. На других компьютерах проблема не воспроизвелась.
Поиск по проекту слова «котлеты» результата не принёс. Ответственности на себя ни одна террористическая организация не взяла, все лишь удивлённо развели руками.
Котлеты, котлеты, котлеты
Через некоторое время второй человек сообщает о проблеме. Да как так-то?! Попивая чай в чайной, я предположил: а что если дело в каком-то плагине?!
Т.е. на тех компьютерах, где ошибка не воспроизводится, этого плагина просто нет. Осталось его вычислить. И подозрение упало на расширение «Adobe Acrobat: инструменты для редактирования PDF» - только он был установлен на обоих компьютерах, где ошибка проявляется. И вот я уже готов предъявить ему обвинение, как выясняется, что и на тех компьютерах, где ошибки нет, всё тот же плагин присутствует. Мимо.
Но предположение о том, что дело не в кэше и не в чьих-то шутках, было настолько соблазнительным, что отступиться от него было сложно. Если дело не в плагине, значит виноват браузер.
Попался
Ошибки только там, где применяется Google Chrome. Хм. Встроенный переводчик? Не знаю почему, но это первое что пришло в голову.
Переключая язык, ошибку удалось воспроизвести. И котлетами он не ограничился.
Другие замеченные проблемы:
Было |
Стало |
Наименование |
Название |
Упорядочить по возрастанию |
Упорядочить по возрасту |
Вбиваем в переводчик, чтобы убедиться, и правда котлеты.
Так кто же убийца
Причина оказалась банальна, ошибка в index.html
<html lang="en">
После такого пора и на обед, но на котлеты смотреть уже не мог – насытился.
Мораль
Поспешишь – людей насмешишь.
Думаю, это одна из тех историй, о которой смешно вспоминать. Потому и написал о ней на Хабр, этакая байка, одна из тех, которые можно травить за кружкой чая или рассказывать джунам. Да и про котлеты на Хабре, наверно, не писали ещё. А вспомнить смешно потому, что всё быстро и благополучно кончилось, - а вот пока ошибку не нашли и не понимали, откуда эти котлеты лезут, – было совсем не до смеха.
Мелкие ошибки совершают все, а дьявол кроется в мелочах. Будьте внимательны. Удачи!
Комментарии (97)
volkanin
11.02.2022 08:58+7В прошлом году на портале Госуслуг в форме подачи заявлений абитуриентом была точно такая же проблема, и по той же причине.
Myxach
11.02.2022 09:23+8Ну почему такой перевод то, как вообще переводчик до такого дошёл
Tkachenko-Ivan Автор
11.02.2022 09:32+1О, тут кроме гугла ответить ни кто не сможет. Хотя, когда-то натыкался на публикации о том как работает их переводчик
rat1
12.02.2022 15:26+1Ну как же? В переводчике есть возможность оценить перевод и предложить свой вариант, который будет использоваться для машинного обучения. Видимо кто-то накрутил.
Aquahawk
11.02.2022 09:34+16А на этот вопрос, боюсь, уже никто никогда не ответит. Ибо то, как Artificial Idiot пришёл к этой мысли, мы не узнаем. Вы же обратили внимание на то, что это попытка перевести слово "содержит" с английского на русский?
ru1z
11.02.2022 10:25+9Потыкался в переводчике и проверил, действительно только с некоторых языков такой котлетный «перевод» (или еще хуже), с других бывает немного искажает.
прим.
FanatPHP
11.02.2022 10:29+9Там вроде раньше была кнопочка "предложить свой вариант" или что-то вроде того.
Одно исправление конечно не сработает, но скоординированные действия кучки малолетних долботрясов вполне могли заставить жестяные мозги исправить перевод.
Vsevo10d
11.02.2022 11:35+13В 18-м году постили всякую смехоту с рандомно вылезающими вещами, я вот такое заскринил например:
domix32
11.02.2022 12:07+2Нейронные сетки же. Одно время по интернету ходили всякие приколы, когда на каком-нибудь малоиспользуемом языке вбивали "ААААААААААААААААААААААААААА" разной длины, а на выходе получали некоторую шизофазию. Для русского языка соотвествие оказывается еще проще.
Bedal
11.02.2022 13:59там есть кнопка «предложить свой перевод». Нередко этим пользовалась для подобных развлечений. Обычно это не укореняется, мало ли что один человек ввёл. Но, видимо, кое-что срабатывает.
Wesha
11.02.2022 21:28Обычно это не укореняется, мало ли что один человек ввёл.
Есть такое слово — флэшмоб. Организованная группа людей ради лулзов что угодно укоренит — может, даже передачу России под суверенитет Японии :)
sinneren
11.02.2022 09:37+32Вот устраиваешься на работу, думаешь, щас как будут пилить крутые фичи, шикарный ux\ui, буду делать всё модно, современно, оптимизированно, интересные задачи и тд и тп, а в итоге целый день исследуешь откровенно шизоидный баг.
PsihXMak
11.02.2022 11:10+2Это google translate. У них постоянно такая фигня с переводом.
Tkachenko-Ivan Автор
11.02.2022 11:41+5Тут ситуация хуже, когда язык оригинала отличается от языка перевода — это заметно невооружённым взглядом. А когда язык оригинала русский и он пытается перевести его с английского на русский, — тут становится непонятно что происходит.
namikiri
11.02.2022 11:19+11Именно поэтому переводчик, равно как и другие расширения, излишне любящие залезть в контент — зло. Хотите что-то перевести — не поленитесь и скопируйте текст в переводчик, открытый в отдельной вкладке.
Saiv46
11.02.2022 12:03+31<html lang="ru" translate="no"> <meta name="google" content="notranslate">
Оказывается автоматический перевод в Хроме можно отключить двумя способами
ifap
11.02.2022 14:42+2А зачем? ИМХО те, кто пользуется любыми автоматическими улучшайзерами, должны пройти путем боли и страдания до его конца (отключения оных).
Irker
11.02.2022 15:17+3На одном проекте тоже пришлось добавить эти строки, потому что не все проекты созданы для пользователей. Этот встроенный перевод от Хрома любит так же модифицировать DOM и у нас страдали интерфейсы для внешних наемных работников. И на какой-то раз разбираясь почему у конкретного работника происходит в интерфейсе аномалия, вместо фразы "проверьте, что у вас выключен перевод сайта", гораздо проще стало его просто выключить глобально для всех.
ifap
11.02.2022 15:22-5Тем самым Вы поощрили пользователей к ламерству, а Гугл - к дальнейшему произвольному вмешательству в авторский код. Текущую проблему при этом решили, да.
Irker
11.02.2022 15:34+8Вы всё же не поняли. Еще раз: "не все проекты созданы для пользователей".
Вы предлагаете бизнесу тратить каждый раз время менеджеров и разработчиков на определение причины очередной непонятной проблемы в работе важного для компании интерфейса. И всё ради только того, чтобы наказать работника-ламера и погрозить Гуглу кулаком.Или может быть, мы всё-таки правильно поступили?
ifap
11.02.2022 16:00+5Правильно или нет, можете решить только Вы сами, я лишь высказываю то мнение, что не встречая отпора Гугл бодро идет к формуле "Интернет = Гугл". HTML от Гугла мы уже получили.
FTOH
11.02.2022 21:13Можно также отключить перевод только для определённых элементов с помощью класса notranslate.
nickolaym
12.02.2022 06:56+1Оторвать руку тому, кто анально огораживает свою страницу от перевода (`translate="no"`) и кто вообще придумал этот атрибут.
Вот захочет англичанин прочитать русский текст, а ему хренушки. Зачем?
Хорошо, что можно залезть руками (или экстеншеном) в код и оторвать атрибут. Но это - тем, кто умеет.
Wesha
12.02.2022 07:13Вот захочет англичанин прочитать русский текст, а ему хренушки.
Уважаемый господин Джон Уотсон, не выделывайтесь, а слушайте свою любимую песню "Yesterday"!
spc
11.02.2022 13:42+9Он, оказывается, регистрозависмый
Ag-None
11.02.2022 14:21+11(Возможно незначительное содержание ковров)
PsihXMak
11.02.2022 14:39+29Ситуация по немногу проясняется
SilverHorse
11.02.2022 14:50+9Почему в двух котлетах появились котята??? О_О
gekt0r
11.02.2022 16:07+8Таки тема про пирожки с котятами выходит на новый уровень
gekt0r
11.02.2022 16:09+8Ну а кучка котлеток в чём измеряется?
Правильно! В корзинках!drWhy
11.02.2022 16:22+27Тема математических операций не раскрыта.
содержит + содержит = лапы +короткие
содержит — содержит = ковры — содержит
содержит * содержит = лапы * содержит
содержит / содержит = маки /маски
содержит · содержит = маки · маки
содержит ≠ содержит = лапы ≠ лапы (в чём-то даже логично)
содержит ≈ содержит = лапы ≈ лапы
содержит ⩽ содержит = лапы ⩽ лапки (моё любимое)
содержит √ содержит = √ содержит
содержит! содержит = коты! котлеты (тут уже Хабраредактор пробел перед "!" откусил)
Фух, залипательно. Оказывается, при определённой настойчивости можно формализовать и вычислить первопричину.
Возможно, Сергею Брину с детства запомнился мультфильм про котёнка по имени Гав, спрятавшего котлету. Или просто АльфаГо выгуливают на просторах.rogoz
11.02.2022 22:08+5содержит = котлеты содержит содержит = котенок (содержит)x3 = киска (содержит)x4 = корзина (содержит)x5 = корзина ... (содержит)x8 = корзина (содержит)x9 = маленькие (содержит)x10 = маленькие (содержит)x11 = нет (содержит)x12 = нет ... (содержит)x16 = нет (содержит)x17 = маленькие (содержит)x18 = ошибки ... (содержит)x22 = ошибки (содержит)x23 = все (содержит)x24 = все (содержит)x25 = все котлеты (содержит)x26 = все котенок (содержит)x27 = все киска (содержит)x28 = все корзина (содержит)x33 = все маленькие
Healer
11.02.2022 13:45Есть ли смысл предложить в гуглопереводчике исправление? Потому что если это исправить, то другие люди когда встетятся с такой проблемой смогут найти эту статью про котлеты и понять в чём причина такого поведения.
Но если есть смысл, то давайте вместе предложим исправление гуглу https://translate.google.com/?sl=en&tl=ru&text=содержит
me21
11.02.2022 15:44Им проверку бы добавить, что в переводимом тексте нет символов других языков.
drWhy
11.02.2022 16:49+2Немцы за умлаут обидятся.
me21
11.02.2022 17:28Почему? Если перевод с английского, то откуда там умлауты и кириллица?
И наоборот, если перевод с русского, то не должно быть латиницы.
Точнее, если слова не на том алфавите есть, то они не переводятся, а остаются как есть.
drWhy
11.02.2022 21:13Умлауты отличают немецкий алфавит от латиницы. Пока во вводимом тексте их нет, можно трактовать его как английский. То же с португальским и другими. Как их различать?
Chamie
11.02.2022 22:26+1O que há de errado com o português? Мы же не детектированием языка занимаемся, а определением заведомо не относящихся к языку символов. Вот другое дело, что заимствованные слова на вариантах латиницы в английском вполне могут писаться как в оригинале.
AlexMih
11.02.2022 20:05+4Вряд ли согласятся, для них это не баг, а фича. Если пользователь в "английское слово" намешал своих букв, то Гугль прежде всего пытается это исправить - сделать транслитерацию. Хотя иногда это может полностью исказить смысл:
Lord_Ahriman
12.02.2022 08:15+3Здесь нет никакого искажения смысла, как ни странно. Вы написали по-русски "ангина", указав направление перевода "Английский→Русский". Гугл честно транслитерировал "ангина" как "angina" и честно выдал вам перевод: angina это, действительно, именно что стенокардия (один из известных ложных друзей переводчика, хотя даже в русском языке есть термины "ангинальные боли" и "антиангинальный препарат", и медики прекрасно понимают, что это именно про боли от ишемии миокарда, а не воспаленные гланды и горло).
chinakz
11.02.2022 16:52А на гугле нет переводчика сайта ,а вот раньше был .
Яндекс тоже весело переводит.
Вы сами можете помочь в переводе текста когда тренируетесь ,там есть градация ,лёгкий ,средний и затруднительный перевод .Таким волонтёрам ни гугл ,ни яндекс ничего не предлагает .
Fullmoon
11.02.2022 17:14+2А на гугле нет переводчика сайта ,а вот раньше был .
Он и сейчас есть, просто интерфейс объединили.. Вставляешь ссылку в окно переводчика слева — справа он выдаёт ссылку на переведённый сайт.
chinakz
12.02.2022 20:26+1А у меня IQ отрицательный ,я не умею в интеллектуальные задачи, там им наверное стыдно за интуитивный интерфейс ,можно в это окошко и символы пихать ?
Iskatel_S
11.02.2022 19:18+1Над гуглтранслейтом они угорают. Вы видимо, что такое промт забыли.
Tkachenko-Ivan Автор
11.02.2022 19:51+6Угорают же не над качеством перевода, а над его попытками предложить хоть какой-то вариант перевода всегда, даже когда переводить то нечего. Это новый уровень.
legolegs
11.02.2022 23:50+1Да лучше с тех пор не стало. Косяки только стали лучше прятаться в переводе.
Впрочем, тот самый промт по-прежнему существует в виде translate.ru, я иногда им перевожу.
East_Star
11.02.2022 19:40+8Когда я работал в хостинге в саппорте, мне позвонил пользователь, у которого при заходе на сайт стала показываться ошибка "Плохие Ворота" в яндекс браузере. Я тоже не сразу сориентировался)
Tkachenko-Ivan Автор
11.02.2022 19:58+5Фраза «смотреть как баран на новые ворота» заиграла новыми красками
Format-X22
12.02.2022 01:50+3А иногда в самих сервисах гугла странные переводы (да и в логике). Иногда просто где-то что-то не влезает в кнопку, иногда чуть смысл меняется, но иногда... до сих пор помню в настройках рекапчи кноку "ДА" над списком доменов, вообще без пояснений, которая при нажатии удаляла аккаунт целиком.
ibrin
12.02.2022 05:33+2Это же дичь какая-то, браузеры лезут в ДОМ без спросу. Процессы лезут в интернет тоже как попало. Их только файервол останавливает и предлагает выбрать действие, а они сами должны при первом коннекте представляться и спрашивать, типа "я процесс такой-то, нужен для того-то, можно мне интернета хлебнуть для таких-то дел?"
Tkachenko-Ivan Автор
12.02.2022 10:22+4Ты пускаешь браузеры в свой ДОМ, а они меняют то, что он содержит на котлеты. Не доверяйте браузерам.
Foduch
12.02.2022 09:03+2В angular material иконках на Яндекс браузере такая проблема была. Пользователи жаловались, что вместо иконок показывает текст огромным шрифтом и ничего не разобрать. А дело в том, что в html эти иконки на самом деле текст и ангуляр их сам заменяет на иконки. А Яндекс браузер почему-то считал, что нужно переводить этот текст
Myxach
12.02.2022 11:16-1Звучит как вина angular'a, а не яндекса...честно говоря
mayorovp
12.02.2022 12:31Звучит как нечто очень странное, потому что иконки в Angular Material UI устроены по-другому: с точки зрения Ангуляра они компоненты, а не текст, и работа с ними идёт как с компонентами.
Возможно, Foduch имел в виду, что в DOM (не html!) был просто текст, который заменялся на иконку шрифтом (а не ангуляром!).
CRMguru
Была похожая история, но со сторонним сервисом - вылез интересный фильтр "дора дура", откуда он появился и как это исправили кануло в лету, но до сих пор интересно, как это произошло в рабочей версии