По всем вопросам- @haarrp № 4918280484
🔧 OpenXRay — движок STALKER с открытым исходным кодом получает вторую жизнь.
Сообщество энтузиастов серии STALKER продолжает развивать OpenXRay — улучшенную версию оригинального движка X-Ray Engine. Проект не просто исправляет баги и добавляет 64-битную поддержку, но и открывает новые возможности для модификации игр.
Хотя разработчики подчеркивают стремление сохранить ванильный геймплей, проект уже включает оптимизации рендеринга, поддержку геймпадов и новые инструменты для модмейкеров.
🤖 GitHub
@cpluspluc
Лайфхаки визуального сторителлинга 😉
Рассказываем, почему это полезно и как его построить, чтобы было понятно всем: и менеджерам, и разработчикам, и дизайнерам ⬆
И да, вы справитесь, даже если не умеете рисовать! Александр Зинченко, СТО Яндекс 360, поделился инструментами для быстрых и удобных скетчей. А ещё рассказал про сложности передачи идей в проектных командах, которые можно решить с помощью визуального сторителлинга 😎
Больше интересной и полезной информации в канале от команды Яндекс 360
🧑🏻💻Хотите научиться писать нейросети на одном из самых быстрых и безопасных языков программирования?
На открытом уроке 6 мая в 20:00 МСК мы научим вас создавать простейшую нейросеть с нуля, используя минимальные библиотеки. Вы не только познакомитесь с Rust, но и узнаете, как оптимизировать вычисления для работы с нейронными сетями.
Вы сможете писать быстрые и эффективные нейросети на Rust — языке, который сегодня активно используется для решения высоконагруженных задач.
👉Присоединяйтесь к открытому уроку и получите скидку на программу обучения «Rust Developer. Basic»: https://otus.pw/417k/?erid=2W5zFFxssur
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: 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
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
🧑💻 frugally-deep — легковесная библиотека, позволяющая использовать обученные модели без зависимости от TensorFlow, что особенно ценно для embedded-систем и проектов с ограниченными ресурсами.
Рабочий процесс выглядит просто: после обучения модели в Keras её можно конвертировать в специальный JSON-формат и загрузить в C++-приложение. При этом frugally-deep автоматически проверяет корректность конвертации, сравнивая результаты предсказаний с оригиналом.
Библиотека поддерживает даже сложные графы вычислений, созданные через functional API.
🤖 GitHub
@cpluspluc
Примите участие в исследовании и выиграйте iPhone 16 Pro Max
Online Market Intelligence (OMI) проводит опрос среди IT-специалистов и студентов о текущем использовании платформ разработки и ИИ-ассистентов.
Исследование направлено на выяснение влияния ИИ на рынок труда и его роль в процессах разработки. Участвуя, вы можете помочь нам в этих вопросах и получить шанс выиграть iPhone 16 Pro Max.
Ссылка на опрос — здесь*
*Принимая участие в опросе Вы становитесь участником розыгрыша под наименованием «Если ты работаешь в IT, пройди опрос и выиграй iPhone 16 Рro Мax». Информация об организаторе розыгрыша, сроках проведения, правилах проведения розыгрыша, количестве призов, сроках, месте, порядке получения призов размещена по ссылке
🧑🏻💻Как эффективно управлять ошибками в коде и избегать багов?
На открытом вебинаре 23 апреля в 20:00 МСК вы познакомитесь с мощной системой обработки ошибок в Rust и узнаете, почему этот подход считается одним из самых безопасных и надёжных. Вместе с экспертом вы освоите оператор «?» и работу с типами Result и Option.
Вы получите практические навыки и сможете легко писать код без неожиданных сбоев и исключений, повысив надежность ваших приложений.
👉Регистрируйтесь на вебинар и получите специальную скидку на полный курс «Rust Developer. Basic»: https://otus.pw/stgNn/?erid=2W5zFJ7QW6t
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🖥 less_slow.cpp — это образовательный репозиторий, который демонстрирует практики написания высокоэффективного кода на C++, C, CUDA, PTX и ассемблере.
Цель проекта — помочь разработчикам развить интуицию и мышление, ориентированные на производительность.
🔍 Основные темы проекта:
- Микробенчмарки: Измерение производительности базовых операций, таких как сложение целых чисел, с использованием различных подходов, включая inline-ассемблер.
- Параллелизм и сложность вычислений: Анализ производительности стандартных алгоритмов сортировки и их оптимизация с использованием различных техник.
- Рекурсия: Сравнение рекурсивных и итеративных реализаций алгоритмов, таких как QuickSort, с акцентом на производительность и использование стека.
- Оптимизация стандартных функций: Примеры ускорения стандартных функций, таких как std::sin, с использованием приближений и SIMD-инструкций.
- Работа с JSON: Эффективный парсинг JSON без лишних аллокаций памяти, использование альтернатив стандартным библиотекам.
GitHub
Hacker News
🛠️ Инструменты и технологии:
- Использование C++20 и современных компиляторов (GCC, Clang) для демонстрации новых возможностей языка.
- Интеграция с Google Benchmark для проведения точных измерений производительности.
- Примеры кода на CUDA, PTX и ассемблере для демонстрации низкоуровневой оптимизации.
- Использование сторонних библиотек, таких как fmt, range-v3, libunifex, cppcoro, liburing, oneTBB, ASIO, CUTLASS, CTRE, yyjson, Abseil, StringZilla и другие, для расширения функциональности и повышения производительности.
📚 Дополнительные ресурсы:
Проект является частью серии "Less Slow", которая также включает реализации на Rust и Python.
Блог автора содержит подробные статьи по темам, затронутым в проекте: ashvardanian.com/tags/less-slow.
Если вы хотите глубже понять, как писать эффективный код и избегать распространённых ошибок, less_slow.cpp станет отличным практическим пособием.
▪Github
▪Rust
▪Python.
@cpluspluc
⚡️Хотите стать востребованным разработчиком и освоить один из самых перспективных языков программирования?
Курс «Rust Developer. Basic» от OTUS создан для тех, кто уже знаком с программированием и хочет уверенно развиваться в современной разработке. Rust гарантирует безопасность, высокую производительность и востребован в веб-разработке, блокчейне, анализе данных и даже в создании встроенных систем.
Вас ждут живые лекции от опытных экспертов, актуальные материалы и практика на реальных задачах. Вы научитесь писать безопасный и производительный код, создавать сложные многопоточные приложения, асинхронно работать с сетью и файловыми системами.
👉Оставьте заявку прямо сейчас и получите скидку на обучение: https://otus.pw/5MYd/?erid=2W5zFGhrBA8
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🔓Что выведет следующий код?
#include <iostream>
using namespace std;
class Base {
public:
Base() {
cout << "Base constructor: ";
call();
}
virtual void call() { cout << "Base::call\n"; }
};
class Derived : public Base {
int x = init();
int init() {
cout << "Derived::init\n";
return 42;
}
public:
Derived() {
cout << "Derived constructor\n";
}
void call() override {
cout << "Derived::call, x = " << x << "\n";
}
};
int main() {
Derived d;
return 0;
}
Derived::init
Derived constructor
Derived::init
Derived constructor
Base constructor: Derived::call, x = 42
Derived constructor
Derived::call, x = <undefined>
Derived::init
Derived constructor
📖 asmbook — мягкое введение в программирование на ассемблере для ARM. Для разработчиков, пишущих на C/C++, но желающих разобраться в низкоуровневых особенностях процессоров, проект предлагает практическое руководство по ассемблеру ARMv8.
В руководстве есть множество практических примеров: от работы с базовыми командами до анимации частиц в терминале. Проект подойдёт как для самостоятельного изучения, так и для академических курсов по компьютерной архитектуре.
🔗 GitHub
@cpluspluc
❓ Что выведет этот код? (C++23)
import std;
constexpr auto make_checker() {
return [](int x) consteval {
return x % 3 == 0 || x % 5 == 0;
};
}
int main() {
auto checker = make_checker();
std::vector numbers{1, 3, 5, 9, 10, 14, 15};
auto filtered = numbers | std::views::filter([&](int x) {
if (std::is_constant_evaluated()) {
std::print("constexpr\n");
}
return checker(x);
});
std::print("Filtered numbers: ");
for (int x : filtered) {
std::print("{} ", x);
}
std::println("");
}
Менеджер, который получает зарплату в 10 раз больше твоей 😂
@cpluspluc
☕️ Научись разрабатывать приложения и сервисы на SafeBoard от «Лаборатории Касперского»
Каждое решение, каждая строка кода — это новое движение вперед. Возможно, именно стажировка SafeBoard станет решающим шагом к твоему старту в IT! Если ты учишься в вузе в Москве/МО или в Школе 21 и готов(а) работать от 20 часов в неделю — присоединяйся к нам и начинай карьеру еще до окончания учебы 😎
Чему ты научишься:
Проектировать, разрабатывать и портировать приложения и сервисы на базе KasperskyOS;
Дорабатывать сетевой стек и файловые системы;
Писать эффективный и современный код на с++;
Выполнять рефакторинг кода.
Что ты получишь:
Реальный опыт работы в крупной IT-компании;
Возможность развить свои навыки программирования и работы с современными технологиями;
Зарплату, доступ к спортзалу, сауне и игровым комнатам в нашем офисе ☕️
Расти и становись круче — подавай заявку сегодня https://kas.pr/d6b8?erid=2W5zFGAUfC4
Реклама. Рекламодатель АО «Лаборатория Касперского» ИНН 7713140469
Как получилась онлайн-магистратура «Фронтенд- и бэкенд-разработчик»
от Яндекс Практикума и ИТМО?
Мы взяли всё лучшее от классического образования, перевели в онлайн, добавили практики и выкрутили актуальность на максимум.
Приходите на день открытых дверей, чтобы узнать больше:
— Расскажем про разные траектории обучения на программе: как после выпуска стать фронтенд- или бэкенд-разработчиком.
— Обсудим уровни программы — базовый и продвинутый: чему научится студент без опыта в IT и зачем магистратура разработчику с опытом.
— Поделимся, как устроено обучение на очной онлайн-программе Яндекса и ИТМО.
— Поговорим про поступление: сроки, экзамены, документы, оплата.
Ждём вас 16 апреля в 19:00 мск.
→ Зарегистрироваться на событие
👾 Vita3K — экспериментальный эмулятор PlayStation Vita для Windows, Linux, macOS и Android. Проект уже демонстрирует впечатляющие результаты: часть коммерческих игр и множество homebrew-приложений запускаются, хотя разработчики предупреждают о возможных багах. Среди поддерживаемых игр — Persona 4 Golden, VA-11 HALL-A и другие культовые проекты.
Проект распространяется под лицензией GPLv2 и активно развивается благодаря поддержке сообщества. Важно отметить, что эмулятор не предназначен для пиратства — игры должны быть дампами с оригинальных носителей.
🤖 GitHub
@cpluspluc
🔒 Microsoft ограничила работу своего C/C++ расширения в форках VS Code
Пользователи альтернативных редакторов на базе VS Code столкнулись с блокировкой проприетарного расширения для C/C++ от Microsoft. После обновления до версии 1.24.5 плагин начал выдавать ошибку, сообщая о возможности работы только в официальных продуктах Microsoft — VS Code, Visual Studio и связанных сервисах.
Ситуация вновь поднимает вопрос о зависимости open-source проектов от проприетарных дополнений. Пока единственное решение для тех, кому критично расширение от Microsoft — откат на старую версию и отключение автообновлений.
🔗 Ссылка - *клик*
@cpluspluc
🖥 Задача для собеседования: "Быстрая очередь с удалением элемента за O(1)"
🔖 Условие:
Реализуйте структуру данных — очередь (`queue`), поддерживающую три операции:
- enqueue(x)
— добавить элемент в конец очереди (должно работать за O(1));
- dequeue()
— удалить элемент из начала очереди и вернуть его (должно работать за O(1));
- remove(x)
— удалить первое вхождение элемента x
из очереди за O(1).
Ограничения:
- Элементы могут повторяться.
- Если элемент отсутствует, remove(x)
не делает ничего.
- Операции должны оставаться эффективными на больших объемах данных (миллионы элементов).
- Можно использовать стандартные структуры данных STL (`list`, unordered_map
, unordered_set
и т.д.).
▪️ Дополнительные вопросы к кандидату:
- Как обеспечить O(1) удаление произвольного элемента из очереди?
- Как избежать утечек памяти или "битых" итераторов после удаления элементов?
- Что будет, если очередь будет содержать множество одинаковых элементов?
- Как бы вы изменили решение, если бы нужно было удалять все вхождения элемента, а не только первое?
---
▪️ Разбор возможного решения:
Основная архитектура:
- Используем std::list<int> data
для хранения реальной очереди.
- Почему list
? Потому что позволяет за O(1) удалять элементы по итератору.
- Используем std::unordered_map<int, std::list<std::list<int>::iterator>> index
.
- Для каждого значения храним список итераторов на его вхождения в data
.
Операции:
- enqueue(x):
- Добавляем x
в конец data
.
- Сохраняем итератор на него в index[x]
.
- Все действия — за O(1).
- dequeue():
- Удаляем элемент из начала data
.
- Находим соответствующий итератор в index
, удаляем его.
- Если в списке итераторов для этого значения больше нет элементов, удаляем ключ из index
.
- remove(x):
- Если в index[x]
есть итераторы:
- Берем первый итератор.
- Удаляем его из data
и из списка итераторов.
- Если список стал пустым — удаляем запись x
из index
.
- Все действия — за O(1).
---
▪️ Возможные подводные камни:
- ❗ Не проверять, пустой ли index[x]
, перед удалением итератора.
- ❗ Не удалять ключи из unordered_map
, что приводит к накоплению "пустых" списков в памяти.
- ❗ Использовать vector
вместо list
— тогда удаление из середины будет занимать O(n).
---
▪️ Мини-пример интерфейса класса:
#include <list>
#include <unordered_map>
class FastQueue {
private:
std::list<int> data;
std::unordered_map<int, std::list<std::list<int>::iterator>> index;
public:
void enqueue(int x) {
auto it = data.insert(data.end(), x);
index[x].push_back(it);
}
int dequeue() {
if (data.empty()) throw std::out_of_range("Queue is empty");
int val = data.front();
auto it = index[val].front();
index[val].pop_front();
if (index[val].empty()) {
index.erase(val);
}
data.pop_front();
return val;
}
void remove(int x) {
if (index.count(x) == 0) return;
auto it = index[x].front();
data.erase(it);
index[x].pop_front();
if (index[x].empty()) {
index.erase(x);
}
}
};
removeAll(x)
— удаление всех вхождений элемента?int
?🌀 ZENO — node система для сложных 3D-симуляций. Этот фреймворк превращает алгоритмический код в визуальные ноды, позволяя создавать кинематографичные физические эффекты.
В отличие от коммерческих аналогов ZENO оптимизирован для работы с большими сценами и поддерживает GPU-ускорение через CUDA. Система включает готовые примеры симуляций, которые можно сразу загрузить и модифицировать.
🤖 GitHub
@cpluspluc
🖥 В этой статье обсуждается ситуация, когда применение оптимизаций компилятора приводит к изменению поведения программы! Автор подчеркивает, что если поведение программы меняется при использовании определенного уровня оптимизации, это часто указывает на наличие неопределенного поведения в коде.
💡 Автор объясняет, что компиляторы, следуя правилу "as-if" (как если бы), могут применять любые преобразования кода, при условии, что они не изменяют его наблюдаемое поведение. Однако, если в программе присутствует неопределенное поведение, компилятор может производить оптимизации, которые изменяют поведение программы, поскольку исходное поведение не было строго определено
🔗 Ссылка: *клик*
@cpluspluc
🐍 PocketPy — легковесный интерпретатор Python для встраивания в C++ проекты. Разработчики позиционируют его как альтернативу Lua для игровых движков, где важны простота интеграции и отсутствие зависимостей.
Проект поддерживает совместимость с pybind11 и мобильными платформами. При этом интерпретатор демонстрирует производительность на уровне CPython 3.9 в базовых тестах.
🤖 GitHub
@cpluspluc
🖥 Dear ImGui — библиотека GUI на C++ для быстрого создания интерфейсов без внешних зависимостей.
Оптимизирована для экономии памяти и легкой интеграции в проекты.
Позволяет быстро настраивать UI, избегая проблем с синхронизацией, и поддерживает разные графические API и платформы.
🔗 https://github.com/ocornut/imgui
@cpluspluc
✔️ ЗАДАЧА: Что выведет код?
#include <iostream>
#include <vector>
struct Tracer {
Tracer(const char* name) : name(name) {
std::cout << "Constructing " << name << "\n";
}
~Tracer() {
std::cout << "Destructing " << name << "\n";
}
const char* name;
};
struct Example {
Tracer t1{"t1"};
std::vector<Tracer> list;
Tracer t2{"t2"};
Example() : list{Tracer("temp1"), Tracer("temp2")} {
std::cout << "Inside constructor\n";
}
};
int main() {
Example e;
std::cout << "End of main\n";
return 0;
}
🖥 Gooey — нативный кроссплатформенный GUI-фреймворк на C
Если ты разрабатываешь под Windows или Linux и хочешь лёгкий и настраиваемый UI, присмотрись к Gooey — фреймворку с нативной производительностью и открытым кодом.
✍ Почему стоит:
• 🔥 На C, без библиотек-монстров
• 🔴 Работает везде
• 🧩 Кастомный UI
• 💥 Лёгкий и быстрый
• 🧪 С GPL v2 и сообществом
🚀 GitHub
@cpluspluc
👩💻 Docker - лучший обучающий канал по Devops.
С помощью картинок и коротких видео даже новички с легкостью смогут применять продвинутые инструменты разработки и использовать Docker.
Стоит подписаться: t.me/DevopsDocker
📄 toml++ — библиотека, предлагающий удобный и производительный способ обработки TOML файлов в C++-проектах. Этот парсер полностью соответствует спецификации TOML 1.0.0, поддерживает UTF-8 и может преобразовывать данные в JSON/YAML. При этом он не требует RTTI и может работать без исключений.
Интеграция системы проста: можно использовать как single версию или подключить через CMake/Conan/Vcpkg. Поддерживаются все основные компиляторы и архитектуры (x64, x86, ARM).
🤖 GitHub
@cpluspluc
📊 Bebop — свежий взгляд на бинарную сериализацию. Этот проект сочетает читаемость JSON с производительностью бинарных протоколов, обещая в 10-100 раз большую скорость работы по сравнению с традиционными решениями.
Собственный язык схем позволяет генерировать типобезопасный код для C++, С#, TypeScript, Rust и других языков, сохраняя при этом кросс-платформенную совместимость. При этом проект уже сейчас демонстрирует высокую производительность в бенчмарках, особенно в сценариях, критичных к задержкам.
🤖 GitHub
@cpluscpluc
🔎 rwkv.cpp — проект, адаптирующий архитектуру RWKV для эффективной работы на обычных процессорах.
В отличие от традиционных LLM, RWKV требует лишь немного памяти на токен — это позволяет запускать модели с большими контекстами даже на слабом железе.
Инструмент реализован на C/C++ с поддержкой квантования и CUDA через cuBLAS.
Особенно интересна совместимость с LoRA-адаптерами, что позволяет дообучать модели без полного экспорта весов. Тесты показывают стабильную работу даже на 4-ядерных CPU с контекстом в 8K токенов.
🤖 GitHub
@cpluspluc
👽 bdwgc — сборщик мусора для C/C++ с 30-летней историей
Проект представляет собой консервативный мусорный сборщик, разработанный еще в 1988 году, но до сих пор востребованный в системном программировании. Вdwgc может работать в "враждебной среде", сканируя стек и память, пытаясь угадать, какие данные являются указателями.
Проект может быть полезен для:
▪️ Долгоживущих сервисов, где утечки памяти критичны
▪️Встраиваемых систем с ограниченными ресурсами
▪️Научных вычислений на C/C++
🤖GitHub
@cplucplus
👴 Возрождение старичка — Clipper2
💎 Проект представляет собой переработку классической библиотеки Clipper, которая долгое время оставалась стандартом для операций с многоугольниками.
📈 В отличие от предшественника, Clipper2 предлагает не только базовые логические операции, но и поддержку сложных сценариев работы с полигональными сетками. Из приятного: ядро работает на C++ 17, с интерфейсами для С# и Delphi. Также есть возможность интеграции в другие языки с помощью динамических библиотек.
🤖 GitHub
@cpluspluc