Обновить
256K+

Python *

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

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

Пишем huntZip - Как я написал библиотеку для архивов на Python

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

Hello world!

Как то раз мне понадобилось работать с архивами в одном из своих проектов, но тут возникла проблема — Для ZIP тебе нужен zipfile, для какого нибудь TAR — tarfile, а для других (типа 7z и rar) вообще нужны rarfile и py7zr, И из за этого код превращается в не красивый забор из кучи и кучи импортов. И мне это надоело, вот где то 2–3 дня назад я начал делать свою библиотеку для архивов, которую я назвал huntZip.

Читать далее

Новости

Эксперимент: заставляем трансформер читать палиндромы через Чебышёва и комплексные экспоненты

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

Большинство нейросетей работают с числами и читать как человек они не умеют, поэтому инженерами были придуманы способы помочь нейросети уловить не только смысл конкретного слова, но и всего предложения. Для достижения такой цели используется positional encoding, то есть помимо отдельных слов нейросети дают их порядок в тексте. В данной статье приведен сравнительный анализ чисто смысловых векторов, линейного базиса (порядковый номер слова), базиса Фурье (синусы и косинусы), комплексного (экспоненты) и полиномы Чебышева для кодирования двух английских палиндромов.

Читать далее

ИИ‑агент внутри КОМПАС-3D: пишет код, строит деталь и проверяет результат

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

Я сделал ИИ‑агента для КОМПАС-3D: он живёт прямо в окне программы, принимает запрос текстом или фотографией и строит параметрическую деталь — не мёртвую геометрию в step, а дерево построения с переменными, которое пригодно для редактирования.
Агент пишет код и сам смотрит на то, что построил, — анализирует рендеры «глазами» через VLM.
В статье: как хорошо агент справляется с моделированием по тексту и чертежам уже сейчас, почему один блок кода лучше десяти tool'ов и почему агенту мало просто «видеть» результат.

Читать далее

ELM327 не дочитывает ответы блоков кузова: доказательство подмены кадра и обход

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

У меня в VW Polo завёлся плавающий контакт в проводке парктроника, и я решил написать свой диагностический клиент — потому что штатный сканер показывает факт, но не момент: пока листаешь меню, обрыв уже прошёл, а руки заняты сканером вместо жгута.

Дальше выяснилось, что дело не в моём коде и не в машине. Прошивка ELM327 ведёт многокадровый обмен ISO-TP только с одной парой адресов — 0x7E0 и 0x7E8, это блок двигателя, зашитый намертво. Блокам кузовной электроники, которые отвечают с другим смещением, адаптер просто не посылает кадр разрешения на продолжение: блок отдаёт первый кадр и встаёт в ожидание, а на все следующие запросы отвечает «занят».

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

Отрицательный результат, ради которого всё и написано: я перебрал всё, что было под рукой, и не нашёл ни одного ELM327, который умеет дочитывать длинные ответы от блоков кузова. Если у вас такой есть — назовите модель.

Читать далее

476 000 новостей против нейронки: пять попыток заставить текст предсказывать цену

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

Гипотеза «новости двигают рынок» — самая интуитивная в трейдинге. Настолько интуитивная, что я потратил на её проверку недели GPU-часов, полный архив финансовых телеграм-каналов с 2021 года и пять принципиально разных постановок задачи — от простых счётчиков упоминаний до NLP-разметки и пер-минутного event study.

Результат: ноль из пяти. Ни одна постановка не улучшила боевую модель (с одной унизительной для NLP оговоркой — она в конце).

Но интересен не сам ноль — интересно, как именно проваливалась каждая попытка. Две из пяти сначала показали «улучшение» в бэктесте, и если бы я остановился на агрегатной цифре, сейчас бы искренне рассказывал вам, что нейронка с новостями торгует лучше. Эта статья — подробный разбор всех пяти механизмов: что строил, какие признаки считал, какие цифры получил и где именно каждая версия обманывала.

Это обещанное продолжение статьи про сидовый шум ±10 п.п. — протокол проверки оттуда, здесь он работает на живом сквозном примере.

Читать далее

Агенты становятся отдельным классом пользователей Hugging Face

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

Hugging Face опубликовал свежий обзор состояния экосистемы открытых моделей, и одна деталь в нём выглядит интереснее очередного сравнения результатов моделей. Платформа уже отдельно отслеживает запросы, которые создаются не человеком напрямую, а агентами для программирования, такими как Claude Code, Codex и другие системы, самостоятельно работающие с репозиториями, моделями и вычислительной инфраструктурой. Получается, что у Hugging Face постепенно появляется новый тип пользователя — программный ИИ-агент, который сам ищет данные, получает файлы и взаимодействует с сервисами платформы.

Распределение такого трафика меняется достаточно быстро. Среди идентифицированных запросов от ИИ-агентов доля Claude Code снизилась с 67,8 % в апреле до 44,4 % в июле, тогда как доля Codex за тот же период выросла с 10,4 % до 20,8 %. При этом почти четверть июльских запросов была создана агентными системами, которые Hugging Face пока не смог однозначно классифицировать, а за несколько месяцев появилось более десятка новых идентификаторов программных клиентов.

Читать далее

Часть IV. Религии в IT: от ООП к ИИстерии + Большое расследование Python

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

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

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

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

Эта глава о бездумном следовании догмам, а не о том, что та или иная вещь плоха (хотя и об этом – тоже).

Читать далее

README врёт: как я сделал open‑source линтер, который сверяет документацию с реальным репозиторием

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

README редко ломается в один момент.

Обычно он просто постепенно перестаёт соответствовать проекту: переименовали команду, перенесли файл, удалили .env.example, сменили package manager — а инструкция осталась прежней.

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

Мне стало интересно: можно ли автоматически находить хотя бы часть таких расхождений, не выполняя команды из README и не отправляя исходный код в LLM?

Так появился RealityLint — open‑source CLI, который статически сверяет проверяемые утверждения из README с реальным состоянием репозитория.

Читать далее

Математики до сих пор не уверены, как быстрее всего перемножать числа

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

Ученики начальной школы могут заучивать таблицу умножения однозначных чисел, но простого запоминания будет недостаточно, когда учитель задаст задачу на умножение трёхзначных чисел. Здесь требуется алгоритм: учеников учат выстраивать числа друг над другом и умножать каждую цифру нижнего числа на каждую цифру верхнего. На протяжении тысячелетий математики считали это самым быстрым способом умножения, пока в 1960 году 23-летний молодой человек не сделал шокирующее открытие, которое привело к загадке, остающейся неразгаданной до сих пор.

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

Чтобы понять суть этого «узкого места», обратите внимание на то, как «школьный» алгоритм справляется с увеличением размера чисел. При умножении двух двузначных чисел выполняется четыре однозначных умножения. Если перейти к паре трёхзначных чисел, то потребуется девять однозначных умножений. Нагрузка растёт пропорционально квадрату количества разрядов (n², где n — количество разрядов в умножаемых числах). При анализе подобного алгоритма компьютерные учёные не измеряют скорость в секундах, поскольку она зависит от аппаратного обеспечения. Вместо этого они подсчитывают количество вычислительных шагов. Они также игнорируют второстепенные детали, такие как время, необходимое для переноса единицы при умножении. Когда числа становятся достаточно большими, эти низкоуровневые операции перестают иметь значение, поскольку их полностью затмевают более ресурсоёмкие операции. Информатики обозначают количество шагов с помощью так называемой нотации «большого O»: например, алгоритм, который учат в начальной школе, требует O(n²) шагов, что читается как «порядка n в квадрате». В общих чертах, если числа в два раза длиннее, для выполнения алгоритма требуется в четыре раза больше вычислительной работы. Если числа в тысячу раз длиннее, требуется в миллион (1 000 в квадрате) раз больше работы.

Читать далее

Зачем PyPI закреплять префиксы пакетов за организациями

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

