Как стать автором
Поиск
Написать публикацию
Обновить
94.36

C++ *

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

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

Многопоточности – да! Как работать с геометрическим ядром C3D в многопоточном приложении

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

Татьяна Митина, руководитель подразделения C3D Labs в Нижнем Новгороде, рассказывает, как устроена многопоточность ядра C3D, какими механизмами обеспечивается потокобезопасность ядра, какие параллельные вычисления происходят в самом ядре. Особое внимание уделяется правилам использования ядра C3D в нескольких потоках.

Многопоточность – отличный повод

заглянуть  в параллельные миры!

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

Читать далее

Новости

DIY Open Source принтер. Часть 0

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

Привет, Хабровчане! Этот цикл (надеюсь) статей будет посвящён моему пути в создании своего собственного решения по струйной печати. Это будет что-то вроде блога или дневника разработчика в котором постараюсь изучить как же всё таки работает печатающая головка у принтера и как ей можно управлять с помощью микроконтроллера. А также нас ждёт интригующий ответ на вопрос: "Если ли место DIY и OpenSourse в мире струйной печати".

Читать далее

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

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

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

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

Читать далее

Deferred Rendering: GBuffer

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

Всем привет, видела на просторах интернета достаточно мало материалов на отложенный рендеринг, при том что сама его идея‑то достаточно прикольная, так что решила вставить свои пять копеек сама.

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

Читать далее

librats: новая библиотека для распределённых P2P-приложений

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

Всем привет! Я являюсь создателем распределённого поисковика rats-search на базе DHT ( GitHub ). Его принцип работы довольно прост: поисковик собирает торренты у всех участников сети и формирует большую распределённую базу для поиска, включая метаданные (например, описания и прочую информацию).

В этой статье я хочу рассказать о своей новой библиотеке для построения распределённых приложений (p2p), где знание IP-адресов участников не обязательно, а поиск ведётся через различные протоколы — DHT, mDNS, peer-exchange и другие. Думаю, с учётом постоянных неприятностей, которые происходят вокруг, это может оказаться полезным ;-).

Читать далее

Боремся с хедкрабами в исходниках Source SDK

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

GameDev тернист и неисповедим. Как и любой проект, он проходит испытания кровью и потом, сражаясь с тварями, тьмой порождёнными: барнаклы, пиявки, муравьиные львы. И это ещё не сказочка, это только смазочка. Больше всего стоит остерегаться жуков хедкрабов. Да, это те самые баги в коде. Если их вовремя не убить монтировкой, то ваша участь — стать отвратительным кадавром. Предлагаем читателю побывать в роли Гордона Фримена, погрузиться в недры Source SDK и побороться с хедкрабами. В качестве монтировки же выступит PVS-Studio.

Читать далее

Минимальный «эксплойт» на Си, который научил меня любить защиты

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

Я всегда считал, что взлом — это магия адресов и байтов. А потом я написал десять строчек на C и понял, что настоящая магия — это защиты компилятора и ОС. В этой статье я сознательно построю крохотный уязвимый пример, добьюсь управляемого падения (это и будет мой «эксплойт»), а затем превращу баг в безопасный и быстрый код. Ни одного шага против чужих систем — только локальная лаборатория и гигиена памяти.

Читать далее

Высокий слог. Язык программирования для аристократов. Почему LLM приучают нас к языку аристократов программирования

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

Он заговорил, и стрелок застыл, поражённый: к нему обращались Высоким Слогом Гилеада! — Сделай милость, стрелок‑сэй. Не пожалей золотой. Один золотой — это ж такая безделица. Высокий Слог. В первый миг разум стрелка отказался его воспринять. Прошло столько лет — Боже правый! — прошли века, тысячелетия; никакого Высокого Слога давно уже нет. Он — последний. Последний стрелок.

Стивен Кинг

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

Осторожно! В статье намеренно используются фрагменты сгенерированного текста!

Читать далее

Мультиплеер в Цивилизации 5

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

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

Читать далее

Демистификация unaligned access undefined behavior в C

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

Неопределённое поведение (Undefined Behavior, UB) в C и C++ — одна из причин, по которым разработчики всё чаще ищут языки с полностью определённой семантикой. Одним из самых коварных UB является unaligned access, с точки зрения стандарта C это, например, когда происходит попытка разыменовать указатель как uint32_t, а значение указателя (адрес) не кратно четырём. Один из частых сценариев использования, приводящих к такому UB - получение данных по сети и их интерпретация как чисел.

Читать далее

Что делать, если ваш слон думает, что он баг?

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

