cpluspluc | Unsorted

Telegram-канал cpluspluc - C++ Academy

16151

По всем вопросам- @haarrp @itchannels_telegram - 🔥 best it channels РКН: clck.ru/3FmxJF

Subscribe to a channel

C++ Academy

🎮⚓ Консольная игра "Морской бой" на C++

Классическая игра "Морской бой" в консольном формате. Реализована на C++ с использованием ООП. Игроки могут размещать свои корабли на 10x10 поле и сражаться с компьютерным противником.

🚀Основные моменты:
- 10 кораблей разных размеров
- Редактор размещения кораблей
- Игра против бота
- Интуитивно понятный интерфейс

📌 GitHub: https://github.com/Savvas200/BattleShip-Console-Game

@cpluspluc

Читать полностью…

C++ Academy

🧩 Умный текстовый анализатор для обработки данных

Этот репозиторий предлагает инструменты для анализа и обработки текстовой информации. Он включает в себя функции для извлечения ключевых слов, анализа частоты слов и других полезных методов, которые помогут в работе с текстовыми данными.

🚀 Основные моменты:
- Извлечение ключевых слов из текста
- Анализ частоты слов и фраз
- Поддержка различных форматов входных данных
- Легкий в использовании интерфейс

📌 GitHub: https://github.com/conanhujinming/text_dedup

@cpluspluc

Читать полностью…

C++ Academy

🧠 C++ хитрая задача — SPSC-кольцевая очередь без блокировок (lock-free), корректная по memory ordering

Задача.
Реализуйте обобщённую кольцевую очередь single-producer / single-consumer (один писатель, один читатель), которая:
- не использует мьютексы;
- корректна по отношению к перезагрузкам CPU/компиляторным переупорядочиваниям (правильные `memory_order`);
- не падает на гонках при чтении/записи индексов;
- работает на произвольных типах T (в том числе не `trivially copyable`);
- имеет фиксированную ёмкость N, лучше степенью двойки для дешёвого модуля через маску.

Требования:
1) try_push(T) — помещает элемент, если не переполнено; возвращает false иначе.
2) try_pop(T&) — извлекает элемент, если не пусто; возвращает false иначе.
3) Между продюсером и консюмером ровно по одному потоку.
4) Без UB: корректно управлять временем жизни T (placement new / явный деструктор).
5) Отсутствие ложных срабатываний на гонки: индексы — std::atomic<size_t> с правильными порядками.

Решение

Ключевая идея: у нас **отдельные** атомики для `head` (читатель продвигает) и `tail` (писатель продвигает).
- Писатель смотрит `head` только с `memory_order_acquire` (наблюдать продвинутые позиции),
обновляет `tail` с `memory_order_release`.
- Читатель зеркально: читает `tail` с `acquire`, продвигает `head` с `release`.
Так мы гарантируем, что **запись объекта** произойдёт до публикации индекса, а **чтение** — после наблюдения индекса.


Частые ошибки (и почему это «хитро»):

- Неверные порядки памяти. seq_cst «вылечит», но дорого; relaxed везде — сломает HB-отношения. Нужны именно пары release/acquire на публикации индексов.
- Забыли разрушить объект в слоте. Утечки и нарушение инвариантов времени жизни.
- Модуль через % и N не степень 2. Работает, но медленнее; очень заметно на горячих путях.
- Многопоточность не SPSC. Даже два продюсера ломают модель: нужны дополнительные атомики/барьеры (или MPMC структура).
- false sharing на head_/tail_. Без выравнивания производительность деградирует на нагрузке.

Читать полностью…

C++ Academy

⚡️ Dependabot теперь поддерживает vcpkg

GitHub объявил о расширении возможностей Dependabot — теперь система автоматических обновлений работает с vcpkg, менеджером зависимостей для C/C++ от Microsoft. Это позволит поддерживать актуальность native-библиотек без ручного вмешательства.

Теперь Dependabot отслеживает изменения в vcpkg.json и автоматически создает pull-request'ы для обновления builtin-baseline. Для подключения достаточно добавить конфигурацию vcpkg в файл .github/dependabot.yml.

🔗 Ссылка - *клик*

@cpluspluc

Читать полностью…

C++ Academy

🔥 Полезны и удобный инструмент для работы с данными в JSON

Расширение для VSCode превращает JSON-файлы в наглядные диаграммы, позволяя быстро исследовать структуру и понимать взаимосвязи в данных.

Поддерживаются также YAML, XML и CSV. Все визуализации можно экспортировать в виде изображений.

Полностью бесплатно и с открытым исходным кодом.

https://github.com/ManuelGil/vscode-json-flow

@cpluspluc

Читать полностью…

C++ Academy

🖥 Vicinae — высокопроизводительный нативный лаунчер для Linux

- Что это: Лаунчер, вдохновлённый Raycast, написан на C++ с использованием Qt. Ориентирован на разработчиков и power-users, он обеспечивает быстрый, преимущественно клавиатурный доступ к действиям в системе без лишнего «тяжёлого» UI.

- Особенности:
- Запуск и поиск установленных приложений
- Индексация файлов с полнотекстовым поиском по миллионам файлов
- Умный эмодзи-пикер с пользовательскими ключевыми словами
- Калькулятор с конвертацией единиц и валют + история
- Защищённая история буфера обмена с поиском по всем копируемым данным
- Быстрые ссылки (shortcuts) для мгновенного доступа
- Интеграция с оконным менеджером (например, копирование данных в активное окно)
- Теминг (светлые и тёмные темы, кастомные темы через конфиг)
- Совместимость с расширениями Raycast — доступ к его стору и установка «в один клик» (не все расширения пока работают)

- Лицензия: GPL-3.0, опен-сорс.

https://github.com/vicinaehq/vicinae

Читать полностью…

C++ Academy

🎯 C++ Задача для опытных разработчиков: «Хитрый итератор»

У вас есть следующая структура:


std::vector<int> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};


Нужно реализовать итератор, который будет проходить по data следующим образом:
- сначала возьмёт первый элемент,
- затем последний,
- затем второй,
- затем предпоследний,
- и так далее — «сжимая» список с двух концов.

🧠 *Вопрос:* Как бы вы реализовали такой итератор в стиле STL (`begin()` / `end()`), совместимый с range-based for?

🧩 Подсказка:
Нужно симулировать два указателя: left и right, с шагом +1 и -1 соответственно, и внутри итератора отслеживать, с какой стороны взять следующий элемент.

Возможный подход:

Создаём кастомный класс ZigZagIterator, внутри которого:
- operator++() переключает сторону (`left` / `right`),
- operator*() возвращает нужный элемент в текущем шаге,
- operator!=() сравнивает позиции указателей.

🔍 Пример:


class ZigZagIterator {
public:
ZigZagIterator(const std::vector<int>& vec, bool end = false)
: data(vec), left(0), right(vec.size() - 1), useLeft(true), done(end) {}

int operator*() const {
return useLeft ? data[left] : data[right];
}

ZigZagIterator& operator++() {
if (useLeft) ++left;
else --right;
if (left > right) done = true;
useLeft = !useLeft;
return *this;
}

bool operator!=(const ZigZagIterator& other) const {
return done != other.done;
}

private:
const std::vector<int>& data;
size_t left, right;
bool useLeft;
bool done;
};

class ZigZagRange {
public:
ZigZagRange(const std::vector<int>& vec) : data(vec) {}
ZigZagIterator begin() const { return ZigZagIterator(data); }
ZigZagIterator end() const { return ZigZagIterator(data, true); }

private:
const std::vector<int>& data;
};


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


for (int val : ZigZagRange(data)) {
std::cout << val << " ";
}
// Output: 1 10 2 9 3 8 4 7 5 6


📎 *Что здесь интересно:*
- Работа с нестандартной логикой обхода в рамках C++ STL-подобного интерфейса.
- Умение проектировать удобные и безопасные итераторы.
- Поддержка range-based for без копирования данных.

🛠️ *Идея для расширения:* добавить operator--() и реализовать двунаправленный итератор.

Читать полностью…

C++ Academy

🗄️ MyDumper — параллельный бэкап MySQL без головной боли. Этот инструмент делает логические дампы MySQL в 5-10 раз быстрее стандартного mysqldump за счёт многопоточной работы. Данные сохраняются в отдельных файлах для каждой таблицы, а встроенная поддержка регулярных выражений позволяет гибко выбирать, какие базы или таблицы включать в бэкап.

Разработчики интересно реализовали согласованность данных: инструмент сначала блокирует таблицы глобальным read-lock, затем создаёт транзакционные снимки для каждого потока и только потом отпускает блокировки. Для восстановления есть параллельный загрузчик myloader

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

📥 Palanteer — инструмент для глубокого анализа производительности C++ и Python-приложений. Этот проект предлагает детальную телеметрию: от временных меток выполнения функций до отслеживания потребления памяти и переключений контекста.

Инструмент обладает минималистичной интеграцией: в C++ достаточно подключить один заголовочный файл, а Python-код анализируется автоматически. Визуализация в реальном времени включает временные графики, flame graphs и логи с наносекундным разрешением.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🚀 Хотите мониторить загрузку вашей NVIDIA GPU прямо из C++?

Вот минимальный пример на C++, который использует nvidia-smi через системный вызов для получения текущей загрузки GPU и использованной памяти.

🛠 Требования:
• Установленный драйвер NVIDIA и утилита nvidia-smi
• C++17 или выше

📄 Код:


#include <iostream>
#include <cstdlib>
#include <memory>
#include <array>

void get_gpu_utilization() {
std::array<char, 128> buffer;
std::string result;

std::unique_ptr<FILE, decltype(&pclose)> pipe(
popen("nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv,nounits,noheader", "r"),
pclose
);

if (!pipe) {
std::cerr << "❌ Ошибка при вызове nvidia-smi" << std::endl;
return;
}

int gpu_id = 0;
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
std::string line(buffer.data());
size_t pos1 = line.find(',');
size_t pos2 = line.rfind(',');

std::string util = line.substr(0, pos1);
std::string mem_used = line.substr(pos1 + 1, pos2 - pos1 - 1);
std::string mem_total = line.substr(pos2 + 1);

std::cout << "🖥 GPU " << gpu_id++ << ": " << util << "% load | "
<< mem_used << " MiB / " << mem_total << " MiB";
}
}

int main() {
get_gpu_utilization();
return 0;
}



📦 Компиляция:

bash
Копировать
Редактировать
g++ gpu_monitor.cpp -o gpu_monitor -std=c++17
📌 Вывод:

🖥 GPU 0: 17% load | 512 MiB / 8192 MiB

🧠 Подходит для:
• Мониторинга GPU в реальном времени
• Интеграции в бэкенды, боты, системы логгинга
• Лёгкой отладки ML/AI-приложений на C++

Читать полностью…

C++ Academy

🧠 Топ языков от евангелиста функционального программирования

Один из известных проповедников Haskell выложил свою субъективную классификацию языков программирования — от «святых граалей» до «цифровых окаменелостей».

Вот кратко по категориям:

Евангелист функционального программирования выложил свой рейтинг языков — и, как всегда, без компромиссов:

S: OCaml, C++
A: Haskell, Python, Rust, Kotlin
B: Scala, Go, Ruby, Swift, C#, TypeScript
C: PHP, Clojure, Java, C, Ассемблер
D: JavaScript, Bash
E: Fortran, Objective-C, COBOL, Perl

🍿 Комментарии уже взрываются — кто-то радуется за Kotlin в A, кто-то негодует за Java в C, кто-то вообще считает, что JS заслуживает отдельной категории «F».

А вот философский вопрос на подумать:

👉 Разработчики, которые всё ещё пишут на категории E — это уверенные мастера или уже цифровые археологи?

(Спойлер: COBOL-разработчики зарабатывают больше нас всех вместе взятых.)

#языкипрограммирования #fp #разработка #devюмор #tirlist

@cpluspluc

Читать полностью…

C++ Academy

🎮 Cemu — эмулятор Wii U, который оживляет забытые игры.
Этот проект предлагает современное решение для запуска классических тайтлов Nintendo вроде Mario Kart 8 или Breath of the Wild. При этом он не просто запускает игры Wii U — он делает это с поддержкой 4K, модами и улучшенной производительностью.

При этом эмулятор пытается сохранять простоту: portable-версия для Windows не требует установки, а сообщество активно создает графические моды. Хотя macOS-сборка пока экспериментальна, на Linux и Windows большинство игр работают почти идеально.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🛰️ ip-nose — геолокация IP в стиле «Матрицы» прямо в терминале

ip-nose — это кроссплатформенный CLI-инструмент на C++ для определения геопозиции IP-адресов с эффектной визуализацией в стиле «Matrix». Работает на Linux и Termux.

🔹 Определение вашего IP и локации в один клик
🔹 Информация: страна, город, провайдер, координаты
🔹 Цветной интерфейс с ASCII-анимацией
🔹 Сохраняет историю запросов
🔹 Поддержка кастомной конфигурации через config.json

📦 Установка:


git clone https://github.com/Karim93160/ip-nose.git
cd ip-nose
make
sudo make install


🚀 Запуск:

ip-nose


👁 Выводит ваш публичный IP, данные о местоположении и отображает их в терминале с визуальным оформлением.

📁 Пример данных:
• IP: 45.***.***.101
• Город: Paris
• Страна: France
• ISP: Orange
• Latitude / Longitude: 48.85 / 2.35

🎯 Подходит для:
• Пентестеров и сисадминов
• CLI-энтузиастов
• Тех, кто любит красивые утилиты в терминале

🔗 GitHub

✨ Лёгкий, эффектный и полезный инструмент для работы с IP прямо из терминала.

Читать полностью…

C++ Academy

💽 KDiskMark — удобный бенчмарк дисков с графическим интерфейсом. Этот инструмент на Qt упрощает тестирование скорости HDD и SSD, скрывая сложность fio за дружелюбным интерфейсом.

Здесь есть готовые пресеты для разных сценариев — от последовательного чтения до случайных операций с мелкими файлами. Интересно, что программа умеет генерировать детальные отчёты в читаемом формате с показателями IOPS и задержек. Поддержка 20+ языков и сборка через Flatpak/Snap делают её доступной для большинства дистрибутивов Linux.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🎮 REFramework — мощный моддинг-фреймворк для игр на движке RE Engine от Capcom. Этот инструмент открывает новые возможности для кастомизации Resident Evil, Monster Hunter, Devil May Cry и других популярных тайтлов.

Проект предлагает готовые моды (VR-режим, изменение FOV, отключение виньетирования) и гибкую систему скриптов на Lua. Особый интерес представляет поддержка 6DOF VR с motion-контроллерами для RE2/RE3/RE7/RE8, что полностью меняет игровой опыт.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🖥 Высокопроизводительная P2P библиотека на C++17

librats — это современная библиотека для пиринговых сетей, обеспечивающая высокую производительность и простоту использования. Она предлагает кроссплатформенные решения с поддержкой автоматического обнаружения узлов, NAT-траверсала и безопасной передачи данных.

🚀 Основные моменты:
- Высокая производительность с использованием C++17
- Поддержка DHT, mDNS и STUN для обнаружения узлов
- Безопасная передача данных с шифрованием и проверкой целостности
- Удобный API для работы с событиями и сообщениями
- Кроссплатформенность: Windows, Linux, macOS

📌 GitHub: https://github.com/DEgitx/librats

#cpp

@cpluspluc

Читать полностью…

C++ Academy

📦 C++ обертка для SQLite с расширенными возможностями ⚙️

Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.

🚀Основные моменты:
- Типизированные запросы и подготовленные выражения
- Поддержка JSON и пользовательских функций
- Виртуальные таблицы и хуки событий
- Легкая интеграция с существующими проектами

📌 GitHub: https://github.com/klemens-morgenstern/sqlite

@cpluspluc

Читать полностью…

C++ Academy

📌Анатомии GPU и TPU: 12 глава пособия "How to Scale Your Model"

Группа инженеров из Google DeepMind опубликовали 12-ю главу своего он-лайн учебника "How to Scale Your Model: A Systems View of LLMs on TPUs"

How to Scale Your Model - практико-ориентированное руководство по масштабированию LLM из 12 разделов для разработчиков и исследователей. Оно объясняет, как анализировать и оптимизировать производительность модели, учитывая системные ресурсы: вычисления, память и пропускную способность.

Пособие научит выбирать оптимальные стратегии параллелизма, оценивать стоимость и время обучения и инференса, а также глубже понять взаимодействие между TPU/GPU и алгоритмами масштабирования как на одном, так и на тысячах ускорителей.


12-я глава - глубокое техническое руководство по архитектуре GPU и стратегиям масштабирования больших моделей. В ней детально разбирается устройство современных GPU NVIDIA: Streaming Multiprocessors, Tensor Cores, иерархия памяти (HBM, L2, SMEM), все это с подробными сравнительными таблицами характеристик для разных поколений чипов.

Очень подробно выполнено сравнение архитектур GPU и TPU, с объясняем ключевого различия между модульностью GPU и монолитностью TPU.

Особое внимание, что редкость для обучающих материалов, уделено сетевой организации кластеров. Авторы доступно объясняют как GPU соединяются внутри узлов через NVLink/NVSwitch и между узлами через InfiniBand в топологии "Fat tree", и как пропускная способность на каждом уровне влияет на реальную производительность коллективных операций (AllReduce, AllGather).

Описаны основные стратегии параллелизма: Data Parallelism, Tensor Parallelism, Expert Parallelism и Pipeline Parallelism, с разбором их ограничений и примеров из реальных проектов.

В конце главы есть хороший анализ новых возможностей архитектуры Blackwell.


@ai_machinelearning_big_data

#AI #ML #LLM #Scaling #GPU #TPU

Читать полностью…

C++ Academy

🆕 Анонс: Proxy 4 — новый шаг в C++-полиморфизме

🟢 Что такое Proxy 4?
Proxy — это header-only, кроссплатформенная библиотека C++20, позволяющая писать полиморфный код без наследования и традиционных виртуальных функций.
Используется в кодовой базе Windows с 2022 года и теперь выходит как зрелая, готовая к продакшену технология.

**Что нового в версии 4?**
- Навыки (Skills): простое подключение возможностей (format, fmt_format, rtti, as_view, slim и др.) через композицию фасадов.
- proxy_view и weak_proxy: удобные типы для нефламентируемых и слабых ссылок.
- Совместное владение: новые API make_proxy_shared и allocate_proxy_shared обеспечивают эффективное разделенное владение без overhead std::shared_ptr.
- Умный диспетчинг и конверсии: возможности weak_dispatch, explicit_conversion_dispatch, улучшенные сообщения об ошибках, понятные концепты proxiable_target, inplace_proxiable_target.
- Рекурсивные фасады: facade_aware_overload_t позволяет строить рекурсивные операторы (например, арифметику, конкатенацию) без преждевременной инстанциации.

Документация теперь размещена на обновлённом сайте — удобная навигация, FAQ, API-справочник, примеры.
Также доступен экспериментальный запуск в Compiler Explorer: попробуйте Proxy прямо в браузере без настройки среды.

Почему это важно?
- Полиморфизм без наследования и виртуалок: менее навязчиво, гибче и возможно производительнее.
- Эффективное управление временем жизни объектов: поддержка владения, заимствования и слабых ссылок.
- Высокая производительность сравнима или превосходит ручной код.
- Расширяемость и гибкость: полиморфизм поверх функций, операторов, конверсий и даже кастомных абстракций.

Что говорят разработчики (reddit-комментарии):
> “Proxy library is like std::any … but adds runtime polymorphism without needing inheritance.”
> — TheFreestyler83

> “It's like doing &something as &dyn Display in Rust… you can do type erasure like virtual interfaces, but without editing types.”
> — qalmakka

> “They claim it's both easier and faster, but … ownership seems very unclear …”
> — Bart_V

Резюме
- Proxy 4 — новый стандарт для полиморфизма в C++.
- Богатая модульная архитектура — расширение навыков через фасады.
- Инструменты: документация, примеры в Compiler Explorer, нативные C++20 возможности.
- Признание от сообщества и множество способов применения, включая заимствование идей из Rust.

🟠 Автор: Mingxin Wang, старший инженер Microsoft: devblogs.microsoft.com/cppblog/announcing-proxy-4-the-next-leap-in-c-polymorphism

@cpluspluc

Читать полностью…

C++ Academy

🚨 Вышла новая версия Boost 1.89.0 — значительное обновление популярной библиотеки для C++. Этот релиз приносит как важные исправления, так и новые возможности для современных проектов.

Среди ключевых изменений — улучшенная поддержка современных стандартов: Asio получил новые функции для работы с аллокаторами, Atomic теперь включает TSAN-инструментацию для анализа многопоточного кода, а Geometry был существенно переработан для повышения точности вычислений. Также появилась новая библиотека Bloom для работы с фильтрами и улучшена поддержка модулей C++20.

🔗 Ссылка - *клик*

@cpluspluc

Читать полностью…

C++ Academy

🎓 Комьюнити Cursor собрало огромную библиотеку гайдов и инструментов для вайбкодеров. Тут есть всё, чтобы работать с ИИ было проще и эффективнее:

— Готовые промты под разные задачи
— MCP-серверы для общения с внешними приложениями
— И самое крутое: генератор уникальных промт-правил под ваш проект

Налетай — всё это бесплатно и уже доступно.
🔗 https://cursor.directory/

Читать полностью…

C++ Academy

⚡️ Почему лучшие разработчики всегда на шаг впереди?

Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.

ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg

Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🖥 Chatgpt для кода в тг: @Chatgpturbobot

📕Ит-книги: /channel/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi

Подпишись, чтобы всегда знать, куда двигаться дальше!

Читать полностью…

C++ Academy

⭐️ Техножурнал Яндекс 360: рассказываем о технологиях

В Яндекс 360 мы создаём технологии, которые работают в основе более чем 13 сервисов, включая Диск, Почту, Телемост, Мессенджер и другие.

Открывайте Техножурнал, чтобы узнать:

Как мы балансируем нагрузку в 300k RPS в Яндекс Мессенджере,
Как подружили MongoDB и PostgreSQL в Диске,
Какие в команде культура и ценности.

А ещё — как мы внедряли DDD, кто такой Technical Owner, как управляем 650+ шардами PostgreSQL и как подходим к проектированию архитектуры наших сервисов.

⭐️ Всё это — в Техножурнале Яндекс 360.

@yandex360team

Читать полностью…

C++ Academy

Sane C++ Libraries — обновление за июнь 2025

🔧 Библиотека продолжает закрывать боль C++-разработчиков: теперь ещё больше асинхронщины и удобных обёрток без лишнего шаблонного ада.

Новое:
✅ Асинхронные операции с файлами и папками
- copy/remove/rename {file|folder}
- open/close/read/write file

✅ Асинхронный UDP:
- SendTo, ReceiveFrom

✅ Улучшения в файловой системе:
- Iterator, Watcher
- Убраны лишние зависимости от памяти

🔗 https://pagghiu.github.io/site/blog/2025-06-30-SaneCppLibrariesUpdate.html
🔗 https://github.com/Pagghiu/SaneCppLibraries/releases/tag/release%2F2025%2F06

@cpluspluc

Читать полностью…

C++ Academy

⚡️ DOSBox Staging — современная эволюция легендарного эмулятора DOS с поддержкой новых технологий и активным развитием. Этот форк сохраняет совместимость с классической версией, но добавляет улучшенную обработку звука, поддержку современных кодеков и удобные функции вроде записи игрового процесса.

Проект использует SDL2, предлагает кроссплатформенные сборки для Windows, Linux и macOS, а также поддерживает динамическую загрузку библиотек вроде FluidSynth. Для разработчиков есть интеграция с Tracy Profiler и система CI.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🧠 C++ Задача для продвинутых: загадка с `std::move` и `const`

Задача: что выведет этот код и почему?


#include <iostream>
#include <string>
#include <utility>

std::string identity(std::string&& s) {
std::cout << "rvalue reference\n";
return std::move(s);
}

std::string identity(const std::string& s) {
std::cout << "const lvalue reference\n";
return s;
}

int main() {
const std::string a = "hello";
std::string b = identity(std::move(a));
std::cout << "Result: " << b << std::endl;
}


🔍 Варианты ответов:
• a) rvalue reference
• b) const lvalue reference
• c) Ошибка компиляции
• d) Поведение зависит от компилятора

💡 Разбор:

a объявлена как const std::string. Даже после std::move(a) она остаётся const, потому что std::move не снимает константность, он лишь преобразует к rvalue:


std::move(const std::string&) → const std::string&&


Смотрим на перегрузки identity:

identity(std::string&&) — принимает неконстантный rvalue
identity(const std::string&) — принимает константный lvalue

const std::string&& не подходит к std::string&&, потому что нельзя привязать rvalue-ссылку к `const`-объекту без соответствия типов.

👉 Вызовется вторая функция, с const std::string&

Ответ: b) const lvalue reference

🧠 Вывод: std::move не делает объект мутабельным. Если объект const, он остаётся const, и rvalue-перегрузки не срабатывают.

📌 Совет: перед использованием std::move всегда учитывайте `const`-квалификатор. Он может "сломать" ожидаемую семантику перемещения.

Читать полностью…

C++ Academy

Научный журнал конференции AI Journey 2025: гонка за миллионом и публикацией в авторитетном журнале началась!

Рассказать о своем исследовании миру, получить миллион и бонус к научной карьере!

В рамках международной конференции AI Journey запущен научный батл с призовым фондом 1 000 000 ₽ за лучшую работу в области искусственного интеллекта. Но это не просто конкурс!

Твоё исследование может попасть в спецвыпуск «Доклады Российской академии наук. Математика, информатика, процессы управления» и его англоязычной версии Doklady Mathematics.

Условия:
— Полная оригинальность — никакого рерайта чужих статей и переизбытка цитат
Дедлайн — 20 августа (отсчёт уже идёт!)
— Языки: русский/английский

Узнать правила и подать статью на отбор -> AI Journey

Читать полностью…

C++ Academy

🚀 Разработчик показал движок на C, который работает в 14 раз быстрее Unity в браузере — и теперь доступна онлайн-демо.

Многие не поверили в заявленную разницу в производительности, поэтому он выложил демо в открытый доступ. Сравнение проводится с реальным Unity-проектом, выложенным на GitHub.

🛠️ C-движок демонстрирует:
• Существенно более высокую FPS в браузере
• Минимальную просадку при рендеринге
• Низкий overhead по сравнению с WebAssembly-сборкой Unity

💬 Автор пока не решил, выкладывать ли исходники C-версии — рассматривает вариант лицензии CC (non-commercial).



🔗 Демо: https://cgamedev.com/
🔗 Код: https://github.com/gabrieldechichi/unity_webglperftest


@cpluspluc

Читать полностью…

C++ Academy

🌟 Kimi-Dev-72B: открытая модель для багфикса и тестирования кода.

Moonshot AI пополнил свое семейство Kimi моделью Kimi-Dev-72B, специализированной для программирования и разработанной для решения задач инженерии ПО. Она, как заявляют разработчики, особо эффективна в исправлении ошибок и написании тестов.

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


Специализация Kimi-Dev-72B состоит из 2 ролей: BugFixer (исправление ошибок) и TestWriter (написание тестов).

Эти роли работают в тандеме: BugFixer находит файлы, требующие правок, и предлагает код, который устраняет баг, а TestWriter создает тесты, которые должны провалиться без исправления и пройти после него. Обе роли используют одинаковый двухэтапный процесс — сначала локализация файла, затем редактирование кода.

Модель училась на данных с GitHub: миллионы задач и коммитов из реальных проектов. За основу взяли базовую Qwen 2.5-72B, которую дообучали на ~150 млрд. токенов, тщательно фильтруя данные, чтобы исключить тестовые наборы SWE-bench.

В процессе обучения с подкреплением, модель получала награду только если все тесты в Docker проходили успешно. Также применяли «умные» подсказки, отсеивая заведомо сложные задачи, и постепенное усложнение, добавляя сложные примеры по мере прогресса.

Kimi-Dev показала рекордные 60,4% на тесте SWE-bench Verified среди open-source решений.

В будущем планируется интеграция с IDE, CI/CD, чтобы сделать модель частью ежедневного рабочего процесса разработчиков.


📌Лицензирование: MIT License.


🟡Страница проекта
🟡Модель
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM #KimiDev #MoonshotAI

Читать полностью…

C++ Academy

🧑‍💻 Apache NetBeans 26: новая версия классической IDE с поддержкой современных технологий.

Несмотря на растущую популярность VS Code, среда разработки NetBeans продолжает эволюционировать, представив свежий релиз с улучшенной поддержкой Java 24, Jakarta EE 11 и даже экспериментальными фичами для будущего Java SE 25.

Особого внимания заслуживает обновлённый LSP-клиент для C++ и JavaScript — теперь IDE лучше работает с языковыми серверами, постепенно догоняя по функционалу современные редакторы кода. А 150 новых SVG-иконок и исправления для HiDPI-экранов делают интерфейс приятнее для глаз.

🔗 Ссылка - *клик*

@cpluspluc

Читать полностью…
Subscribe to a channel