Обновить
564.31

Python *

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

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

Тестирование gRPC на Python в системах промышленной автоматизации

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

Добрый день, утро, вечер или ночь. Меня зовут Константин, я тестировщик, занимаюсь написанием авто-тестов на Python и в данной статье опишу пример тестирования gRPC и подготовки авто-тестов на примере программного обеспечения для сбора, обработки и передачи данных в системах промышленной автоматизации.

Читать далее

Новости

Ритуал создания API в традициях древних ацтеков

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

Всем привет!

Статья на 15-20 минут осознанного чтения. Будет интересна начинающим и, надеюсь, продолжающим увлекательное путешествие людям во вселенной python. Рассмотрен один из великого множества подходов к написанию web приложения с API + автоматизированной документацией на OpenAPI (в недалеком прошлом Swagger).

Читать далее

FastAPI: 5 практичных архитектурных решений, о которых я пожалел, что не узнал раньше

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

Привет, Хабр! Когда начинаешь новый проект на FastAPI, всё кажется простым: пара моделей Pydantic, несколько эндпоинтов — и готово. Но через полгода и 20 000 строк кода оказывается, что базовая валидация размазана по всему приложению, бизнес-логика перемешана с обращениями к БД, а тесты пишутся со скрипом.

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

Читать далее

LLM — просто «говорящий рот» у правильного ИИ-агента. Мы забрали у языковой модели рассуждение

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

Когда ваш AI говорит «я подумал и решил» — кто решил? Веса модели? Рандом?
У нас есть лог принятия решения в Python.

А у вас?

Читать далее

10 полезных Python-библиотек для автоматизации повседневных задач

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

Каждый раз, когда мы пишем «быстрый скрипт на коленке», мы тратим время на одни и те же вещи: настройку логов, парсинг конфигов и создание прогресс-баров. В этой статье разберем 10 легковесных утилит (от tqdm до beartype), которые закроют рутинные задачи и позволят вам сфокусироваться на логике, а не на «обвязке».

Читать далее

Что такое фандинг арбитраж и как сделать автоматический поиск спредов

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

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

Одна из таких стратегий - арбитраж ставок финансирования (funding rate arbitrage). Это безопасная стратегия с небольшим количеством рисков, которая доступна каждому. Из навыков тут при наличии автоматической системы тут нужно лишь умение открывать позиции на разных биржах.

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

Читать далее

Паранойя безопасности против здравого смысла: чиним Home Assistant, который окирпичился без интернета

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

Home Assistant позиционирует себя как локальную систему. Но я столкнулся с ситуацией, когда локальная функция (Samba) не работает из-за облачного сбоя. При этом я вообще не использую облако. В статье описываю как обошёл эту проблему за 5 минут, когда за день разобрался в причине.

Мне очень нравится Home Assistant как система управления умным домом, потому что она позволяет не зависеть от облаков и от падений интернета. Это не просто слова - с 2017 года я использую умный дом в обычной двухкомнатной хрущевке, и в основном всё работает. Но это скорее тестовый полигон для меня - я сам там не живу и поэтому очень ценю то что Home Assistant можно настроить один раз и если не обновлять, то несколько лет всё может спокойно проработать. А на этих новогодних каникулах у меня было время и я решил полностью обновить все дополнения и прошивки. Как оказалось зря - паранойя безопасности ломает определение Home Assistant как автономного сервиса, который можно использовать локально.

Home Assistant ≠ локальность?

Автостопом по граблям: асинхронное лимитирование запросов в Python

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

Одним солнечным днём мне прилетела задача - написать асинхронный механизм выгрузки данных по API.

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

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

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

Читать далее

Выбор статистического метода для A/B-теста: практическое руководство

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

Привет! Меня зовут Денис. Уже юолее 5 лет работаю Senior Product Analyst в крупнейших IT-компаниях России, включая Тинькофф. Разрабатывал системы аналитики с полного нуля, провёл огромное количество A/B тестов и знаю всю внутреннюю кухню больших корпораций изнутри.

Я совершил множество ошибок на своём пути – и теперь здесь, чтобы помочь именно тебе их избежать и пройти этот путь быстрее!

