А как инерциальная нав. система оценивает скорость относительно земли, неужели она настолько стабильна? В море делают поправки на LOP, то есть измеряют курс до известных визуальных объектов (маяки, буи) и делают поправку позиции. В авио такое делается?
Я бы не стал настолько ссужать слово «производство» до конечных исполнителей типа «станка». Я думаю тут имеется в виду более общая система.
Если в машину вставляют флэшки, на машину ставят антивирус, а не обновляют ОС
Опять же, тут все зависит от конкретных сценариев. На заводах не работал, а вот навигационное ПО для судов писал. Там как раз была такая ситуация — закрытая внутренняя сеть, все коммуникации (например пришедшие корректуры карт или отчет для судовладельцев) идут через флешки и проверку антивирусом. И в целом это вполне работало*… Лет 15 назад.
* Ну как работало… Надо понимать, что при удачных уязвимостях ОС антивирус может работать некорректно.
Сегодня мир меняется, коммуникация по сети нужна везде, все закрытые сети становятся все ближе к интернету. Опять же из судовой практики, мостику корабля теперь нужно постоянно слать разные запросы в интернет. Да, он по прежнему в закрытой сети, связь только через DMZ с шифрованным каналом. Если все будет работать как надо, то компьютеры внутри и так защищены. Но когда что-то работало как надо? Сейчас security патчи ОС мы отправляем в обязательном порядке.
Защита типа «обновления ПО» нужна от атак script kiddie, которые каким-то образом пробрались внутрь. Если вы можете доказать пользователям, безопасникам и в первую очередь себе, что такое невозможно, то ничего обновлять не нужно. Но на практике все-таки проще наладить обновление ОС и сместить фокус внимания на что-то более полезное.
Любой компьютер, который так или иначе подключен к интернету, должен обновляться. Это самое базовое требование безопасности.
Если машина не подключена к сети и в неё не вставляются флешки, то да, никаких обновлений не нужно. Но такое встречается все реже и реже, все хотят слать данные, хотя бы какой-нибудь мониторинг оборудования.
Автор ведет тг канал на русском, можно попробовать там в комментариях спросить — t.me/experimentalchill
upd. Ну и на самом сайте, как я погляжу, можно оставлять комментарии.
Странно, что в комментах не написали о github.com/boostorg/pfr. Сам не пробовал, но вроде с его помощью можно также писать такие сериализаторы для простых типов. Причем в compile time. И это работает с текущим стандартом, не нужны никакие внешние генераторы, которые никто себе ставить не будет.
Честно сказать не знаю. Я как-то пытался разобраться как именно работает механизм исключений, но там такая кроличья нора (точнее несколько нор для каждой платформы/компилятора), что соваться не слишком хочется. Да и не нужно это обычно. Но могу попробовать порассуждать.
Ключевой вопрос тут: а как вы найдете где находится обработчик исключения? Причем место обработчика нужно знать уже в моменте выброса исключения (иначе может статься, что обработчика нет, а мы уже весь стек до __start() раскрутили и потеряли весь контекст где произошла ошибка. И все дампы теперь бесполезны). Тут нужны какие-то таблицы сопоставляющие адреса функций и обработчики. И при раскрутке стека ходить по этим таблицам. А эти таблицы как раз могут меняться в добавлением / удалением функций (загрузке / выгрузке шареных либ, а может ещё в каких-то случаях).
Ещё есть таблицы «всех функций» при компилировании c -fomit-frame-pointer. Иначе без таблицы просто нельзя будет получить текущий стек (ну ладно, можно анализируя код, но это будет очень долго). Они, возможно, тоже блокируются при подобных операциях.
Либо сделать (иной) lockfree доступ к этой таблице?
Ничего не мешает, об этом в статье также написано. Вот только компиляторы уже сделали так как сделали. Для переделки нужно перекомпилировать все существующие с++ бинарники.
В принципе можно было бы сделать включение этого режима через какой-то флаг и переправить ответственность за abi на клиентов, тем кому это реально нужно.
В при чем тут архитектура? Тут скорее дело в стандартной библиотеке, которая не предоставляет других способов получить ошибку (я помню non throwing варианты функций только в std::filesystem).
И есть много ошибок, для устранения которых не нужно ничего делать, просто вернуть эту ошибку пользователю и продолжить работу. Но кроме исключений стандартная библиотека не дает особо вариантов.
ps. Есть конечно вариант писать код так, чтобы исключений не возникало, ну то есть, например, запретить использовать std::map::at и всегда искать через std::map::find. И так для каждого контейнера. Но без автоматических проверок, такой способ, к сожалению, не скейлится =(
Но ведь это ошибки определенной доменной области — grpc…
И опять же, в expected тип ошибки параметризуемый. Или вы предлагаете стандартизировать оптимизацию — прятать ошибку в указателях, если она может быть воткнута в N бит (где N зависит от конкретной платформы)? По-моему это чересчур специфично для general purpose класса.
Здравствуйте. А как обычно принято искать сервисы в такой системе? В статье вы узнали ip через апи кубера и обращались через него. Или лучше обращаться по имени «nginx-hello», но тогда гарантируется ли уникальность имени?
День добрый. А вы не могли бы добавить в список вариантов при минусовании «желтый заголовок»? Ну или корректнее «Заголовок не соответствует теме статьи».
Не знаю как у других, но я выбираю читать статью или нет только по заголовку. Если он как-то совсем не соответствует статье, хотелось бы это донести.
А в чем отличие от простого создания переменной на стеке и передачи указателя на него.
Опять же, тут все зависит от конкретных сценариев. На заводах не работал, а вот навигационное ПО для судов писал. Там как раз была такая ситуация — закрытая внутренняя сеть, все коммуникации (например пришедшие корректуры карт или отчет для судовладельцев) идут через флешки и проверку антивирусом. И в целом это вполне работало*… Лет 15 назад.
* Ну как работало… Надо понимать, что при удачных уязвимостях ОС антивирус может работать некорректно.
Сегодня мир меняется, коммуникация по сети нужна везде, все закрытые сети становятся все ближе к интернету. Опять же из судовой практики, мостику корабля теперь нужно постоянно слать разные запросы в интернет. Да, он по прежнему в закрытой сети, связь только через DMZ с шифрованным каналом. Если все будет работать как надо, то компьютеры внутри и так защищены. Но когда что-то работало как надо? Сейчас security патчи ОС мы отправляем в обязательном порядке.
Защита типа «обновления ПО» нужна от атак script kiddie, которые каким-то образом пробрались внутрь. Если вы можете доказать пользователям, безопасникам и в первую очередь себе, что такое невозможно, то ничего обновлять не нужно. Но на практике все-таки проще наладить обновление ОС и сместить фокус внимания на что-то более полезное.
Если машина не подключена к сети и в неё не вставляются флешки, то да, никаких обновлений не нужно. Но такое встречается все реже и реже, все хотят слать данные, хотя бы какой-нибудь мониторинг оборудования.
upd. Ну и на самом сайте, как я погляжу, можно оставлять комментарии.
Ключевой вопрос тут: а как вы найдете где находится обработчик исключения? Причем место обработчика нужно знать уже в моменте выброса исключения (иначе может статься, что обработчика нет, а мы уже весь стек до __start() раскрутили и потеряли весь контекст где произошла ошибка. И все дампы теперь бесполезны). Тут нужны какие-то таблицы сопоставляющие адреса функций и обработчики. И при раскрутке стека ходить по этим таблицам. А эти таблицы как раз могут меняться в добавлением / удалением функций (загрузке / выгрузке шареных либ, а может ещё в каких-то случаях).
Ещё есть таблицы «всех функций» при компилировании c -fomit-frame-pointer. Иначе без таблицы просто нельзя будет получить текущий стек (ну ладно, можно анализируя код, но это будет очень долго). Они, возможно, тоже блокируются при подобных операциях.
В принципе можно было бы сделать включение этого режима через какой-то флаг и переправить ответственность за abi на клиентов, тем кому это реально нужно.
И есть много ошибок, для устранения которых не нужно ничего делать, просто вернуть эту ошибку пользователю и продолжить работу. Но кроме исключений стандартная библиотека не дает особо вариантов.
ps. Есть конечно вариант писать код так, чтобы исключений не возникало, ну то есть, например, запретить использовать std::map::at и всегда искать через std::map::find. И так для каждого контейнера. Но без автоматических проверок, такой способ, к сожалению, не скейлится =(
И опять же, в expected тип ошибки параметризуемый. Или вы предлагаете стандартизировать оптимизацию — прятать ошибку в указателях, если она может быть воткнута в N бит (где N зависит от конкретной платформы)? По-моему это чересчур специфично для general purpose класса.
Было бы круто. Но, если честно, слабо верится, что люди смогут договорится что в конкретную эпоху должно входить.
это имеется в виду std::executor? Жаль, что не прошел. Там какие-то проблемы нашли или просто не успели?
Не знаю как у других, но я выбираю читать статью или нет только по заголовку. Если он как-то совсем не соответствует статье, хотелось бы это донести.