ITDEAL
1.11K subscribers
749 photos
108 videos
11 files
572 links
Разработка комплексных IT решений для бизнеса и частных заказчиков.

Чат: @pybytes_chat

Founder: @lunasantrope
Download Telegram
Углубляемся в ООП (часть 1)

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

👀 Ассоциация — это слабый тип отношений между классами, который устанавливается через их объекты. Каждый объект независим, и между собой эти объекты могут взамодействовать. Просто представьте отношения между учеником и учителем.

📌 Также бывает три вида ассоциации:

🔤 one-to-one — каждому объекту одного класс соответствует один объект другого.
🔤 one-to-many — один объект одного класса может быть связан с несколькими объектами другого.
🔤 many-to-many — несколько объектов одного класса могут быть связаны с несколькими объектами другого класса.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Углубляемся в ООП (часть 2)

😎 Агрегация — это форма ассоциации, в которой все объекты опять же имеют отдельные жизненные циклы, однако один объект принадлежит другому. Это отношения «целое/часть» (whole/part), где целому или родителю принадлежит часть или потомок.

🥱 Просто представьте отношения между библиотекой и книгами. Библиотека содержит разные книги, однако, удалив саму библиотеку, книги останутся, как и наоборот. И, понятное дело, книгам не может принадлежать библиотека.

📌 Также, как и ассоциация, агрегация может быть 3 видов: one-to-one, one-to-many, many-to-many. Эта концепция тоже используется очень часто и помогает описать разные жизненные задачи.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3
ScrapeGraphAI | ИИ-парсер

🙂 ScrapeGraphAI — это Python библиотека , созданная для автоматизированного сбора данных с сайтов и файлов. Для сбора данных она использует LLM (large language model), что делает работу с библиотекой очень простой.

🧠 Однако инструмент не привязан к конкретной модели, поэтому вы можете использовать, как, к примеру, и модели от OpenAI, как и модели, установленные на ваш компьютер с помощью Ollama. При этом структура кода остается одной и той же, что делает ScrapeGraphAI довольно полезным инструментом.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Это я в рабочей поездке в Грузии, вы как там?

Вид с моего номера
6
Создаем свой API (введение)

😎 API (Application Programming Interface)это интерфейс, который позволяет программным системам взаимодействовать друг с другом. API определяет набор правил и протоколов, которые используются для создания и интеграции программного обеспечения.

🙂 API функционирует по принципу запросов и ответов. Клиент отправляет запрос к серверу, сервер его обрабатывает и дает ответ. Обычно для этого используются протоколы HTTP или HTTPS. При создании API используются специальные методы HTTP для выполнения разных задач, вот основной список:

🔤 POST — отправка данных для создания ресурса.
🔤 GET — получение данных
🔤 PATCH — обновление данных.
🔤 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 / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Создаем свой 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 / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🚀🌐 ВАКАНСИЯ: 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
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Создаем свой 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 / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Forwarded 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
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Углубляемся в ООП (часть 3)

☺️ Композиция — это вид агрегации, однако с куда более сильной связью. Это тоже отношения «целое/часть» (whole/part), однако часть не может существовать отдельно от целого и может быть частью только одного целого за раз. А в свою очередь целое контролирует жизненный цикл части.

👀 Просто представьте анатомию человека: сердце может быть частью тела только одного человека (сиамских близнецов мы не рассматриваем) и оно не может существовать от человека отдельно.

😎 Также нужно добавить, что останавливаться только на композиции или агрегации не обязательно: можно вполне объединить их вместе. К примеру, один компонент может сразу создаваться вместе с целым в виде композиции, однако, если компонентов больше, то взаимодейстсвовать с целым они могут за счет агрегации.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Шаблоны проектирования (часть 4)

🖥 Паттерн «Фасад» —  это структурный шаблон проектирования (structural patterns) , который обеспечивает упрощенный (но ограниченный) интерфейс для сложной системы классов, библиотеки или платформы.

🙂 Работать с библиотекой или фреймворком напрямую не всегда удобно: проекту не нужен полный функционал, однако инициализировать все объекты и соблюдать порядок все равно придется. Тогда на помощью приходит «Фасад», который предлагает оставить и организовать только те функции, которые действительно нужны.

👀 Также фасадов в проекте может быть несколько, таким образом вы сможете разбить работу с библиотекой или API на несколько слоев. Важно отметить, что обычно фасад полностью управляет жизненным циклом объектов, которые использует, другими словами вид отношений — композиция.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Шаблоны проектирования (часть 5)

🖥 Паттерн «Адаптер» — популярный структурный шаблон проектирования (structural pattern), который позволяет объектам с несовместимыми интерфейсами сотрудничать. Он перехватывает вызовы одного объекта и преобразовывает их в интерфейс, распознаваемый вторым.

☺️ Представьте, что у вас есть целый проект с конкретным интерфейсом и структурой. Вы решили его расширить и нашли подходящую библиотеку, однако ее интерфейс несовместим с вашим. Менять свой код или код библиотеки не очень рационально, поэтому на помощью приходит «Адаптер».

🌐 Вы можете создать класс, который будет наследовать интерфейс, совместимый с вашим кодом. А вызовы в этом классе передавать библиотеке в понятной ей структуре. Паттерн соблюдает принципы SRP и OCP и возможно создать двусторонний адаптер. Однако иногда проще и быстрее изменить уже существующий код, чем добавлять новые интерфейсы.

🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
3
This media is not supported in your browser
VIEW IN TELEGRAM
3
🚀🌐 ВАКАНСИЯ: Human Resources (HR)

Мы ищем опытного HR, готового внести свой вклад в развитие компании и поиск новых кадров! 🚀
Оклад: от 700$ / месяц 💲


Обязанности и задачи:

➡️ Наём новых сотрудников в компанию.
➡️ Создание кадрового резерва.
➡️ Организация стажировок и адаптация новых кадров.
➡️ Мониторинг и анализ рынка труда.
➡️ Устранение эмоциональных проблем внутри коллектива.
➡️ Контроль за уровнем знаний работников.
➡️ Организация обучения сотрудников.
➡️ Координирование работы по повышению квалификации.
➡️ Составление трудовых договоров и ведение личных дел сотрудников, выявление КПД.
➡️ Проведение кадровых перестановок.


Ключевые навыки:

➡️ Организация командной работы
➡️ Стрессоустойчивость
➡️ Навыки презентации
➡️ Деловая коммуникация
➡️ Навыки переговоров


🤖 Контакты @lunasantrope
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Ищу опытного HR, предлагаем карьерный рост и хорошие трудовые условия на аутсорсе
1
🚀🌐 ВАКАНСИЯ: Python BackEnd (Middle)

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


Ключевые навыки:
- Юнит-тестирование и интеграционное тестирование
- Объектно-ориентированное программирование
- Функциональное программирование
- Микросервисная архитектура
- Шаблоны проектирования и архитектуры

- Управление базами данных (реляционные и NoSQL)
- Инженерия данных
- Оркестрация конвейеров
- SQL

- Docker
- Python
- REST
- Mongo
- PostgreSQL
- Nginx
- MySQL
- RabbitMQ
- Git
- SQS

- Эффективная коммуникация
- Командная работа и сотрудничество
- Тайм-менеджмент
- Решение проблем


💰 Оклад: От 1000$ / месяц


🤖 Контакты: @lunasantrope
3
Нет, это далеко не финалка и там еще много блоков к разработке, в том числе на главной странице
Это только 10% от всего проекта)

Когда будет финальная версия - я обязательно поделюсь ссылкой
5