Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Новое предупреждение о неверном вычислении размера массива в gcc 5.1

Блог компании ABBYYC++КомпиляторыC
Хорошие новости для пользователей gcc — при использовании gcc 5.1 и выше им будет проще быстро находить вот такую распространенную ошибку вычисления размера массива, объявленного как параметр функции:

void something( char arr[100] )
{
    // this loop is broken
    for( size_t index = 0; index < sizeof(arr)/sizeof(arr[0]); index++ ) {
       //WHATEVER
   }
}

Хотя параметр и объявлен как массив известного размера, с точки зрения компиляторов C и C++ это указатель типа char*, поэтому sizeof(arr) даст то же значение, что и sizeof(char*) – скорее всего, 4 или 8. Цикл, скорее всего, будет работать не так, как ожидалось.
Другой вариант:
void something( char encryptionKey[9000] )
{
   // WHATEVER, PROFIT

  // this call is broken
  SecureZeroMemory( encryptionKey, sizeof(encryptionKey)); // erase the key
}

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

Чтобы найти такой код было проще, в gcc 5.1 и новее на такой код выдается предупреждение и оно включено по умолчанию.
Читать дальше →
Всего голосов 40: ↑40 и ↓0 +40
Просмотры14.6K
Комментарии 35

Junior FPGA Design Engineer: как стать?

ПрограммированиеПрофессиональная литератураFPGA
Всем привет!

Иногда начинающие разработчики не очень хорошо представляют, какую литературу надо читать для серьезного изучения того или иного языка.

Разработка под FPGA (ПЛИС) — это не просто какой-то язык. Это очень объемная область, с огромным количеством подводных камней и нюансов.

В этой статье вы найдете:
  • список тем, которые должен освоить начинающий разработчик под FPGA
  • рекомендуемую литературу по каждой из тем
  • набор тестовых вопросов и лабораторных работ
  • классические ошибки новичков (и советы по исправлению)

Добро пожаловать под кат!
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Просмотры110.6K
Комментарии 55

Оптимизация сравнения this с нулевым указателем в gcc 6.1

Блог компании ABBYYC++Компиляторы


Хорошие новостиTM ждут пользователей gcc при переходе на версию 6.1 Код такого вида (взят отсюда):

class CWindow {
    HWND handle;
public:
    HWND GetSafeHandle() const
    {
         return this == 0 ? 0 : handle;
    }
};

«сломается» — при вызове метода через нулевой указатель на объект теперь может происходить разыменование нулевого указателя, потому что компилятор теперь может просто взять и удалить проверку. Код, конечно, с самого начала сломан, а gcc 6.1 его только немного доломает.
Читать дальше →
Всего голосов 66: ↑61 и ↓5 +56
Просмотры14K
Комментарии 194

Разбор явлений негативной атмосферы и как с этим бороться

Управление персоналом
Из песочницы
Recovery mode
Как гласит теория игр, в любой игре есть цель — победа. В рассматриваемой онлайн-игре речь идет о командной работе пятерых (обычно) игроков. Средство достижения цели — вклад каждого игрока из команды в победу. У каждого игрока есть своё предназначение. И в зависимости от исполнения, цель приближается или отдаляется (оставляя это на откуп других игроков, либо на волю случая). От «рабочей атмосферы» в команде также зависит насколько сильно будет делаться вклад. Вклад игроков можно как резко снизить, так и значительно повысить.

Знакомая ситуация, не правда ли? Особенно актуально для небольших компаний, с уровнем зрелости 1 или 2[1]. В данной статье будут проведены наблюдаемые параллели в мотивации игроков и айтишников. Полезно всем непосредственным менеджерам команд, техническим руководителям (тим-лидам).
Читать дальше →
Всего голосов 17: ↑12 и ↓5 +7
Просмотры3.2K
Комментарии 18

Типичные ошибки при написании юнит-тестов. Лекция Яндекса

Блог компании ЯндексРазработка мобильных приложенийРазработка под AndroidБраузерыТестирование мобильных приложений
Если освоить небольшой список типичных ошибок, возникающих при написании юнит-тестов, то можно даже полюбить писать их. Сегодня руководитель группы разработки Яндекс.Браузера для Android Константин kzaikin Заикин поделится с читателями Хабра своим опытом.


— У меня доклад практический. Надеюсь, он вам всем принесет пользу — и тем, кто юнит-тесты уже пишет, и тем, кто только думает писать, и тем, кто пробует, и у кого не получилось.
Читать дальше →
Всего голосов 42: ↑36 и ↓6 +30
Просмотры19.3K
Комментарии 32

Дизайн классов: что такое хорошо?

Блог компании DataArtПрограммированиеJavaАнализ и проектирование системIT-стандарты
Tutorial


Автор: Денис Цыплаков, Solution Architect, DataArt

За годы работы я обнаружил, что программисты из раза в раз повторяют одни и те же ошибки. К сожалению, книги, посвященные теоретическим аспектам разработки, избежать их не помогают: в книгах обычно нет конкретных, практических советов. И я даже догадываюсь, почему…

Первая рекомендация, которая приходит в голову, когда речь заходит, например, о логировании или дизайне классов, очень простая: «Не делать откровенной ерунды». Но опыт показывает, что ее определенно недостаточно. Как раз дизайн классов в этом случае хороший пример — вечная головная боль, возникающая из-за того, что каждый смотрит на этот вопрос по-своему. Поэтому я и решил собрать в одной статье базовые советы, следуя которым, вы избежите ряда типичных проблем, а главное, избавите от них коллег. Если некоторые принципы покажутся вам банальными (потому что они действительно банальны!) — хорошо, значит, они уже засели у вас в подкорке, и вашу команду можно поздравить.

Оговорюсь, на самом деле, мы сосредоточимся на классах исключительно для простоты. Почти то же самое можно сказать о функциях или любых других строительных блоках приложения.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Просмотры17.6K
Комментарии 29

Пишем unit тесты так, чтобы не было мучительно больно

Блог компании Центр Финансовых Технологий (ЦФТ)ПрограммированиеTDDРазработка под AndroidKotlin


Любую задачу в программировании можно выполнить массой разных способов, и не все они одинаково полезны. Хочу рассказать о том, как можно накосячить при написании модульных тестов. Я пишу мобильные приложения уже 6 лет, и в моем «багаже» много разных кейсов. Уверен, что кому-то будет полезно.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры6K
Комментарии 0