Category Archives: C++

Статьи, связанные с разработкой программ на языке С++.

Основы технологии MPI на примерах

MPI_Reduce_and_Bcast_efficiency

Параллельное программирование — очень актуальное направление, т.к. большинство современных вычислительных устройств (включая телефоны) являются многоядерными или многопроцессорными. В предыдущей записи я публиковал учебник по OpenMP, однако OpenMP позволяет программировать только системы с общей памятью — в большей части, многоядерные компьютеры. Основной проблемой таких систем является плохая масштабируемость — не так… Read more »

Учебник по OpenMP

openmp_architectude

OpenMP — это библиотека для параллельного программирования вычислительных систем с общей памятью (дальше кратко описано что это за системы). Официально поддерживается Си, С++ и Фортран, однако можно найти реализации для некоторых других языков, например Паскаль [1] и Java [2]. Все примеры в этом «учебнике» написаны на С++. Библиотека активно развивается,… Read more »

Разработка игры для развития памяти под Android (C++, Qt)

drawing_screenshot

Накидал очередную игрушку под Android. Поделка оказалась играбельной, выложил на маркет и решил написать статью о процессе разработки. Вообще, на habrahabr есть куча статей в стиле «моя первая игра под Android», но зачастую [1,2]: играть в это совсем скучно; в комментариях жалуются на отсутствие технических деталей; разработчик не предоставляет читателям… Read more »

Юнит-тестирование. Пример. Boost Unit Test

Test_Driven_Developing_model

Разработка и поддержка программ невозможна без внесения изменений в существующий код. Однако, всякое изменение сопряжено с возможным внесением ошибок. Чем больше и сложнее проект — тем более нетривиальным образом изменения могут сказываться на работе подсистем. В связи с этим, любое изменение кода требует проведения тестирования. В статье описываются: теория unit-тестирования;… Read more »

Паттерн Singleton. Описание. Пример использования

Singleton-example-UML

В статье описывается паттерн Singleton (Одиночка), рассмотрены 2 реализации и некоторые возможные модификации. Проанализированы сильные и слабые стороны шаблона. Приведен пример использования. Статья состоит из двух частей: описание шаблона, варианты реализации, проблемы. Часть должна быть понятна программистам на любых языках, хотя примеры приведены на С++; более сложный пример — решается… Read more »

Публикация Qt-приложения для Android

load_inons

Я немножко доработал игрушку на Qt из предыдущей статьи, выложил ее на google play и решил описать всё, что мне показалось интересным в этом процессе: получение аккаунта разработчика, сборка приложения для google play, проблемы с файлами дополнений и отладка приложения.

Разработка игры на С++, Qt

game_screens

Написал ремейк небольшой логической игрушки — «Полный квадрат». Код показался мне достаточно интересным чтобы описать на блоге. По сюжету игры, ёжик перемещается по лабиринту из облаков. Ходить ёж умеет только по вертикали и горизонтали, а начав движение идет до тех пор, пока не упрется в пустоту (пройденные облака исчезают), край… Read more »

Способы обработки XML в Qt — Stream, SAX, DOM

Screenshot_of_the_schedule_currency

Многие сталкивались с XML-документами и знают что это такое, ведь стандарт рассматриваемого языка разметки опубликован в далеком 1998 году. Язык XML используется во многих областях, но чаще всего для передачи информации через Internet — не случайно стандарт разработан Консорциумом Всемирной паутины (W3C) [1]. Очень много информации в этом мире записано… Read more »

Многопоточный сервер Qt. Пул потоков. Паттерн Decorator

рис. 3 decorator implementation

В предыдущей статье [1] была рассмотрена работа с сокетами в библиотеке Qt. Наш сервер сетевого чата работал в одном потоке. Задача текущей статьи — описание многопоточного сервера. Однако, если сервер просто принимает сообщение и передает его всем подключенным клиентам — распараллеливать нечего и потоки не особо нужны. В связи с… Read more »

Работа с сетью в Qt. Сокеты. Паттерн Adapter

рис. 5 диаграмма классов сетевого чата

В статье показана работа с сетью на примере очень простого сетевого чата, а также описан никак не связанный с сетью шаблон проектирования адаптер (adapter, wrapper, обертка). Несмотря на то, что наш чат максимально прост (он не позволяет передавать файлы и оффлайн-сообщения, не хранит историю, передает сообщения не шифрованными и т.д.),… Read more »