🔍 FuzzTest: Фреймворк для фаззинг-тестирования в C++
🐼 Что это такое?
🍴 Почему стоит использовать?
✅ Простой синтаксис
✅ Интеграция с GoogleTest
✅ Умная генерация данных — автоматически создаёт осмысленные входные данные для сложных типов: строк, контейнеров, структур
✏️ Пример использования
‼️ Когда использовать?
✅ Парсеры и обработчики пользовательского ввода
✅ Сериализация/десериализация
✅ Криптографические функции
✅ Работа со сложными структурами данных
✅ API, которые должны быть устойчивы к любым входным данным
💌 Github
Библиотека C/C++ разработчика
FuzzTest
(от Google) — это библиотека для фаззинг-тестирования C++ кода.FuzzTest
— это фреймворк, который автоматически генерирует тысячи тестовых случаев для вашего кода, пытаясь найти крайние случаи, утечки памяти, крэши и другие баги. В отличие от классических unit-тестов, где вы вручную задаёте входные данные, фаззер делает это за вас.void MyTest(int x, const std::string& s) {
EXPECT_TRUE(MyFunction(x, s));
}
FUZZ_TEST(MySuite, MyTest);
#include "fuzztest/fuzztest.h"
void ParseUrlTest(const std::string& url) {
auto result = ParseUrl(url);
// Проверяем, что не крашится на любых входных данных
EXPECT_TRUE(result.has_value() || !result.has_value());
}
FUZZ_TEST(UrlParser, ParseUrlTest)
.WithDomains(fuzztest::Arbitrary<std::string>());
Библиотека C/C++ разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔4❤1
Forwarded from Библиотека Go-разработчика | Golang
Курсовую по программированию легко заказать онлайн — сервисов действительно много.
Проблема в том, что не все они работают честно: бывает низкое качество, завышенные цены или несоблюдение сроков.
По ссылке — подборка площадок, которые в 2025 году показали стабильный результат.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😁1
🔍 Промпт: Регулярные выражения в C++
Работаете с регулярками в C++ и запутались в std::regex? Есть простой лайфхак!
✏️ Используйте промпт
❗️ Пример использования
Запрос:
Получаем:
🔥 Что можно запрашивать
✅ Валидация email, телефонов, URL
✅ Извлечение данных из строк
✅ Поиск паттернов в логах
✅ Парсинг форматов файлов
✅ Проверка форматов дат/времени
Библиотека C/C++ разработчика
#буст
Работаете с регулярками в C++ и запутались в std::regex? Есть простой лайфхак!
Write a regular expression that matches / Write a RegEx pattern for:
[ваше описание]
Запрос:
Email addresses with validation
Получаем:
std::regex email_pattern(
R"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"
);
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2
👾 AI-агенты — настоящее, о котором все говорят!
Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».
Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи.
На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.
🎓 В рамках курса вы научитесь:
1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.
🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».
Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи.
На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.
🎓 В рамках курса вы научитесь:
1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой
Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.
🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
🥱5🔥1😁1
Горячие клавиши — добро, польза и экономия времени. Давайте разберёмся, как с их помощью упростить себе жизнь в Visual Studio Code.
Windows — Ctrl + Shift + \
macOS — Shift + Command + \
Когда кода становится много, очень просто запутаться в закрывающих и открывающих скобках, непонятно, где какой блок, и вообще, что происходит. На помощь приходит Ctrl + Shift + \ — это хорошее дополнение к стандартной подсветке парных скобок в VS Code.
Windows — F2
macOS — F2
Писали, писали, а старший разработчик пришёл и сказал, что ваши переменные a, b и c — дурной тон. Чтобы не выискивать их по всему документу и не менять руками, есть F2.
Windows — Shift + Alt + F
macOS — Shift + Option + F
VS Code предложит установить расширение или выбрать из существующих, а потом красиво отформатирует документ — расставит по местам блоки и скобки, сделает строки кода читаемыми.
Windows — F12
macOS — F12
Иногда вообще непонятно, откуда взялась переменная, какая у неё область видимости и где она объявлена. F12 перенесёт вас к объявлению выделенной переменной, функции или метода. Если объявление в другом файле — всё равно перенесёт.
Windows — Alt + Z
macOS — Option + Z
Если строки кода или текст не вмещаются в редактор по ширине, включите перенос.
Windows — Ctrl + KZ
macOS — Command + KZ
Лучшее решение для тех, кто входит в состояние потока, когда пишет код. Дзен-режим скрывает все панели, разворачивает редактор на весь экран, и вы можете плыть в волнах кода и думать только о нём. Чтобы вернуться в реальный мир, нажмите Escape.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥰1
⚙️ Почему классический ООП тормозит игровые движки — и что с этим делать
Обработка тысяч объектов в реальном времени превращается в кошмар с традиционным C++. Программист из Блэкхаб Геймс показывает, как
🧨 Что узнаешь из доклада:
• Почему наследование и виртуальные таблицы убивают производительность при обработке тысяч сущностей
• Как ECS разделяет данные и логику
• Data-Oriented Design: как пулы компонентов улучшают кэш-локальность и позволяют использовать SIMD
• Простая многопоточность без головной боли
• Практическая реализация на библиотеке Flex с примерами кода
• Почему доступ через ID лучше указателей в динамичных игровых сценах
Доклад полезен не только геймдевам — ECS применяется в биржевых системах, симуляциях и везде, где нужна высокая производительность обработки данных.
👉 Видео
Библиотека C/C++ разработчика
#буст
Обработка тысяч объектов в реальном времени превращается в кошмар с традиционным C++. Программист из Блэкхаб Геймс показывает, как
Entity Component System
решает проблемы производительности.🧨 Что узнаешь из доклада:
• Почему наследование и виртуальные таблицы убивают производительность при обработке тысяч сущностей
• Как ECS разделяет данные и логику
• Data-Oriented Design: как пулы компонентов улучшают кэш-локальность и позволяют использовать SIMD
• Простая многопоточность без головной боли
• Практическая реализация на библиотеке Flex с примерами кода
• Почему доступ через ID лучше указателей в динамичных игровых сценах
Доклад полезен не только геймдевам — ECS применяется в биржевых системах, симуляциях и везде, где нужна высокая производительность обработки данных.
👉 Видео
Библиотека C/C++ разработчика
#буст
❤4👍1👏1
Какой подход к тестированию лучше?
Anonymous Poll
29%
TDD - тесты сначала, код потом
27%
Тесты после написания кода
11%
Integration тесты важнее unit-тестов
5%
Статический анализ вместо тестов
29%
Компилируется = работает
😁23👍2
Перевод: Cуществует ли испанский язык программирования? Si++ (Да по испански)
Библиотека C/C++ разработчика
#буст
Библиотека C/C++ разработчика
#буст
😁20🥱3💯1
🚀 Курс «ИИ-агенты для DS-специалистов» уже стартовал
Первый вебинар успешно прошёл, участники уже начали разбираться, как использовать ИИ-агентов в реальных проектах.
Но всё самое интересное только начинается!
🔥 Впереди 4 мощных занятия — с практикой, инсайтами и разбором кейсов от экспертов.
💸 Сейчас действует специальная цена → 69.000 ₽ вместо79.000 ₽.
⏳ Осталось всего 4 места.
Не упустите шанс прокачаться в том, что будет определять будущее индустрии.
👉 Забронировать место на курсе
Первый вебинар успешно прошёл, участники уже начали разбираться, как использовать ИИ-агентов в реальных проектах.
Но всё самое интересное только начинается!
🔥 Впереди 4 мощных занятия — с практикой, инсайтами и разбором кейсов от экспертов.
💸 Сейчас действует специальная цена → 69.000 ₽ вместо
⏳ Осталось всего 4 места.
Не упустите шанс прокачаться в том, что будет определять будущее индустрии.
👉 Забронировать место на курсе
😁5❤1🌚1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Какое главное преимущество алгоритма скользящего окна перед наивным подходом?
Anonymous Quiz
36%
Использует меньше памяти
4%
Легче в реализации
9%
Работает только с отсортированными данными
10%
Не требует использования циклов
41%
Избегает избыточных вычислений
😁5❤1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Designated Initializers — именованная инициализация из C++20
• std::variant — типобезопасный union
• FuzzTest — Фреймворк для фаззинг-тестирования в C++
• Регулярные выражения в C++ — промпт для написания регулярных выражений
• Почему классический ООП тормозит игровые движки — доклад о проблемах о проблемах связанных с производительностью
🔥 Интересные проекты:
• tile-lang — предметно-ориентированный язык, предназначенный для упрощения разработки высокопроизводительных ядер GPU и CPU
• Audacity — простой в использовании многодорожечный аудиоредактор и рекордер
• Crow — быстрый и простой в использовании микрофреймворк для веба
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Designated Initializers — именованная инициализация из C++20
• std::variant — типобезопасный union
• FuzzTest — Фреймворк для фаззинг-тестирования в C++
• Регулярные выражения в C++ — промпт для написания регулярных выражений
• Почему классический ООП тормозит игровые движки — доклад о проблемах о проблемах связанных с производительностью
🔥 Интересные проекты:
• tile-lang — предметно-ориентированный язык, предназначенный для упрощения разработки высокопроизводительных ядер GPU и CPU
• Audacity — простой в использовании многодорожечный аудиоредактор и рекордер
• Crow — быстрый и простой в использовании микрофреймворк для веба
Библиотека C/C++ разработчика
#свежак
👍2🥰1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что произойдёт?
Anonymous Quiz
39%
Код работает корректно
46%
Compilation error
3%
Runtime error
5%
map останется пустым
6%
Undefined behavior
😁7
🐸 Подборка вакансий для C++-разработчиков за неделю
C++ Software Developer (FreeCAD) — от 150 000 и до 350 000 ₽ Удаленно
C++/Qt/QML разработчик под Android в команду Транспорта — Удаленно
Разработчик C++/Rust (SDN dataplane, DPDK/DOCA API) — от 300 000 и до 600 000 ₽ Удаленно
C++ Gameplay Programmer (Unreal Engine) — от 1 500 и до 3 000 $ Удаленно
Программист/разработчик C (senior) — до 440 000 ₽ Офис (Москва)
Библиотека C/C++ разработчика
C++ Software Developer (FreeCAD) — от 150 000 и до 350 000 ₽ Удаленно
C++/Qt/QML разработчик под Android в команду Транспорта — Удаленно
Разработчик C++/Rust (SDN dataplane, DPDK/DOCA API) — от 300 000 и до 600 000 ₽ Удаленно
C++ Gameplay Programmer (Unreal Engine) — от 1 500 и до 3 000 $ Удаленно
Программист/разработчик C (senior) — до 440 000 ₽ Офис (Москва)
Библиотека C/C++ разработчика
👍1
Проблема: Многие выбирают std::list думая, что вставка O(1) всегда лучше, но забывают про cache locality.
struct HeavyObject {
std::array<double, 1000> data;
};
std::list<HeavyObject> items; // Не перемещаем данные
auto it = items.begin();
std::advance(it, 5);
items.insert(it, HeavyObject{}); // Быстро!
std::list<int> data = {1, 2, 3};
auto it = data.begin();
data.push_back(4); // it все ещё валиден!
// vector выигрывает благодаря cache:
std::vector<int> fast; // Данные подряд в памяти
std::list<int> slow; // Прыжки по указателям
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏10👍6❤1👾1
⚙️ C++26 Contract Assertions
C++26 Contract Assertions — это введении нового механизма для проверки корректности программы во время выполнения, которые заменяют традиционные макросы assert более мощным и гибким инструментом.
В документе P3846R0 авторы разбирают ключевые возражений против включения контрактных утверждений в стандарт C++26 и дают подробные ответы на каждое из них.
❗Ключевые моменты документа:
• Contract assertions не делают C++ «менее безопасным» — они позволяют инкрементально улучшать корректность кода
• Возможность настройки семантики проверок (ignore/observe/enforce/quick-enforce) является необходимостью, а не недостатком
• Mixed-mode сборки с разными семантиками контрактов — это неизбежность модели компиляции C++, а не баг в дизайне
Основной фокус — защита функциональности, которая разрабатывалась более 20 лет, и получила реализацию в GCC и Clang.
👉 Драфт с предложениями
Библиотека C/C++ разработчика
#свежак
C++26 Contract Assertions — это введении нового механизма для проверки корректности программы во время выполнения, которые заменяют традиционные макросы assert более мощным и гибким инструментом.
В документе P3846R0 авторы разбирают ключевые возражений против включения контрактных утверждений в стандарт C++26 и дают подробные ответы на каждое из них.
❗Ключевые моменты документа:
• Contract assertions не делают C++ «менее безопасным» — они позволяют инкрементально улучшать корректность кода
• Возможность настройки семантики проверок (ignore/observe/enforce/quick-enforce) является необходимостью, а не недостатком
• Mixed-mode сборки с разными семантиками контрактов — это неизбежность модели компиляции C++, а не баг в дизайне
Основной фокус — защита функциональности, которая разрабатывалась более 20 лет, и получила реализацию в GCC и Clang.
👉 Драфт с предложениями
Библиотека C/C++ разработчика
#свежак
🙏4👍3
💥 Весь октябрь -40% на курсы для разработчиков в proglib.academy
Бери знания под свой стек:
Python | алгоритмы | математика для Data Science | архитектура кода.
⚡️ Пока скидка действует, апдейтни свои навыки
Бери знания под свой стек:
Python | алгоритмы | математика для Data Science | архитектура кода.
Пока одни ждут «идеальный момент», другие просто учатся.
А потом берут ваши офферы.
⚡️ Пока скидка действует, апдейтни свои навыки
😁1
🎲 std::random vs rand() — генерация случайных чисел
Старый
❌ Старый подход:
🍒 Современный подход:
✏️ Доступные распределения:
• uniform_int_distribution — целые числа
• uniform_real_distribution — вещественные
• normal_distribution — гауссово
• bernoulli_distribution — булево
• exponential_distribution, poisson_distribution и другие
Библиотека C/C++ разработчика
#буст
Старый
rand()
из Си имеет множество проблем: плохое качество, ограниченный диапазон, глобальное состояние. В C++11
появились современные генераторы из <random>
.#include <cstdlib>
#include <ctime>
srand(time(nullptr)); // Предсказуемо!
int dice = rand() % 6 + 1; // Неравномерное распределение!
double prob = rand() / (double)RAND_MAX; // Плохая точность
#include <random>
// Инициализация генератора (один раз)
std::random_device rd;
std::mt19937 gen(rd()); // Mersenne Twister
// Равномерное распределение [1, 6]
std::uniform_int_distribution dice(1, 6);
int roll = dice(gen);
// Вещественное [0.0, 1.0)
std::uniform_real_distribution prob(0.0, 1.0);
double p = prob(gen);
// Нормальное распределение
std::normal_distribution normal(0.0, 1.0);
double value = normal(gen);
• uniform_int_distribution — целые числа
• uniform_real_distribution — вещественные
• normal_distribution — гауссово
• bernoulli_distribution — булево
• exponential_distribution, poisson_distribution и другие
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🌚2👾1
🦀 Транспиляция кода: от одного языка к другому
Представьте ситуацию: вы нашли идеальное решение на GitHub, но оно написано не на том языке. Или ваш руководитель прочитал статью о новом фреймворке, и теперь нужно переписывать всю кодовую базу. Знакомо?
Хорошая новость: современные LLM-модели отлично справляются с транспиляцией кода между языками программирования.
✏️ Промпт
🍴 Пример использования
Результат:
Библиотека C/C++ разработчика
#буст
Представьте ситуацию: вы нашли идеальное решение на GitHub, но оно написано не на том языке. Или ваш руководитель прочитал статью о новом фреймворке, и теперь нужно переписывать всю кодовую базу. Знакомо?
Хорошая новость: современные LLM-модели отлично справляются с транспиляцией кода между языками программирования.
Rewrite the following code in C++:
[Вставь свой код сюда]
# Исходный Python код
def count_words(text):
"""Count word frequency in text"""
words = text.lower().split()
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
return freq
# Пример использования
text = "hello world hello python world"
print(count_words(text))
# Output: {'hello': 2, 'world': 2, 'python': 1}
Результат:
#include <iostream>
#include <string>
#include <map>
#include <sstream>
#include <algorithm>
std::map<std::string, int> count_words(const std::string& text) {
std::map<std::string, int> freq;
std::istringstream stream(text);
std::string word;
while (stream >> word) {
// Convert to lowercase
std::transform(word.begin(), word.end(), word.begin(), ::tolower);
freq[word]++;
}
return freq;
}
int main() {
std::string text = "hello world hello python world";
auto result = count_words(text);
for (const auto& [word, count] : result) {
std::cout << word << ": " << count << std::endl;
}
return 0;
}
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👾1