Девман для питонистов
497 subscribers
111 photos
2 videos
122 links
Веб-разработка на Python. Канал от практиков.
Download Telegram
🥳🥳🥳 Спешим сообщить вам, что во вторник у нас стартовал бета-поток по новому курсу по FastAPI!

🔥Новые курсы давно обещали и, наконец-то, можем вас порадовать! Мы подготовили первый большой проект, в ходе которого вы начнете свое знакомство с FastAPI на практике! И скоро выпустим еще!

🚀Что будет в курсе?

По ходу прохождения курса вы сделаете генератор сайтов: запустите первый проект на FastAPI, интегрируетесь по API с нейросетью, подключите готовый фронтенд и покроете код автотестами.

Этапы первого проекта:
⚡️ Разворачиваем базовое приложение на FastAPI как профи.
⚡️ Пишем первый API endpoint на FastAPI и подключаем готовый фронтенд.
⚡️ Пишем заглушку API endpoint для генерации сайтов.
⚡️ Объединяем все части веб-приложения в готовый генератор сайтов.

🔥 Но это еще не все! Для курса мы разработали новый формат — созвоны с тимлидом!

Преимущества нового формата:

Индивидуальные созвоны. Никаких бесполезных видео и вебинаров, обсуждайте конкретные вопросы с действующим тимлидом в формате one-to-one. Вы сможете задавать любые вопросы по учебному проекту и разбирать их совместно!

Выбор технических решений. Вместе изучите архитектуру проекта, потренируетесь в обсуждении технических решений и сборе недостающих требований к ПО. Получите не абстрактные знания, а практические решения, которые тимлид применяет в рабочих проектах.

Профессиональное код-ревью. Подсветит ошибки и слабые места. Научит писать чистый и поддерживаемый код. Ревью разберете на созвоне, получите ответы на все вопросы.

🤫 Позже курс будет доступен и в старом формате мини-курса для самостоятельного прохождения!

Когда можно будет записаться?

Мы планируем релиз на конец июля-начало августа! Конкретную дату старта первого потока сообщим здесь!

Остались вопросы? Задавайте в комментариях!
🔥6👍2
Обновить нельзя оставить: версия Django

📎У библиотек и фреймворков, а также у операционных систем обычно есть несколько поддерживаемых версий, которые помечаются как LTS (long term support — это часть жизненного цикла ПО, которая означает, что стабильный релиз будет поддерживаться долгое время и будет считаться стандартной версией к распространению).

✏️Django 5.2 — это текущая стабильная версия веб-фреймворка Django, вышедшая 2 апреля 2025 года. Django 5.2 поддерживает Python 3.10, 3.11 и 3.12. Самое важное, что появилось в 5 версии фреймворка — продвинутая асинхронность.

А что делать если проект написан, например, на версии 3.2?
Обновления к LTS-версии Django 3.2 перестали выходить в апреле 2024 года. Если в вашем проекте используется именно версия 3.2, то переживать не стоит. После даты окончания поддержки проект не «превратится в тыкву»: просто для этой версии фреймворка перестанут выходить патч-релизы.

В большинстве крупных компаний обновления версий протекают медленно. Так что не удивляйтесь, если увидите в вакансиях требования знать Django 2.1 или даже Python 2! От обновлений не всегда пользы больше, чем вреда.

Когда не стоит спешить с обновлением версии:
👉 никогда не обновляйте боевой проект до не LTS версии — это опасно из-за большого количества еще не исправленных ошибок;

👉 проект очень большой (особенно монолит) и «живой» — даже несколько часов простоя из-за ошибок будут стоит значительных убытков бизнесу, а стоимость обновления не факт что окупится, если проект не развивается активно;

👉 функционал, добавленный в новой версии не будет использоваться в проекте;

👉 библиотеки, используемые в проекте, несовместимы с новой версией фреймворка.

💥Ну а мы решили, что в уроках пора обновляться! Сразу до Django 5.2, которая недавно стала LTS.

Хорошие новости — мы обновили уроки в «Знакомство с Django: ORM» и «Django». Учебные проекты остаются прежним, махровой асинхронщины не будет. Но можно использовать последние версии Python!

Еще убрали деплой на PythonAnyWhere из первого урока по Django — уж очень много с ним проблем, с новыми версиями не совместим, интерфейс кошмарный. Деплоить будем полноценно в третьем уроке и дальше уже в Docker и Kubernetes.

А вот в старых боевых проектах остаемся на старой Django. Так что идущие к нам на стажировку — готовьтесь к Django 4.2.1💪

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

👉В ближайшие дни могут быть ошибки из-за версий. Менторы передают их нам, мы активно чиним!
🔥4
Мы уже рассказывали, что у нашей компании есть отдельное подразделение, которое занимается разработкой веб-сервисов на заказ. Все наши бэкенд-разработчики — это выпускники курсов школы Девман💪
Хотим поделиться, какие проекты реализовали и делают сейчас наши команды!

✏️Задача

Сделать MVP CRM для автоматизации бизнес-процессов с учетом всей специфики деятельности.
Компания Заказчика сопровождает получение банковских гарантий. Предметная область сложная — много юридических и финансовых терминов, неожиданных корнер-кейсов. Да, есть коробочные решения: amoCRM, Bitrix24 и пр. Но они не учитывают специфику бизнеса.

📎 Если бизнес растет и под область нет качественных отраслевых решений — пора задуматься о разработке кастомной CRM.

Она будет адаптирована под бизнес-процессы и персонал компании — возрастет эффективность сотрудников, снизится время обработки заявок и число ошибок, собственник получит отчетность в нужном формате.

💡Решение

Мы разрабатывали ТЗ в очень плотной работе с Заказчиком, обновляли и поддерживали по ходу разработки.

❗️ТЗ обязательно должно развиваться вместе с продуктом. Нельзя предусмотреть заранее все истории, предугадать насколько будет удобно пользоваться системой после внедрения.

Автоматизация уже существующих бизнес-процессов — это в итоге создание новых процессов, которых еще нет. И прогнозы могут не совпасть с реальностью. О своем подходе к проектированию и работе с ТЗ рассказывали на конференции прошлой осенью, видео можно посмотреть здесь.

🚀Первым большим рубежом проекта стал релиз MVP через 6 месяцев после старта. Уже сразу после него CRM стала полноценным рабочим инструментом для команды Заказчика. Она позволила серьезно экономить время на обработку запросов клиентов.

🔥Еще больше порадовала обратная связь от Заказчика: конкуренты реализовали примерно такой же функционал для себя, но за несколько лет и бюджетом минимум x3!

Алёна, бессменный тимлид команды, поделилась своими впечатлениями:
В нашем проекте мы намеренно отказались от полноценного фронта, отдав все силы построению бизнес-логики. Но удобство интерфейса для нас тоже — немаловажный фактор, поэтому кастомизация админки Django — это очень интересный вызов для команды.

Одна из самых непростых задач была — импортировать в новую CRM все данные, с которыми Заказчик работал ранее: данные из таблиц и старых CRM. Сложность обусловлена тут несколькими факторами: эти данные сложносоставные, неоднородные, их структура сильно отличается от структуры данных в новой CRM.

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

Мы провели множество тестов, в том числе на эмуляции боевой базы, прогнали скрипты миграции на разных окружениях, постарались учесть все corner-case'ы, которые могли встретиться в архивах. Как часто случается, при боевой миграции все-таки вылезли некоторые проблемы, которые удалось решить оперативным вмешательством и слаженной работой команды). И ни одна "боевая данная" не пострадала!

Я считаю очень удачным, что я попала в этот проект, т.к. эта предметная область мне знакома и я рада, что мои знания помогают улучшить его. Мне нравится наш проект, Заказчик и наша команда. Я уверена, мы доведем CRM до совершенства) И, безусловно, я уже получила и еще получу колоссальный опыт: написание ТЗ, проектирование, работа с новыми инструментами и тимлидство в конце концов)


🚀Проект продолжает развиваться: расширяем интеграции, улучшаем интерфейс и автоматизируем рутинные процессы. Например, прикручиваем умные парсеры для интеграции с веб-сайтами, которые не хотят делиться API. Об этом расскажем подробнее в другой раз! 🤫

👉 Вы или ваши друзья намучились с коробочными CRM для автоматизации бизнес-процессов? Приходите к нам на бесплатную консультацию — подскажем, нужна ли вам своя система.
🔥52👍1
Какие навыки нужны для изучения FastAPI

🚀FastAPI — это мощный и современный фреймворк для создания API на Python. Он быстрый, удобный и продолжает набирать популярность. Но чтобы начать его изучать, нужно подготовиться. Сегодня обсудим, какие стартовые навыки вам нужны, чтобы изучить FastAPI.

Минимальный набор навыков:
— Знаете Python на базовом уровне
— Использовали сторонние библиотеки
— Использовали PIP или его аналоги
— Создавали Классы-наследники и Объекты (экземпляры класса, инстансы)
— Писали функции с нуля
— Работали с requests или аналогами

Рекомендуемый набор навыков:
— Все навыки, которые перечислены выше
— Писали и использовали Callback-функции
— Использовали декораторы
— Отправляли HTTP-запросы с авторизацией
— Обрабатывали HTTP-ответы с JSON-нагрузкой

Если уже прошли наш курс «Профессия Middle Python/Django разработчик», то будет интересно сравнить возможности Django и FastAPI и дополнить резюме востребованным навыком.

Чтобы подтянуть стартовые навыки до рекомендуемого уровня, достаточно пройти мини-курсы:
Основы Python
Git и GitHub
Командная строка
API веб-сервисов
⁉️Что лучше: FastAPI или Django

Обсудили, что лучше: FastAPI или Django, чем эти фреймворки отличаются друг от друга и с чем лучше справляются.

💥В дискуссии участвовали:
— Евгений Евсеев — основатель школы Devman, автор методики обучения и разработчик с 17+ опытом.
—Михаил Акопян — тимлид команды разработки в PelidTeam.

🗣Обсудили:
— Чем FastAPI отличается от Django
— Что такое Pydantic в FastAPI
— Автодокументацию и вебсокеты в FastAPI
— Django Ninja
— Django ORM vs SQLAlchemy

⚡️Приглашаем послушать и поучаствовать обсуждении в комментариях:
YouTube
RuTube
VK

У вас есть идея для дискуссии или интересный вопрос? Пишите в комментариях!
👍7
🤔 Давайте вместе разберемся, что не так с этим кодом?

from math import pi


def calculate_circle_area(radius):
circle_area = pi * radius ** 2
return circle_area


# def calculate_square_area(side):
# return side * side


if __name__==’__main__’:
radius = 5
circle_area = calculate_circle_area(radius)

👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
Если что-то можно закомментировать из-за того, что оно уже не используется, значит этому в принципе не место в рабочей версии кода. Такой код сбивает с толку и его лучше удалить.

Код из нашего примера должен выглядеть вот так:
from math import pi


def calculate_circle_area(radius):
circle_area = pi * radius ** 2
return circle_area


if __name__ == '__main__':
radius = 5
circle_area = calculate_circle_area(radius)
💡При выборе курса важно понимать, как именно будет проходить обучение — от этого зависит ваш комфорт и результат. Можно сколько угодно искать «идеальную программу», но если формат не вписывается в жизненные обстоятельства, прогресс будет даваться тяжело.

Давайте разберем, какие варианты есть у нас и как выбрать тот, в котором вы добьетесь максимума!

📎Профессия — это длинный трек из разных активностей, который включает кроме уроков с поддержкой ментора, учебные командные проекты, стажировку и трудоустройство. На курс «Профессия Middle Python/Django разработчик» можно зайти с разного уровня: с нуля, о новичка, от джуна.

Преимущества формата:

— Гарантированная стажировка 13 недель на коммерческом проекте после выполнения всех уроков.
— Поддержка ментора в личном чате, индивидуальные учебные планы на каждую неделю
— Команда Девман и дедлайны поддерживают мотивацию дойти до конца трека.
— Код-ревью от действующего разработчика по каждому проекту.
— Учебные командные проекты с опытным менеджером проектов.
— Консультации HR и подготовка к техинтервью для трудоустройства.
— Для лучших выпускников есть возможность получить оффер к нам или нашим партнерам.
— Вернем деньги, если не трудоустроитесь разработчиком (см. условия и порядок оформления в оферте).

⚠️ Ограничения:
— Выделять не менее 15 часов в неделю.
— Распределять график обучения не только на выходные, но и на будние дни.
— Выделить время на обязательные групповые созвоны по командным проектам и стажировке.
— Срок обучения от 10 до 19 месяцев.
— Высокая стоимость курса.

👉Это ваш вариант, если хотите освоить новую специальность и трудоустроиться!

📎 Мини-курс — это короткая и емкая программа, которая за несколько уроков дает конкретный навык или решает одну задачу.

Преимущества формата:
— Поддержка куратора в чате, если не удается пройти урок.
— Код-ревью от действующего разработчика по каждому проекту.
— Гибкий график занятий — занимайтесь в любое время, учебные материалы доступны 24/7.
— Прокачивайте навыки точечно — только по необходимой теме.
— Можно начать занятия в любое время и проходить в своем темпе. Курс ваш навсегда.

⚠️ Ограничения:
— Придется самостоятельно организовывать график обучения, бороться с прокрастинацией
— Нет модулей для отработки навыков работы в команде

👉 Этот вариант подойдет вам, если нужно освоить какой-то конкретный навык или хотите учиться в своем темпе!

📎Занятия с ментором — это формат, в ходе которого вы будете созваниваться с ментором индивидуально, задавать вопросы по проекту и разбирать их совместно. Это наш новый формат, который опробовали на майском интенсиве по проектированию баз данных и запускаем на регулярной основе для курсов по FastAPI.

Преимущества формата:
— Выполняете проект в формате спринтов с дедлайнами.
— Индивидуальные созвоны с ментором.
— Гибкий график занятий — пишите код в удобное время, учебные материалы доступны 24/7.
— Профессиональное код-ревью.
— Возможность обсудить вопросы по код-ревью на последнем созвоне.
— Инсайты из опыта продуктовой разработки от действующего разработчика.
— Обсуждение и выбор технических решений, разбор архитектуры учебного проекта.

👉 Этот вариант подойдет вам, если вам нужна максимальная обратная связь, погружение в разработку, мотивация и поддержка!
👍1
Продолжаем разбирать вопросы, который часто задают работодатели на собеседованиях веб-разработчиков на Python!

Что такое middleware в Django?

📎В Django «middleware» (промежуточное ПО или промежуточный слой) — это компоненты, которые обрабатывают запросы и ответы глобально перед тем, как они достигают вьюх или после того, как покинут вьюхи.

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

Промежуточный слой работает на основе принципа «луковицы». Каждый слой в луковице — это приложение middleware, а в ее центре находится вьюха. Порядок слоев устанавливается в настройках.

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

✍️Вот несколько примеров того, для чего может быть использован middleware:

Управление сессиями. SessionMiddleware управляет данными сессии пользователя. Он загружает данные сессии перед началом обработки запроса и сохраняет их после завершения обработки.

Аутентификация. AuthenticationMiddleware добавляет атрибут user к каждому объекту HttpRequest. Это позволяет легко определить, аутентифицирован ли пользователь.

Обработка кросс-доменных запросов (CORS). Если у вас есть middleware для обработки CORS, он может установить соответствующие заголовки ответа для управления кросс-доменными запросами.

Кэширование. Некоторые слои middleware могут кэшировать ответы, уменьшая таким образом нагрузку на сервер.

⚙️Чтобы добавить middleware в ваш проект Django, нужно:

1️⃣ Создать класс middleware, реализовав в нем необходимые методы __init__ и __call__ (а так же при необходимости process_view, process_exception, process_template_response и т.д.).

Пример простого middleware, который добавляет заголовок 'X-Simple-Header' = 'Hello, world!' к каждому ответу:
class SimpleMiddleware:

def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
response = self.get_response(request)
response['X-Simple-Header'] = 'Hello, world!'
return response

2️⃣ Добавить путь к этому классу в список MIDDLEWARE в настройках вашего проекта:
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
...
"myapp.middlewares.SimpleMiddleware",
]


❗️Важно помнить, что порядок приложений middleware в настройках определяет порядок их выполнения. Middleware, определенные раньше в списке, будут обрабатывать запросы перед теми, что определены позже, и обрабатывать ответы после тех, что определены позже.

👉Пишите вопросы, которые хотели бы разобрать, в комментариях!

#вопросы_с_собесов
👍5🔥21
🌟Знакомо ощущение, когда код написан, а оказывается, что половину требований упустили? В Devman мы решаем эту проблему и превращаем скучное ТЗ в увлекательный интерактивный веб-сервис!

❗️Программный продукт должен быть не только с чистым кодом внутри, но еще и решать реальные проблемы пользователей, для которых он и разрабатывается.

🚀В авторской методике ProductFlow задание на продукт описывается с точки зрения того, какую проблему пользователя решает продукт, в каких обстоятельствах. А ТЗ используется не только на этапе сбора требований, но и служит актуальной документацией, чек-листом для тестирования, отчетом о прогрессе реализации и планом наращивания функциональности. Веб-сервис, который вы встретите в новых уроках назвали СУП ProductFlow — система управления потребностями.

⚙️Техническое задание в СУПе включает:
— Роль — это пользователь программного продукта. Не только клиент, но и администратор, и даже разработчик
— Функция — это некая «хотелка» пользователя, потребность, которую ПО должно закрыть.
— История — это контекст, т.е. условия, в которых выполняется функция.

Подробно об интерактивном ТЗ в формате ProductFlow можно почитать в Энциклопедии Devman.

Преимущества интерактивного ТЗ:
— Развивает навыки проектирования, подсвечивает нестыковки.
— Не ограничивает способы реализации, а описывает необходимый результат.
— Включает не только конечный продукт, но и вспомогательные подсистемы — «строительные леса» разработчика.
— Наглядный визуализированный мониторинг прогресса по реализации продукта.
— Кейсы для тестирования разработанного ПО и документации к нему.
— Персонализация процесса обучения.

💥Интерактивное ТЗ появится в новом курсе по FastAPI. Постепенно мы добавим его и в другие курсы.

Собрали отзывы от тех, кто уже успел познакомиться с СУПом:

Выполнение работы в этом формате сильно "бустануло" обучение. Эта штука ставит тебя в точку неопределённости, заставляя больше погружаться в проект, читать всё ТЗ и позволяет принимать решения. Хотел бы видеть такое ТЗ в рамках каждого Урока на Девман


Методика Product Flow оказалась максимально удобной в исполнении: весь
процесс работы над проектом структурирован. Благодаря этому, можно сразу
понять, когда проект будет готов на все 100% и у каких историй в ходе работы
могут быть трудности при реализации. Гибкость методики также позволяет
оперативно изменять и добавлять задачи, которые могут появиться в ходе
выполнения текущих


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

Понравилась свобода действий: я мог самостоятельно выбирать, с чего начать и как реализовать те или иные задачи. Это позволило мне проявить креативность и даже вносить дополнительные идеи, которые не были прописаны в ТЗ. Такой подход
вдохновляет и мотивирует!
3
🥳🥳🥳Друзья, вот и настал момент! С 24.07 мы открываем запись на новый курс по FastAPI! Тот самый курс, который вы так долго ждали!

Мы подготовили первый большой проект, в ходе которого вы начнете свое знакомство с FastAPI на практике!

В процессе вы сделаете генератор сайтов: запустите первый проект на FastAPI, интегрируетесь по API с нейросетью и подключите готовый фронтенд.

Что будет в программе:

— Разворачиваем с нуля проект на FastAPI
— Знакомство с профессиональными инструментами разработки
— Подключение фронтенда на React
— Работа с MinIO
— Подключение нейросети DeepSeek
— Грамотная архитектура и структура кода

Запись на курс доступна в новом формате — занятия с ментором!

🚀Мы набираем первый поток, который стартует уже 30 июля! Количество мест ограничено!

👉Для записи оставьте заявку на странице или напишите нам в Телеграм

💥Но это еще не все! 29 июля Евгений Евсеев проведет вебинар, на котором разберем:
— Чем FastAPI хорош для нейросетей?
— Почему FastAPI не панацея?
— Как в вебе используют нейросети?
— В чем сложность подключения генеративных ИИ?
— Как устроен наш новый курс и как будут проходить занятия
— Ваши вопросы

🎁А еще на вебинаре будет сюрприз для тех, кто присоединится к нам онлайн!

👉 Ссылкой для подключения поделимся здесь 29 июля

➡️Есть вопросы, которые хотите разобрать с Евгением на вебинаре? Пишите в комментариях под этим постом!
🔥8👍2
⚡️⚡️⚡️Уже завтра Евгений Евсеев проведет вебинар, на котором разберем:
— Чем FastAPI хорош для нейросетей?
— Почему FastAPI не панацея?
— Как в вебе используют нейросети?
— В чем сложность подключения генеративных ИИ?
— Как устроен наш новый курс и как будут проходить занятия?
— Ваши вопросы

🎁А еще на вебинаре будет сюрприз для тех, кто присоединится к нам онлайн!

📌 Вебинар пройдет завтра 29 июля в 19:00

👉Ссылкой для подключения поделимся здесь

Ставьте 🔥, если планируете прийти!
🔥24
💥💥💥 В 19:00 Евгений Евсеев проведет вебинар, на котором разберем:

— Чем FastAPI хорош для нейросетей?
— Почему FastAPI не панацея?
— Как в вебе используют нейросети?
— В чем сложность подключения генеративных ИИ?
— Как устроен наш новый курс и как будут проходить занятия
— Ваши вопросы

🎁А еще на вебинаре будет сюрприз для тех, кто присоединится к нам онлайн!

👉 Ссылкой для подключения поделимся здесь за полчаса до мероприятия
🔥6
⁉️Микросервисы ускоряют разработку или тормозят ее

Сегодня в 12:00 мы поговорим о микросервисах и их влиянии на разработку.

⚡️В рамках дискуссии обсудим:
— При каких условиях переход на микросервисы действительно решает проблемы, а не создает новые? Размер команды, сложность домена, нагрузка?

— Какие самые частые ошибки совершают команды при переходе на микросервисную архитектуру и как их можно было бы избежать?

— Как микросервисы влияют на скорость разработки новых фичей — в каких случаях ускоряют, в каких тормозят?

— Observability в микросервисах: какой минимально необходимый набор инструментов критично иметь с первого дня?

— Как решается проблема distributed transactions и consistency? Eventual consistency — панацея или вынужденный компромисс?

— Conway's Law в действии: как структура команды влияет на архитектуру микросервисов и нужно ли перестраивать команды под новую архитектуру?

— Как измерить ROI от перехода на микросервисы? Какие метрики говорят о том, что переход был успешным или провальным?

— Service mesh, Kubernetes, API Gateway — что из сложной инфраструктуры критично с первого дня, а что можно добавить потом?

— Если стартовать проект сегодня, с чего лучше начать: с монолита или сразу с микросервисов?

📌Дискуссия пройдет в прямом эфире на YouTube сегодня в 12:00. Будет ретрансляция на RUTUBE.

От нас участвует Евгений Евсеев — основатель и технический директор Devman.

Приглашаем присоединиться, послушать и поучаствовать в обсуждении в комментариях!

👉 Трансляция на YouTube
👉 Ретрансляция на RUTUBE

Нажимайте на колокольчик, чтобы не пропустить трансляцию!
🔥3