Обновить
256K+

Python *

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

347,99
Рейтинг
Сначала показывать
Период
Уровень сложности
Формат публикации

Стресс-тест, который отвечает на вопрос бизнеса «а что, если»

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

Ровно 18 лет назад, 15 сентября 2008 года, обанкротился Lehman Brothers — крупнейшее банкротство в истории США. Банк не использовал стресс-тесты для коммерческой недвижимости, поэтому ответа на вопрос «а что, если офисы и торговые центры обесценятся» у него не было.

Стресс-тест можно сделать не только в банке с отделом риска. «А что, если доставка вырастет на 3 дня», «конкурент снизит цену на 15%», «ставка по ипотеке поднимется на 3 пункта» — на каждый вопрос можно ответить числом.

Код движка и инструкция, как посчитать на своих данных, в опенсорсе.

Читать далее

Сколько ваших проверок хоть раз возвращали False?

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

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

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

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

Читать далее

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

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

Привет, Хабр! Меня зовут Александр, и я занимаюсь развитием системы расчета налога на дополнительный доход в ИТ‑кластере. В этой статье расскажу, как без боли для себя и для пользователя выгрузить большие таблицы из базы данных и предоставить их пользователю в xls‑формате. Рассмотрю вариант выгрузки всех необходимых данных в одном файле без кэширования и объясню, почему такое подход не будет работать.

Читать далее

Активировать мало — недостаточно: почему AI-роутеру могут понадобиться альтернативные стратегии

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

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

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

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

Погружаемся в статью

Картинка загрузилась, но API вернул images: [] — ловушка relationship в SQLAlchemy

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

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

Я добавлял в админку сайта портфолио. У проекта есть заголовок, описание и несколько изображений. После загрузки файла API должен вернуть обновлённый проект, чтобы интерфейс сразу показал новую картинку.

Файл сохранялся. Строка появлялась в базе. Повторный GET тоже находил изображение. Но ответ самого запроса загрузки выглядел так:

Читать далее

Как я сделал и запустил ГрузоБот: Python, MAX API, SQLite и первые пользователи

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

Несколько месяцев назад я начал делать небольшой сервис для контейнерной логистики.

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

Так появился ГрузоБот это сервис для грузоотправителей, экспедиторов и перевозчиков, работающий через мессенджер MAX.

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

Читать далее

Один Telegram‑бот, три сервиса, один 301: как я сделал webhook‑router вместо монолита

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

У Telegram-бота может быть только один активный webhook. У меня при этом появились три независимых сценария: поддержка пользователей, управление небольшим магазином и внутренние административные команды. Склеивать их в один процесс не хотелось, заводить отдельного бота под каждый сервис — тоже.

Пока я выбирал архитектуру, переезд панели с одного домена на другой неожиданно провёл бесплатный chaos test: Telegram продолжил отправлять updates на старый адрес, получил 301 Moved Permanently и перестал доставлять сообщения. В очереди зависло шесть updates, а со стороны пользователей бот просто замолчал.

В статье разберу диагностику этого инцидента и устройство небольшого open-source router на FastAPI и Redis: с декларативными правилами, дедупликацией, надёжной очередью, retry и HMAC-подписью внутренних запросов.

Читать далее

Как использовать облачные AI модели внутри контура компании и не получить по шее от ИБ?

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

Или пример того, что будет, если роль пакетного менеджера доверить AI.

[ Перед прочтением ознакомьтесь с политикой безопасности в вашей компании ]

Читать далее

Три поломки одного вечера: рубль в заголовке, обёртка stdout и капча, которая выросла на весь экран

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

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

Читать далее

Как создавался агрегатор ИБ‑новостей: склейка сюжетов, семь признаков важности и порог по данным

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

Идея агрегатора новостей по кибербезопасности зародилась еще давно. Хотелось получать самое важное и без инфошума. LLM тогда ещё не были повседневным инструментом, и первую версию реализовал на модели суммаризации rut5_base_sum_gazeta, а важность считал textrank. Работало так себе. Потом появились сервисы, которые сами подбирают новости под настроенную ленту. Но оптимального решения так и не увидел – это либо про всё сразу, либо что-то про одну узкую тему.

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

Читать далее

Одна сессия Claude Code на нескольких машинах: что ломается, если просто синхронизировать папку

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

Разговор с Claude Code остаётся на той машине, где начат. Разбираю, почему облачная папка эту задачу не решает, и шесть граблей, на которые я наступил, пока делал перенос сессий, памяти и инструментов между Linux, Windows и macOS.

Читать далее

«Завтра в 18:00» — это когда? Разбираем даты и часовые пояса в Python

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

Фраза «завтра в 18:00» кажется простой, пока сервер и пользователь не оказываются по разные стороны полуночи. В Doday я сделал быстрое добавление задач из одной строки и обнаружил, что программа считает «сегодня» по UTC. Из-за этого дата сдвигалась, а указанное время могло остаться в названии.

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

Читать разбор

Ноль устройств в базе: четыре бага, которые видно только в упакованном билде Electron и невнимательность

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

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

Откуда взялась эта штука 

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

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

Читать далее

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

Память для ИИ-агента съела 144 процесса и недельный лимит. Разбор четырёх причин

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

Компьютер начал тупить в середине дня. VS Code переставал отвечать, новые вкладки редактора не открывались по минуте, а лимит подписки на ИИ-ассистента сгорал к обеду вместо конца недели. Виноватым оказался не ассистент, а плагин, который ведёт для него память между сессиями.

Читать далее

6 новых методов обучения нейросетей, которые придуманы тысячелетия назад

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

Нейросетям в современном виде — несколько десятилетий. А вопросом «как вообще возникает знание?» люди занимаются больше двух тысяч лет. Значит, рассуждал я, где-то между Платоном, Аристотелем, Пирсом, Гегелем и Кантом наверняка лежит забытый метод обучения. Осталось перевести его с философского на PyTorch, вызвать backward().

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

Абдукция Пирса уже живёт в Abductive Learning и нейросимвольных системах. Скептическое воздержание от суждения называется selective prediction. Воплощённое познание ездит по лабораториям в роботах. Телеология устроилась в goal-conditioned reinforcement learning. Даже диалектика уже добралась до отдельных алгоритмических работ.

То есть бесплатной оптимизации у Платона не нашлось, а то что нашлось я упаковал здесь.

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

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

Читать далее

INDB: когда все лгут, помнит, что вы видели

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

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

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

INDB стоит на этом: смысл производится при чтении, а не фиксируется при записи. Вместо CRUD три фазы — вдох (Inhale, принять сырое наблюдение), выдох (Exhale, сжать повторы и отфильтровать шум репутацией), аксиома (Axiom, подписать то, что выжило).

Читать далее

Агент откатил действие, но модель его не забыла: KV-кэш может пережить rollback. Исследователи показали неприятный...

Охват и читатели5.7K

Агент откатил действие, но модель его не забыла: KV-кэш может пережить rollback.

Исследователи показали неприятный рассинхрон между логикой агентной среды и состоянием самой языковой модели. Агент может отменить ветку выполнения, удалить её из истории диалога и продолжить работу так, будто этой ветки никогда не существовало. Но если среда повторно использует кэш ключей и значений (KV-кэш) той же сессии, модель всё ещё может учитывать информацию из уже удалённой ветки. Авторы называют необходимое свойство rollback consistency - согласованностью отката.

Авторы проверили эффект на семи семействах открытых моделей размером от 3,8 до 36 млрд параметров. В эксперименте входные токены после rollback были идентичными, а различался только KV-кэш: в одном случае использовался старый кэш с отменённой веткой, в другом он заново строился только из подтверждённой истории. Старый KV-кэш изменил защищённое действие агента в 25 из 63 тестов, хотя данные атакующего отсутствовали в текущем запросе во всех 63 случаях. После перестроения кэша эффект исчез во всех тестах - 0 из 63.
Авторы также воспроизвели проблему через стандартный механизм повторного использования кэша в Hugging Face Transformers и через LangGraph time-travel. В тестах с LangGraph логический rollback был выполнен корректно, но сохранённое состояние KV оставалось старым; эффект проявился в 25 из 45 проверок. То есть журнал агента может выглядеть полностью корректным, хотя фактическое состояние, на которое смотрит модель, ему уже не соответствует.

Читать дальше →

3000 точек на карте грузились полсекунды. Ускорял не там, где думал

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

Эндпоинт отдавался за 380–510 мс и 811 КБ. Я думал, что причина одна – тяжёлый запрос. Разобрался: причин было три, и они лежали одна под другой. Пока не убираешь верхнюю, следующую просто не видно. Индексы, обход ORM и внезапно – gzip, который не был включён вообще.

Читать далее

Train и eval в ARC-AGI-2 — это разные распределения

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

Если вы замеряете прогресс своего солвера на случайной подвыборке из train, вы замеряете его не на том наборе. Медианная задача train занимает 100 клеток на выходе, у медианной задачи eval их 225. Два и более тестовых входа требуют 6.9 процента задач train и 40.8 процента задач eval. Расхождение держится по всем шести структурным осям, которые я померил, и переживает поправку на множественные сравнения.

Дальше идёт распределительное сравнение обоих публичных наборов ARC-AGI-2, отпечатки файлов, на которых оно сделано, и подмножество из train, подобранное под eval по структуре. CSV со списком задач в конце.

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

Что показали измерения

Как работают текстовые ИИ-вотермарки и как их обходить

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

Наверное уже многие знают, что в силу недавно вступивших в ЕС законов, регулирующих использование ИИ, провайдеры LLM обязаны помечать ИИ-сгенерированные тексты. Та же Claude недавно обновила справочную информацию о работе своей помечалки сгенерированного ИИ контента, в том числе и текста. Но в подробности его работы почему-то вдаваться не стала, как и размещать в публичном доступе средства добавления и обнаружения этих самых вотермарок.

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

Читать далее