C++

индекс
236,98

Перевод статьи «Pimp my Pimpl», часть 2 из песочницы

В первой части статьи, переведенной уважаемым skb7, было рассмотрено идиому Pimpl (pointer to implementation, указатель на реализацию), ее назначение и преимущества. Во второй части будет рассмотрено проблемы, возникающие при использовании этой идиомы, а также предложены некоторые варианты их решения.
+26
6 февраля 2012, 17:13
95

Не зная брода, не лезь в воду. Часть вторая

Ужасный printf
В этот раз я хочу поговорить о функции printf. Все наслышаны об уязвимостях в программах, и что функции наподобие printf объявлены вне закона. Но одно дело знать, что лучше не использовать эти функции. А совсем другое — понять почему. В этой статье я опишу две классических уязвимости программ, связанных с printf. Хакером после этого вы не станете, но, возможно, по-новому взгляните на свой код. Вдруг, вы реализуете аналогичные уязвимые функции, даже не подозревая об этом.

СТОП. Подожди читатель, не проходи мимо. Я знаю, что ты увидел слово printf. И уверен, что автор статьи сейчас расскажет банальную историю о том, что функция не контролирует типы передаваемых аргументов. Нет! Статья будет не про это, а именно про уязвимости. Заходи почитать.
+117
1 февраля 2012, 14:25
237

Не зная брода, не лезь в воду. Часть первая

Не зная брода, не лезь в воду
Захотелось написать несколько небольших заметок о том, как программисты на Си/Си++ играют с огнем, не подозревая об этом. Первая заметка будет про попытки явно вызвать конструктор.
+90
26 января 2012, 12:22
205

Я не знаю Си

Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.

+251
15 января 2012, 23:28
541

Новая карта мира С++ от Alenacpp

Вышла новая версия знаменитой уже карты мира С++ от Алёны Сагалаевой и Джима. На карте отражены последние изменения, пришедшие к нам со стандартом С++11 — обратите внимание на хамелеона auto, Пресловутые Врата Анонимности, руины крепости std::auto_ptr и новые боевые юниты STL. Наслаждайтесь!



Оригинальный размер (18 Мб)
Зеркало
P.S. Сама Алёна не против использования карты в любых целях, правда, часть исходных картинок взята из интернета, а значит за полную чистоту копирайта никто вам поручаться не будет.
+65
9 января 2012, 22:42
98

Использовали ли Вы множественное наследование C++ в реальных проектах?

67.14%
(1602)
Нет (сюда относятся случаи, когда классы предки играли роль интерфейсов).
24.85%
(593)
Да — так было удобнее.
8.01%
(191)
Да — это было необходимо (желательно описать ситуацию в комментариях).

Проголосовало 2386 человек. Воздержалось 2708 человек.

+48
2 января 2012, 01:10
12
IDY

Работа с бинарными файлами в стиле STL

Я хотел бы рассказать о решении одной задачи, возникшей в процессе обучения старших школьников и младшекурсников программированию. Естественно, пишу я об этом, потому что считаю, что этот опыт может быть интересен более широкой аудитории.
+31
18 декабря 2011, 01:31
86

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N4

PVS-Studio vs Firefox
Это уже четвертая заметка, где я хочу поделиться полезными наблюдениями о паттернах ошибок и том, как можно с ними бороться. В этот раз я затрону такую тему, как обработка редких и аварийных ситуаций в программах. Рассматривая множество программ, я пришел к выводу, что код обработки ошибок в Си/Си++ программах — одно из самых ненадежных мест.
К чему приводят такие дефекты? Программа, вместо того, чтобы выдать сообщение «файл X не найден», падает и заставляет пользователя гадать, что он не так делает. Программа для работы с базой данных выводит невразумительное сообщение, вместо того, чтобы сообщить, что неверно заполнено одно из полей. Попробуем сразиться с этой разновидностью ошибок, которые досаждают нашим пользователям.
+44
14 декабря 2011, 11:17
78

Ускоряем OpenMP в Visual C++ 2010 из песочницы

Одним из популярных и дешёвых средств реализации многопоточных вычислений на языке C++ является OpenMP.

Достоинства технологии очевидны: простота; малые, и легко отключаемые изменения в коде; поддержка от авторов самых популярных компиляторов:
  • Visual C++
  • GCC 4.2
  • Intel C++ Compiler
Проверка боем проходит успешно, и вот распараллеленный код проникает в самые укромные уголки проекта, бьёт все рекорды производительности, выдавая шикарную статистику, подтверждающую успешность релиза.

Проходит пара лет, вы успешно мигрируете на Visual Studio 2010,… и обнаруживаете себя сидящим в луже. Если вчера обработка большого массива данных на машинах с многоядерными процессорами проходила за считанные секунды, то сегодня наличие любого фонового приложения, занимающего собственными вычислениями одно или несколько ядер, практически вешает приложение.

Почему так происходит, и как с этим бороться?

+22
14 декабря 2011, 09:14
45

WebService c поддержкой gzip на C из песочницы

В посте речь пойдет о моем опыте встраивания XML-RPC интерфейса в утилиту, написанную на C. Интерфейс должен предоставлять доступ к статитстике и результатам работы утилиты. Одно из требований к интерфейсу — поддержка ответов в формате gzip, в целях экономии трафика. Мне очень хотелось обойтись малой кровью и вот что из этого получилось.
+28
22 ноября 2011, 18:53
55