TGViewer
Channel Public Channel
C/C++ Development | YeaHub

C/C++ Development | YeaHub

@yeahub_c_development

Теория, подготовка к интервью и курсы для C/C++ разработчиков

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

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

Для связи: @ruslan_kuyanets
Subscribers
741
Photos
281
Videos
56
Links
550

Showing posts older than #304 · Back to latest

Older Posts 19 shown
Post #303 453
#видео
😎 Обязательное к просмотру видео про кучу и стек

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

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

👉Новости 👉База вопросов
  • ❤ 2
Post #302 411
#Собес #redis
🤔 Что такое хэши в Redis?

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

👉Новости 👉База вопросов
  • ❤ 1
Post #301 439
#полезное
😬 Игра на 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


👉Новости 👉База вопросов
  • ❤ 2
Post #300 338
#полезное
😎 LunaSVG — легковесная библиотека для рендеринга SVG на C++. Проект предлагает простое и эффективное решение для работы с векторной графикой — от базового рендеринга SVG до динамического изменения стилей через CSS.

Библиотека поддерживает большинство элементов SVG 1.1/1.2 Tiny и легко интегрируется в проекты через CMake или Meson. Она имеет минималистичный дизайн и портируемость. В комплекте идёт утилита svg2png для конвертации файлов, а сами SVG можно программно модифицировать перед отрисовкой. Подходит для встраивания в движки игр и GUI-фреймворки.
GitHub

👉Новости 👉База вопросов
Post #299 305
#Собес #redis
🤔 Может ли Redis использоваться в многопоточных приложениях, и как он обрабатывает конкурентность?

Redis является однопоточной системой, что упрощает архитектуру за счёт исключения проблем конкурентности, характерных для многопоточных приложений. Конкурентность в Redis обрабатывается с использованием неблокирующего мультиплексирования ввода/вывода и атомарных операций, что позволяет эффективно обслуживать несколько клиентов одновременно.

👉Новости 👉База вопросов
Post #298 346
#полезное
😊 To-Do List на C

С использованием связного списка, работы с файлами и динамического выделения памяти.

По словам автора это не веб-разработка и не Python, поэтому здесь всё же есть пока что некоторые ошибки

Ссылка на исходный код - https://github.com/aadityansha06/TO-DO-C

👉Новости 👉База вопросов
  • ❤ 2
Post #297 411
#полезное
🛞 Процесс компиляции GNU от исходного кода до исполняемого файла

Процесс начинается с исходного кода в текстовых файлах (например, программы на языке C) и запускается с препроцессора, который часто называют cpp.
Предположим, исходный код находится в файле prog.c.

Препроцессор расширяет макросы, подключает заголовочные файлы и обрабатывает директивы, преобразуя исходный код в очищенную версию, которая по-прежнему остаётся в текстовом формате. Например, после обработки препроцессором cpp файла prog.c может получиться файл prog.i.
Препроцессор важен для подготовки кода путём раннего разрешения зависимостей, чтобы все определения были на месте до фактической компиляции.

Далее собственно компилятор (например, cc1 или gcc) на основном этапе берёт предварительно обработанный текст и генерирует ассемблерный код.

На этом этапе высокоуровневые инструкции преобразуются в низкоуровневый ассемблер, часто с такими оптимизациями, как преобразование кода. Вы можете увидеть команду gcc -S -m32 prog.c для вывода prog.s в текстовом формате.

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

Ассемблер преобразует этот ассемблерный текст в перемещаемые объектные файлы в двоичном формате.

Эти файлы .o содержат машинный код, но с заполнителями для адресов, отмеченными в записях перемещения, таких как разделы .rel.data или .text. Таблицы символов (.symtab) отслеживают переменные и функции.

Выполнение команды gcc -c prog.c компилирует без компоновки, создавая файл prog.o, готовый к объединению с другими файлами.

Компоновка выполняется с помощью ld, который разрешает символы и перемещает код, подключая библиотечные файлы и другие объектные модули.

Он создаёт исполняемый двоичный файл, например prog из gcc -o prog prog.c, где всем ссылкам присваиваются фиксированные адреса. На этом этапе выполняется разрешение символов, чтобы вызовы внешних функций работали корректно.

