ITDEAL
Kanalga Telegram’da o‘tish
Разработка комплексных IT решений для бизнеса и частных заказчиков. Чат: @pybytes_chat Founder: @lunasantrope
Ko'proq ko'rsatish1 198
Obunachilar
Ma'lumot yo'q24 soatlar
-67 kunlar
-2030 kunlar
Postlar arxiv
1 198
Шаблоны проектирования (часть 5)
🖥 Паттерн «Адаптер» — популярный структурный шаблон проектирования (structural pattern), который позволяет объектам с несовместимыми интерфейсами сотрудничать. Он перехватывает вызовы одного объекта и преобразовывает их в интерфейс, распознаваемый вторым.
☺️ Представьте, что у вас есть целый проект с конкретным интерфейсом и структурой. Вы решили его расширить и нашли подходящую библиотеку, однако ее интерфейс несовместим с вашим. Менять свой код или код библиотеки не очень рационально, поэтому на помощью приходит «Адаптер».
🌐 Вы можете создать класс, который будет наследовать интерфейс, совместимый с вашим кодом. А вызовы в этом классе передавать библиотеке в понятной ей структуре. Паттерн соблюдает принципы SRP и OCP и возможно создать двусторонний адаптер. Однако иногда проще и быстрее изменить уже существующий код, чем добавлять новые интерфейсы.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Шаблоны проектирования (часть 4)
🖥 Паттерн «Фасад» — это структурный шаблон проектирования (structural patterns) , который обеспечивает упрощенный (но ограниченный) интерфейс для сложной системы классов, библиотеки или платформы.
🙂 Работать с библиотекой или фреймворком напрямую не всегда удобно: проекту не нужен полный функционал, однако инициализировать все объекты и соблюдать порядок все равно придется. Тогда на помощью приходит «Фасад», который предлагает оставить и организовать только те функции, которые действительно нужны.
👀 Также фасадов в проекте может быть несколько, таким образом вы сможете разбить работу с библиотекой или API на несколько слоев. Важно отметить, что обычно фасад полностью управляет жизненным циклом объектов, которые использует, другими словами вид отношений — композиция.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Углубляемся в ООП (часть 3)
☺️ Композиция — это вид агрегации, однако с куда более сильной связью. Это тоже отношения «целое/часть» (whole/part), однако часть не может существовать отдельно от целого и может быть частью только одного целого за раз. А в свою очередь целое контролирует жизненный цикл части.
👀 Просто представьте анатомию человека: сердце может быть частью тела только одного человека (сиамских близнецов мы не рассматриваем) и оно не может существовать от человека отдельно.
😎 Также нужно добавить, что останавливаться только на композиции или агрегации не обязательно: можно вполне объединить их вместе. К примеру, один компонент может сразу создаваться вместе с целым в виде композиции, однако, если компонентов больше, то взаимодейстсвовать с целым они могут за счет агрегации.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Repost from ITDEAL
🚀🌐 ВАКАНСИЯ: FrontEnd Developer Junior 🌐🚀
Требования к кандидату:
➡️ JavaScript/ES6+: Знания и опыт в разработке на чистом JavaScript и современных стандартах ECMAScript.
➡️ Фреймворки: Владение React JS. Опыт работы с другими фреймворками – большой плюс!
➡️ HTML5 & CSS3: Продвинутые навыки в создании современных и отзывчивых интерфейсов.
➡️ RESTful API: Опыт работы с взаимодействием фронтенда с бэкендом через RESTful API.
➡️ Сборщики и модульные системы: Знание инструментов типа Webpack, Babel и понимание модульных систем (CommonJS, ES6 Modules).
➡️ Git: Навыки работы с системами контроля версий, в том числе опыт с Git.
Будет плюсом:
➡️ Тестирование кода: Знание и опыт в написании модульных и интеграционных тестов.
➡️ Опыт работы с GraphQL: Понимание и практический опыт работы с GraphQL API.
➡️ Английский язык: Хорошее понимание технической документации на английском.
Софт-скилы:
➡️ Коммуникабельность: Способность четко и эффективно общаться в команде.
➡️ Работа в команде: Опыт работы в командной среде, умение слушать и высказывать свое мнение.
➡️ Самостоятельность: Готовность принимать ответственность за свою работу и принимать инициативу.
🐱 Оклад: 500$ / месяц
🤖 Контакты @lunasantrope
1 198
Создаем свой API (часть 2)
😎 Все, что не является параметром пути (path parameter), автоматически становится параметром запроса (query parameter). Параметры запроса находятся в URL после знака
? и разделяются между собой знаком &.
🔤 http://127.0.0.1:8000/items/?skip=0&limit=10
🙂 Здесь /items/ будет путем, а skip и limit параметрами запроса со значениями 0 и 10. Разные виды параметров, конечно, между собой можно комбинировать и, конечно же, они могут быть и обязательными и необязательными.
👀 Также можно очень удобно настроить валидацию параметров. Сделать это можно немного разными способами, однако документация рекоменудет использовать функцию Annotated из встроенного модуля typing вместе с функциями Query и Path для валидации параметров запроса и пути.
🔤 Документация Pydantic: КЛИК
🔤 Документация FastAPI: КЛИК
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram1 198
🚀🌐 ВАКАНСИЯ: FrontEnd Developer Junior 🌐🚀
Требования к кандидату:
➡️ JavaScript/ES6+: Знания и опыт в разработке на чистом JavaScript и современных стандартах ECMAScript.
➡️ Фреймворки: Владение React JS. Опыт работы с другими фреймворками – большой плюс!
➡️ HTML5 & CSS3: Продвинутые навыки в создании современных и отзывчивых интерфейсов.
➡️ RESTful API: Опыт работы с взаимодействием фронтенда с бэкендом через RESTful API.
➡️ Сборщики и модульные системы: Знание инструментов типа Webpack, Babel и понимание модульных систем (CommonJS, ES6 Modules).
➡️ Git: Навыки работы с системами контроля версий, в том числе опыт с Git.
Будет плюсом:
➡️ Тестирование кода: Знание и опыт в написании модульных и интеграционных тестов.
➡️ Опыт работы с GraphQL: Понимание и практический опыт работы с GraphQL API.
➡️ Английский язык: Хорошее понимание технической документации на английском.
Софт-скилы:
➡️ Коммуникабельность: Способность четко и эффективно общаться в команде.
➡️ Работа в команде: Опыт работы в командной среде, умение слушать и высказывать свое мнение.
➡️ Самостоятельность: Готовность принимать ответственность за свою работу и принимать инициативу.
🐱 Оклад: 500$ / месяц
🤖 Контакты @lunasantrope
1 198
Создаем свой API (часть 1)
😎 Первое с чем стоит разобраться — это параметры или переменные в пути URL. Задаются они по схожему принципу, как в обычном форматировании строк с помощью метода format(). Выглядит это все дело примерно так:
@app.get("/items/{item_id}")
async def read_item(item_id):
return {"item_id": item_id}
🙂 Тут мы создаем фукнцию, которая будет обрабатывать GET запрос в случае, когда в пути после items есть какое-то значение. Значение параметра пути item_id перейдет в аргумент функции item_id. Важно, чтобы эти названия совпадали, иначе аргумент функции будет считаться параметром запроса (query parameter).
☺️ Таким образом, если мы, к примеру, перейдем по ссылке http://127.0.0.1:8000/items/2, то наш API выдаст следующий ответ: {"item_id":2}. Также из-за того, что FastAPI использует Pydantic можно настроить валидацию переменных, просто указав тип с помощью стандартной аннотации типов.
👀 В дальнейшем рассматривать голый ответ от сервера может стать неудобно, поэтому FastAPI автоматически генерирует довольно удобные документации вашего API. Чтобы их рассмотреть перейдите по следующим ссылкам:
🔤 Документация, предоставленная Swagger UI — http://127.0.0.1:8000/docs.
🔤 Докуменация, предоставленная ReDoc — http://127.0.0.1:8000/redoc.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram1 198
Создаем свой API (введение)
😎 API (Application Programming Interface) — это интерфейс, который позволяет программным системам взаимодействовать друг с другом. API определяет набор правил и протоколов, которые используются для создания и интеграции программного обеспечения.
🙂 API функционирует по принципу запросов и ответов. Клиент отправляет запрос к серверу, сервер его обрабатывает и дает ответ. Обычно для этого используются протоколы HTTP или HTTPS. При создании API используются специальные методы HTTP для выполнения разных задач, вот основной список:
🔤 POST — отправка данных для создания ресурса.
🔤 GET — получение данных
🔤 PUT — Обновление данных.
🔤 DELETE — Удаление данных.
☺️ Для создания API в Python можно воспользоватся несложным фреймворком FastAPI, который основан на уже нам знакомом Pydantic и Starlette — набор инструментов ASGI для создания асинхронных веб-сервисов. Чтобы создать свое первое приложение, выполните команды ниже:
🔤 Установите фреймворк с помощью команды
pip install fastapi.
🔤 Скопируйте код выше в новый файл и запустите его в режиме разработки с помощью команды fastapi dev path/to/file.py в терминале.
🔤 Вы увидите довольно объемный вывод, и, перейдя по специальному адресу для обращения к серверу, который работает на вашем компьютере — http://127.0.0.1:8000/, вы сможете получить первый ответ от своего API.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram1 198
ScrapeGraphAI | ИИ-парсер
🙂 ScrapeGraphAI — это Python библиотека , созданная для автоматизированного сбора данных с сайтов и файлов. Для сбора данных она использует LLM (large language model), что делает работу с библиотекой очень простой.
🧠 Однако инструмент не привязан к конкретной модели, поэтому вы можете использовать, как, к примеру, и модели от OpenAI, как и модели, установленные на ваш компьютер с помощью Ollama. При этом структура кода остается одной и той же, что делает ScrapeGraphAI довольно полезным инструментом.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Углубляемся в ООП (часть 2)
😎 Агрегация — это форма ассоциации, в которой все объекты опять же имеют отдельные жизненные циклы, однако один объект принадлежит другому. Это отношения «целое/часть» (whole/part), где целому или родителю принадлежит часть или потомок.
🥱 Просто представьте отношения между библиотекой и книгами. Библиотека содержит разные книги, однако, удалив саму библиотеку, книги останутся, как и наоборот. И, понятное дело, книгам не может принадлежать библиотека.
📌 Также, как и ассоциация, агрегация может быть 3 видов: one-to-one, one-to-many, many-to-many. Эта концепция тоже используется очень часто и помогает описать разные жизненные задачи.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Углубляемся в ООП (часть 1)
🙂 Все знают про четыре столпа ООП: инкапсуляция, наследование, полиморфизм и абстракция. Понимание и правильное применение этих принципов поможет сделать код куда лучше. Однако на этом концепции не заканчиваются, еще одной важной концепцией является ассоциация.
👀 Ассоциация — это слабый тип отношений между классами, который устанавливается через их объекты. Каждый объект независим, и между собой эти объекты могут взамодействовать. Просто представьте отношения между учеником и учителем.
📌 Также бывает три вида ассоциации:
🔤 one-to-one — каждому объекту одного класс соответствует один объект другого.
🔤 one-to-many — один объект одного класса может быть связан с несколькими объектами другого.
🔤 many-to-many — несколько объектов одного класса могут быть связаны с несколькими объектами другого класса.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
1 198
Шаблоны проектирования (часть 3)
🥱 Шаблон «Стратегия» (Strategy) — поведенческий паттерн (behavioral pattern), который предлагает определить семейство алгоритмов, поместить каждый в отдельный класс и сделать их объекты взаимозаменяемыми.
👀 Представим, что в коде есть всего один класс, отвечающий за навигацию. Каждый раз, когда вы хотите добавить новый вид построения маршрута, (автомобильный, пешеходный и т.д.), вам приходится этот класс изменять, что не очень удобно и может испортить уже работающий код.
😎 «Стратегия» предлагает выделить все алгоритмы маршрутов в отдельные классы — стратегии, а в изначальном классе навигации — контексте, создать поле для хранения ссылки на один из алгоритмов. Контекст не выбирает алгоритм, он просто делегирует работу связанному объекту стратегии.
📌 Этот паттерн используется довольно часто, он соблюдает принцип OCP и значительно повышает гибкость кода. Однако, если у вас немного алгоритмов, использовать паттерн смысла нет — он просто раздует код, к тому же многие языки программирования позволяют сделать все тоже самое без дополнительных классов.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
