Обновить
512K+

Python *

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

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

Утечка на 3.5 часа вперёд: как модель обманывала саму себя полтора месяца — и как мы это поймали

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

Разрыв между «отлично работает на истории» и «сливает в реальности» — классика ML на временных рядах. В нашем случае модель заглядывала в будущее на 3.5 часа через некорректный ресемплинг 4-часовых свечей.

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

Читать далее

Новости

Почему видео из аниме-плеера нельзя вставить в <video>, и как я всё-таки собрал синхронный просмотр на двоих

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

Идея была простая: смотреть аниме с друзьями так, чтобы пауза у одного означала паузу у всех. Не Discord Go Live с его артефактами и мылом, не «на счёт три жмём пробел», а честный общий плеер: кто угодно нажал — у всех перемоталось.

Я думал, это вечер работы. Получилось четыре нетривиальных проблемы, три из которых я не нашёл описанными нигде, и одна ночь отладки того, почему hls.js молча ничего не делает.

Под катом: почему прямая ссылка на видео бесполезна в браузере, как выглядит прокси с подписанными токенами и переписыванием HLS-плейлистов на лету, как синхронизировать плеер без вечного эха событий, и почему preload="none" ломает Media Source Extensions.

Читать далее

Собрал мониторинг упоминаний бренда в ChatGPT: три способа сбора данных показали три разные картины

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

Коротко: я снял ответы ChatGPT для клиента на 20 вопросов тремя способами. Бренд без подсказки прозвучал на одном вопросе из 19 в первом съёме и ни разу в двух других. У окна чата и API общих источников 17 из 49 и 68 доменов, поэтому способ съёма пишу рядом с каждой цифрой.

Читать далее

Когда разработчики ленятся писать документацию: описываем клиентский API силами нейросетей

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

Документация устаревает быстрее, чем код успевает писаться? Рассказываем, как мы построили конвейер из Python-скриптов и нейросетей, который сам находит изменения в PHP-контроллерах и обновляет документацию API Invapi.

Читать далее

Безопасная чистилка Temp: как удалять файлы и ничего не сломать

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

У меня в %TEMP% тихо скопилось гигов пять, и я написал маленькую утилиту, которая чистит это — вручную кнопкой или само по расписанию.

Задача-то копеечная. Но пока писал, вылезла пара занятных вещей: почему «удалить всё из Temp» — так себе идея, как не провалиться по симлинку и не снести файлы за пределами папки, почему os.access на Windows врёт про права на запись, и как чистить по расписанию, вообще не оставляя процесс висеть в памяти.

Читать далее

Прыжок в бесконечность: как под капотом работает RBF SVM

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

Всех приветствую! Меня зовут Андрей, я студент 4 курса факультета математики и компьютерных наук, автор телеграм-канала Andre | Data Science. Все мы знаем, что направление машинного обучения сейчас на огромном хайпе - практически из-под каждого камня говорят о разных методах и о том, что они способны решить практически любую задачу. Но гайдов, которые бы подробно разбирали работу конкретного метода - от обычной загрузки данных до математического обоснования принципа его работы и визуализации каждого шага, - катастрофически мало.

В этой статье я хочу закрыть этот пробел и разобрать один конкретный метод - RBF SVM. Мы посмотрим, как он устроен с математической точки зрения, как появился на свет, какие у него есть сильные и слабые стороны и с чем они связаны. Также протестируем его на реальных датасетах. Так как аудитория IT-сообщества довольно широкая, я постараюсь очень подробно расписывать каждое определение и каждую часть своего повествования, чтобы по ходу чтения у вас возникало как можно меньше вопросов и нить понимания не обрывалась.

Читать далее

lukidown — Telegram бот для загрузки всего отовсюду

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

Я написал бота на Python, используя библиотеки kurigramyt‑dlp и ffmpeg. Данный бот умеет скачивать что‑то (в зависимости от площадки) из следующих платформ: YouTube, TikTok, Instagram, Pinterest, Rutube, VK, Spotify, Shazam, Yandex Music, SoundCloud, VK Music, Deezer, Apple Music, Tenor, JioSaavn, Twitch (только клипы), Snapchat, Reddit, Kinopoisk.

Читать далее

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

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

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

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

Читать далее

Положил http:// в строку, и ассемблер молча собрал 0 байт

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

Мой ассемблер резал исходник построчными правилами: срезал комментарий, искал двоеточие, делил по запятым. Я заменил это одним проходом с состоянием и попутно проверил, нельзя ли было обойтись заплатками.

Нельзя: вторая заплатка ломает то, что починила первая.

Куда делись байты?

Химический калькулятор для расчета фазового состава

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

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

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

Так появилась идея заранее просчитать ряд систем, сохранить результаты и потом эти результаты выдавать из базы данных. И я так и поступил. Выбрал температурный диапазон пошире (до 3000 К), 2 базы данных веществ (с газами и без).

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

После я проделал то же самое с 3мя элементами. Расчет занял около недели.

Четыре элемента рассчитывались около месяца.

Прикинув, сколько займёт расчёт 5ти элементов, я решил закончить на 4х.

После этого сделал бэкенд на сайт по извлечению соответствующего результата.

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

И конечно же мне после этого захотелось сделать соответствующее мобильное приложение. Быстро сделал WebView обёртку на сайт. Отправил в магазин Гугл – и получил не только отказ, но и удаление всех своих предыдущих приложений.

 Долго пытался зарегистрироваться на RuStore. И потом уже быстро получил отказ, мол WebView у нас не катируются.

Полез разбираться – и оказалось, что с того момента, как я написал последнее нормальное приложение, много чего поменялось. Придётся изучить и Kotlin, и много чего ещё. Либо писать с ИИ. Поэтому мысль о приложении отложил на будущее.

Читать далее

TLS PSK для Mamonsu: как мы добавили защищённую передачу PostgreSQL‑метрик в Zabbix

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

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

У нас получилось немного иначе.

При подключении нового пилотного контура PostgreSQL к Zabbix выяснилось, что Mamonsu успешно работает с базой данных и собирает метрики, но не может передать их на сервер мониторинга, если тот принимает от узла только защищённые соединения с TLS PSK.

Можно было изменить настройки Zabbix или построить обходную схему вокруг штатного zabbix_sender. Вместо этого мы решили доработать сам Mamonsu. В результате появилась поддержка TLS PSK и сертификатов с сохранением совместимости как со старыми серверными версиями Python, так и с современными версиями Python, где PSK уже поддерживается стандартным модулем ssl.

Доработку проверили на пилотном контуре, после чего отправили разработчикам Mamonsu в upstream.

Читать далее

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

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

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

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

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

Читать далее

Четыре CMS, один интерфейс публикации: WordPress, 1С-Битрикс, InSales и Joomla

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

Полгода назад я делал сервис, который генерирует статьи и сам кладёт их на сайт. Написать текст казалось сложной частью, а публикация — формальностью: ну дёрнем REST API, что там может быть.

Оказалось наоборот. Четыре CMS — четыре разных мира, и в каждом свой способ соврать вам об успехе.

Joomla возвращает 400, когда статья уже создана: плагин «Умный поиск» падает после записи в базу. Повторили запрос — получили дубль. InSales требует published_at даже у черновика, потому что черновиков там просто нет. А у 1С-Битрикс метода для создания статьи через API не существует вовсе — официальная документация прямо говорит про read-only режим.

Внутри: как выглядит общий интерфейс на четыре системы, почему CIBlockElement::Add() возвращает ошибку при успешно созданном элементе, зачем понадобилась двойная буферизация вывода и прямой SQL в обход автотранслитерации.

Читать далее!

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

Неделя после Хабра: почта человека нашлась в его же коммитах, а мой скоринг раздавал 50 очков даром

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

Шесть дней назад я рассказал здесь про resume2human — программу, которая из резюме делает список вакансий и по каждой находит 1–3 живых человека с именем, ролью и адресом, чтобы написать им напрямую. За неделю в проект уехал 21 коммит в девяти PR, тестов стало 746 вместо 345, и я нарушил ровно половину обещаний, которые дал в том тексте. Внутри: бесплатная ступень поиска личных контактов, которая держится на git вместо платных баз; три бага, из-за которых прогон честно искал не то, что просили; и разбор того, почему покрытие пустого множества равно единице и что это стоило мне в скоринге.

Читать далее

Ежедневный ряд подписчиков в MAX: публичный эндпоинт, четыре грабли и почему not_found — не измерение

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

У мессенджера MAX нет публичного API со статистикой каналов. Числа есть у каталогов-агрегаторов, но они чужие и заморожены с 10 июля. Нам нужен был свой ряд подписчиков — и мы полгода снимаем его каждую ночь с публичного data-эндпоинта max.ru.

Ниже — как устроен сбор и четыре места, где мы ошиблись. Самая дорогая ошибка стоила трёх ночей молчащего ряда при зелёном логе и exit 0: парсер на любую неудачу писал один статус not_found, а под него попадали три разных события — канала нет, max.ru сменил формат, нас затроттлило. Пока они не разделены, скрипт ничего не измеряет — он производит число, похожее на измерение.

Читать далее

Велосипед для покрытия: когда стандартные инструменты не справляются

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

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

Задача состоит в следующем: есть некие параметры, часть из которых может быть объединена в каскады, нужно вычислить покрытие параметров, при этом учитывать, что если есть тесты на каскад, в котором присутствует параметр, то параметр считается покрытым.

Видим, что нам необходимо проверять на покрытие именно сущности, а не ветвление, сценарии или код, как это делают, допустим, coverage.py или pytest-cov

Читать далее

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

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

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

Читать далее

Мы научили ИИ-агента забывать — и он стал помнить лучше

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

700+ часов с Claude Code научили меня: агент забывает всё между сессиями и уверенно повторяет уже отвергнутые подходы. Я собрал skillmem — открытый локальный слой памяти, где запись бесплатна (SQLite, без LLM-вызовов), поиск двуязычный, а неиспользуемые навыки угасают по кривой Эббингауза. Внутри — архитектура, бенчмарк LongMemEval и почему забывание оказалось главной фичей.

Читать далее

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

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

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

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

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

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

Используем Buildozer для компиляции python в apk. Проблемы, решения и личный опыт

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

В статье мы познакомимся с Buildozer и научимся собирать APK из python с его помощью. Я собрал готовое решение, как без плясок с бубном и вызова “Богов кодинга” собрать проект.

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