Обновить
512K+

Python *

Высокоуровневый язык программирования

334,55
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Мониторинг активности пользователей OpenVPN при помощи Python

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели19K

Приветствую! Меня зовут Евгений, я DevOps в команде развития инфраструктуры. Мои прошлые статьи были посвящены протоколу BGP, но в этот раз я приготовил нечто поинтереснее. В прошлом году мне захотелось расширить своё портфолио навыков в сторону автоматизации задач. Не последнюю роль в этом желании сыграла книга «Автоматизация программируемых сетей», выпущенная известным в IT-кругах издательским домом O'Reilly. В ней примеры скриптов написаны на Python. Позже я в учебном центре прошёл курс повышения квалификации по программе «Python для сетевых инженеров. Автоматизация сетевых задач», а затем продолжил самостоятельно постигать это искусство. Недавно подвернулась интересная задача, о решении которой при помощи Python я вам сегодня и расскажу. Усаживаетесь поудобнее, мы отправляемся.

Читать далее

Messaging для чайников. Утилизируем все возможности RabbitMQ на Python

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели19K

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

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

Простых и понятных примеров на Python тоже мало, так как они заставляют вас вникать не только в особенности различных вариантов маршрутизации RabbitMQ, но и в особенности используемых библиотек. Для человека, который видит что-то pika-подобное первый раз, это может быть испытанием.

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

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

Поехали

Крестики-нолики для питонистов: сначала пишем, потом играем

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели35K

Всем привет! Меня зовут Кирилл Быков, и я — наставник на курсе «Python-разработчик» в Яндекс.Практикуме. Тема передачи знаний меня интересовала всегда, ещё со школьных олимпиад, продолжилась в вузе и не оставила на позиции лида. Теперь мой прямой интерес — сделать всех разработчиков в команде, от сеньоров до джунов, максимально эффективными.

Сегодня, юный падаван, на примере простой игры «крестики-нолики» мы разберём, как создают подобные приложения, продумывают для них требования и создают игровую логику. Мы не будем устанавливать много требований, в идеале поведение нашего кода должно соответствовать правилам игры на 100%. Если я вдруг где-то с этим не справился, прошу в комменты. Цель — сделать вас более уверенными при кодировании в парадигме ООП.

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

Напишу и поиграю

Как определить причины достижений и неудач футбольного клуба с помощью цифр

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.6K

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

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

Читать далее

Решение задачи определения RUL трансформаторов с помощью машинного обучения на python

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели6K

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

В данной статье рассмотрен распространенный подход решения задачи определения RUL силовых трансформаторов на основе моделей регрессии, так как у нас есть диагностические данные (временные ряды, сигналы) и разметка в виде значений длительности оборудования до отказа.

Читать далее

Как делать full-stack с одного устройства без СМС и регистрации

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели17K

Как крутить 2 сервера с белыми IP одного компа, и попутно разрабатывать Telegram Web Apps  на Bot API 6.7. Фронт + бэк на примере веб приложения внутри телеграм React + Fast-api.

Читать далее

Как можно компилировать типизированный Python

Время на прочтение15 мин
Охват и читатели10K
Прошло уже целых 9 лет с тех пор, как состоялся документ PEP 484, в котором сообществу Python были ниспосланы типы. Многих это сильно разозлило, и в широких массах этот ход осуждался (1). С тех пор жители Интернета неоднократно заявляли, что стремятся выяснить: в самом ли деле это означает, что теперь можно компилировать Python в нативный код и таким образом его ускорять? Вопрос совершенно оправданный. Он возник у меня на самом раннем этапе моих разработок, касающихся Python-компиляторов. Итак, осуществимо ли это?

Нет. Но в каком-то роде и «да», с оговорками. Сейчас объясню. Разберём этот вопрос на примере «компиляции перед исполнением» (AOT) в коде на CPython или в смежном с ним коде. В настоящее время CPython – основная подобная реализация в коде на Python. Средства динамической (JIT) компиляции – уже другая категория, и они также будут подробнее описаны ниже. Совершенно новой информации в этом посте нет, я всего лишь постараюсь помочь вам разобраться в ворохе известных академических и отраслевых знаний.

Ключевой тезис статьи таков: типы – это очень развёрнутые подсказки, и иногда они врут.
Читать дальше →

Telegram-бот для инвесторов c аналитикой, рассылкой изменения цен и анализом новостей от ChatGPT

Время на прочтение2 мин
Охват и читатели16K

Бот автоматизирует процессы сбора информации о трендах в реальном времени. Возможна подписка на получение списка акций с резким изменения тренда. Так же он позволяет получать финансовые новости с анализом от ChatGPT.

Читать далее

Ваш Main() — это бомба замедленного действия: Как MOPP позволит вам избежать катастрофы в вашем коде?

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.4K

MOPP: Main-Only-Programming-Pattern

В программировании существует множество различных паттернов, которые помогают упростить и ускорить процесс написания кода. Один из таких паттернов - Main-only programming pattern (MOPP), который предлагает разработчикам поместить весь код в метод Main, который является точкой входа в приложение.

Что это такое?

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

Читать далее

Умный дом с голосовым ассистентом на минималках

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели26K

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

Разработка шла с переменной скоростью в течении лет 5. Совсем не сразу взялся за летопись, поэтому прошу прощения, если что-то будет некорректно ;)

В результате имеем масштабируемое решение, которое можно использовать в любом месте (квартира, дом или еще что).

Читать далее

Вскрываем средство для DDoS-атак на российскую ИТ-инфраструктуру

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели30K

Привет, Хабр! В начале апреля 2023 года на одном из хостов был обнаружен подозрительный файл mhddos_proxy_linux_arm64 (MD5: 9e39f69350ad6599420bbd66e2715fcb), загружаемый вместе с определенным Docker-контейнером. По открытым источникам стало понятно, что данный файл представляет из себя свободно распространяемый инструмент для осуществления распределённой атаки на отказ в обслуживании (DDoS), направленный против российской ИТ-инфраструктуры.

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

Если вам интересны технические подробности анализа или список целей данного инструмента, то добро пожаловать под кат.

Читать далее

Код в картинках: визуализация кода

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели14K

Привет, Хабр!

На связи Федорова Валерия, участница профессионального сообщества NTA.

Каждый разработчик был, или может оказаться, в ситуации, когда не понимаешь, как работает код, который был написан пару дней (недель, месяцев, лет — нужное подчеркнуть) назад. Или в ещё более сложной ситуации — нужно «отдебажить» чужой код, без возможности привлечь автора. Здесь может пригодиться один из инструментов статистического анализа кода — Control Flow Graph или CFG.

В этой публикации рассмотрю понятие CFG, а также python библиотеку Staticfg, обеспечивающую простой интерфейс для создания CFG программ на языке Python.

Больше о CFG и Staticfg

Создание прозрачного окна для рисования поверх всех приложений

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели14K

Шаг 1: Введение

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

В данной статье мы рассмотрим, как создать прозрачное окно для рисования на языке Python, используя библиотеку PyQt5. Мы научимся создавать окно, настраивать его прозрачность и отображать его поверх всех окон на рабочем столе, сохраняя при этом функциональность и удобство использования для пользователей.

Для создания прозрачного окна мы будем использовать мощные инструменты, предоставляемые библиотекой PyQt5.

Шаг 2: Установка необходимых библиотек

Для создания прозрачного окна мы будем использовать библиотеку PyQt5, которая предоставляет мощные инструменты для создания графического интерфейса на основе Qt.

Для установки библиотек можно воспользоваться командой pip:

Читать далее

Ближайшие события

Что такое SpeedTab и как им пользоватся

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели3.3K

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

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

В этой публикации я покажу как использовать библиотеку SpeedTab на нескольких примерах.

Читать далее

О генерации скобочных последовательностей

Время на прочтение2 мин
Охват и читатели9.2K

Всем доброго времени суток!

Эта коротенькая заметка посвящена симпатичной задачке генерации в лексикографическом порядке всех правильных скобочных последовательностей. Её нередко включают в список задач для подготовки к собеседованию (например, здесь).

По просторам инета гуляет следующее решение:

Читать далее

Поиск объектов на изображении. Часть 2

Уровень сложностиСложный
Время на прочтение3 мин
Охват и читатели7.4K

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

Шаг 7: Определение регионов интереса

Один из основных факторов, влияющих на работу нашего алгоритма, - это определение регионов интереса на изображении. Мы выделили три области на столе с картами: боковую, среднюю и нижнюю области.

Для определения регионов интереса, в которых находятся карты, мы используем найденные контуры карт. После нахождения каждого контура, мы проверяем его координаты и сравниваем их с координатами каждой области regions_of_interest. Если координаты контура попадают в одну из областей, мы считаем, что карта находится в этой области.

Шаг 8: Оптимизация

Мы улучшили метод process_screen класса ScreenCapture, добавив этот функционал. Обновленный код метода выглядит следующим образом:

Читать далее

Типизация в Python. Работа с Mypy, PyCharm и SQLAlchemy 2.0

Время на прочтение2 мин
Охват и читатели10K

Привет, Хабр! Мы в Selectel много программируем на Python. И на митапе «Типичный Python» поделились своим опытом, послушали коллегу из МТС Digital, а также ответили на вопросы участников. Приводим краткий обзор трех докладов: разбираем работу со средой разработки PyCharm, статическим анализатором Mypy и программной библиотекой SQLAlchemy 2.0. Подробнее — под катом.
Читать дальше →

А как понять? Делаем аналитику для бота с нуля. Часть 1 — пишем бота

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.4K

В этой статье мы рассмотрим важность подключения базовой аналитики к боту и какие преимущества это может принести.

Читать далее

Полнотекстовый поиск в PostgreSQL с SQLAlchemy

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели14K

Привет, Хабр! В прошлой статье я  писал о том, как реализовать end-to-end тестирование telegram-бота. А сегодня расскажу о том, как реализовать полнотекстовый поиск в Postgres посредством SQLAlchemy и как его проиндексировать. 

Меня зовут Михаил Выборный, я python-разработчик, backend-developer в облачном провайдере beeline cloud. Вы узнаете, как подготовить файл миграции для alembic. В конце статьи я приведу ссылку на небольшой репозиторий, где реализовал сервис-класс для удобной интеграции поиска в свой проект. 

Читать далее

Суперклей ABI, или Как применять C++ где угодно

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели16K

Привет, Хабр! Меня зовут Михаил, я backend-разработчик в SimbirSoft. Время от времени я сталкиваюсь с понятием «двоичный», он же «бинарный» интерфейс приложений, или просто ABI (application binary interface). Все найденные мной материалы на эту тему были либо очень скудны, либо вели к многостраничным эпопеям, которые напоминали сборную солянку из описания, например, архитектуры процессора x86, сдобренную стандартом С++.

Но потом я наткнулся на перевод публикации Тита Винтерса в рабочей группе 21 (WG21) — комитета по стандартизации языка C++. В ней он поднимает вопрос поддержки обратной бинарной совместимости. Значит, вопрос актуальный — это и стало мотивацией для написания этой статьи. В ней я сфокусируюсь на примерах и практике использования С++ в других языках программирования. Материал будет полезен middle+ и senior-разработчикам, а также всем, кто хочет сделать гибкий, долгоживущий, легко настраиваемый под заказчика продукт.

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

Читать далее