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

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

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

Функциональное программирование и обработка изображений

Под интригующим названием статьи скрывается обзор и небольшой мануал по языку программирования, встроенному в nip2. Есть весьма популярная в узких кругах утилита обработки изображений, называемая VIPS [1]. Утилита кроссплатформенная и используется для обработки очень больших изображений. Состоит она из двух частей – библиотеки libvips и утилиты с графическим интерфейсом nip2…. Read more »

Cистема плагинов Qt, построение графиков и Qt Script

рис. 1 снимок окна программы

Очень обзорная статья, описывает вершки некоторых интересных элементов библиотеки Qt. Речь идет про: библиотеку Qwt, позволяющую строить графики, гистограммы, круговые (и другие) диаграммы; систему плагинов библиотеки Qt, предназначенную для предоставления возможности модульного расширения программы; Qt Script – язык, позволяющий, как и система плагинов, дополнять программу, но не требующий компиляции (плагина)…. Read more »

Решение логических задач на Prolog

рис. 6 дерево решения задачи о волке, козе и капусте

Язык пролог начал зарождаться в далеком 1879 году, точнее в этом году известный ученый Людвиг Фреге предложил исчисление предикатов, которое лежит в основе логического программирования. Фреге был не только математиком, но и философом (как и большинство других известных ученых своего времени). В то время еще не начала рушиться классическая картина… Read more »

Графы. Поиск в ширину и глубину на Prolog

рис. 2 обход графа в ширину

В статье описываются: алгоритмы обхода графа в глубину и в ширину; представление графов на языке Prolog; реализация алгоритмов обхода графа на языке Prolog.

Параллельные задачи (tasks) OpenMP

рис. 4 диграммы загрузки процессора. быстрая сортировка. OpenMP

В предыдущей статье был рассмотрен параллельный цикл, однако, в OpenMP есть и другие средства распараллеливания. В настоящей статье на примере быстрой сортировки рассмотрены параллельные задачи (tasks). Затем, описаны параллельные задачи OpenMP. В конце статьи показано распараллеливание быстрой сортировки с использованием механизма задач OpenMP.

Библиотека OpenMP. Параллельный цикл

Статья ориентирована на тех, кто не знаком с библиотекой OpenMP, но хотел бы познакомиться. OpenMP – не просто библиотека параллельного программирования, но и стандарт, официально поддерживаемый для языков Си, C++ и Fortran (а неофициально и для других языков, Free Pascal, например [1]). Работает OpenMP только на архитектурах с общей памятью…. Read more »

Шаблон проектирования Prototype. Примеры

рис. 3 диаграмма классов после имплементации шаблона "Прототип"

Напомню, что в прошлый раз мы написали программу, которая содержала тулбар с геометрическими фигурами и поле, на которое эти фигуры добавлялись. Для каждой фигуры был определен отдельный класс, поэтому для добавления нового типа фигуры требовалось бы перекомпилировать программу. Шаблон проектирования “Прототип” решает эту проблему, позволяя порождать новые типы объектов во… Read more »

Работа с графической сценой [Qt]

рис. 1 снимок окна программы-примера

В библиотеку Qt включены специальные классы для удобной и эффективной работы с большим количеством двумерных графических объектов. Сегодня мы рассмотрим не все (остальные потом), но основные – QGraphicsScene, QGraphicsView, QGraphicsItem. Использовать эти классы удобно если в Вашей программе происходит хоть какая-то работа с графическими объектами, и особенно, если таких объектов… Read more »

Создание и монетизация блога

среднесуточное количество посетителей (по месяцам)

Моему блогу уже 3 года (не смотрите, что домен моложе – раньше был другой). Зачем я веду блог? Все эти 3 года менялся я, менялся блог и, конечно, менялось мое отношение к этому вопросу. В небольшой заметке, не связанной с программированием, я опишу чего я хотел от блога, что получилось,… Read more »

Паттерн шаблонный метод (template method)

рис. 2 шаблон проектирования template method

Template method представляет собой поведенческий шаблон проектирования. Вспоминать про него стоит всякий раз, когда в вашем проекте появляется дублирующийся код (именно с таким, плохим кодом он иногда может справиться). Суть шаблонного метода заключается в том, что алгоритм поведения объектов выносится в базовый класс, а реализация отдельных шагов падает на плечи… Read more »

Unit тестирование в Erlang на примере

Продолжаем изучение языка программирования Erlang. На этот раз будет рассмотрена задача о разборе и выполнении арифметических выражений из книги Чезарини (в книге задача была сложнее и с множеством дополнений типа “упрощение выражений”, “дополнение выражений оператором ветвления” и т.п.). Помимо разбора выражений (строк) в статье описано Unit-тестирование последовательных программ без побочных… Read more »