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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
Run-time type identification

Run-time type identification (RTTI) — это механизм, который позволяет программе определить тип объекта во время выполнения (в рантайме). Это означает, что вы можете определить фактический тип объекта, на который указывает указатель или ссылка, даже если его статический тип (определенный на момент компиляции) отличается.
#код
Рабочие контракты: высокопроизводительная асинхронная система управления задачами без блокировок

TL;DR; Рабочие контракты — это альтернатива очередям MPMC для использования при обработке асинхронных задач. Они обеспечивают превосходную производительность по сравнению с ведущими реализациями очередей MPMC без блокировки, особенно в условиях высокой конкуренции.

Читать статью
🔥🕑 10 признаков того, что пора увольняться

«Быть или не быть?», «Уйти или остаться?»: делаем вдох-выдох и принимаем важное решение.

🔗 Читать статью
🔗 Зеркало
Что выведет код сверху?

Ответ:
10
Объяснение:
Подобно struct и class, union может иметь методы. Подобно struct и в отличие от class, члены union по умолчанию являются общедоступными.

Поскольку данные-члены объединения совместно используют память, значение b становится таким же, как a.
#вопросы_с_собеседований
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника

💼Каналы с вакансиями

Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Стеганография, часть 3: JPEG

Это все еще развивающаяся область, здесь так много всего, на что стоит обратить внимание, но в этой статье автор сосредотачивается на визуальной целостности самого изображения.

Читать статью
std::make_shared

std::make_shared — это стандартная функция, используемая для создания объектов типа std::shared_ptr. Она позволяет создавать объекты типа std::shared_ptr без использования оператора new. Это сокращает код и упрощает его читаемость.

В этом примере мы создаем класс MyClass, имеющий поле value и метод Print(), выводящий значение поля value на консоль. Затем мы используем std::make_shared для создания объекта типа std::shared_ptr:
std::make_shared(42);

Обратите внимание, что таким способом созданный объект MyClass будет автоматически удален, когда на него не останется ссылок, даже если в вашем коде не указано delete.
#код
-35% на полугодовой курс по алгоритмам!

🌟 Алгоритмы и структуры данных🌟

23 390 рублей 35 990 рублей до 5 сентября

Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.

🔥 Переходите и активируйте пробную версию курсаhttps://proglib.io/w/a6225775

Вас ждут:

– 150 практических заданий и 47 видеолекций

– бессрочный доступ к обучению

– поддержка преподавателя в чате

А также очень харизматичный спикер из Яндекса 🙌🏻
Лямбда-функция

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

Лямбда-функции также часто используются вместе с алгоритмами стандартной библиотеки C++, такими как std::for_each, std::transform, std::sort (как на примере выше), и другими, чтобы создавать более компактный и выразительный код.
#код
Очередной #дайджест по C++:

Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64
Автор ковыряется в исходниках, создавая любопытные вещи.

Дорожная карта развития CLion, намечающая направление изменений для следующего релиза, CLion 2023.3: улучшение AI-assistant, поддержка Meson и Bazel, интеграция возможностей Compiler Explorer прямо в IDE.

Различные типы блоков управления общим указателем
О том, как отличаются контрольные блоки std::shared_ptr, созданные различными способами: на основе уже имеющегося указателя, с помощью std::make_shared, std::allocate_shared.

Базовый набор для решения задач на LeetCode/Codeforces, ч.4 Функциональные объекты C++
Очередная часть полезнейшего цикла статей.

PVS-Studio vs CodeLite: битва за идеальный код
Как улучшить качество и надёжность кодовой базы? Один из ответов на этот вопрос — использование статического анализа.
Когда вы последний раз использовали Copilot?
#интерактив
«Библиотека программиста» продолжает поиски контент-менеджера для ведения телеграм-каналов

Ищем человека, который грамотно пишет, разбирается в контенте и в одной из этих тем:
👉С++
👉Frontend
👉мобильная разработка
👉тестирование

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Подробнее о вакансии и форма для отклика — по ссылке.

Ждем вас в команде!
(Жизненный) cовет от создателя C++

Создатель C++, Бьёрн Страуструп, делится ценными жизненными советами, которыми, скажем прямо, могли бы воспользоваться все разработчики, независимо от их многолетнего опыта. По словам Бьерна, «вы не можете просто писать код», вам нужно развивать больше навыков, если вы хотите стать всесторонним успешным разработчиком. Посмотрите это неизданное интервью, если вы хотите получить вдохновение и рекомендации на своем пути разработчика от одного из OG.

Смотреть видео
Проверить, найден ли элемент в массиве С++

В С++ вы должны использовать std::findи проверить, указывает ли результирующий указатель на конец диапазона.
#вопросы_с_собеседований
Мocking

Мокирование — это процесс создания имитаций (моков) объектов или компонентов программы, чтобы тестировать код без необходимости использовать реальные зависимости.

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

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

Смотреть статью
Как вы предпочитаете работать: дистанционно или в офисе?
#интерактив
Cache miss

Cache miss (промах в кэше) в C++ относится к ситуации, когда процессор не может найти нужные данные в кэше, и должен обратиться к более медленной памяти (например ОЗУ), для получения этих данных.

Когда код выполняется на процессоре, процессор пытается загрузить данные или инструкции из кэша первого, второго или третьего уровня (L1, L2, L3 и так далее), прежде чем обращаться к оперативной памяти. Если данные или инструкции отсутствуют в кэше, возникает кэш-промах (cache miss), и процессор должен загрузить их из оперативной памяти, что занимает гораздо больше времени, чем доступ к данным в кэше.
#код
Очередной #дайджест по С++:

✍️ Можно ли доверить компилятору оптимизацию вашего кода?
Автор объясняет общую структуру компиляторов, пригодную для оптимизации статических языков, таких как Rust или C++.

✍️ Проверка компилятора GCC 13 с помощью PVS-Studio
Цель — обнаружить ошибки в коде GCC с помощью анализатора PVS-Studio.

✍️ Почему C++ не устаревает
Что же делает язык с 40-летней историей таким популярным и почему сегодня он только укрепляет позиции?

✍️ Как я присоединился к сообществу bug 323
Это история о баге, от которого хочется рвать на себе волосы.

✍️ Приятный разговор о знаковых и беззнаковых целых числах (с обжаркой Google)
Правильный выбор целочисленного типа — плохо изученная тема, которая привела к стандартизации проблемных интерфейсов в C++, плохо разработанным требованиям безопасности и путанице среди разработчиков.
std::atomic_thread_fence

std::atomic_thread_fence — это функция, которая устанавливает порядок синхронизации памяти для не атомарных и расслабленных атомарных доступов, как указано в аргументе order, без связанной атомарной операции.

std::atomic_thread_fence может использоваться для обеспечения правильного порядка чтения и записи в многопоточных программах.

В этом примере два потока выполняют функции write_x_then_y и read_y_then_x:

- write_x_then_y устанавливает значение атомарной переменной x равным 1, затем вызывает std::atomic_thread_fence с аргументом std::memory_order_release и устанавливает значение атомарной переменной y равным 1.

- read_y_then_x считывает значение атомарной переменной y, затем вызывает std::atomic_thread_fence с аргументом std::memory_order_acquire и считывает значение атомарной переменной x.
#код