Обновить
512K+

Python *

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

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

Автопостинг на 8 платформах: архитектура waterfall, custom publisher'ы и API-ловушки

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

Построил pipeline публикации контента на 8 платформах. Время распространения статьи сократилось с 50 минут до 90 секунд. Рассказываю, почему waterfall обходит parallel, какие API-ловушки встретились, и почему без человека в цикле нельзя.

Читать далее

Новости

Контекстные менеджеры в Python за пределами with open(): пишем свои и упрощаем код

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

with open() знают все. Но контекстные менеджеры в Python — это не только про файлы. Они помогают безопасно управлять соединениями с БД, транзакциями, async‑ресурсами, временными настройками и cleanup‑логикой без бесконечных try/finally.

В статье разбираем, как работают контекстные менеджеры, как писать свои через contextlib и где они реально упрощают продакшен‑код.

Читать далее

Реверс-инжиниринг Xiaomi Smart Band 10

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

У носимых устройств есть парадокс: браслет измеряет ваши пульс, сон и активность, но готового открытого API для интеграции этих данных в сторонние системы (например, домашний мониторинг или локальную БД) производитель не предоставляет. Официальное приложение Xiaomi Mi Fitness показывает красивые графики, но данные остаются «запертыми» внутри мобильной экосистемы.

Изначальная задача была чисто прикладной: настроить автоматический сбор данных о здоровье в локальную SQLite-базу и выводить отчеты в семейный Telegram-бот. Поскольку браслет синхронизируется с приложением, а то в свою очередь с облаком Xiaomi, данные гарантированно передаются по сети. Нужно было понять, в каком формате они передаются и как их забрать.

Эта статья - технический разбор пути от анализа сетевого трафика и настройки доверия к собственному CA до реверс-инжиниринга RC4-протокола Xiaomi, расшифровки AES/CBC-объектов из хранилища FDS и парсинга проприетарного бинарного формата сна.

Читать далее

Как я победил спам в своих email аккаунтах

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

Да, я победил спам! Не "в основном", а "полностью и окончательно". Без всяких "почти". По крайней мере, на 99.9% победил. Причем этот 0.1% - не спам, прорвавшийся через фильтры, а false positives, которые не "вытащил" обратно в Inbox.

Программы и методы этой статьи могут быть адаптированны к любому из трех типов почтовых сервисов:

Читать далее, если интересно

Python в enterprise: момент, когда пора открыть Java не только ради собеседований

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

Интернет любит вечные войны: Linux против Windows, Vim против IDE, tabs против spaces. И, конечно, Python против Java. Одни говорят: «Python уже готов для enterprise». Другие считают RPS и стоимость инфраструктуры.

Под катом — история реального выбора для аэропортовой системы AWOS: почему строгая типизация, бинарная переносимость и современный GC перевесили лаконичность — и что стоит попробовать Python-разработчику.

Читать далее

Почему алгоритмы сливают твой депозит? 3 причины, о которых молчат «успешные» бэктесты

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

Алгоритмический трейдинг давно превратился в новую форму цифровой мечты. Сегодня буквально каждый второй новичок уверен, что достаточно найти «правильный» индикатор, запустить Python-скрипт, подключить API биржи - и рынок начнёт стабильно печатать деньги.

Реальный рынок уничтожает такие системы с пугающей регулярностью.

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

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

Читать далее

Облачная LLM на 16 ГБ VRAM — часть 2: LangGraph Server, LangSmith и SDK

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

Друзья, привет! Возвращаюсь с продолжением.

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

Поговорим про графовую инфраструктуру на базе локальных моделей — и не только локальных. Любых, поддерживающих OpenAI-совместимый протокол.

А теперь вопрос: что, если вам достаточно хорошо научиться писать граф — и вокруг него автоматически поднимется REST API, появится интерфейс для тестирования, трейсинг и мониторинг?

Читать далее

Свет, тьма, VEML7700 и Python

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

У меня на полке стоит NanoPi Fire3 — старинный SBC с Linux на борту. С течением времени он неизбежно обрастает периферией разной степени бесполезности. Среди прочего, конечно же, в нем прописался экранчик LCD2004 (даже два) со светодиодной подсветкой, который освещал ночную квартиру, как прожектор.

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

Измерить освещенность

Каггл «200 ёлочек 2025»: призы уже раздали, но мы и за идею задачу укладки порешаем. Часть 1

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

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

Читать далее

15 Google-аккаунтов и ни рубля на ИИ: пишу VPN-сервис в одиночку

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

Я начал с requests.get() к Hysteria2 API, а через месяц получил рабочий VPN-сервис: FastAPI, React, PostgreSQL, JWT, Docker Compose, несколько VPS-нод, сбор трафика и автодеплой. А ещё выводы о работе с ИИ: где он ускоряет разработку, как улучшить качество кода и почему без собственного понимания проект быстро превращается в месиво.

Читать далее

Разбираемся в ML без воды: от базы до Attention. Часть 3: Градиентный спуск

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

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

Логическим продолжением будет изучение (не побоюсь этого слова) сердца машинного обучения: градиентного спуска.

Читать далее

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

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

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

Дано: государственная аттестация, бумажные бланки, никакого онлайн-контроля. Классический способ фальсификации: ученик начинает работу сам, потом часть дописывает кто-то другой: сосед, нанятый человек, преподаватель. Проверяющий смотрит на текст, но не оценивает почерк.

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

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

Читать далее

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

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

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

Статья описывает архитектуру эмулятора биржи. Эмулятор ускоряет время в 6300x раз и запускает такую же торговую стратегию как в prod без изменений. В статье описаны практики структурирования кодовой базы для командной работы

B-Tree O(log n) , memcache lookupO(1), монорепозиторий, SRP, линейное расширение кодовой базы при модернизации

Читать далее

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

Разрабатывали решение для автоматизации, а получили универсальный продукт «Мультиплексор для Лабораторных измерений»

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

Добрый день, коллеги!

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

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

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

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

Читать далее

GigaIDE Pro для разработки на Django

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

Django, пожалуй, самый популярный фреймворк для разработки на Python. Да простят меня «питонисты» и «джависты», если я рискну сравнить важность этого фреймворка для Python c важностью Spring для Java.

Читать далее

ОГЭ информатика. 16 задание на Python

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

Если вы, смотря 16 задание, закрываете сайт, на котором готовитесь к ОГЭ по информатике, вам стоит прочитать эту статью. Кстати, вам будет полезно, даже если вы хотите структурировать свои знания. Чтобы понять эту статью, вы должны знать: циклы while и for, условные операторы if, elif, else, базовые команды, базовая работа с переменными и типами данных на Python.

Читать далее

Как я обучил GPT с нуля на русском языке — и что из этого получилось

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

Всё началось с наивной мысли: зачем платить за API или тащить 7B-модель, если мне нужна маленькая модель для простых разговоров на одном языке? Логика казалась железной — большие модели умеют всё и на всех языках сразу, но это же избыточно. 0.7B, заточенная под один язык и один стиль общения, должна справляться не хуже.

Спойлер: это было наивно. Но путь оказался ценнее результата.

Читать далее

RAG для тех, кто разочаровался: почему retrieval ломается и как это починить

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

Вы собрали RAG-пайплайн: загрузили документы, нарезали на чанки, сгенерировали эмбеддинги, подключили векторную базу. Задаёте вопрос — модель отвечает уверенно и подробно. Показываете заказчику, тот в восторге. Потом начинается тестирование на реальных вопросах, и оказывается, что на половину из них система отвечает мимо: то находит не тот документ, то находит правильный, но не тот кусок, то вообще ничего релевантного не достаёт и модель уверенно галлюцинирует.

Каждый раз проблема не в модели (GPT-4 и Claude отвечают хорошо, если им дать правильный контекст), а в retrieval — в том, как мы ищем релевантные куски документов. Модель отвечает ровно настолько хорошо, насколько хорош контекст, который ей подсунули.

Рассмотрим три основные причины.

Разобрать RAG

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

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

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

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

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

Стек решения: Python 3.10+, Flask, requests, python-dotenv, SQLite, YCLIENTS API, голосовой робот и SMS API МТС Exolve, MWS Tables.

Читать далее

Швейцарский нож Инженера АСУ ТП: Ищем, подслушиваем, настраиваем и шьём по Modbus одной утилитой

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

При проведении пуско‑наладочных работ на объекте Инженерам часто приходится иметь дело с «солянкой» различного оборудования на линиях RS-485, передающих данные по Modbus RTU на «средний», или «верхний» (в BMS\SCADA) уровни.

Написали программу, которая умеет искать Modbus RTU устройства по COM‑порту, а так же через преобразователи интерфейсов с протоколами Modbus RTU over TCP и Modbus TCP. Прописали IP адрес и порт шлюза, выбрали протокол и готово.

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