Взяв за основу первый урок, мы будем углубляться в мир поверхностей SDL. Как я уже говорил, SDL поверхности, в основном, это изображения, сохраненные в памяти. Представьте себе, что у нас есть пустое окно размером 320x240 пикселей. В системе координат SDL, окно представлено следующим образом:
Рубрика «c++» - 238
Перевод SDL Game Framework Series. Часть 2 — SDL Coordinates and Bliting
2013-01-27 в 2:50, admin, рубрики: c++, game development, Gamedev, sdlПример примитивного веб сервера на С++ с использованием OpenSSL
2013-01-25 в 13:58, admin, рубрики: c++, HTTPS, openssl, SSL, Веб-разработка, Песочница, С++, метки: HTTPS, openssl, SSL, С++Давно хотел написать полезную статью и вот наконец нашёл подходящий информационный повод.
Речь в этой статье пойдёт о создании примитивного web сервера работающего по https протоколу. Мы на пишем серверную часть, а в качестве клиентской части будет выступать любой из браузеров.
В итоге мы получим максимально упрощённый пример примитивного web сервера который можно будет улучшать и затачивать под свои задачи.
Читать полностью »
Пишем свою первую программу на C++ в Cloud9 IDE
2013-01-24 в 14:14, admin, рубрики: c++, cloud9 ide, Песочница, метки: c++, cloud9 ideЗдравствуйте читатели! Начнём с предыстории.
Предыстория
Некоторое время назад мне захотелось уйти от тяжеловесной Visual Studio в пользу чего-нибудь более простого. Сначала мой взгляд упал на текстовые редакторы. Мной был найден Sublime Text 2. Это очень красивый и удобный редактор, который мне сразу понравился. Но из-за того, что мне не удалось завести компиляцию (руки кривоваты), от него пришлось отказаться. Тогда, расстроенный, я начал бродить по интернету в поисках чего-нибудь похожего и случайно наткнулся на Cloud9 IDE.
Это была первая облачная IDE, с которой я столкнулся. Так как мне нечего было терять, я решил посмотреть, что представляет из себя этот “зверь”.
Перевод SDL Game Framework Series. Часть 1 — SDL Tutorial Basics
2013-01-23 в 22:29, admin, рубрики: c++, game development, Gamedev, sdlЯ поискал по хабру перевод уроков с этого сайта, но нашлось только одно упоминание, да и то — в комментариях:
Потому и решил исправить положение, попытался дополнить и разнообразить примеры своими наработками, а заодно попрактиковался в переводе. Также, поскольку моей любимой ОС сначала была WinXP а теперь Ubuntu, постараюсь сделать кроссплатформенные примеры, захватив как можно больше нюансов настройки для этих платформ. В данной серии уроков рассматривается создание фрэймфорка, достаточного для начала разработки 2D игр.
Что из этого получилось Читать полностью »
Интервью с создателем C++ STL, 1995 г. Часть 1
2013-01-23 в 15:50, admin, рубрики: c++, stl, обобщённое программирование, разработка, метки: c++, stl, обобщённое программированиеВ последние годы, когда спрос на C++ снова растёт, интересно заглянуть в недалёкое прошлое и вспомнить, как создавалась эта классическая платформа разработки. В данном вопросе безусловно содержательными являются книги Страуструпа, вроде «Дизайна и эволюции C++». Однако, не менее интересно услышать о языке от самых первых его последователей, а иногда и полноценных соавторов. Пожалуй, наиболее известным из них является наш соотечественник Алекс Степанов, автор Стандартной библиотеки шаблонов. Интервью, приводимое далее, было взято у Алекса в 1995-м году колумнистом журнала Dr.Dobbs Элом Стивенсом.
Расскажите нам что-нибудь о вашем cтоль длительном интересе к обобщённому программированию.
Я начал размышлять об обобщенном программировании в конце 70-х, когда заметил, что некоторые алгоритмы зависят не от конкретной реализации структуры данных, а лишь от небольшого числа существенных семантических свойств этой структуры. Так что я начал изучать самые разные алгоритмы, и обнаружил, что большинство из них могут быть абстрагированы от конкретной реализации так, что эффективность при этом не теряется. Эффективность является для меня одной из основных забот. Глупо абстрагировать алгоритм таким образом, что, когда вы его задействуете такую его реализацию, он становится неэффективным.
Читать полностью »
Switch для строк в C++11
2013-01-23 в 4:01, admin, рубрики: c++, c++11, case, compile-time computation, switch, Программирование, метки: c++, c++11, case, compile-time computation, switch К сожалению, стандарт C++ не допускает применения операторов switch-case к строковым константам. Хотя в других языках, вроде C#, такая возможность имеется прямо «из коробки». Поэтому, понятное дело, многие C++ программисты пытались написать свою версию «switch для строк» — и я не исключение.
Для C++03 решения не отличались красотой и лишь усложняли код, дополнительно нагружая приложение в рантайме. Однако с появлением C++11 наконец-то появилась возможность реализовать такой код:
std::string month;
std::string days;
std::cout << "Enter month name: ";
std::cin >> month;
SWITCH (month)
{
CASE("february"): days = "28 or 29"; break;
CASE("april"):
CASE("june"):
CASE("september"):
CASE("november"): days = "30"; break;
CASE("january"):
CASE("march"):
CASE("may"):
CASE("july"):
CASE("august"):
CASE("october"):
CASE("december"): days = "31"; break;
DEFAULT: days = "?"; break;
}
std::cout << month << " has " << days << " days." << std::endl;
Реализация этой конструкции весьма проста. Она основана на constexpr-функциях из C++11, благодаря чему почти все вычисления производятся ещё на этапе компиляции. Если кого-то интересуют её детали, добро пожаловать под кат — благо на Хабре о «switch для строк» почему-то ничего не сказано.
Читать полностью »
Продолжаем изобретать function
2013-01-22 в 8:28, admin, рубрики: c++, c++11, function, метки: c++, c++11, function Под влиянием предыдущей статьи предлагаю продолжить тему создания собственной реализации такой полезной идиомы, как function в C++, и рассмотреть некоторые аспекты ее использования.
Читать полностью »
Пишем кроссплатформенную библиотеку на C++ для работы с именованными каналами
2013-01-17 в 13:47, admin, рубрики: c++, IPC, Программирование, метки: c++, IPCПредыстория
В процессе разработки одного B2B проекта возникла необходимость обращения к нашему приложению из различных систем вроде 1C, Oracle, MS Sql Server. Первый «универсальный» вариант, который пришел в голову – использовать веб-сервисы. Но, к сожалению, у вышеупомянутых систем несколько разное понимание этого стандарта (например, не факт, что тот же oracle и 1C будут понимать друг друга), кроме того нам не хотелось раздувать проект использованием тяжелых сторонних библиотек (на тот момент мы уже использовали boost и Intel TBB, притягивать же еще Qt или gSoap нам не хотелось).
Поэтому было решено писать свой велосипед.
Читать полностью »
Пингер на Boost.Asio и модульное тестирование
2013-01-17 в 12:47, admin, рубрики: boost.asio, c++, c++ библиотеки, Блог компании Positive Technologies, пингер, разработка, метки: boost.asio, c++, c++ библиотеки, пингерВсем привет! В одной из наших предыдущих статей мы рассказали о реализации функции асинхронного пинга в рамках задачи по созданию «пингера» для его дальнейшего использования при пентестах организаций с большим количеством рабочих станций. Сегодня мы поговорим о покрытии нашего пингера (логика и сетевая часть) модульными тестами.
Понятно, что необходимость написать код, который пройдет тестирование, — дисциплинирует и помогает грамотнее планировать архитектуру. Тем не менее, первая мысль о покрытии юнит-тестами асинхронного кода на Boost.Asio была примерно такая: «Что?! Это абсолютно невозможно! Как можно написать тест, основанный на сетевой доступности узла?»Читать полностью »
Исключительная красота исходного кода Doom 3
2013-01-17 в 12:23, admin, рубрики: c++, game development, id software, john carmack, source code, Программирование
Сегодня вас ждет рассказ об исходном коде Doom 3 и о том, насколько он красив.
Да, красив. Позвольте мне объясниться.
Читать полностью »