Обновить
581.5

Python *

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

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

Kawai-Focus 2.1: переезд на новый стек

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

В данной статье я попытаюсь переписать часть приложения Kawai-Focus на стек: FastAPI + Vue.js + Tauri + Ionic. Также я соберу приложение только с экраном «Таймеры» под Linux в AppImage, которое подойдёт для большинства Linux-дистрибутивов. Реализация одного экрана не будет слишком долгим процессом, а финальная сборка приложения позволит оценить сложность и удобство полного цикла разработки.

Эта cтатья не будет подробным гайдом, так как размер переписанного кода и его описание слишком велики для одной статьи. Однако я покажу часть кода проекта и расскажу о выбранном стеке, а также о трудностях и преимуществах, с которыми я столкнулся в процессе переписывания проекта. Я буду использовать часть кода старого проекта, который не касается Kivy и KivyMD, поэтому его душа не умрёт, а обновится.

Заваривайте чай, доставайте вкусняшки — пора «старый стек превращать в удобрение для новых помидор»! 🍅

Читать далее

Новости

Оптимизация и запуск нейронных сетей на React Native: кейс с травой

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

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

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

Читать далее

Python: Почему строки в if-else — это плохо, переходим на Enum

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

Бывало такое: сидишь час над багом, перебираешь функции, а в итоге выясняется, что ты просто опечатался в одном слове? В одном месте статус заказа был "shipped", а в другом — "shiped" с одной «p».

Python промолчал, потому что для него это просто две разные строки. А для тебя это — потерянный вечер. Сегодня разберем, как модуль enum избавляет от этой боли и делает код в разы чище.

Читать далее

Быстрый старт в мониторинг сервисов с LLM под капотом

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

За прошлый год я запустил 5 сервисов с LLM под капотом. Каждый следующий сервис получался лучше предыдущего: мы оттачивали архитектуру, оптимизировали core микросервиса на FastAPI, быстрее выходили на MVP и ловили меньше багов.

Но довольно быстро стало понятно: LLM‑сервисы сложно интерпретировать. Для бизнес команды они выглядят как black box. Для инженеров — как набор плохо воспроизводимых состояний.

В этой статье я поделюсь практиками, которые:

— упрощают интерпретацию поведения LLM;

— делают работу сервиса прозрачной для Product Owners и SME;

— ускоряют разработку и итерации без передеплоев.

Читать далее

Корпоративный RAG как MCP-сервис: подключаем кодовую базу к IDE

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

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

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

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

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

Читать далее

Все об устройстве Q65 с примерами на Python (часть 2)

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

Q65 — цифровой протокол, разработанный Джо Тейлором (K1JT) и его командой в 2021 году для проведения минимальных связей в условиях сложных трасс прохождения радиосигнала.

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

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

Читать далее

Парсинг тарифов интернета и ТВ: Архитектура БД и бэкенд на SQL

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

За 5 лет работы в B2B и B2C сегментах у телеком-провайдеров я столкнулся с одной из проблем: абоненты годами сидят на архивных дорогих тарифах или пользуются услугами операторов, которые не идут на уступки, не снижают цены на тарифы, пользователи просто не знают, что в их же доме есть альтернативные провайдеры с тарифами более выгодными для них.

Я решил объединить свой опыт в телекоме с навыками в программировании. Так появилась идея по парсенгу тарифов. Цель — создать инструмент, который автоматически мониторит провайдеров, избавляя пользователей от ручного сравнения и помогая им находить оптимальные условия по тарифу.

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

Читать далее

Автоматизация рутины на hh.ru: Как мы учили Headless Chrome притворяться живым человеком (RPA против Anti-Fraud)

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

С инженерной точки зрения поиск работы — это процесс с низкой энтропией. Есть входящий поток данных (JSON с вакансиями) и есть необходимость отправить ответный сигнал (POST-запрос с откликом). Задача кажется тривиальной для автоматизации: написал парсер, настроил cron, пошел пить кофе.

Однако, если вы попробуете автоматизировать отклики на крупных job-board платформах (особенно на hh.ru) в 2026 году, вы столкнетесь с серьезным противодействием. WAF (Web Application Firewall), анализ TLS-отпечатков, поведенческая биометрия и теневые баны — это реальность, которая убивает скрипты на requests за пару часов.

В этой статье разберем архитектуру решения, которое позволяет автоматизировать процесс отклика, используя подходы RPA (Robotic Process Automation), мимикрию под поведение пользователя (Human Mimicry) и LLM для обхода смысловых фильтров.

(Дисклеймер: Статья носит исследовательский характер. Мы не призываем нарушать правила площадок, а разбираем технические методы эмуляции браузера).

Читать далее

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

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

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

Читать далее

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

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

Всем привет!

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

Читать далее

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

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

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

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

Читать далее

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

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

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

А у вас?

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

От парных котировок к абсолютным курсам — как мы построили фундамент веб-интерфейса AbsCur3 с 287 валютными парами

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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