TGViewer
Channel Public Channel
Библиотека C/C++ разработчика | cpp, boost, qt

Библиотека C/C++ разработчика | cpp, boost, qt

@cppproglib

Все самое полезное для плюсовика и сишника в одном канале.

Как запустить своего ии-агента: https://clc.to/tvpmDQ

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

Обратная связь: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Subscribers
16.8K
Photos
2.3K
Videos
74
Links
4.6K

Showing posts older than #4173 · Back to latest

Older Posts 20 shown
Post #4172 6.4K
#memes

Когда изменил что-то в коде, но продолжаешь запускать старый билд
  • 👍 52
  • 😁 46
  • 🔥 8
Post #4171 5.25K
Бесплатный С++ митап в Москве и онлайн с инженерами YADRO — боли С++23, lifetime extension и техсобесов

Состоится вся кухня 21 ноября 2023 в 19:00. Офлайн будет в Москве, Столярный пер., 3К15, ДК «РАССВЕТ».

Обсудите новый стандарт с точки зрения практикующего программиста, узнаете, как избежать dangling reference и подискутируете, как собеседовать комфортно для всех. Докладчики митапа — разработчики из команд систем хранения данных и телекома в YADRO.

Программа

Как работает (и не работает) lifetime extension
Что страшнее: segfault или UB, лишнее копирование или dangling reference? Мы редко задумываемся о том, как работает механизм lifetime extension, еще реже осознанно используем. Спикер расскажет, как он устроен и на что обращать внимание, чтобы не создать себе проблем на ровном месте.

C++ 23 глазами практикующего системного программиста
Новый стандарт закрыл как минимум две боли, которые все испытывали при программировании. Но нет худа без добра, он добавил две новых!

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

Регистрация тут

#мероприятие
  • 👍 11
  • 🔥 1
Post #4170 5.61K
🦾🤾 Хардварный проброс

Пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая — открыть периферию для использования вне микроконтроллера.

🤔 В случае проброса периферии, внешними клиентами будут выступать программы на ПК, и для них мы будем давать доступ к внутренним регистрам микроконтроллера. Для программ это будет выглядеть так, как будто регистры периферии находятся в адресном пространстве компьютера(ПК). Все равно что эти самые регистры периферии висели бы на одной шине с памятью и другими устройствами ввода-вывода.

✍️ Путь первый. Перехватываем все что есть

В каждой инструкции mov что работает с памятью будем проверять операнды, и если в операндах есть адрес, который совпадает с адресом периферии (к примеру адрес GPIOС 0x40011000) в микроконтроллере, то PinTool будет эту операцию выполнять на целевом микроконтроллере с помощью OpenOCD сервера и железного отладчика(st-link).

Детальное продолжение ждет тут
  • 🔥 7
  • 👏 4
  • ❤ 2
  • 😁 2
  • 🤩 2
Post #4169 5.39K
#memes
  • ❤ 50
  • 😁 13
  • 🤔 6
  • 👍 4
Post #4168 6K
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
  • 🤯 3
Post #4167 5.08K
  • 🤔 8
  • 👍 5
  • 🔥 2
  • 👏 1
Post #4165 5.64K
#вопросы_с_собеседований

Как работает std::shared_ptr?

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

➖ Когда вы создаете shared_ptr, он увеличивает счетчик ссылок на объект. Когда shared_ptr уничтожается, он уменьшает счетчик ссылок. Если счетчик ссылок достигает нуля, это означает, что больше нет shared_ptr, указывающих на объект, и он может быть безопасно удален.

➖ std::shared_ptr также предоставляет набор методов для управления объектом, таких как reset, который позволяет заменить текущий объект новым, и use_count, который возвращает текущее количество shared_ptr, указывающих на объект.

Вот простой пример использования std::shared_ptr:

#include
#include
int main() {
std::shared_ptr ptr1(new int(5));
std::cout << *ptr1 << std::endl; // выводит 5
std::cout << ptr1.use_count() << std::endl; // выводит 1
{
std::shared_ptr ptr2 = ptr1;
std::cout << ptr1.use_count() << std::endl; // выводит 2
}
std::cout << ptr1.use_count() << std::endl; // выводит 1
}

Создаем std::shared_ptr, который владеет динамически выделенным объектом типа int. Затем еще один shared_ptr, который указывает на тот же объект. Когда второй shared_ptr выходит из области видимости и уничтожается, счетчик ссылок уменьшается, но объект не удаляется, потому что все еще есть другой shared_ptr, указывающий на него.
  • 👍 9
  • ❤ 1
  • 🤯 1
Post #4164 5.12K
🧑‍🍳🧑‍🎓 Релиз vcpkg 2023.10.19

Стала доступна версия менеджера пакетов vcpkg 2023.10.19. Автор статьи кратко излагает изменения, случившиеся с 10 августа 2023 года по 19 октября 2023 года для репозиториев Microsoft/vcpkg, Microsoft/vcpkg-tool и Microsoft/vcpkg-docs на GitHub.

Некоторая статистика за этот период:

🔹 В реестр с открытым исходным кодом было добавлено 53 новых порта. Если вы не знакомы с термином «порт», то это пакеты, которые создаются из исходного кода и обычно представляют собой библиотеки C/C++.
🔹 В существующие порты было внесено 729 обновлений.
🔹 В настоящее время в public registry vcpkg доступно 2 318 библиотек.
🔹 34 участника представили PRs или приняли участие в обсуждениях в основном репозитории.
🔹 Основной vcpkg repo имеет более 5700 форков и 19 900 звездочек на GitHub.

Более детально о релизе читайте здесь
  • 👍 7
  • 🥰 1
Post #4163 5.46K
🧜‍♂️🧜‍♂️ Погружение в Telegram API через TDLib

Пришла пора узнать, как сделать свой клиент для Telegram, что такое TL-схема и TDLib.

Прежде чем начать

Telegram поощряет, ну или по крайней мере не наказывает, за разработку пользовательских клиентов. Для создания клиента необходимо придерживаться следующих правил:

➖ Необходимо использовать свой уникальный APP_ID
➖ Необходимо следовать правилам безопасности
➖ Можно расширять функциональность Telegram, но нельзя заставлять пользователей других приложений переходить в ваше приложение
➖ Нельзя нарушать базовые механики мессенджера, например, делать «невидимки» и «нечитайки»
➖ Нельзя выполнять действия без ведома пользователя, например, автоматически подписываться на канал или рассылать сообщения
➖ Если клиент обеспечивает доступ к каналам, то необходимо также реализовать функциональность «спонсированных сообщений»
➖ Нельзя выдавать приложение за официальное
➖ Монетизировать можно любым легальным способам, если о нем написано на странице приложения

Нарушение этих правил приведет к предупреждению, а его игнорирование — к отключению API для вашего приложения. Также команда Telegram может запросить удалить ваше приложение из магазинов.

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

Подробнее читайте тут
  • ❤ 7
  • 👍 5
  • 🥰 1
Post #4161 6.1K
#memes

Когда решил помочь коллеге с задачей, но сделал только хуже, ну в принципе как и предполагалось
  • 😁 27
  • ❤ 2
Post #4160 6.15K
😱🤦‍♂️ Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK

GTK — популярный фреймворк с открытым исходным кодом для создания графических интерфейсов. Библиотека позволяет кроссплатформенно реализовывать графический пользовательский интерфейс. Полностью бесплатна и имеет открытый исходный код, лицензированный под GNU GPL, что позволяет использовать её в любых проектах (даже коммерческих).

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

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

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

#гайд
  • 👍 9
  • 🤔 9
Post #4157 6.01K
Очередной #дайджест по С++

⭕ Считаем медиану быстрее numpy — нестандартный разбор способу вычисления медианы массива значений с плавающей точкой

⭕ Последние обновления для CMake в Visual Studio — выкатили несколько новых улучшений, таких как упрощенная навигация по источникам и возможность исключать из представления настроенные целевые объекты

⭕ Единственная структура данных, которая покрывает всё — в видео собрана вся база для тех, кто начинает или пытается окунуться в структуры данных, и конкретно в ассоциативные массивы

⭕ Пишем printf на языке ассемблера FASM — printf будет минималистичным и ограниченным лишь тремя-четырьмя спец-символами: %s, %c, %d и %%, но без реализации с плавающими числами

⭕ Microsoft Ignite 2023 уже не за горами — обзор дискуссий для разработчиков, которые планируется транслировать в прямом эфире во время Ignite 2023
  • ❤ 3
  • 👍 3
Post #4155 5.99K
#memes
  • 👏 22
  • 😁 11
  • 🎉 2
Post #4154 5.45K
Какой самый редактор кода для разработки на С++? VIm? Аргументируйте :)
#интерактив
  • 👍 4
  • 😁 3
Post #4153 6.15K
Как избежать deadlock

Deadlock (взаимная блокировка) возникает, когда два или более потока заблокированы в ожидании ресурса, который удерживается другим потоком.
Чтобы избежать deadlock, нужно следовать следующим правилам:

— Не блокировать ресурсы в разном порядке в разных потоках.
— Не удерживать блокировку во время выполнения долгих операций.
— Использовать lock_guard или unique_lock вместо явных lock/unlock.
— Избегать вложенных блокировок одного и того же мьютекса.
— Применять порядок блокировки ресурсов, например, всегда в алфавитном порядке.
— Использовать мьютексы только для защиты данных, а не для управления логикой.

Соблюдая эти правила, можно предотвратить ситуации взаимной блокировки потоков и построить корректную многопоточную логику.
#код
  • 👍 9
  • 🥰 2
  • ❤ 1
Post #4152 5.24K
requires clause

requires clause в С++20 — это новый синтаксис для задания требований к шаблонам, альтернативный requires-выражениям.

requires clause позволяет задавать требования к типам непосредственно при объявлении шаблона. Это делает код более читабельным и понятным.

Requires clause применяется для:
— Проверки наличия определенных возможностей у типов-параметров шаблонов.
— Ограничения допустимых типов-параметров.
— Условного компилирования шаблонов в зависимости от типов.

В примере requires clause гарантирует, что функция add будет работать только с целочисленными типами.
Это делает намерения программиста явными и позволяет лучше контролировать вызовы шаблона.
#код
  • 👍 9
Post #4150 5.2K
Что такое internal linkage?

internal linkage (внутреннее связывание) означает, что имя (например, переменная или функция) видимо и доступно только в пределах файла (или, точнее, в пределах трансляционной единицы), в котором оно определено. Это означает, что если у вас есть два разных файла с исходным кодом, и в каждом из них определено имя с внутренней связью, то эти два имени считаются разными и не конфликтуют друг с другом.

Внутреннюю связь в C++ можно установить несколькими способами. Например, если вы определите переменную или функцию как static, она будет иметь внутреннюю связь. Также, имена в безымянных пространствах имен (anonymous namespaces) имеют внутреннюю связь.
#вопросы_с_собеседований
  • 👍 11
Post #4149 5.56K
for-each циклы

Цикл for-each — это удобный способ перебрать все элементы контейнера (массива, вектора и т. д.). Синтаксис:

for (type element : container) {
// тело цикла
}

Цикл последовательно проходит по всем элементам контейнера и записывает каждый в переменную element.
#код
  • ❤ 17
  • 👍 8
  • 😁 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →