C/C++ Ready | Программирование
14.9K subscribers
1.24K photos
69 videos
565 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREHc

Реклама на бирже: https://telega.in/c/cpp_ready
Download Telegram
Генерируем UUID v4 на чистом C++!

Создадим случайный идентификатор формата xxxxxxxx-xxxx-4xxx-8xxx-xxxxxxxxxxxx, пригодный для токенов, сессий и тестовых данных.
std::string uuid_v4() {
uint8_t bytes[16];


Инициализируем буфер из 16 байтов для будущего UUID.
    std::random_device rd;
std::uniform_int_distribution<int> dist(0, 255);
for (auto &b : bytes)
b = static_cast<uint8_t>(dist(rd));


Генерируем 16 случайных байтов с помощью std::random_device и равномерного распределения.
    bytes[6] = (bytes[6] & 0x0F) | 0x40; // версия 4
bytes[8] = (bytes[8] & 0x3F) | 0x80; // вариант RFC 4122


Корректируем 7-й и 9-й байты под спецификацию UUID v4 (версия и вариант).
    std::ostringstream oss;
for (int i = 0; i < 16; ++i) {
oss << std::hex << std::setw(2) << std::setfill('0') << int(bytes[i]);
if (i == 3 || i == 5 || i == 7 || i == 9)
oss << '-';
}
return oss.str();
}


Форматируем байты в шестнадцатеричный вид, вставляя дефисы в нужных позициях.

🔥 Всё на чистом стандартном C++, без единой дополнительной библиотеки!

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥8👍5
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Teach Yourself CS — самоучитель компьютерных наук!

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

Составляю ссылочку: GitHub 📱


📣 C++ Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍137🔥7
8 марта уже на горизонте. Цветы — это база. А что добавим к релизу?

Если хочется сделать красивый апгрейд праздника, присмотритесь к дизайнерским игрушкам от Super Toys!

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

Мы собрали специальную праздничную подборку — чтобы вы закрыли задачу по подарку быстро и красиво!

Прокачайте 8 марта до версии Pro!

Реклама. ООО "НОВЫЕ МЕДИА". ИНН 7813407148. erid: 2W5zFHxq257
👍3👎2
Мини-пул потоков на std::jthread

Создадим простой пул, который принимает лямбды, параллельно их выполняет и авто-join-ит потоки при выходе из области.
class ThreadPool {
std::queue<std::function<void()>> jobs; // очередь заданий
std::mutex m;
std::condition_variable cv;
bool stop = false;
std::vector<std::jthread> workers; // jthread = RAII-join


Храним очередь задач, мьютекс, условную переменную и вектор рабочих потоков. Флаг stop сигнализирует о завершении.
public:
ThreadPool(size_t n = std::thread::hardware_concurrency()) {
for (size_t i = 0; i < n; ++i)
workers.emplace_back([this](std::stop_token st) {
while (!st.stop_requested()) {
std::function<void()> job;
{ std::unique_lock lk(m);
cv.wait(lk, [this]{ return stop || !jobs.empty(); });
if (stop && jobs.empty()) return;
job = std::move(jobs.front()); jobs.pop();
}
job(); // выполняем задачу
}
});
}


Конструктор порождает n потоков. Каждый рабочий ждёт, пока в очереди появится задача, — или пока пулу не придёт сигнал остановиться.
    template<typename F>
void enqueue(F&& f) {
{ std::lock_guard lk(m); jobs.emplace(std::forward<F>(f)); }
cv.notify_one(); // будим один поток
}


enqueue кладёт новую лямбду в очередь и будит спящего воркера.
    ~ThreadPool() {
{ std::lock_guard lk(m); stop = true; }
cv.notify_all(); // будим всех для выхода
}
};


Деструктор ставит флаг stop, будит все потоки, а std::jthread автоматически дожидается их завершения.
int main() {
ThreadPool pool(4); // 4 рабочих потока
for (int i = 0; i < 8; ++i)
pool.enqueue([i]{ std::printf("job %d\n", i); });
} // ← при выходе pool завершит все задачи


🔥 Чистый стандарт C++20 — ни Boost, ни сторонних либ!

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥95
📂 Напоминалка по HTTP vs HTTPS!

Например, HTTP передаёт данные в открытом виде, без шифрования. HTTPS работает поверх TLS и защищает соединение: выполняется проверка сертификата, обмен ключами и дальнейшая передача данных в зашифрованном виде.

На картинке — ключевые этапы установления соединения.

Сохрани, чтобы не забыть!

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥9👍5
Появился мощный инструмент для прохождения собеседований - Sobes Copilot.

Это нейросеть, которая подсказывает ответы прямо во время интервью, анализируя разговор в реальном времени.

Copilot работает незаметно в Zoom, Google Meet, Teams и других платформах. Поддерживает русский язык, не виден при демонстрации экрана и помогает держать уверенный темп диалога, даже если вопрос сложный или неожиданный.

Что ещё есть в Sobes Copilot:
Генератор резюме - превращает сырой опыт в сильное резюме под конкретную вакансию, с корректными формулировками и акцентами.
Мок-собеседования - тренировка с ИИ, максимально приближённые к реальным интервью: вопросы, фидбек, разбор ошибок.
Пост-анализ интервью - после созвона сервис разбирает диалог, подсвечивает сильные и слабые моменты.

Если хочешь проходить собесы спокойнее и увереннее — изучи возможности сервиса по ссылке.

🎁 Промокод: SOBES26 — даёт 10% скидки на старт.
😁41
👩‍💻 Современные диапазоны — без аллокаций и боли

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

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍53🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Red Blob Games — полезный сайт для визуального понимания алгоритмов!

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

📌 Оставляю ссылочку: redblobgames.com

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝84