Обновить
806.59

Python *

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

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

Python, CryptoAPI и российские криптопровайдеры

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

В статье описывается работа в Python с криптопровайдерами, прежде всего российскими, через CryptoAPI. Особое внимание уделено получению штампа времени - рассмотрено взаимодействие между клиентом и Time-Stamp сервером и формирование запроса в соответствии с Time-Stamp протоколом.

Читать далее

Как я разработал собственную рекомендательную систему вакансий c hh.ru, и почему вам это тоже может пригодиться

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

Недавно, просматривая рекомендации на популярном сайте поиска работы по моему резюме «Senior Python Backend», я заметил, что система предлагает вакансии, весьма «далекие» от моей специализации. Это натолкнуло меня на размышления о том, как можно улучшить процесс подбора вакансий для IT‑специалистов. В результате я решил за два вечера, создать свою собственную рекомендательную систему, которая бы более точно учитывала специфику работы в сфере разработки программного обеспечения.

Читать далее

Автоматизация проверок в Navisworks с помощью Python + визуализация в Power BI

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

В данной статье представляю свое видение процесса автоматического формирования проверок на коллизии в Navisworks для проекта с большим количеством моделей. Метод основан на работе с xml файлами с помощью Python. Также предлагается шаблон Power BI для визуализации отчета по полученным проверкам.

Читать далее

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

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

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

Читать далее

Шахматные задачи от Поколения

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

Уже много лет, начиная с 1966 года, во всем мире 20 июля отмечают Международный день шахмат. В честь недавно прошедшего праздника мы решили написать статью, в которой поговорим о шахматных задачах из курсов "Поколение Python".

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

Читать далее

Практический кейс реализации AutoML в банке

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

Всем читателям Хабра привет! На связи дата сайентисты стрима разработки моделей для корпоративного сегмента банка ВТБ — Андрей Бояренков, Иван Кондраков, Станислав Арешин и Андрей Трушин.

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

Читать

Как использовать Web Scraper и Python для поиска работы после IT-курсов: кого ищут работодатели?

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

Сильно повезло тем, кто никогда не был в состоянии «ищу работу»! Моя история вполне рядовая: в возрасте почти сорока лет я решил «вкатиться в IT» через популярные профессиональные курсы. Учебный процесс меня вдохновлял, и казалось, что впереди меня ожидает очередь из работодателей, стремящихся нанять востребованного специалиста. Но, как оказалось, никто не спешит брать на работу junior-специалистов (эйджизм? Не может быть…).

Читать далее

Как сменить технологию и не закопаться в рефакторинге: опыт внедрения DDD в проект на FastAPI — Часть 1

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

Привет, хабравчане!

В серии статей расскажу, что такое DDD (domain-driven design) и какие у него преимущества и недостатки. Разберемся, когда применять подход и как сочетать его с FastAPI, популярным ASGI фреймворком на Python.

В этой части рассмотрим паттерны проектирования Repository и Unit of Work. С их помощью мы работаем через интерфейсы. Паттерны помогают в разделении кода на слои: основная логика приложения представляется внутренними слоями, а используемые технологии - внешними.

Читать далее

Как оптимизировать аккумуляторную батарею

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

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

Представьте, что работаете инженером в компании по производству электромобилей, и ваш начальник обращается к вам со следующими словами: «Джереми, у нас проблема! (и да, зовут вас Джереми). Всё эти чёртовы батареи! В машине их слишком много, и это выходит для нас очень накладно. Но при этом мы хотим, чтобы клиенты могли спокойно проехать 400 миль на одном заряде».

Что вы в этой ситуации сделаете? Как вы оптимизируете батареи? Это же чёрный магический ящик, не так ли? Не так. Используйте симуляцию.
Читать дальше →

Создание полного Fast-API сервиса с фронтендом и деплоем за полчаса

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

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

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

Читать далее

Давайте сделаем крупное приложение на Flask (язык Python)

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

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее

История оптимизации Python сервиса: пара простых системных улучшений

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

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

Читать далее

Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python

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

Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере. 

Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессорности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.

Читать далее

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

Ультимативный ресурс по программированию: сборник бесплатных чит-листов по программированию

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

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

Обязательно сохраняйте в закладки!

Читать далее

HowTo: базовая геоаналитика

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

Хочу поделиться примером‑инструкцией как получить инсайты из геоданных без регистрации, смс (только open‑source и бесплатные инструменты: OSM, python, Портал открытых данных Правительства Москвы, DataLens).

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

Читать далее

Введение в MLflow

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

MLflow - это инструмент для управления жизненным циклом машинного обучения: отслеживание экспериментов, управление и деплой моделей и проектов. В этом руководстве мы посмотрим, как организовать эксперименты и запуски, оптимизировать гиперпараметры с помощью optuna, сравнивать модели и выбирать лучшие параметры. Также рассмотрим логирование моделей, использование их в разных форматах, упаковку проекта в MLproject и установку удаленного Tracking Server MLflow.

Читать далее

Находим случайный seed, решающий задачу с LeetCode

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

У меня есть хобби — решать задачи LeetCode непредназначенным для этого образом, часто при помощи запутанных однострочников. Такие самостоятельно накладываемые ограничения делают задачки интереснее и заставляют искать нестандартные решения.

Одним из ежедневных челленджей LeetCode была такая задача (я немного упростил её для понятности):

Есть список из $k$ уникальных строк битов, каждая из которых имеет длину $k$. Сгенерировать новую строку длиной $k$, отсутствующую в этом списке.

Например, если у нас есть список "010", "110", "111", то возможным решением будет "001". Задача с LeetCode имеет большой набор тестов — 183 тестовых сценариев с $1≤k≤16$, а точную формулировку задачи можно найти здесь.

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

class Solution:
    def findDifferentBinaryString(self, nums: List[str]) -> str:
        random.seed((69299878 + sum(ord(c)*(i*j+111) for (i, n) in enumerate(nums) for (j, c) in enumerate(n))) % 999999999)
        return ''.join(random.choice('01') for _ in nums)

Можете попробовать это решение самостоятельно (оно должно работать, если LeetCode не обновил свой набор тестов. Если это произошло, сообщите мне об этом).

Ниже я расскажу, как это сделал.
Читать дальше →

Моржовый оператор := в Python

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

Python постоянно развивается: с каждой новой версией появляются различные оптимизации, активно внедряются новые инструменты. Так, в Python 3.8 появился моржовый оператор (:=), который стал причиной бурных споров в сообществе. О нем и пойдет речь в этой статье.

А начнем мы с истории о том, как моржовый оператор довел Гвидо ван Россума, создателя Python, до ухода с должности "великодушного пожизненного диктатора" проекта по разработке языка.

Читать далее

CurlFetch2Py – Эффективное преобразование CURL и FETCH команд в структурированные Python объекты

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

В этой статье мы рассмотрим, как использовать библиотеку CurlFetch2Py для преобразования CURL и FETCH запросов в структурированные Python объекты.

Эти инструменты часто применяются для выполнения HTTP-запросов и взаимодействия с веб-сервисами и API, обеспечивая обмен данными между клиентом и сервером.

Однако синтаксис этих запросов не всегда удобен для Python-разработчиков. Сегодня я покажу, как библиотека CurlFetch2Py упрощает работу с такими запросами, позволяя легко интегрировать их в Python-код.

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

Читать далее

Быстрая оценка эффекта рекламы/события на ключевые показатели: Python + Causal Impact

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

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

Вводные:

Данные: Данные ЦБ РФ по ключевой ставке и объему выданных кредитов с 2013 года.

Что будем оценивать?: Как повышение ключевой ставки повлияло на объем выданных кредитов.

Как будем оценивать?: С помощью библиотеки pycausalimpact для Python

Читать далее