Рубрика «Си» - 9

Зло в функциях сравнения
Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать полностью »

Jonathan CorbetПорой кажется, что на фронте борьбы с проблемой 2038 года наступило относительное затишье. Однако время идет, и тот день, когда 32-битные значения типа time_t больше не смогут корректно отображать даты, наступит уже меньше чем через 21 год. Этот срок может показаться большим, однако сравнительно долгий жизненный цикл многих встраиваемых систем подразумевает, что некоторые из них, будучи введенными в строй в наше время, все еще будут работать, когда наступит критический момент. Арнд Бергманн — один из основных разработчиков, занимающихся этой проблемой. На конференции Linaro Connect 2017 он поделился новостями о текущем положении дел в этой области.
Читать полностью »

Дружба статического и динамического анализаСразу скажу, что статья пишется вовсе не для того, чтобы показать, что статический анализ работает лучше, чем динамический. Такое утверждение будет неверным, так же, как и обратное. Инструменты статического и динамического анализа дополняют друг друга, а не конкурируют между собой. У тех, и у тех есть сильные и слабые стороны. Некоторые ошибки не могут обнаруживать динамические анализаторы, а некоторые — не могут найти статические. Поэтому, следует отнестись к этой заметке просто, как к очередной демонстрации возможностей PVS-Studio, а не как к сравнению двух методологий.
Читать полностью »

Как используя PVS-Studio можно улучшить Visual C++ 2017 Libraries - 1Название статьи намекает разработчикам Visual Studio, что они могут получать пользу от использования статического анализатора кода PVS-Studio. В статье приводятся результаты анализа библиотек, входящих в состав недавно выпущенной версии Visual C++ 2017, и даются рекомендации по улучшению и устранению ошибок. Приглашаю читателей узнать, как разработчики Visual C++ Libraries отстреливают ноги: будет интересно и познавательно.
Читать полностью »

Что нам делать с ошибками?
Если вы считаете себя хорошим программистом, ну, скажем так, вы оцениваете свой уровень выше среднего, прошу не читать эту статью. Эта статья предназначена для менеджеров программных проектов. С ними я хочу обсудить хотя и важные, но скучные для программистов вопросы, связанные с методологией статического анализа кода.
Читать полностью »

Почему на то, чтобы найти точное значение постоянной Планка, понадобилось 100 лет? - 1

Перевод поста Майкла Тротта (Michael Trott) "An Exact Value for the Planck Constant: Why Reaching It Took 100 Years".
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации


Содержание

Некоторые мысли по случаю Всемирного дня метрологии в 2016 году
Введение и немного обо мне
От истоков метрической системы до сегодняшних дней.
Увеличение числа констант
Существующая система СИ и проблема килограмма
Новая СИ
Секунда
Моль
Кельвин
Ампер
Кандела
Почему основных единиц измерения именно 7?
Путь к изменению определения килограмма


Повествование ведется от имени Жана-Шарля де Борда.

Некоторые мысли по случаю Всемирного дня метрологии в 2016 году

Позвольте мне представиться:
Я человек науки и люблю точность.
Все это время я был где-то рядом.
Я забрал у людей фунт и туаз.
И я был рядом с Людовиком XVI
В минуты его сомнений и боли.
Я чертовски уверен в том, что метрическая рулетка,
Благодаря платиновым стандартам будет установлена раз и навсегда.
Я рад встрече с вами!
Надеюсь, вы угадали, как меня зовут?

Введение и немного обо мне

Если вы еще не догадались, я — Жан-Шарль де Борда: моряк, математик, ученый и член Академии наук. Я родился 4 мая 1733 года в городе Дакс во Франции. Две недели назад я отметил свой двести восемьдесят третий день рождения. А вот и я:

Почему на то, чтобы найти точное значение постоянной Планка, понадобилось 100 лет? - 2

В моем родном городе в честь меня воздвигли памятник. Если вы будете неподалеку, задержитесь, чтобы посмотреть на него. Если вы не знаете, где находится Дакс, вот карта:

Почему на то, чтобы найти точное значение постоянной Планка, понадобилось 100 лет? - 3

Когда я был мальчиком, Франция выглядела примерно так же, как сейчас. У нас было немного меньше территории с восточной стороны, но зато в Северной Америке моей стране принадлежал хороший кусок земли:

Почему на то, чтобы найти точное значение постоянной Планка, понадобилось 100 лет? - 4
Читать полностью »

Привет всем, не знаю зачем это надо, но может кому пригодится…

Дисклеймер: Я ни в коем случае не являюсь профессиональным Си программистом.

Что нам понадобится:

1. Любой компьютер на Linux, Ubuntu, Centos, MacOS… с доступом к порту 443 или 8443 из интернета.
2. Любой Си компилятор
3. Бибилиотеки openssl, libssl-dev («apt-get install openssl libssl-dev» в терминале, для Ubuntu)
Читать полностью »

FreeBSD, CWE
Пришло время вновь проверить проект FreeBSD и продемонстрировать, что даже в таких серьезных и качественных проектах анализатор PVS-Studio легко находит ошибки. В этот раз я решил взглянуть на поиск ошибок с точки зрения обнаружения потенциальных уязвимостей. Анализатор PVS-Studio всегда умел выявлять дефекты, которые потенциально можно использовать для атаки. Но мы никогда не акцентировали на этом внимание и описывали ошибки как опечатки, последствия неудачного Copy-Paste и так далее, и не классифицировали их, например, согласно CWE. Сейчас очень популярно говорить и о безопасности, и об уязвимостях, поэтому попробую немного расширить ваше восприятие нашего анализатора. PVS-Studio — это не только поиск багов, но ещё и инструмент, повышающий безопасность кода.
Читать полностью »

почему статические анализаторы борятся с ложными срабатываниями
В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализатором как особый случай, на который сознательно не выдаётся предупреждение. Если честно, я не ожидал такого всплеска комментариев на тему того, что анализатор может очень редко, но не выдать предупреждение на ошибку из-за реализованных в нём механизмов отсечения ложных срабатываний. Борьба с ложными срабатываниями настолько большая составляющая любого статического анализатора, что как-то даже не понятно, что тут собственно обсуждать. Это надо делать и всё. Такие механизмы существуют не только в нашем анализаторе, но и в других анализаторах/компиляторах. Тем не менее, раз этот момент вызвал столь бурное обсуждение, я думаю, стоит уделить ему внимание, поэтому и написал эту поясняющую статью.
Читать полностью »

Правим потенциальные уязвимости
Мы решили в меру своих сил регулярно искать и устранять потенциальные уязвимости и баги в различных проектах. Можно назвать это помощью open-source проектам. Можно — разновидностью рекламы или тестированием анализатора. Еще вариант — очередной способ привлечения внимания к вопросам качества и надёжности кода. На самом деле, не важно название, просто нам нравится это делать. Назовём это необычным хобби. Давайте посмотрим, что интересного было обнаружено в коде различных проектов на этой неделе. Мы нашли время сделать исправления и предлагаем вам ознакомиться с ними.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js