Типичный бэкенд
Photo
Фронтенд и бэкенд больше не будут общаться как прежде: создаём конструктор сценариев на базе Backend Driven UI
Цикл продуктовой разработки часто напоминает весы: с одной стороны, системное проектирование, подбор основополагающих инструментов, масштабные рефакторинги. С другой — совокупность локальных решений, принимаемых для точечных улучшений в системе. И самое сложное тут: соблюдать баланс. Как понять, когда имеет смысл вмешаться «хирургически», а когда — предпочесть вместо конкретной проблемы решить (или предотвратить) целый класс проблем?
Иногда нащупать границу между «масштабом» и «целесообразностью» получается почти что случайно. Однажды мы в Сравни подступились к переделке чата в нашем мобильном приложении, и на старте расценивали задачу как «ещё один рядовой продуктовый кейс». Но планы по модификации фичи быстро переросли в создание универсального инструмента: конструктора сценариев на базе Backend Driven UI.
В итоге мы не просто заменили чат более удобной альтернативой, а в целом научились гибко управлять фронтендом приложения. Со всеми сопутствующими плюсами как для бизнеса, так и для самих разработчиков (теперь, чтобы реализовать некоторые изменения на экранах, даже не обязательно быть фронтендером или мобильным разработчиком!).
Подробности о нашем сценарном BDUI-движке — этапах его создания, вариантах использования и нюансах технического устройства — читайте под катом.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Цикл продуктовой разработки часто напоминает весы: с одной стороны, системное проектирование, подбор основополагающих инструментов, масштабные рефакторинги. С другой — совокупность локальных решений, принимаемых для точечных улучшений в системе. И самое сложное тут: соблюдать баланс. Как понять, когда имеет смысл вмешаться «хирургически», а когда — предпочесть вместо конкретной проблемы решить (или предотвратить) целый класс проблем?
Иногда нащупать границу между «масштабом» и «целесообразностью» получается почти что случайно. Однажды мы в Сравни подступились к переделке чата в нашем мобильном приложении, и на старте расценивали задачу как «ещё один рядовой продуктовый кейс». Но планы по модификации фичи быстро переросли в создание универсального инструмента: конструктора сценариев на базе Backend Driven UI.
В итоге мы не просто заменили чат более удобной альтернативой, а в целом научились гибко управлять фронтендом приложения. Со всеми сопутствующими плюсами как для бизнеса, так и для самих разработчиков (теперь, чтобы реализовать некоторые изменения на экранах, даже не обязательно быть фронтендером или мобильным разработчиком!).
Подробности о нашем сценарном BDUI-движке — этапах его создания, вариантах использования и нюансах технического устройства — читайте под катом.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Типичный бэкенд
Photo
Часть 1: 100K юзеров за 3 дня — что сломалось
Привет, Хабр!
В этой статье — история запуска Telegram Mini App, куда за трое суток пришло 100.000 реальных пользователей.
Покажу, как мы масштабировали Node.js приложения на многоядерных серверах, увеличивали RPS в 10 раз, боролись с N+1 проблемой в MongoDB и снижали нагрузку на CPU. А ещё расскажу как мы быстро настроили мониторинг через Grafana, подключили Cloudflare и интегрировали Sentry. Поделюсь практическими инсайтами о том, на что стоит обращать внимание в первую очередь, и как эти инструменты помогли нам оперативно находить узкие места и устранять сбои в реальном времени. Всё, о чём будет в этой статье, основано на том, что действительно сработало. Кроме того, расскажу, какие моменты мы упустили до запуска.
Это разбор с цифрами, графиками и практическими выводами. Он может сэкономить вам время, нервы и деньги, если вы готовитесь к запуску Telegram Mini App или просто работаете с Node.js-приложениями, которые могут оказаться под серьёзной нагрузкой.
Это первая часть истории — про то, как мы готовились к запуску, что предусматривали и на что делали ставку.
Во второй части будет про то, что именно сломалось первым после релиза, как мы это чинили и какие решения приняли, чтобы приложение продолжало работать под нагрузкой.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Привет, Хабр!
В этой статье — история запуска Telegram Mini App, куда за трое суток пришло 100.000 реальных пользователей.
Покажу, как мы масштабировали Node.js приложения на многоядерных серверах, увеличивали RPS в 10 раз, боролись с N+1 проблемой в MongoDB и снижали нагрузку на CPU. А ещё расскажу как мы быстро настроили мониторинг через Grafana, подключили Cloudflare и интегрировали Sentry. Поделюсь практическими инсайтами о том, на что стоит обращать внимание в первую очередь, и как эти инструменты помогли нам оперативно находить узкие места и устранять сбои в реальном времени. Всё, о чём будет в этой статье, основано на том, что действительно сработало. Кроме того, расскажу, какие моменты мы упустили до запуска.
Это разбор с цифрами, графиками и практическими выводами. Он может сэкономить вам время, нервы и деньги, если вы готовитесь к запуску Telegram Mini App или просто работаете с Node.js-приложениями, которые могут оказаться под серьёзной нагрузкой.
Это первая часть истории — про то, как мы готовились к запуску, что предусматривали и на что делали ставку.
Во второй части будет про то, что именно сломалось первым после релиза, как мы это чинили и какие решения приняли, чтобы приложение продолжало работать под нагрузкой.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
6 советов, которые реально прокачают навыки работы с Docker
Шесть практик, которые прокачают навыки работы с Docker: минимизация образов, ручная сборка, sandbox-подход, нестандартная контейнеризация и отказ от Docker CLI.
— Читать дальше «6 советов, которые реально прокачают навыки работы с Docker»
#nodejs
@backend_tproger | Другие наши каналы
Шесть практик, которые прокачают навыки работы с Docker: минимизация образов, ручная сборка, sandbox-подход, нестандартная контейнеризация и отказ от Docker CLI.
— Читать дальше «6 советов, которые реально прокачают навыки работы с Docker»
#nodejs
@backend_tproger | Другие наши каналы
Как отправлять email из кода: nodemailer, SMTP и HTML-письма
Как отправлять email из кода. Показываем, как отправлять письма через Nodemailer, SMTP и HTML. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
— Читать дальше «Как отправлять email из кода: nodemailer, SMTP и HTML-письма»
#nodejs
@backend_tproger | Другие наши каналы
Как отправлять email из кода. Показываем, как отправлять письма через Nodemailer, SMTP и HTML. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
— Читать дальше «Как отправлять email из кода: nodemailer, SMTP и HTML-письма»
#nodejs
@backend_tproger | Другие наши каналы
Tproger
Как отправлять email из кода - Nodemailer, SMTP и HTML-письма - Tproger
Как отправлять email из кода. Показываем, как отправлять письма через Nodemailer, SMTP и HTML. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger
Типичный бэкенд
Photo
100K юзеров за 3 дня — что сломалось после релиза
Привет, Хабр!
В этой статье — история запуска Telegram Mini App, куда за трое суток пришло 100.000 реальных пользователей.
Покажу, как мы масштабировали Node.js приложения на многоядерных серверах, увеличивали RPS в 10 раз, боролись с N+1 проблемой в MongoDB и снижали нагрузку на CPU. А ещё расскажу как мы быстро настроили мониторинг через Grafana, подключили Cloudflare и интегрировали Sentry. Поделюсь практическими инсайтами о том, на что стоит обращать внимание в первую очередь, и как эти инструменты помогли нам оперативно находить узкие места и устранять сбои в реальном времени. Всё, о чём будет в этой статье, основано на том, что действительно сработало. Кроме того, расскажу, какие моменты мы упустили до запуска.
Это разбор с цифрами, графиками и практическими выводами. Он может сэкономить вам время, нервы и деньги, если вы готовитесь к запуску Telegram Mini App или просто работаете с Node.js-приложениями, которые могут оказаться под серьёзной нагрузкой.
Это вторая часть истории — про то, как мы запустились и что сломалось первым после релиза. Тут будет про то, как мы это чинили и какие решения приняли, чтобы приложение продолжало работать под нагрузкой.
Первая часть про подготовку к запуску доступна здесь.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Привет, Хабр!
В этой статье — история запуска Telegram Mini App, куда за трое суток пришло 100.000 реальных пользователей.
Покажу, как мы масштабировали Node.js приложения на многоядерных серверах, увеличивали RPS в 10 раз, боролись с N+1 проблемой в MongoDB и снижали нагрузку на CPU. А ещё расскажу как мы быстро настроили мониторинг через Grafana, подключили Cloudflare и интегрировали Sentry. Поделюсь практическими инсайтами о том, на что стоит обращать внимание в первую очередь, и как эти инструменты помогли нам оперативно находить узкие места и устранять сбои в реальном времени. Всё, о чём будет в этой статье, основано на том, что действительно сработало. Кроме того, расскажу, какие моменты мы упустили до запуска.
Это разбор с цифрами, графиками и практическими выводами. Он может сэкономить вам время, нервы и деньги, если вы готовитесь к запуску Telegram Mini App или просто работаете с Node.js-приложениями, которые могут оказаться под серьёзной нагрузкой.
Это вторая часть истории — про то, как мы запустились и что сломалось первым после релиза. Тут будет про то, как мы это чинили и какие решения приняли, чтобы приложение продолжало работать под нагрузкой.
Первая часть про подготовку к запуску доступна здесь.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
CORS от А до Я: история, ошибки и грамотная настройка
Что такое CORS, почему браузер блокирует запросы и как избежать типичных ошибок. Простое объяснение для разработчиков + рабочие решения.
— Читать дальше «CORS от А до Я: история, ошибки и грамотная настройка»
#nodejs
@backend_tproger | Другие наши каналы
Что такое CORS, почему браузер блокирует запросы и как избежать типичных ошибок. Простое объяснение для разработчиков + рабочие решения.
— Читать дальше «CORS от А до Я: история, ошибки и грамотная настройка»
#nodejs
@backend_tproger | Другие наши каналы
JS SDK Битрикс 24: что под капотом и какие планы
Привет! Меня зовут Сергей Востриков, я руковожу направлением Маркет и интеграций в Битрикс. Моя команда развивает решения для разработчиков тиражных решений и индивидуальных кастомизаций. Сегодня я хочу рассказать про наш новый официальный SDK под JavaScript для работы с REST API Битрикс24. Он опубликован в виде отдельного репозитория на Github и распространяется на условиях лицензии MIT.
В этом посте — о принципах разработки SDK, наших планах по его обновлению и том, как можно повлиять на развитие инструмента.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Привет! Меня зовут Сергей Востриков, я руковожу направлением Маркет и интеграций в Битрикс. Моя команда развивает решения для разработчиков тиражных решений и индивидуальных кастомизаций. Сегодня я хочу рассказать про наш новый официальный SDK под JavaScript для работы с REST API Битрикс24. Он опубликован в виде отдельного репозитория на Github и распространяется на условиях лицензии MIT.
В этом посте — о принципах разработки SDK, наших планах по его обновлению и том, как можно повлиять на развитие инструмента.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Почему ваше приложение тормозит: архитектурные bottlenecks, которые никто не замечает
Как найти и устранить архитектурные bottleneck'и: причины тормозов, типовые ошибки и пошаговая методика диагностики.
— Читать дальше «Почему ваше приложение тормозит: архитектурные bottlenecks, которые никто не замечает»
#nodejs
@backend_tproger | Другие наши каналы
Как найти и устранить архитектурные bottleneck'и: причины тормозов, типовые ошибки и пошаговая методика диагностики.
— Читать дальше «Почему ваше приложение тормозит: архитектурные bottlenecks, которые никто не замечает»
#nodejs
@backend_tproger | Другие наши каналы
Tproger
Почему ваше приложение тормозит: архитектурные bottlenecks, которые никто не замечает
Как найти и устранить архитектурные bottleneck'и: причины тормозов, типовые ошибки и пошаговая методика диагностики.
Как мы строим агрегатор финансовых продуктов в Казахстане: история Finance.kz
Как из обычного сайта-витрины вырастить финтех-продукт? Расскажу, как строится агрегатор финансовых продуктов в Казахстане.
— Читать дальше «Как мы строим агрегатор финансовых продуктов в Казахстане: история Finance.kz»
#nodejs
@backend_tproger | Другие наши каналы
Как из обычного сайта-витрины вырастить финтех-продукт? Расскажу, как строится агрегатор финансовых продуктов в Казахстане.
— Читать дальше «Как мы строим агрегатор финансовых продуктов в Казахстане: история Finance.kz»
#nodejs
@backend_tproger | Другие наши каналы
Playwright + VS Code: Установка и первый автотест за 15 минут
Гайд для начинающих: как настроить среду, установить Playwright и написать первый тест. Пошаговая инструкция с примерами кода и пояснениями.
— Читать дальше «Playwright + VS Code: Установка и первый автотест за 15 минут»
#nodejs
@backend_tproger | Другие наши каналы
Гайд для начинающих: как настроить среду, установить Playwright и написать первый тест. Пошаговая инструкция с примерами кода и пояснениями.
— Читать дальше «Playwright + VS Code: Установка и первый автотест за 15 минут»
#nodejs
@backend_tproger | Другие наши каналы
Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов
Эпохи развития программирования в России и в мире. Какие стадии прошли разработчики и к чему пришли в настоящий момент. Прогнозы на будущее.
— Читать дальше «Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов»
#nodejs
@backend_tproger | Другие наши каналы
Эпохи развития программирования в России и в мире. Какие стадии прошли разработчики и к чему пришли в настоящий момент. Прогнозы на будущее.
— Читать дальше «Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов»
#nodejs
@backend_tproger | Другие наши каналы
Tproger
Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов
Эпохи развития программирования в России и в мире. Какие стадии прошли разработчики и к чему пришли в настоящий момент. Прогнозы на будущее.
n8n: установка, настройка и интеграция с Python, Node.JS и PHP
Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.
— Читать дальше «n8n: установка, настройка и интеграция с Python, Node.JS и PHP»
#nodejs
@backend_tproger | Другие наши каналы
Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.
— Читать дальше «n8n: установка, настройка и интеграция с Python, Node.JS и PHP»
#nodejs
@backend_tproger | Другие наши каналы
Tproger
n8n: установка, настройка и интеграция с Python, Node.JS и PHP
Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.
Архитектура BFF (Backend for Frontend): зачем нужна прослойка
Что такое архитектура BFF. Показываем, зачем нужна прослойка Backend for Frontend. Рассматриваем преимущества и основные нюансы ✔ Tproger
— Читать дальше «Архитектура BFF (Backend for Frontend): зачем нужна прослойка»
#nodejs
@backend_tproger | Другие наши каналы
Что такое архитектура BFF. Показываем, зачем нужна прослойка Backend for Frontend. Рассматриваем преимущества и основные нюансы ✔ Tproger
— Читать дальше «Архитектура BFF (Backend for Frontend): зачем нужна прослойка»
#nodejs
@backend_tproger | Другие наши каналы
PostgreSQL Antipatterns: валим «слона» — highload на ровном месте
Сегодняшняя тема посвящена нелегким взаимоотношениям клиентского приложения и сервера PostgreSQL: как на ровном месте, неудачной архитектурой приложения, можно обеспечить себе хронические проблемы производительности.
Рассмотрим классические ситуации, когда разработчики начинают жаловаться на производительность БД - а виновата-то и не она!
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Сегодняшняя тема посвящена нелегким взаимоотношениям клиентского приложения и сервера PostgreSQL: как на ровном месте, неудачной архитектурой приложения, можно обеспечить себе хронические проблемы производительности.
Рассмотрим классические ситуации, когда разработчики начинают жаловаться на производительность БД - а виновата-то и не она!
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Bright Data запустила платформу для массового сбора данных с любых сайтов: теперь можно строить пайплайны для ИИ и BI без лишней рутины
Bright Data запустила API и платформу для сбора данных с любых сайтов: Unlocker, Browser, SERP и Crawl API, готовые для ИИ и BI пайплайнов, с 150+ млн прокси по всему миру.
— Читать дальше «Bright Data запустила платформу для массового сбора данных с любых сайтов: теперь можно строить пайплайны для ИИ и BI без лишней рутины»
#nodejs
@backend_tproger | Другие наши каналы
Bright Data запустила API и платформу для сбора данных с любых сайтов: Unlocker, Browser, SERP и Crawl API, готовые для ИИ и BI пайплайнов, с 150+ млн прокси по всему миру.
— Читать дальше «Bright Data запустила платформу для массового сбора данных с любых сайтов: теперь можно строить пайплайны для ИИ и BI без лишней рутины»
#nodejs
@backend_tproger | Другие наши каналы
Как я подружил Yandex Cloud и Gemini API без миграции на зарубежные сервера
Когда я начинал писать Node.js-сервис, который должен был интегрироваться с LLM-моделью, я уже понимал, что доступ к некоторым зарубежным API из России может быть проблемой. Именно поэтому моим первоначальным выбором была модель от Yandex Cloud — Yandex GPT.
Но после того как я и мои товарищи немного пообщались с ней, стало ясно, что Yandex GPT нам не подходит. Её ответы были слишком неестественными, «нечеловеческими» — особенно это было заметно в нашем конкретном кейсе. Поэтому пришлось искать альтернативу среди зарубежных моделей. Вариант обучать собственную модель отпал сразу — опыта у меня в этом не было, а искать кого-то, кто сможет это сделать, не было времени, так как хотелось быстро запустить. Так выбор пал на Gemini API от Google, о котором было много позитивных отзывов.
Однако это означало, что нужно было как-то решить проблему доступа из России, ведь мой сервис размещён именно в Yandex Cloud.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Когда я начинал писать Node.js-сервис, который должен был интегрироваться с LLM-моделью, я уже понимал, что доступ к некоторым зарубежным API из России может быть проблемой. Именно поэтому моим первоначальным выбором была модель от Yandex Cloud — Yandex GPT.
Но после того как я и мои товарищи немного пообщались с ней, стало ясно, что Yandex GPT нам не подходит. Её ответы были слишком неестественными, «нечеловеческими» — особенно это было заметно в нашем конкретном кейсе. Поэтому пришлось искать альтернативу среди зарубежных моделей. Вариант обучать собственную модель отпал сразу — опыта у меня в этом не было, а искать кого-то, кто сможет это сделать, не было времени, так как хотелось быстро запустить. Так выбор пал на Gemini API от Google, о котором было много позитивных отзывов.
Однако это означало, что нужно было как-то решить проблему доступа из России, ведь мой сервис размещён именно в Yandex Cloud.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Выбираем российский хостинг в 2025: подборка на любой запрос
В этом материале — семь проверенных российских хостингов для разных задач: от стартапа до корпоративного проекта. Каждый прошел тестирование на аптайм (время бесперебойной работы), безопасность и доступность поддержки.
— Читать дальше «Выбираем российский хостинг в 2025: подборка на любой запрос»
#nodejs
@backend_tproger | Другие наши каналы
В этом материале — семь проверенных российских хостингов для разных задач: от стартапа до корпоративного проекта. Каждый прошел тестирование на аптайм (время бесперебойной работы), безопасность и доступность поддержки.
— Читать дальше «Выбираем российский хостинг в 2025: подборка на любой запрос»
#nodejs
@backend_tproger | Другие наши каналы
Tproger
Выбираем российский хостинг в 2025: подборка на любой запрос
В этом материале — семь проверенных российских хостингов для разных задач: от стартапа до корпоративного проекта. Каждый прошел тестирование на аптайм (время бесперебойной работы), безопасность и доступность поддержки.
[Перевод] Паттерны современного Node.js (2025)
Node.js претерпел впечатляющее преобразование с момента своего появления. Если вы пишете на Node.js уже несколько лет, то, вероятно, сами наблюдали эту эволюцию - от эпохи колбэков и повсеместного использования CommonJS до современного, чистого и стандартизированного подхода к разработке.
Изменения затронули не только внешний вид - это фундаментальный сдвиг в самом подходе к серверной разработке на JavaScript. Современный Node.js опирается на веб-стандарты, снижает зависимость от внешних библиотек и предлагает более понятный и приятный опыт для разработчиков.
Давайте разберёмся, в чём заключаются эти изменения и почему они важны для ваших приложений в 2025 году.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Node.js претерпел впечатляющее преобразование с момента своего появления. Если вы пишете на Node.js уже несколько лет, то, вероятно, сами наблюдали эту эволюцию - от эпохи колбэков и повсеместного использования CommonJS до современного, чистого и стандартизированного подхода к разработке.
Изменения затронули не только внешний вид - это фундаментальный сдвиг в самом подходе к серверной разработке на JavaScript. Современный Node.js опирается на веб-стандарты, снижает зависимость от внешних библиотек и предлагает более понятный и приятный опыт для разработчиков.
Давайте разберёмся, в чём заключаются эти изменения и почему они важны для ваших приложений в 2025 году.
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Лучшие статьи Хабра в июле 2025 года
С возвращением в ежемесячный дайджест Хабра! Прошло несколько месяцев с последнего выпуска, и я захотел узнать изменилось ли что-нибудь за это время на платформе?
Посмотрим, какие темы стали трендовыми в июле 2025, как поменялись интересы аудитории и кто из авторов оказался в центре внимания.
Этот выпуск особенный: с марта прошло четыре месяца, и важно понять - стал ли Хабр более техническим, более «историко-социальным» или окончательно ушёл в сторону лайфстайл-контента?
Внутри:
✅ Методология и критерии
✅ Топ по просмотрам, комментариям, закладкам и рейтингу
✅ Скрытые жемчужины
✅ Лучшие авторы месяца
✅ И аналитика главных трендов месяца.
Инфоцыгане тут?
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
С возвращением в ежемесячный дайджест Хабра! Прошло несколько месяцев с последнего выпуска, и я захотел узнать изменилось ли что-нибудь за это время на платформе?
Посмотрим, какие темы стали трендовыми в июле 2025, как поменялись интересы аудитории и кто из авторов оказался в центре внимания.
Этот выпуск особенный: с марта прошло четыре месяца, и важно понять - стал ли Хабр более техническим, более «историко-социальным» или окончательно ушёл в сторону лайфстайл-контента?
Внутри:
✅ Методология и критерии
✅ Топ по просмотрам, комментариям, закладкам и рейтингу
✅ Скрытые жемчужины
✅ Лучшие авторы месяца
✅ И аналитика главных трендов месяца.
Инфоцыгане тут?
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Как порядок свойств убивает JavaScript?
Привет, Хабаровчане! Во второй статье, хочу поделиться наблюдениями из документации V8 и немного нудной информацией для многих :)
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы
Привет, Хабаровчане! Во второй статье, хочу поделиться наблюдениями из документации V8 и немного нудной информацией для многих :)
Читать далее
Читать дальше
#nodejs
@backend_tproger | Другие наши каналы