Обновить
523.9

Python *

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

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

Особенности работы с русской кодировкой при загрузке файлов через aiohttp

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

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

Читать далее

В помощь разработчикам гаджетов. «USB-Разрыватель» — что это, зачем и для чего?

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

Привет, Хабр! В этой статье рассказываем о созданном нами устройстве, которое помогает тестировать электронные девайсы в процессе разработки.  Речь идет об устройстве для автоматизации и имитации процесса отключения/переподключения USB-гаджетов. Подробности разработки и самого устройства – под катом.

Читать далее

Как ускорить бинарный поиск

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

Приветствую, сообщество Habr.

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

Читать далее

Проверка GIL в python

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

Простое введение в вычисления в многопоточности и GIL в python. Было интересно сделать подобное исследование.

Читать далее

Создание DSL на Python с библиотекой textx

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

Для описания объектов и процессов в терминах бизнес-логики, конфигурирования и определения структуры и логики в сложных системах популярным подходом является использование предметно-специфических языков (Domain Specific Language - DSL), которые реализуются либо через синтаксические особенности языка программирования (например, с использованием средств метапрограммирования, аннотаций/декораторов, переопределения операторов и создания инфиксных операторов, как например в Kotlin DSL) или с помощью применения специализированных инструментов разработки и компиляторов (например, Jetbrains MPS или парсеров общего назначения, таких как ANTLR или Bison). Но существует также подход реализации DSL, основанный на синтаксическом разборе и одновременной кодогенерации для создания исполняемого кода по описанию и в этой статье мы рассмотрим некоторые примеры использования библиотеки textx для создания DSL на Python.

Читать далее

Ускоряем Python в сто раз при помощи менее чем ста строк на Rust

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

Однажды на работе у нас возникла проблема с производительностью одной из наших основных Python-библиотек.

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

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

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

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

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

Если вы хотите сразу перейти к получившемуся коду, то читайте раздел «Подведение итогов».
Читать дальше →

О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования

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

Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java.

На протяжении этой статьи я буду использовать godbolt.org, чтобы компилировать код и изучать машинный код или байт код. Я думаю, что при чтении статьи может быть удобнее смотреть не на приведённый машинный код в статье, а на этом сайте.

Читать далее

8 и 1/2 способов проверки атрибутов экземпляров класса в Python

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

Проверка типов и проверка значений обрабатываются в Python гибким и неявным образом. В Python начиная с Python 3 появился модуль typing, который обеспечивает поддержку подсказок типов. Но для проверки значений не существует единого способа проверки.

Один из сценариев, в котором нам нужна проверка значений — это инициализация экземпляра класса. На первом этапе мы хотим убедиться в правильности вводимых атрибутов, например, адрес электронной почты должен иметь правильный формат xxx@xx.com, возраст не должен быть отрицательным, фамилия не должна превышать 20 символов и т.д.

В этой статье я хочу продемонстрировать 7(с половиной - прим.пер.) вариантов проверки атрибутов класса с помощью встроенных модулей Python или сторонних библиотек. Интересно, какой вариант вы предпочитаете? Если вы знаете другие варианты, пишите в комментариях. Поехали.

Читать далее

Оптимизируем использование памяти в приложениях Python

Время на прочтение10 мин
Охват и читатели16K
Когда дело доходит до оптимизации производительности, чаще всего особое внимание уделяется скорости и активности использования ЦП. Гораздо реже кто-либо задумывается о потреблении памяти, конечно, пока не будут израсходованы мощности RAM. Есть много причин, по которым предпринимаются попытки лимитировать использование памяти – не только стремление избежать отказа приложения из-за ошибок, связанных с её исчерпанием.

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

Новые горизонты в оценке рисков: как источники данных помогают создать точные модели

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

На связи команда по разработке риск-моделей для крупного корпоративного, а также малого и среднего бизнеса банка «Открытие» — Андрей Бояренков, Владимир Иванов и Иван Луговский. В этой статье мы расскажем про наш опыт улучшения показателей ранжирования моделей оценки вероятности дефолта заемщика/скоринговых моделей за счет использования различных источников данных и объединения их в отдельные модули.

Читать далее

PyCharm Docker Django Debug

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

Эта статья посвящена настройке IDE для возможности запуска и отладки Django сервера. Статья нацелена на людей которые столкнулись с подобной проблемой и хотелось бы поделиться опытом, так как сам прошёл эти этапы.

Читать далее

За границей Hello World: полный гайд по разработке Telegram ботов с помощью Python и Aiogram 3. Часть 1

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

Нетипичный туториал по разработке Telegram-бота на Python и Aiogram 3. В отличие от большинства гайдов и туториалов про разработку ботов «для новичков», здесь будут рассмотрены все аспекты создания бота, от установки редактора кода до подключения оплаты и развёртывания на сервере. В первой части мы рассмотрим подготовку окружения, файловую структуру бота и напишем первый рабочий код бота.

Читать далее

Как загрузить исторические данные по криптовалютам

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

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

Потребуется небольшой код на Python, библиотеки backtrader_binance,  backtrader и API ключ полученный с биржи Binance.

Читать далее

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

Network configuration compliance и как его готовить

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

TLDR: в этой статье я рассуждаю о подходах к организации валидации конфигураций сетевых железок и презентую свой плагин для NetBox, позволяющий легко создавать эти самые комплаенс‑тесты.

Если вы работаете с сетевой инфраструктурой средних или крупных размеров, то наверняка сталкивались с ситуацией, когда коробка настроена «слегка» неправильно. Ну т. е. прямо сейчас все работает, аварии нет, но все же проблема есть. Это может быть какой‑то неправильно настроенное резервирование, которое выстрелит в самый неподходящий момент (например, VRRP только на одном роутере), либо просто какая‑то штука, которая ухудшает эксплуатацию (на интерфейсе в сторону клиента нет дескрипшена и теперь вам придется лезть в ненавистный GUI: CRM/OSS/BSS/WTF).

Configuration compliance (или валидация конфигураций) — это процесс автоматической проверки конфигурации на соответствие некоторым правилам.

Читать далее

Создание бесплатного ChatGPT телеграм бота на Python

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

Это моя первая статья но надеюсь вам понравится! Почему я решил создать эту статью, когда скорее всего есть уже много других подобных? Дело в том что официальное API компании OpenAI(компании которая создала ChatGPT) - платное(пробный период быстро заканчивается), но недавно я нашел метод, которым сам пользуюсь, через который можно создавать приложения с использованием ChatGPT - бесплатно, покажу на примере просто Telegram-чатбота.

Читать далее

Полезные методы работы с данными в Pandas. Часть 3

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

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

Рост объемов хранения данных в последние годы привел к развитию и использованию более сложных и гибких структур для их хранения. Одной из таких структур является JSON (JavaScript Object Notation), который быстро стал популярным и широко используется благодаря своей легкости в чтении и гибкости. JSON позволяет организовывать данные в виде вложенных ключ- значение пар, что позволяет эффективно хранить и передавать структурированные данные.

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

В этой статье мы рассмотрим различные подходы к работе со вложенными структурами данных в Pandas, а также обсудим процесс нормализации JSON- структур. На примерах мы продемонстрируем, как можно эффективно извлекать и обрабатывать вложенные данные, преобразовывая их в удобный для анализа формат.

Читать далее

Игры в телеграм в 2023. Пациент жив или скорее мертв?

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

Всем привет! Это создатель игры Dev's Battle (Образовательной MMO-RPG игры для разработчиков в Телеграмм). В этой статье я решил рассказать про наш опыт использования телеграма, как платформы для создания игры, а также обсудить с другими разработчиками плюсы и минусы этой концепции.

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

Читать далее

Сколько Надо Строк Кода Для Того Чтобы Подписать Артефакты?

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

Бывает ситуация, когда надо чтобы прошивка или любой другой артефакт сам сказал в каком состоянии был GIT репозиторий с кодовой базой, когда эту прошивку собирали. Надо как-то добавить в text/rodata сегмент памяти такие метаданные как "из какой ветки собрали прошивку", "какой была контрольная сумма последнего коммита".

Данная подсказка может существенно помочь при сопровождении ПО.

В тексте представлен скрипт, который делает эту работу.

Как вы думаете сколько строк кода надо для подписи прошивки?

Читать далее

Python Дайджест: как ускорить Django проект до (почти) максимума

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

Завершение цикла статей про техническое оживление Python Дайджест. В первых трех частях рассказано как был совершен переход с Python 3.4 на Python 3.11 и Django 4, отформатирована вся кодовая база с pre-commit, настроена автоматизация задач на основе Github Actions. В заключительной части расскажу как получить "быстрый" сайт.


Читать дальше →

Пишем торгового бота для акций

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

Хочу показать вам, как легко создавать своих торговых роботов для фондового рынка. Вы сможете протестировать ваши торговые стратегии на истории цен акций/фьючерсов, вам нужно только написать алгоритм принятия решений вашей стратегии на покупку или продажу актива — т.к. весь основной каркас робота уже написан. А добавив всего 4 строчки кода, ваша протестированная стратегия на истории сможет работать в live на реальном рынке, выставляя заявки на покупку и продажу в рынок.

Читать далее

Вклад авторов