A/B-тесты давно стали стандартным инструментом в продуктовой и маркетинговой аналитике. Но на практике большинство ошибок происходит не на этапе запуска эксперимента, а при анализе результатов. Чаще всего причина в том, что статистический метод выбирается «по привычке», без учёта типа метрики и свойств данных.

В этой статье я собрал практическую логику выбора методов анализа A/B-тестов. Без углубления в теорию, но с пониманием, почему в одном случае работает χ², а в другом t-test может привести к неверным выводам.

Читать далее

Как мы загрузили историю 287 валютных пар с лимитом 8 запросов в минуту

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

Попробуйте найти исторические курсы для пар вроде «доллар к афгани» или «евро к таджикскому сомони». Данные либо платные, либо их просто нет в виде готового датасета. Мы решили эту проблему в рамках своего проекта, хотя единственный подходящий API диктовал суровые условия: 8 запросов в минуту и 5000 дней за раз.

Получилось! Наш Python-скрипт аккуратно, чанк за чанком, собрал историю всех 287 пар за 4.5 часа, ни разу не превысив лимит. Теперь все эти данные — более миллиона строк — лежат в открытом доступе на GitHub. В статье делюсь техническими деталями, как выстроить такую загрузку, и уроками, которые мы извлекли.

Читать далее

River: учим модель по одной строчке данных

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

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

Сегодня я расскажу про библиотеку Python River, которая позволяет обучать модели машинного обучения в потоковом режиме.

В классическом варианте мы собираем весь датасет целиком, делим на обучающую и тестовую выборки, обучаем модель, измеряем качество — и внедряем в прод. Здорово, если данных немного и они разом доступны. А если данные льются непрерывно?

Новые пользователи приходят каждый день, события генерируются каждую секунду. Модель в продакшене устаревает, если не переучивать её регулярно. Переобучение с нуля нарастающим объёмам данных — удовольствие ниже среднего: долго, ресурсозатратно, да и не всегда возможно, если данные бесконечны (например, поток кликов или показателей датчиков).

Разобраться в теме

Погружение в typing: Как сделать Python почти типизированным

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

Динамическая типизация — это весело, пока ваш проект не вырастает до 100к строк и вы не начинаете ловить AttributeError: 'NoneType' object has no attribute 'get' в три часа ночи. В 2026 году аннотации типов в Python — это уже не «бюрократия», а вопрос выживания и адекватного рефакторинга.

Читать далее

Кроим ДНК на Python — CRISPR gRNA finder, Часть II: Скоринг, off-target и реальный ген

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

В первой части мы написали базовый поиск gRNA с фильтрацией по GC-составу. Работает, но тупо: все кандидаты в диапазоне 40-60% считаются равнозначными. В реальности это не так.
Сегодня добавим систему скоринга — будем ранжировать gRNA по качеству, учитывая позицию нуклеотидов и особенности U6-промотора. Потом подключим NCBI BLAST, чтобы проверять кандидатов на off-target: не порежет ли Cas9 что-нибудь лишнее в геноме.
Тестировать будем на гене CCR5 — том самом, который отредактировал китайский учёный Хэ Цзянькуй в скандальном эксперименте 2018 года.

Читать далее

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

Как AI сократил финансовую сверку стоимости закупочных материалов с 6 часов до 1 часа

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

Отдел планово-экономический тратил 6 часов каждый месяц на поиск ошибок в ценах МПЗ. Вручную проверяли 500 позиций из 16,000, пропуская критичные аномалии. Я автоматизировал процесс через связку SQL + MCP + Claude AI. Теперь система за 15 минут находит все отклонения, выявляет паттерны мошенничества (дробление закупок, откаты) и даёт план действий с оценкой ROI. Первый запуск выявил потенциал экономии 650K — 1.6M руб/год. Под капотом — техническая реализация с кодом, SQL‑запросами и примерами AI‑анализа.

Читать далее

Собираем Docker-шаблон для Python с Poetry: шаг за шагом

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

Это Docker-шаблон для Python + Poetry, рассчитанный на реальную работу, а не учебные примеры: воспроизводимое окружение, удобный dev-workflow, отдельные сборки под прод, dev, Jupyter и AI-инструменты.

Автор использует его в основном для DS/ML-задач, где важнее скорость и предсказуемость, чем экономия пары мегабайт образа. Шаблон обкатан в бою, экономит время и легко кастомизируется под свои нужды.

👉 Репозиторий на GitHub:
https://github.com/jamm1985/vim-python-docker-template

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

Docker помогает изолировать окружение, но сам по себе он не решает Python-специфичные задачи. Его нужно правильно наполнить: учесть работу Poetry, кеширование зависимостей, структуру проекта и базовые практики, которые одинаково хорошо работают и в разработке, и в продакшене. Именно такой шаблон мы и будем собирать дальше.

В этой статье мы шаг за шагом соберём базовый Docker-шаблон для Python с Poetry, который удобно использовать и для разработки, и для прода. В основе будет минимальное и воспроизводимое окружение, а всё остальное - Vim как IDE, Jupyter, AI-инструменты вроде Codex или Gemini - вынесено в отдельные образы и слои, которые можно подключать по мере необходимости. Начнём с самого главного - разберём Dockerfile и поймём, как собрать прочную и расширяемую базу для Python-проекта.

Читать далее

Python collections: когда обычных списков и словарей мало

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

Списки (list) и словари (dict) — это фундамент Python, но часто мы заставляем их делать работу, для которой они не предназначены. Если вы до сих пор пишете if key not in d: d[key] = [], используете list.pop(0) на больших данных или пытаетесь запомнить, что в вашем кортеже лежит под индексом [3], — эта статья для вас.

Читать далее

Кроим ДНК на Python — CRISPR gRNA finder, Часть I: Введение и базовый поиск

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

Несколько лет назад я наткнулся на статью про CRISPR‑Cas9 и домашние биолаборатории — люди буквально у себя дома экспериментировали с редактированием генов. Я бэкенд‑разработчик, биологию последний раз открывал в школе, но желание разобраться никуда не делось. В этой статье разберёмся, как работает CRISPR на минимальном уровне, и напишем CLI‑утилиту на Python для поиска потенциальных guide RNA — «наводчиков» для молекулярных ножниц Cas9.

Читать далее

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

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

Рассмотрим две проблемы при изучении иностранного языка. Это освоение грамматики и увеличение словарного запаса. Они не единственные, но важные. Про способы погружения в грамматику, на языке оригинала, можно прочитать в моей статье: «Уроки французского и пересоздание данных для изучения иностранного языка с помощью обучающей программы «L'école»», в https://habr.com/ru/articles/972594/ .

Там идея простая. Мы берем хороший учебник на языке оригинала, разбиваем текст на короткие смысловые фразы, снабжаем их фонетическим слогоделением и буквальным контекстным переводом (БКП). Затем, озвучиваем данные, например, с помощью TTS, для, в данном случае, обучающей программы «L'école» и создаем двуязычные html-тексты с транскрипцией (фонетическим слогоделение) или, другими словами, небольшую книгу в формате html.

Идея изучения грамматики основана на двух принципах:

– Мы читаем, громко, вслух фонетическую транскрипцию (предварительно осваиваем фонетический алфавит с помощью представленных уроков) и смотрим подстрочный перевод. Это для html-книг. А при работе в обучающей программе, мы можем, при желании, еще набирать текст руками (используя метод «запоминание руками», в режиме «Конспект»), слушать и проговаривать вслед интерактивную озвучку. При этом, не обязательно даже стремиться запоминать текст, при наборе его руками и повторении озвученной речи, уроки запоминаются «сами собой», особенно, если к ним периодически возвращаться.

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

Читать далее

Создаем свой проектный фреймворк автотестирования API [Часть 1/3]

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

Автоматизированное тестирование API часто начинается с простых решений в виде коллекций Postman или скриптов на коленке. Такой подход работает на старте, но быстро исчерпывает себя.

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

Статья поделена на три части.

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

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

Читать далее

Универсальный автогенератор тестов API на базе Schemathesis

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

Универсальный автогенератор тестов API на базе Schemathesis

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

Читать далее
1
23 ...

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