История на тему: лицензия библиотеки json.org (парсер для JSON) в свое время включала в себя слова "The Software shall be used for Good, not Evil". По этому поводу в свое время была небольшая драма, когда в Debian решили, что это не свободная лицензия.
Был после этого и исторический анекдот. IBM купила коммерческую лицензию на эту либу, и автор шутил, что IBM официально купила у него право использовать JSON парсер чтобы творить ЗЛО.
Точно 99% избегаете? При том, что одной хватит, чтобы разрушить всю программу.
Если более серьезно, то на мой взгляд основной источник ошибок – работа с указателями/ссылками, обработка ошибок и внезапный null (в языках, которые это разрешают), и многопоточность. От этих вещей Раст защищает неплохо. Почти то же самое могу сказать про ТайпСкрипт – если оно протайпчекалось, то undefined is not a function в рантайме, скорее всего, не полетит (но тайпчекер там очень легко заткнуть, к сожалению).
От логических ошибок, типа там надо было добавить один, а мы умножили на три, очень помогает опыт программирования на любом языке и привычка продумывать алгоритмы. И разумеется, тесты. Логику ими проверять очень хорошо.
надо обязательно знать во что оно именно компилируется в асме
Все ещё хуже. Можно посмотреть ассемблерный код, убедиться, что все в порядке, а потом меняется один трёх десятков флагов компилятора, и программа начинает выполнять rm -rf /. Почему? А вон там где-то есть UB, и компилятор по Стандарту может выдавать в принципе любой код в таком случае.
- Толя, - зову я Наймана, - пойдемте в гости к Леве Друскину. - Не пойду, - говорит, - какой-то он советский. - То есть, как это советский? Вы ошибаетесь! - Ну, антисоветский. Какая разница.
Я прочитал пост по ссылке, и там слегка не любят Томасоза и очень сильно Герба Саттера, но последний же как раз первого не стал защищать, непонятно как-то кто на чьей стороне. И давно ли Карл Маркс стал антисемитом тоже интересный вопрос...
Посоветуют не заниматься маниловщиной и вернуться на грешную землю? Когда в прошлый раз люди хотели порешать вопросы с UB в плюсах, на выходе получился Раст. UB, ЧСХ, остались.
В Расте тонкости обычно класса "да как же заставить этот @!#?@! код компилироваться?!" и если начать копать, почему же именно он не компилируется и как это исправить, то кроличья нора может оказаться весьма глубока. Если безопасный Раст скомпилировался, то он почти наверняка работает как надо.
values.yaml 😅 есть внутренняя дока и примеры как что вписывается и куда (ну и ещё, конечно же, ctrl-c,ctrl-v из соседнего проекта). чтобы выкатить новую версию обычно используют --set и передают imageTag
Это получше, чем прям весь Deployment писать, да. Из values.yaml можно попробовать сделать терпимый интерфейс для продуктовых программистов, особенно если к нему прикрутить систему овероайдов (стейджинг/прод, например), а внутри темплейтов делать особую хелмовскую магию. Правда в какой-то момент разбирать пять уровней вложенности условий в земле становится неприятно даже тем, кому это по службе положено.
если replicas: 1, то мы не создаем объект pdb
Вот да, такого рода магию я и имел виду. Ради интереса: а maxUnavailable=0 и общий случай minAvailable=replicas вы отлавливаете?
Один чарт на все это интересная идея. Допустим, я продуктовый разработчик, что я делаю чтобы тупо выкатить новую версию? А если я хочу поменять количество реплик, или настройки HPA, или настройки readiness probe?
А здесь нас закрывает свои authorization и admission webhook
Это рабочий подход, особенно если ошибки явно выкидываются, а не как я иногда видел: Deployment есть, Replicaset есть, а подов нет. Начинаешь разбираться, смотришь на события и видишь, что ReplicaSet старательно пыьается создавать поды, а validation webhook не менее старательно их отбивает.
На самом деле я больше думал безопасность типа hostNetwork, а про PDB maxUnavailable=0 или minAvailable=1 при поде-синглтоне: оно работает нормально и все вроде ОК, но когда приходит пора апгрейдить кластер, процесс становится нетривиальным :)
Тонкости языка это ладно. Основная проблема плюсов, на мой взгляд, в том, что практически никто из людей не может писать на плюсах без UB. Ну то есть кто-то, наверное, может, есть люди которые стометровку за десять секунд бегают, но вот, например, Дедфуд, Великий и Ужасный, в своих способностях писать на C++ без UB не уверен. А если он не может, то что уж говорить об остальных...
Ну в плюсах есть RAII, умные указатели, this в методы как-то сам передается, ещё какой-то там синтаксический сахар, система типов пытается что-то там из себя изобразить... Пример того, что я имею в виду – Линус про C++ и программистов на нем (хотя конкретно этот письмо было и позже 2000, да).
Я согласен с тем, что C++ примерно в бесконечное число раз сложнее С, но это предмет для отдельного сра... обсуждение.
Вот не люблю Го, но давайте придерживаться фактов: этому языку уже 15 лет, то есть это примерно как плюсы в 2000 году. Хотя да, тогда плюсы именно и называли короткоживущей поделкой для тех, кто не смог в сишечку.
Если посмотреть на World in Conflict и Modern Warfare 2/3 в отрыве от всего остального, то первая выглядит скорее не как деконструкция, а как недостроенный штамп (unbuilt trope). Но, конечно, клюквенный Red Alert 2 уже был. С другой стороны, Massive Entertainment – шведы, фиг знает какие у них штампы и стереотипы. "Что хотел сказать автор" понять непросто.
В защиту Homefront скажу, что тамошняя Северная Корея больше похожа на собирательный образ Юго-Восточной Азии и эксплуатирует все соответствующие страхи. Во второй части даже киберпанк завезли.
Насколько я помню, POST после мягкой перезагрузки все равно происходил, идея была скорее в том, чтобы избежать лишний раз сброса питания, переходные процессы для механики (да и электроники) не особо полезны.
Опять же, по воспоминаниям старые клавиатуры при нажатии Ctrl+Alt+Del выдавали специально обученное прерывание на очень низком уровне, прямо в железе, и именно поэтому такое сочетание в Windows NT выбрали как признак того, что пользователь находится у компа.
История на тему: лицензия библиотеки json.org (парсер для JSON) в свое время включала в себя слова "The Software shall be used for Good, not Evil". По этому поводу в свое время была небольшая драма, когда в Debian решили, что это не свободная лицензия.
Был после этого и исторический анекдот. IBM купила коммерческую лицензию на эту либу, и автор шутил, что IBM официально купила у него право использовать JSON парсер чтобы творить ЗЛО.
EDIT: рано отправил.
Я вот не настолько прошаренный в работах Карла Маркса, и мне казалось, что он был интернационалистом, а не антисемитом...
Я просто оставлю это здесь
Точно 99% избегаете? При том, что одной хватит, чтобы разрушить всю программу.
Если более серьезно, то на мой взгляд основной источник ошибок – работа с указателями/ссылками, обработка ошибок и внезапный null (в языках, которые это разрешают), и многопоточность. От этих вещей Раст защищает неплохо. Почти то же самое могу сказать про ТайпСкрипт – если оно протайпчекалось, то undefined is not a function в рантайме, скорее всего, не полетит (но тайпчекер там очень легко заткнуть, к сожалению).
От логических ошибок, типа там надо было добавить один, а мы умножили на три, очень помогает опыт программирования на любом языке и привычка продумывать алгоритмы. И разумеется, тесты. Логику ими проверять очень хорошо.
Но Secure Boot же работает на TPM 1.2
Ехал файнал через файнал,
Видит файнал – в файнал файнал
Сунул файнал файнал в файнал,
Файнал файнал файнал файнал.
Полностью согласен: корректна программа на C++ или нет можно понять исключительно по ее исходному коду. Ассемблерный код в этом совершенно бесполезен.
Все ещё хуже. Можно посмотреть ассемблерный код, убедиться, что все в порядке, а потом меняется один трёх десятков флагов компилятора, и программа начинает выполнять
rm -rf /
. Почему? А вон там где-то есть UB, и компилятор по Стандарту может выдавать в принципе любой код в таком случае.Вспоминается Довлатов
- Толя, - зову я Наймана, - пойдемте в гости к Леве Друскину.
- Не пойду, - говорит, - какой-то он советский.
- То есть, как это советский? Вы ошибаетесь!
- Ну, антисоветский. Какая разница.
Я прочитал пост по ссылке, и там слегка не любят Томасоза и очень сильно Герба Саттера, но последний же как раз первого не стал защищать, непонятно как-то кто на чьей стороне. И давно ли Карл Маркс стал антисемитом тоже интересный вопрос...
Посоветуют не заниматься маниловщиной и вернуться на грешную землю? Когда в прошлый раз люди хотели порешать вопросы с UB в плюсах, на выходе получился Раст. UB, ЧСХ, остались.
В Расте тонкости обычно класса "да как же заставить этот @!#?@! код компилироваться?!" и если начать копать, почему же именно он не компилируется и как это исправить, то кроличья нора может оказаться весьма глубока. Если безопасный Раст скомпилировался, то он почти наверняка работает как надо.
В стандарте языка они есть, увы и ах. Вопрос со звёздочкой: зачем их ввели в стандарт?
Это получше, чем прям весь Deployment писать, да. Из
values.yaml
можно попробовать сделать терпимый интерфейс для продуктовых программистов, особенно если к нему прикрутить систему овероайдов (стейджинг/прод, например), а внутри темплейтов делать особую хелмовскую магию. Правда в какой-то момент разбирать пять уровней вложенности условий в земле становится неприятно даже тем, кому это по службе положено.Вот да, такого рода магию я и имел виду. Ради интереса: а maxUnavailable=0 и общий случай minAvailable=replicas вы отлавливаете?
EDIT: опечатка
Один чарт на все это интересная идея. Допустим, я продуктовый разработчик, что я делаю чтобы тупо выкатить новую версию? А если я хочу поменять количество реплик, или настройки HPA, или настройки readiness probe?
Это рабочий подход, особенно если ошибки явно выкидываются, а не как я иногда видел: Deployment есть, Replicaset есть, а подов нет. Начинаешь разбираться, смотришь на события и видишь, что ReplicaSet старательно пыьается создавать поды, а validation webhook не менее старательно их отбивает.
На самом деле я больше думал безопасность типа hostNetwork, а про PDB maxUnavailable=0 или minAvailable=1 при поде-синглтоне: оно работает нормально и все вроде ОК, но когда приходит пора апгрейдить кластер, процесс становится нетривиальным :)
Тонкости языка это ладно. Основная проблема плюсов, на мой взгляд, в том, что практически никто из людей не может писать на плюсах без UB. Ну то есть кто-то, наверное, может, есть люди которые стометровку за десять секунд бегают, но вот, например, Дедфуд, Великий и Ужасный, в своих способностях писать на C++ без UB не уверен. А если он не может, то что уж говорить об остальных...
Ну в плюсах есть RAII, умные указатели,
this
в методы как-то сам передается, ещё какой-то там синтаксический сахар, система типов пытается что-то там из себя изобразить... Пример того, что я имею в виду – Линус про C++ и программистов на нем (хотя конкретно этот письмо было и позже 2000, да).Я согласен с тем, что C++ примерно в бесконечное число раз сложнее С, но это предмет для отдельного
сра...обсуждение.Вот не люблю Го, но давайте придерживаться фактов: этому языку уже 15 лет, то есть это примерно как плюсы в 2000 году. Хотя да, тогда плюсы именно и называли короткоживущей поделкой для тех, кто не смог в сишечку.
Если посмотреть на World in Conflict и Modern Warfare 2/3 в отрыве от всего остального, то первая выглядит скорее не как деконструкция, а как недостроенный штамп (unbuilt trope). Но, конечно, клюквенный Red Alert 2 уже был. С другой стороны, Massive Entertainment – шведы, фиг знает какие у них штампы и стереотипы. "Что хотел сказать автор" понять непросто.
В защиту Homefront скажу, что тамошняя Северная Корея больше похожа на собирательный образ Юго-Восточной Азии и эксплуатирует все соответствующие страхи. Во второй части даже киберпанк завезли.
Насколько я помню, POST после мягкой перезагрузки все равно происходил, идея была скорее в том, чтобы избежать лишний раз сброса питания, переходные процессы для механики (да и электроники) не особо полезны.
Опять же, по воспоминаниям старые клавиатуры при нажатии Ctrl+Alt+Del выдавали специально обученное прерывание на очень низком уровне, прямо в железе, и именно поэтому такое сочетание в Windows NT выбрали как признак того, что пользователь находится у компа.