C++ Academy
16.1K subscribers
374 photos
112 videos
1 file
382 links
По всем вопросам- @haarrp
Download Telegram
Эффективное использование С++

1. Библиотеки, утилиты, средства разработки, сборка (Эффективное использование С++)
2. Работа с памятью. Утечки ресурсов. RAII, умные указатели (Эффективное использование С++)
3. Move semantics, rvalue reference, perfect forwarding.
4. Callbacks: lambda, bind & function.
5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
6. Обзор возможностей современных стандартов C++

#video #cpp

https://www.youtube.com/watch?v=oPXn_n-lrzw&list=PLntPXGBtcaSj11jJWYiwCM2QyDG22SgXr
🖥 C++26 — прогресс и новинки от ISO C++

Работа в комитете по стандартизации языка C++ активно кипит. Недавно состоялось очередное заседание. Как один из участников, поделюсь сегодня с Хабром свежими новостями и описанием изменений, которые планируются в С++26.

До нового стандарта C++ остаётся чуть больше года, и вот некоторые новинки, которые попали в черновик стандарта за последние две встречи:
— запрет возврата из функции ссылок на временное значение,
[[indeterminate]] и уменьшение количества Undefined Behavior,
— диагностика при =delete;,
— арифметика насыщения,
— линейная алгебра (да-да! BLAS и немного LAPACK),
— индексирование variadic-параметров и шаблонов ...[42],
— вменяемый assert(...),
— и другие приятные мелочи.

Помимо этого, вас ждут планы и прогресс комитета по большим фичам и многое другое.

📎 Читать подробнее

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Порождающие паттерны и их реализация на C++

Держите реализацию на C++ таких шаблонов как:
• фабрика
• строитель
• абстрактная фабрика
• одиночка
• прототип

А вот немного о самих паттернах:
🟡Строитель (builder)
— разделяет создание сложного объекта и инициализацию его состояния так, что одинаковый процесс построения может создать объекты с разным состоянием.

🟡Абстрактная фабрика (abstract factory) — предоставляет интерфейс для создания групп связанных/зависимых объектов, не указывая их конкретный класс.

🟡Одиночка (singleton)
— гарантирует, что класс имеет только 1 экземпляр и предоставляет глобальную точку доступа к нему.

🟡Прототип (prototype)
— определяет несколько видов объектов, чтобы при создании использовать объект-прототип и создаёт новые объекты, копируя прототип.

📎 Код, описывающий паттерны
📎 А тут объяснение и схемы самих паттернов

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Перехват данных на уровне ОС с помощью C++

Держите полезную статью, здесь мы рассматриваем две техники перехвата данных на уровне ОС. Они позволяют получить точную информацию о состоянии игровых объектов.
В то же время эти техники имеют несколько преимуществ над чтением данных из памяти процесса игры:

🟡Большинство антиотладочных приёмов не защищают от перехвата WinAPI-вызовов.

🟡Намного проще реализовать обработчик перехваченной функции, чем анализировать память игрового приложения.

🟡Системам защиты крайне сложно обнаружить факт перехвата вызовов.

Эти техники перехвата WinAPI-вызовов можно использовать не только в алгоритме какого-нибудь бота, но и для исследования памяти процесса игрового приложения. Да и вообще, применений масса)

▶️ Поехали

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Один из лучших онлайн-компилятор C++

https://github.com/16bit-ykiko/vscode-compiler-explorer

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Чем пустой конструктор по умолчанию отличается от =default;?

▶️Вопрос: чем пустое тело отличается от того, что получается с =default (для конструктора по умолчанию)
X::X() {}
// и
X::X() = default;



▶️Что ж, наличие конструктора по умолчанию с пустым телом автоматически делает класс нетривиальным. Со всеми вытекающими отсюда особенностями. Например делает тип не POD. А также исключает возможность использовать агрегатную инициализацию:
#include <iostream>
#include <type_traits>

struct X {
//X() {}
X() = default;
int a;
int b;
};

int main( ) {
X x { 1, 2 }; // ошибка, если X - не тривиальный класс.
std::cout << std::boolalpha <<
std::is_trivial<X>::value << "\n";
}


При определении конструктора как = default тривиальность класса сохраняется, если она была до этого. В данном случае, это равносильно отсутствию явного упоминания конструктора в определении класса.

Если конструктор по умолчанию определен как = default вне определения класса, всё равно будет считаться, что конструктор предоставлен пользователем, и это тоже делает класс нетривиальным.

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Whisper.cpp для перевода аудио в текст

🟡Высокопроизводительный интерфейс на C++ для модели Whisper от OpenAI, которая отлично распознаёт текст.
Простая реализация на C/C++ без зависимостей.

Особенности самой модели Whisper:
— Хорошо распознает русский текст (даже с вкраплениями английского)
— Хорошо распознает цифры

🖥 GitHub
🟡 Использование

Кстати, интересный факт: Whisper.cpp был написан Георгием Гергановым всего за 5 дней

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Воспроизводимая среда разработки с Nix

В разработке на C++ менеджер пакетов — незаменимая вещь.
Многие полагаются на FetchContent и скрипты сборки для установки зависимостей, а ведь есть замечательный инструмент — Nix, который является и пакетным менеджером, и позволяет настраивать детерминированное окружение одной командой.

Что ж, давайте поговорим, что такое Nix, что он предлагает и как с его помощью создать окружения разработки.

▶️ Погружение в Nix

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять

Машинное обучение

Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети
Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат

🏆 Golang
Golang
Golang собеседование - разбор задач и вопросов с собесов
Golang вакансии -работа для Go разработчика
Golang книги библиотека книг
Golang задачи и тесты
Golang чат
Golang news - новости из мира go
Golang дайджест

💥 Linux /Этичный хакинг
Linux Academy - гайды, секреты и лучшие материалы по Linux
Kali linux - погрузись в мир этичного хакинга и кибербезопасности
linux_kal - kali чат
Информационная безопасность

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

🛢Базы данных
Sql базы данных - научим работе с базами данных профессионально
Библиотека баз данных
SQL чат
Вакансии Sql аналитик данных

#️⃣C#

С# академия - лучший канал по c#
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

🐍 Python

Python/django - самый крупный обучающий канал по Python
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

Java

Java академия - java от Senior разработчика
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend

🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops

🌟 Docker/Kubernets
Docker
Kubernets

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend

💥 Бесплатный Chatgpt бот
🖥 gemma.cpp

gemma.cpp — это лёгкий движок на C++ для вывода моделей на основе Gemma от Google (в частности Gemma 2B и 7B)

gemma.cpp ориентирован на простоту и минималистичность, а не на полную универсальность.
Вдохновлён такими реализациями, как ggml, llama.c и llama.rs.

🖥 GitHub
🟡 Gemma

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как собрать проект C++ с Github из исходников

🟡В этой статье мы рассмотрим ситуацию, когда у нас есть только ссылка на исходники проекта, скажем, на GitHub (возьмём для примера библиотеку для простых чисел primesieve) и нужно каким-то образом "вручную" скомпилировать внешний проект в своей Visual Studio, чтобы воспользоваться его возможностями в своём приложении.

▶️ Поехали

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 FTXUI — C++ библиотека для создания консольных UI

Фичи FTXUI:
— Функциональный стиль, вдохновлен React
— Простой и элегантный синтаксис
— Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
— Поддержка UTF8 и полноразмерных символов (типо → 测试)
— Поддержка анимации
— Поддержка рисования
— Нет зависимостей
— Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
— К FTXUI прилагается: документация, тесты, фаззеры, тесты производительности, автоматизированный CI, автоматизированная упаковка и т.д.

🖥 GitHub

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM