Обновить
853.38

Python *

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

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

Как мы пытались научить ML считать трудоёмкость в промышленности — и что из этого вышло

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

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

В последние годы руководители IT-подразделений всё чаще рассматривают методы анализа данных и машинного обучения как универсальный инструмент, способный «автоматически» решить задачу расчёта норм времени. Иногда — с избыточным оптимизмом. Часто при этом забывается простая, но важная мысль: если существующий процесс расчёта неточен и данные в нём некачественные, то автоматизация такого процесса лишь ускоряет распространение ошибок. Особенно если применять вероятностные модели к накопленным за годы «грязным» данным.

Именно с такой реальностью нам (мне и коллегам) и пришлось столкнуться.

Читать далее

Одно кольцо, чтобы повелевать остальными: собираем лимитирование, ретраи и circuit breaker в одной библиотеке

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

Я чувстовал себя клоуном подключая 5ю библиотеку для написания устойчивого к ошибкам API клиента. После этого я написал библиотеку объединяющую все воедино. Мотивация и история архитектурных решений.

Читать далее

Как мы с помощью ML попали на остров

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

Машинное обучение обычно ассоциируется с датасетами, метриками и бесконечными экспериментами в ноутбуках. Но в какой-то момент для нас ML перестал быть абстрактной технологией - и стал маршрутом. Причём буквально. Эта история о том, как модели, гипотезы и пара неочевидных решений привели нас не только к рабочему результату, но и на самый настоящий остров Парамушир (северные Курилы).

Попытка улететь на вертолёте из Петропавловска-Камчатского в Северо-Курильск сразу превратилась в маленькое приключение: местные хором пугали погодой и перспективами — «можете не прилететь, а если вдруг прилетите, то потом не улетите». Камчатка в этом смысле честна и беспощадна, особенно к планам. Но желание полетать на вертолёте здесь перевешивало все разумные доводы — уж слишком манила сама идея увидеть полуостров с воздуха, да ещё и недорого (у вертолетных экскурсии на Камчатке кусачие цены). На вопрос "как не играть в рулетку с погодой" - ответ очевиден, ML.

P.S. хоть Хабр и не про туризм, но вдруг кому интересно, на Парамушире есть и свои достопримечательности, такие как действующий вулкан Эбеко и аэродромное плато (бывшие японские ангары) поэтому не только ради дешевого полета на вертолете мы оказались в Северо-Курильске.

Читать далее

От «яблока» до «королевы»: как нейросети учатся понимать смысл слов через эмбеддинги

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

Представьте, что вы объясняете ребёнку, что такое «яблоко». Вы покажете картинку, дадите попробовать, расскажете, что оно круглое, сладкое, растёт на дереве, а теперь попробуйте объяснить это нейросети. Она не видит, не пробует, но она понимает только числа.

Как же тогда заставить машину понять, что «яблоко» ближе к «груше», чем к «трактору»? Ответ на самом деле кроется в элегантном приёме, который произвёл революцию в NLP- векторных представлениях слов, или эмбеддингах.

Проблема «слепого» кодирования: почему one-hot не работает

Самый наивный подход- это пронумеровать все слова в словаре и закодировать каждое вектором из нулей и одной единицы:

Читать далее

MCPHero: MCP tools как native tools в openai

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

MCPHero - новая библиотека/проект для Python для использования MCP tools как native tools в ИИ библиотеках типа openai, которые не поддерживают MCP сами по себе.

Читать далее

Ритуал создания API в традициях древних ацтеков (часть II)

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

Процесс масштабирования бэкенд приложения на основе flask_restx и OpenApi. Реализация авторизации в приложении и обеспечение базового уровня безопасности.

Читать далее

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

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

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

В предыдущих частях цикла были рассмотрены структура протокола, алгоритмы формирования сигнала, механизмы компенсации эффекта Доплера, синхронизация и детектирование сигнала в условиях быстрых затуханий сигналов. В этой части статьи рассматривается механизм декодирования данных Q-ary Repeat Accumulation кодов протокола Q65.

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

Читать далее

unihttp – пишем декларативные API-клиенты на Python

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

Привет! Хочу представить вам свою библиотеку – unihttp.

Уверен, что все сталкивались с необходимостью работы с какими-либо API, но что делать, если у этого сервиса (внешнего или внутреннего) отсутствует библиотека, позволяющая лаконично вызывать нужные методы?

Читать далее

Разбираю статью про FS-Researcher: как учёные научили ИИ вести конспекты

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

ChatGPT и другие LLM "забывают" начало диалога при серьезном ресерче. Обычная проблема. Новые факты вытесняют старые из-за ограниченного контекстного окна, и отчет получается поверхностным. Недавнее исследование предлагает простое решение — дать ИИ-агенту "блокнот". Разбираемся как такой подход обходит ограничения контекста.

Читать далее

Визуализация данных в Python с помощью библиотеки Plotly: база для новичков

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

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

В статье разбираем базовые возможности Plotly и основные типы графиков.

Читать далее

Приложение на коленке! Почему Vial и QMK — шляпа?

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

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

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

И теперь пришло время рассказать про софт.

Почему лично для меня софт — это очень важная часть клавиатуры.

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

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

Если на упаковке сделали всё спустя рукава, то и на производстве, скорее всего, не заморачивались. Не факт конечно! но ощущение возникает именно такое.

С софтом всё работает точно так же. Он либо вызывает доверие и желание работать дальше, либо сразу оставляет чувство «ну такое».

Читать далее

Как мы помогали Стэнфорду следить за акулами

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

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

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

Читать далее

LIFO, 3D и Динамический Шампур: как упаковать 6000 объектов в фуру за 12 секунд

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

В статье представлен подробный разбор разработки высокопроизводительного 3D-движка для оптимизации загрузки транспортных средств. Мы прошли путь от простого полочного алгоритма с КПД 58% до комплексной системы, обеспечивающей плотность упаковки до 90%. Автор делится уникальным опытом решения критических проблем: от устранения коллизий и соблюдения границ трюма до внедрения динамической балансировки веса и строгой очередности выгрузки по городам (LIFO). Особое внимание уделено оптимизации алгоритма Subset Sum, позволившего достичь скорости обработки в 14 000 объектов в секунду, и верификации логики через систему из 12 Unit-тестов. Внутри — чистый код на Python, математические выкладки и эффектная визуализация процесса упаковки

Читать далее

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

sys.settrace: как устроены дебаггеры, coverage и profilers в Python

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

Когда запускаешь pytest --cov код выполняется как обычно, но в конце появляется отчёт о покрытии. Как pytest узнаёт, какие строки выполнились? Ответ в sys.settrace, это низкоуровневый хук, который позволяет перехватывать каждый шаг интерпретатора.

На этом механизме построены coverage.py, pdb, PyCharm debugger, hunters, и десятки других инструментов. Разберём, как это работает изнутри и почему трассировка устроена именно так.

Читать далее

Когда фильтр Калмана «болеет»: диагностика KF, UKF и Particle Filter в условиях нелинейности и не-гауссовских шумов

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

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

Так, Википедия прямо отмечает: «Бытyет ошибочное мнение, что для правильной работы фильтра Калмана якобы требуется гауссовское распределение входных данных».

Аналогичная позиция отражена и в академической статье arXiv:2405.00058, 2024, где авторы называют требование строгой гауссовости одним из наиболее распространенных заблуждений и в качестве примера ссылаются на двенадцать «заблудившихся» публикаций.

На наш взгляд, даже если эти тезисы об ошибочных мнениях и заблуждениях формально корректны, в инженерной практике полезнее ответить на три прикладных вопроса:
1. Снижается ли производительность линейного фильтра Калмана при различных типах не‑гауссовских шумов.
2. Как и чем измерить это снижение (если оно происходит).
3. Чем можно заменить линейный фильтр Калмана в этих условиях и какова цена такой замены.

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

Читать далее

SQL-запросы, которые убивают ваш прод: учимся ловить и лечить Deadlocks

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

Разбираемся с дедлоками в PostgreSQL: от причин возникновения на разных уровнях изоляции до методов лечения. Внутри — шпаргалка по pg_stat_activity и pg_locks для поиска блокирующих запросов, 4 золотых правила написания транзакций и готовый инструмент на Python для автоматического мониторинга базы. Минимум теории, максимум SQL-запросов, проверенных на реальном проде.

Читать далее

Ваша LLM стримит в никуда: разбираемся, как работать с дисконнектами в FastAPI

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

Что делает ваше FastAPI-приложение, когда клиент неожиданно закрывает соединение? По умолчанию — ничего. Если сервису важно экономить ресурсы (например, при работе с LLM), дисконнекты приходится обрабатывать явно, иначе GPU продолжит генерировать токены в пустоту.

В FastAPI есть встроенные механизмы отмены обработки запроса при дисконнекте клиента. Однако просто включить их недостаточно: нужно подготовить ваш код к этому. Иначе возможны проблемы: зависшие транзакции и сломанный пул соединений с БД.

Читать далее

Персональный аудиогид по картинам: от запроса до аудио (LLM + TTS)

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

Персональный Telegram-аудиогид, который по запросу строит рассказ о картине и озвучивает его. В статье я покажу, как устроен этот путь от запроса до готового аудио.

Читать далее

Слепое пятно аудио-форензики: реализуем скрытый канал передачи данных в метаданных MP3 на Python

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

Считаете, что спрятать файл внутри песни, не испортив звук, невозможно? Мы тоже так думали, пока не разобрали спецификацию ID3v2 до винтика.

Оказывается, внутри каждого MP3-файла есть «слепая зона», куда можно положить ключи шифрования, документы или исходный код, и при этом:

MD5 аудиопотока не изменится.

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

Файл проиграется в любом плеере.

Мы написали ChameleonLab: MP3 Stego на Python, чтобы доказать это. Внутри — полный разбор архитектуры, код и сценарии использования для защиты авторских прав.

Читать далее

Как решить TSP для 10 000 точек БЕЗ прыжков: метод «Динамического Шампура» с инерцией

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

Как обойти 10 000 точек без лишних «холостых» прыжков и геометрической путаницы? Традиционные жадные алгоритмы пасуют перед плотными структурами, заставляя инструменты ЧПУ и роботов метаться по всей рабочей зоне. В этой статье я представляю «Алгоритм Динамического Шампура» (Shampur‑Scraper Method) — иерархический подход к задаче коммивояжера, сочетающий инерционное планирование магистралей и динамическую зачистку зон ответственности. Разберем логику «Скребка», эффект «напряжения тупиков» и посмотрим, как этот метод играючи справляется с самопересекающимися трилистниками и плотными спиралями за доли секунды.

Читать далее