В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.
Рубрика «Си» - 3
Опасность устарела: несколько важных нюансов в новых стандартах C++
2024-06-27 в 14:17, admin, рубрики: C, c++, C++20, cybersecurity, LLVM, qt, stm32, undefined behavior, безопасность, информационная безопасность, кибератаки, кибербезопасность, компилятор, Компиляторы, Программирование, разработка, Си, системное программирование, статический анализ кода, уязвимости, языки программированияТворим дичь с помощью инструментов веб-разработки
2024-06-24 в 21:59, admin, рубрики: c++, transpiler, Компиляторы, СиИли что бывает если заставить очень опытного разработчика заниматься не своим делом. Думаю после этой статьи термин «overqualified» заиграет для вас новыми красками.
От авторов, запихнувших веб‑сервер на визитку и локализующих корпоративные приложения на клингонский — держим марку!
FUSE: как написать свою файловую систему
2024-06-20 в 14:09, admin, рубрики: filesystem, filesystems, fuse, inode, tarantool, Программирование, разработка, Си, файловая система, файловые системыМеня зовут Максим, я ведущий разработчик в VK. Занимаюсь инфраструктурой доставки электронной почты в проекте Mail.ru. Наша команда разработала и довела до эксплуатации файловую систему (ФС) на FUSE в рамках проекта распределённой почтовой очереди. В проекте требовалось реализовать сетевую ФС, которая сохраняет данные в трёх копиях, в разных ЦОДах. Цель — повысить отказоустойчивость, чтобы полный выход из строя одного ЦОД не приводил к нарушениям SLA. Эта статья для всех, кто интересуется файловыми системами и хранением данных. Мы обсудим:
-
зачем писать свою ФС;
Объявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов
2024-05-30 в 7:53, admin, рубрики: C, c++, pvs-studio, баги, Компиляторы, Красная книга, нотация Йоды, ошибки в коде, Программирование, Си, статический анализ кода
Если спросить программиста, какие баги чаще всего можно встретить в C и C++ коде, он назовёт разыменование нулевого указателя, неопределённое поведение, выход за границу массива и другие, на его взгляд, типовые паттерны ошибок. Скорее всего, он назовёт и случайное присваивание в условии. Но действительно ли эта ошибка распространена в наше время?
Следует ли проверять указатель на NULL перед вызовом функции free?
2024-02-06 в 12:53, admin, рубрики: C, free, malloc, макросы, нулевые указатели, Программирование, Си, указатели
Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.
Оптимизируя неоптимизируемое: ускорение компиляции C++
2024-01-12 в 13:00, admin, рубрики: fmt, ruvds_перевод, stdio, компиляция, оптимизация, С++, Си, стандартные библиотеки
В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.
Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:
- Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в
printf. - Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
- Производительность. {fmt} намного быстрее любой распространённой реализации
printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой). - Возможность переноса поддержки Unicode.
Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.Читать полностью »
Пишем printf на языке ассемблера FASM
2023-10-31 в 16:25, admin, рубрики: C, fasm, printf, ассемблер, Программирование, СиВведение
Иногда, и чаще всего спонтанно, у меня появляется дикое желание реализовывать что-либо на языке ассемблера, а потом прикручивать это "что-либо" на уровни выше. Так например, ранее из-за такого желания я написал сначала стековую виртуальную машину, которая могла принимать в себя байт-код и непосредственно его исполнять, далее написал ассемблер, который мог бы транслировать язык ассемблера в этот самый байт-код, а после и написал высокоуровневый LISP-подобный язык, который компилировался в ассемблерный код ранее написанной виртуальной машины.
Как я писал свою первую игру для Dendy
2023-10-13 в 17:34, admin, рубрики: dendy, Famicom, Nes, ассемблер, разработка игр, Си
Что такое Dendy? Что так любит детвора? Это электронная игра! Ооо, дендиии...
Думаю, что у многих читателей хабра был один из многочисленных клонов Dendy (а точнее консоли Famicom). Я в этом плане не исключение, причем даже получилось сохранить мою приставку из детства (но картриджи были утеряны:().
Запуск Тетриса на осциллографе из 90-х
2023-09-29 в 9:08, admin, рубрики: tektronix, реверс-инжиниринг, СиВведение
Немного о самом осциллографе. Речь пойдет про Tektronix TDS540D. Судя по серийному номеру (его все еще можно проверить на сайте производителя), осциллограф изготовлен в конце 1998 года. Несмотря на то, что осциллографу уже больше двадцати лет, его характеристики неплохи даже по нынешним меркам:
-
4 канала
-
Частота дискретизации - 2 GS/s.
-
Полоса пропускания - 500 MHz
Недостатком являются - вес (больше 10 кг), немаленькие размеры, шум при работе. Во многом они связаны с тем, что осциллограф использует ЭЛТ в качестве экрана.
Индикатор добротности. Тестер катушек индуктивности
2023-08-01 в 16:01, admin, рубрики: diy или сделай сам, измерения, микроконтроллеры avr, программирование микроконтроллеров, Производство и разработка электроники, Сезон DIY, Си, схемотехника
Данный самодельный прибор может оказаться весьма полезным в радиолюбительской мастерской в некоторых случаях. Прибор позволяет оценить добротность (наличие потерь) конденсаторов и индуктивностей – дросселей и трансформаторов, и, в частности, выявлять наличие короткозамкнутых витков в них.

