Кто первым поймёт процессы и метрики — тот рулит командой🏆
Да, иногда IT-менеджеры тоже совершают ошибки. Но у нас ты научишься их не повторять.
🍁 В сентябре стартуют курсы по управлению в IT-управление, на которых ты:
— поймёшь, почему одни команды зарабатывают миллионы, а другие тонут в баг-трекерах;
— научишься управлять людьми, процессами и дедлайнами, а не только кодом;
— получишь реальные инструменты, которые работают с первого дня, а не в теории из книжек.
Если ты не решаешь, кто решает — решают за тебя:
Product Manager IT-проектов
Delivery Manager
IT-Recruiter
Руководитель IT проектов
Оптимизация бизнес-процессов
Проект сам себя не прокачает, а ты — да. Записывайся и перестань наблюдать! ⌚
Да, иногда IT-менеджеры тоже совершают ошибки. Но у нас ты научишься их не повторять.
— поймёшь, почему одни команды зарабатывают миллионы, а другие тонут в баг-трекерах;
— научишься управлять людьми, процессами и дедлайнами, а не только кодом;
— получишь реальные инструменты, которые работают с первого дня, а не в теории из книжек.
Если ты не решаешь, кто решает — решают за тебя:
Product Manager IT-проектов
Delivery Manager
IT-Recruiter
Руководитель IT проектов
Оптимизация бизнес-процессов
Проект сам себя не прокачает, а ты — да. Записывайся и перестань наблюдать! ⌚
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS — это не только Swift и Xcode. Это контроль версий, автоматизация, тестирование и магия, которая превращает код в реальные приложения. Не отставай — рынок не ждёт.
❤️ Собрали топовые ресурсы для всех, кто хочет стать разработчиками iOS и не тратить годы на проб и ошибок:
Рекомендуемые книги📚
“Swift Programming: The Big Nerd Ranch Guide”
“iOS Programming: The Big Nerd Ranch Guide”
“Test-Driven iOS Development”
“Pro Swift”
“SwiftUI by Tutorials”
“iOS Unit Testing by Example”
Рекомендуемые статьи🖥
SwiftUI: Всё, что вам нужно знать о модификаторе containerRelativeFrame (и немного больше)
Подробно рассмотрим модификатор containerRelativeFrame, его определение, правила компоновки, примеры использования и важные соображения.
Вызов защищенного API из iOS-приложения на Swift
Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.
Добавляем объём в visionOS-приложение
Разбираемся, как использовать Volume для создания иммерсивного 3D-опыта в visionOS.
Под капотом у пользовательского интерфейса SwiftUI — Детальный разбор: UIKit
Предоставим вам полный обзор того, как UIKit и SwiftUI устроены под капотом. Сначала мы обсудим UIKit, а в следующей части перейдем к SwiftUI.
Реализуем машинное обучение на сервере с помощью Swift
В этом руководстве покажем, как работать с моделью машинного обучения на сервере Vapor с помощью Swift.
Электронные ресурсыℹ️
Swift.org — документация, руководства, актуальные изменения в языке
Ray Wenderlich iOS Tutorials — пошаговые руководства для разработчиков всех уровней
Hacking with Swift — крутые проекты и примеры кода
Apple Developer — официальные туториалы и гайды
Записи полезных вебинаров▶️
Лучшие практики для виджетов iOS 2025 —рассмотрим, что представляют собой виджеты iOS, как создавать и настраивать, что изменилось после WWDC 2025.
Пишем простое приложение на SwiftUI + Combine — научимся создавать проект для iOS приложений, базовые конструкции дял пользовательского интерфейса.
Создаем галерею изображений на SwiftUI — покажем, как с помощью данной технологии сделать простое приложение для просмотра галереи изображений.
SwiftData: Создаём локальное хранилище для iOS-приложений — как спроектировать и написать слой хранилища на SwiftData и как сделать работу с хранилищем эффективной, в том числе и в фоне.
Machine Learning в iOS: CoreML, CreateML, Vision — демонстрация обучение нейронки с помощью CreateML. Возможности CoreML и Vision.
Устройство многопоточности в iOS: Actor и async/await — устройство структурированной многопоточности, механизмы синхронизации.
Не оставайся в 2025 году с устаревшими туториалами. Записывайся⤵️
iOS Developer🐗 iOS Developer. Professional
— количество мест ограничено, пока другие тянут баги на продакшене, ты будешь делать настоящие приложения.
Рекомендуемые книги
“Swift Programming: The Big Nerd Ranch Guide”
“iOS Programming: The Big Nerd Ranch Guide”
“Test-Driven iOS Development”
“Pro Swift”
“SwiftUI by Tutorials”
“iOS Unit Testing by Example”
Рекомендуемые статьи
SwiftUI: Всё, что вам нужно знать о модификаторе containerRelativeFrame (и немного больше)
Подробно рассмотрим модификатор containerRelativeFrame, его определение, правила компоновки, примеры использования и важные соображения.
Вызов защищенного API из iOS-приложения на Swift
Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.
Добавляем объём в visionOS-приложение
Разбираемся, как использовать Volume для создания иммерсивного 3D-опыта в visionOS.
Под капотом у пользовательского интерфейса SwiftUI — Детальный разбор: UIKit
Предоставим вам полный обзор того, как UIKit и SwiftUI устроены под капотом. Сначала мы обсудим UIKit, а в следующей части перейдем к SwiftUI.
Реализуем машинное обучение на сервере с помощью Swift
В этом руководстве покажем, как работать с моделью машинного обучения на сервере Vapor с помощью Swift.
Электронные ресурсы
Swift.org — документация, руководства, актуальные изменения в языке
Ray Wenderlich iOS Tutorials — пошаговые руководства для разработчиков всех уровней
Hacking with Swift — крутые проекты и примеры кода
Apple Developer — официальные туториалы и гайды
Записи полезных вебинаров
Лучшие практики для виджетов iOS 2025 —рассмотрим, что представляют собой виджеты iOS, как создавать и настраивать, что изменилось после WWDC 2025.
Пишем простое приложение на SwiftUI + Combine — научимся создавать проект для iOS приложений, базовые конструкции дял пользовательского интерфейса.
Создаем галерею изображений на SwiftUI — покажем, как с помощью данной технологии сделать простое приложение для просмотра галереи изображений.
SwiftData: Создаём локальное хранилище для iOS-приложений — как спроектировать и написать слой хранилища на SwiftData и как сделать работу с хранилищем эффективной, в том числе и в фоне.
Machine Learning в iOS: CoreML, CreateML, Vision — демонстрация обучение нейронки с помощью CreateML. Возможности CoreML и Vision.
Устройство многопоточности в iOS: Actor и async/await — устройство структурированной многопоточности, механизмы синхронизации.
Не оставайся в 2025 году с устаревшими туториалами. Записывайся
iOS Developer
— количество мест ограничено, пока другие тянут баги на продакшене, ты будешь делать настоящие приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🙏1
Audio
Скилы сами себя не прокачают — действуй 🔛
В новом отзыве Светлана делится, как решила освоить новые навыки и повысить уверенность в своей профессии.
Но вот что интересно: она не рекомендует курс тем, кто не готов к настоящей практике.
И вот почему:
🎧 Слушай её отзыв, включайся и прокачивай себя.
Записывайся на курс «Системный аналитик. Advanced» и окунись в мир системного анализа с реальными задачами.
🔋 Осталось мало мест — действуй, пока они есть!
В новом отзыве Светлана делится, как решила освоить новые навыки и повысить уверенность в своей профессии.
Но вот что интересно: она не рекомендует курс тем, кто не готов к настоящей практике.
И вот почему:
📚 Применение теории на практике = закрепление знаний.
🎓 Проверка заданий с полными комментариями — без фокусов, только честные советы.
🏆 Прежде чем брать курс, Светлана советует: готовься! Это не для тех, кто хочет просто слушать лекции. Это для тех, кто хочет реальные изменения.
Записывайся на курс «Системный аналитик. Advanced» и окунись в мир системного анализа с реальными задачами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Но есть проблема — в сентябре будет такой шквал вебинаров, что если ты не успеешь зарегистрироваться сейчас, то потом будет тяжело успеть за всеми!
Это не просто лекции — это реальные инсайды, которые помогут тебе стать профи в своей области.
1 сентября
Практические методы построения рекомендательных систем
курс «Machine Learning. Professional»
2 сентября
Тестирование Spring приложений. Интеграционные тесты с контекстом. Тестирование слоя репозиториев и сервисов
курс «Разработчик на Spring Framework»
Место ClickHouse в System Design
курс «ClickHouse для инженеров и архитекторов БД»
3 сентября
Интерфейсы в Golang изнутри
курс «Golang Developer. Professional»
Как разбудить пассивных сотрудников и внедрить коллективную ответственность по стандартам PMP
курс «Руководитель IT проектов»
4 сентября
Введение в технический анализ: построение торговой стратегии
курс «ML для финансового анализа»
MLFlow - контроль над ML-экспериментами
курс «MLOps»
KPI для Delivery Manager: как измерить то, чего не видно
курс «Delivery Manager»
8 сентября
Основы FastAPI
курс «Python Developer. Professional»
9 сентября
Service Mesh: как перестать беспокоиться и начать управлять микросервисами
курс «DevOps практики и инструменты»
Вложенная виртуализация. Анализ памяти
курс «Компьютерная криминалистика»
Что нового в Spark 4.0
курс «Spark Developer»
10 сентября
Telegram-бот с нуля на Python: от теории к практике
курс «Python Developer»
Мощный функционал OpenSearch, доступный бесплатно
курс «Elastic/OpenSearch Advanced»
11 сентября
Подготовка к лайв-код интервью. Не leetcode'ом единым
курс «C# Developer. Professional»
Поддержка идиомы RAII средствами стандартной библиотеки С++
курс «C++ Developer. Basic»
15 сентября
Как смотреть на работу аналитика данных глазами заказчика
курс «Аналитик данных»
17 сентября
Система сбора информации о деятельности эмитентов облигаций
курс «Java Developer. Professional»
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Дайджест вебинаров OTUS 🎼
Собрали для вас подборку интересных и полезных онлайн-вебинаров по IT за неделю, которые можно посмотреть абсолютно бесплатно!
🟣 Что нового в .NET10 для разработчиков
Посмотрим что нового в runtime; с чем к нам приходит C#14, что за field, extension; и какие новинки могут быть интересны в MAUI, EF Core.
🟣 Практическое собеседование системного аналитика
Как проходят собеседования в 2025 году, сможете оценить свои знания и навыки.
🟣 Как восстановить RAID5 в Linux: пошагово и без паники
Учимся диагностировать и восстанавливать RAID5-массивы после сбоя диска.
🟣 Бизнес-аналитик и Системный аналитик: зачем нужны 2 роли?
Детально разберем разграничение зон ответственности этих двух ролей, решаемые задачи, акценты и ключевые результаты работы.
Посмотрим, что нужно развивать для каждой из этих ролей.
🟣 Оптимизация микросервисов с CQRS и Event Sourcing на .NET Aspire
Анализ ограничений традиционных микросервисов при высокой нагрузке.
Принципы CQRS (разделение команд и запросов) и Event Sourcing (хранение состояния как последовательности событий).
🟣 Проектирование архитектуры систем предприятия в интеграциях с 1С
Разберем, какие 1С-системы используют компании, как строить надежные интеграции и проектировать ИТ-ландшафт для легкой поддержки.
🟣 Разработка тест-кейсов на основе требований
Почему требования - это отправная точка и как с ними работать?
Техники трансформации требований в тест-кейсы
Практика и ловушки
Подпишись❤️ и будь в курсе самых свежих знаний в IT.
#otus #подборка
Собрали для вас подборку интересных и полезных онлайн-вебинаров по IT за неделю, которые можно посмотреть абсолютно бесплатно!
Посмотрим что нового в runtime; с чем к нам приходит C#14, что за field, extension; и какие новинки могут быть интересны в MAUI, EF Core.
Как проходят собеседования в 2025 году, сможете оценить свои знания и навыки.
Учимся диагностировать и восстанавливать RAID5-массивы после сбоя диска.
Детально разберем разграничение зон ответственности этих двух ролей, решаемые задачи, акценты и ключевые результаты работы.
Посмотрим, что нужно развивать для каждой из этих ролей.
Анализ ограничений традиционных микросервисов при высокой нагрузке.
Принципы CQRS (разделение команд и запросов) и Event Sourcing (хранение состояния как последовательности событий).
Разберем, какие 1С-системы используют компании, как строить надежные интеграции и проектировать ИТ-ландшафт для легкой поддержки.
Почему требования - это отправная точка и как с ними работать?
Техники трансформации требований в тест-кейсы
Практика и ловушки
Подпишись
#otus #подборка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
17 книг про управление в сфере IT, на которые вам следует обратить внимание 📚
Управление в сфере информационных технологий сопряжено с серьезными вызовами. Будь то навигация по сложной динамике стартапов или стремительное внедрение искусственного интеллекта и автоматизации — для неподготовленных руководителей это может оказаться непосильной задачей.
От признанных бестселлеров до малоизвестных жемчужин — читайте и сохраняйте🤫
Управление в сфере информационных технологий сопряжено с серьезными вызовами. Будь то навигация по сложной динамике стартапов или стремительное внедрение искусственного интеллекта и автоматизации — для неподготовленных руководителей это может оказаться непосильной задачей.
От признанных бестселлеров до малоизвестных жемчужин — читайте и сохраняйте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
– не втирают про «гарантированную работу»,
– не показывают «идеальные лекции» для рекламы,
– а просто честно разбирают, как устроена реальная работа в IT.
❤️ Скидка 10% на обучение на любой курс OTUS
Регистрируйтесь по ссылкам
25 августа (понедельник)
Разберём основы написания скриптов в Bash и научимся автоматизировать простые действия в Linux.
Участники поймут, что такое декораторы и как они работают, научатся создавать собственные декораторы и фабрики декораторов, а также узнают, как применять эти концепции для повышения гибкости и читаемости своего кода.
Участники получат готовый набор AI-инструментов и кейсы их внедрения — чтобы работать меньше, а решать больше.
На этом вебинаре мы трезво взглянем на реальность: почему на рынке столько переоценённых специалистов, как не перепутать уверенность с компетентностью и почему настоящие сеньоры иногда сомневаются в себе.
26 августа (вторник)
Научитесь создавать контейнеры, которые работают одинаково в dev и prod, практические советы по написанию Dockerfile без типичных ошибок.
Разберётесь в базовых критериях выбора и выполните простую реализацию REST и GraphQL в Spring Boot.
Устали гадать, почему тормозит API? Покажем, как построить систему, которая автоматически проследит путь от медленного HTTP-запроса до проблемного SQL в PostgreSQL — с точностью до миллисекунды и конкретной строки кода.
27 августа (среда)
Часто роль CTO туманна. На вебинаре разберем, какие обязанности и ответственность ждут технического директора в той или иной компании.
Поймете принципы работы Data Lakehouse на Iceberg и S3 и научитесь избегать типичных ошибок в работе.
Научитесь настраивать хранилище данных с поддержкой ACID-транзакций.
Узнаете, как правильно тестировать торговые стратегии, чтобы избежать типичных ошибок. Познакомитесь с инструментами для бэктестинга и сможете выбрать подходящий для своих задач.
28 августа (четверг)
Как работает Spark и чем он лучше аналогов, базовые операции с данными. Разберем пример решения задачи на Spark.
Сформируем рекомендации по выбору способа обработки ошибок на C++ в зависимости от особенностей проекта.
Мониторинг — это не просто красивые графики, это то, что помогает спать спокойно в проде. На вебинаре разберём, как собирать метрики и трейсы с приложений, визуализировать их в Grafana и оперативно реагировать на проблемы с помощью алертов.
#анонс #otus #вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня Linux празднует день рождения 🎂
25 августа 1991 года Линус Торвальдс выложил свой первый Linux-ядро.
🐧 Linux — это не только серверы и суперкомпьютеры, но и твоя любимая IDE, контейнеры Docker, облака и даже Android под капотом. Всё, что ты щёлкаешь мышкой, где-то внутри работает Linux.
На каком устройстве вы впервые встретились с Linux? Пишите в комментариях!
25 августа 1991 года Линус Торвальдс выложил свой первый Linux-ядро.
Любопытный факт: до сих пор ядро Linux развивается как open source — каждый может внести вклад и изменить мир технологий.
На каком устройстве вы впервые встретились с Linux? Пишите в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉4❤3
Хочешь быть мобильным разработчиком, который делает приложения, а не только смотрит видео в хостинге?
🔝 Cобрали топ статей, которые реально помогут тебе выйти за рамки Flutter-уроков “для чайников”:
➡️ Flutter: Исчерпывающее руководство по высокопроизводительному рендерингу Canvas’а
— хочешь, чтобы анимации летали и UI не тормозил? В этом руководстве предлагаем продвинутые подходы к созданию высокопроизводительных Flutter‑приложений на основе Canvas.
➡️ Наводим мосты между Flutter и нативными библиотеками
— общие принципы подключения внешних библиотек и кодогенерации для создания связываний dart-функции и классов и структур данных C.
➡️ Flutter Web и WebAssembly — ключ к тайной комнате
— обсудим некоторые аспекты взаимодействия Dart.Flutter-кода с WebAssembly-модулями.
➡️ Dart для бэкэндеров
— рассмотрим несколько решений для создания бэкэнда на Dart.
➡️ Реализация доступности веб-приложений с помощью Flutter
— рассмотрим, как поддержка доступности работает для приложений на Flutter, рендеринг которых выполняется на холсте.
➡️ Firestore и NoSQL — Основы структурирования данных
— дискуссия о нормализации и денормализации наших данных в NoSQL базе данных Firestore
Только для подписчиков🤫 на 3 дня открываем доступ к вебинарам курса ➡️ ЗАПИСИ ВЕБИНАРОВ
⚡ На курс действует 10% до конца августа — не теряй время, стань тем, кто пишет код, а не просто лайкает гайды.
— хочешь, чтобы анимации летали и UI не тормозил? В этом руководстве предлагаем продвинутые подходы к созданию высокопроизводительных Flutter‑приложений на основе Canvas.
— общие принципы подключения внешних библиотек и кодогенерации для создания связываний dart-функции и классов и структур данных C.
— обсудим некоторые аспекты взаимодействия Dart.Flutter-кода с WebAssembly-модулями.
— рассмотрим несколько решений для создания бэкэнда на Dart.
— рассмотрим, как поддержка доступности работает для приложений на Flutter, рендеринг которых выполняется на холсте.
— дискуссия о нормализации и денормализации наших данных в NoSQL базе данных Firestore
Только для подписчиков🤫
⚡ На курс действует 10% до конца августа — не теряй время, стань тем, кто пишет код, а не просто лайкает гайды.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Проверка HRBP: сможешь ли ты выжить в IT хаосе ❓
Давай честно: ты точно думаешь, что умеешь управлять людьми в IT?
Если кто-то говорит «ничего страшного», пока команда горит дедлайнами, а рекрутмент готовит 350 вакансий на 150 человек, — это не значит, что ты умеешь справляться.
Смотри наши карточки с реальными инсайтами из мира IT HRBP и проверь себя⤴️
Стань HRBP, которого боятся, но уважают.
➡️ Оставляй заявку на курс «IT HRBP» и забирай бонус ➖ чек-лист для оценки корпоративной культуры в вашей IT компании.
Давай честно: ты точно думаешь, что умеешь управлять людьми в IT?
Если кто-то говорит «ничего страшного», пока команда горит дедлайнами, а рекрутмент готовит 350 вакансий на 150 человек, — это не значит, что ты умеешь справляться.
Смотри наши карточки с реальными инсайтами из мира IT HRBP и проверь себя
Стань HRBP, которого боятся, но уважают.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как машинное обучение связано с AI?
🔤 🔤 — это основа всего современного искусственного интеллекта. Мы покажем, как использовать ML для создания мощных AI-моделей и какие знания стоит развивать сегодня.
🔜 26 августа в 18:00
🎙 Присоединяйтесь к вебинару
Преподаватель Мария Тихонова – PhD Computer Science, Senior Data Scientist и преподаватель ВШЭ.
Получите скидку на курс «Machine Learning. Basic»🛍
Преподаватель Мария Тихонова – PhD Computer Science, Senior Data Scientist и преподаватель ВШЭ.
Получите скидку на курс «Machine Learning. Basic»
Please open Telegram to view this post
VIEW IN TELEGRAM
Уже завтра можно быть на шаг впереди коллег — или остаться там же, где вчера
Бесплатные вебинары OTUS — это не лекции, а реальные навыки, которые сразу применяются в работе. Решаем задачи, которые никто в команде не даст.
Обсудим, зачем вообще нужна контейнеризация и как она работает на практике, особенности использования Docker именно для Python-приложений. Покажем хорошие практики написания Dockerfile и работы с Docker в команде.
Курс «Python Developer. Professional»
Для всех, кто хочет получить готовую практическую работу в портфолио и почувствовать, как JavaScript управляет интерфейсом.
Курс «JavaScript Developer. Basic»
Освоите ключевые подходы к созданию надёжных Kafka-приложений на Java. Научитесь эффективно управлять схемами данных в Schema Registry и оптимизировать производительность ваших систем.
Курс «Java Developer. Professional»
Устали гадать, почему тормозит API? Покажем, как построить систему, которая автоматически проследит путь от медленного HTTP-запроса до проблемного SQL в PostgreSQL — с точностью до миллисекунды и конкретной строки кода.
«PostgreSQL. Advanced»
Разберётесь в базовых критериях выбора и выполните простую реализацию REST и GraphQL в Spring Boot.
Курс «Разработчик на Spring Framework»
Разберёмся, что такое Maven и Gradle, зачем они нужны, как с их помощью управлять зависимостями, подключать библиотеки и настраивать окружение для автотестов.
«QA Automation Engineer»
Разберем основные элементы и правила нотации BPMN 2.0. Посмотрим на типовые ошибки и как их избегать.
«Оптимизация бизнес-процессов»
Запутались в моделях и параметрах? Не можете вспомнить как получали результат, который оказался лучшим? Тогда этот вебинар для вас!
«MLOps»
Освоите развёртывание Argo CD в Kubernetes, автоматизацию доставки из Git и управление мультикластерными средами с контролем дрейфа конфигураций.
«GitOps»
Как машинное обучение связано с современными AI-технологиями и что вообще связывает технологии ML и GenAI.
Курс «Machine Learning. Basic»
❤️ Скидка 10% на обучение на любой курс OTUS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Не пропусти крутую фишку 👍
Все делают обычные мышки. А ты можешь управлять мультимедиа взмахами руки и чувствовать себя шпионом из будущего. Да-да, тот самый момент, когда думаешь: “как я раньше без этого жил?”
Делимся кодом, файлами для 3D и лайфхаками, включая то, как не сломать BLE‑подключение и собрать корпус, который реально держит.
🖥 Собирай, подключай и удивляй всех вокруг
Лучшие практики программирования и тестирования можно изучить под руководством экспертов на онлайн-курсах Otus.
✏️ На открытые уроки всех курсов можно записаться в календаре.
Все делают обычные мышки. А ты можешь управлять мультимедиа взмахами руки и чувствовать себя шпионом из будущего. Да-да, тот самый момент, когда думаешь: “как я раньше без этого жил?”
Делимся кодом, файлами для 3D и лайфхаками, включая то, как не сломать BLE‑подключение и собрать корпус, который реально держит.
Лучшие практики программирования и тестирования можно изучить под руководством экспертов на онлайн-курсах Otus.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1