Имя пакета в реестре часто оказывается первым сигналом того, что компоненту можно доверять. Разработчик видит название вроде google-cloud-storage, opentelemetry-sdk или apache-airflow-providers-slack раньше, чем открывает исходный код, и ожидает, что знакомый префикс указывает на известный проект. В PyPI это ожидание пока ничем не подтверждено: реестр формально не связывает общее начало имени с его владельцем, поэтому любой свободный вариант может зарегистрировать посторонний пользователь.

В конце июня 2026 года в Python‑сообществе приняли PEP 752 (мы писали об этом здесь). Он предлагает закреплять за организацией не отдельные имена, а префикс и все будущие проекты, которые ему соответствуют. Если PyPI реализует этот механизм, то пакет с именем вроде «google‑cloud‑new‑service» сможет опубликовать только та организация, которой принадлежит право на этот префикс или которой разрешили пользоваться этим правом. На первый взгляд, решение очевидное. Однако общий префикс не всегда означает, что все пакеты принадлежат одному издателю. Иногда он обозначает семейство официальных библиотек, а иногда экосистему сторонних дополнений. 

Меня зовут Артем Максимов, я отвечаю за аналитику продуктов в CodeScoring. Вместе с дата‑инженером Артемом Ивановым в этой статье мы разбираемся, какую проблему решает PEP 752, где проходит его граница и что нам показывает база данных CodeScoring.

Читать далее

ZBFun: архитектура для ZigBee без обязательного облака на Python

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

Меня зовут ZolAnd, я - независимый инженер-разработчик embedded-систем в основном для дома и сельской усадьбы. В какой-то момент мне захотелось собрать под одной крышей разношёрстный парк ZigBee-устройств от разных производителей, работать с ним локально, без обязательной привязки к облаку, и при этом иметь возможность не только интегрировать чужие устройства, но и проектировать свои. Так появился проект ZBFun. Эта статья — про то, с какими вызовами я столкнулся, какие решения уже существуют и почему они мне не подошли, и про архитектуру, к которой я в итоге пришёл.

С чего всё началось

Задача звучала просто: хочу python-библиотеку для ZigBee на ESP32-C6. Готовой не нашлось — есть отличный esp-zigbee-lib от Espressif на C, но ничего сопоставимого на Python или MicroPython для этой платформы не было. Значит, писать самому. И тут выяснилась вторая, более фундаментальная проблема. Чтобы написать библиотеку, нужно понимать, что такое ZigBee Cluster Library (ZCL) — стандарт, который описывает, из чего вообще состоит ZigBee-устройство: кластеры, атрибуты, команды, типы данных, зависимости между ними. Официальный документ Alliance — 1213 страниц PDF, написанный для инженеров, имплементирующих стек с нуля, без какой-либо машиночитаемой версии. Ни JSON, ни XML — только текст, рассчитанный на то, что человек прочитает и перепечатает нужное руками. Дальше — хуже. Когда я стал сверять этот текст с реальными SDK и реальными устройствами, обнаружились расхождения. Причём не косметические, а такие, из-за которых устройство просто не будет работать правильно.

Читать далее

Психанул: как я за полтора месяца сделал формат конфигов и парсеры для семи языков

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

Cлучилось то, что я обычно советую не делать: я не выбрал из существующих 14 форматов, а сделал 15-й.

Читать далее

От struct к компиляции под схему: ускоряем RowBinary-декодер на Python

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

Я автор aiochlite — асинхронного клиента ClickHouse на aiohttp. Раньше мой декодер RowBinary читал каждое числовое поле отдельно. Если брать 200 тысяч строк с десятью числовыми колонками, получалось два миллиона таких чтений, хотя все данные уже были в памяти.

Сначала я думал использовать Cython, C или Rust. Но потом решил попробовать оптимизировать сам процесс: объединить соседние поля с фиксированной длиной в один struct, а полностью фиксированные строки разбирать с помощью Struct.iter_unpack. На числовых данных это ускорило работу примерно в 8.3 раза.

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

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

Читать далее

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

NN vs фракталы: может ли нейросеть выучить красивые математические функции?

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

В процессе прохождения курса от MIT про нейросети наткнулась на интересную тему, представленную одним из лекторов. Он задался вопросом: «А может ли нейросеть выучить функцию Вейерштрасса (непрерывная функция на вещественной прямой, не имеющая производной ни в одной точке)?». Я решила проверить это на практике. Мною было принято решение не останавливаться на фракталах, а поискать другие функции, обладающие интересными для математика свойствами: лестница Кантора, функция Римана (Томаэ) и др. В данной статье представлена только функция Вейерштрасса.

Читать далее

Найти человека по голосу среди 134 тысяч записей

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

В последний вечер дататона у нас оставалось три попытки отправить решение. К этому моменту мы уже перебрали несколько моделей, собрали тяжёлый ансамбль и упёрлись в 0.6605. Новые энкодеры добавляли по одной-две тысячных, а fine-tuning показывал отличные цифры локально и проваливался на лидерборде.

Добавлять ещё одну модель смысла почти не было. Мы решили изменить сам поиск соседей: попробовать K-reciprocal re-ranking, а затем ещё раз применить AS-Norm. От этого варианта ждали примерно 0.67–0.69.

Получилось 0.7042 и 10-е место из 93. Почти весь день мы пытались выжать из моделей тысячные, а перерасчёт соседей добавил больше четырёх сотых без дополнительного обучения.

Читать далее

Harness, Да пребудет с тобой JavaScript

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

Современные AI-агенты действуют в реальном мире с помощью доступных им инструментов (tools). Ядро вокруг модели (LLM), которое позволяет всему этому работать (harness), серьезно влияет на качество и стоимость конечных ответов. При этом добавление в harness простого JavaScript может существенно прокачать AI-агента и заменить часть долгих и дорогих рассуждений простейшим кодом, который будет лучше, точнее и быстрее.

В этой статье разберу как такие интерпретаторы могут помогать. Начну с примера, который можно повторить у себя в LM Studio, а потом перейду к более общему устройству на LangChain, где простой JS-интерпретатор становится уже не таким простым, а забирает часть логики с LLM и помогает ей фокусироваться на том, что нужно, делегируя детерминированную логику скрипту.

Читать далее

Второй фактор, который жил в чужой странице: как я выбросил WebAuthn из своего сервиса ключей

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

Мы храним зашифрованные данные, и рядом с ними лежат ключи, которые к этим данным не подходят. Выглядит как расстройство для взломщика.

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

Читать далее

Ни строчки руками: как я вайбкодил AI-мастера D&D и что показали два месяца открытой беты

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

За полгода я не написал руками ни одной строчки кода. При этом в проде — почти тысяча пользователей и первые 50 тысяч рублей. Днём я геймдизайнер в мобильной игре, вечером сажусь оперировать фермой агентов, которые пишут код вместо меня — и сами же его ревьюят и тестируют. Под катом честные цифры двух месяцев открытой беты: воронка, глубина сессий, деньги и пара мест, где агенты меня знатно подставили. А вы уж сами решите, вайбкодинг — это новая разработка или преступление против профессии.

Мне есть, что сказать...

Автоматизация wildcard-сертификатов

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

Рано или поздно в инфраструктуре появляется задача автоматического обновления TLS-сертификатов. В простом случае она решается установкой certbot: один домен, один сервер, cron-задание и дальше можно не вспоминать об этом годами.

Сложности начинаются, когда инфраструктура вырастает…

Читать далее

Как я измеряю видимость брендов в шести нейросетях: схема замера, формат логов и ошибки

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

Задача звучит просто: выяснить, называют ли бренд ChatGPT, Claude, Perplexity, Gemini, Алиса AI и GigaChat, когда пользователь спрашивает совета или ответа у ИИ. На практике эта задача раскладывается на десятки технических решений, каждое из которых меняет результат в разы. Ниже устройство замера, формат хранения и три моих ошибки, которые обесценивают всю работу.

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