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

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

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

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
📚 C++ System Programming Cookbook (2020)

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

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

Что внутри:

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

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

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

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

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

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

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

💩 Если вы определите функцию с одинаковым именем и параметрами в двух разных файлах, это нарушит 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
🔥12😁7👍6🎉4🥰2
Квиз со звёздочкой для С++ программистов

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

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

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

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

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

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

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

🍬 Технические собеседования — что болит у тех, кто их проводит и кто на них приходит
🤩23❤‍🔥19👍3🔥1
#задача

В шахматном турнире на звание гроссмейстера участвовало 12 человек, каждый сыграл с каждым по одной партии. За победу давалось 1 очко, за ничью — 0.5 очка, за поражение — 0 очков.

По итогам турнира звание гроссмейстера присваивали, если участник набрал более 70% от числа очков, получаемых в случае выигрыша всех партий.


Могли ли получить звание гроссмейстера:
● 7 участников?
● 8 участников?

Метод от противного, покажем, что получить звание мастера могли не более 7 участников.

Пусть их было 8

💩 Тогда каждый набрал не менее 0.7 * 11 = 7.7 очков, т.е. не менее 8 очков. Получаем, что все они в сумме набрали не менее 8 * 8 = 64 очков.
💩 В то же время в партиях с участниками, не получившими звание мастера, каждый из них набрал не более 4 очков. Это дает не более 4 * 8 = 32 очков.
💩 Значит, участники, ставшие мастерами, должны были набрать в партиях между собой не менее 32 очков. Но таких партий будет всего (8 * 8 - 8) / 2 = 28. Получаем противоречие.

Пусть их было 7


💩 Пусть первые 7 всегда выигрывали у последних 5, а все остальные партии завершились вничью.
💩 Тогда первые 7 участников набрали по 1 * 5 + 0.5 * 6 = 8 очков, а последние 5 по 0 * 7 + 0.5 * 4 = 2 очка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥35👍5🤔4🥱3👏1
Shared memory

Shared memory является мощным инструментом для межпроцессного взаимодействия, позволяя нескольким процессам совместно использовать область памяти.

Это может быть полезно для:

💩 Повышения производительности: Обмен данными через shared memory гораздо быстрее, чем традиционные методы, такие как межсетевое взаимодействие или файлы.
💩 Уменьшения задержки: Данные доступны обоим процессам напрямую в памяти, устраняя необходимость копирования.
💩 Упрощения синхронизации: Совместное использование памяти упрощает реализацию синхронизации между процессами.

Однако использование shared memory также имеет свои сложности:

💩 Потенциальные ошибки синхронизации: Необходимо тщательно продумать механизмы синхронизации, чтобы избежать проблем.
💩 Отсутствие защиты памяти: Доступ к shared memory могут получить и другие процессы, если не реализованы механизмы защиты.
💩 Сложность отладки: Отладка программ, использующих shared memory, может быть более сложной, чем отладка традиционных программ.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥22👍182
🤔 Так сколько на самом деле строк на C нужно, чтобы выполнить a + b в Python?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать статью
2❤‍🔥2🔥1
Алгоритм lower_bound

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

🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!

🌟«Алгоритмы и структуры данных» — 23 390 ₽ (вместо 35 990 ₽)

Полугодовая программа от преподавателей МФТИ и НИУ ВШЭ, которая включает в себя все необходимые знания по алгоритмам для работы.

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

У вас не будет шансов не усвоить какие-то темы курса👌

🔥 Переходите и активируйте вводные занятия курсаhttps://proglib.io/w/ff97c30a
👍4🔥1