Мы окунулись в веб-разработку и нашли там необычное животное. Это был слон с повадками бага. Мы изучили код проекта PHP и поняли, в чём дело. Давайте вместе посмотрим на необычные случаи, которые могут привести к неожиданным результатам.

Читать далее

Flat-контейнеры в C++

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

Привет, Хабр! Еще в C++23 появились «плоские» ассоциативные контейнеры: std::flat_setstd::flat_map и их многоключевые аналоги. Проще говоря, это полные аналоги обычных std::set и std::map, но реализованные иначе – через упорядоченный последовательный контейнер (по умолчанию std::vector). Зачем вообще понадобились эти штуки? Официальная причина – экономия памяти и выигрыш в производительности при чтении данных.

Читать далее

Библиотека Asio для начинающих: работаем с корутинами без сегфолтов

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

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

Я подумал, что было бы здорово написать статью, которая служила бы введением в библиотеку. Статью, которая помогла бы начать пользоваться Asio, даже если раньше вы с ней не работали. Что получилось, читайте под катом.

Читать далее

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

Думай о секундах свысока — как бы говорит нам Modern C++

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

Думай о секундах свысока - как бы говорит нам Modern C++.

Зачем нам использовать Modern C++, особенно старших версий? Дурацкий вопрос, скажут сектанты, фанаты, фанатики, адепты. Оно же необходимо для большей выразительности, читабельности и ускорения всех возможных процессов, включая метаболизм; и еще для экономии времени. Что-то в этом есть, а кое-чего нет. Давайте рассмотрим пример из жизни.

Один программист (имя сохранено в редакции) писал себе спокойно код и написал примерно такое (для справки: используемый стандарт 2017):

пример из жизни

Обход Cloudflare. Часть I

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

Как обмануть алгоритмы отпечатков браузера и не спалиться? Первая часть трилогии о скрытии свойств браузера.

Трилогия будет полезна всем, кто хоть иногда сталкивается с блокировками при парсинге сайтов.

А ну-ка, что там?

Ранг-селект словари

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

Это первая статья из планируемой серии про succinct data structures - класс наиболее компактных структур данных. Канонический пример такой структуры - это представление дерева в виде правильной скобочной последовательности, дерево изnвершин таким образом представляется с помощью2nбит в то время как типичная динамическая реализация требовала бы как два указателя по 64-бит на каждый узел (разумеется можно немного сократить простыми оптимизациями, но даже близко 2 бита не получить). Фундамент подобных структур - это rank-select словарь, представляющий собой битовый вектор и дополнительную структуру для выполнению двух операций ранг и селект. В указанном примере с деревом с помощью ранга и селекта можно сделать базовую навигацию: найти номера потомков/родителей, узнать размер поддерева. В статье расскажу как делать эти операции быстро используя при этом всего 3,6% дополнительной памяти.

Читать далее

Вайб-кодинг и реальное программирование на С++

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

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

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

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

Читать далее

Делаем настольные часы с Wi-Fi из тетриса

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

Если вы посмотрели видео, то уже хорошо понимаете, что представляет из себя этот гаджет, но на всякий случай ещё раз перечислю, что он умеет: онлайн‑синхронизация времени, фоторамка, демонстрация логотипа, имитация волшебного шара из фильма «Трасса 60». В часах используется модуль WeAct ESP32‑C6 Mini с процессором ESP32‑C6 QFN32 и дисплей WeAct ST7735 (9 $ за всё вместе с доставкой с AliExpress).

Читать далее

CMake: герой, который споткнулся о 12 багов

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

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

Читать далее

Харденинг, модули в С++ и первый опыт вайб-кодинга у программиста со стажем5

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

Считается, что на конференции лучше всего запоминаются первое и последнее выступления. И тут я не являюсь исключением, так как при посещении С++ Zero CostConf 2025 мне сильнее всего запомнились как раз первый и последний доклады, но думаю не только из-за эффекта края, но и по той причине, что они были для меня самыми интересными и именно ради них и я решил съездить в Москву из далекой российской глубинки.

Но мне не хочется писать про само мероприятие, тем более, что видеозапись всех выступлений выложена на сайте конференции C++ Zero Cost Conf 2025 и пересказывать технически детали докладов не имеет смысла.

Однако прошедшее мероприятие было очень необычным и запоминающимся: мне удалось попробовать себя в роли вайб-кодера, а по результатам общения с докладчиками — написать два предложения в комитет по стандартизации C++ от России. Поэтому я всё же решил поделиться с читателями «Хабра» своими впечатлениями от некоторых докладов конференции и собственными выводами о вайб-программировании.

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

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