Обновить
232.98

C++ *

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

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

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

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

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

Читать далее

HTTP менеджер запросов в Unreal Engine

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

Приветствую, Хабр!

В этой статье я разберу небольшую, но очень полезную тему HTTP запросов в UE. Все будет выполнено строго на C++.

Читать далее

Халява с Юлы и Авито. Часть 2

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

Новая версия программы на управляемых формах.

Продолжение статьи про халяву с Юлы и Авито.

Читать далее про халяву ;-) Часть 2

PVS-Studio ищет баги в проекте DuckStation

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

Мы часто проверяем ретро-игры. Многие наши разработчики находят интересные для себя проекты и ностальгируют при их изучении. Однако, ретро-игры нужно на чём-то запускать. В этот раз мы проверили проект, помогающий запускать старые игры на современном железе.


0881_duckstation_ru/image1.png

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

Руководство Google по стилю в C++. Часть 11

Время на прочтение3 мин
Количество просмотров7K
Часть 1. Вступление

Часть 10. Форматирование
Часть 11. Исключения из правил

Изменения 2019-2024


Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →

Уроки по SDL 2: Урок 15 Многопоточность и Тиллинг

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

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

Читать далее

Тайные знания: библиотеки для С++

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

Рун не должен резать
Тот, кто в них не смыслит.
В непонятных знаках
Всякий может сбиться.
Десять знаков тайных
Я прочел и знаю...(Сага об Эгиле)

Многие начинающие программисты, уже освоив синтаксис C++, обнаруживают, что нет простого способа, как подключить библиотеку, так и собрать программу для другой ОС, или чего хуже, под другим компьютером с той же ОС. Эта проблема отчасти порождается спорной практикой обучения, когда код учат писать и запускать лишь средствами IDE, таких как Visual Studio, Code::Blocks, и других.
Поначалу такой подход работает, но лишь до первой реальной задачи сделать что-то, что запустится не только на вашей машине. Тут-то новички и сталкиваются с отсутствием стандартной системы сборки и менеджера зависимостей. После осознания этой сложности, большинство студентов, как правило, переходят на другие языки, попутно тиражируя в индустрии миф о том, что C++ де не кроссплатформенный язык, а вот мой Python/Java/C# - да.
Между тем нас окружает множество замечательных кроссплатформенных программ написанных на C++. Если вы обучаетесь C++ и хотите понять как создавать такое ПО, то эта статья для вас.

Узнать заклинания кроссплатформености

Ассоциативная самозамкнутая сеть. Что нужно для создания сильного ИИ

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

Свойственное поведение — искажение результатов работы системы, обусловленное её строением. Как уменьшить влияние данной проблемы и организовать логическую связь между неограниченным множеством разнородных объектов для дальнейшего использования их не только в качестве знаний, но и описаний действий, что много важнее.

Читать далее

Шаблоны и концепты в С++20

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

Привет, Хабр!

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

Важное уточнение: эта лекция — не попытка объять необъятное, а краткий экскурс по полезным возможностям C++ для членов олимпиадного сообщества: от извлечения кода в класс до внутренних механизмов работы лямбда-функций и щепотки ограничений (constraints) из C++20. Если интересно, приглашаем к просмотру.

Смотреть

Знакомство с EXtensible Server Core (exsc)

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

Всем привет! Хочу поделиться с общественностью фреймворком, на основе которого в данный момент множество серверов, обслуживают тысячи клиентов в различных серверных системах (по условиям контракта, продукты основанные на данном фреймворке не разглашаются). EXtensible Server Core (exsc) — это фреймворк, написанный на языке C и позволяет в рамках одного приложения, иметь один или несколько серверных потоков. Каждый серверный поток способен обслужить большое количество клиентов. Хотя фреймворк можно использовать в модели типа запрос-ответ, в первую очередь он был рассчитан на поддержание постоянного соединения с большим количеством клиентов и обменом сообщений в реальном времени.
Читать дальше →

Проверка орфографии в приложениях Qt

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

В данной статье описано как добавить к вашему приложению на Qt проверку орфографии с подсветкой орфографически некорректных слов и возможность замены на более подходящие варианты. Для этого используется словарь hunspell.

Читать далее

Что есть что в CMake 3.10+ и как это использовать

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

Популярность CMake растёт. Многие крупные проекты переходят с собственных инструментов для сборки на CMake. Проект Conan предлагает интеграцию с CMake для управления зависимостями.

Разработчики CMake активно развивают инструмент и добавляю новые функции, решающие общие проблемы, возникающие при сборке проектов. Переход с CMake 2 на CMake 3 был достаточно болезнен. Документация не покрывает все аспекты использования. Функционал крайне обширен, а возникающие трудности различаются от проекта к проекту. В статье я расскажу о инструментах, которые предлагает CMake 3.10 и выше. В каждой новой версии появляются новые детали или улучшаются старые. Об актуальном состоянии лучше проанализировать Changelog, так как многие улучшения последних версий весьма специфичны для отдельных проектов, как например улучшение поддержки Cuda компиляторов. Я же сфокусируюсь на общих понятиях, которые помогут организовать проект на С++ оптимальным образом с точки зрения использования CMake как основной системы сборки.

CMake предлагает широкий набор инструментов. Чтобы не потеряться, в статье сперва будут определены сущности, через которые будут объяснены конкретные примеры. Названия сущностей я продублирую на английском. Некоторые термины не имеют однозначного перевода в русский язык.

Читать далее

C++: Коварство и Любовь, или Да что вообще может пойти не так?

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


“C позволяет легко выстрелить себе в ногу. На C++ это сделать сложнее, но ногу оторвёт целиком” — Бьёрн Страуструп, создатель C++.

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

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

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

Source Modding — Часть 2 — Всё есть сущность

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

В предыдущей части урока мы научились базовой работе с VPC и печати сообщений в консоль разработчика.


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


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

Учебник по симулятору сети ns-3 теперь одним pdf-файлом

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


После завершения публикации перевода заключительных глав учебника, хочу предложить его уже в виде единого pdf-файла, снабженного оглавлением и алфавитным указателем. Файл на Google-диске: учебник.

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

Машина Тьюринга, как модель автоматных программ

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

Машина Тьюринга, как модель автоматных программ


1. Введение


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

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

За основу обсуждения проблем автоматного программирования возьмем недавнюю лекцию Шалыто А.А. [1] и его «программные» статьи к определению парадигмы автоматного программирования [2, 3].
Читать дальше →

Руководство Google по стилю в C++. Часть 9

Время на прочтение8 мин
Количество просмотров12K
Часть 1. Вступление

Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование



Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →

Распознавание текста с помощью OCR

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

Tesseract — это движок оптического распознавания символов (OCR) с открытым исходным кодом, является самой популярной и качественной OCR-библиотекой.


OCR использует нейронные сети для поиска и распознавания текста на изображениях.


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

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

Сборка бинарных файлов Android с помощью исходников и Android NDK. Прокачиваем утилиту screencap

Время на прочтение25 мин
Количество просмотров7.2K
Я занимаюсь автоматизацией Android устройств и часто SDK или ОС Android не имеют нужного функционала или его работа выполняется медленно/очень медленно.

Используя возможности Native Development Kit (NDK) мы можем написать функционал, который будет выполняться быстрей, чем тот же функционал на Java. За счет данного кита мы можем добавлять в свое приложение код, написанный на C/C++ или создавать свои бинарные файлы под мобильные Android устройства.

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

Для примера я «прокачаю» screencap, который сможет не только получать скриншот всего экрана или выдавать «сырые данные», но и возвращать цвет пикселя по указанной точки или получать изображение только нужной области. Итак, поехали!
Читать дальше →

Библиотека асинхронных виджетов qt-async

Время на прочтение10 мин
Количество просмотров7.6K
Всем доброго времени суток. Хочу немного рассказать о своём проекте qt-async, возможно кому-то он покажется интересным или даже полезным.

Асинхронность и многопоточность уже давно и серьезно входит в обиход разработчиков. Многие современные языки и библиотеки разрабатываются с прицелом на асинхронное использование. Язык С++ тоже потихоньку движется в этом направлении — появились std::thread, std::promise/future, должны вот-вот завезти корутины и networking. Библиотека Qt тоже не отстает, предлагая свои аналоги QThread, QRunnable, QThreadPool, QFuture и т.п. При этом виджетов для отображения асинхронных действий в Qt я не нашел (возможно плохо искал, поправьте, если я ошибаюсь).

Поэтому я решил восполнить недостаток и попробовать реализовать такой виджет самому. Многопоточная разработка — дело сложное, но интересное.

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