Наконец, загрузчик помещает этот исполняемый файл в память как работающий процесс, сопоставляя разделы и настраивая выполнение.

👉Новости 👉База вопросов
  • ❤ 1
Post #296 360
#Собес #redis
🤔 Что такое Pub/Sub в Redis?

Pub/Sub — это механизм обмена сообщениями в Redis, где издатели (publishers) отправляют сообщения в каналы, а подписчики (subscribers), подписанные на эти каналы, получают их. Этот механизм используется для реализации систем реального времени, таких как чаты, уведомления или системы трансляции данных.

👉Новости 👉База вопросов
  • ❤ 1
Post #295 479
#полезное
😜 TinyRequest отправляет запросы и показывает ответы

Ещё не до конца допилен, но автор активно работает над ним

На днях было несколько обновлений:

- Теперь TinyRequest умеет распознавать JSON в теле запроса и валидировать его в реальном времени.
- Добавлены быстрые шаблоны для пустых объектов и массивов.

- Портирование TinyRequest идёт отлично

- Переход с Raylib на ImGui — делать GUI стало в 10 раз быстрее. ImGui реально очень плавно работает для такого рода приложений.

- Теперь TinyRequest поддерживает отправку запросов POST, PUT и DELETE с JSON.


https://github.com/dexter-xD/tiny-request

👉Новости 👉База вопросов
  • ❤ 2
Post #292 537
#Собес #redis
🤔 Как обеспечить устойчивость данных в Redis?

Redis поддерживает два механизма сохранения данных: - RDB (Redis Database Backups): Создание моментальных снимков данных через определённые интервалы времени.
- AOF (Append Only File): Запись каждой операции изменения данных в лог, который может быть воспроизведён для восстановления.

👉Новости 👉База вопросов
  • ❤ 1
Post #291 624
#полезное
📞 C++ под капотом: внутренние механизмы классов — Крис Райан

Очень рекомендую этот доклад, если вы только начинаете работать с C++ и хотите разобраться, как всё устроено внутри.

Даже для опытных разработчиков найдётся что-то новое.
Источник

👉Новости 👉База вопросов
  • 👍 4
  • ❤ 1
Post #290 612
#полезное
👨‍💻 Эта программа удаляет себя после однократного запуска.

🟠 __FILE__ — это макрос, содержащий имя текущего файла

🟠 remove(__FILE__) удаляет файл с диска

👉Новости 👉База вопросов
  • ❤ 3
  • 🔥 1
  • 🤔 1
Post #289 672
image_2025-07-23_09-19-41.png1 MB
#полезное
👋 Обзор интерфейса std::vector

Источник: https://hackingcpp.com/

Также на этом сайте можно ознакомиться с начальным гидом для новичков, показывающим как создавать, наполнять, изменять размер, удалять и копировать std::vector, а также он предупреждает о некоторых ключевых подводных камнях — ссылка

👉Новости 👉База вопросов
  • ❤ 1
Post #288 664
#Собес #redis
🤔 Объясните концепцию транзакций в Redis.

Транзакции в Redis позволяют выполнять группу команд как единое целое. С помощью команд MULTI, EXEC, DISCARD И WATCH можно гарантировать, что все команды либо выполняются успешно, либо не выполняются вовсе. Это обеспечивает целостность данных без традиционных механизмов, таких как откаты операций.

👉Новости 👉База вопросов
Post #286 632
#полезное
😵‍💫 Одна вещь, которую, как мне кажется, упускает большинство вводных материалов по C, — это то, что вы можете просто оборачивать отдельные значения в struct, чтобы сделать код понятнее.

Например, такие вещи, как int***, которые на первый взгляд выглядят запутанно, можно представить через структуры — без какого-либо дополнительного накладного расхода во время выполнения.

Я обнаружил, что такой подход действительно помогает в долгосрочной поддержке кода.
Он также даёт возможность внести дополнительные улучшения — например, добавить в каждую структуру поле length рядом с указателем на массив (настоятельно рекомендую!).

👉Новости 👉База вопросов
Post #285 456
#полезное
😴 Open Data Structures от Пэта Морина

Эта книга доступна в вариантах с псевдокодом, а также на Java и C++ — удобно, если ты ищешь реализацию на конкретном языке программирования.

https://opendatastructures.org

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →