Лого vc.ru

Этот неловкий момент: 7 самых смешных багов

Этот неловкий момент: 7 самых смешных багов

Пользователи Quora в одном из обсуждений принялись собирать самые забавные баги, которые попадались им в процессе написания, тестирования или использования программ. ЦП выбрал лучшие из них, попутно добавляя интересные моменты из идентичной дискуссии на Stackoverflow.

Находка для шпиона

Камера видеонаблюдения переставала работать каждый раз, когда в комнату входил генеральный директор компании. Оказалось, что алгоритм распознавания изображений по-своему воспринимал клетчатую футболку, в которой ходил директор — конкретно её расцветка была софту не по зубам.

Туфли — мясо — кардиган

Разработчики платформы для создания интернет-магазинов столкнулись с ситуацией, когда вместо настоящих изображений товара иногда появлялись фотографии кусков сырого мяса.

Оказалось, что программное обеспечение в случае отсутствия нужной картинки на сервере заменяло её картинкой из демонстрационного магазина — в данном случае он оказался мясной лавкой.

Онлайн-торговля — это сложно

В самом начале работы Amazon покупатель мог заказать отрицательное количество книг. При этом на его банковскую карту зачислялась соответствующая сумма. Ошибка закралась из-за того, что Джефф Безос стремился разрабатывать и выпускать новые версии сервиса как можно быстрее, что, соответственно, приводило к багам. Он сам утверждает, что это один из его любимых багов: «Мы перечисляли покупателям стоимость книг, и очевидно, ждали, пока нам их доставят».

На заре становления интернет-магазинов в одном из них можно было вписать в графе «Количество товара» значение 0,1, что давало покупателю скидку в 90% (стоимость товара умножалась на те самые 0,1). В другом для хранения аутентификационных данных использовался файл cookie, в котором можно было сменить ID и совершать покупки от чужого лица.

Вверх тормашками

Армейский беспилотный летательный аппарат находился на этапе тестирования. В момент пересечения экватора одна из важнейших переменных изменила значение на противоположное, из-за чего самолётик перевернулся, чтобы стабилизироваться, и потерпел крушение.

Don't be evil

Один программист написал собственную блог-платформу и при переносе на новый сервер забыл защитить директорию со скриптами управления. Бот Google, который ходит по сайтам и индексирует их, зашёл на этот сайт, вошёл в панель управления и автоматически нажал на все ссылки, включая те, которые безвозвратно удаляли статьи (для этого, почему-то, не нужно было подтверждение).

Чувак, не парься

Программа Microsoft Bob (операционная система для начинающих) после третьего по счёту неверного ввода пароля интересовалась, не забыл ли пользователь свои данные для входа. Если же ответ был утвердительным, Bob просто-напросто предлагал придумать новый, который заменит забытый. Это значит, что любой пользователь может поменять пароль другому — и, таким образом, получить контроль над аккаунтом.

Вирус-неудачник

В 1991 году программист столкнулся с вирусом Sunday, который модифицирует исполняемый файл и в последний день недели запускается, чтобы уничтожить данные на диске. По какой-то причине этого не произошло, и программист решил разобраться — написал тестовый EXE-файл, скормил его вирусу и посмотрел, что будет. Оказалось, что авторы вируса при его разработке сделали так, что он должен запускаться в день номер 7, а нумерация дней идёт от 0 до 6, так что переменная никогда не принимала нужного значения.

Теги
Статьи по теме
Новый баг превратил Telegram в дейтинг
Как баг ВКонтакте вызвал массовую истерику у пользователей
0

Да очень просто, достаточно сделать чтобы поле "сумма" было знаковым и не делать проверки на знак.

0

Причём здесь знак? Вы понимайте как процессинг устроен?
Снятие и пополнение это две разные операции с разными требованиями к их осуществлению.
А пытаться их совместить это всё равно что написать функцию которая будет либо открывать фаил, либо удалять. А удалять она будет в том случае, если в пути фала дописать "!". Даже самый криворукий программист не будет этого делать, это влечёт за собой кучу проблем на пустой месте.

0

>Снятие и пополнение это две разные операции с разными требованиями к их осуществлению.
Это да, только при снятии передается некое число, которое должно быть списано с баланса и обычно оно просто отнимается от баланса пользователя (который является просто строчкой в базе). Если это число отрицательное (и в коде такая ситуация не рассматривается отдельно), то два минуса сложатся и получится плюс.
Какое-то время назад как раз такой баг попадался в одном проекте.

0

Это все так, если есть какой-то баланс, который хранится в вашей базе. Если оплата идет с карты, то там сумма не "просто отнимается от баланса", а запускается банковская транзакция. И эти транзакции для снятия и пополнения совсем разные, а не просто знаком отличаются.

Валерия, я думаю, что Вы рассуждаете о банковских операциях с сегодняшней точки зрения.
А представьте, как работал процессинг в 1995 году, когда amazon запустили свой сайт?
Да еще и в Америке?
Возможно, тогда достаточно было указать отрицательную сумму и вместо получения денег со счета происходило списание.
¯\_(ツ)_/¯

С Google ботом, который "нажал" все ссылки тоже весело. Откройте доступ в админку ЦП ботуЮ будет ли он "нажимать" на все ссылки и публиковать пустые материалы (или что-то типо того)?

Публиковать пустые - нет, для этого как правило нужно отправить форму POST-ом. А вот если удаление сделать GET-запросом и проставить соответствующие ссылки, то такое вполне реально.

Будет, если админка написана так, что при заходе по ссылке сразу выполняется действие.

Встречалась мне такая админка. Раз в месяц бот алексии стабильно вытирал все новости просто инкрементируя ID.

0

> При этом на его банковскую карту зачислялась соответствующая сумма.
Вот это сказка для несведущих на самом деле.

С беспилотниками было не так.
С ними было целых три истории, через экватор дном к верху, над мертвым морем дном кверху (вот тут как раз отрицательной стала высота) и - мое любимое - до линии смены дат и обратно.

Второй сюжет стал уже своего рода легендой среди сотрудников службы техподдержки Motorola и, говорят, вошел в программу учебного курса по микроконтроллерам этой компании. Все, наверное, знают, что Motorola является одним из главных поставщиков радиоэлектронного оборудования для военно-промышленного комплекса США. Представляющая же для нас интерес история произошла в Израиле во время тестовых полетов новых по тем временам истребителей F-16. Самолет делал облет местности на низкой высоте, и, когда машина приближалась к акватории Мертвого моря, бортовая навигационная система неожиданно перезагрузилась. Сильно озадаченный пилот посадил машину. Штаб испытаний тут же связался с фирмой-изготовителем и потребовал срочно прислать специалистов.

"Скорая помощь" примчалась незамедлительно, но понять, в чем дело, сразу не смогла. Все наземные тесты проходили прекрасно, однако как только самолет поднимался в воздух, система перезагружалась. Пилоты начали нервничать, поскольку обстановка на границах Израиля неспокойная, а летать с неисправным навигационным оборудованием вдоль границ, за которыми то и дело появляются люди с ракетами "земля-воздух", готовыми долбануть по всему, что движется, - занятие не из приятных… И тут, наконец, один из специалистов-электронщиков все-таки разгрыз орешек. Уровень Мертвого моря находится на 400 метров ниже уровня мирового океана. И всякий раз, когда курс F-16 пересекал уровень вод мирового океана, бортовая навигационная система выполняла операцию деления на ноль, из-за этого обрушивалась и делала аварийную перезагрузку.

C ibash.org.ru:
exLEND: я в школьном возрасте писал "вирус" который стирает последние несколько файлов на диске периодически. расчёт был на сейвы и геймеров.
exLEND: ну, ты догадываешься, что произошло. до релиза так и не дошло

Про амазон не фейк, известная фишка, много где разбиралась.

Про кнопки-удалялки тоже не фейк, до сих пор такое встречается, когда кнопки реализованы через GET-запросы без подтверждений, а индексаторы как раз и дёргают все эти GET-запросы.

Прямой эфир
Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления