Как стать автором
Обновить
211.51

C++ *

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

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

Использование dll в Meta Traider 4

Время на прочтение2 мин
Количество просмотров13K
Пост посвящен технике использование .dll ресурсов в MetaTrader4, а точнее в mql4.

Эта техника позволяет дооснастить аналитику и функционал MT4 практически ничем неогранниченными возможностями, начиная от импорта результатов сложных вычислений (IMSL, MatLab) до написания собственной инфраструктуры, которая использует MT4 как адаптер к брокеру.
Читать дальше →

Побеждаем Kinect в Linux

Время на прочтение8 мин
Количество просмотров8.2K
Это вторая статья из цикла о разработке C++ приложений, работающих с Microsoft Kinect. В этой части речь пойдет о том, как заставить устройство работать в Linux и как его можно использовать в своих приложениях.

Первую статью о разработке для Kinect можно почитать здесь. Настоятельно рекомендую к прочтению первую часть ибо без нее впечатления от второй будут неполными.
Читать дальше →

PocoCapsule: делаем «Hello world» проще

Время на прочтение7 мин
Количество просмотров2.5K
image Статья рассказывает об опыте знакомства с IoC-контейнером PocoCapsule (C++), возникших трудностях и способах их преодоления. Помимо прочего статья включает небольшой пример для быстрого старта с PocoCapsule (упрощенный проект «Hello World» с официального сайта).

Читать дальше →

Spinlock vs. Mutex vs. Semaphore: Разбираемся в синхронизации с Zephyr OS

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

Всем привет! Сегодня хочу углубиться в одну из самых важных тем в мире Zephyr OS — синхронизацию потоков и задач. Если вы хоть раз работали с k_thread_create, гоняли потоки туда-сюда и ловили bus fault, вы меня понимаете.

Когда задача одна — всё просто. Но как только вырастает многопоточность, задачи начинают драться за общий ресурс — и тут без надёжной синхронизации не обойтись. У Zephyr OS есть три главных инструмента для этого: spinlock, mutex и semaphore. Каждый со своим характером и подводными камнями.

Читать далее

Настройка отладки C++ проекта через GDB в VSCode

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

Если вы работаете над собственными библиотеками на C++, особенно такими, где важна строгая типизация и предсказуемое поведение компилятора, то наверняка сталкивались с ситуацией, когда Microsoft Visual Studio (MSVS) сама "подчищает" за вами типы или подключает лишние зависимости. Иногда это удобно, но при разработке низкоуровневого кода это может мешать.

В этой статье я расскажу, как перейти с MSVC на MinGW, правильно настроить CMake и использовать GDB для отладки вашего C++-проекта прямо в Visual Studio Code.

Читать далее

UE Enhanced Input System: настраиваем управление в игре (до и после версии 5.3)

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

Мы рассмотрим два базовых подхода к созданию системы переназначения ввода в Unreal Engine 5 с плагином Enhanced Input System.
Для версий UE 5.3 и выше можно использовать встроенную систему настроек, а для более ранних версий - разработать собственную реализацию.

Читать далее

Unreal Engine для начинающих: Учимся работать со сторонним API и создавать динамические текстуры

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

Работа с API и создание динамических текстур в Unreal Engine может показаться сложной задачей, особенно для новичков. В этом материале на реальном примере мы разберем, как с помощью C++ получить изображение из публичной базы данных The Art Institute of Chicago, преобразовать его в текстуру, добавить её в материал и отобразить на 3D-объекте прямо в движке. Вместе мы шаг за шагом создадим интерактивную виртуальную галерею, познакомимся с основами работы с HTTP-запросами, JSON-данными, динамическими материалами и текстурами, а также научимся строить структуру собственного актора для подобных проектов.

Читать далее

Маркировка под ФФД 1.2 и сканеры штрих кода в режиме клавиатуры

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

Поводом написания этой маленькой статьи послужила странная ситуация, сложившаяся с настройкой сканеров штрих кода для работы с маркировкой в режиме именно клавиатуры.

Я думаю многие уже бились головой об стену не понимая как настроить сканер для корректной работы с маркировкой по ФФД 1.2.

Под корректной работой понимается, что считанный сканером код должен хотя бы распознаваться сначала корректно онлайн сервером ОФД и конечно далее сервером честного знака.

Суть проблемы в том, что в коде маркировка по формату Datamatrix присутствуют обычно 2 разделителя со значением 0x1d или их ещё называют GS. 

Это управляющие символы, как они ещё применялись со времён программирования на перфокартах. Проблема в том, что они отсутствуют на клавиатуре визуально, располагаются в самом начале таблицы ASCII, и не имеют символьного представления. То есть в текстовом редакторе вы их просто так не увидите.

Да, надо отметить,развлекаемся со сканерами мы в Виндоус. На Винде, как я понял, USB драйвер  клавиатуры всегда передавал сканкоды в соответствии с таблицей XT стандарта, где за каждой клавишей закреплёно конкретное значение.

USB драйвер всегда передает байты, как вы понимаете, и всегда от конкретной клавиши идёт одно конкретное значение (байт если хотите).

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

Читать далее

Поддержка webextensions под Андроид, вторая серия

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

Очень добрый день!


Меня зовут Тимур и я программист.


Сегодня я хочу продолжить разговор о поддержке расширений браузера (хромиум) на Андроид. В прошлой своей статье я рассказал о том что у меня получилось завести расширения но народ так занят стенаниями по поводу закрытия проекта Kiwi что никто особо на это внимания не обратил, поэтому буду краток, это скорее промежуточный отчет чем анонс.

Читать дальше →

modern-cpp-kafka для C++. Решаем проблемы владения и сериализации

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

Идея написания этого небольшого руководства появилась у меня, когда я начал изучать одну из самых популярных библиотек для работы с Apache Kafka - modern-cpp-kafka.

Однако, как водится, ничто не идеально, и порой приходиться делать самые простые вещи за библиотеку.

Читать далее

Сложность концепции компоновки на примере для Qt (шпаргалка)

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

Описания компоновки (управления автоматическим размещением визуальных элементов) которые мне попадались на родном языке мне кажутся не достаточно погружают читателя в реальную проблематику которая стоит за этим процессом. Мне хочется акцентировать внимание на том откуда берется сложность в этом вопросе. Хотелось бы чтобы кто-то покритиковал мои формулировки.

Читать далее

Отчет о проекте эффективного приоритетного дерева SAPT

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

Отчет о, написанном мною, алгоритмическом статичном двунаправленном дереве, имеющим сложность O(1) по всем параметрам. Не считаю эту статью чем-то выдающимся, никуда не претендую, это всего лишь отчет моей работы. Если вам понравится можете свободно пользоваться.

В качестве небольшого предисловия:
Зачем я спроектировал дерево?

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

Пример профилей поведения будет в конце статьи.

Читать отчет

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

Автоматизация внесения исправлений в исходные файлы С++ с помощью CLang LibTooling

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

image


Еще одна статья в продолжение темы анализа сходных текстов на С/С++ с помощью Clang. Предыдущие публикации:



Это не перевод довольно подробной публикации Emitting Diagnostics in Clang от Peter Goldsborough про различные нюансы диагностических инструментов у Clang, а преимущественно адаптация старого кода под текущую версию компилятора.


И основная идея, которая меня заинтересовала в исходной публикации, это использование инструмента FixIt из набора диагностики clang для внесения исправлений в исходные файлы.

Читать дальше →

Воскрешаем динозавров С++ в современных проектах: как применяют интрузивные контейнеры, ООП и разные стандарты языка

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

Библиотеку Boost.Intrusive применяют в разработке 5G-сетей, а ООП — в тестировании систем хранения данных. Не верьте стереотипам о том, что эти технологии устарели — эксперты YADRO на митапе для разработчиков на С++ доказали обратное.

А Константин Владимиров, Илья Казаков, Антон Полухин и Игорь Гусаров обсудили, какой стандарт С++ предпочитает каждый из них, чем хорош С++17 и должны ли компиляторы успевать за обновлениями в языке.

Читать далее

Гайд по настройке Wt::Dbo и Visual Studio С++ для работы на Windows

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

Я использую PostgreSQL 12-й версии! На остальных не проверял! Соответственно, он у вас должен быть скачан и настроен для использования.

Читать далее

Библиотека CUtils

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

Друзья! В данной статье мы бы хотели рассказать про кроссплатформенную коллекцию утилитных C++ компонентов CUtils.

CUtils — это довольно полезный инструмент при разработке кроссплатформенного программного обеспечения на языке программирования C++.

Читать далее

Параллелизм и феномен ван дер Поля

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

Зачем нужны потоки, если есть параллелизм ВКПа? Поговорим об этом подробнее. По существу мы тем самым продолжим тему статьи[1], рассмотрев только более сложный пример, чем простые и абстрактные счетчики. Рассмотрим по ходу сначала пример, а уж потом и его реализацию на потоке.  Поехали?!

Читать далее

Чистый код: Принцип разделения интерфейса (ISP)

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

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

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

В чем суть принципа разделения интерфейсов. Если перефразировать простыми словами, не нужно делать два дела сразу. Сознание человека так и построено, вспомните детскую задачку, когда просят одновременной дотянуться пальцем до кончика носа и гладить живот по часовой стрелке.

Прежде чем создавать свой пример, давайте рассмотрим пару участков кода из интернета. Из кода удалены приватные части классов, а так же конструкторы и параметры методов. Исключительно для экономии места.

Первый пример, выдержка из огромного класса интерфейса API, весь класс содержит около 30 методов и не представляет интереса, но показанный участок, иллюстрирует проблемы которые возникли у автора кода при модификации.

Читать далее

Чистый код: Принцип единственной ответственности (SRP)

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

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

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

Читать далее

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