Библиотека 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
加入频道
🧲 Magnet

Это минималистичный менеджер зависимостей для вашего следующего проекта на C++. 

🛠 Установка

Берем репозиторий: git clone https://github.com/futureblur/magnet.git --recursive

macOS:
▪️ Установите Homebrew
▪️ cd magnet/scripts && chmod +x ./macOSInstaller.sh
▪️ ▪️ Xcode: ./macOSInstaller.sh --xcode
▪️ ▪️ CLion (Ninja): ./macOSInstaller.sh --ninja

Windows:
▪️ Установите CMake
▪️ Запустите нужный установщик в magnet/scripts:
▪️▪️ Visual Studio 17: Дважды щелкните по WindowsInstaller (Visual Studio 17).bat
▪️▪️ CLion (Ninja): Дважды щелкните по WindowsInstaller (Ninja).bat

Linux:
▪️ Установите следующее с помощью менеджера пакетов: cmake, clang, ninja-build
▪️ Запустите программу установки: cd magnet/scripts && chmod +x ./LinuxInstaller.sh && ./LinuxInstaller.sh
💩 Задача: Сумма вдоль столбцов

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

На движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.

Пример:

Ввод:
matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13

Каковы будут ваши решения?👇
Please open Telegram to view this post
VIEW IN TELEGRAM
-35% на курс по алгоритмам

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

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

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

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

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

🔥 Переходите и активируйте вводные занятия курсаhttps://proglib.io/w/ff97c30a
💩 WyGPT: Реализация минимальной рабочей модели GPT на C++

Эта штука хорошо оптимизирована для работы на одном GPU.

Использование:

make
./train text_file.txt
./gpu "prompt"
./cpu -t 2 "prompt"
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Очередной #дайджест по С++

📍 Книга «C Programming For Dummies» — автор учит всему необходимому для старта карьеры разработчика, использующего Си

📍 Тестовое в Firefly Studios или игра за час — история о позиции AI программера в новую старую игру

📍 ESPspectrum прошивка — автор расскажет об ОС ESPspectrum и том, как ее применять

📍 Как избежать висячих ссылок, используя lifetime extension — погрузитесь в теорию стандарта С++ и выясните, что привычная всем функциональность lifetime extension иногда не решает задачу

📍 Как я создавал автокликер для приложения «ДругВокруг» — пример автоматизации процесса перебора телефонных номеров из определённого списка или диапазона
ecs-cpp

Система компонентов сущностей (ECS) — это шаблон проектирования, который используется для отделения данных от логики. Это способ сделать код более гибким и поддерживаемым.

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

#обзор
📚 Introduction to C & GUI Programming (2019)

✍️ Автор: Саймон Лонг
📃 Страниц: 156

Популярный язык программирования Cи используется в совершенно разных областях — от крошечных микроконтроллеров, используемых в тостерах и часах, до законченных операционных систем. Первая половина этой книги представляет собой введение в Cи и охватывает основы написания простых программ с помощью командной строки. Во второй половине книги показано, как использовать набор инструментов пользовательского интерфейса GTK с Cи для создания многофункциональных приложений с графическим интерфейсом, которые можно запускать на компьютере.

Что внутри:

🔸 Создавайте простые программы командной строки на C
🔸 Управляйте потоком с помощью условий и циклов
🔸 Обрабатывайте переменные, строки и файлы
🔸 Разрабатывайте приложения с GUI
🔸 Обрабатывайте пользовательский ввод с помощью кнопок и меню
🔸 Используйте расширенные функции UI, такие как хранилища данных и диалоги
💩💩 Попались в интернетах полезные видосы с встречи плюсовиков в Йошкар-Оле. 

Темы докладов:

💩 Сергей Шамбир (iSpring) — «Быстрые и надёжные сигналы-слоты в C++»
💩 Евгений Зуев (Университет Иннополис) — «Архитектура компиляции: проблемы и решения.»
💩 Константин Гейст (iSpring) — «Следи за своим состоянием: валидация в ООП»
💩 Антон Полухин (Yandex.Taxi) — Полезный constexpr

Смотреть

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓🧑‍🍳 Интересные бенчмарки для многопоточности, асинхронности и корутинов C++20

Это набор производительных «words counters» (не навороченных, просто разделяющих «слова» пробелами), реализованных с использованием современных функций C++20, таких как span, string_view, filesystem, ranges и других.

Там, где это уместно, используются параллельные хэш-карты и другие зависимости, такие как контейнеры Abseil, Boost.Feature или Asio с корутинами.

#почитать
🧑‍💻 Особенности работы в айти: результаты опроса подписчиков

В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.

Вот некоторые выводы:

🧔‍♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨‍🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.

🔗 Полный отчёт можно прочесть по этой ссылке

💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
🤔 Очередной #дайджест по С++

▫️ Каким root сертификатам следует доверять? — узнайте с помощью CertInfo

▫️ Разработка под Symbian: SDK — речь пойдет о платформе Series 60, позже переименованной в S^1

▫️ Шесть невозможных вещей — как только вы узнаете свои пределы, вы сможем работать в их рамках, создавая решения, а не проблемы

▫️ Практика языка C — хеш-таблицы, многомодульные программы и структуры данных

▫️ Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой — как загружать программы без знания ABI
Задача : на вход подается номер столбца, необходимо конвертировать его в буквенное представление, которое будет использоваться в таблице-Excel.

Пример:

Ввод:
columnNumber = 1
Вывод:
"A"

Ввод: columnNumber = 28
Вывод:
"AB"

Пишите свое решение в комментариях👇

Решение будет в следующем посте через 30мин
Please open Telegram to view this post
VIEW IN TELEGRAM
Сколько раз будут выполняться циклы внутри программы?

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

Объяснение:
В первом цикле условие прекращения цикла имеет тип беззнакового char, значит, у нас присвоение n 256 вызовет переполнение и n станет равным 0. Цикл превратится в for (unsigned char i = 0; i < 0; ++i), а, значит, условие цикла не выполняется, и мы даже не войдём в тело цикла.
Во втором цикле другая ситуация, он превращается в for (unsigned char i = 0; i < 256; ++i), и так как i не может быть больше, чем 255, то условие цикла будет выполняться всегда.
Ключевое слово requires

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

В примере на картинке Sortable — это концепция, описывающая типы, для которых определены операторы сравнения (»<» и «>»). Функция sortAndPrint принимает два аргумента типа T, удовлетворяющего концепции Sortable, и сравнивает их.

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