C/C++ Development | YeaHub – Telegram
C/C++ Development | YeaHub
827 subscribers
228 photos
56 videos
1 file
378 links
Теория, подготовка к интервью и курсы для C/C++ разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😬 Игра на C с использованием Raylib. То, что получилось, на самом деле довольно круто.

В игре «Echoes of the Unseen» ты играешь за временного картографа, исследующего тёмный мир, который изначально полностью скрыт от глаз. Твой основной инструмент это Echo Pulse, что-то вроде сонара. Он временно подсвечивает форму рельефа и раскрывает важные объекты — такие как энергетические кристаллы и враги.

Ключевая механика это управление ограниченным запасом Echo Energy, с помощью которого ты исследуешь невидимую территорию. Некоторые области можно «зафиксировать» навсегда — они станут твёрдыми и видимыми. Также доступны продвинутые инструменты: например, изменение гравитации или создание звуковых мостов.

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

Исходный код: echoes.c на GitHub Gist

Makefile для сборки:

CC = gcc
CFLAGS = -Wall -Wextra -std=c99 -O2
LDFLAGS = -lraylib -lm -lpthread -ldl -lrt -lX11

# Определение платформы
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
# Флаги для Linux
LDFLAGS += -lGL
endif
ifeq ($(UNAME_S),Darwin)
# Флаги для macOS
LDFLAGS = -lraylib -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL
endif

TARGET = echoes_of_the_unseen
SOURCES = main.c
OBJECTS = $(SOURCES:.c=.o)

all: $(TARGET)

$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)

%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@

clean:
rm -f $(OBJECTS) $(TARGET)

run: $(TARGET)
./$(TARGET)

.PHONY: all clean run


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#Собес #redis
🤔 Что такое хэши в Redis?

Хэши в Redis - это структура данных, которая представляет собой коллекцию пар "ключ-значение", аналогично объектам или словарям в программировании. Они удобны для хранения атрибутов сущностей, таких как имя, возраст или адрес пользователя, и являются эффективными с точки зрения памяти.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#видео
😎 Обязательное к просмотру видео про кучу и стек

В этом уроке рассмотрите концепцию динамического распределения памяти в C и C++, а также как осуществляется управление памятью в приложении

> Ссылка: https://www.youtube.com/watch?v=_8-ht2AKyH4&t=599s

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😅 Люди зря паникуют из-за вложенных for-циклов. Они имеют сложность O(1), пока предел итераций не становится большим.

https://ffmpeg.org/doxygen/0.6/mpegaudiodec_8c-source.html

Кстати, исходники ffmpeg это красота. Самый простой способ разобраться в любом аудио/видео-протоколе это прочитать его реализацию на C в ffmpeg.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
🤣 На этой диаграмме изображена первая в мире «нетривиальная» компьютерная программа, разработанная в 1843 году Адой Лавлейс для Аналитической машины Чарльза Бэббиджа.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁1
#Собес #redis
🤔 Чем Redis отличается от традиционных баз данных, таких как MySQL?

Redis работает в оперативной памяти, что делает его намного быстрее, чем традиционные базы данных, такие как MySQL, работающие с диском. Redis предоставляет простые операции для работы с ключами и значениями, тогда как MySQL поддерживает сложные SQL-запросы и транзакции для структурированных данных.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2😈1
#полезное
👋 Релиз Sakura v1.0

Высокопроизводительная минималистичная (~1k строк кода) мультимедийная библиотека для терминала на C++, которая рендерит изображения, GIF-анимации и видео с использованием sixel-графики с синхронизированным воспроизведением аудио.

Sakura поддерживает все современные форматы: jpg, png, bmp, анимированные gif, mp4, avi, mov, mkv, с адаптивным масштабированием, продвинутой синхронизацией кадров и пропуском кадров для плавного воспроизведения.

Также поддерживается кастомная обработка изображений и пакетная обработка с читаемым лог-выводом.

Репозиторий: https://github.com/Sarthak2143/sakura

Добавлена подробная документация по архитектуре обработки видео и API-документация.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #redis
🤔 Что такое Redis и для чего он используется?

Redis — это высокопроизводительное хранилище данных в оперативной памяти, поддерживающее различные структуры данных: строки, хэши, списки, множества и упорядоченные множества. Его используют для ускорения работы приложений в сценариях, требующих быстрой записи и чтения, таких как кэширование, управление сессиями, системы публикации и подписки, а также для создания рейтингов (leaderboards).

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
🤯 Отлавливайте сегфолты во время выполнения на C

#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

static void handle_sigsegv(int sig, siginfo_t *info, void *ucontext) {
(void)ucontext; // используем это, если нужно, иначе отключаем предупреждение компилятора

// Обрабатываем сегфолт здесь
// записываем несохраненные данные, логируем ошибки и т.д.
fprintf(stderr, "Сегфолт пойман по адресу %p, ваши данные сохранены!\n", info->si_addr);
exit(EXIT_FAILURE);
}

int main(void) {
struct sigaction sig_a = {
.sa_sigaction = handle_sigsegv, // указатель на функцию обработки нашего сегфолта
.sa_flags = SA_SIGINFO,
};

sigemptyset(&sig_a.sa_mask);

if (sigaction(SIGSEGV, &sig_a, NULL) == -1) {
perror("sigaction не удалась");
return 1;
}

printf("Этот код выполняется перед сегфолтом!\n");

// намеренно вызываем сегфолт
int *p = NULL;
*p = 1;

printf("Это не выполнится из-за сегфолта!\n");

return 0;
}


На фото ошибка: в условии sigaction надо сравнивать с «-1», а не с «1»

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Визуальное объяснение того, как работают LLM

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🏕 LSTM заставляли ИИ запоминать ещё до того, как трансформеры захватили сцену — вот 15-шаговое руководство для ручного разбора, которое можно прочитать по ссылке - https://byhand.ai/p/26-lstm

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #mongoDB
🤔 Что такое оператор SaddToSet в MongoDB и чем он отличается от Spush?

💬 Кратко:
Оператор $addToSet добавляет значение в массив, только если его нет в этом массиве, предотвращая дубли. В отличие от него, оператор $push добавляет элемент в массив без проверки на дубли.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Media is too big
VIEW IN TELEGRAM
GUI на C++ затягивает как ничто другое

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
1 миллиард итераций вложенного цикла

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😱 Реализация команды ping на C

🟠 Отправляет и принимает ICMP-пакеты
🟠 Считает RTT для каждого пакета в микросекундах
🟠 Считает потерю пакетов и другую статистику, как в оригинальной команде

Вот репозиторий на GitHub, если хочешь попробовать - https://github.com/EpicNerdGuy/Ping-in-C-

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #mongoDB
🤔 Как создать индекс в MongoDB?

💬 Кратко:
Для создания индекса в MongoDB используется метод createIndex() . Например, чтобы создать индекс дЛя поля myField в КОЛЛеКЦИИ mycollection , ВЫполните команду:
db.myCollection.createIndex({ myField: 1 }) 


📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
👋 Lock-Free Ring Buffer

Lock-free ring buffer позволяет организовать обмен данными с низкой задержкой и безопасный для потоков в многопоточных приложениях (например, в аудио или сетевых задачах). Эта реализация single-producer single-consumer (SPSC) использует атомики из C11 для конкурентного доступа без блокировок.

Такие lock-free структуры данных редко встречаются в туториалах по C, хотя они дают высокую производительность и низкую задержку, что особенно важно для real-time приложений.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2