Обновить
277.78

C++ *

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

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

Logger C++

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

Этот проект представляет собой простую и гибкую библиотеку для логирования на C++. Библиотека поддерживает разные уровни логирования, форматирование сообщений и возможность записи логов в разные потоки.

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

Книга: «Алгоритмы? Аха!»

Время на прочтение6 мин
Охват и читатели7.9K
image Привет, Хаброжители!

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

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

Предварительные секции: что спрашивают у разработчиков С++ на собеседовании в Яндексе

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

Хабр, привет! Меня зовут Владимир Михайлов, я занимаюсь бэкендом в Яндекс Такси — мы создаём внутренние продукты, которые используют в разных юнитах Яндекса. Также я работаю наставником на курсах «Разработчик C++» и «C++ для бэкенда» в Яндекс Практикуме. 

А ещё я помогаю компании с наймом и провожу предварительные секции с кандидатами — разработчиками C++. Я расскажу, какие задачи даю на этих секциях, на что обращаю внимание и как подготовиться к подобному собеседованию.

Читать далее

Контейнер ConditionalBitset — небольшое хранилище для условий выполнения

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели923

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

В статье все примеры взяты из головы. Все совпадения случаны

Если интересно, прошу в статью

Разработка многопоточной Базы Данных: Ключевые аспекты и примеры реализации ( C++ )

Время на прочтение6 мин
Охват и читатели2.6K

Эта статья посвящена разработке многопоточной базы данных. Мы рассмотрим основные компоненты, такие как хранилище данных, транзакционные системы, многопоточность, журналирование и восстановление, а также создание API для взаимодействия с базой данных. Примеры кода на языке C++ помогут лучше понять реализацию различных аспектов многопоточной базы данных.

Читать далее

Как я создавал автокликер для приложения «ДругВокруг»

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

Социальные сети и мессенджеры последнее время завоевали большую популярность среди пользователей интернета. Одной из таких соцсетей было приложение «ДругВокруг». Точнее, было в моём обиходе. Стояло оно у меня на компьютере с Windows XP в 2016 году. В то время у меня возникла идея сделать одну интересную программу для работы с этим приложением...

Читать далее

Отслеживание изменений в директории с помощью Inotify

Время на прочтение4 мин
Охват и читатели14K
Столкнулся с задачей, где необходимо было отслеживать в ОС Linux изменение файла в директории на чистом С++. Так как чистый С++, Qt с его QFileSystemWatcher сразу отпадал, из-за того что необходимо было подключать QObject. В итоге решил пользоваться линуксовой функцией Inotify.
Читать дальше →

Эволюция enum

Время на прочтение8 мин
Охват и читатели20K

Константы — это здорово. Типы — это замечательно. Константы определенного типа — еще лучше. А enum классы — это просто фантастика.

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

Читать далее

Поиск ошибок в проектах на основе Unreal Engine

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

Единорог Коди (PVS-Studio) коллекционирует баги, специфичные для Unreal Engine проектов


В статическом анализаторе PVS-Studio начали появляться диагностические правила для выявления багов, специфичных для Unreal Engine проектов. Однако без сообщества разработчиков игр здесь не обойтись. Напишите нам про типовые паттерны ошибок, поиск которых хотелось бы автоматизировать.


Анализатор PVS-Studio хорошо выявляет распространённые паттерны опечаток, логические ошибки, потенциальные уязвимости и многое другое. Теперь взор команд, разрабатывающих PVS-Studio, обратился в сторону Unreal Engine.

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

Выделение регионов памяти в C++: советы и приёмы

Время на прочтение12 мин
Охват и читатели9.9K

Эта статья обсуждалась на Hacker News.

В течение минувшего года я шлифовал мой подход к выделению регионов. Практика показывает, что это эффективный, простой и быстрый подход; обычно его используют в качестве средства для сборки мусора без издержек. В зависимости от того, что нам требуется, в аллокаторе может быть всего 7–25 строк кода — идеально для случаев, когда мы работаем без среды исполнения. Теперь, когда я окончательно сформулировал ключевые аспекты моего подхода, самое время их задокументировать и рассказать вам о том, что мне удалось выучить. Определённо, это не единственный возможный подход к выделению регионов. Я просто расскажу вам о приёмах, которые сам выработал для упрощения программ и искоренения ошибок.

Регион (арена) — это буфер памяти и смещение до этого буфера. Изначально это смещение равно нулю. Чтобы выделить объект, нужно взять указатель на него с заданным смещением, увеличить смещение на размер объекта, а затем вернуть указатель. Этим дело не ограничивается — например, нужно обеспечить выравнивание и доступность. До этого мы ещё дойдём. Объекты не высвобождаются каждый по отдельности. Напротив, сразу высвобождаются целые группы ранее выделенных объектов, и смещение откатывается к более раннему значению. Когда не предусмотрены собственные времена жизни для отдельных объектов, деструкторы писать также не требуется, а вашим программам не приходится прямо во время выполнения обходить структуры данных и убирать ненужные. Кроме того, больше можно не беспокоиться об утечках памяти.

Читать далее

Изучаем Kirigami от KDE: примеры разработки приложений

Время на прочтение9 мин
Охват и читатели5.6K

Для создания пользовательского интерфейса приложений придумано множество инструментов. Фреймворк Kirigami – как раз один из таких. Хотя он не отличается какой-то особой оригинальностью, Kirigami призван сделать создание приложений более простым и быстрым. С помощью этого инструмента можно создавать адаптивные и кроссплатформенные программы.

Читать далее

Rust моей мечты — несостоявшийся язык

Время на прочтение14 мин
Охват и читатели16K

В одном недавнем подкасте о том, кто сейчас главный в Rust, вновь всплыл вопрос о том, кому быть BDFL (великодушным пожизненным диктатором), и Джереми Соллер сказал (это был чемпионский заход на приз «за преуменьшение века»): «Я считаю, Грейдон забраковал бы некоторые вещи, которые всем нам сейчас нравятся». Этим он вторит другой дискуссии на reddit, в которой мне напомнили, что я собирался как-нибудь расписать, каким образом «я сделал бы всё по-другому». Вероятно, это бы крайне не понравилось всем причастным, и эти идеи далеко бы не распространились.

Ну и ну. Я понял, что следующий момент не вполне очевиден и он, пожалуй, заостряет вопрос, «а действительно ли в проекте нужен BDFL». Так вот, озвучу его: Rust Нашего Времени далеко, далеко отстоит от Rust Моей Мечты. Главное, не поймите меня неправильно: мне нравится, что у нас получилось. Получилось отлично. Я воодушевлён, что теперь есть столь жизнеспособная альтернатива C++, в особенности такая, которую другие люди уже начинают воспринимать как норму, как реальный вариант для повседневной работы. Я пользуюсь Rust и очень доволен, что могу отдавать ему предпочтение перед C++. Но!

Я столько всего сделал бы в Rust по-другому, если бы всё это время «отвечал» за его развитие.

Читать далее

Скоростной серфинг по библиотеке с помощью ChatGPT

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

В прошлой статье в теории были рассмотрены некоторые аспекты использования ChatGPT в узконаправленной области изучения библиотеки Bullet Physics library. Теперь попробую привести практический пример.

Серфим далее

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

Пчела на работе, разработка игр на SFML C++

Время на прочтение14 мин
Охват и читатели11K

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

Анимация очень важный игровой элемент, он оживляет персонажей, придаёт игре более естественный вид. В этой статье рассмотрены следующие темы:

управление временем;

анимация спрайтов;

создание класса Animator;

практическое использование класса Animator.

Читать далее

Изучение физического движка Bullet Physics. Часть 2. Примеры

Время на прочтение5 мин
Охват и читатели5.6K

Данная статья продолжает тему исследования библиотеки симуляции столкновений в Bullet Physics (Bullet). Предыдущая статья здесь.

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

В качестве системы визуализации используется Unreal Engine(UE), поскольку  хайповая штука и она мне знакома она бесплатна, имеет множество дополнений и, в целом, предоставляет красивую картинку “из коробки”.

Читать далее

Геометрические фигуры мультимедийной библиотеки SFML для разработки игр на C++

Время на прочтение3 мин
Охват и читатели20K

Перед тем как приступить к рассмотрению темы, геометрические фигуры, разберём каркас программы на С++, которая использует библиотеку SFML.

Для работы с кодом мы будем использовать Visual Studio 2022 и библиотеку SFML. Как подключить библиотеку SFML к Visual Studio 2022 вы можете узнать посмотрев видео инструкцию "Подключение библиотеки SFML C++"

Читать далее

С++ и Raylib как глоток свежего воздуха

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

Какое то время назад пришла ко мне идея исполнить хотя бы немного детскую мечту программировать игры. Надо сказать, что определенный опыт у меня был. Попала в девятом классе ко мне в руки чудесная книга Андрэ Ламота "Секреты программирования игр", благодаря которой я изучал язык Си, поскольку все там было завязано на нем. И это были незабываемые моменты. Просто это казалось каким то чудом , что я сам, своими руками заставляю двигаться персонажей и вообще, это все даже похоже на игры для Dendy, которые я так мечтал делать в еще более ранний период детства.

В основном сейчас я программирую на Java ,и изначально мой выбор пал на библиотеку libGDX. Масштабные фреймворки типа Unity и UnrealEngine я не раcсматривал, поскольку главной целью моей все же было не делать продукт, а просто получить удовольствие от написания игры и ощутить ту магию, когда в школе на языке Си я с нуля писал код для доступа в видеопамять, рисования спрайтов и контролировал каждый бит (почти). Поэтому просто хотелось поэкспериментировать именно с библиотеками, предоставляющими основные функции, типа рисования, обработки клавиатуры. Но как то попалась мне на глаза библиотека Raylib. Испугал меня конечно язык С++.( К слову сказать Raylib поддерживает еще и кучу других языков, но это я узнал потом). Долго ли коротко, принял решение поэкспериментировать с Raylib, заодно изучив С++,на котором никогда не программировал и вообще для меня С++ это какой то высший пилотаж.

Читать далее

Рисуем карту сервисов при помощи Qt Quick и GraphViz

Время на прочтение7 мин
Охват и читатели2.9K

Решил запрототипировать два представления в дополнение к стандартному Jaeger UI. Это построение карты сервисов по трейсу; просмотрщик логов без пиксельхантинга и разворачивания спанов. Для виджетов есть обертка в виде nbergont/qgv, а хочется сделать на QtQuick.

Читать далее

Разбираемся с условными брейкпоинтами в C++

Время на прочтение4 мин
Охват и читатели6.2K

Для большинства случаев дебаггинга вам должно с головой хватать стандартных точек останова (breakpoints или брейкпоинтов). Но иногда кода для проверки, объектов или случаев попросту слишком много. Что делать, если мы хотим отфильтровать код, генерирующий точку останова? Прошу вас поприветствовать условные точки останова!

Читать далее

Статический анализатор кода vs разработчики. Шо, опять?

Время на прочтение3 мин
Охват и читатели3.2K

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


0964_rezultaty_quiza_cpp_ru/image1-3f082de585be7198d831d7e418a82578.png

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

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