Библиотека C/C++ разработчика
6.8K subscribers
652 photos
690 videos
8 files
938 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
CMake Tutorial

1 | Understanding The Basics
2 | Libraries | Installing | Pairing with Executables | RE-DONE!
3 | Git Submodules (adding glfw windowing library example)
4 | Versioning Source Code
5 | Making Libs Optional
6 | Installing Your Software! (part 1/2 of install)
7 | Installing With CPack! (part 2/2 of install)
8 | find_library(...) (part 1/2 of find lib)
9 | find_package modules and config options (2/2 of find libs)
10 | Running CMake on Windows (like linux) (Over-explained)

источник

#cpp #programming

👉 @cpp_lib
13👍4🔥31
Дорожная карта навыков разработчика на C++

В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.

https://habr.com/ru/specials/726724/

#cpp #programming

👉 @cpp_lib
👍112🤔2💩2😁1
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux


https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика

https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT

Чат программистов📌
https://t.me/developers_ru

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике

Excel лайфхак📌
https://t.me/Excel_lifehack
👍5
Опыт создания UI библиотеки на C++

Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...

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

В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.

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

В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.

wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.

В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.

https://habr.com/ru/articles/768336/

#cpp #programming

👉 @cpp_lib
👍611
Media is too big
VIEW IN TELEGRAM
Больше функциональности в C++23
Björn Fahller

Функции высшего порядка - функции, принимающие функции на вход или возвращающие функции, - полезны для того, чтобы сделать ваш код более композиционным и выразительным. Развитие стандартной библиотеки с помощью диапазонов, std::expected и последних расширений std::optional делает использование функций высшего порядка гораздо более желательным. В то же время развитие основного языка сделало их гораздо проще в написании.

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

источник

#cpp #programming

👉 @cpp_lib
👍51
Автогенерируемый оператор равенства

Вы можете определить оператор трехстороннего сравнения или запросить его у компилятора с помощью =default. Но знаете ли вы, что в C++20 можно также определить или запросить оператор равенства?

https://modernescpp.com/index.php/the-autogenerated-equality-operator/

#cpp #programming

👉 @cpp_lib
1👍1
Создание своего терминала на C++ и Qt

Сегодня мы создадим свой собственный терминал на языке программирования C++. Я являюсь фанатом Linux, и пользуюсь минималистичными терминальными программами — от Vim как IDE до чатов. Есть множество терминалов, у каждого из них есть плюсы и минусы. Наш терминал не будет претендовать на место серьезного проекта, но если вы хотите улучшить код, который мы сегодня напишем — то вы молодцы, можете без проблем развить наш терминал.

Это будет небольшой, минималистичный терминал для Linux. Он будет на основе фреймворка Qt 5 и библиотеки qtermwidget5

Не буду долго тянуть, вперед! Исходный код будет в моем репозитории.

https://habr.com/ru/articles/776716/

#cpp #programming

👉 @cpp_lib
👍311
Фильтруем логи санитайзеров и valgrind на примере приложения с Qt

Периодически встречающаяся проблемами кода на С и C++ являются утечки памяти и неопределенное поведение. Даже если вы используете умные указатели, то от ошибок в библиотеках сторонних разработчиков вы не застрахованы. Для поиска ошибок в коде существуют специальные инструменты:

санитайзеры;
valgrind.

https://habr.com/ru/companies/stc_spb/articles/776528/

#cpp #programming

👉 @cpp_lib
👍21
Рассказы о SObjectizer. Работа с командами

Мы только что познакомились с Лукасом, коллегой, которому необходимо запечатлеть определенные моменты с помощью своей камеры. Что, если бы мы могли по взмаху виртуальной палочки приказывать устройству запускать и останавливать съемку?

Лукас приводит пример использования:

Я запускаю программу, и она ничего не делает;
В какой-то момент я решаю запустить веб-камеру, нажав на кнопку или крикнув "Alexa, включи веб-камеру". Я ожидаю, что в этот момент начнется поток кадров;
Я делаю забавное лицо в течение некоторого времени, затем решаю каким-то образом остановиться, и программа должна вернуться в состояние ожидания;
может быть, я хочу сделать это снова, и снова, и снова...

https://dev.to/ilpropheta/sobjectizer-tales-4-handling-commands-3jbb

#cpp #programming

👉 @cpp_lib
👍2🔥21
Объединение интервалов в C++ нового поколения

Несколько недель назад я задал эту задачу на Coding Gym: задайте массив интервалов, где intervals[i] = [starti, endi], объедините все пересекающиеся интервалы и верните массив непересекающихся интервалов, которые покрывают все интервалы на входе.

Вот пример:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlap, merge them into [1,6].


https://marcoarena.wordpress.com/2023/03/08/merging-intervals-in-next-gen-cpp/

#cpp #programming

👉 @cpp_lib
👍31
При обработке строк потоки в C++ могут быть медленными

Библиотека C++ уже давно организована вокруг классов потоков, по крайней мере, когда речь идет о чтении и разборе строк. Но потоки могут быть удивительно медленными. Например, если вам нужно разобрать числа, то эта процедура C++ близка к тому, чтобы стать худшим выбором с точки зрения производительности:

std::stringstream in(mystring);
while(in >> x) {
sum += x;
}
return sum;


https://lemire.me/blog/2023/10/19/for-processing-strings-streams-in-c-can-be-slow/

#cpp #programming

👉 @cpp_lib
2👍2👏1🤔1
Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow

Раз уж Вы заинтересовались данной статьёй, то ожидается, что Вы умеете программировать на с++ с использованием библиотеки Qt и разрабатывать нейросети на Python c использованием библиотеки tensorflow.
Соответственно остаётся только понять как использовать обученные Вами нейросетевые модели в Qt проектах.

https://habr.com/ru/articles/719888/

#cpp #programming

👉 @cpp_lib
👍51🤔1
Память как у пингвина: Работа памяти в Linux

Начнем издалека. В спецификации любого компьютера и в частности сервера непременно числится надпись "N гигабайт оперативной памяти" - именно столько в его распоряжении находится физической памяти.

Задача распределения доступных ресурсов между исполняемым программным обеспечением, в том числе и физической памяти, лежит на плечах операционной системы, в нашем случае Linux. Для обеспечения иллюзии полной независимости, она предоставляет каждой из программ свое независимое виртуальное адресное пространство и низкоуровневый интерфейс работы с ним. Это избавляет их от необходимости знать друг о друге, размере доступной физической памяти и текущей её занятости. Адреса в виртуальном пространстве процессов называют логическими.

Для отслеживания соответствия между физической и виртуальной памятью ядро Linux использует иерархический набор структур данных в своей служебной области физической памяти (только оно работает с ней напрямую), а также специализированные аппаратные контуры, которые в совокупности называют MMU.

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

https://habr.com/ru/articles/777250/

#cpp #programming

👉 @cpp_lib
👍41