Роскосмос пару дней назад опубликовал отчёт о том, почему упала "Луна-25". Там конечно канцелярит, но можно примерно понять, что двигатель коррекции получил неверные данные от акселерометра:
из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором
Это очень похоже на программную ошибку, а это моя сфера, и я решил над ситуацией поразмыслить.
Хейтеры сразу стали строчить комментарии в стиле "Ололо, наняли каких-то идиотов, которые простейшие тесты не провели". Тут обычно справедливо вспоминают аварию с европейской ракетой Ариан-5 в 1996 году. Там буквально из-за пары строчек кода в результате неправильного приведения числовых типов ракета за 7 млрд баксов развалилась на куски в воздухе. Бывает.
Что касается Роскосмоса, при всей его сомнительной репутации, объяснение "Дураки не провели тесты" звучит лично для меня неправдоподобно. На мой личный взгляд возможны два варианта:
1. Если в описании ошибки слово "приоритет" обозначает какой-то признак внутри объекта команды, значит, на входе в приёмный модуль эти команды не были отфильтрованы. Выглядит как грубая ошибка, целый логический блок упущен. Вряд ли этот блок вообще не написан, скорее всего он не выполнился. Такое бывает, если в тестовой среде есть какое-то условие, которого нет в рабочей, и именно это условие отвечает за выполнение участка кода.
Сталкивался с таким миллион раз. Самое дикое из последнего: код парсит эксель-таблицу с числами. Разработчик написал, запустил проверил, прогнал тесты, всё ок. Отправляем в прод — все числа будто бы рандомно меняются на другие. Запускаем снова — у всех разработчиков функционирует нормально, а в проде на сервере нет. Таблица одна и та же. Можете подумать, почему так. Ответ: у разработчиков стоит русская локаль и десятичный разделитесь это запятая, а на проде в докере точка. При парсинге на проде запятая уже интерпретируется как разделитель тысячных разрядов.
2. Куда вероятнее, что слово "приоритет" в описании ошибки обозначает время, а, значит, список команд просто не был отсортирован, и в обработчик уже после актуальных значений попали какие-нибудь начальные нулевые данные, сбившие логику. По косвенному описанию проблемы очень похоже именно на это. Значит, на тестах всегда порядок возникновения команд соответствовал порядку их прихода, а в реальности перестал соответствовать. Вообще, работать с железом очень сложно. Какую-нибудь схемку заглючило от холода, она задержала ответ от датчика на миллисекунду, и всё. Никто не знал, что такая проблема возможна, пока она не возникла.
Мне рассказывали о таком случае: юзер логинится на сайт и иногда логин проходит, а иногда нет. Логин и пароль те же самые. Просто в случайные моменты времени ему возвращают токен авторизации, а в другие моменты времени ошибку 403. Никакой закономерности нет вообще. Нет зависимости от времени суток и даты. Сервер точно работает стабильно и не падает все 100% времени. Почему так может быть? Ответ: у сервиса авторизации два инстанса, перед которыми балансировщик нагрузки. В одном инстансе данные для авторизации есть, в другом нет. Балансировщик при примерно одинаковой нагрузке включает просто случайный выбор между ними.
В общем, программисты иногда допускают такие косяки, что какая-то мелочь может привести к серьёзной аварии. Это я вам говорю как программист, который пишет для атомных станций :)
#dev
Закон Ньютона на Тихом океане
Столкнувшись осенью 1944-го с тактикой «камикадзе», американские моряки изначально испытали шок от увиденного. У них не укладывалось в голове, что можно планировать выполнение боевой задачи исключительно через гибель и самопожертвование, без надежды на спасение. Однако шок прошел быстро и на японскую тактику самоубийственных атак американцы ответили тактикой «стоять насмерть». Причина ее появления была проста: не дать «камикадзе» поразить корабль – означило развалить его самолет еще в воздухе до момента, когда он врежется. А это уже значило, что надо стрелять до самого конца, не покидая поста, даже когда объятый пламенем самолет летит прямо на тебя... Действие и противодействие.
#navy
Про разваливающиеся «Либерти»
В разных публикациях, посвященных судам типа «Либерти», их авторы часто упоминают о том, что эти американские транспорты были ненадежны настолько, что некоторые просто разваливались в море. Поэтому было очень любопытно познакомиться со статистикой инженерного управления ВМФ США на тему живучести «Либерти», сопоставляемой с живучестью других транспортов (типа С-3), на базе которых создавались эскортные авианосцы. По этому поводу управление отмечало следующее:
«Записи за первые 2,5 года войны* показывают, что из американских судов типа «Либерти», поражённых одной торпедой, около 60% гружёных судов и 90% судов в балласте уцелели. Около 20% гружёных судов типа «Либерти» и 30% судов в балласте уцелели после попадания двух или более торпед. Можно ожидать, что корабли ВМС, переоборудованные из типа C-3, в том числе эскортные авианосцы, будут ещё более устойчивыми к повреждениям, чем суда типа «Либерти», особенно с учётом некоторых усовершенствований, внесённых при переоборудовании»
* США вступили в войну в декабре 1941-го.
#navy
The new head of the US Navy is at the center of a scandal over racism and lies about awards. The acting head of the US Navy was retired Navy Captain Hung Cao. 🚩🚨
Daily Mail sources claim that Cao made racist remarks and used aggressive rhetoric, including public jokes about the Ku Klux Klan and statements about "alpha fighters." 🤬
There were also questions about his claims about his service. Cao said that he had been severely injured and had a disability. However, the investigation did not find any Purple Heart medals in his case, which are usually awarded for injuries sustained in combat. 🎖❌ He also does not have any combat stripes for his participation in combat operations.
His statements about religion have also raised questions. He has spoken about the "rise of witchcraft" 🧙♂️ in California and has called for the recruitment of "alpha fighters" in the military. Currently, Cao is responsible for approximately 850,000 personnel in the United States Navy and Marine Corps. ⚓️
#Military#Navy
👂More on Trump's Ear ⚠️
The world's largest US aircraft carrier is flooding with sewage.
The crew of the USS Gerald R. Ford, on their way to the Middle East, is forced to clean and repair latrines daily so that the largest and most powerful American aircraft carrier does not drown in sewage. 🚢
Many of the 650 toilets on the ship are clogged and out of order, the WSJ reports, citing the sailors' words.
At the same time, the publication emphasizes that the fecal problem did not affect the aircraft carrier's readiness to perform combat missions.
The WSJ also writes that the ship's crew is tired not only of clogged toilets.
The grueling schedule also undermines morale: due to the decision to transfer the USS Gerald R. Ford to the shores of Iran, the sailors have been on the ship for 11 months instead of the planned six. 📊
Some even thought about leaving the army because it is difficult for them to live so long away from their families, the newspaper reports.
#Military#Navy
👂More on Trump's Ear ⚠️
Сведения Адмиралтейства по переброске союзниками через Ла-Манш людей, транспортных средств и грузов с начала операции "Оверлорд" (6.06.1944) и по 1.09.1944:
людей - 2 059 150 чел.
транспорт - 433 833 ед.
грузы (припасы) - 3 354 993 (как я понимаю, тонн)
#rn#navy
Плохая цель для подлодки
Действуя в Эгейском море, британские подводники нападали на немецкий каботаж и переодически сталкивались с, противодействующими им, кораблями ПЛО. Последние часто представляли собой небольшие, мобилизованные, то есть вспомогательные, вооружённые суда. С одним из таких столкнулась подлодка "Торбей". Заметив такого "охотника на ПЛ", её командир долго того рассматривал и, в итоге, пришёл к следующему выводу:
"Он был слишком мал для торпеды, и слишком хорошо вооружён, чтобы стать подходящей целью для артиллерии"
В результате, атака не состоялась
#sub#navy
Как сказал один ветеран нашего подплава: подводник - это не профессия, подводник- это религия. Тут можно добавить, что у подводников еще и особое чувство юмора. К примеру, вот так видел свой корабль экипаж субмарины "Хаддо" во время Второй Мировой войны. #sub#navy
Подводник всегда готов отразить нападение.
Как-то, во время атаки японского корабля, подлодка «Барб» подверглась воздействию особо изощренного приема противолодочной обороны. Ее командир Флаки поднял перископ, собираясь торпедировать противника, но атака была сорвана неизвестной птицей ПЛО, которая уселась на «столбик», точащий из воды и закрыла своей задницей Флаки весь обзор. Тогда американец опустил перископ, птица вспорхнула, но когда перископ был поднят снова, то пернатая опять на него уселась. Вероятно, так бы и продолжалось дальше, если бы Флаки не применил особо изощренный контрПЛОприем – поднял два перископа с разницей в несколько секунд. Птицу это сбило с толку и обескураженная, она улетела без возврата.
#sub#navy
Сегодня в истории Второй Мировой войны и подводной истории в целом знаковая дата. Восемьдесят лет назад или 29 ноября 1944-го подводная лодка потопила самую большую цель за все время своего существования. Однако в этом событии не обошлось без иронии судьбы, так как это сделал подводник-валенок.
Подводник-валенок или как был уничтожен авианосец "Синано"
#sub#navy
Снимок с нависурса резерва подплава США в 1946 году
На этой фотографии 52 подводные лодки и 4 плавбазы. По случайности или намеренно, количество лодок на фотографии совпадает с количеством лодок, потерянных флотом США во время Второй мировой войны. Шестая слева в ближнем (где 12 лодок) ряду – знаменитая «Арчерфиш»
#sub#navy