Всем привет! На связи Артём Шумейко👋🏻
Я 3 года преподаю Python, еще дольше снимаю обучающие видеоролики на YouTube, и за это время вокруг меня собрались сильные, увлечённые своим делом ребята, которые впоследствии стали частью моей команды.
В том числе благодаря этим людям, со временем мой небольшой курс вырос в полноценную школу подготовки сильных инженеров на Python, в которой программирование объясняют "простым языком и на понятных примерах".
Я запустил этот канал, чтобы рассказывать о школе, делиться опытом, новостями и полезными материалами по Python. Здесь будет место для практики, полезной информации и историй наших выпускников.
Спасибо за поддержку. Дальше будет ещё интереснее.
Я 3 года преподаю Python, еще дольше снимаю обучающие видеоролики на YouTube, и за это время вокруг меня собрались сильные, увлечённые своим делом ребята, которые впоследствии стали частью моей команды.
В том числе благодаря этим людям, со временем мой небольшой курс вырос в полноценную школу подготовки сильных инженеров на Python, в которой программирование объясняют "простым языком и на понятных примерах".
Я запустил этот канал, чтобы рассказывать о школе, делиться опытом, новостями и полезными материалами по Python. Здесь будет место для практики, полезной информации и историй наших выпускников.
Спасибо за поддержку. Дальше будет ещё интереснее.
🔥39❤9⚡6🎉2👍1
Большинство собеседований, особенно в крупных компаниях, включают хотя бы один вопрос, связанный с ООП, для специалистов любого направления, и неважно, кто ты: джун, мидл или сеньор.
Через вопросы по этой теме оценивают, как разработчик думает о системе:
Хотя Python позволяет использовать различные парадигмы программирования, архитектура большинства реальных проектов строится именно на ООП.
Многие разработчики видят функциональный подход в документации библиотек и фреймворков (FastAPI, SQLAlchemy, requests) и думают, что это единственный вариант реализации кода. Но такие примеры пишутся для упрощения, чтобы продемонстрировать работу части приложения или какую-то отдельную идею.
Крупные проекты, где важны надёжность и масштабируемость, всегда строятся на принципах ООП.
И, несмотря на то, что ООП — один из базовых инструментов Python-разработчика, именно он чаще всего вызывает вопросы.
Какие темы в ООП вызывают у тебя трудности? О чем ты много читал, но до сих пор не понял?
Через вопросы по этой теме оценивают, как разработчик думает о системе:
• как структурировать модули
• как управлять зависимостями
• какие принципы из SOLID он применяет на практике
Хотя Python позволяет использовать различные парадигмы программирования, архитектура большинства реальных проектов строится именно на ООП.
Многие разработчики видят функциональный подход в документации библиотек и фреймворков (FastAPI, SQLAlchemy, requests) и думают, что это единственный вариант реализации кода. Но такие примеры пишутся для упрощения, чтобы продемонстрировать работу части приложения или какую-то отдельную идею.
Крупные проекты, где важны надёжность и масштабируемость, всегда строятся на принципах ООП.
И, несмотря на то, что ООП — один из базовых инструментов Python-разработчика, именно он чаще всего вызывает вопросы.
Какие темы в ООП вызывают у тебя трудности? О чем ты много читал, но до сих пор не понял?
👍13🔥7❤2
Базовая задача по ООП — проверь себя
Такого типа задачи часто встречаются на собеседованиях на Python-разработчика. Попробуй разобраться, какие значения b_.check_activity() выведутся на экран? А может, вообще выдаст ошибку?
🔥 – решил верно
👍 – решил неверно
Такого типа задачи часто встречаются на собеседованиях на Python-разработчика. Попробуй разобраться, какие значения b_.check_activity() выведутся на экран? А может, вообще выдаст ошибку?
class ClientA:
is_active = False
def check_activity(self) -> bool:
return self.is_active
class ClientB(ClientA):
def __init__(self, is_active: bool):
self.is_active = is_active
a_ = ClientA()
b_ = ClientB(is_active=True)
print(b_.check_activity())
a_.is_active = False
print(b_.check_activity())
b_.is_active = False
print(b_.check_activity())
Выбирай свой ответ ниже👇🏻🔥 – решил верно
👍 – решил неверно
🔥46👍23❤1
Какие значения выведутся на экран?
Anonymous Quiz
57%
1️⃣ True, True, False
18%
2️⃣ True, False, False
7%
3️⃣ True, True, True
5%
4️⃣ False, False, False
13%
5️⃣ Ошибка AttributeError
48% участников ошиблись во вчерашней задаче по ООП
Правильный ответ:
Сегодня вечером выложим ещё одну задачу, она будет не менее интересная
Правильный ответ:
True
True
False
Разберем, почему так👆🏻is_active в ClientA — это атрибут класса, а при создании ClientB через __init__ мы создаём одноимённый атрибут экземпляра. Когда мы обращаемся к self.is_active, Python сначала ищет в экземпляре, а уже потом — в классе. Поэтому изменения в a_.is_active (атрибуте класса) не влияют на b_, у которого уже есть собственный атрибут.Сегодня вечером выложим ещё одну задачу, она будет не менее интересная
❤17👍12
Новая задача по ООП — проверь себя
Сегодня задача посложнее. Попробуй разобраться, что выведет код?
Выбирай свой ответ ниже👇🏻
👍 – решил
🤝 – не решил
Сегодня задача посложнее. Попробуй разобраться, что выведет код?
class Collection:
def __init__(self, *items):
self.collection = []
for item in items:
if isinstance(item, (list, tuple)):
self.collection.extend(item)
else:
self.collection.append(item)
def map(self, fn: Callable) -> Self:
return self.__class__(*map(fn, self.collection))
def filter(self, fn: Callable) -> Self:
return self.__class__(*[x for x in self.collection if fn(x)])
def __repr__(self) -> str:
return f"{self.__class__.__name__}:{self.collection}"
coll = Collection(1, 2, -3, 4, 5)
result = coll.map(lambda x: x * 2).filter(lambda x: x >= 6)
print(result)
Выбирай свой ответ ниже👇🏻
👍 – решил
🤝 – не решил
👍23🤝19
Что выведет код?
Anonymous Quiz
8%
1️⃣ Collection:[2, 4, -6]
17%
2️⃣ Collection:[6, 8, 10]
4%
3️⃣ Collection:[-6, 2, 4]
59%
4️⃣ Collection:[8, 10]
11%
5️⃣ Collection:[]
🔥8👍2
🥳Релиз нового курса «Продвинутое ООП в Python»
Мы собрали в нём всё, что действительно нужно, чтобы мыслить архитектурно: понимать, как проектировать систему, выстраивать зависимости и писать код, который не ломается при первых изменениях.
В программе курса — полный набор тем, которые нужны разработчику, чтобы уверенно работать с объектно-ориентированным подходом в Python:
Отдельные блоки посвящены архитектурным принципам:
• SOLID
• паттерны проектирования
• абстрактные классы
• интерфейсы и композиция
🔥В курсе предусмотрено создание 2 проектов: по базе ООП и по SOLID.
После курса ты будешь писать производительный код на Python так, чтобы он был масштабируем и удобен для других разработчиков.
Смотри программу на сайте и начинай обучение.
Мы собрали в нём всё, что действительно нужно, чтобы мыслить архитектурно: понимать, как проектировать систему, выстраивать зависимости и писать код, который не ломается при первых изменениях.
В программе курса — полный набор тем, которые нужны разработчику, чтобы уверенно работать с объектно-ориентированным подходом в Python:
• работа с атрибутами и методами
• свойства объектов (@property)
• использование декораторов@classmethodи@staticmethod
• магические методы и переопределение поведения объектов
• итерируемые объекты и последовательности
• контекстные менеджеры и декоратор@contextmanager
• дескрипторы
• наследование, композиция и полиморфизм
• использование__slots__для оптимизации классов
•Enum
• декораторы классов
• модульdataclasses
Отдельные блоки посвящены архитектурным принципам:
• SOLID
• паттерны проектирования
• абстрактные классы
• интерфейсы и композиция
🔥В курсе предусмотрено создание 2 проектов: по базе ООП и по SOLID.
После курса ты будешь писать производительный код на Python так, чтобы он был масштабируем и удобен для других разработчиков.
Смотри программу на сайте и начинай обучение.
❤6👍6🔥6🎉2
Совет от нашего наставника, который должен услышать каждый начинающий разработчик
На курсе Backend-разработки на Python у нас есть замечательный наставник — Полина. Она делится советом со всеми начинающими разработчиками:
Мониторьте бесплатные митапы и IT-мероприятия от крупных компаний, и обязательно ходите на них оффлайн.
Не спорим, что онлайн удобно, но присутствие оффлайн намного эффективнее и вот почему:
Нетворкинг, который открывает двери, поскольку на мероприятиях можно послушать интересные доклады опытных специалистов, узнать о проблемах в реальных проектах, а также подойти и познакомиться, задать любые вопросы, даже если это кажется страшным. Полина делится своим опытом:
Прямой контакт с HR-ами из бигтеха. Иногда один факт, что ты проявил интерес, уже работает в твою пользу.
Скрытый бонус
Если ты хочешь обучиться backend-разработке на Python, получать офферы и расти по карьере, сейчас самое время воспользоваться скидками черной пятницы и начать обучение.
На курсе Backend-разработки на Python у нас есть замечательный наставник — Полина. Она делится советом со всеми начинающими разработчиками:
Мониторьте бесплатные митапы и IT-мероприятия от крупных компаний, и обязательно ходите на них оффлайн.
Не спорим, что онлайн удобно, но присутствие оффлайн намного эффективнее и вот почему:
Нетворкинг, который открывает двери, поскольку на мероприятиях можно послушать интересные доклады опытных специалистов, узнать о проблемах в реальных проектах, а также подойти и познакомиться, задать любые вопросы, даже если это кажется страшным. Полина делится своим опытом:
Буквально на прошлой неделе была на митапе PostgreSQL в Екатеринбурге. После официальной части осталась на неформальную, и в итоге завязала разговор с разработчиками из Тинькофф и ЯндексCloud. Тут чуть информации, там, и в конце вечера меня уже добавили в закрытый телеграм-канал с анонсами будущих митапов в городе. Я туда бы никогда сама не попала.
Прямой контакт с HR-ами из бигтеха. Иногда один факт, что ты проявил интерес, уже работает в твою пользу.
Однажды я записалась на конференцию Сбербанка, но прийти не смогла. Через пару дней мне написала HR и спросила, ищу ли я работу, и можно ли ей отправить моё резюме коллегам. И все просто потому что я была в списке зарегистрированных.
Скрытый бонус
После таких мероприятий остается мерч, который приятно использовать. Например, на этом митапе подарили книжку😉
Если ты хочешь обучиться backend-разработке на Python, получать офферы и расти по карьере, сейчас самое время воспользоваться скидками черной пятницы и начать обучение.
👍5❤4🔥2🎉1
Изменения рынка труда Python разработки за полгода
Мы каждые полгода смотрим на актуальность основных фреймворков и делимся с вами.
🟢 Кол-во вакансий по Django упало на 15%. Компании постепенно переходят от "тяжелого" Django, делая выбор в сторону более легковесных фреймворков. Однако Django по-прежнему занимает уверенную вторую позицию. За год падение составило 20%.
🟢 Flask на том же уровне. За полгода Flask потерял лишь 5%, однако если сравнить с позапрошлым ноябрем, падение составило 20%
🟢 FastAPI закрепил позиции самого популярного фреймворка. Количество вакансий увеличилось на 12% за полгода, на 5% за год. Уже более года FastAPI является самым востребованным фреймворком в коммерческой Python разработке.
Рынок медленно переходит к решениям на базе FastAPI. Рано говорить о полном доминировании какого-либо из фреймворков. Это больше похоже на спокойную адаптацию рынка к новым реалиям.
💬 Что думаешь об этом? Замечал изменения? Напиши в комментарии
Прошлые посты: Полгода назад (Май 2025) | Год назад (Ноябрь 2024)
Мы каждые полгода смотрим на актуальность основных фреймворков и делимся с вами.
Главные изменения
Мысли и выводы
Рынок медленно переходит к решениям на базе FastAPI. Рано говорить о полном доминировании какого-либо из фреймворков. Это больше похоже на спокойную адаптацию рынка к новым реалиям.
💬 Что думаешь об этом? Замечал изменения? Напиши в комментарии
Прошлые посты: Полгода назад (Май 2025) | Год назад (Ноябрь 2024)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5👏3💯1
Проблемы разработчиков, которые мы решаем на обучении
Многие наши ученики приходили к нам после попыток разобраться в backend’е самостоятельно. Кто-то не мог пройти собеседования, кто-то застревал на тестовых заданиях, а кто-то просто не понимал, что именно нужно учить, чтобы получить первую работу.
Чтобы решить эти проблемы, мы создали понятную систему обучения. В Pytex курсы создают Senior-разработчики для разработчиков. После каждого модуля ученики проходят тесты и на практических заданиях закрепляют материал.
Как итог, к концу курса у каждого из них есть собственные проекты и понимание, как применять полученные знания и навыки в работе.
Наши выпускники проходят собеседования, устраиваются в компании и чувствуют себя уверенно в командной работе, о чем пишут в многочисленных отзывах.
Многие наши ученики приходили к нам после попыток разобраться в backend’е самостоятельно. Кто-то не мог пройти собеседования, кто-то застревал на тестовых заданиях, а кто-то просто не понимал, что именно нужно учить, чтобы получить первую работу.
Чтобы решить эти проблемы, мы создали понятную систему обучения. В Pytex курсы создают Senior-разработчики для разработчиков. После каждого модуля ученики проходят тесты и на практических заданиях закрепляют материал.
Как итог, к концу курса у каждого из них есть собственные проекты и понимание, как применять полученные знания и навыки в работе.
Наши выпускники проходят собеседования, устраиваются в компании и чувствуют себя уверенно в командной работе, о чем пишут в многочисленных отзывах.
👍3❤2🤝2
Что должен уметь backend-разработчик в 2026 году
Как и в любой IT-специальности, требования к специалистам отличаются от компании к компании. Где-то разработчик с опытом 2 лет считается middle, где-то всё ещё junior. Рассмотрим усредненный набор знаний и навыков, по которым обычно определяют грейд:
Junior
На этом уровне от разработчика ждут точного выполнения задач по ТЗ, аккуратного кода и умения учиться. Пространства для архитектурных решений ещё мало — важнее скорость, внимательность и понимание основ.
Middle
Middle-разработчик уже не ждёт подробного ТЗ. Он предлагает решения, оптимизирует архитектуру, умеет разбираться в чужом коде и общается с аналитиками, менеджерами, QA.
Senior
Senior-бэкендер понимает архитектуру не на уровне отдельного приложения. Он влияет на технические решения, менторит команду, ведёт сложные проекты и отвечает за процесс разработки.
Подробнее о разнице в задачах и росте в backend’е расскажем в следующих постах.
Как и в любой IT-специальности, требования к специалистам отличаются от компании к компании. Где-то разработчик с опытом 2 лет считается middle, где-то всё ещё junior. Рассмотрим усредненный набор знаний и навыков, по которым обычно определяют грейд:
Junior
На этом уровне от разработчика ждут точного выполнения задач по ТЗ, аккуратного кода и умения учиться. Пространства для архитектурных решений ещё мало — важнее скорость, внимательность и понимание основ.
Что нужно знать:
✅ Python на уровне уверенного написания простых сервисов
✅ Основы ООП, понимание принципов SOLID на базовом уровне
✅ Асинхронность (async/await) — базовые представления
✅ FastAPI — базовые CRUD-эндпоинты, роутинг, обработка ошибок
✅ PostgreSQL: JOIN, GROUP BY, индексы, транзакции
✅ SQLAlchemy или Django ORM — базовые запросы
Понимание NoSQL (Redis, MongoDB) на уровне базовых операций
✅ Docker: запуск простого контейнера, базовый Dockerfile
Понимание, что такое REST API, HTTP, статусы ответов
✅ Git: ветки, merge request, code review, конфликты
Логирование, работа с зависимостями, структура проекта
Middle
Middle-разработчик уже не ждёт подробного ТЗ. Он предлагает решения, оптимизирует архитектуру, умеет разбираться в чужом коде и общается с аналитиками, менеджерами, QA.
Что нужно знать:
✅ Глубокое понимание Python: генераторы, контекстные менеджеры, async/await, типизация
✅ Понимание паттернов проектирования
✅ FastAPI: асинхронные приложения, middleware, фоновые задачи
✅ PostgreSQL: планы выполнения, оптимизация запросов, индексы, триггеры
✅ Проектирование API, контрактов, интеграций
✅ Использование Redis для кэша, rate-limit, очередей
✅ Работа с SQLAlchemy ORM на продвинутом уровне
✅ Docker: мультистейдж сборка, оптимизация образов
✅ CI/CD (GitHub Actions/GitLab CI/Yandex Cloud)
✅ Базовые знания Kubernetes (часто встречается в 2025)
✅ Pytest: фикстуры, моки, тестирование API
✅ Опыт с брокерами сообщений: Kafka, RabbitMQ
✅ Линтеры: ruff, black, mypy
✅ Умение писать документацию
✅ Участие в планировании, декомпозиции задач
Senior
Senior-бэкендер понимает архитектуру не на уровне отдельного приложения. Он влияет на технические решения, менторит команду, ведёт сложные проекты и отвечает за процесс разработки.
Что нужно знать:
✅ Проектирование высоконагруженных систем
✅ Микросервисная архитектура, событийный подход
✅ Domain-Driven Design (DDD) на практическом уровне
✅ Продвинутый Kubernetes (Helm, Operators)
✅ Балансировка нагрузки
✅ Мониторинг: Prometheus, Grafana, Sentry
✅ Оптимизация на уровне схемы, репликация, шардинг
✅ Redis для сложных задач: очереди, pub/sub
✅ Code review, менторинг, постановка задач
✅ Ведение технических дорожных карт
✅ Понимание влияния архитектурных решений на продукт
✅ Оценка рисков, сроков
✅ Качество SLA, отказоустойчивость систем
Подробнее о разнице в задачах и росте в backend’е расскажем в следующих постах.
❤17 10🔥6 2💯1
Различия между грейдами backend-разработчиков.
Разбор на реальном кейсе
Разница между Junior, Middle и Senior проявляется не только в навыках, но и в том, как каждый уровень решает одну и ту же задачу. Рассмотрим на примере из практики.
Кейс
Сервис электронных уведомлений столкнулся с проблемой: пользователи жалуются, что письма и push-уведомления приходят с задержкой. В пиковые часы очередь задач растёт, а система не справляется. Нужно понять, что происходит и как стабилизировать работу сервиса.
Junior
Начинающему backend-разработчику нужно поставить чёткое ТЗ: проверить один конкретный модуль или часть очереди. Он сможет:
Middle
Middle-разработчик уже сам исследует проблему, формулирует гипотезы и предлагает варианты решения. Он сможет:
Senior
Senior-разработчик смотрит системно: он решает не только текущую проблему, но и предотвращает будущие. В этом кейсе он сможет:
Важно: как и в любой IT-специальности, требования к специалистам отличаются от компании к компании.
Разбор на реальном кейсе
Разница между Junior, Middle и Senior проявляется не только в навыках, но и в том, как каждый уровень решает одну и ту же задачу. Рассмотрим на примере из практики.
Кейс
Сервис электронных уведомлений столкнулся с проблемой: пользователи жалуются, что письма и push-уведомления приходят с задержкой. В пиковые часы очередь задач растёт, а система не справляется. Нужно понять, что происходит и как стабилизировать работу сервиса.
Junior
Начинающему backend-разработчику нужно поставить чёткое ТЗ: проверить один конкретный модуль или часть очереди. Он сможет:
— Посмотреть логи и найти явные ошибки.
— Открыть код эндпоинта, проверить простые проблемы: блокирующие операции, отсутствие таймаутов.
— Перезапустить сервис, обновить зависимости, протестировать простой случай.
— Написать небольшой скрипт для замера времени ответа.
— Сделать фикс под руководством ментора: вынести тяжёлую операцию в фон, добавить кэш, поправить обработчик ошибок.
Middle
Middle-разработчик уже сам исследует проблему, формулирует гипотезы и предлагает варианты решения. Он сможет:
— Проанализировать узкие места: медленные запросы в PostgreSQL, блокировки, неэффективные ORM-операции.
— Проверить, не упирается ли сервис в ограничение Redis, очередь, лимиты CPU.
— Переписать критичный участок на асинхронный FastAPI, вынести операции в Celery или другой брокер задач.
— Оптимизировать SQL: добавить индексы, CTE, изменить схему таблиц.
— Настроить метрики и алерты: время ответа, длину очереди, ошибки 5xx.
— Внедрить rate-limit, чтобы ни один канал не перегружался.
— Предложить архитектурное улучшение: разделить сервис на два модуля, вынести тяжёлые задачи в отдельный worker.
Senior
Senior-разработчик смотрит системно: он решает не только текущую проблему, но и предотвращает будущие. В этом кейсе он сможет:
— Спроектировать высоконагруженную архитектуру для отправки уведомлений: очереди, ретраи, шардирование, отдельные сервисы под каждый канал.
— Выстроить систему observability: логирование, трассировка, метрики, алерты, дашборды в Grafana.
— Переписать критичные части на устойчивую схему: worker-пул, механизм backpressure.
— Настроить CI/CD, автотесты, нагрузочное тестирование, чтобы проблем не возникало после релизов.
2 5 2👎1
Рубрика #проверь_себя
Сегодня предлагаем тебе решить задачу по SOLID🔥
Класс ReportService отвечает только за подготовку отчёта, а конкретный формат вывода передаётся через абстракцию. Какие два принципа SOLID демонстрирует этот код?
Сегодня предлагаем тебе решить задачу по SOLID
Класс ReportService отвечает только за подготовку отчёта, а конкретный формат вывода передаётся через абстракцию. Какие два принципа SOLID демонстрирует этот код?
class ReportExporter(ABC):
@abstractmethod
def export(self, data):
pass
class PDFExporter(ReportExporter):
def export(self, data):
print("Export to PDF")
class ExcelExporter(ReportExporter):
def export(self, data):
print("Export to Excel")
class ReportService:
def __init__(self, exporter: ReportExporter):
self.exporter = exporter
def generate(self, data):
self.exporter.export(data)
Please open Telegram to view this post
VIEW IN TELEGRAM
Пояснение ко вчерашней задаче
Почему же правильный ответ — S, D
Single Responsibility Principle (S):
Dependency Inversion Principle (D):
💬 Ну что, стало понятнее? Или вы сразу решили задачу верно?)
Почему же правильный ответ — S, D
Single Responsibility Principle (S):
ReportService отвечает только за подготовку отчёта, Он не знает, куда и в каком формате происходит экспорт. Экспорт отчёта вынесен в отдельные классы (PDFExporter, ExcelExporter).
Если меняется логика формирования отчёта, необходимо изменить ReportService. Если меняется способ экспорта, тогда достаточно выбрать другой exporter.
Dependency Inversion Principle (D):
модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба уровня должны зависеть от абстракций. Класс ReportService в `__init__` принимает абстракцию ReportExporter, не создавая внутри себя экземпляры PDFExporter или ExcelExporter, можно легко подменить одну реализацию другой. Для добавления новых вариантов ReportExporter менять логику в ReportService не требуется.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8 5🤝2 1
Планировал прокачаться в backend-разработке в 2025 году?
У нас для тебя отличные новости!
Если ты только начинаешь путь в бэкенде или уже работаешь, но чувствуешь, что знаний или практики где-то не хватает — мы подготовили для тебя два мощных практических вебинара от Senior-разработчика Артёма Шумейко. Минимум теории, максимум практики, и, как всегда, простым языком на реальных примерах.
💎 16 декабря в 18:00 МСК — «Пишем систему аутентификации и авторизации: сессии vs JWT токены»
На вебинар ты:
— разберёшься в ключевых принципах аутентификации и авторизации через сессии и токены
— вместе с Артёмом Шумейко напишешь приложение, в котором реализуешь оба подхода.
После такого пошагового практикума ты будешь понимать, как строить безопасную систему входа в приложение.
ЗАРЕГИСТРИРОВАТЬСЯ
💎 18 декабря в 18:00 МСК — «5 слоёв кэширования в веб-приложениях»
На вебинаре ты:
— разберёшь теорию кэширования: уровни, механизмы, типы хранилищ;
— поймёшь, где и зачем применять разные виды кэша;
— разберешься, как бэкендер может снизить нагрузку на бэк в десятки раз через кэширование на уровне браузера;
— на практике внедришь 5 уровней кэширования в реальное приложение.
Это тот навык, который отличает джуна от мидла и который особенно ценят работодатели.
ЗАРЕГИСТРИРОВАТЬСЯ
🎉 Всех участников вебинаров ждут подарки.
Обо всём расскажем уже скоро! А пока регистрируйся и следи за новостями канала, чтобы ничего не пропустить
У нас для тебя отличные новости!
Если ты только начинаешь путь в бэкенде или уже работаешь, но чувствуешь, что знаний или практики где-то не хватает — мы подготовили для тебя два мощных практических вебинара от Senior-разработчика Артёма Шумейко. Минимум теории, максимум практики, и, как всегда, простым языком на реальных примерах.
На вебинар ты:
— разберёшься в ключевых принципах аутентификации и авторизации через сессии и токены
— вместе с Артёмом Шумейко напишешь приложение, в котором реализуешь оба подхода.
После такого пошагового практикума ты будешь понимать, как строить безопасную систему входа в приложение.
ЗАРЕГИСТРИРОВАТЬСЯ
На вебинаре ты:
— разберёшь теорию кэширования: уровни, механизмы, типы хранилищ;
— поймёшь, где и зачем применять разные виды кэша;
— разберешься, как бэкендер может снизить нагрузку на бэк в десятки раз через кэширование на уровне браузера;
— на практике внедришь 5 уровней кэширования в реальное приложение.
Это тот навык, который отличает джуна от мидла и который особенно ценят работодатели.
ЗАРЕГИСТРИРОВАТЬСЯ
🎉 Всех участников вебинаров ждут подарки.
Обо всём расскажем уже скоро! А пока регистрируйся и следи за новостями канала, чтобы ничего не пропустить
Please open Telegram to view this post
VIEW IN TELEGRAM
Рубрика #проверь_себя
Класс UserRepository является репозиторием с генератором для постраничной загрузки данных пользователей. Какой результат вернет ручка get_users, если отправить запрос
🔥 — решил
🤝 — не решил
Класс UserRepository является репозиторием с генератором для постраничной загрузки данных пользователей. Какой результат вернет ручка get_users, если отправить запрос
GET /users?batch_size=2&limit=3?from fastapi import FastAPI, Query
app = FastAPI()
USERS = ['alice', 'bob', 'carol', 'dave', 'mia']
class UserRepository:
def __init__(self, rows):
self.rows = rows
def paginated_fetch(self, batch_size: int):
for i in range(0, len(self.rows), batch_size):
batch = self.rows[i:i + batch_size]
yield from (row.upper() for row in batch)
@app.get('/users')
def get_users(batch_size: int = Query(gt=0), limit: int = Query(gt=0)):
data = UserRepository(rows=USERS).paginated_fetch(batch_size=batch_size)
return [next(data) for _ in range(limit)]
🤝 — не решил
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝19 5