Python RU
13.4K subscribers
871 photos
41 videos
36 files
1.12K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
加入频道
🖥 Универсальный алгоритм расчета потерь рабочего времени на Python

1. Постановка задачи, частные решения и их проблемы

2. Описание алгоритма

Разберём пошагово наш алгоритм.

Шаг 1:

Представим наш график как список словарей по временным отсечкам для каждого дня недели в следующем виде:

[{time: время, flag: цвет флага, start_finish: ‘’}]

◾️ время согласно графику работы: часы, минуты;
◾️ цвет флага: зелёный – после него время нужно учитывать, красный – после него время учитывать не нужно;
◾️ ‘’ – этому элементу позже будет присвоено значение «старт» или «финиш», в зависимости от того точка А или точка В расположена левее данной временной отсечки.

Для удобства восприятия покажем только values, но подразумеваем, что keys и фигурные скобки тоже присутствуют. В нашем случае получится следующий результат:

Понедельник:
[{time: 10:00, flag: зелёный, start_finish: ‘’},
{time: 19:00, flag: красный, start_finish: ‘’},
{time: 13:00, flag: красный, start_finish: ‘’},
{time: 14:00, flag: зелёный, start_finish: ‘’}]

И так для каждого дня.

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

Шаг 2:

Схожим образом представим точки A и B:
[{time: дата + время, flag: ‘’, start_finish: старт/финиш}]
▪️дата + время: год, месяц, день, часы, минуты;
▪️‘’ – на место этого элемента в дальнейшем будет подставлен красный или зелёный флаг, (по цвету флага ближайшего соседа слева на временной шкале);
▪️старт/финиш: старт – это точка А, финиш – В.

A: {time: 01.03.2023 11:00, flag: ‘’, start_finish: ‘старт’}
B: {time: 02.03.2023 11:00, flag: ‘’, start_finish: ‘финиш’}

Шаг 3:

Определим все дни между точками A и B включительно и подтянем из графика работы по этим дням все флаги, а также сами точки А и В. Данные из нашего примера превратятся в список. Теперь ключевой момент, на котором, собственно, и строится весь алгоритм: отсортируем список по возрастанию даты и времени. Это важно, т.к. позволит нам идти в цикле от отсечки к отсечке, проверяя, нужно ли включать следующий за ней отрезок в расчет.

[{time: 01.03.2023 10:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 01.03.2023 11:00, flag: ‘’, start_finish: ‘старт’}
{time: 01.03.2023 13:00, flag: ‘красный’, start_finish: ‘’}
{time: 01.03.2023 14:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 01.03.2023 19:00, flag: ‘красный’, start_finish: ‘’}
{time: 02.03.2023 10:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 02.03.2023 13:00, flag: ‘красный’, start_finish: ‘’}
{time: 02.03.2023 13:30, flag: ‘’, start_finish: ‘финиш’}]


Код для шагов 2 и 3:

Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
📹 Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior.

Видео
Задание
Код из видео
Тест
Список реальных тестовых заданий с собеседований.

@pro_python_code
🏃Как ускорить базу данных при помощи шардирования

Шардирование было одним из первых механизмов, позволяющих распределять базы данных для повышения их производительности. Последние инновации превратили шардирование в один из лучших механизмов в своем роде.

🤔 Для чего требуется шардирование?

Традиционные базы данных порой не справляются с обработкой растущих объемов данных и нарастающего трафика запросов. Сегодня очень популярны концепции NoSQL и NewSQL – соответственно, на рынке баз данных появляется все больше продуктов, вдохновленных этими новыми концепциями. Но их одних недостаточно, чтобы решить все более серьезные проблемы с данными.

Шардирование – это прием, позволяющий разбивать данные на отдельные строки и столбцы, хранимые на отдельных инстансах серверов базы данных. Так удается распределить нагрузку, оказываемую трафиком. Каждая такая малая таблица называется «шард». Некоторые NoSQL-продукты шардируются, таковы, например, Apache HBase или MongoDB. Шардинговая архитектура встроена в NewSQL-системы.

👀Как шардировать базу данных?

Один из наилучших способов создания шардов таков: данные нужно разделять на множество небольших таблиц. Они также называются «сегментами» (partitions).

Вот две ключевые составляющие шардирования:

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

Шаг 1: Проанализировать сценарий запроса и распределение данных, чтобы найти шардинговый ключ и шардинговый алгоритм

Шаг 2: Миграция имеющихся данных

Шаг 3: Перебросить трафик на новый кластер

Более детально тут. 👈

@pro_python_code
📱 Как защитить телеграм бота от атак и перегрузок.

Данный урок раскроет способы обеспечения безопасности телеграм-бота на Python.

Видео

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Асинхронный парсер Хабра на Python

Видео
Код парсера

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Развертывание приложений Python в Azure

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

Зачем это нужно?

Часто бывает так, что талантливый программист или инженер натыкается на полезную библиотеку, фреймворк или инструмент, создает очень эффектную демо-версию, показывает ее своей команде — и на этом все заканчивается. Почему? Это может быть связано с целым рядом факторов, включая:

▪️неопределенность в отношении затрат;
▪️отсутствие идей по запуску инструмента в работу;
▪️неуверенность в учете всех ключевых моментов.

Цель этой статьи — доказать, что выбрать фреймворк, создать с ним приложение и доставить его конечным пользователям можно довольно легко. В данном случае нашим выбором будет Streamlit — популярный фреймворк, помогающий создавать веб-приложения для визуализации данных.

Смысл статьи заключается в том, чтобы предложить отличный способ создания приложений, который недостаточно используется. На самом деле большинство SaaS/PaaS-инструментов, таких как Power BI и Dynamics, подойдут вам в ряде случаев — будь то создание дашбордов, разработка приложения типа CRUD или чего-то еще. Однако если вы хотите использовать действительно крутые приложения (и при этом легко их создавать) и делать их доступными для других людей, читайте дальше!

Что такое Streamlit и почему его стоит использовать?
Лучшее описание этого инструмента дано на сайте Streamlit: это фантастическая библиотека для разработки веб-приложений, предназначенных для взаимодействия с данными.

Лично мне Streamlit нравится по двум причинам.

Streamlit проще в использовании, чем многие другие инструменты. Это очень простая библиотека по созданию приложений для работы с данными. В нее можно очень легко включать компоненты, созданные в других библиотеках, таких как Seaborn и Altair.
Streamlit имеет презентабельный вид. Большинство пользователей библиотеки считают, что в ней есть je ne sais quoi (фр. — нечто, невыразимое словами, но моментально покоряющее, убеждающее в качестве). Streamlit легко использовать благодаря высокому качеству доступной документации.

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

Как запустить приложение?

📌 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
«Библиотека программиста» запустила два новых канала для Python-разработчиков и тех, кто хочет ими стать👨‍🏫

В них мы:
🔸тренируемся на практических задачах
🔸отвечаем на популярные вопросы с собеседований
🔸проверяем свои знания

Подписывайтесь:
👉Библиотека собеса по Python — тут мы готовимся к интервью
👉Библиотека задач по Python — тут решаем задачи, проходим тесты и изучаем код
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
Как сделать вашего телеграм-бота лучше? Конечно, добавить ему аналитику
Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
7 шагов по контейнеризации Python-приложений
MySQL в Google Colab: Бесшовная интеграция
Сделали по красоте: победители «Конкурса красоты кода»
Перелом в судьбе змеи: как Python менял версию с 2 на 3
Как найти популярные NFT коллекции в блокчейне TON — ранжируем коллекции c помощью индексатора dton.io и Python
Летадло, предисловие
Python + PIL + Pyrogram = Кастомные эмодзи для Telegram
S.T.A.R.K. — первый фреймворк для создания голосового ассистента
Пишем компилятор C в 500 строках Python
Dragon Userbot — расширение возможностей Вашего Telegram-аккаунта до уровня, ограниченного лишь Вашей фантазией
Получаем список товаров из чека ИФНС (Raspberry + FreePBX + telegram + sheets)
Conquer MS-101: Dumpsarena Offers Reliable Study Materials
How to Easily Try Out boto3 Interactively in AWS CloudShell
Kafka Ease: Simplifying Kafka Topic and ACL Management
A Python script to see my most watched YouTube videos
No One Expects the self._spanish_inquisition (Because it’s protected)
My Experience learning Python and SQL
Lovely Silk
My first contribution to other open source project
Data Science Essentials: Your Path to Effective Dataframe Joins with Pandas
Customizing RAG Pipelines to Summarize Latest Hacker News Posts with Haystack 2.0 Preview

Посмотреть:
🌐 Python Matplotlib. Визуализация данных на PRO уровне. ( 24:43)
🌐 Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior. ( 20:28)
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения ( 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины ( 08:09)
🌐 Революционный генератор музыки на основе искусственного интеллекта ( 00:12)
🌐 Серьезные проблемы с безопасностью в телеграм! ( 00:24)
🌐 Задание 14 | ЕГЭ по информатике | ДЕМО-2024 ( 07:19)
🌐 Задание 16 | ЕГЭ по информатике | ДЕМО-2024 ( 02:09)
🌐 Задание 15 | ЕГЭ по информатике | ДЕМО-2024 ( 03:23)
🌐 Задание 17 | ЕГЭ по информатике | ДЕМО-2024 ( 07:17)


Хорошего дня!
🖥 Django начало работы

Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ Парсер телеграм каналов на Python. Гайд по написанию мощного бота.

Видео

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
Тестовые серверы Telegram: инструкция по эксплуатации
Функциональное программирование в Python: ежедневные рецепты
Откройте свое будущее: Изучите 15 бесплатных курсов IBM прямо сейчас
Apache Spark и PySpark для аналитика. Учимся читать и понимать план запроса в SparkUI
Пишем АПИ автотесты на Python по шагам
Извлечение текста из файлов PDF при помощи Python
Детекция дефектов дорожного покрытия без размеченных данных: Хакатон, LiDAR, RANSAC, ICP и 44 бесcонных часов
Преобразование markdown в pdf на Python
Как «продать» OSS Framework? Propan -> FastStream
FIFO очередь asyncio в Python
Тестируем API в Таверне
Comment ajouter des hyperliens aux documents Word avec Python
EDA using Data Visualization techniques
Becoming an AWS All Builders Welcome Grant Alumni Mentor: Empowering the Next Generation of Innovators
New Features with Git Remotes
Trabaje con sus datos en tiempo real usando Langchain
TIL Remote in Git and TOMLLIB in Python
Exploratory Data Analysis using Data Visualization Techniques.
My First Pull Request in Hacktoberfest23
documented: make docstrings in your exceptions work
MongoDB Quick Start Guide 🍃⚡️

Посмотреть:
🌐 Разбор задачи с собеседования Data Science. Подготовка на практике ( 26:12)
🌐 Cобеседование #Python топовый банк Goldman Sachs Associate на 12000 $ #задача #программирование ( 01:00)
🌐 Django создание модели. Вывод даных на страницу ( 13:01)
🌐 Решаем задачу с leetcode на #Golang ( 00:37)
🌐 Facebook задача с собеседования на #Python на 120000 рублей #программирование #задача #код ( 00:59)
🌐 Разбора задачи с собеседования #Golang ( 00:22)
🌐 Задание 22 | ЕГЭ по информатике | ДЕМО-2024 ( 07:55)
🌐 Задание 23 | ЕГЭ по информатике | ДЕМО-2024 ( 02:50)

Хорошего дня!

@pro_python_code
🚀🧠**lru_cache**: отличная техника для эффективного кодинга!🚀🧠

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

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

При первом вызове `fibonacci(35)` функция вычислит результат обычным способом, учитывая рекурсивный характер последовательности Фибоначчи. Это может занять много времени.

Однако при втором вызове `fibonacci(35)` вместо повторного вычисления функция просто найдет значение в кэше и вернет его. В результате время выполнения второго вызова будет значительно меньше, что свидетельствует о пользе кэширования.

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

Помните, что lru_cache может ускорить только последующие вызовы с теми же параметрами. Если вызвать fibonacci(36) после fibonacci(35), то все равно придется вычислять значение. Однако вычисление будет происходить быстрее, чем без кэша, так как fibonacci(35) уже закешировано, и ему нужно только добавить к нему fibonacci(34).

@pro_python_code
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
RestApi от мала до велика. А ты правильно проектируешь методы?
Сравнение методов веб-скрепинга для данных Википедии: Beautiful Soup против WikipediaAPI
Как я проектирую и разрабатываю расширения Python на Rust
Построение ML-пайплайна для рекомендательной системы с помощью Google Cloud Platform
Как PaaS решил проблемы стандартизации разработки сервиса одной утилитой
Введение в библиотеку Diffusers и диффузионные модели
«Консервируем» данные: сравниваем модуль pickle и альтернативные способы сериализации
Сбер. Как некрасиво поступить на конкурсе красоты
Что я понял на первой работе программистом / Мои советы Junior-разработчикам
Swirl для анализа корпоративных данных: как мы использовали ИИ-поиск и что из этого вышло
MLOps на примере прогноза движений акций с помощью MLRun
Tuning Out Spotify: A Programmer’s Approach to Music Streaming
Automating Python Deployments with GitHub Actions, AWS ECR, and AWS Lambda
Weekly Dev Findings 9
Infinite Scroll Pagination in Django with HTMX
Reflex: 10 Minute Docs Audit
Milvus Adventures | October 13, 2023
Docker with Python for Dummies
CS61A: Projeto HOG (Parte 1)
Keep It Uplifting podcast. James “Uplifting” Edwards explores the intersection of lifestyle and success with Richard Blank.
Testando testes no Python - Parte 3: Pytest dentro do Pytest

Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. ( 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL ( 19:37)
🌐 Django шаблонизация и маршрутизация ( 09:11)
🌐 Задача, которая очень часто встречается на собеседованиях #python ( 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial ( 00:59)
🌐 Хитрая задача с собеседования #Python ( 00:59)
🌐 Решаем вариант из сборника Л. Н. Евич | ЕГЭ-2024 по информатике ( 01:48:21)
🌐 Задание 24 | ЕГЭ по информатике | ДЕМО-2024 ( 06:35)
🌐 Задание 25 | ЕГЭ по информатике | ДЕМО-2024 ( 03:44)
🌐 Linux для начинающих | Как загрузить файлы на или с сервера | Команда SCP ( 04:35)

Хорошего дня!

@pro_python_code
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Mastering Financial Engineering: От моделирования на Python к интерактивным приложениям

Финансовый инжиниринг включает в себя сложные вычисления и моделирование для анализа и решения финансовых проблем.

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

В этой статье мы рассмотрим, как с помощью Python превратить простой код моделирования цены опциона Монте-Карло в развернутое приложение. Это не только улучшит ваше понимание, но и поможет эффективно донести финансовые концепции с помощью визуализаций и пользовательских приложений.

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

1. Организуйте рабочее пространство
Шаг 1.1: Создание выделенной папки

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

Далее
📃 Генерация отчетов графовой аналитики в формате PDF с помощью Python

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

Рассмотрим, как использование языка программирования Python и его библиотек может значительно упростить генерацию отчетов графовой аналитики в формате PDF.

Для работы с PDF в Python есть множество библиотек, самые популярные из них: PyPDF2, ReportLab, FPDF.

Сравнение основных библиотек: в изображении.

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

Одной из самых популярных библиотек для работы с графами в Python является NetworkX. Она предоставляет широкий набор инструментов для создания и анализа графов. Ее и буду использовать для создания графа и анализа данных.

В посте приведен код, необходимый для воспроизведения. Полный код доступен по ссылке.

Данные сгенерирую с помощью Python.
Пусть будет 500 операций, где будет информация об отправителе, получателе, сумме операции и флаг подозрительности операции.

df_dict = {}
count_operation = 500
for i in range(count_operation):
df_dict[i] = {'reciver' : random.randint(1, count_operation/2),
'sender': random.randint(1, count_operation/2),
'sum_oper': random.randint(1000, 1000000),
'suspisios_transaction': random.randint(0, 1)}


Добавлю 100 переводов, где получателем будет клиент 1, а отправителем- любой другой клиент из основного датасета:

for i in range(100):
df_dict[i] = {'reciver' : 1,
'sender': random.randint(1, count_operation/2),
'sum_oper': random.randint(1000, 1000000),
'suspisios_transaction': random.randint(0, 1)}
df = pd.DataFrame().from_dict(df_dict).T


Получится вот такой датасет:

Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
Парсинг на Python

1. Быстрый Парсинг с библиотекой Polars на Python
2. Продвинутый парсинг. Обход блокировки
3. Полный Гайд по парсингу на Python: от азов до продвинутых техниик,. Часть 1
4. Полный Гайд по парсингу на Python: Практика. Часть 2
5. Практика парсинга Python
6. Большой гайд по парсингу на Python. Часть 3 Работаем с selenium
7. Уроки Парсинга на Python Сравниваем Scrappy и bs4
8. Продвинутый парсинг на Python со сменой прокси
9. Многопоточный парсер на Python. ООП подход
10. Асинхронный парсинг сайтов на Python

#video #python

https://www.youtube.com/watch?v=dqEHY9zKc8M&list=PLysMDSbb9HcwWWhs1Cm9EF1sv0fo8kII5

@pro_python_code