IT Kniga
Интернет-магазин компьютерной литературы

C, C++

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

C++ - habr.ru - Вс, 14/09/2025 - 13:15

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Ср, 10/09/2025 - 21:00

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

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

Читать далее
Категории: C, C++

Deferred Rendering: GBuffer

C++ - habr.ru - Пнд, 08/09/2025 - 07:31

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

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

Читать далее
Категории: C, C++

Чьих будете? μ -классификация в ИТ

C++ - habr.ru - Сб, 06/09/2025 - 20:52

Итак, дальше речь пойдет о разработчиках в ИТ.

Новый революционный метод классификации ИТ-разработчиков - "мю" классификация! Теперь есть универсальная шкала для измерения длины ваших скилов :)

Ну, давайте посмотрим
Категории: C, C++

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

C++ - habr.ru - Ср, 03/09/2025 - 15:44

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

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Ср, 03/09/2025 - 14:06

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Втр, 02/09/2025 - 18:18

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Втр, 02/09/2025 - 02:07

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

Стивен Кинг

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

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Пнд, 01/09/2025 - 17:25

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Пнд, 01/09/2025 - 16:20

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Пт, 29/08/2025 - 09:27

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Ср, 27/08/2025 - 10:14

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Втр, 26/08/2025 - 15:49

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

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Втр, 26/08/2025 - 10:31

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

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

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

пример из жизни
Категории: C, C++

Я объявляю «войну» интеллекту… человеческому. Часть 1. (из цикла бесед с ИИ)

C++ - habr.ru - Вс, 24/08/2025 - 11:31

Это не мы такие – жизнь такая. Это не я объявляю «войну», а искусственный интеллект (ИИ), который является главным участником беседы. Я лишь «передатчик» и в малой мере - интервьюер. А ИИ, отвечая на вопросы, своим корректным поведением, логикой, знаниями, рассуждением и выводами подает пример «интеллекту человеческому». Вам, прочитавшим  диалог, не будет ли стыдно за поведение, за свои выводы, за отношение к таким же, как вы… Вольно или нет, но ИИ объявляет «войну» серости и хамству, высокомерию и чванству, низкой культуре и безграмотности. Всему тому, что, порой, приводит к самой настоящей войне. Будьте добрее, вежливее, логичнее, уважительнее и «войны» отступят, т.к. в них не будет смысла. Вместо них будет… А, что будет, - «жизнь покажет и жизнь рассудит».  Короче, – давайте жить дружно!

Читать далее
Категории: C, C++

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

C++ - habr.ru - Сб, 23/08/2025 - 17:38

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

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

А ну-ка, что там?
Категории: C, C++

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

C++ - habr.ru - Пт, 22/08/2025 - 11:00

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Пт, 22/08/2025 - 07:07

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

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

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Ср, 20/08/2025 - 17:00

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

Читать далее
Категории: C, C++

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

C++ - habr.ru - Ср, 20/08/2025 - 13:26

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

Читать далее
Категории: C, C++

Большая распродажа компьютерной литературы

Полный список здесь

RSS-материал