Comments 44
А уж тема — ух!
«Как перестать бояться и начать жить.»
А то страху нагнали, аж жуть берёт (серьёзно).
Совершенно разные проблемы в одну кучу. Не надо так.
Tout n'est pas si terrible que cela
До интернета вещей, что бы улететь на машине в кювет достаточно было подержать свое рено меган под дождиком пару дней и вот на скорости 100 км в час ваша бортовая эвм выдает вам Défaillance électronique
вырубает мотор и вы летите в кювет из за того что не справились с поворотом.
Тема конечно требует особого внимания но паниковать уже поздно. Согласен, это скорее из оперы:
«Как перестать бояться и начать жить.»
У меня на машине банально трамблёр залило несмотря на защиту днища, залетающим под капот снегом, в результатате двигатель стал троить.
А в своё время на мотоцикле Ява после дождя двигатель стабильно начинал барахлить от отсыревания проводки при включении поворотника (что то в пульте видимо коротило).
On a fateful day, on a transaction that ran particularly fast, the NTP synchronization of the computer clock drifted it back by a few parts of a second, just enough to apparently allow the second timestamp to give a time prior to the first one.
Не очень понятно: ведь NTP по идее не должен откручивать часы назад, если они спешат, но разница небольшая. Он просто замедляет их. Или я не прав?
Бинарный протокол запросил длину байта по переданным ему данным, но одна из двух точек связи использовала длину кода для работы.
В бинарном протоколе требовалось указать длину сообщения в байтах, но одна из сторон указывала его в кодовых позициях (code points).
Когда дело дошло до плохих абстракций, безопасность оказалась на высоте. Она обнаружила, что почти всё обследованное программное обеспечение было вынуждено проверять сертификаты вне веб-браузеров. Это привело к критической ошибке, в результате которой могли быть пропущены атаки «человек посередине» и перехвачены или изменены данные всего сеанса.
Когда речь зашла о плохих абстракциях, дела с безопасностью обстояли хуже всего. Они [авторы упомянутой выше статьи] обнаружили, что почти всё обследованное программное обеспечение, которое проверяло сертификаты (кроме веб-браузеров), делало это абсолютно неверно, что могло привести к атаке «человек посередине» и перехвату или изменению данных всего сеанса.
С таким плохим интерфейсом многие люди пропустили критические биты проверки.
С таким плохим интерфейсом многие люди пропустили важнейшие этапы проверки.
Пишут в личку — появляются те, кто хочет видеть «публичную историю исправлений».
Вроде за 10 лет существования Хабра уже определились, что такие комментарии с исправлениями быстро теряют свою актуальность и в дальнейшем мешают дискуссии. А если хотите следить за изменениями поста — то для этого есть специальные сайты.
Если ошибка в одном слове, то смысла комментировать нет — ошибку может найти каждый, информация о ней несет мало смысла. А когда ошибка в куске перевода, и серьёзно изменяет смысл текста — информация о ней уже интересна, как сама по себе, так и как свидетельство уровня переводчика текста. Плюс — лишнее напоминание другим переводчикам "проверяйте тексты". Плюс ссылка на профиль того, кто исправляет — скорее всего у него в личке можно будет попросить консультацию по таким вопросам при переводе ещё одного текста.
Я в разработке ПО уже почти двадцать пять лет как и прошёл путь от ДВК (окей, DEC PDP-11) c 56 кБ памяти и 5 МБ жёстким диском до современных систем, так что могу окинуть взглядом технический прогресс за четверть века. У меня в общем-то нет никакой боязни перед «умными устройствами», но нет и никакой эйфории, связанной с ними. То, что мы наблюдаем — технический прогресс, который приводит к постоянно возрастающей сложности систем, причём сложность растёт едва ли не экспоненциально. Борьба с этой сложностью и постоянная подстройка под меняющиеся требования — это и есть суть работы программиста (и в этой безумной битве программист, как правило, всегда в проигрыше). Так было, есть и будет. Рождаются новые инструменты разработки, новые языки, новые методологии разработки, новые паттерны. Мы с каждой итерацией продвигаемся чуть дальше, и никто не сказал, что путь будет лёгким, но вот чтобы «всё плохо» — я так не считаю совершенно. Сейчас операционка RT11FB и ассемблер MACRO-11 кажутся мне простыми как пять копеек, а четверть века назад казались верхом совершенства. Впервые увидев Windows 3.1, я был едва ли не в шоке. На первую оконную программу я убил, наверное, неделю и тоже думал, что всё плохо. Пройдёт ещё четверть века и программисты 2050 года будут смотреть на нас нынешних, как на динозавров, и, наверное будут всё также бурчать, мол, всё плохо, опять этот полу-искуственный недо-интеллект, понимаешь, в проблеме не до конца разобрался.
Некоторые цифры не делятся нацело, и без работы с дробной частью будет очень сложно не потерять точность
В двоичной системе все дробные числа периодические, кроме дробей со знаменателем, кратным 2. Не совсем очевидный факт, но в десятичной системе тоже все дроби периодические, кроме дробей со знаменателем, кратным 2 или 5. Просто используются обычно кратные, типа 0.1 и 0.2.
Если вы когда-нибудь видели сумму 0,1 + 0,2, равную 0,30000000000000004, вы знаете, что это такое.
Этой проблемы можно избежать, если ввести использование двоично-десятичнной арифметики с фиксированной точкой. Целая часть 32 бита, от 0 до 2^32-1, дробная часть 32 бита, показывает количество миллиардных долей. Можно двухмиллиардные сделать. Если больше, будут проблемы при сложении, а так можно в одной ячейке вычислять сумму и делать десятичную коррекцию с переносом. Для большинства стандартных вычислений этого хватит, для специализированных можно использовать отдельные библиотеки. Мне кажется, производительность будет выше, особенно в играх.
Тогда необходимо использовать логическое время для отслеживания причинности, вместо того чтобы считать его безусловным, но это слишком обширная тема, чтобы говорить о ней здесь.
Или монотонно возрастающий счетчик событий, у которых время просто дополнительный атрибут.
А их архитектору (если у них есть архитектор) надо оторвать руки от задницы и пришить к плечам. Потому что значительная часть приведенных схемок вызывает внутреннее содрогание. Х**к-х**к и в продакшен, да.
В общем я что-то не оценил. Старый уже наверное стал, прошло у меня это юношеское «все плохо».
… но с помощью преобразования UTC для установки даты и времени, вы получите 27, что невозможно считать целым числом без знака.
Разве 27 это не целое число без знака?
Это конечно жесть в 21 веке.
Всё плохо