Как системщику остаться в живых: харденинг, который не убьет ваш перфоманс

Здравствуйте, меня зовут Анна Мелехова. Я старший архитектор в отделе развития архитектуры KasperskyOS. В статье я хочу поделиться практическим опытом системной разработки, которой я занималась сначала в проекте по виртуализации, а теперь в «Лаборатории Касперского», где мы делаем микроядерную операционную систему с повышенными требованиями к безопасности – KasperskyOS . Когда вы работаете в такой среде, быстро понимаете: харденинг – это не красивые галочки в чек-листе, а набор очень конкретных, очень практических решений, которые должны и защищать, и минимально снижать производительность. О них я и расскажу, а в конце дам личный топ самых полезных харденингов, которые бустят security и не снижают performance.

https://habr.com/ru/companies/kaspersky/articles/968388/

#kasperskyos #системное_программирование #харденинг #canary #aslr #cfi

Как системщику остаться в живых: харденинг, который не убьет ваш перфоманс

Здравствуйте, меня зовут Анна Мелехова. Я старший архитектор в отделе развития архитектуры KasperskyOS. В статье я хочу поделиться практическим опытом системной разработки, которой я занималась...

Хабр

Как мы пихнули полноценный цифровой протокол в NTC-пин батареи — и почему это вообще работает

Есть старая инженерная мудрость: Если у вас не хватает проводов — значит, вы недостаточно творчески подходите к вопросу. У нас была ровно такая ситуация. Работая на одном проекте системы «умного города» мы, уйдя в стандарт «одна плата с разными конфигами для всего» решили делать на ней свой BMS. Зачем да почему? Нужно было универсальное решение, которое должно работать и с литиевыми, и со свинцовыми батареями, и с ещё парой экзотических химий, встречающихся в природе примерно так же часто, как радужные единороги. Нужно было надёжно определять тип батареи, считывать её состояние, пригодность к использованию, дату производства и всё‑всё‑всё подобное, блокировать несовместимые варианты и вообще предотвращать самое главное — человеческую ошибку. Но как это часто бывает в компаниях где в R&D священный хаос — никто и не задумывался чтобы сесть и обсудить «А как мы вообще это делать будем». В производство ушла тысяча плат. В любой другой ситуации мы бы пошли по наименьшему пути сопротивления: i2c на коннекторе рядом и EEPROM на аккуме. Но не тут было.

https://habr.com/ru/articles/969940/

#электроника #diy #smart_city #обработка_сигналов #системное_программирование #lowpower #uart #adc #reverseengineering

Как мы пихнули полноценный цифровой протокол в NTC-пин батареи — и почему это вообще работает

0. Пролог Есть старая инженерная мудрость: Если у вас не хватает проводов — значит, вы недостаточно творчески подходите к вопросу. У нас была ровно такая ситуация. Работая на одном проекте...

Хабр

λ-исчисление в 30 строк. Реализация лямбда-исчисления

Если вы когда-нибудь задумывались о написании своего языка программирования, в особенности функционального, то должны быть в курсе, что лямбда исчисление — это основа всех функциональных языков. Я решил сделать цикл статей, где мы будем реализовывать интересные алгоритмы, используемые в компиляторах, а также различные исчисления. Лямбда‑исчисление — это фундамент, с которого я и предлагаю начать погружение в эту нору.

https://habr.com/ru/articles/964630/

#лямбдаисчисление #лямбдавыражения #лямбды #лямбдафункция #лямбдафункции #лямбда #математика #математическое_моделирование #программирование #системное_программирование

λ-исчисление в 30 строк. Реализация лямбда-исчисления

Если вы когда-нибудь задумывались о написании своего языка программирования, в особенности функционального, то должны быть в курсе, что лямбда исчисление - это основа всех функциональных языков. Я...

Хабр

Список 10 лучших IDE и редакторов кода для веб‑разработчиков

Веб-разработка — одна из самых динамично развивающихся областей IT. Чтобы работать эффективно и создавать качественный код, важно выбрать правильный инструмент. В данной статье мы рассмотрим 10 лучших IDE и редакторов кода, которые помогут веб-разработчикам ускорить процесс, улучшить качество проектов и сделать повседневную работу удобнее и приятнее. Если вам нравится IT-тематика и полезные советы, заглядывайте в мой Telegram-канал . Там я часто публикую свежие новости и разные полезности. А теперь давайте перейдём к сути статьи. Писать код можно даже в обычном текстовом редакторе — ничто не мешает создать простой сайт в «Блокноте» и сохранить его с расширением .html. Но для более удобной и быстрой работы рекомендуется использовать интегрированные среды разработки (IDE) или продвинутые редакторы.

https://habr.com/ru/articles/964448/

#ide #текстовый_редактор #системное_программирование #софт #редактор_кода #редактор #visual_studio #visual_studio_code #spyder #phpstorm

Список 10 лучших IDE и редакторов кода для веб‑разработчиков

не ты ли случаем? Веб-разработка — одна из самых динамично развивающихся областей IT. Чтобы работать эффективно и создавать качественный код, важно выбрать правильный инструмент. В данной статье мы...

Хабр

[Перевод] Rust без паник: дельная техника для системного программирования

Может ли Rust заменить C? Этот вопрос беспокоил меня много лет. Тем временем я успел написать upb — библиотеку C для работы с Protocol Buffers, и сейчас являюсь её техническим руководителем. Вполне понятно стремление обеспечить безопасность памяти в пределах всего программного стека — поэтому и возникла идея портировать upb на Rust. Притом, что мне приятны базовые принципы Rust, я долгое время относился к этой идее скептически и сомневался, что, портировав upb на Rust, удастся сберечь её производительность и компактность кода, которые мы с коллегами так старались оптимизировать. На самом деле, исходно я собирался написать статью о том, почему именно применительно к upb языку Rust никогда не сравниться с C по производительности. Но недавно я открыл для себя одну технику, которая заставила меня немного переосмыслить этот вопрос. Я назову её «Rust без паник». Притом, что этот метод определённо не нов, мне нигде не удалось найти подробного разбора, в котором бы рассказывалось, как именно этот метод используется и какие проблемы решает. Правда, интересная дискуссия по этому поводу велась в теме Enforcing no-std and no-panic during build , где есть ссылки на некоторые релевантные треды из почтовой рассылки, посвящённой разработке ядра Linux. Вот другой интересный тред: Negative view on Rust: panicking Надеюсь, эта статья позволит заполнить данный пробел.

https://habr.com/ru/articles/962070/

#Rust #паника #системное_программирование #api #оптимизация

Rust без паник: дельная техника для системного программирования

Может ли Rust заменить C? Этот вопрос беспокоил меня много лет. Тем временем я успел написать  upb — библиотеку C для работы с Protocol Buffers, и сейчас являюсь её техническим руководителем....

Хабр

Пошаговая разработка SPI драйвера для ЗОСРВ «Нейтрино»

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

https://habr.com/ru/companies/swd_es/articles/948322/

#программирование #операционные_системы #драйверы #spi #системное_программирование #встраиваемые_системы #зосрв #зосрв_нейтрино

Пошаговая разработка SPI драйвера для ЗОСРВ «Нейтрино»

В современных встраиваемых системах SPI остаётся одним из ключевых интерфейсов для обмена данными с периферийными устройствами — от датчиков до Flash-памяти. При этом эффективная работа с SPI требует...

Хабр

Как мы видеокарту AMD на ПЛИС с RISC-V и Linux запускали

У нас была рабочая видеокарта, драйвер для нее, Linux, полный набор кода, который заставлял работать нашу видеокарту, возможно, была даже прошивка. Не то чтобы это был необходимый запас для запуска AMD GPU на ПЛИС с RISC-V. Но если начал запускать видеокарту на ПЛИСе с RISC-V Linux, становится трудно остановиться…

https://habr.com/ru/companies/yadro/articles/946950/

#pcie #системное_программирование #аппаратное_обеспечение #linux #драйвера #amd #gpu #плис

Как мы видеокарту AMD на ПЛИС с RISC-V и Linux запускали

Меня зовут Сергей Мирошниченко. Я руковожу группой системного программирования в YADRO . Мой рассказ будет о том, как мы решили запустить AMD GPU на ПЛИС с RISC-V и Linux. Началось все с задачи...

Хабр

Как мы видеокарту AMD на ПЛИС с RISC-V и Linux запускали

У нас была рабочая видеокарта, драйвер для нее, Linux, полный набор кода, который заставлял работать нашу видеокарту, возможно была даже прошивка. Не то чтобы это был необходимый запас для запуска AMD GPU на ПЛИС с RISC-V. Но если начал запускать видеокарту на ПЛИСе с RISC-V Linux, становится трудно остановиться…

https://habr.com/ru/companies/yadro/articles/946950/

#pcie #системное_программирование #аппаратное_обеспечение #linux #драйвера #amd #gpu #плис

Как мы видеокарту AMD на ПЛИС с RISC-V и Linux запускали

Меня зовут Сергей Мирошниченко. Я руковожу группой системного программирования в YADRO . Мой рассказ будет о том, как мы решили запустить AMD GPU на ПЛИС с RISC-V и Linux. Началось все с задачи...

Хабр

OYBoot: как мы написали свой UEFI-загрузчик под Xeon IceLake

Создать собственный UEFI-загрузчик для серверной платформы на Intel Xeon IceLake без исходников, полной документации и официальной поддержки ― звучит как приключение. Мы в OpenYard решились на этот шаг, чтобы получить полный контроль над прошивкой, безопасность на уровне железа и независимость от вендоров. В статье наш путь: от первых проб с edk2 и FSP до релиза OYBoot, с реверсом драйверов, интеграцией BMC и борьбой за стабильный старт платформы. Узнать больше

https://habr.com/ru/companies/openyard/articles/940458/

#OpenYard #UEFI #загрузка_ос #загрузчик #системное_программирование

OYBoot: как мы написали свой UEFI-загрузчик под Xeon IceLake

Создать собственный UEFI-загрузчик для серверной платформы на Intel Xeon IceLake без исходников, полной документации и официальной поддержки ― звучит как приключение. Мы в OpenYard решились на этот...

Хабр

Echo сервер на Zig: от потоков к event loop

Давно присматривался к языку программирования Zig и наконец решил на нём что-то написать. Выбор пал на TCP/UDP echo сервер: задача не слишком сложная, но с интересными моментами, особенно при переходе на event loop. В статье поделюсь процессом и своими впечатлениями.

https://habr.com/ru/articles/939692/

#zig #программирование #бэкенд #системное_программирование #языки_программирования

Echo сервер на Zig: от потоков к event loop

Давно присматривался к языку программирования Zig и наконец решил на нём что-то написать. Выбор пал на TCP/UDP echo сервер: задача не слишком сложная, но с интересными моментами, особенно при переходе...

Хабр