Все потоки
Поиск
Написать публикацию
Обновить
192.96

C++ *

Типизированный язык программирования

Сначала показывать
Период
Уровень сложности

Игры для ESPspectrum

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.5K

Создание игр для ESPspectrum. Пошаговая инструкция.

Создание игр - это процесс разработки и воплощения в жизнь интерактивных развлечений, которые могут быть представлены в различных формах и жанрах. Это очень затягивает, а написание простых игрушек отлично развивает.

Читать далее

ESPspectrum V1.1 + версия для проектов

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров4.7K

ESPspectrum третья статья. Версия 1.1. Доработка первого экземпляра. Создание ESPspectrum for projects. Схемы и описание.

Читать далее

Создание своего терминала на C++ и Qt: Часть 1

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров15K

Привет, хабр! Сегодня мы создадим свой собственный терминал на языке программирования C++. Я являюсь фанатом Linux, и пользуюсь минималистичными терминальными программами - от Vim как IDE до чатов. Есть множество терминалов, у каждого из них есть плюсы и минусы. Наш терминал не будет претендовать на место серьезного проекта, но если вы хотите улучшить код, который мы сегодня напишем - то вы молодцы, можете без проблем развить наш терминал.

Это будет небольшой, минималистичный терминал для Linux. Он будет на основе фреймворка Qt 5 и библиотеки qtermwidget5.

И эта будет не одна статья, а целая серия статей!

Вперед!

[sobjectizer] Релиз версии 5.8.1: реализация пожеланий пользователей и исправление недочетов

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров947

Пару дней назад мы зафиксировали версию 5.8.1 открытого проекта SObjectizer. В данной статье поговорим о новых возможностях, которые появились в SObjectizer благодаря пожеланиям пользователей, и упомянем исправление не выявленного ранее недочета. Кому интересно, милости прошу под кат.

Для тех же, кто ни разу не слышал про SObjectizer, очень кратко: это относительно небольшой C++17 фреймворк, который позволяет использовать в С++ программах такие подходы, как Actor Model, Publish-Subscribe и Communicating Sequential Processes (CSP). Основная идея, лежащая в основе SObjectizer, — это построение приложения из мелких сущностей-агентов, которые взаимодействуют между собой через обмен сообщениями. SObjectizer при этом берет на себя ответственность за:

доставку сообщений агентам-получателям внутри одного процесса;

управление рабочими нитями, на которых агенты обрабатывают адресованные им сообщения;

механизм таймеров (в виде отложенных и периодических сообщений);

возможности настройки параметров работы перечисленных выше механизмов.

Составить впечатление о этом инструменте можно ознакомившись вот с этой обзорной статьей.

Читать далее

Smart-contract developer Road Map

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.8K

Прочитав эту статью до конца вы поймете какими навыками вам нужно обладать для того, что бы стать smart-contract разработчиком!

В конце статьи прикреплен Solidity developer roadmap.

Читать далее...

Дружим Flutter с С# и С++

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров12K

На Flutter`е очень удобно и хорошо пишутся интерфейсы для пользователей. Но использовать Dart для решения алгоритмических задач тяжко и неэффективно. Семейство Си справляется гораздо лучше и позволяет легко распараллеливать вычисления. Кроме того, за многолетнюю историю С++ и С# обзавелись множеством полезных библиотек, не все из которых имеют аналоги во Flutter.

Зная про существование библиотеки FFI для Flutter, что позволяет даже синхронно запускать Си-шный код, я решил закопаться в эту тему и попробовать объединить наследие Си и их эффективность с удобным фреймворком. Учитывая то, что в интернете маловато информации про использование FFI, особенно с C#, я решил поделиться своим опытом "построения мостов" на примере двух приложений в этой статье.

Читать далее

Работа с void* в стиле C++

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров13K

Хранение сотояния в виде набора полей примитивных типов, расположенных в определённом порядке, - очень старый паттерн, впервые напрямую поддержанный в записях Cobol в 1959 году. В наши дни он активно применяется при хранении данных в памяти (структуры, классы, массивы) и на диске (бинарные файлы, записи баз данных), при передаче данных по сети (бинарные протоколы), при передаче аргументов в функции (соглашения о вызове), при хранении переменных на стеке (и доступе к ним из отладчика) и так далее.

В данной статье я хочу показать принятую в нашем проекте организацию работы с подобными наборами полей в стиле C++ - через соответствующие типы итераторов.

Читать далее

Многопоточность и Thread Pool в C++

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров61K

Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.

Читать далее

Генерируем X509 сертификат с OpenSSL C++

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров9K

В данной статья я хочу рассказать, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.

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

В данной статье, я не буду рассказывать вам, что такое X509 сертификат, надеюсь, что это вы уже знаете, а если нет, то ссылка на статью вот тут.

Читать далее

Тетрис, разработка игр на SFML C++

Время на прочтение16 мин
Количество просмотров13K

Предыдущая тема

"Тетрис" - легендарная игра, которую знает каждый. Она была создана в 1984 году российским программистом Алексеем Пажитновым и с тех пор завоевала сердца миллионов игроков по всему миру.

Игровой процесс заключается в заполнении горизонтального ряда в нижней части экрана фигурами из различных геометрических форм, известных как тетрамино. Довольно сложно описать, какие именно фигуры есть в игре, поэтому проще показать пример: это могут быть фигуры, состоящие из четырех квадратов (квадрат, "буква T", "буква L", "буква S", "буква Z" и "буква J").

Читать далее

Регулятор нагрузки

Время на прочтение4 мин
Количество просмотров7.6K

Данный регулятор управляется при помощи arduino и симисторного выхода. Необходимую мощность мощно выставить при помощи двух кнопок, а подаваемая мощность отображается на трехразрядном семисегментном индикаторе в процентах (0 - мощность не подается, 100 - максимальная мощность).

Читать далее

Исследование нескольких проблем, обнаруженных при статическом анализе

Время на прочтение5 мин
Количество просмотров3.2K
В последнее время мы занимались статическим анализом нашей кодовой базы. В результате было выявлено несколько проблем в коде C++, которые мне пришлось исправлять. Это в очередной раз помогло мне осознать, каково совершать такие ошибки, которые обычно трудно найти, просто взглянув на код (человеческим глазом). Я считаю, что стоит поделиться опытом решения некоторых из этих проблем. Не могу опубликовать мой реальный код, он все равно будет слишком сложным, но я использую несколько простых фрагментов, в которых продемонстрированы те же проблемы, что встретились мне в проанализированном коде. Это (надеюсь) поможет вам легко понять как проблему, так и её решение.
Читать дальше →

PVS-Studio и RPCS3: лучшие предупреждения в один клик

Время на прочтение6 мин
Количество просмотров1.1K

Best Warnings — режим анализатора, оставляющий в окне вывода 10 лучших предупреждений. Мы предлагаем вам ознакомиться с обновлённым режимом Best Warnings на примере проверки проекта RPCS3.

Читать далее

Ближайшие события

SuperIndustry — Dev log #0 – Начало приключения

Время на прочтение2 мин
Количество просмотров2.2K

Привет, друзья! В этом цикле статей я максимально подробно буду рассказывать о процессе разработки игры на UE – SuperIndustry. Вы сможете на моем примере познать процесс разработки 3D игры на UE. Вкратце про игру: Представьте гибрид Oxygen not included и Satisfactory, в далеком будущем и на специфичной экзо планете. В игре будет простенький сюжет, который будет повествоваться через своеобразный дневник. Главная цель – улететь с планеты (либо же остаться на ней, и немного поиграв дойти до второй, более загадочной и неоднозначной концовки)

Узнать что-то новое

Пастильда: Независимое Beta-Тестирование (16+)

Время на прочтение6 мин
Количество просмотров4.6K

Решил купить себе Pastild(у). Это аппаратный хранитель паролей и одновременно USB Flash(ка). Также понравилась возможность съёмной SD карты. Идея аппаратного менеджера паролей, который не требует отдельного USB просто великолепная!

Какие же впечатления от использования Пастильды (User experience)?

Читать далее

Установка OpenSSL для проекта на С++

Время на прочтение10 мин
Количество просмотров17K

Решая в целом тривиальные задачи, приходится сталкиваться с нетривиальными проблемами, и эта история, собственно, об этом.

В кои-то веки, решив написать код для себя любимого, проработал проект, установил окружение, прописал в проекте boost и пошёл писать модули.

Ничто не предвещало беды, но в процессе написания кода было обнаружено, что модуль, который запрашивал у интернета погоду, получал вместо описанного в API json'а следующее: "400 The plain HTTP request was sent to HTTPS port". Уж чем руководствовался разработчик сайта, не перенаправивший запрос без персональных данных, не знаю, но видимо хакеры хотят украсть сведения о погоде в деревне так сильно, что спать и есть не могут.

И тут я сделал манёвр, который стоил мне 50 лет. Точнее, пары бессонных ночей, так как работать тоже надо. Ничтоже сумнящийся, подключил boost::asio::ssl, написал тестовый код, который должен был проверить что теперь есть контакт, но тут моя бровь поднялась вверх в первый раз: проект перестал собираться, потому что в системе не было OpenSSL.

Как настроить openssl и не потеряться

C++. Убираем приватные поля из описания класса или немного дурачества

Время на прочтение4 мин
Количество просмотров10K

Всем привет! Решил на выходных продолжить писать свой домашний проект и наступила пора реализовать платформозависимый код. Самым простым вариантом было бы описать классы в *.h файле, а в зависимости от платформы, Закрытые поля засунуть под #define. При этом, саму реализацию по конкретным платформам разнести по *.cpp файлам и включать их в компиляцию в зависимости от текущей платформы. Но... мне не нравится как выглядит описание класса с #define, поэтому я решил убрать препроцессор и оставить в описании класса только интерфейс. И да, я не пользовался абстрактными классами и pimpl, всё еще хуже :-)

Читать далее

Простое руководство по атомарности в C++

Время на прочтение9 мин
Количество просмотров20K

Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++  атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic  с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.

Читать далее

Быстрый переход на UNIGINE с Unreal Engine 4: первые шаги

Время на прочтение12 мин
Количество просмотров8K

Если вы планируете переходить с иностранного софта на отечественный и ищете полноценный аналог Unreal Engine 4, то одним из вариантов может стать 3D движок UNIGINE.

Сравниваем основные термины, управление проектами, интерфейс редактора, работу со сценой, настройки проекта и многое другое под катом.

Читать далее

Портируем код C/C++ на Python

Время на прочтение4 мин
Количество просмотров30K

В первой части нашего небольшого цикла статей мы исследовали возможность использования структур данных в Python, которые были созданы с помощью языков программирования C/C++. Для этого мы рассмотрели библиотеку Ctypes.

В этой статье попробуем разобраться, какие еще есть подходы для работы с языками С/С++ и их аналогами, и также рассмотрим возможность анализа С/С++ исходников языков программирования и их компиляции налету. К тому же ответим на вопрос, а можно ли сделать интеграцию C/C++ в языке программирования Python прямо в скрипте. Подобный подход очень размоет границы между языками программирования, но это очень интересный функционал, который возможно может быть полезным.

Читать далее

Вклад авторов