Лучшие ошибки софта IV

Скрытые файлы. Все знают о том, что файлы, чьё имя начинается с точки, считаются “скрытыми”. Можно поспорить о том, насколько это удобно и полезно, но есть такое. А на самом деле это бага, с которой мы можем поздравить Кена Томпсона или Денниса Ритчи. Кратко: наш мир изменила вот эта строка — “if (name[0] == ‘.’) continue;”

Казалось, после Therac-25 любой софт, облучающий людей радиацией, должен проходить многослойный контроль с гарантией годности в 100%, но нет. В 2000 году в Panama’s National Institute of Oncology умудрились знатно перегаммаоблучить 28 пациентов, от чего 5 потом умерли.
Фишка в том, что ошибка заключается в отсутствии защиты от дурака. Пациента перед облучением обкладывали щитами. Софт оперировал максимум четырьмя, а вот медикам нравилась конфигурация из пяти. Потому медики научились обманывать софт, рисуя на схеме один (!) щит с отверстием посередине. Не учли только то, что результат формул, считающих дозы облучения, тоже менялся. Такая вот глупость.

В 2004 году в Великобритании произошло… как бы так ловчее… Сначала Department for Work and Pensions заплатил £152M за создание софта для автоматизации работы Child Support Agency. Понятная трата, понятные цели. Софт был создан. И в этот нежный момент DWP решил реформировать CSA. Спасибо им за великолепный пример того, как одна огромная административная бага привела к сотням (в СМИ туда-сюда носят число в 500+) технических “багов”, а также к утроению суммарных трат на компенсацию такого фейла.

Високосный год заслуживает отдельного поста, но пусть так. Все программисты знают, что его (год) следует учитывать, но всегда находятся те, кто не смог.
В Новом 1997 году алюминиевый завод Tiwai Point схлопотал убыток в почти миллион долларов потому, что софт был озадачен 366-м днём (решил, что такого не бывает) и отправил в даун 660 компьютеров, заодно и плавильни остудились. Спустя два часа та же фигня произошла с заводом Comalco’s Bell Bay в Тасмании.
Что характерно, подобного рода ошибки правятся обычно в пару строк, но вреда могут нанести не хуже какой-нибудь стратегической ракеты.

Завершаем выпуск такой же классикой ошибок. Почему в 1997 году Social Security Administration в San Bernadino не смогли осилить свыше 100К отчётов о заработной плате? Потому, что софт был написан для няшного мира белых американцев с их нормальными именами. А вот всякие азиатские, латиноамериканские, индейские и прочие ФИО в этот мир не умещаются. Потому de la Rosa и Park Chong Kyu остались за бортом. Также софт сломался на женщинах, поменявших фамилию после замужества.
Затрудняюсь оценить прямой убыток, но в систему не поместилось отчётов на общую сумму в $234 миллиарда.

Книги: Introduction to Tornado

Introduction to Tornado
Michael Dory, Adam Parrish, Brendan Berg.
Introduction to Tornado.
O’Reilly, 2012.
Tornado — веб-сервер и фреймворк на Python. Интересен сам по себе, но также и тем, что про него вон единственная англоязычная книга издана за всю историю. Даже не знаю, почему так. Сервер занятный, в production используется вовсю, а книга одна.
Её можно читать, можно не читать:
  • Рассматривается версия 2.x с упоминанием 1.x. Сейчас актуальна 4.x. Каких-либо страшных несовместимостей, впрочем, не обнаружил. Тот код, что из примеров попробовал, заработал.
  • Не просто introduction, но introduction в некоторое количество классов некоторых модулей на очень базовом уровне. Для беглого входа норм, но и только.
  • Язык не сложный, примеры читаемые, мелкую терминологию по ходу дела автор поясняет.
Если у вас есть время и хочется как-то системно войти в тему, хоть полистайте. Родной user’s guide у Tornado не похож на учебник ни разу.

Книги: Java Threads and the Concurrency Utilities

Java Threads and the Concurrency Utilities
Jeff Friesen.
Java Threads and the Concurrency Utilities.
Apress, 2015.
Весьма годная шпаргалка по всякому multi threading в Java, включая последние веяния. Значимых около 100 страниц, если исключить приложение и технические страницы, потому можно вдумчиво осилить за недельку.
Книга строго и ровно по тому, что на обложке написано. Нет теории. Нет обсуждения архитектур и прочего. Примеры толковые и понятные. Субъективно кажется, что автор в теме, а не слизал с документации.
В общем, норм.