>
>
Как Apple и другие крупные компании нас…

Ульяна Хромченко
Статей: 6

Как Apple и другие крупные компании настиг программный баг

Сегодня мы отобрали свежие случаи программных ошибок, чтобы вы могли немного отвлечься и, возможно, узнать что-то новенькое. Если вам интересно узнать, как программисту удалось сломать Интернет по всему миру, удалив крошечный фрагмент кода, и прочитать про другие неочевидные на первый взгляд ошибки, то эта статья для вас!

Появление "error" на экране монитора может напугать даже опытного разработчика. Однако все рано или поздно сталкиваются с этим. Прочитав эту статью, вы убедитесь в том, что облажаться может каждый, и ошибки – не повод расстраиваться. Ранее мы публиковали что-то похожее, истории о новогодних багах – одна из таких. В конце статьи мы оставили для вас ещё больше интересных ссылок.

Чилийская адаптация шоу "Кто хочет стать миллионером"

Здесь речь пойдёт о случайной ошибке, которая сделала жителя Чили миллионером. В мае 2022 года мужчине в Чили как обычно начислили зарплату, только в этот раз с неожиданной премией (даже для самого начальника). Начисленная сумма составляла 165 миллионов чилийских песо (примерно 11 миллионов рублей), что в 330 раз превысило его зарплату.

Работник сообщил об ошибке заместителю руководителя. Тот попросил его вернуть банку случайно начисленные деньги. И что вы думаете? Работник вернул деньги и история на этом закончилась? Как бы не так.

Да, мужчина пообещал начальнику вернуть сумму в банк. Однако спустя сутки он исчез. Через два дня он объявился и вновь пообещал вернуть сумму в ближайшее время. Могу предположить, что свалившееся богатство не давало ему покоя :). Согласно информации в местной газете, через некоторое время работник отправил заявление об увольнении через своего адвоката и исчез навсегда.

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

Как потребить за месяц электричество на 50 миллионов фунтов стерлингов?

Супружескую пару из Ланкашира поверг в шок их ежемесячный счет за электричество, который увеличился с 87 фунтов стерлингов до 53 480 062. "У меня не было даже таких денег на счету. Мы с супругой были шокированы", – рассказал мистер Бразертон, 63-летний бухгалтер.

Найджелу и Линде Бразертон на днях установили новый счётчик электроэнергии, но электрик ошибся и подсоединил провода неправильно. Из-за этого электричество автоматически подсчитали за всю улицу. Их компания по снабжению электроэнергией видимо не заметила этого, и счёт был отправлен их банку, который списывал деньги автоматически.

"Моя жена волновалась, что из-за этого наша кредитная история будет испорчена", – рассказал мистер Бразертон. Оправившись от шока, пара связалась с компанией по снабжению электроэнергией, те извинились и пообещали исправить ситуацию.

Первые сбои спустя месяц релиза новой модели iPhone

Спустя неделю после выхода iPhone 14 Pro, некоторые владельцы новой модели сообщили о проблеме с камерой при её открытии в TikTok, Instagram и Snapchat.

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

По словам Apple, это ошибка в программном обеспечении iPhone, а не в сторонних приложениях. Официальный представитель Apple Алекс Киршнер по почте заявил The Verge, американскому сайту о современных технологиях, что компания "осведомлена о проблеме, и ошибка будет устранена на следующей неделе". Однако Apple не объяснила, что именно вызвало ошибку и почему с этой проблемой сталкиваются не все.

В новой модели iPhone 14, Apple представила новую функцию — детектор ДТП. Ваш iPhone 14 способен распознать серьёзную автомобильную аварию, и в случае возникновения происшествия телефон поможет вам связаться со службами экстренной помощи. Впечатляюще. Но как насчёт ДТП на американских горках? Реальная ситуация или бред сумасшедшего? Что ж, iPhone 14 уверен, что это возможно.

Функция детектора ДТП вызвала ложную тревогу и направила сигнал сотрудникам экстренных служб рядом с парком развлечений Кингс-Айленд в Цинциннати. Такой же сбой был обнаружен и у пользователей новеньких часов Apple Watch 8. Решение проблемы у Apple довольно простое: перевести iPhone 14 и Apple Watch 8 в режим полёта перед аттракционном. Что же, тогда насущный вопрос: стоит ли ожидать появления в парке развлечений предупреждающих табличек – "выключите свои айфоны, прежде чем садиться на американские горки"?

Будем надеяться, что больше не будет никаких странных сбоев и ещё чего-либо, что могло бы испортить безупречную репутацию компании.

Разработчик Windows – похититель Рождества (2022)

В канун Нового 2022 года команда Windows решила поздравить своих подписчиков в Twitter с наступающим Новым годом. Официальный аккаунт разработчика Windows написал в Twitter следующее:

Код написан на С#. Приложение должно было работать по следующему принципу: если вы запустите его ровно в полночь, в канун Нового года, вы получите сообщение "С Новым годом!", а в любое другое время, он покажет вам "Сейчас ещё 2021". Механизм вроде простой, однако что-то пошло не так.

А именно то, что вы можете получить новогоднее поздравление ровно в полночь и ни секундой ранее или позднее. Помимо этого, даже если уже 2022 год, приложение покажет, что сейчас всё ещё 2021 год. Оно работает только в полночь...

Разработчик Windows удалил сразу же твит, как только заметил ошибку. Если вам интересно подробнее изучить проблемы в этом коде, посмотрите анализ Скотта Хансельмана, он всё подробно объясняет. Особенно рекомендую начинающим разработчикам.

Неразбериха с "left-pad", или как программист сломал Интернет, удалив крошечный фрагмент кода

В марте 2016 года Азер Кочулу, программист из Окленда, штат Калифорния, сломал Интернет по всему миру, удалив 11 строк кода. Кочулу опубликовал свой код на npm, популярном инструменте среди JavaScript разработчиков, которым пользуются для поиска и установки программного обеспечения с открытым исходным кодом.

Кочулу написал проект, именовав его незамысловатым словом "Kik". Программист хотел, чтобы этот проект помог программистам создавать шаблоны для своих проектов. По иронии судьбы ещё в 2010 году в Онтарио создали мессенджер с аналогичным названием. 11 марта Кочулу получил электронное письмо от Боба Стрэттона, патентного поверенного компании, которая занималась разработкой этого приложения. Боб Стрэттон попросил Кочулу изменить название проекта по юридическим причинам. Кочулу не согласился. По этой ссылке вы можете почитать их полное обсуждение на английском языке (и узнать, почему две стороны не смогли прийти к соглашению).

После всех обсуждений Кочулу захотел удалить все свои зарегистрированные пакеты на npm. "У меня есть авторское право удалить все свои материалы из npm", - написал Кочулу Бобу Стрэттону по электронной почте. Этим письмом в их дальнейшей коммуникации была поставлена точка.

Через несколько дней программисты JavaScript по всему миру начали получать странное сообщение об ошибке при попытке запустить свой код:

Npm ERR! 404 'left-pad' is not in the npm registry.

Код, который они пытались запустить, требовал пакета под названием left-pad, но в реестре npm его не было. После этого разработчики обратились к GitHub, где поддерживался "left-pad". Вот код, который им удалось откопать:

module.exports = leftpad;
function leftpad (str, len, ch)  {
str = String(str);
var i = -1;
if (!ch && ch !== 0)
ch = ' ';
len = len - str.length;
while (++i < len)  {
str = ch + str;
}
Return str;
}

Всего одиннадцать строк кода. Но насколько жизненно важных! Эта функция не представляет из себя каких-либо сложностей, она универсальна и достаточно проста для самостоятельного написания. Однако многие пакеты npm были автоматически настроены под неё. Именно поэтому отсутствие left-pad стало настолько критичным.

Некоторые крупнейшие платформы, которые использовали пакеты npm, внезапно были сломаны. Одной из таких была React, библиотека JavaScript для создания пользовательских интерфейсов. И множество небольших веб-сайтов, таких как Atlas – платформы для работы с графиками от компании Quartz. Проблема затронула весь мир – разработчики из Австралии, Германии, Соединенных Штатов и Чешской Республики оставляли свои комментарии с проблемами отсутствия "left-pad" на GitHub. Даже в Онтарио, где всё произошло, разработчики "Kik" жаловались на проблему с "left-pad".

Два часа спустя разработчики npm всё же добавили эти 11 строк кода в реестр. Эта ситуация послужила ценным уроком для разработчиков. Она показала, что интересы масс важнее формальностей в отношении авторских прав.

Заключение

Надеюсь, эта статья помогла вам понять, что ошибки, какими бы масштабными они не были, это не повод расстраиваться, они лишь ступень к улучшению. Если вы все ещё боитесь ошибок, различные инструменты помогут улучшить ваш код и обезопасить его от взломов. Например, наша компания — PVS-Studio — разрабатывает статический анализатор, который может легко обнаруживать даже неоднозначные ошибки и потенциальные уязвимости в коде. У нас также есть целая подборка открытых проектов, в которых мы находили ошибки с помощью анализатора, среди которых Chromium, ядро Linux, Tizen OS и даже Windows Calculator. В основном там проекты не столь масштабные, как описаны в статье, но всё же известные. Список проектов доступен по этой ссылке :).

В заключении, хотелось бы процитировать фразу из "Симпсонов", где Ленни говорит: "Все ошибаются. Ведь даже на карандашах есть ластики." Повод задуматься.

PS: Ошибки показались недостаточно смешными? Тогда вот вам подборка картинок об ошибках, с которыми люди сталкиваются в повседневной жизни:

1. "Задача успешно провалена"

2. "К сожалению, время остановилось"

3. "Нельзя скопировать файлы потому, что нельзя" – нельзя, вот и всё!

4. "Кажется, мой водитель в беде"

5. Ваш результат: 107%

Повезет в следующий раз!

16 из 15 верных ответов!

6. Без комментариев...

8. "Ваш компьютер убежал". Печалька :(.

Картинки взяты с сайта boredpanda.com.

Дополнительные ссылки