Программирование {BookFlow}
前往频道在 Telegram
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий. Группа в https://vk.com/bookflow. По всем вопросам @evgenycarter РКН https://clck.ru/3KoAbH
显示更多📈 Telegram 频道 Программирование {BookFlow} 的分析概览
频道 Программирование {BookFlow} (@bookflow) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 15 688 名订阅者,在 技术与应用 类别中位列第 8 175,并在 俄罗斯 地区排名第 42 288 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 15 688 名订阅者。
根据 31 七月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -78,过去 24 小时变化为 1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 5.23%。内容发布后 24 小时内通常能获得 2.73% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 821 次浏览,首日通常累积 428 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 8。
- 主题关注点: 内容集中在 git, программист, программирование, c++, sql 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.
Группа в https://vk.com/bookflow.
По всем вопросам @evgenycarter
РКН https://clck.ru/3KoAbH”
凭借高频更新(最新数据采集于 01 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
15 688
订阅者
+124 小时
-177 天
-7830 天
帖子存档
Многопользовательская игра, похожая на DOOM, написанная на чистом SQL
DOOMQL - это экспериментальный проект, который позволяет играть в DOOM, используя SQL-запросы.
Идея проста: управление игрой происходит не через клавиатуру или мышь, а через выполнение SQL-команд, которые интерпретируются как действия внутри движка.
🔹 Например, можно отправить
INSERT или UPDATE запрос, чтобы двигаться, стрелять или поворачивать персонажа.
🔹 Вся логика игрового процесса завязана на базу данных, превращая DOOM в своеобразный SQL-интерфейс.
🔹 Это скорее арт-проект, чем практичный инструмент, но отличный пример того, как базы данных можно использовать в самых неожиданных сценариях.
https://github.com/cedardb/DOOMQL
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @BookflowПарсер C++ на своем DSL: попытка обогнать компилятор
Проекты растут. Кодовая база растёт. Время компиляции растёт вместе с ними и переходит все границы разумного.
В какой-то момент я решил: а что если попробовать написать свой компилятор? Пока только для разработки, не для прода. На замену Clang++/G++/CL.EXE.
Эта статья — о первом шаге на этом пути. О парсере C++, который я написал на своём DSL специально сделанном для этого изначально.
https://habr.com/ru/articles/1058150/
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Как OpenAI создала своего агента данных
Мы поговорили с Эммой Танг, главой инженерного отдела платформы данных OpenAI, чтобы получить представление о том, как это работает, из первых рук.
В этом видео мы объясним:
- Как это построено
- Как OpenAI использует Codex
- 5 ключевых уроков для каждого инженера
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Git Merge vs Rebase
Одной из самых мощных возможностей Git является работа с ветками.
Однако при работе с ними нам нужно интегрировать изменения из одной ветки в другую, и способов сделать это несколько.
Есть два основных метода:
1. Merge (слияние)
Когда вы сливаете ветку A в ветку B (с помощью
git merge), Git создаёт новый merge-коммит.
У этого коммита два родителя — по одному от каждой ветки, что символизирует объединение их истории.
- Это неразрушающая операция, которая сохраняет точную историю проекта.
- Merge особенно полезен в командной работе, когда важно сохранить целостность и хронологию изменений.
Минус: merge-коммиты могут "засорять" историю, усложняя отслеживание конкретных изменений.
2. Rebase (перебазирование)
Когда вы перебазируете ветку A на ветку B (с помощью git rebase), это означает:
"Давайте сделаем вид, что изменения из ветки A были сделаны поверх последних изменений ветки B."
- Rebase переписывает историю проекта, создавая новые коммиты для каждого из исходных коммитов.
- Результат — чистая, линейная история.
Минус: может быть проблематично, если над веткой работают несколько человек, ведь перебазирование переписывает историю, что усложняет совместную работу при уже опубликованных ветках.
Когда что использовать?
- Merge — когда важно сохранить полную историю и вы работаете с общими ветками. Идеально для слияния feature-веток в main или develop.
- Rebase — для личных веток или когда нужна чистая, линейная история для удобства отслеживания изменений.
Важно: не делайте rebase публичной истории. Если ветка уже опубликована и с ней работают другие, переписывание истории приведёт к конфликтам и путанице.♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @Bookflow
📡 Интернет существовал ещё до появления интернета. Правда, был он… бумажным.
В 1930-х годах инженеры придумали удивительную технологию: новости передавались по радиоволнам прямо на домашний аппарат, который печатал свежую «газету» на специальной термобумаге. По сути, это был аналог современного RSS, только без Wi-Fi, смартфонов и браузеров.
Главным идеологом проекта стал инженер Уильям Финч. Его устройство принимало радиосигнал и примерно за 20 минут печатало одну страницу. Владельцы могли просыпаться утром уже с готовым выпуском новостей, который буквально «скачивался» из эфира.
💡 Идея была революционной:
• новости приходили быстрее обычной прессы;
• можно было передавать не только текст, но и изображения;
• рекламодатели рассылали рецепты, купоны и буклеты — почти как современные push-уведомления и email-рассылки.
Но технология не взлетела. Причин было несколько:
• печать была очень медленной;
• специальная бумага пачкала руки;
• устройства стоили дорого;
• радио было дешевле и удобнее, а вскоре его окончательно вытеснило телевидение.
Тем не менее концепция оказалась пророческой. Финч фактически предсказал персональные новостные ленты, мгновенную доставку контента и домашнее получение информации — задолго до появления интернета, RSS и электронных газет.
https://habr.com/ru/companies/studyai/articles/1061556/
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
🔥 Как управлять хаосом в инфраструктуре?
Каждый DevOps рано или поздно сталкивается с бардаком в инфраструктуре: неконтролируемые деплои, забытые сервисы, баги, которые никто не фиксит. Как с этим бороться?
1️⃣ GitOps — все в коде
Описывай инфраструктуру в Git. Terraform, Ansible, Helm — твои лучшие друзья. Код можно версионировать, откатывать и автоматически применять.
2️⃣ Мониторинг и алерты
Не жди, пока тебе напишут в 3 часа ночи, что "сайт лежит". Prometheus + Grafana + Alertmanager помогут реагировать на проблемы заранее.
3️⃣ CI/CD как обязательный ритуал
Если код не проходит через CI/CD, он не должен попадать в прод. Проверяй тесты, линтеры, сканируй на уязвимости.
4️⃣ Автоматизация и self-healing
Используй Kubernetes с подами, которые перезапускаются при сбоях, или Lambda-функции для автоматического восстановления сервисов.
5️⃣ Документация и коммуникация
Не будь тем, кто на вопрос "как это работает?" отвечает "без понятия". Веди вики, оставляй README и учи коллег пользоваться инструментами.
DevOps — это не про тушение пожаров, а про их предотвращение. Автоматизируй и контролируй хаос, пока он не контролирует тебя! 🚀
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
https://max.ru/channel_win_sysadmin Системный Администратор Windows
https://max.ru/channel_linux_admin Linux: Системный администратор
https://max.ru/channel_linuxmod Linux
https://max.ru/channel_i_linux Системный администратор
https://max.ru/channel_devopslib DevOps, SRE, Sysadmin
https://max.ru/channel_devops_star DevOps Star (Звезда Девопса)
Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак
Английский с нуля 🇬🇧
https://max.ru/UchuEnglish
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://max.ru/channel_DevLab1C 1С:Предприятие 8
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
https://max.ru/channel_cpp_geek C++ geek
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Rust📌
https://max.ru/channel_rust_lib
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
https://max.ru/channel_java_geek Java Geek
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии в IT📌
https://max.ru/progjob
https://max.ru/channel_rabotait
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
📱 Google разрешила восстанавливать доступ к аккаунту с помощью селфи-видео.
Новый способ пригодится, если пользователь забыл пароль, потерял телефон или не может пройти стандартную проверку личности.
Для восстановления доступа потребуется записать короткое видео с лицом. Система проверит, что перед камерой действительно владелец аккаунта, после чего позволит войти.
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
📌Лучшие практики для CI/CD-пайплайнов
Правильная настройка CI/CD (Continuous Integration/Continuous Deployment) позволяет ускорить доставку кода, минимизировать ошибки и повысить безопасность. Вот ключевые best practices для CI/CD:
1. Используйте систему контроля версий для всего
- Храните в Git (или другом VCS) не только код, но и конфигурации, скрипты для CI/CD и инфраструктуру как код (IaC).
- Следуйте стратегии ветвления: Git Flow, GitHub Flow, trunk-based development.
- Включите код-ревью и защиту веток перед слиянием (Pull Requests, Merge Requests).
2. Автоматизируйте сборку, тестирование и развертывание
- Используйте Jenkins, GitHub Actions, GitLab CI/CD, CircleCI для автоматизации.
- Включите в пайплайн юнит-, интеграционные, функциональные и безопасностные тесты.
- Настройте автоматическое развертывание, чтобы исключить человеческий фактор.
3. Shift Left: Тестируйте на ранних этапах
- Запускайте статический анализ кода (SAST) сразу после коммита (SonarQube, Checkmarx).
- Добавьте динамическое тестирование (DAST) и сканирование контейнеров.
- Используйте feature flags, чтобы включать/выключать фичи без релиза.
4. Применяйте инфраструктуру как код (IaC)
- Управляйте инфраструктурой с помощью Terraform, AWS CloudFormation, Pulumi.
- Храните IaC-файлы в Git и тестируйте их перед развертыванием.
- Применяйте принцип неизменяемости инфраструктуры (избегайте ручных изменений на проде).
5. Оптимизируйте производительность пайплайнов
- Кэшируйте зависимости (Docker-образы, npm, Maven) для ускорения сборки.
- Разбивайте тесты на параллельные потоки.
- Используйте инкрементальную сборку, чтобы пересобирать только измененные части проекта.
6. Обеспечьте безопасность пайплайна
- Храните секреты в защищенных хранилищах (AWS Secrets Manager, HashiCorp Vault, GitHub Secrets).
- Включите RBAC (разграничение прав доступа) в CI/CD-системе.
- Автоматически сканируйте зависимости, контейнеры и инфраструктуру на уязвимости.
7. Используйте Blue-Green и Canary-развертывания
- Blue-Green: два окружения (старое и новое), переключение трафика без даунтайма.
- Canary-релизы: выкатывайте обновления на небольшой процент пользователей перед полным релизом.
- Автоматически откатывайте неудачные развертывания.
8. Внедрите мониторинг и логирование
- Настройте централизованные логи через ELK Stack, Grafana Loki, AWS CloudWatch.
- Используйте мониторинг Prometheus, Datadog, New Relic.
- Настройте алерты и автоматическую реакцию на сбои.
9. Соблюдайте комплаенс и управление изменениями
- Внедряйте policy-as-code (например, Open Policy Agent (OPA), AWS Config).
- Логируйте все развертывания для аудита.
- Соблюдайте SOC2, HIPAA, GDPR при работе с чувствительными данными.
10. Контроль качества и постоянное улучшение
- Анализируйте метрики CI/CD и оптимизируйте узкие места.
- Получайте обратную связь от разработчиков для улучшения процесса.
- Проводите автоматизированные post-mortem разборы инцидентов.
Следуя этим best practices, вы получите быстрые, надежные и безопасные CI/CD-процессы с минимальными рисками и затратами. 🚀
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Leptos
Это современный фреймворк для разработки веб-приложений на Rust с реактивным подходом. Он позволяет писать как фронтенд, так и бэкенд, используя единый стек, с акцентом на производительность и безопасность.
Особенности:
⚡ Высокая скорость работы благодаря компиляции в WebAssembly и оптимизациям Rust.
🔄 Реактивность: обновления интерфейса происходят автоматически при изменении состояния.
🛠 Полный стек: можно писать и серверный, и клиентский код на Rust.
🌐 SSR (Server-Side Rendering) и гидратация для SEO и быстрого первого рендера.
🧩 Богатая экосистема и возможность использовать привычные паттерны вроде компонентов.
Фреймворк позиционируется как альтернатива React/Vue/Svelte, но с силой и безопасностью Rust.
https://github.com/leptos-rs/leptos
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Quake 1/2/3 (1996-1999)
Разработчик: id Software
Издатель: GT Interactive / Activision
Платформа: DOS / Windows / others
Code review: fabiensanglard.net (Quake 1)
Code review: fabiensanglard.net (Quake 3)
Тут писать особо нечего, вы и сами всё знаете. Знатная веха в создании полностью трёхмерных движков, без всяких хаков вроде 2.5D
Упомяну несколько интересных подробностей. Возможно, это первая коммерческая игра, скомпилированная компилятором с открытым исходным кодом (DJGPP for DOS, ранний порт gcc).
В игре был свой скриптовой язык “Quake C” (позже lcc у Quake 3). Он был встроен специально для того, чтобы игроки могли делать модификации. Это, вкупе с системой ресурсов PWAD, породило огромное сообщество моддеров.
В Quake 1 был инновационный механизм кэширования результатов шейдинга. Но после распространения 3D-ускорителей это потеряло смысл. Следующая игра от id, Rage, использовала эту же идею.
Кроме того, Quake был очень надёжным движком. Никаких глюков растра или обсчёта столкновений.
Quake / Исходники: github.com/id-Software/Quake
Quake 2 / Исходники: github.com/id-Software/Quake-2
Quake 3 / Исходники: github.com/id-Software/Quake-III-Arena
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
🇷🇺 Разбираешься в радиочипах, оптике и связи?
Забери до 1 000 000 рублей за свои инженерные навыки на турнире «Дронкон» 🇷🇺
«Сталинские Соколы» открывают регистрацию на 4-й Всероссийский турнир «Дронкон», который пройдет с 22 по 26 августа.
Турнир пройдет по направлению:
- Инженерное дело: навыки программирования, сборка электронного оборудования, беспроводная связь, оптические системы + стратегия «Битва Дронов»;
Призовой фонд для победителей:
🥇место – 1 000 000 рублей
🥈место – 700 000 рублей
🥉место – 500 000 рублей
Награда за 4-8 места - 100 000 рублей
Пройди заочный онлайн-этап и получи путевку на очный этап турнира в Республику Татарстан!
Перелет, питание, проживание - за счет организаторов.
🇷🇺 Подать заявку и узнать подробности 🇷🇺
Шпаргалка по синтаксису CRON
Формат записи:
* * * * * команда │ │ │ │ │ │ │ │ │ └─ День недели (0–6, где 0 = воскресенье) │ │ │ └─── Месяц (1–12) │ │ └───── День месяца (1–31) │ └─────── Час (0–23) └───────── Минуты (0–59)Специальные символы:
* — любое значение (например, каждая минута, каждый день).
, — перечисление (например, 1,15 = 1-е и 15-е число).
- — диапазон (например, 1-5 = с понедельника по пятницу).
/ — шаг (например, */10 = каждые 10 минут).
? — «неважно» (обычно в день месяца или день недели).
Примеры:
0 * * * * → запуск каждый час.
*/30 * * * * → каждые 30 минут.
0 0 * * * → в полночь каждый день.
0 8 * * 1 → каждый понедельник в 8:00.
0 18 15 * * → 15-го числа каждого месяца в 18:00.
Специальные строки:
@reboot → запуск при старте системы.
@hourly → каждый час.
@midnight → каждый день в полночь.
@monthly → каждый месяц в полночь 1-го числа.
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @BookflowRedox - это операционная система, написанная полностью на Rust. Проект вдохновлён принципами Unix, но стремится к более безопасной и современной архитектуре. В Redox используются микроядерный подход, драйверы и сервисы запускаются в пространстве пользователя, что уменьшает поверхность атак и повышает стабильность.
Кроме ядра, экосистема включает файловую систему TFS, собственный дисплейный сервер Orbital и набор утилит. Разработчики делают упор на безопасные абстракции Rust и минимизацию использования небезопасного кода.
https://gitlab.redox-os.org/redox-os/redox
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Чтобы разобраться с правами доступа к файлам в Linux, нам нужно понять, что такое Ownership и Permission.
Ownership
Каждому файлу или каталогу присваивается три типа прав собственности:
🔹Owner: Владелец - это пользователь, создавший файл или каталог.
🔹Group (группа): В группе может быть несколько пользователей. Все пользователи в группе имеют одинаковые разрешения на доступ к файлу или каталогу.
🔹Other: Другие - это пользователи, которые не являются владельцами или членами группы.
Permission
Существует только три типа разрешений для файла или каталога:
🔹Read (r): Разрешение на чтение позволяет пользователю читать файл.
🔹Write (w): Разрешение на запись позволяет пользователю изменять содержимое файла.
🔹Execute (x): Разрешение execute позволяет выполнять файл.
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Что такое SSO — единый вход?
SSO, или Single Sign-On, — это схема аутентификации, которая позволяет пользователю входить в разные системы с помощью одной учётной записи.
На схеме ниже показано, как работает SSO.
Шаг 1. Пользователь открывает Gmail или другой почтовый сервис. Gmail обнаруживает, что пользователь не авторизован, и перенаправляет его на сервер аутентификации SSO. Сервер также определяет, что пользователь ещё не вошёл в систему, поэтому перенаправляет его на страницу входа SSO, где пользователь вводит свои учётные данные.
Шаги 2–3. Сервер аутентификации SSO проверяет учётные данные, создаёт глобальную пользовательскую сессию и формирует токен.
Шаги 4–7. Gmail отправляет токен на сервер аутентификации SSO для проверки. Сервер регистрирует систему Gmail и возвращает ответ «токен действителен». После этого Gmail предоставляет пользователю доступ к защищённому ресурсу.
Шаг 8. Из Gmail пользователь переходит на другой сайт Google, например YouTube.
Шаги 9–10. YouTube обнаруживает, что пользователь не авторизован, и запрашивает аутентификацию. Сервер SSO определяет, что пользователь уже вошёл в систему, и возвращает токен.
Шаги 11–14. YouTube отправляет токен на сервер аутентификации SSO для проверки. Сервер регистрирует систему YouTube и возвращает ответ «токен действителен». После этого YouTube предоставляет пользователю доступ к защищённому ресурсу.
Процесс завершён: пользователь получает доступ к своему аккаунту без повторного ввода логина и пароля.
Теперь ваша очередь:
Вопрос 1. Реализовывали ли вы SSO в своих проектах? Какая часть оказалась самой сложной?
Вопрос 2. Какой способ входа вам нравится больше всего и почему?
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
Чем отличаются друг от друга блокировки баз данных?
В управлении базами данных блокировки — это механизмы, которые предотвращают одновременный доступ к данным, обеспечивая их целостность и согласованность.
Основные типы блокировок:
🔴Shared Lock: позволяет нескольким транзакциям одновременно читать ресурс, но не модифицировать его
🔴Exclusive Lock: позволяет транзакции как читать, так и модифицировать ресурс
🔴 Update Lock: используется для предотвращения взаимоблокировки, когда транзакция намеревается обновить ресурс
🔴 Schema Lock: используется для защиты структуры объектов базы данных
🔴 Bulk Update Lock: используется во время массовых вставок
🔴 Key-Range Lock: используется в индексированных данных для предотвращения фантомных чтений
🔴 Row-Level Lock: блокирует конкретную строку в таблице
🔴 Page-Level Lock: блокирует конкретную страницу (фиксированный блок данных) в базе данных
🔴 Table-Level Lock: блокирует всю таблицу
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
АВК-6: Персональный Аналоговый Компьютер
Итак, перед нами персональный аналоговый компьютер АВК-6.
Аналоговые вычислительные машины в 60-70-е годы были способны в реальном времени решать системы дифференциальных уравнений до 60 порядка и выше, обеспечивая эквивалентное быстродействие в сотни миллионов операций в секунду, в то время пока цифровые ЭВМ только набирали обороты. Советская и зарубежная промышленность активно выпускала большие и малые аналоговые компьютеры и АВК-6 в этой истории — вершина развития настольных аналоговых компьютеров, удостоенная множества наград в СССР и за рубежом.
Я с детства мечтал заполучить АВК-6 и вот наконец могу провести на нем различные эксперименты, попытаться построить аттракторы, а главное — подтвердить миф о том может ли аналоговый компьютер использоваться как синтезатор.
https://habr.com/ru/companies/timeweb/articles/1052834/
♻️ Сделай репост, чтобы помочь другим.
📲 Мы в MAX
👉 @Bookflow
