Как стать автором
Обновить

Комментарии 186

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Берите выше, ждём первой аварии из-за софта у пилотируемых кораблей SpaceX! Просто в целом реже буду ездить, начальство-то совершенно внезапно обучилось новым технологиям связи.
Так это регулярно — помнится у Марса потеряли корабль, где-то в программе вместо кажется семерки была единица.
Фобос-1
Бывало с Марсом и похуже, цифры абсолютно одинаковые, точные до последней запятой. Но вот единицы измерений (метрическая/имперская) перепутали. И АМС сгорел в атмосфере. А с Фобосом обидна-понимаешь получилось. Все программы на Фобос должны были проходить через аналог Фобоса что остался на Земле, но в тот раз «кто-то задеплоил без проверки, прямо в продакшен» :(
С единицами измерений это же целый жанр американских технически-анекдотичных историй. У нас все же фунты, футы и дюймы отмерли сто лет назад.
Точно, про американцев я и говорил
Mars Climate Orbiter
«Mars Climate Orbiter был запущен 11 декабря 1998 года на РН Дельта-2. Аппарат прибыл к Марсу через 9 месяцев. Mars Climate Orbiter 23 сентября 1999 года должен был выдать тормозной импульс и перейти на высокоэллиптическую орбиту с периодом 14 часов, а затем в течение двух месяцев с помощью ряда аэродинамических маневров в верхней атмосфере Марса довести орбиту до круговой. В расчетное время на высоте 193 км аппарат включил двигатели на торможение. Через 5 минут MCO запланировано ушел за Марс и больше никаких сигналов с него не поступало. Из анализа данных было предположено, что аппарат прошел над поверхностью Марса на высоте 57 км вместо расчетных 110 км и распался в атмосфере. Столь большое отклонение было вызвано ошибкой в программном обеспечении миссии: команды по тяге двигателя в программном обеспечении Mars Climate Orbiter использовали единицу измерения силы ньютон (международная система единиц (СИ)), в то время как программное обеспечение на Земле, которое создавало эти команды, использовало британскую единицу измерения (фунт-сила)[1]. Спустя 2 месяца во время посадки на Марс при неизвестных обстоятельствах погибла станция Mars Polar Lander. Таким образом программа Mars Surveyor’98 завершилась полной неудачей, а все последующие планы по изучению Марса были полностью пересмотрены. Единственным научным результатом миссии можно считать снимок Марса, сделанный камерой MARCI 7 сентября 1998 года с расстояния 4,5 млн км. Неудача упоминается как одна из возможных причин окончательного и полного перехода NASA на метрическую систему, объявленного в 2007 году[2].»
Эта эпопея была даже воспета в отечественных «Хрониках лаборатории» — я так понимаю именно под влиянием иностранного юмора на эту тему.
«Прототип реактора готов к испытаниям. Hас не допустили. Даже на территорию — сказалось криминальное прошлое. Глупо с их стороны. Откуда им знать, что в инструкции давление смеси в атмосферах, а на пульте градуировка — в фунтах на квадратный дюйм… Реактор проплавил пол, три этажа и ушел метров на 70 в грунт. Там и остался, исчерпав запас горючего. Как и предполагалось.»
«Хроники лаборатории» — это инстинктивно расплывающаяся улыбка, пробитие на хи-хи, желание перечитать их заново, напуганные несдерживаемым хохотом соседи из соседнего подъезда.
Говаривал мне: «Слушай, брат СальериИТ-шник,
Как мысли черные к тебе придут,
Откупори шампанского бутылку
Иль перечти „Женитьбу Фигаро“ ты «Хроники»…
Ну те, что ты читал «в лаборатории»,
Те самые, которые «уже давным-давно» ».

Вадим Артамонов. Хроники лаборатории
Детство
15 июня
Первый рабочий день. Рад. Учеба позади. Буду приносить пользу обществу. Сказал об этом новому шефу. Он посмотрел как-то странно.
16 июня
Осваиваюсь. Знакомлюсь со сленгом и основными ценностями нового коллектива.
17 июня
Учился обслуживать оптику. Тонкослойным методом. Это крайне экономичный и многоцелевой прием. Суть — залпом и без закуски выпивается грамм 50 спирта. Энергичный выдох на обрабатываемую поверхность с последующим воздействием мягкой ветошью.
18 июня
Появился еще один новичок. Математик. Лохмат, небрит, в глазах жажда деятельности. Вылитый я.
19 июня
Проходили базовый ликбез. Экскурсия по основным установкам, одну из которых вверяют нам. Мощные гидроприводы. Нагревательная камера. Говорят, рельсы разрывать можно.
23 июня
Действительно, можно. Однако лучше, пользуясь инфракрасными нагревателями, разогревать обеды. Куры в собственном соку тоже получаются ничего.

Из-за багов в программах космические корабли падают, взрываются и банально промахивается мимо цели с того момента как ЭВМ вообще стали ставить на них. Так что ничего нового не случится

Всё же конкретно у пилотируемых полётов таких событий численно меньше, просто потому что пилотируемых полётов сильно меньше. И последствия потенциально опаснее. Так что и наблюдать интереснее, хаха.
У пилотируемых и возможностей вмешаться больше.
Конечно, однако наблюдаемые последние тенденции в интерфейсах управления вызывают некоторые сомнения в этом.
За космонавтику не скажу, скажу за авиацию. Мой знакомый, бортинженер гражданской авиации, когда я его пытаю после очередного авиационного происшествия «Как могло так случиться? Как командир мог так лопухнуться? Куда смотрел пилот? Как?!?!», он вздыхает и говорит печально «Понимаешь все потому, что сейчас за штурвалом сидят не пилоты, а операторы, которые умеют работать (сиречь нажимать кнопки) только в штатных ситуациях, максимум в штатных аварийных ситуациях. Как только происшествие выходит за рамки инструкций, они теряются. Их не готовили к импровизации, они теряются и гробят пассажиров, себя, машину.»
Так что тенденция печальная.
вот это враньё. Я работал лично в авиации. Люди, по крайней мере наши, в этой сфере большие спецы. А вот система вся, оборудование, технологии- вот тут проблема. Делали самолет кубинцам- те в сторонке курили весь год, их знания предмета и навыки выхода из сложной ситуации на уровне школьников. Так что не надо наговаривать.

Проблема не столько в оборудовании, сколько в перестраховщиках. Если пилотам предписано всегда использовать максимально возможный уровень автоматизации — откуда в принципе могут взяться те самые навыки, которые и отличают пилота от "оператора"?

НЛО прилетело и опубликовало эту надпись здесь
От тренажёров.

Увы, тренажёр — это всего лишь улучшенный авиасимулятор.

Когда вы работали в авиации? В какой период? И чем занимались? Чтоб понять про что мы говорим. Про летный состав, про наземные службы?
не враньё, денис окань, например, постоянно говорит ровно о том же — навыки ручного пилотирования новым пилотам никто не прививает, всё строго по инструкции, по приборам, шаг в сторону — расстрел
понятно, что инструкции для того и пишутся, чтобы их соблюдать, но когда случается ситуация, инструкцией не предусмотренная, замуштрованный человек теряется и допускает ошибки или вообще тупит в стену
плюс склонность начальства действовать преимущественно репрессивными методами не лучшим образом сказывается на выявлении и устранении ошибок

«наши/не наши» тут совершенно ни при чём, российское руководство в последнее время склонно бездумно копировать западный опыт
Я вообще уточнял, где, когда, на чем? Не более того.
> У пилотируемых и возможностей вмешаться больше.

Ну да. В пилотируемых есть кому вмешаться, да ещё непосредственно на самом объекте. Жить захочешь — вмешаешься (если что-то пошло не так).
А беспилотные-то железяки — сами жить не хотят. Их ещё надо обучать желанию жить. Человека желанию жить учит жизнь многие годы его жизни. А железяку кто научит желанию жить? Пока ещё только люди. А тут уже возможны ошибки.
Желание жить в железяках прекрасно программируется уже давно. Человек призван подстраховать в случае ошибки этого программирования. То чему учит жизнь и инстинктивные реакции скорее вредны. Правильным действиям в экстренной ситуации учат почти так-же как железку, просто человек может сориентироваться в нестандартной ситуации, а железка не очень.
> Желание жить в железяках прекрасно программируется уже давно

Это понятно. Я имею в виду, что если железяку не заставить хотеть жить, то сама она и не будет хотеть жить. Она (обычная сильно простая железяка) сама себе смысл жизни не придумает. Только то, что ей люди сказали — то она и будет делать. А вот человека и заставлять хотеть жить не надо — он (психически здоровый) хочет жить сам без пинка и подсказок о том, что жить ему надо! :-)
Берите выше, ждём первой аварии из-за софта у пилотируемых кораблей SpaceX! Просто в целом реже буду ездить, начальство-то совершенно внезапно обучилось новым технологиям связи.


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


У них там управление на сенсорных экранах, драйвер откажет — и прилетели (если что, не злорадство ни разу, я прямо беспокоился за это грешное управление (возможно, как любой рождённый (ещё) в СССР и учившийся у ещё более рождённых в СССР)).
Домкрат и лебедку они вряд ли с собой захватили.
Ломом и какой-то матерью обойдутся :-)
То есть обычных кнопок управления под сенсорными экранами вы не заметили? SpaceX не идиоты.
Некоторые кнопки даже на подлокотниках, дабы не тянуться. Много ли с этих кнопок можно сделать и быстро ли это можно сделать?
На «Союзах» есть целый пульт ручного управления кораблём.
galspace.spb.ru/orbita/29.htm
image

Ну индикацию — понятно, можно и на дисплеях сделать.
А вместо РУДов (рычагов чуть ниже центра кадра) — в SpaceX кнопки?
Была полушутливая гипотеза, что РУ… у них размещены за спиной, и в случае необходимости ручного управления пилот должен с невозмутимым лицом сделать красивое резкое движение руками, чтобы блок с ними оттуда достать.

Собственно у боинга неудачное испытание пилотируемого корабля было именно из-за некачественного софта.

давно мне попадалась книга про разработку: «Смертельный марш» вроде называлась, так там и промышленность тоже вызывает опасения, а я как работающий в области автоматизации регулярно сталкиваюсь с тем что где то какой-то блок был вставлен либо тестовый либо как заглушка и в случае неординарной ситуации неизвестно как отработает автоматика… даже за собой находил косяки… а на заре столкнулся с тем что искрогасящие цепочки промежуточных реле дают ток утечки достаточны для переключения и я в течении минуты несколько раз запустил остановил двигатели 6кВ… у электриков с перепугу даже сил ругаться не было… но тогда все обошлось
Мой опыт работы в автоматике показал, что единственное, чего есть уникального в чернобыльской аварии — это масштаб. Всё остальное случается у всех, всегда и везде.
PS про 6 кВ двигатели. Делали систему управления насосами на ТЭЦ. Они, как раз, от 6 кВ запитаны. Сидели в комнатке над машзалом. Я своей точкой опоры каждый раз чувствовал, что насос отключился и закрылся обратный клапан.
А с частотным приводом вообще весело получилось. Из-за тех же обратных клапанов. Они там много лет стояли и никто их не трогал — просто, проблем с ними не было. А тут мы… Пробуем плавно замедлить насос перед остановкой. Прибегают операторы с выпученными глазами, мать-перемать… В общем, от многолетнего отсутствия обслуживания обратные клапаны не хотели закрываться нежно, им удар подавай от грубой остановки отключением питания. Насос остановился, клапан не закрылся, через него обратно вода пошла. Давление упало, ещё бы чуть-чуть и котёл бы остановили :))
А насос потом ещё минут 10 или 20 выбегал. Превратили тепловую станцию в гидравлическую :)))
Весело у вас там…
В автоматике, вообще, не скучно.
Понравилось, что 28 американцев погибло?

О, вы ведь в курсе про Тойоту Камри и 11 000 глобальных переменных?

Про самолеты вообще страшно.
Будучи студентом третьего курса, мой однокурсник устроился в контору, пишущую софт для гос.корпораций. Десять лет спустя ему звякнули и спросили за критическую ошибку в библиотеке. Эта библиотека работала на русских самолетах десять лет… и работает и поныне.
> А еще можете сразу ходить пешком, потому
> что на машинах современных тоже бывают глюки.

Так в ногах же тоже правды нет. (с) народная мудрость :-)
Лучше сразу смените глобус, на АЭС тоже есть код.
Я живу довольно далеко от АЭС. А вот новенький лифт в подъезде напрягает… [/sarcasm]
enable Sarcasm_Mode
Облачко от ЧАЭС планету таки обогнуло…
Сам факт наличия лифта — это уже плохая новость. Значит дом многоэтажный. Если живете на нижних этажах, то при обрушении все сваляться на вас. А если на верхних — значит высоко падать.
Это пессимистичный сценарий. В более оптимистичном — на высокий этаж устанете носить дрова и воду, если отключится электро- или водоснабжение. На нижних этажах, если очень не повезёт и засорится стояк канализации, то к вам потечёт всё от соседей сверху.
«Товарищи! Не ездите поездами МПС! На них часто падают самолёты Аэрофлота!»

В самолётах тоже есть где накосячить.

Там не программист ошибся, а конструктор. Вина программиста разве что в том, что он честно написал фигню по кривому ТЗ.

как раз вам бояться нечего. Автор упоминает о «релейке». И вот эта самая релейка, на самом деле, перевести стрелку под составом не даст. Хоть автор и пишет «переключал как хотел», но на самом деле это не так. А при таком перекрытии светофора, как он пишет, релейка не даст перевести стрелку перед товарняком. Потому что светофор перекрывается сразу, а маршрут остается замкнут 3 или 1 минуту. И ели за это время товарняк проехал бы светофор, то в релейке все работало бы так, как будто он по светофору проехал.

Это если они исполнительную часть бмрц оставили. А если там не бмрц, и они повмешивались в релейку, то может быть что угодно. Но обычно так не делают.
Перекрытие сигнала перед составом — тоже нехорошо.
В Швейцарии поездам законодательно(!) запрещено иметь в составе ровно 256 колесных пар, так как счетчики на путях — восмибитные. Так что поезд с таким числом осей просто «пропадает с радаров». Вот это фикс, а не эти ваши патчи первого дня.
Где можно почитать техническую составляющую вопроса?

Было такое. Отменили только прошлым летом (тут актуальные правила).
Справедливости ради, поезд из 64 вагонов в Швейцарии — это редкость.

В товарняках и побольше ведь бывает…
А грузовые вагоны тоже разные:


image

Одно время я рядом с сортировочной жил, туда состав в 50 вагонов впритык помещался. Больше незачем, страна маленькая.


На фото как раз 4 оси на вагон.

А ведь кратное — 512, 768, 1024, ..., наверное, ведь тоже будет глючить.
Да, по ссылке на реддите пишут, что пока что в Швейцарии нет поездов с 512 осями.

Представляю себе, какой сюрприз при запуске ждет разработчиков нового поезда лет через -дцать…
Даже если добавят еще один байт (получив 16 бит), то следующая проблема должна наступить только при кратности 65536, чего, наверное, не достигнут, так как такой поезд на половину Европы растянется.

Нам железка раз поставила условие: в течение недели после пуска круглосуточно на посту должен дежурить наш представитель.


Зато на другом транспортном объекте сразу после подписания акта о приёме в опытную эксплуатацию появились люди с болгарками, которые перерезали нафиг трубы с кабелями идущими в старую аппаратную и начали её разбирать. На растерянно-недоумённый возглас с нашей стороны:


  • Э-э… а чего так резко? Надо было пару недель поработать параллельно!
    Было сказано:
  • Нужны помещения.

Ну а несанкционированное управление реальными объектами — это да-а...


Раз занимались ПНР автодорожной системы. Я проверял работу шлагбаума: раньше были какие-то проблемы с железом и пока их устраняли — решили добавить программную функцию увязки шлагбаума и светофора рядом с ним. Чтобы закрытие шлагбаума не стало внезапным для водителей — сначала перекрыть светофор. Реализовал.
Через какое-то время — вернулись к работе со шлагбаумом. Я так же как и раньше — смело управляю им (палка снята, ничего страшного не происходит), отдаю команду, смотрю что происходит на шине — на сигнализацию с поля внимания не обращаю. И тут диспетчер смотрит в камеры и говорит:


  • А что это у нас машины стоят?
    Ну ёксель-моксель! Точно! Светофор-то тоже закрыт!

В другой раз коллега на буке на объекте гонял команды — бук был отключен от сети. А потом он включает бук в сеть и… команды улетают на контроллеры.
Подстанции отключаются и начинается большой шухер.


Шит, так сказать, хэпнс.

Ну… команды улетели, а сам сам бук не улетел… уже хорошо. Я честно вначале вот об этом подумал.
«Бук» — самоходный зенитный ракетный комплекс, предназначенный для борьбы с маневрирующими аэродинамическими целями на малых и средних высотах (от 30 м до 14—18 км) в условиях интенсивного радиопротиводействия.
Бук. Ноут бук.
:)
А что за станция? Или хотя бы, в какой стране?

Синдром самозванца — истинный бич современного ИТ, а вовсе не идея того, что любой человек в жизни должен стать пограмистом, открыть свой блог и посадить стартап. /sarcasm
Тут на неделе вышла Minecraft Dungeons, которая при удалении через «Программы» стирала весь SSD… В общем не переводятся в мире «мастера».

Ещё bumblebee можно вспомнить — там вытирался /usr/

Те же грабли я оттоптал в своем pet-проекте… Ох и получил матов… даже в новости на OpenNet попал…
Напишете статью? Изучать серьезные ошибки коллег и рекомендации по избежанию — крайне полезно.
Да там на статью не хватит:

Утилита на Python + bash и есть скрип, который при клоне/скачивании репозитория позволяет прописать все файлы на свои места в системе.

Прилетел баг репорт, что при установке из исходников инсталяционный скрипт требует что бы в систем был git (там скрипт создавал stage с файлами как они потом в систему будут копироваться в каталоге build/yd-tools/usr/, потом из этого stage все копировалось в систему, а потом делался git clean).

Ну я долго не думая заменяю git clean на rm -rf… Причем сам исталяционный скрипт запускался из build/ и для него путь к stage был yd-tools/usr. Ну а я случайно написал /usr.

Закоммитил фикс, закрыл багрепорт и забыл.

Прошел примерно месяц. Основная масса пользователей ставит эту утилиту через пакетные менеджеры (.deb на launchpad я собираю, а .rpm — ребята из команды поддержки росы) и в пакете там этот скрипт не используется. Там файлы по системе раскидываются пакетным менеджером.

Ну, а потом (за день до моего отъезда с семьей на море) прелетает мне письмо с матом-перематом — человек из исходников поставился и убил себе систему.
Я сморю в скрипт и не верю своим глазам… КАК же я умудрился ТАКОЙ бред написать!!!??? Срочно правлю скрипт, коммичу и пересобираю релиз. А пока я извинялся перед перцем, что меня матом крыл, мне присылают ссылку на новость на OpenNet что моя утилита сносит систему при установке…

ЗЫ Ну и само собой яндексу на opennet тоже досталось в комментах, пришлось там их адвокатом выступить и посыпать свою голову пеплом.

ЗЫЫ и как же я был рад, что этот бедняга попал в просак не тогда, когда я вдали от своего компа на море расслабляюсь…

ЗЫЫЫ отдельным шоком было что коммит с правильной правкой скрипта был под номером 666 :/

Вот этот баг, если интересно
https://bugs.mojang.com/browse/MCL-14107


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

Плюс, судя по тому что там написано, проблема была совсем другая: анинсталлер удалял всю папку установки целиком, даже если туда же было установлено что-то ещё… Лично я вообще не считаю это за проблему, потому что при установке двух программ в одну папку конфликты неизбежны и надо быть к ним готовым.

забавно, что на эти грабли наступили Bungie в 2013, у них инсталлятор чистил всю директорию. если выбрать C:\ чистилось вместе с виндой и всеми файлами.

Я подозреваю что с этой проблемой все сталкивались. У меня тоже похожее было один раз.
Но конкретно в uninstall это обходиться удалением только того что ставилось (по списку). Подпапки можно удалять целиком конечно. И папку верхнего уровня удалять только если она пустая.
НЛО прилетело и опубликовало эту надпись здесь

Яндекс диск же как-то при обновлении решил удалить папку windows.

Мне крупно повезло в тот раз — эта версия у меня стояла, но мой диск не пострадал. А бонусных 200 гигов компенсации мне всё-таки выдали.
А я потратил вечер на восстановление Windows с загрузочного диска :)
Не они первые.
Один из патчей EVE Online патчил boot.ini (удалял потом писал новое), только вот в некоторых случаях — перезаписывал Windows'ный c:\boot.ini. NTLDR «почему то» не понимал такого юмора и система не грузилась.
CCP Games потом сказали (перевод — forum.eve-ru.com/index.php?showtopic=11143, ссылка на оригинал — там же ) что:
— исторический код
— ну да тестировали серьезные изменения графики в этом патче и как то так вышло…
— ошибка в документации использованной тулзы для создания инсталлятора
Я в армии развлекался тем, что осваивал Python. Но так как компа не было, то я писал прямо на Nokia N70 под Symbian. И освоив в достаточной мере приёмы работы с файловой системой и экраном решился я на написание локера, по типу виндовых баннеров, блокирующих весь экран. Как вы думаете что произошло? Конечно же я забыл перед очередным тестовым запуском поменять в коде переменную is_debug на True.
Локер вышел качественный, с прописыванием в автозагрузку. Пришлось форматнуть телефон и начинать с нуля ))
Зато бета-тест качественно прошел.
И как подобает любому сверхсмертельному вирусу, его эпидемия так и не началась
Не будьте так строги к самому себе. У всех ваших многомудрых сеньоров есть подобные истории, а у некоторых из них – и помногу.
У всех есть скелеты в шкафу, главное научиться признавать ошибки. Хорошая статья!
Неудивительно, что столько матюков сыпется в карму Windows. Но пользователям от этого не легче)))

Это только потому что Windows — самая распространённая система.

Так это и имелось в виду.
Любой разработчик ОС автоматически попадает под максимальный удар. ОС связывает все воедино, а Windows с таким охватом рынка стала именем нарицательным.
Интересно, что ему работодатель сказал по результатам.
Известно, что:
— Зайди в мой кабинет, подпишем контракт на 5 лет — твой опыт обошелся компании очень дорого
Писал на Форте и еще удивлен такими багами. Руки надо отрывать тем, кто пишет серьезный софт на таких языках.
а в Си или плюсах, или в Васике такое не возможно? Дам наводку: В Канаде ЕМНП (в конце 70-х/начале 80-х) софт онкологического аппарата радиотерапии десяток онкобольных уморил до смерти. Ошибку софта угадаете?
Бинго!
Замеченные ошибки в ПО Therac-25
В программном обеспечении Therac-25 были найдены как минимум четыре ошибки, которые могли привести к переоблучению.

  • Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac-25 мог иметь дело с неправильным положением поворотного круга (так называемое состояние гонки).
  • Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.
  • Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.
  • Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x←x+1». Поэтому с вероятностью 1/256 при нажатии кнопки «Set» программа могла пропустить информацию о некорректном положении диска.

Кроме этих явных ошибок, было замечено множество потенциальных — например, в многозадачной операционной системе не было никакой синхронизации.

Я эту заразу просто привожу в пример, когда мне говорят «всё софтово сделаем». Ну и в рамках объяснения разработки на HDL, т.к. там всё это совершенно невозбранно можно прошляпить и получить кучу схожих приколов.

А Therac разве не на ассемблере программировали?

Утверждается что на ассемблере, но там была PDP-11, так что Си тоже не исключен
а в Си или плюсах, или в Васике такое не возможно?


При наличии отлаженной стандартной библиотеки — крайне маловероятна.
Как легко заметить — в описываемой ситуации отсутствует нормальная файловая система, и пользователь сам реализует некие действия, которые должны возлагаться на ФС.

В THERAC — всё случилось после отказа от «аппаратных» предохранителей-концевиков и замены их «отлаженным софтом».
Можно ещё падение Arian-5 вспомнить…

Мало того, этот "отлаженный код" использовался в предыдущей модели Therac, где как раз имелись аппаратные блокировки, надёжно страховавшие от проявлений имевшийхся багов, не давая запускать машину в неверной конфигурации.
Но как только в модели 25 отказались от аппаратных блокировок и возложили всю безопасность на "проверенный десятками тысяч часов код"...

Угу, именно так.
Это был, наверное, 1984-1985 год.

Так что неудивительно, что автор писал на Форте. А на чём бы вы писали такой софт в 80х, и как другой язык помог бы избежать такой ошибки?
В 1985 как раз Форт использовался очень активно, а вот для СИ еще не был принят стандарт.
Си в 85м тоже использовалась достаточно активно, но он требует, как минимум — «нормальной» ОС, с файловой системой, отдельным редактором и компилятором.
А в данном случае, похоже — были машинки с рудиментарной ОС, роль которой играл сам ФОРТ.
Т.е. в этом случае нужна была, прежде всего — кросс-разработка на «полноразмерных» компьютерах, а не на таких «фигулечках».
Программе на Си файловая система не нужна. У K&R в книге о Си был приведен пример программы на Си управляющей лифтом.

Программе-то не нужна, а вот компилятору...

Так кросскомпиляция наше все:)
Ну вот я и сказал — либо кросс-компиляция, либо всяческие извращения.
При этом необходима реализация работы с файлами стандартной библиотеки Си для целевой системы — если программа нуждается в работе с файлами.
Я стесняюсь спросить, а чем так плох Форт и на чем он должен был писать?
На заметку: были компьютеры, у которых Форт прописан напрямую в ROM.
PS. Я буду обновлять комментарии.

А не кажется ли вам, что это, мягко говоря, пиз… ж? «Форт» в 85? Арвид (или аналог) в 85? Дурость, конечно, присутствует… Но вот антураж… Типа Т-34 в Гражданской, запоротый хреновым бензином!)))

Форт существует с конца 60-х. Стандарт FIG-FORTH середина/конец 70-х. Стандарты FORTH-79/FORTH-83 приняты соответственно в 1979 и 1983 годах. И стримеры тоже широко были распространены.

Нуууу… Не буду упираться. Но с датировкой, по-моему, что-то не так… Да и стримеры на видеокассетах. Уж больно экзотика. Как и Форт в качестве языка разработки. Уж больно он мудрён с обратной бесскобочной логикой.

Я боюсь что «видеокассета» это ошибка перевода и только. Ссылки на оригинальный текст увы нет. А обратная нотация… Удобство или нет… Это вопрос привычки как = и ==
Таки нет, похоже не ошибка перевода:
We wound up telling everyone to always back up (to VCR tapes, btw) *every* *single* *day*.
Возможно, в 80-х годах в той стране были в ходу стримеры с механикой от VCR. Или сам автор уже плохо помнит (он же программист, а не сисадмин. Он лично этим не занимался. Прямоугольная кассета с лентой… Как оно называлось 40 лет назад? Пусть будет VCR, так всем понятнее). Или Арвид придумали не в СССР ;)
VCR = Video Cassette Recorder
Ага. А Stereo это кассетный магнитофон. Xerox — копир, etc. Может быть у них общеупотребительно любые больше кассеты называть VCR? Не знаю…
Это стандарт видеозаписи.
ru.wikipedia.org/wiki/VCR
Аппараты для конвертации цифры в видеосигнал (и обратно) производили еще с конца 70-х Sony. Правда, это было для цифрового звука в CD-DA формате.

Насчет использования видеокассет для хранения производных данных — первое упоминание готовых решений, что мне удалось найти — это анонс в журнале Computerworld от 12 ноября 1984 (с.107, 112) серии микрокомпьютеров AM-1000X фирмы Alpha Micro, имеющих встроенную функцию работы с VCR.

Эта же фирма в конце 1985 анонсировала систему VideoTrax для IBM-совместимых десктопов. В 1986 эту систему уже активно рекламировали и обзирали в журналах PC Mag, InfoWorld и т.п.

Автор, кстати, вполне может промахнуться в воспоминаниях на год-два, он же пишет о датировке не очень уверенно: «Must have '84 or '85».

Видеокассеты появились еще раньше. Стандарт VHS с 1977 начал своё победное шествие, потеснив Betamax (1975). Но еще до них был U-matic (1971) от Сони, для которого они свои PCM-адаптеры и делали поначалу, кстати.

Слишком много допущениц! Оккам не одобряет!
Ну и про «мультиплатформенность» в 80-х весело.

Форт как бы един в трех лицах: он же язык программирования, он же среда исполнения, он же ОС. Если переписать низкоуровневые определения то программа на Форте вполне мультиплатформенная. Так что никаких тебе вечеринок бритв Оккама.

Ну-ну, в 84-м. А отладка на чём? Вспомните старину Билли — железа для Бэйсика у него не было. А тут — полный пакет да ещё под разные ОС и железо. У прогера с 5-ти летним стажем.
Оккам таки рулит.

Так Билли бейсик для альтаира в 1975 накропал, на PDP. А потом в самолете доделывал. Сам, на коленке. И смог продать.
А у Форта изначально полноэкранный редактор был, и Форт вполне на 8 битных машинках крутился. Точнее был как рыба в воде.
И тогда было гораздо проще, небыло кучи шелухи и кучи легаси. Оно все в будущем было. А пять лет… Это период от выхода на рынок Apple II до появления IBM PC.
Это период от выхода на рынок Apple II до появления IBM PC.
В данном случае даны точные даты. 1984й-1985й. Если стаж работы 5 лет — то это точно не IBM PC (IBM 5150 — это 1981й год, не забываем). Скорее всего CP/M. Причём этих самых CP/M — было как грязи. Вот тут можно почитать подробно, как в Novell с ними боролись (и да, там тоже рассказывается про кучу несовместымых систем, с которыми приходилось бороться… собственно если вы вспомните про десятки версий MS-DOS, несовместымых с IBM PC, то это, как бы, нифига не должно удивлять).
Я про то что пять лет в те времена был большой срок, платформы менялись очень быстро.
Платформы менялись быстро, но инструменты — нет. CP/M, как подсказывает Wikipedia — это с 1974го по 1983й. Почти 10 лет. Да, где-то с 1985го-1986го она начала активно вытесняться MS-DOS… но как в той же книжке про Novell написано Then one day in September 1984 the heavens opened and the revelation was handed down to the mortals below (появился PC LAN v1.0).

То ест да — 1984й/1985й это конец «разброда и шатания» с кучей 8-битных систем и постепенный переход на IBM PC… который вот нифига тогда не выглядел будущим победителем: «снизу» от него была куча 8-битных систем, «сверху» — Mac и Amiga с Atari XT (они как раз только появились и были явно куда как более привлекательны).

Тоже же были и попытки сделать что-то «крутое» на основе Z80 (Ямаха КУВТ на Хабре до сих пор помнят, хотя вроде системы на MSX до России так и не добрались).

Кстати вот эти самые машинки на MSX вполне себе поддерживали старый 8-битный софт и там даже Turbo Pascal был!

Так что вполне можно поверить, что не все прям перешли сразу на PC в начала 1980х… Amstrad PCW только появился в 1985м, а продавался аж 1998го!
Как MSX до СССР не добрались? Вполне в виде КУВТ-ов, причем в немалых количествах, гдето как музыкальные компы, гдето на ТВ попали для титрирования. Гдето даже бухгалтерию автоматизировали.
Большим плюсом MSXDOS была совместимость по носителям с IBM PC, а по системным вызовам с CP/M.
Как MSX до СССР не добрались?
MSX2+ имелась в виду. Вначале думал, что и MSX2 тоже не добрались, только MSX1, но, похоже, на MSX2 всё-таки как раз КУВТы выпускались. А вот на MSX 2+ (и MSX TurboR) — уже нет.
Ну MSX2+ и MSX Turbo это уже был излет стандарта, для Turbo даже новый видеопроцессор V9978 не смогли выпустить, и использовали в стандарте предыдущую модель V9958
«After 1986, Microsoft stopped supporting the MSX standard and ASCII in Japan took over further development of the standard. The first MSX2+ computers, the Panasonic FS-A1WX, Panasonic FS-A1FX and Sony HB-F1XDJ were released in Japan on October 21 1988. The Sanyo PHC-70FD came out a little later on November 4 1988. Due to ASCII's diminished lack of interest in the European market, no MSX2+ system was manufactured or sold outside Japan. Rumours and plans existed in the Netherlands to make a European MSX2+, but they never came to reality.
The MSX Turbo R is the last generation of MSX computers that was put to market by a household electronic brand. Only Panasonic was brave enough to put faith in the standard once again, by releasing two different models: the Panasonic FS-A1ST and the Panasonic FS-A1GT. MSX Turbo R computers were produced until 1994.

According to Kay Nishi, the R on the MSX Turbo R stands for RISC (Reduced instruction set computing).
MSX Turbo R computers were only produced by Panasonic and Takaoka in Japan.»

Так что отсутствие MSX2+ и Turbo R в СССР вполне логично.
И тогда было гораздо проще, небыло кучи шелухи и кучи легаси.


Huh.
Чиста по-Америке: Tandy, Atari, Apple, Amiga.
У каждой — своя линейка компьютеров, не всегда совместимая внутри линейки.
Плюс в Британии гражданин Синклер, у которого было до Спектрума — и не факт, что он один.
Что было во Франции, Германия — а фиг его знает.
Так я и не говорил что не было «зоопарка» компьютеров, он был и еще какой. И шелухой его назвать, у меня язык не поворачивается, это было время возможностей, никто не знал что выстрелит, вот и старались как умели, боролись за кошельки потребителей. И главное у них был чистый лист, ни что их не держало за руки — «твори, выдумывай, пробуй!»
Там компьютеры могли иметь от 16к ОЗУ — следствием чего и были встроенные бейсики в качестве «ОС». Ну или упомянутый Форт.
Экий вы батенька транжира, в 16кб уже CP/M запускать можно вполне себе полноценную ОС.
A minimal 8-bit CP/M system would contain the following components:
  • A computer terminal using the ASCII character set
  • An Intel 8080 (and later the 8085) or Zilog Z80 microprocessor. The NEC V20 and V30 processors support an 8080-emulation mode that can run 8-bit CP/M on a PC DOS/MS-DOS computer so equipped, though any PC can also run the 16-bit CP/M-86.[12][13]
  • At least 16 kilobytes of RAM, beginning at address 0
  • A means to bootstrap the first sector of the diskette
  • At least one floppy disk drive


Ну и Форт, в отличии от Бейсика, мог расширять набор используемы слов (функций) без использования костылей, средствами самого языка ;)
CP/M, всё-таки, скорее ДОС, нежели чем «полноценная система» — хотя её таковой практически не называют.

А я и не утверждаю, что Форт- хуже Бейсика. Просто он — весьма необычен даже с современной точки зрения.
Просто он — весьма необычен даже с современной точки зрения.
Вот как раз именно и исключительно с современной точки зрения — он и является чем-то необычным.

А для человека, который в ВУЗе орудовал HP-35 в Форт не было ровно ничего необычного. Как и для его коллеги «через лужу» перешедшим с логапифмической линейки на Б3-21, а потом спаявшего себе микрокомпьютер…

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

По иронии судьбы 8-битные персоналки сделали Форт популярным, а 16-битные — его убили. Потому что переход с какого-нибудь HP 48GX (который был популярен настолько, что даже в начале XXI века куча инженеров-геодезистов с ним ездила вместо лаптопов) на 8-битный форт — это легко и просто.

А вот уже переход с MathLab… нифига, там RPN нету, там другая жизнь…
У Б3-21 и им подобным — это весьма специфический «ассемблер». Были программируемые микрокалькуляторы с Бейсиком.
Микрокомпьютеры в наших краях — имели, обычно — какой-нибудь монитор в качестве «основной оболочки».

Форт оригинален тем, что он не поймёшь какой — не то интерпретируемый, не то компилируемый.
Технология его трансляции в некоторых вариантах шитого кода позволяем получить программу как последовательность вызовов процедур — что должно минимизировать накладные расходы, и, по-моему — сейчас не используется нигде в интерпретируемых языках (хотя я могу и ошибаться).
Другие варианты — наоборот, позволяют получить машинно-независимую программу — при довольно небольшом росте накладных расходов.

Когда я читал книжку по Форту — у меня создалось твёрдое убеждение, что он — 16-разрядный.
Убил его, скорее — рост типичного объёма памяти персональных компьютеров — таки управление памятью более 64 килобайт в него впихнуть как-то непросто, пмсм.
Ну и широкое распространение жёстких дисков.
У Б3-21 и им подобным — это весьма специфический «ассемблер».
Я бы, всё-таки, сказал, что это веьма специфический Форт. Передача информации через стек и RPN — это основное, что вводит в ступор новичков в Форт, а для человека, который лет пять работал с HP-35, оно всё уже такое родное и знакомое, что переход на Форт ощущается как апгрейд, а не как «что-то странное»…

Были программируемые микрокалькуляторы с Бейсиком.
В 70е — не было и быть не могло. Это уже 80е. Casio FX-700P — 82й год, МК-85 — вообще 85й.

Технология его трансляции в некоторых вариантах шитого кода позволяем получить программу как последовательность вызовов процедур — что должно минимизировать накладные расходы, и, по-моему — сейчас не используется нигде в интерпретируемых языках (хотя я могу и ошибаться).
Она даже в современных форт-системах не используется почти никогда. Ибо проигрыш по скорости со сравлению с нормальной компиляцией — примерно на порядок… а требований вместить компилятор в пару килобайт кода сейчас нет. Разве что у GForth ещё осталось…

Когда я читал книжку по Форту — у меня создалось твёрдое убеждение, что он — 16-разрядный.
Ну… плюс-минус. Главное — что все ранние реализации закладывались на 16-битные адреса, а когда память подешевла — это стало большой проблемой.

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

Просто когда памяти стало больше — уже не нужно было так себя ограничивать. И да, появились и калькуляторы с бейсиком и C++ на телефоне
Я бы, всё-таки, сказал, что это веьма специфический Форт.


Эт'вряд-ли.
Формат команды микрокалькулятора — характерно-ассемблерный, [адрес] [код команды] [операнды], и архитектура — Гарвардская.
А в Форте — подразумевается Неймановская архитектура и слова произвольного текстового вида.
Помню, как в каком-то журнале, не то в НиЖ, не то ТМ — в соотв. рубрике программируемые МК описали как «маленьких динозавров» — дескать, «раздельная память программ и данных для современных ЭВМ не характерно, только для совсем уже древних».
Это где-то район 1980 года.

Передача информации через стек и RPN


Передача информации через стек- по сути, широчайше используется в Си и плюсах, ну и подобном — только в слегка замаскированном виде.
«Польская обратная бесскобочная запись» — нужна для упрощения разбора выражений.

В 70е — не было и быть не могло.


Ну, я же не говорил, когда они были.

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


Непонятно, почему «даже в современных».
Но, в принципе — если в Форте не используется его
специфическая трансляция — то как-бы и смысла особого в Форте нету.

Вот ни разу не проблема. Качните GForth да поиграйтесь. Он и с память в терабайты легко может справиться.


Ну, допилить то-можно всё, разумеется.

Просто когда памяти стало больше — уже не нужно было так себя ограничивать.


Именно это я и имел в виду, в первую очередь.
Если есть машина с достаточным количеством памяти и винчестером — то лучше на Си.
Оно к человеческому языку ближе.
Формат команды микрокалькулятора — характерно-ассемблерный, [адрес] [код команды] [операнды], и архитектура — Гарвардская.
А в Форте — подразумевается Неймановская архитектура и слова произвольного текстового вида.
Господя! Ну какая разница? Вы сейчас примерно сравниваете трактор и Теслу и объясняете, что Тесла — нифига не похожа на BMW 3й серии, трактор к BMW гораздо ближе: у трактора-то и у BMW — ДВС, а у Теслы-то электромотор!

Вся эта разница между Неймановской архитектурой и Гарвардской начинает играть, когда вы начинаете лезть в словарь, делять слова, которые компилируют слова и прочее. Там — да, там это становится важно. Ну так до этого ещё дойти нужно!

А разница между «обычными языками» и Фортом — вот она, на поверхности: двухстековая архитектура вместо одного стека, RPN вместо инфиксной записи и всё такое прочее. То есть, грубо говоря, то, что в 1980е отличало в СССР инжинерный калькулятор от программируемого…

Передача информации через стек- по сути, широчайше используется в Си и плюсах, ну и подобном — только в слегка замаскированном виде.
В настолько замаскированном, что можно кучу программ написать до того, как понять, что C/C++ чем-то отличается от Fortran IV (где при вызове процедуры адрес возврата просто писался напрямую в команду JMP, которой эта самая процедура заканчивалась: просто, элегантно — и никакого стека).

В MIX, кстати, именно так вызов процедур устроен.

«Польская обратная бесскобочная запись» — нужна для упрощения разбора выражений.
Она нужна, чтобы не плодить сущнестей. Если у вас процедура забирает данные из стека и кладёт туда же, то + ничем не отличается от фукнции вычисления корней квадратного уровнения. Не нужен ни особый синтаксис, ни всё, что с этим связано.

Ну, я же не говорил, когда они были.
Что, как бы, несколько странно в контексте дискуссии, сконцентрированной на разнице восприятия Форта в начале 80х (чувак, по описанию, к 1985му уже пять лет программитом работал) от сегодняшнего дня (да и, собственно, даже вчерашеного: уже с середины 90х основным индустриальным языком стали C и C++).

Непонятно, почему «даже в современных».
Понятно как раз. В 80е существовашие тогда компиляторы Pascal и C выдавали код, качество которого было где-то в районе «отвратительно» до «полный швах». И примитивный шитый код Форта (за счёт более эффективной передачи данных) мог его нагнать.

Когда появились оптимизирующие компиляторы… это перестало работать — разницу в 10 раз так просто не отыграть…

Оно к человеческому языку ближе.
Я бы не сказал. Там тоже чудес хватает. Но оно явно ближе к математической записи, а двухстековые RPN-калькуляторы вышли из моды, так что… да, в сегодняшнем мире Форт не очень востребован.

Не совсем понятно упоминание про старину Билли, ибо в 1985 году железо для Бейсика клепалось сотнями тысяч единиц. IBM PC XT, например, это 1983 год с MS-DOS 2.0 и Бейсиком в BIOS.

В начале-первой половине 80х, и вообще, со второй половины 70х — с «мультиплатформенностью» — всё было хорошо и отлично.
Хоровиц/Хилл — гарантируют это!
Tandy TRS-80, Atari, Apple, чуть позже — Amiga — с широким веером своих моделей, не всегда и ни во всём совместимых…
Ну, Commodore PET (конец 70х — начало 80х) — это уже четыре разных основных модели, и это всё еще ранние Коммодоры без графики. Даже книга 1981 года издания уже толкует в предисловии о разных ревизиях ROM и Hardware. Сильно различались 40- и 80-символьные модели и модели с ранними и поздними вариантами клавиатур, разные наборы символов.
Нашлась статья на вики про АрВид, но это 90е и страны СССР: ru.wikipedia.org/wiki/АрВид
Про 80е найти не удалось информации.
Вот, краткий гуглинг выдал рекламу бекапа на VCR в журнале за 1986год:
books.google.ru/books?id=pDGnxFyejN4C&pg=PA56&dq=vcr+backup+computer&hl=ru&sa=X&ved=0ahUKEwjs4Mz6gOTpAhUzIMUKHVhKCAgQ6AEITDAE#v=onepage&q=vcr%20backup%20computer&f=false
(PC Mag за 10 июня 1986г. стр.56)
Вполне возможно что это, либо аналоги существовало и в 1984м.
Тем более, что хранение данных на аудиокассетах в восьмибитном мире было общим местом, а идея использовать под это и видеокассеты была очевидной и наверняка приходила на ум многим независимо и неоднократно.
Уж больно он мудрён с обратной бесскобочной логикой.
Это из XXI века он «больно мудрён». А если вы вернётесь в начало 80х… когда, внезапно, Microsoft Pascal или Apple Pascal не влазили на одну дискету и вам нужно было для компиляции программы (и, как бы, обнаружения ошибок) эти дискеты менять… и не такое можно освоить.

Благословенный Turbo Pascal, решивший эти проблемы, в 1983м появился, не забывайте… и далеко не все и сразу на него перешли…
Да и стримеры на видеокассетах. Уж больно экзотика
Значит вы не застали отечественный АРВИД :)))) А уменя была своя библиотека игр для ПК на видеокассетах :))))
АРВИД — отечественная разработка середины 90-х, и популярна была на отечественных просторах.

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

В 90-х то они везде появились — и у нас, и в Европе, не говоря уже о Штатах с Японией.

Forth появился в 1970 году. Был прошитым языком на БК-0010, если мне склероз не изменяет (знатоки поправят) — аккурат 1985 год. Арвид появился в начале 90-х, и то лишь потому, что "видаки", равно как и бытовые компы в СССР именно в те годы переставали быть недоступной экзотикой, раньше 90-х никакой Арвид людям и не был нужен.
А так как в те годы пересечение госграницы СССР для этих технологий как раз и занимало лет пять, я склонен верить автору.

В ПЗУ на БК был ФОКАЛ, а не Форт (хотя чисто теоретически его тоже могли записать в ПЗУ из-за его компактности)
«Из-за схожести синтаксиса Фокал часто сравнивался с Бейсиком. В целом, язык уступает Бейсику по своим выразительным возможностям, например, в Фокале совершенно отсутствует строковый тип данных, все переменные на Фокале — числовые (как правило, дробные числа с плавающей запятой). Вместе с тем, интерпретатор Фокала гораздо менее требователен к ресурсам (прежде всего к памяти), нежели Бейсик, что позволяет делать более сложные программы в системах с ограниченными ресурсами.»
хм, у нас в школе был класс БК и там был бейсик, видимо более дорогие версии, на которые не пожалели микросхем ПЗУ
Мне вот интересно — почему никто из «старожилов» не пытается факт-чегинг делать? Или, типа, раз я тогда жил, то нифига мне все ваши книги, моя память — лучше любой фотографии… так, что ли?

В Wikipedia всё подробно описано. И какие версии были и что в школы поставляли и даты даже.

«Школный» БК как раз был с Фокалом, но, возможно, в вашу школу попала более дорогая версия. А может это вообще были 1990е и БК-0011…

А возможно бейсик просто раздавали с ДВК («школная» версия БК поддерживала сеть и можно было грузить бейсик централизованно на все компьютеры).

Фокал был на первых партиях БК-0010Ш, а в .01 уже был прошитый Бейсик Вильнюс 1986. С ДВК софт можно было загружать, ну и писать туда на 5" дисководы.

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

На ДВК-2 была в конце восьмидесятых игрушка с некоторым подобием НЛП, которая генерировала более-менее связные тексты на заданную тему. Оригинал был написан для английского, и адаптирован не полностью. Поэтому когда ей не хватало словарного запаса, она вставляла подходящие термины на оригинальном языке.


Вот прямо флешбэк сейчас случился.


P. S. в том же пакете был и переводчик, прославившийся легендарным переводом ассемблерного кода (ну не Байрона же тупой железяке кормить) mov ax, dx → «двинуть топором начальника штаба».

Да, было времечко, год 1994. Помнится позвонил клиент. Мол система не работает. Поехали к нему, Программа ругается, сервер не отвечает. Пошли к серверу. А там один сетевой кабель. Украли сервер вообщем.
В 21-ом веке вызвали к клиенту. Программа не работает. На месте выяснилось, компьютер не включен. А уже под столом обнаружилось, что сетевой удлинитель воткнули в собственные розетки. Но вечный двигатель почему-то не заработал…

У меня самый трудно-отлавливаемый баг был связан с системой обновления ПО. На предприятии были трудности с выделением нормального хранилища для обновлений, зато был сервер с SQL СУБД. Потому было решено хранить файлы обновлений в отдельной БД в виде блобов. И обновления успешно скачивались в головном офисе, а вот у филиалов постоянно выползали ошибки и обновления не скачивались. Я добавил логов в под программу обновления, но не смог её полноценно распространить, потому что… Ну, обновления не скачивались. Потому для всех филиалов мы просто переустановили продукт до свежей версии и забыли о проблеме. Пока через полгода она не всплыла вновь… Но теперь то у нас были логи! Оказалось все довольно банально, в филиалах был медленный дешёвый интернет, а на запрос select был установлен таймаут в 30 секунд, потому когда приходил "тяжёлый" апдейт, он просто не успевал скачаться. Пришлось снова переустанавливать ПО во всех филиалах, но это была уже совсем другая история. Выводы простые… Пользуйтесь проверенными способами деплоймента и логгируйте все что можно.

Это еще что…
Вот здесь можно ознакомиться с историей коллективного поиска причины нечитаемости DVD дисков. Тема очень длинная, но читается как детективный роман.

Необъяснимая загадка: читаемость диска зависит от содержимого файла

Для большинства, кто желает кратко ознакомиться:
У человека не читался 80-мегабайтный мультфильм с DVD диска. Причем, несколько раз на новых качественных дисках. А другая информация вполне записывалась и читалась. Автора темы вначале высмеивали за то, что мог даже предположить, что может существует какая «волшебная» информация, которая может не читаться. Однако, он продолжал упорно искать причину, разделил файл на части и попробовал записать и считать каждую по отдельности. В итоге вышел на конкретную последовательность байт, и через какое-то время выяснил, что эта последовательность байт при скремблировании (преобразовании информации перед записью на диск) образует 12-байтную последовательность #ff #ff #ff… И именно эта последовательность применяется в данной модели привода в качестве метки начала сектора.
Он даже вычислил вероятность данного события, получилось что-то в районе 10^-28.
Надо сказать, у меня в программах тоже иногда было, что я считал, что вероятность глюки незначительная и можно так оставить. Оно конечно прокатывало, но с течением временим от сей порочной практики всё-таки отошёл.

Он даже вычислил вероятность данного события, получилось что-то в районе 10^-28

Для последовательности
#ff #ff #ff… — она много больше. Хуже только последовательность из 12 нулей.
Была бы какая-нибудь #a1 #20 #f0… того да, 10^-28.
А я читаю весь тот древний тред с начала, крутая детективная история со скучным и ожидаемым финалом. Получается что на CD-диск нельзя записать любые данные во-первых из-за особенностей автофокуса луча (много нулей или единиц подряд воспринимается как расфокусировка), во-вторых потому что первые сидюки были «с чипами от аудио аппаратов, со сплошным потоком декодирования» (цитата), вот для обратной совместимости с ними и оставили при записи дисков такую хрень как заголовок сектора. А дальше как всегда — а чо, работает же, давайте продолжим ставить эти старые и дешёвые чипы даже в новые модели сидюков.
Там ещё пришли к выводу что кто-то нарочно навтыкал этих сигнатур в файлы, рассылаемые по сети. Интересно, с флешками и ssd есть сейчас какая-нибудь подобная шляпа или нет. Вот вам и носители данных.

Много нулей или единиц ничего не поломают, потому что там модуляция 8 → 14, как раз для защиты от таких приколов. И заголовки сектора нужны не из-за кривых чипов, а из-за ограниченной точности механического позиционирования. На жестких дисках, знаете ли, тоже заголовки секторов есть, хотя там чип вместе с диском идёт и проблем с совместимостью нету.

8>11. И [32,26] код Хемминга, и не только. На CD только треть объёма полезная, остальное уходит на различные коды.
Для последовательности
#ff #ff #ff… — она много больше.

это неверно, так как это не байты в данных, которые пишутся, а результат скремблирования (шифрования)
Я когда-то сильно напряг автомехаников своими баг-репортами.

У меня под капотом что-то засвистело не по-детски. Но как-то смутно, нестабильно. То свистит. То не свистит.

Пару дней проводил следственные мероприятия и полевые испытания «свиста», и таки нашёл! Под капотом свистит только тогда, когда еду с запада на восток.

Понёс механику баг-репорт: когда я еду на работу — с востока на запад — то под капотом не свистит. А когда я еду домой — с запада на восток — то почти постоянно что-то где-то под капотом свистит. Карта обоих маршрутов прилагается. Аудиозапись свиста у меня в телефоне. Давайте чинить.

Механик послушал аудиозапись свиста и подтвердил: таки да, свистит только при езде с запада на восток. Но свистело не из-за направления, а потому, что поизносился ремень генератора электрического тока, он уже проскальзывал по направляющим ложбинкам. И каждый раз, когда я включал фары, медленно повышалась нагрузка на генератор, он начинал крутиться быстрее, и если ремень неплотно прилегает, то вот и «засвистело под капотом».

А фары я включал только по вечерам, когда возвращался домой — с запада на восток.

Было неудобно.
История с привкусом ванили

Текст
В 1978 году в отделение Pontiac корпорации General Motors пришло письмо, гласившее:

«Я понимаю, что могу показаться идиотом, но все, что я хочу рассказать, — святая правда. В нашей семье все очень любят мороженое. Каждый вечер после ужина мы решаем, какой сорт будем есть на десерт, и я еду за ним в магазин. Проблемы начались после того, как я приобрел новый «понтиак». Каждый раз, когда я покупаю ванильное мороженое и собираюсь вернуться с ним домой, машина напрочь отказывается заводиться! Если мороженое клубничное, шоколадное или любого другого сорта — никаких проблем. Звучит глупо, но, может быть, в «понтиаке» есть нечто, что реагирует на ванильное мороженое?»

Разумеется, в службе поддержки клиентов к письму отнеслись скептически, и все же — «клиент всегда прав!» — послали инженера на проверку…

Владелец автомобиля оказался вежливым, образованным человеком, и на сумасшедшего похож не был… Поехали в магазин, купили ванильное мороженое. Все точно — машина не заводится! Так продолжалось несколько дней подряд. Шоколадное — заводится. Клубничное — заводится. Ванильное — нет.

Инженер был человеком здравомыслящим и отказался верить в то, что у автомобиля может быть аллергия. Он отмечал все детали поездки — время, каким бензином и на какой колонке заправляли машину, даже температуру и облачность…

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

Задача перешла в разряд технических — почему машина не заводится, если хозяин возвращается к ней быстро? И ответ был найден: двигатель не успевал остыть, и в карбюраторе оставались пробки, вызванные интенсивным испарением бензина. Что, в свою очередь, повлекло необходимость совершенствования карбюратора, но это — уже совсем другая история…
При движении по двум дорогам с юга на север на определённой линии широта, рассчитанная gps приёмником, скакала на полградуса на юг. Полвечера потратили на тесты. Думали, работает gps спуфер. Оказалось — некорректно вычитывались координаты из бинарного потока приёмника, ему почему-то взбредало на этой широте добавить в поток лишний байт.
Преобразование UTF8 строки в UPPERCASE (или наоборот, точно не помню), что может пойти не так? ;) Оказывается, в турецком языке есть одна буква, длина символа в UTF8 при этом преобразовании меняется. Выход за пределы массива, а дальше как повезет.

При преобразовании в UPPERCASE таким свойством обладает i → İ, при преобразовании в lowercase таким свойством обладает I → ı; в обоих случаях символ из базового набора ASCII (1 байт) превращается в символ из расширенного набора (2 байта).

Скопировал.
echo -n i | hexdump -C
00000000  69                                                |i|
00000001
echo -n i | tr [:lower:] [:upper:]| hexdump -C
00000000  49                                                |I|
00000001


Вы про эти символы?

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

Да, точно ;)
Там мало того, что турецкая локаль нужна, ещё и tr нужен правильный, из Heirloom Toolchest.

А если у вас GNU/Linux, тогда только так вот:
echo -n i | LC_CTYPE=tr_TR.utf8 awk '{ print toupper($0) }' | hexdump
0000000 b0c4 000a                              
0000003

У меня под капотом что-то засвистело не по-детски. Но как-то смутно, нестабильно. То свистит. То не свистит.
На этом месте я подумал, что вам пора бы поменять ремень навесного оборудования. Так что вряд ли вы кого-то там напрягли.
> Но свистело не из-за направления, а потому, что
> поизносился ремень генератора электрического
> тока, он уже проскальзывал по направляющим
> ложбинкам. И каждый раз, когда я включал фары

Я думал, что дальше детективная история, грозящая перерасти в околонаучную полуфантастическую, пойдёт по теме разворота магнитосферы Земли относительно автомобиля...! А тут такой облом… фары включал… эх...! :-)

Оккам не зря бритву точил.

Сегодня поймал очередную багу с датой в Windows 10. Менял сегодня новую материнскую плату (MSI на 310 чипсете) в системном блоке. Случайно не успел залезть в БИОС при включении и загрузилась Win10Pro (свежеустановленная 1909). Накатил драйверы. И только после этого обратил внимание на неправильное время. Ничего страшного щас поменяем… Упс, а дата унас 29 июня 2116года. Ну чтож и тебя вылечим. Открываю настройку даты и времени и припухаю. В полях даты (день/месяц/год) пусто, внести значения нельзя, выпадающий список пуст и нулевого размера (черточка). Ну ладно, все равно в БИОС надо было зайти. Перезагружаюсь, захожу в БИОС меняю дату/время, сохраняюсь выхожу. Загружается Windows и… «Чукча знает кто начальник экспедиции!» У меня обратно 29 июня 2116года и неправильное время. Но слава CMD.EXE, который (слава богу) еще не выпилили из системы, запущенный от имени админа смог выполнить команды «DATE» и «TIME» установив правильные дату и время.
Там надо в несколько приёмов делать — сначала попытаться выставить время, после этого дата съедет на приемлимый год, потом снова открыть окно и увидеть то, что дата съехала на уже меняемое значение (что-то типа 2050) и теперь её можно изменить.
повторюсь «Открываю настройку даты и времени и припухаю. В полях даты (день/месяц/год) пусто, внести значения нельзя, выпадающий список пуст и нулевого размера (черточка).» т.е. стандартное приложение не дает ничего изменить. Ну и перезагрузка в БИОС нужна была не только для изменения даты/времени но и для тонкой донастройки параметров.
Эмм, я же написал, сначала надо выставить время, любое время, то есть часы, минуты, секунды. Потом сохраняем это всё, открываем снова, дата опять слетает, но теперь вместо "--" в списках реальные числа.
Время — менялось и сохранялось. Реакции — нуль. И там минусов не было, просто пустое поле
Значит со свежими обновлениями MS окончательно всё доломали.
Эх… как-то раз, на одной работе, писал ассемблерный код… В функцию приходил массив из c++ библиотеки(гарантированно, не пустой) и надо было его обнулять по специевому алгоритму(каждый второй и третий байты).

А потом программисты переписали библиотеку и теперь массив мог приходить с нулевым адресом… Разумеется, мне об этом не сказали.

В общем, несколько БИОСов оказались перепрошиты.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории