Девман для питонистов
539 subscribers
157 photos
3 videos
205 links
Веб-разработка на Python. Канал от практиков.

Сайт школы Девман: https://dvmn.org/
Контакт для связи: @yulya_devman
Download Telegram
Времена, когда веб-приложение делал разработчик в соло остались в прошлом. Продукты стали сложнее, темпы разработки и ожидания пользователей выросли.
Сейчас все чаще для разработки сколько-нибудь сложных веб-сервисов формируют команду из разных специалистов. Чем больше компания, тем больше специализаций в команде встречается.

➡️ Давайте разберемся, кто есть кто на примере того, как устроены команды на наших коммерческих проектах.
👍61
⚔️Битва фреймворков: Django vs FastAPI

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

Если при использовании библиотеки разработчик сам выбирает какие функции когда вызывать, то фреймворк решает за него — даёт «скелет» проекта и, наоборот, сам вызывает код, написанный разработчиком.

Как правило, фреймворки объемнее, больше и сложнее отдельной библиотеки. Фреймворки состоят из множества модулей и подсистем.
Для веб-разработки самые известные фреймворки ➡️ Django и FastAPI.

📎 Есть ещё микрофреймворк Flask, но по факту он уже не актуален и для новых проектов нет никаких причин выбирать его, а не FastAPI или Django. Flask можно использовать в учебных целях для первого пет-проекта, т.к. у него низкий порог входа.

⁉️Что лучше: FastAPI или Django? Что лучше: ложка или вилка? Наушники или колонки? Эти вопросы одинаково нелепы.
Вместо этого лучше спросим «Чем FastAPI отличается от Django?» и «Когда мне использовать FastAPI, а когда — Django?». Надо разобраться.

⚡️Django

➡️Django — это фреймворк на Python для создания «жирных» сервисов с кучей логики, где нужны декомпозиция, готовые «батарейки» и автоматически сгенерированная админка.

➡️Django включает в себя ORM, панель администратора и шаблонизатор для создания HTML-страниц. Эти функции ускоряют разработку. В Django реализована философия «все включено».

➡️Для валидации и сериализации данных, особенно при активном использовании API интеграций, стоит использовать свежую батарейку Django Ninja.

Известные проекты, написанные с использованием Django:
📌 Youtube
📌 Instagram*
📌 Google Search
📌 Dropbox
📌 Spotify

⚡️FastAPI

➡️FastAPI — это современный веб-фреймворк для создания API-интерфейсов на Python. Он достаточно прост в использовании, предлагает мощный современный набор инструментов для разработки API и не требует использования реляционных баз данных.

➡️За счёт асинхронности FastAPI даёт заметный выигрыш по скорости в сравнении с Django при общении бэкенда по API с другими сервисами. К ним относятся сервисы реального времени и микросервисы.

➡️Появление FastAPI буквально «взорвало» отрасль веб-разработки своим необычным новом подходом. Ключевое из них — глубокая интеграция с библиотекой Pydantic.
Сейчас эти подходы FastAPI буквально становятся стандартом в отрасли. Их портируют даже на старые фреймворки типа Django — там есть Django-Ninja, она повторяет многие фичи FastAPI, но уже поверх Django.

➡️ Библиотека Pydantic обеспечивает автоматическую проверку запросов, сериализацию и десериализацию данных. Это уменьшает количество ошибок, упрощает код и позволяет автоматически генерировать документацию к API.

Известные проекты, написанные с использованием FastAPI:
📌 Microsoft Azure
📌 Netflix

Итак, фреймворки очень разные и нужны в разных случаях.

Выбирайте Django, если:
✏️ Заранее известно, что проект будет большой
✏️ Разрабатывать будет большая или средняя команда, которая до этого не работала вместе
✏️ Если нужна реляционная база данных
✏️ Нужна готовая админка к базе данных

⚡️ Познакомиться с Django можно на мини-курсах «Знакомство с Django: ORM», «Django», «Продвинутая вёрстка в Django»

Выбирайте FastAPI, если:
✏️ Важна асинхронность
✏️ Планируется много интеграций по API с другими веб-сервисами
✏️ Пишете микро-сервис с API
✏️ Используете нереляционные базы данных

*деятельность организации Meta Platforms Inc и ее продуктов Instagram и Facebook запрещена в Российской Федерации.
🔥84👍1
🔥Мы запустили новую реферальную программу!

Дарим бонус за каждого друга, который запишется на курс по вашей реферальной ссылке и пройдет первые три месяца обучения!

Какие условия?

🎁5000 рублей за каждого друга.

🎁 А другу — скидка 5000 рублей на оплату курса

Что нужно сделать?

⚡️Зарегистрироваться или авторизоваться на сайте Devman

На странице появится персональная реферальная ссылка. Нужно отправить ее другу. Ссылка многоразовая, её можно разослать всем друзьям, которые хотят стать Питонистами.

⚡️ Попросить друга оставить заявку на курс по Вашей реферальной ссылке

Наш менеджер свяжется с другом, ответит на вопросы и проследит, чтобы он получил скидку на обучение.

⚡️ Написать нам в Telegram, подтвердить зачисление друга и отправить заявку на вознаграждение

Мы пришлем бонус после того, как друг пройдет первые три месяца обучения.

❗️Реферальная программа не распространяется на мини-курсы.

Остались вопросы?
Подробные условия можно почитать здесь.
А еще вы можете написать нам, чтобы все уточнить!
🔥3
Какого цвета слово

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

🌟Продукт — игра «Какого цвета слово». Это развивающая игра, где не важно что написано, но надо назвать цвет, которым написано. Попробуйте — это не так-то просто!

➡️ Пример веб-версии. В ней ответ вводится пользователем. В оффлайне часто играют с карточками или смотрят слайды на экране — тогда надо называть голосом, за подсчетом очков при этом следит ведущий.

Нина совсем недавно начала обучаться Python и сделала вариант для игры оффлайн. То, что получилось у Нины покажем в следующем сообщении.


➡️ Ссылка на код: https://replit.com/@repldevman/WhatColor

from time import sleep

print("\u001b[31m оранжевый")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[38;5;214m зеленый")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[38;5;226m красный")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[36m синий")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[34m фиолетовый")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[35m желтый")
sleep(1)
print('\033[2J')
print('\u001b[4A', end='')

print("\u001b[0m Конец игры")


⚡️Первая игра прошла на ура!

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

А вот было бы здорово, чтобы можно было генерировать случайные последовательности слов! Или может даже получится добавить ввод ответа и подсчет очков?

💫Давайте возьмёмся все вместе, улучшим код и доработаем продукт так, чтобы им захотелось пользоваться.

➡️Пишите код, делитесь ссылками на свои проекты, записывайте гифки, предлагайте фичи — и посмотрим, что у нас получится! А мы вернемся с нашей версией во вторник!
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Вот какая игра получилась у Нины ⬆️
Давайте посмотрим какие проблемы в коде прежде всего стоит поправить:
➡️ вынести часто используемые коды в константы
➡️ структурировать код с помощью if - main
➡️ избавиться от копипасты с помощью цикла и функции

https://replit.com/@repldevman/UpgradedWhatColor#main.py

import argparse
import random

from time import sleep

WORDS = ("красный", "оранжевый", "желтый", "зеленый", "синий", "фиолетовый")
COLOR_CODES = (
"\u001b[38;5;226m",
"\u001b[31m",
"\u001b[38;5;214m",
"\u001b[32m",
"\u001b[34m",
"\u001b[35m",
)
CLEAR_CODE = "\033[2J"
UP_CODE = "\u001b[4A"
CLEAR_COLOR_CODE = "\u001b[0m"


def parse_arguments():
parser = argparse.ArgumentParser(
description='Игра "Назови цвет"')
parser.add_argument('-s', '--sleep_delay', type=int, default=1,
help='задержка между словами в секундах')
parser.add_argument('-n', '--words_amount', type=int, default=10,
help='количество слов в последовательности')
return parser.parse_args()


def print_word_with_delay(word, color_code, sleep_delay):
print(f"{color_code} {word}")
sleep(sleep_delay)
print(CLEAR_CODE)
print(UP_CODE, end="")


def main():
args = parse_arguments()

for _ in range(args.words_amount):
print_word_with_delay(
word=random.choice(WORDS),
color_code=random.choice(COLOR_CODES),
sleep_delay=args.sleep_delay,
)

print(CLEAR_COLOR_CODE, end="")
print("Конец игры")


if __name__ == '__main__':
main()

После рефакторинга кода мы расширили функционал:
➡️ Добавили функционал для случайного выбора слова и цвета с помощью функции random.choice().
➡️ Количество раундов игры и время задержки между кадрами вынесли в аргументы командной строки с помощью библиотеки argparse.

Друзья, совсем не увидели активности на интерактиве😢 Укажите, пожалуйста, почему не приняли участие, чтобы мы в следующий раз выбрали другой формат. Свои варианты и пожелания пишите в комментариях ➡️
1
⚡️Библиотеки Python. Не изобретайте велосипед

➡️Библиотеки (англ. package) бывают стандартными — те, которые входят в поставку вместе с интерпретатором Python, и сторонними.

Сторонние библиотеки в большинстве случаев можно найти в индексе PyPI. На данный момент в PyPI уже более полумиллиона готовых библиотек.

➡️Фреймворки для Python — это тоже особые библиотеки. Основное свойство фреймворка — перехват управления потоком исполнения программы.

Вот, например, библиотеки и фреймворки команды Девмана.

В «Основах Python» вы столкнетесь со сторонними библиотеками Pillow, num2words, transliterate, smtplib, faker и др.

🧩Бывает, что сторонние библиотеки настолько сильно повлияли на python-сообщество, что их добавляют в стандартную поставку. Так очень популярная библиотека для асинхронного кода `asyncio` стала стандартной в версии 3.4.

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

☑️Использование библиотек значительно экономит время на разработку, а значит итоговый продукт получится дешевле и будет сделан раньше — это крайне важно для бизнеса.

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

Знание, опыт использования и навык быстро осваивать новые библиотеки — это один из столпов разработки на Python!

🟡Срок жизни библиотек не вечен. Иногда контрибьютеры перестают выделять время на поддержку, библиотека становится несовместима с новыми версиями языка и отмирает. А иногда появляются конкуренты, которые настолько хорошо выполняют свою работу, что вытесняют предшественника.

👉🏻Яркий пример – `unittest`, который указан в документации Django, как библиотека для тестирования, уже по факту вытеснен `pytest`.

👉🏻Микрофреймворк Flask практически проиграл мощному и лёгкому FastAPI. FastAPI рванул вперёд за счёт глубокой интеграции библиотеки `Pydantic`, которая уже стала новым стандартом веба.

👉🏻Позиции вышеупомянутого `asyncio`тоже уже шатаются под натиском `anyio`. Системообразующая технология, кандидат на полное включение в стандартную поставку.

👉🏻А всем известный `requests` похоже скоро уступит место свежему`HTTPX`.

➡️Делитесь в комментариях, за какими новыми библиотеками будущее Python?
2
💥Обновили первый урок мини-курса «Основы Python».

Заменили онлайн IDE Repl.it, который тормозил, некорректно отображал ANSI коды и просто раздражал бесконечными подсказками и внезапными авто дополнениями. Представляем онлайн IDE — CodeHS!

Преимущества CodeHS

— Позволяет писать код в браузере и передавать ссылку на него даже без регистрации
— Консоль работает шустро и корректно отображает ANSI коды для урока «Раскрутите планету»
— Работает с российскими электронными почтами yandex.ru, mail.ru и др.
— Не требует подтверждения аккаунта по почте или телефону
— Бесплатный сервис без ограничений на количество проектов и время использования
— Не требует установки софта на компьютер
— Не требует VPN для работы из РФ (не проверяли в новых регионах РФ)
— Не требует указывать номер банковской карты для регистрации

🔻Недостатки

— Регистрация выглядит немного запутанной (но мы сделали туториал в Энциклопедии)
— Сервис полностью на английском языке
— Нельзя импортировать сторонние библиотеки
— Работает только при стабильном интернете

☑️Подойдет для:

— Первых проектов и упражнений при обучении Python
— Быстрого прототипирования и экспериментов для разработки
— Если нужно запустить простой код в дороге с телефона или планшета (при наличии интернета)
🔥9👍5🥰1
Скидки 25% на мини-курсы «Основы Python», «Git и GitHub», «API веб-сервисов» и «Вёрстка для питониста» с 13 по 20 декабря! 🔥

🎅Скоро Новый год и мы спешим порадовать вас скидками на мини-курсы!

❄️«Основы Python». Изучите базовые конструкции языка и попрактикуетесь в отладке кода. Подойдет даже тем, кто не пробовал программировать!

👉Получить скидку можно здесь

❄️«Git и GitHub» поможет освоить инструменты, которые позволяют совместно работать над кодом и сохранять историю изменений, когда над проектом работают несколько разработчиков.

👉Получить скидку можно здесь

❄️ «API веб-сервисов» поможет научиться вытягивать данные, обрабатывать их и публиковать в интернете. Будет полезен начинающим программистам, тестировщикам и маркетологам.

👉Получить скидку можно здесь

❄️«Вёрстка для питониста» поможет научиться подключать работу фронтендеров к бекенду, писать парсеры и верстать из готовых шаблонов с Twitter Bootstrap.

👉Получить скидку можно здесь

☃️Выбирайте мини-курс для себя и делитесь с друзьями!
🔥4
Всем привет!👋

Делимся последними обновлениями:

📩 Обновили почту для связи с нами. Теперь вместо dvmn.org@gmail.com принимаем письма на support@dvmn.org.

❗️ Все письма отправленные на старую почту мы не потеряем, они будут переадресованы на новый адрес.

📑Обновили пользовательское соглашение и политику конфиденциальности в соответствии с требованиями текущего законодательства

❗️ Обновление этих документов не повлияет на наше с вами взаимодействие и не изменит условия прохождения курса и мини-курсов!

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

Политика конфиденциальности — это документ, который устанавливает правила сбора, обработки и хранения персональных данных.
5🔥5
17-19 октября мы участвовали в форуме Innovation week. Возвращаемся с текстовой версией выступления! 🌟

Мы рассказывали о нашем опыте разработки системы учета и ведения контактов и обсуждали проблемы проектирования!

👉 Читайте статью и делитесь впечатлениями!

⚡️ Напоминаем, что мы открыты к сотрудничеству в разных форматах!

🧑‍💻 Если вы хотите стать частью постоянной команды PelidTeam, сообщите нам. При найме мы отдаем предпочтение нашим ученикам!

💰 Если у вас есть знакомые, которым нужна квалифицированная команда для веб-разработки, напишите нам и мы обсудим сотрудничество по реферальной программе или в другом формате!
🔥4
🎅Скидки 25% на мини-курсы «Знакомство с Django: ORM», «Django», «Чат-боты на Python» и «Асинхронный Python» с 23 по 31 декабря!

☃️ Начало нового года — отличный повод подтянуть или углубить свои знания!

❄️«Знакомство с Django: ORM». С этим мини-курсом вы сможете подготовиться к курсу по Django — поучаствовать в разработке сайтов и реализовать все, что относится к базам данных.

👉Получить скидку можно здесь

❄️«Django» — поможет освоить самый популярный веб-фреймворк на Python — сможете создавать современные сайты, строить стартапы и работать над проектами крупных IT-компаний!

👉Получить скидку можно здесь

❄️«Чат-боты на Python» — поможет получить боевые навыки создания чат-ботов и прикрутить первую нейросетку!

👉Получить скидку можно здесь

❄️«Асинхронный Python» — познакомит вас с написанием асинхронного кода и поможет получить востребованный на рынке навык!

👉Получить скидку можно здесь

☃️ Выбирайте мини-курс для себя или в подарок и делитесь новостью с друзьями!
🔥3
⚔️ Программист или ИИ? Чей код лучше?

Во вторник 24 декабря в 14:00 поучаствуем в мастер-классе «Программист против ИИ». Сразимся с ИИ в скорости, качестве и удобстве написанного кода!

Как будет проходить мастер-класс:
⚡️ Участник выберет задачу для демонстрации
⚡️ Напишет код в прямом эфире
⚡️ Параллельно ИИ тоже напишет код
⚡️ Результаты сравним по скорости, качеству и удобству

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

Мастер-класс пройдет в прямом эфире на Ютуб 24 декабря в 14:00 (будет ретрансляция на VK)

Приглашаем вас присоединиться и поболеть за нас! 🏆

Ссылку на трансляцию пришлем в день мастер-класса.
🔥14🥰1