Библиотека C/C++ разработчика | cpp, boost, qt
21K subscribers
1.57K photos
40 videos
16 files
3.74K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
📚 C++ System Programming Cookbook (2020)

✍️ Автор: Онорато Ватиконе
📃 Cтраниц: 292

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

Что внутри:

🔸 Ознакомитесь с основами, включая makefile, компиляцию, связывание и отладку
🔸 Углубите свои знания об управлении памятью
🔸 Используете процессы и потоки для синхронизации
🔸 Узнаете, как правильно взаимодействовать с консолью
🧑‍🔬🏥 CLI'нический парсинг

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

Здесь вы найдете увлекательный процесс создания этого Франкенштейна

#гайд
🧨⚠️ ТОП-10 ошибок в C и С++ проектах в 2023 году

Не просто статья о том, как где-то в коде допустили ошибку, а целое волшебство кодинга. 10 масштабных и зрелищных разборов ошибок.

Читать статью

#почитать
Что будет, если в двух файлах сделать функцию с одинаковым именем и параметрами? На каком этапе возникнет ошибка?

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

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

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

// fileA.cpp
namespace FileA {
void foo(int a) {
// Some code for file A
}
}

// fileB.cpp
namespace FileB {
void foo(int a) {
// Some code for file B
}
}


💩 Теперь вы можете использовать обе функции в своей программе, указывая пространство имен перед именем функции: FileA::foo(1); и FileB::foo(2);.
Please open Telegram to view this post
VIEW IN TELEGRAM
Квиз со звёздочкой для С++ программистов

Если устали от рутинных задач и хотите поразмять мозг чем-то интересным, welcome.

Несколько тестов для избавления от утренней скуки найдет здесь

#почитать
🤔 Очередной #дайджест по С++

🍬 Книга «Coding Clean, Reliable, and Safe REST APIs with ASP.NET Core 8» — все о протоколе HTTP, стиле архитектуры REST и ASP.NET Core 8

🍬 Крутые функции современного C++ для использования в вашем проекте — парочка современных функций C++ и объяснение на минималистичном примере

🍬 Современный С++ в разработке девайсов — детали подхода разработки и взаимодействия с виртуальным ассистентом

🍬 Длительность хранения и Non-local Objects в C++ — рассмотрение глобальных переменных, динамических и локальных объектов потоков

🍬 Технические собеседования — что болит у тех, кто их проводит и кто на них приходит
🤔 Так сколько на самом деле строк на C нужно, чтобы выполнить a + b в Python?

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

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

Читать статью

#почитать
🔍Насколько легко «войти в айти»?

Мы продолжаем собирать ваши истории о смене профессии и трудоустройстве в IT, чтобы написать большую аналитическую статью.

👉Если вы еще не рассказывали о своем опыте, пройдите короткий опрос по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥸👁️ Отслеживание изменений в директории с помощью Inotify

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

Inotify позволяет через файловый дескриптор наблюдать за директорией или файлом, отслеживая их события. Все события ввода-вывода ссылаются на открытый файл с использованием файлового дескриптора. Файловый дескриптор представляет собой целое число типа int.

Работа типичной программы мониторинга организована следующим образом:

♦️ С помощью inotify_init() открывается файловый дескриптор
♦️ Добавляется одно или несколько событий для наблюдений
♦️ Ожидаем добавленное событие
♦️ Обрабатываются события, после чего снова начинаем ждать в бесконечном цикле
♦️ При отсутствии активных наблюдений или при получении определенного сигнала файловый дескриптор закрывается, выполняется очистка и программа завершает работу.

#туториал
🎄 До Нового года осталось меньше недели, поэтому мы подводим итоги

🧑‍🎄 За год наше комьюнити стало больше почти на 4000 человек

❤️ Особенно вам понравились вот эти посты:

Свежие и обновленные статьи
LMDeploy — это набор инструментов для сжатия, развертывания и обслуживания LLM
Перегрузка операторов
Позднее связывание
Дайджест статей и материалов

💜 А ещё вы с интересом читали эти статьи:

Итог одной валютной удаленки: проработал месяц бесплатно и ушел с долгами
ТОП-10 книг по языку программирования С++ в 2023 году
ТОП-9 не самых очевидных компаний для стажировки в ИТ

🧑‍💻 В 2023 году мы запустили несколько новых каналов:

Библиотека собеса по C/C++ | вопросы с собеседований
Библиотека задач по C/C++ | тесты, код, задания
Книги для C/C++ разработчиков

Кстати, в канале с книгами прямо сейчас проходит новогодний розыгрыш 👈

🎁 И последнее, но не менее важное: мы сделали скидку -35% на все курсы нашей академии proglib.academy
🤔 Очередной #дайджест по С++

Книга «C++ for Financial Mathematics» — Книга учит всему, что вам нужно знать для решения реальных финансовых задач

Игровая легенда из 90-х — как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение с нуля на Glide

Poco — набор open-sorce библиотек для создания кроссплатформенных сетевых и веб-приложений

Мои советы после 20 лет в программировании — краткий очерк профессионального пути

Анализ приложений на C++ для оптимизации производительности — введение в оптимизацию производительности приложений на C++ с помощью таких инструментов, как Intel VTune Profiler и Intel Advisor
Чему бы вы хотели научиться?
Пишите в комментариях
👨‍🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику

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

Читать статью
Алгоритм lower_bound

Возвращает итератор, указывающий на первую позицию в отсортированной последовательности, ограниченной диапазоном [first, last], в которую можно вставить значение value, не нарушая упорядоченности.