Библиотека C/C++ разработчика | cpp, boost, qt
Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Библиотека C/C++ разработчика | cpp, boost, qt
تُعد قناة Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 192 مشتركاً، محتلاً المرتبة 5 866 في فئة التكنولوجيات والتطبيقات والمرتبة 28 983 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 192 مشتركاً.
بحسب آخر البيانات بتاريخ 05 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -10 788، وفي آخر 24 ساعة بمقدار -8، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.89%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.01% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 597 مشاهدة. وخلال اليوم الأول يجمع عادةً 931 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 9.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل c++, навигация, компилятор, удалёнка, developer.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все самое полезное для плюсовика и сишника в одном канале.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/d6cd2932
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
#WXSSA”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 06 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
std::ostream хранит std::ios_base::fmtflags:
std::cout << std::hex << 255; // ff
std::cout << 10; // a (всё ещё hex!)
⚡️ Флаги остаются:
std::cout.setf(std::ios::hex, std::ios::basefield);
// Эквивалентно std::hex
💡 Сохранение состояния:
std::cout << std::hex << 255;
// Или
std::ios oldState(nullptr);
oldState.copyfmt(std::cout);
// ... вывод ...
std::cout.copyfmt(oldState); // Восстановление
❗️Манипуляторы — это состояние. Не забывай сбрасывать флаги в коде.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотомvcpkg install boost-asio
2️⃣ Пишем CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
project(NetworkTutorial CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Компилятор warnings
if(MSVC)
add_compile_options(/W4)
else()
add_compile_options(-Wall -Wextra -pedantic)
endif()
# Boost через vcpkg/system
find_package(Boost 1.82 REQUIRED COMPONENTS system)
add_executable(client main.cpp)
target_link_libraries(client
PRIVATE
Boost::system
Boost::headers
)
3️⃣ Пишем main.cpp (проверка установки):
#include <boost/asio.hpp>
#include <iostream>
int main() {
try {
boost::asio::io_context io;
std::cout << "Boost.Asio version: "
<< BOOST_ASIO_VERSION << '\n';
std::cout << "Setup successful!\n";
// Проверяем, что io_context работает
boost::asio::steady_timer timer(io);
timer.expires_after(std::chrono::milliseconds(100));
timer.async_wait([](const boost::system::error_code&) {
std::cout << "Timer works!\n";
});
io.run();
return 0;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
return 1;
}
}
4️⃣ Сборка и запуск:
# С vcpkg
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[путь к vcpkg]/scripts/buildsystems/vcpkg.cmake
cmake --build build
./build/client
# Или с системным Boost (Linux/macOS)
cmake -B build -S .
cmake --build build
./build/client
5️⃣ Ожидаемый вывод:
Boost.Asio version: 103402
Setup successful!
Timer works!
❗️ Если видите этот вывод — то всё установлено верно.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикvcpkg install boost-asio
2️⃣ Пишем CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
project(NetworkTutorial CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Компилятор warnings
if(MSVC)
add_compile_options(/W4)
else()
add_compile_options(-Wall -Wextra -pedantic)
endif()
# Boost через vcpkg/system
find_package(Boost 1.82 REQUIRED COMPONENTS system)
add_executable(client main.cpp)
target_link_libraries(client
PRIVATE
Boost::system
Boost::headers
)
3️⃣ Пишем main.cpp (проверка установки):
#include <boost/asio.hpp>
#include <iostream>
int main() {
try {
boost::asio::io_context io;
std::cout << "Boost.Asio version: "
<< BOOST_ASIO_VERSION << '\n';
std::cout << "Setup successful!\n";
// Проверяем, что io_context работает
boost::asio::steady_timer timer(io);
timer.expires_after(std::chrono::milliseconds(100));
timer.async_wait([](const boost::system::error_code&) {
std::cout << "Timer works!\n";
});
io.run();
return 0;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
return 1;
}
}
4️⃣ Сборка и запуск:
# С vcpkg
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[путь к vcpkg]/scripts/buildsystems/vcpkg.cmake
cmake --build build
./build/client
# Или с системным Boost (Linux/macOS)
cmake -B build -S .
cmake --build build
./build/client
5️⃣ Ожидаемый вывод:
Boost.Asio version: 103402
Setup successful!
Timer works!
❗️ Если видите этот вывод — то всё установлено верно.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикstd::optional, std::variant, std::filesystem, structured bindings, if constexpr. Это фундаментальные инструменты современного C++.
При этом C++17 достаточно стабилен — большинство компиляторов его полностью поддерживают без багов.
Стратегия: начать с C++17, написать чистую архитектуру, а когда инфраструктура созреет — постепенно мигрировать на C++20/23. Это практичный подход, который не загоняет вас в угол.
Кстати, многие крупные проекты именно так и делают: устанавливают разумный минимум и плавно поднимают планку.
✏️ Какой минимальный стандарт вы считаете приемлемым для нового проекта в 2026 году?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикstd::this_thread::sleep_for(std::chrono::milliseconds(0)) выглядит как no-op. Но бывает полезен для cooperative multitasking.
🥳 Что реально происходит:
// Busy-wait — сжигает CPU
while (!ready.load()) { }
// Cooperative — даёт шанс другим потокам
while (!ready.load()) {
std::this_thread::sleep_for(std::chrono::milliseconds(0));
}
⚡️ Механизм sleep(0):
• Системный вызов sched_yield() (Linux) или SwitchToThread() (Windows)
• Поток добровольно освобождает CPU
• Планировщик может переключиться на другой поток того же приоритета
• Если других готовых потоков нет — возврат немедленный"
🍉 Важная тонкость:
Поток НЕ переводится в WAITING. Он остаётся RUNNING, но в конце очереди планировщика. Это не syscall с блокировкой!
⚠️ Отличие от yield:
std::this_thread::yield(); // Более явная семантика
sleep_for(0ms); // Может быть оптимизировано компилятором
🍩 Практический вывод:
Используйте yield() вместо sleep(0) для читаемости. В spin-lock'ах это снижает contention и энергопотребление. Но для реальных синхронизаций используйте condition variables — они эффективнее.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильностьRAG-системы и оптимизировать работу моделей?
На курсе «Разработка AI-агентов» мы учим проектировать автономные системы с нуля.
Темы курса:
— архитектура ReAct: разделение рассуждений и действий;
— использование протокола MCP для межсистемного взаимодействия;
— построение баз знаний RAG с миллисекундным доступом;
— оркестрация автономных групп ботов.
Новый год — время для нового стека.
🎁 До 12 января акция «3 в 1»: курс по ИИ-агентам + ещё 2 курса в подарок.
Узнать большеtimestamp, вычитаешь другой timestamp — получаешь разницу. Но в C++ всё не так просто.
Пример: вы вычитаете steady_clock::time_point из system_clock::time_point. Что получится? Разница между 1 января 1970 года и... моментом загрузки системы? Или чем-то ещё более абстрактным? 🤷♂️
Библиотека <chrono> специально делает такие операции сложными — не из вредности, а чтобы защитить вас от целого класса неуловимых багов. Баги со временем — это те самые баги, которые проявляются только в проде, только по вторникам, и только когда админ решил синхронизировать часы с NTP.
Разберёмся, почему разные часы нельзя просто так сравнивать, как правильно конвертировать между ними, и почему 1499ns вполне может превратиться в 1µs.
👉 Продолжение
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежакstd::string и std::vector стали constexpr-friendly, что открывает безумные возможности.
#include <array>
#include <algorithm>
#include <iostream>
constexpr auto generate_tree(int height) {
constexpr int MAX_WIDTH = 100;
std::array<char, MAX_WIDTH * 10> tree{}; // Увеличим размер для хранения символов
int idx = 0;
for (int i = 0; i < height; ++i) {
int stars = i * 2 + 1; // Количество звездочек на уровне
int spaces = height - i - 1; // Количество пробелов перед звездочками
// Добавляем пробелы
for (int j = 0; j < spaces; ++j) {
tree[idx++] = ' ';
}
// Добавляем звездочки
for (int j = 0; j < stars; ++j) {
tree[idx++] = '*';
}
// Добавляем перевод строки
tree[idx++] = '\n';
}
tree[idx] = '\0'; // Завершающий нуль
return tree;
}
int main() {
constexpr auto my_tree = generate_tree(10);
std::cout << my_tree.data();
return 0;
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
