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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
#вопросы_с_собеседования

Расскажите о системах автоматизации билд-процесса

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

Существует множество систем автоматизации билд-процесса, которые отличаются по функциональности, поддерживаемым языкам программирования и платформам. Некоторые из популярных систем автоматизации билд-процесса:

Make: классический инструмент для автоматизации сборки программного обеспечения, использующий Makefile для описания зависимостей между файлами и правил сборки.
CMake: кроссплатформенная система для автоматизации сборки программного обеспечения, которая генерирует файлы сборки для различных систем сборки, таких как Make, Ninja и Visual Studio.
MSBuild: система сборки от Microsoft, используемая в Visual Studio для сборки проектов на языках C++, C# и других.
Ant: система сборки для Java, использующая XML-файлы для описания зависимостей и правил сборки.
Maven: система сборки и управления зависимостями для Java, которая автоматически загружает необходимые библиотеки и плагины.
Gradle: гибкая система сборки для Java, Groovy и Kotlin, которая поддерживает скрипты на Groovy и Kotlin для описания процесса сборки.
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье

Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.

В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.

🔗 Читать статью
🔗 Зеркало
На каком языке программирования вы пишете больше всего?
Anonymous Poll
9%
Python
2%
Go
2%
Java
1%
JavaScript
1%
TypeScript
74%
C/C++
4%
С#
1%
Swift/Kotlin
1%
PHP
4%
Другой
This media is not supported in your browser
VIEW IN TELEGRAM
🤔 очередной #дайджест по С++

🔼 Память как у пингвина — работа памяти в Linux

🔼 Toggle Builder — о дополнении, которым можно было бы снабдить builder-классы

🔼 С алгоритмами в духе LeetCode на собеседованиях пора кончать — или не тратьте впустую ценное время кандидатов

🔼 Запускаем управление файлами метаданных — о распространении метаданных с помощью conan

🔼 Не нужно блокировать кнопки — почему разработчики так делают, почему это не работает и что нужно делать вместо этого
🏆 Самые популярные языки программирования 2023

Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇

🔗 Читать статью
🔗 Зеркало
✏️✍️ Пишем свой текстовый редактор на C

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

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

Мануал состоит из таких частей:

♦️ Установка
♦️ Вход в режим raw
♦️ Raw Ввод и вывод
♦️ Просмотр текста
♦️ Текстовый редактор
♦️ Поиск
♦️ Подсветка синтаксиса
♦️ Дополнения

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

#мануал
💥🧙‍♀️ Новые проклятия: руководство по ncurses

Ncurses («new curses») — библиотека, написанная на языках Си и Ада, предназначенная для управления вводом-выводом на терминал, в числе прочего, библиотека позволяет задавать экранные координаты (в знакоместах) и цвет выводимых символов. Предоставляет программисту уровень абстракции, позволяющий не беспокоиться об аппаратных различиях терминалов и писать переносимый код.

Изначально была библиотека под названием curses (название произошло от сокращения «cursor optimization»). Эта библиотека работала напрямую с терминалом, используя API системы, и при этом позволяла разработчикам не заботиться о различных типах терминалов. Библиотека давала возможность приложению перемещать курсор, создавать окна (не GUI), управлять цветом, управлять мышью и т.д. без использования зависящих от системы управляющих символов.

ncurses — это клон оригинальной curses из System V Release 4.0 (SVr4), которая в свою очередь была улучшением классического curses из BSD (название произошло от «new curses»)

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

#почитать
🚀🕛 Сортировка конфигов для Make сборок

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

Все передают конфиги по-разному. Это один из религиозных аспектов в программировании микроконтроллеров.

1--Junior разработчики прописывают константы в каждом файле проекта или пихают всё в config.h, который потом вручную подключают #include(ом) во все *.с файлы,

2--Middle программисты передают конфиги через переменные окружения, которые определяют в скриптах сборки (Make, Cmake и т.п.).

3--Senior(ы) вообще передают конфиги через Device Tree и механизм Kconfig.

В статье не будут рассуждать как лучше и правильнее передавать конфиги в сборки. Разговор будет о том, как поступать, когда конфиги прописаны как переменные окружения в отдельном make файле по имени config.mk.

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

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

🔻 Книга «Разработка высокочастотных торговых систем с помощью основ C++ или Java» — как построить высокочастотную торговую систему из сложных технологических компонентов, подкрепленных точными данными

🔻 Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем — вперед в прошлое и библиотека Little DirectMedia Layer

🔻 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — настройка санитайзеров и valgrind для логирования ошибок, связанных с интересующими библиотеками

🔻 Как добавить non-copyable и non-movable объект в std::map или std::unordered_map — как мы можем поместить некопируемый неперемещаемый объект в ассоциативный контейнер

🔻 Physical Units и System of Quantities — о библиотеке mp-units, кандидате на включение в C++29
#вопросы_с_собеседования

Что будет выведено на экран?


#include <iostream>

int a = 4;

int &f(int x){
a = a + x;
return a;
}

int main(void){
int t = 5;
std::cout << f(t) << std::endl;
f(t) = 20;
std::cout << f(t) << std::endl;
t = f(t);
std::cout << f(t) << std::endl;
}


В первом случае на печать выведется 9, потому что функция f принимает параметр t = 5, внутри функции к глобальной переменной a прибавляется 5, теперь a = 9, а f возвращает ссылку на неё и печатается значение a, то есть 9.

Далее неважно, что происходит внутри функции, важно, что возвращаемой ссылке на a присваивается 20, значит a = 20. Переменная t не поменяла своё значение, так как в функцию она передается по значению, а не по ссылке.

Затем опять вызываем f(5), при этом a = 20, a = 20 + 5, на печати увидим число 25.

Теперь присваиваем t значение a (в этот момент a = 25 + 5), значит, t станет равно 30.

И, наконец, последняя печать. Вызываем f(30), a = 30 + 30, и возвращается значение 60.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
📯Внимание всем отважным героям и искателям приключений!

«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!

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

💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
💩💩 Верле: разрешаем коллизии

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

Тут вам и формулы и куча кода - все, как вы любите 🏖

Изучить

#гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
📚 Qt 6. Разработка оконных приложений на C++ (2022)

✍️ Автор: Прохоренок Н.А.

📃 Страниц: 512

Описываются базовые возможности библиотеки Qt, позволяющей создавать приложения с графическим интерфейсом на языке C++. Книга ориентирована на тех, кто уже знаком с языком программирования C++ и хотел бы научиться разрабатывать оконные приложения. Рассматриваются способы обработки событий, управление свойствами окна, создание формы, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Книга содержит большое количество практических примеров, помогающих начать разрабатывать приложения с графическим интерфейсом самостоятельно.

Что внутри:
🔸Управление окном приложения
🔸Обработка сигналов и событий
🔸 Размещение компонентов внутри окна
🔸 Основные компоненты
🔸 Списки и таблицы
🔸 Работа с графикой и изображениями
🔸 Графическая сцена
🔸 Диалоговые окна
🔸 SDI и MDI приложения
🔸 Редактор Qt Creator