Обновить
512K+

Python *

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

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

Как я использую генеративные модели как оппонента в нескольких AI-проектах

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

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

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

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

вопросом ответственному участнику;

схемой границ модулей;

контрактом входных и выходных данных;

тестовым сценарием;

записью об архитектурном решении;

статусом «не подтверждено»;

измерением на исходных данных.

В проекте пассажиропотока это привело к разделению ответственности. Один контур проверяет видео, строит временную шкалу, связывает её с телематикой и формирует интервалы-кандидаты. Другой выполняет детекцию, трекинг и определение направления движения.

Читать далее

Новости

Восемь аниме-плееров рунета изнутри: шифр Цезаря, пустой параметр и домен, который увели

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

Я взял за основу популярную опенсорсную библиотеку парсеров аниме-плееров, запустил её — и получил от Kodik 500 Internal Server Error. Не «токен протух», не «IP заблокирован», а именно 500 на каждый запрос. Разбор занял вечер, а причина оказалась в одном символе: библиотека отправляла параметр ref пустым, а сервер требует его заполненным и раскодированным.

Дальше выяснилось, что это не единичная поломка, а норма жанра. Один плеер полгода назад переехал на другой формат страницы. Другой отвечает бесконечным редиректом на самого себя. У третьего домен просто увели — сейчас там индонезийский интернет-магазин, а не аниме. Четвёртый прячет ссылки в WebSocket из обфусцированного бандла на 600 КБ, и его я честно не осилил.

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

Читать далее

Купил ИБП, а его программа недоступна для NVDA. Пришлось написать дополнение

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

Я незрячий и пользуюсь NVDA. После покупки ExeGate LLB-3000 выяснилось, что работать с PowerManagerII с клавиатуры и на слух неудобно. Вместе с Codex я разработал дополнение: разобрали графические кнопки, наладили навигацию, добавили текстовые показания и проверили управление. Рассказываю, как устроено решение и что в этой работе делал я.

Как устроено дополнение

Сканер альткоинов на Python: данные пяти бирж и Telegram Mini App

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

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

Пользователь отправляет тикер и получает три результата: направление активность и итоговый статус.

Читать далее

Месяц тюнил поиск по памяти, а починила всё одна строка в промпте

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

Поднял Recall@5 поиска по памяти на 17%, померил качество самих ответов и получил прирост, неотличимый от шума: тест Макнемара, p = 0.79. Месяц работы впустую. Потом посмотрел в промпт, поправил там одну формулировку и получил плюс 16 процентных пунктов за вечер. Модель отказывалась отвечать, когда ответ лежал прямо перед ней.

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

Читать далее

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

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

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

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

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

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

Читать далее

Смерть сабагентов в Claude и Codex

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

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

Но если честно проще в вашем стиле попросить кодекс/клод объяснить как оно все работает, чем читать эту статью, она для неленивых.

Не полениться и прочитать

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

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

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

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

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

Читать далее

Считаем ударную волну ядерного взрыва: простая симуляция на Python по формуле Седова

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

Дисклеймер: Все сведения в этой статье не являются засекреченными, взяты из открытых источников [14] и не представляют собой государственной и военной тайны. Автор не имеет доступа к каким-либо секретным документам или разработкам. Любой желающий может самостоятельно сделать аналогичную симуляцию. Математическая модель намеренно упрощена и не учитывает некоторые факторы (перенос излучения, ионизацию, неоднородность атмосферы и т.п.). Автор не является профессиональным физиком-ядерщиком. Ничего опасного для жизни или здоровья человека, либо запрещённого российским законодательством в данной статье нет. Подобные симуляции можно найти в интернете в открытом доступе. Все исторические и политические факты, приведённые в данной статье, общеизвестны и открыты. Мы не добавляем интерпретаций и не делаем политических выводов.

Автор придерживается нейтральной позиции, ни на что не намекает и ни к чему не призывает!

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

Читать далее

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

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

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

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

Читать далее

Один пользователь зарегистрировался у вас четыре раза, и все четыре легально

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

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

В базе четыре учётные записи: Ivan.Petrov@gmail.com, ivanpetrov@gmail.com, ivan.petrov+shop@gmail.com, IVAN.PETROV@gmail.com. С точки зрения кода это четыре разных строки. С точки зрения почты - один и тот же ящик, все письма придут в одно место.

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

Читать далее

Claude Code взломали просьбой пересказать сайт

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

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

И самое интересное: агент не нарушал прямой запрет. Наоборот, в ключевой момент он поступил "безопасно" — отказался запускать неизвестный бинарный файл и написал собственный декодер на Python. Именно это решение и стало частью атаки.

Такую цепочку продемонстрировал исследователь безопасности Иоганн Ребергер на Claude Code с моделью Opus 5 в Auto Mode. В его небольших сериях тестов атака срабатывала в трёх или четырёх запусках из пяти. Это не означает, что "Claude взламывается с вероятностью 80%", но хорошо показывает более важную проблему: безопасный на вид отдельный шаг ничего не гарантирует, если вся цепочка строится в среде, которую контролирует атакующий.

И чего он там наломал?

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

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

Я бы сделал начало более естественным и менее похожим на презентацию продукта. Например:

В прошлой статье я разбирал, как с помощью Python и Telethon автоматизировать сбор публикаций из Telegram‑каналов. Тогда мы фактически решали задачу первого уровня: получили сообщения, забрали текст и сохранили результат.

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

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

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

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

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

Читать далее

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

Гонка за исключением или как один except Exception может лишить сна на неделю

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

Сервис зависает, контейнер не отвечает, а в логах — только «обработанные» ошибки. Часто причина таких инцидентов скрывается в слишком широком except Exception, который мешает приложению корректно завершаться. Разберем, как правильно обрабатывать исключения в production‑воркерах и избежать подобных проблем.

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

Измерительные приборы под контролем — универсальный SCPI-драйвер управления: Python + Keysight, АКИП, R&S

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

Привет! В предыдущей статье https://habr.com/ru/articles/1042328/ я рассказал о математической оценке коэффициента шума (КШ) методом отношения сигнал-шум. Сегодня перейдем от теории к практике - к автоматизации радиоизмерений. Покажу, как построить гибкую систему управления измерительными приборами на Python, которая не боится разношёрстного парка оборудования в лаборатории.

Читать далее

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

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

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

Читать далее

Пользователь придумал пароль из 100 символов. От 28 из них ваша проверка не зависит

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

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

Ломалось не у него. Так работает bcrypt, и работает уже двадцать семь лет.

Читать далее

Мы не смогли выбрать таск‑трекер и написали свой за два дня. Канбан прожил два с половиной часа

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

Команда — шесть разработчиков, полтора десятка параллельных проектов. Задачи жили в Excel, чатах и головах. В какой-то момент стало понятно, что «а кто это делает?» задаётся чаще, чем «как это сделать», — пора заводить трекер.

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

А самое интересное произошло между этими точками: канбан-доска — то, ради чего всё затевалось, — прожила в интерфейсе два с половиной часа. По истории коммитов видно точно.

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

Почему не готовое

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

Jira и Linear отпали первыми: данные о внутренних проектах не должны жить во внешнем облаке, а с обслуживанием российских аккаунтов у обоих вендоров всё сложно. Kaiten, YouGile, Weeek — приличные российские альтернативы, но это опять облако с чужим хранением, а по деньгам на команду — подписка за то, чем мы будем пользоваться на пять процентов.

Self-hosted Plane был ближе всего, но тащить и обслуживать чужой комбайн ради шести человек не хотелось.

GitHub Issues мы используем и любим, но тут споткнулись о главное: трекер нужен не только разработчикам. Руководителю нужны карточки, сроки и картинка загрузки — а не list view с лейблами. Фраза, убившая этот вариант, звучала так: «Issues не умеют пользоваться менеджеры». Это не претензия к менеджерам — это факт о интерфейсе.

Как умирал канбан

Разработчик и маркетинговое сальто

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

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

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

В дату релиза проект деплоится в прод. Но почему-то там все также один пользователь — сам создатель.

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

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

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

Читать далее

«Аниме-завод» открыт: выкладываю код конвейера, который сам режет эпизоды на Shorts

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

За последнее время я написал три статьи про систему, которая превращает длинные видео в вертикальные клипы: общий обзор «аниме-завода», разбор виртуальной камеры с face tracking и рассказ о том, почему связка «транскрипт + LLM» почти всегда даёт мусор.

Комментарий, который повторялся под всеми тремя, был один и тот же: «покажи код».

Показываю.

github.com/ialakey/shorts-factory

Это витринная ветка большого приватного проекта: MVP, в котором оставлен полный путь «взял длинное видео → получил готовый вертикальный клип», а всё остальное вырезано. Ниже — что именно внутри, как код соотносится с тремя предыдущими статьями и что пришлось выкинуть.

Заглянуть на производство
1
23 ...