tgindex
Григорий IT://home

Григорий IT://home

Статистика
@grigo_itрусский

Блог препода и Backend‑разработчика - личный опыт, советы и интересное из моих занятий и проектов Автор: @ad_astraa1

Последний пост
11 авг.
Последнее чтение
12 авг.
Постов за неделю
1
Всего постов
65
Тип
открытый
Язык
русский
В каталоге с
12 авг.
Подписчики
302
0 за 3 дн.
Сутки
0
0,00%
Неделя
 
Месяц
 
Просмотров на пост
176
40 постов
Вовлечённость
58,3%
к подписчикам
Постов в день
0,1
всего 65
Упоминаний
0
каналов
Охват размещения
оценка
1/24сутки в ленте
42
1/48двое суток
48
1/72трое суток
51

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 11 авг.4817из innoprog

    ⚡️Aiohttp: ускоряем работу с API в Python Представь ситуацию: ты разрабатываешь бэкенд веб-платформу, которой необходимо регулярно делать по 10 запросов в 10 разных API - При обычном использовании requests мы отправляем первый запрос, ждём ответа, потом второй, потом третий и так далее... - А можно сделать так: пока один API обрабатывает наш запрос, программа может переключиться на работу с другими запросами Вот для таких задач и существует aiohttp aiohttp - это библиотека для асинхронной работы с HTTP в Python, с её помощью можно как отправлять HTTP-запросы, так и поднимать свой web-сервер Главная фишка тут именно в асинхронности Допустим, у нас есть несколько адресов: import asyncio import aiohttp async def get_site(session, url): async with session.get(url) as response: print(url, response.status) async def main(): urls = [ "https://python.org", "https://github.com", "https://google.com" ] async with aiohttp.ClientSession() as session: await asyncio.gather( *[get_site(session, url) for url in urls] ) asyncio.run(main()) Что здесь происходит? 👇 1. Мы создаём одну клиентскую сессию (ClientSession) 2. Делаем сразу несколько запросов через asyncio.gather() - функцию, которая запускает несколько асинхронных операций вместе и ждёт, пока они завершатся 3. И не ждём, пока каждый запрос полностью закончится перед запуском следующего 4. Пока мы ждём ответ от одного сайта, Python может переключиться на обработку другого запроса В этих задачах aiohttp будет особенно полезен: - работа с большим количеством API - парсеры и сбор данных - микросервисы - Telegram-боты - любые задачи, где программа много ждёт сеть Чем это лучше обычной библиотеки requests? 1. Если нужно сделать один-два запроса, то requests может подойти: requests.get(url) 2. Но если запросов сотни, код на requests много времени просто ждёт ответа от API, а с aiohttp это время ожидания можно использовать для выполнения других запросов Важно: aiohttp не делает сам HTTP-запрос быстрее, выигрыш появляется за счёт того, что во время ожидания выполнения одного запроса программа может заниматься другими Подводя итог, можно сказать следующее: requests - простая и удобная библиотека для обычных запросов и небольших скриптов aiohttp - библиотека помощнее, которая нужна в ситуациях, когда начинается серьёзная асинхронная работа с сетью А какие асинхронные библиотеки вы использовали в своих проектах?

  • 6 июл.14025из innoprog

    Сериализаторы простыми словами Слово страшное (много букв ааа), но если совсем по-простому его пояснять, то сериализатор - это переводчик между Python-объектами и данными, которые уходят или приходят через API Зачем он нужен? Представь, что ты разрабатываешь web-сервис и у тебя есть некая переменная-словарь в Python-коде: user = { "id": 1, "name": "Алексей" } И перед нами стоит задача: нужно отправить эту информацию на смартфон пользователя через API Но есть загвоздка - приложение на смартфоне пользователя не понимает Python-структуры (в т.ч. переменные), как тогда быть...🤷‍♂️ Ответ прост - превратить данные в текст формата JSON И тогда пользователь получит на своё устройство что-то вроде такого текста: { "id": 1, "name": "Алексей" } И уже с текстом ему будет проще справиться, чем с какими-то там python-объектами и python-переменными Вот это превращение Python-объекта в JSON и называется сериализацией Работает это и в обратную сторону: Например, когда пользователь заполняет форму регистрации и нажимает кнопку "Отправить", мы по сути шлём на сервер данные в виде JSON-текста: { "name": "Алексей", "email": "Aleksey@mail.com" } Но важный момент - перед тем как сохранить эти данные в базу данных на сервере, нужно как минимум проверить - все ли поля в форме заполнены и корректный ли тип у данных (не написал ли пользователь слово "Привет" в окне для ввода возраста) А если вместо возраста пришло слово "Привет", сериализатор сразу скажет: стоп, тут ошибка, возраст должен быть числом Например, с помощью библиотеки Pydantic можно описывать структуру данных и превращать объект в словарь/JSON: from pydantic import BaseModel class UserRegister(BaseModel): name: str age: int data = { "name": "Алексей", "age": 25 } user = UserRegister(**data) print(user.model_dump()) print(user.model_dump_json()) ☝️Тут мы описываем, какие поля ожидаем, и какого они должны быть типа. Таким образом, сериализатор обычно делает две вещи: 1. Готовит данные для отправки из сервера клиенту 2. Проверяет данные, которые пришли от клиента на сервер Поэтому в backend они используются почти в каждом запросе к API

  • 15 июн.205141из innoprog

    👨‍💻 FastAPI vs Django vs Flask - какая разница? Разбираемся вместе с Григорием, преподавателем INNOPROG Те, кто только делают первые шаги в backend-разработке, часто спрашивают: какой фреймворк лучше выбрать - FastAPI, Django или Flask? И какая между ними вообще разница? Если объяснять по-простому: Django - это фреймворк, в котором вы найдёте много готового: админку, авторизацию, ORM, структуру проекта и другие инструменты для полноценного веб-сервиса Flask - это минималистичный фреймворк, который даёт базу, а дальше вы сами решаете, что подключать и как собирать проект FastAPI - это современный фреймворк на Python, изначально ориентированный на создание API и удобный для backend-сервисов, которые принимают запросы и отдают данные frontend, мобильным приложениям, ботам или другим сервисам Как обычно выбирают между ними? - Если нужен большой сайт или сервис с кучей готовых вещей - чаще смотрят в сторону Django - Если хочется больше свободы и минимализма - берут Flask - Если нужен удобный и быстрый API на Python с валидацией данных и Swagger-документацией, обычно выбирают FastAPI То есть, если совсем кратко: - Django = много готового - Flask = много свободы - FastAPI = удобно делать API ❗️Что выбрать новичку? - Если хочешь базово понять, как работают веб-сервисы, можно зайти через Flask - Если хочешь делать что-то ближе к реальному сервису, смотри на FastAPI - Если нужен полноценный веб-проект с кучей готовой инфраструктуры, хорошим вариантом будет Django Но важно помнить: лучшего фреймворка вообще не существует Есть фреймворк, который лучше подходит под конкретную задачу! А с какого из них начинали вы? Пишите в комментариях к посту 👇

  • Недавно ко мне обратился заказчик, нужно было реализовать фичу общих корзин для небольшого сервиса доставки ❓Смысл такой: 1. один пользователь создаёт общую корзину 2. получает ссылку или QR 3. скидывает друзьям 4. каждый заходит и добавляет свои позиции 5. а потом создатель оформляет и оплачивает весь заказ Отдельно сделал фиксацию оплаты: создатель видит, кто сколько должен перевести, участники могут отметить перевод, а создатель - подтвердить 🔒После старта оплаты корзина блокируется, чтобы никто уже не менял состав заказа На скрине выше пока черновой интерфейс, но сама backend-логика уже работает #projects

  • 9 июн.192131

    💻Анатомия бэкенда #backend

  • Всем такого директорства😁 #meme

  • видео или голосовое, без подписи

  • видео или голосовое, без подписи

  • видео или голосовое, без подписи

  • 2 июн.208143

    🐍Универсальность Python подкрепляется широким выбором фреймворков для разных задач #python

  • Всех с первым днём лета, друзья🔅 Тепло, солнце и водоёмы ждут🥃

  • видео или голосовое, без подписи

  • 🤌Mamma mia 🇮🇹 #meme

  • 🇬🇧Ну чтож, спустя столько времени у меня наконец добрались руки до бота для изучения английских слов, о котором я писал аж в декабре Возможности бота: ⏺️Интервальное повторение изучаемых слов ⏺️Ежедневные напоминания ⏺️Викторина по изучаемым словам ⏺️Отлеживание…

  • 28 мая139131

    💻Для тех кто на сервере: мини-шпаргалка по HTTP-статусам 📌Сохрани, пригодится #tips

  • 🇬🇧Ну чтож, спустя столько времени у меня наконец добрались руки до бота для изучения английских слов, о котором я писал аж в декабре Возможности бота: ⏺️Интервальное повторение изучаемых слов ⏺️Ежедневные напоминания ⏺️Викторина по изучаемым словам ⏺️Отлеживание прогресса друзей Проект в данный момент работает корректно, поправил множество багов, вы можете его протестировать тут 👉 @grigo_it_English_bot 🐱Исходный код проекта также разместил на своём гитхабе: тык 💬Пишите в лс или тут в комментах, если возникнут проблемы при работе —————— ⚡️Также в ближайшее время планирую создать животного-маскота для данного бота (как Дуо у Дуолинго, да-да👋), предлагайте своих животных в комментариях 👇 #pet

  • 25 мая151161

    💻Уже некоторое время участвую в командной разработке одного небольшого стартап-проекта как backend-разработчик На прошлой неделе плотно занимался серверной частью: доработал REST API, описал основные сценарии работы сервиса и подготовил для команды Swagger-документацию👩‍💻 Проект пишу на Django + DRF 🔨, в ближайшее время планируется интеграция с мобилкой на Flutter👩‍💻 ⏺️Как думаете, из какой сферы проект? #projects

  • 🐱Друзья, в свете слухов об очередной мишени для блокировок предлагаю небольшой интерактив - обмен GitHub-аккаунтами ⏺️Делитесь вашими аккаунтами в комментариях, бонусом можете кратко описать пару интересных проектов🤖 📌Мой аккаунт: github.com/grigoscope #git #github

  • 19 мая158232

    🧠 #meme

  • 18 мая14917из innoprog

    Python 3.15 выглядит довольно интересно - И не потому, что там появилась одна огромная фича, после которой срочно надо всё бросить и переписывать проект - Скорее наоборот: релиз выглядит как набор небольших, но полезных улучшений, которые могут сделать повседневную разработку приятнее 5 улучшений, на которые стоит отметить: 1. Lazy imports - Импорты можно будет делать ленивыми - то есть модуль загрузится только тогда, когда реально понадобится в работе кода - Это особенно полезно для приложений, где важна скорость старта. 2. frozendict - В Python появляется встроенный неизменяемый словарь - По смыслу похож на обычный dict, но после создания его уже нельзя менять -Плюс он может быть хешируемым 3. Новые инструменты профилирования - В Python добавляют отдельный пакет для профилирования, в том числе statistical sampling profiler - Проще говоря, можно будет с меньшей нагрузкой на саму программу отслеживать - где код работает слишком долго и искать узкие места 4. Улучшения JIT JIT (Just-In-Time, «точно в срок») - это технология, используемая в программировании для ускорения работы программ путем компиляции байт-кода в машинный код непосредственно во время выполнения, а не до запуска - JIT в CPython всё ещё экспериментальный, но для версии 3.15 работают над его улучшением - Улучшают трассировку, генерацию машинного кода и оптимизации - Это не значит, что Python внезапно стал по скорости сопоставим с C++, но направление для развития само по себе интересное 5. Более понятные ошибки - Python продолжает улучшать сообщения об ошибках - И это реально важно - хорошее сообщение об ошибке экономит кучу времени, особенно когда ты просто опечатался в названии метода В целом Python 3.15 выглядит довольно практично: - Не каждая фича будет нужна каждому разработчику, тем более если вы работаете над небольшим проектом - Но если вы разрабатываете бэкенд, занимаетесь автоматизацией, микросервисами, обработкой данных или просто много работаете с Python, то на этот релиз точно стоит обратить внимание Релиз кстати запланирован на октябрь этого года