Рубрика «ошибки в коде» - 2

Всем привет! Вдохновленные успехом предыдущей статьи, которая была написана в преддверии запуска курса "Fullstack разработчик JavaScript", мы решили продолжить серию статей для новичков и всех тех, кто только начинает заниматься программированием на языке JavaScript. Cегодня мы поговорим об ошибках, которые случаются в JS, а также о том, как именно с ними бороться.

Ошибки в JavaScript: исправляем, обрабатываем, чиним - 1

Отдебажь за человека одну ошибку, и он будет благодарен тебе один пулл реквест. Научи его дебажить самостоятельно, и он будет благодарен тебе весь проект.

Неизвестный тимлид

Читать полностью »

Picture 2

Уже стало традицией, что программисты, пополняющие команду PVS-Studio, начинают свою деятельность с написания статьи про анализ проекта с открытым исходным кодом. В этот раз таким проверенным проектом станет Telerik UI for UWP.
Читать полностью »

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

define

Язык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже!

Сразу оговорюсь, что я не являюсь фанатиком и не призываю отказываться от макросов из идеалистических соображений. Например, когда речь заходит о ручной генерации однотипного кода, я могу признать пользу от макросов и смириться с ними. Например, я спокойно отношусь к макросам в старых программах, написанных с использованием MFC. Нет смысла воевать с чем-то вроде этого:

BEGIN_MESSAGE_MAP(efcDialog, EFCDIALOG_PARENT )
  //{{AFX_MSG_MAP(efcDialog)
  ON_WM_CREATE()
  ON_WM_DESTROY()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

Существуют такие макросы, да и ладно. Они действительно были созданы для упрощения программирования.

Я говорю о других макросах, с помощью которых пытаются избежать реализации полноценной функции или стараются сократить размер функции. Рассмотрим несколько мотивов избегать таких макросов.
Читать полностью »

Как разобраться в «иностранном» коде и влиться в новую команду? - 1

Как только разработчик попадает в компанию и получает задачу, чаще всего оказывается, что ему нужно присоединиться к общему проекту какой-то команды, а не писать свой код с нуля.

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

PVS-Studio для Java

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальнейшие планы. И, конечно, в статье будут приведены первые испытания анализатора на открытых проектах.
Читать полностью »

PVS-Studio free for open source

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub или Bitbucket. Им предоставляется возможность бесплатного использования статического анализатора PVS-Studio для развития открытых проектов.
Читать полностью »

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 1

Далее можно загрузить это в IDA и увидеть, что всё в таблице импортированных адресов выглядит нормально, и мы можем проследовать по перекрёстным ссылкам для установки указателя на нужном файле. Так мы попадаем именно в точку расположения зависимого кода шифрования.

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 2 - 1

Таким образом, с помощью всего нескольких команд для дампа памяти мы нашли место, в котором спрятался Coreflood. Мы деассемблировали, извлекли и вставили заголовок PE, даже не имея его, и получили полностью восстановленную таблицу адресов менее чем за 20 секунд.

Следующая история называется «Дорогая, извини, что снова тебя побеспокоил – я ужал интернет»! Эта история повествует о том, что дефектный IP-генератор Conficker.B сканирует только часть интернета. Здесь мы снова возвращаемся к функции rand. Важной частью этой функции является самая последняя инструкция, которую я пометил зелёной стрелкой – она выполняет любое конечное значение в EAX с величиной 7FFF. Если вы не знакомы с принципами ассемблирования и не знаете, что может сделать эта инструкция, то вот небольшое демо по этому поводу.

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 2 - 2Читать полностью »

Майкл: приветствую всех, я Майкл Лай, это Мэттью Ричард, вы можете звать его Мэтт или Ричард, потому что у него два имени, но это не имеет значения.

Мэтт: Тема нашего сегодняшнего разговора – высмеивание вредоносных программ, и это именно то, что мы стараемся делать.

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 1 - 1

Итак, не все, кто пишет код, делают это хорошо, люди совершают при этом множество ошибок. И не все, кто использует вирус, делают это правильно. Также существуют люди, которые терпят неудачу в обоих этих случаях. Так что усаживайтесь удобней, расслабьтесь и слушайте, возможно, эта информация окажется для вас полезной.

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

Как PVS-Studio оказался внимательнее, чем три с половиной программиста

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь оказался внимательнее нескольких человек.

Нам в поддержку написал пользователь, утверждая, что анализатор выдаёт сразу четыре ложных срабатывания на одну строчку кода. Письмо, написанное в поддержку, изначально попало к Евгению Рыжкову, который, бегло прочитав его и не заметив аномального в фидбеке, сразу переслал его ведущему разработчику Святославу Размыслову. Евгений не всматривался в код, так что будет честно посчитать его только за половину программиста :).
Читать полностью »


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