Обновить
512K+

Python *

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

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

Deadtrace: отправляем Vulture на пенсию

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

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

Чтобы это выяснить, приходится пройти от точки запуска до обработчика, от обработчика — до зависимости, от зависимости — до провайдера. Заодно проверить, кто вызывает общие функции и что останется после удаления старой ветки. Именно на восстановление этих связей я хочу тратить меньше времени.

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

Читать далее

Новости

Как писать текст для нейросети, чтобы она сослалась на сайт: в 60 ответах она чаще брала абзацы от 30 слов

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

Допустим, вы ведёте документацию или блог и хотите, чтобы куски текста попадали в ответы ChatGPT, Perplexity или Алисы AI. Я проверил на ответах Perplexity простой совет — не начинать абзац с «это», «он» или «поэтому». Такие начала одинаково редки у абзацев, которые нейросеть взяла, и у тех, что пропустила.

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

Читать далее

Почему HTTP‑вызов не укладывается в таймаут: очереди, ретраи и asyncio

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

Добавили в HTTP-клиент таймаут, повторы и ограничение одновременных запросов. Кажется, всё предусмотрели, но вызывающий код почему-то ждёт дольше, чем рассчитывали. Я собрал стенд на aiohttp, чтобы разобраться, как так получается и где нужно поставить deadline, чтобы в общий бюджет попало и ожидание в очереди, и все повторные попытки.

Читать далее

16 граней по ГОСТу на клавише Esc: процедурный дизайн и фотополимерный ад

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

Штучные кейкапы для механических клавиатур обычно изображают череп, котика или персонажа аниме, и все трое давно стоят у кого-нибудь на Esc. Для своих клавиатур я уже сделал четыре кейкапа с глубоководной живностью (радиолярия, глаз, жабры и коралл, фотки прикладывать не буду, мне за них, честно говоря, стыдно), а пятым выбрал предмет, который узнается с любого расстояния и в любом масштабе: советский граненый стакан. Его предстояло уменьшить в четыре с лишним раза, напечатать из прозрачного фотополимера и посадить на крестовину Cherry MX. Клавиша при этом должна нажиматься, а стакан обязан остаться стаканом.

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

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

Читать далее

Регрессионное тестирование промптов: ИИ‑модель в роли читателя пропустила три из четырёх текстов, которые я правил

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

Я правлю промпты агентов, которые пишут и проверяют тексты. Чтобы правка не сломала то, что раньше работало, я собрал набор примеров с известным ответом и прогнал по нему проверку, где ИИ-модель играет читателя. Сильно правленые тексты она чаще пропускала, чем возвращала.

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

Читать далее

Java Card: создаем Supplementary Security Domain

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

В предыдущей статье мы воспользовались встроенными в смарт-карту механизмами безопасной персонализации апплета, тем самым нивелировали две проблемы:
1. городить свой ЗОС;
2. самоотверженно отлаживать его.
Но это решение создает еще большую угрозу, т.к. ключи ISD дают полную власть над картой и если они попадут к человеку с горячим сердцем, холодной головой и грязными мыслишками, то наш офис – его офис.
Но долой панику, у нас очередная гениальная идея: создаем Supplementary Security Domain!

Читать далее

Kaspi в Telegram-боте: QR, вебхук и сверка без скриншотов (Python, aiogram 3)

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

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

Разбираем бота на Python (aiogram 3), который сам выставляет QR Kaspi Pay, узнаёт об оплате за секунды и выдаёт товар. По шагам — всё, на чём такие интеграции обычно ломаются: подпись вебхука по сырому телу, повторные доставки, Idempotency-Key, истёкший QR, «тихая» смерть сессии Kaspi и сверка по таймеру, если вебхук потерялся. В конце — схема хранения в Postgres и полный код.

Читать далее

Своя диктовка для macOS на Deepgram: горячая клавиша, прогретое соединение и три грабли PyObjC

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

Я диктую по полторы-три минуты подряд: мысль для поста, письмо, правка к задаче. Готовые приложения для голосового ввода на маке я перепробовал, но для длинных кусков они не годились, и в итоге я за пару вечеров собрал свою диктовку на Python. Зажимаешь правый Command, говоришь, отпускаешь, и текст вставляется туда, где стоит курсор. Распознаёт Deepgram.

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

Читать далее

ИИ‑агенты. Часть 1: Первые шаги

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

Всем привет! Сегодня я хочу рассказать вам про то, как я начал внедрять в процесс разработки ИИ-агентов. Поделюсь своим опытом.

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

Читать далее

Где мне пригодился OpenClaw, а где обычный код оказался лучше. 3 истории из практики

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

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

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

Расскажу про три вещи, которыми занимался — разбор зависшего обработчика лидов, выгрузку задач из 1С прямо через телегу и эксперимент с отдельным агентом для отдела продаж. 

Читать далее

Algorithm Judge: как проблемы с доступностью Stepik подтолкнули меня к созданию собственной системы проверки алгоритмов

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

Я преподаю в университете дисциплину «Алгоритмы и структуры данных». Как и многие преподаватели программирования, значительную часть практических заданий я проверяю автоматически. Долгое время для этого использовал Stepik. Создавал собственные задания, готовил тестовые наборы, настраивал проверку решений и затем использовал всё это при проведении лабораторных работ.

В целом такой подход меня устраивал. Студенты могли отправлять свои решения на Python или R и практически сразу получать результат проверки. Мне же не приходилось вручную запускать десятки программ и сравнивать полученные ответы с эталонными. Однако недавно ситуация изменилась.

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

Так появился Algorithm Judge – небольшое настольное приложение для автоматизированной проверки решений алгоритмических задач на Python и R.

Читать далее

Как я запускаю маленькие Python‑скрипты на VPS: systemd, логи, автоперезапуск и алерты в Telegram

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

Скрипт, запущенный через nohup или в screen, однажды тихо умирает, и узнаёшь об этом через неделю. Показываю минимальную схему на systemd: сервис с автоперезапуском, логи в journald с уровнями, таймер вместо cron и сообщение в Telegram, когда что‑то упало. Без Docker и без внешних сервисов.

Читать далее

Мой бот прислал мне репо-ловушку с 1774 звёздами. Разобрал 321 репо из трендов и собрал два фильтра

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

У меня есть Telegram-бот, который каждое утро присылает пять трендовых репозиториев GitHub с trendshift.io. Под каждым кнопка: нажал, и бот выдаёт выжимку README, чтобы разобрать идею. Я читаю эту ленту каждый день и иногда ставлю то, что понравилось.

26 сентября в ленте был «Microsoft Activation Scripts»: 1774 звезды, аккуратное описание, теги. Бот оформил его так же, как четыре соседних проекта, с той же кнопкой.

Это была ловушка.

Читать далее

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

«Ты senior Python-разработчик» сделал агента хуже: проверил 7 популярных приписок к промптам

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

Чаевые, «меня уволят», «ты senior Python-разработчик», «подумай как следует», ultrathink. Проверил народные приписки на кодинг-агенте: пять задач, скрытые тесты, 156 прогонов.

Чаевые помогли, но подняли счёт сильнее всех. «Подумай» и «меня уволят» помогли почти даром. А «сеньор» провалил задачу 8 раз из 8 и каждый раз уверенно отчитался, что всё сделал. Причина нашлась в логах агента, и она до смешного буквальная.

Читать далее

Пять тысяч строк одного списка: собираю франчайзинговую сеть 1С по открытым данным и сверяю с ЕГРЮЛ

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

У фирмы «1С» есть открытый список 1С-франчайзи: страница, где можно выбрать регион и увидеть всех, кто внедряет «1С:Предприятие» в вашем городе. Это, пожалуй, самая большая франчайзинговая сеть в российском IT, и нечастый случай, когда франчайзер сам выкладывает всю сеть одной страницей. Я хотел простого: собрать этот список целиком, посчитать, как сеть разложена по карте, и привязать каждую строку к юрлицу в ЕГРЮЛ.

Простого не вышло. Ниже - как устроен источник, что в нём сломано и сколько строк в итоге удаётся честно связать с реестром. Код на Python, короткими кусками, всё снято 12 октября 2026 года.

Читать далее

Остановили Python, .NET продолжил работать: как изолировать ИИ без лишних микросервисов

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

Остановил Python сервис с моделью машинного обучения, .NET API продолжил работать и вернул HTTP 503. После восстановления Python запрос снова завершился с HTTP 200, без перезапуска основного приложения.

Зачем разделять .NET и Python, как организовать взаимодействие между ними и что нужно предусмотреть, чтобы отказ ИИ оставался проблемой отдельной функции, а не всей платформы.

Как это устроено

От блоков LEGO к автономным роверам: сквозная методика обучения детей Python и робототехнике

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

В статье рассматривается концепция траектории образования школьников при переходе от блочных визуальных конструкторов к Python. Описывается идея преодоления «синтаксического барьера» с использованием виртуализированного хаба LEGO EV3, расширения физических возможностей робота через смартфон (компьютерное зрение, экран мимики) и логического перехода к симуляции беспилотного городского транспорта.

Читать далее

Как я поставил дешёвую модель-фильтр перед Claude и что показали первые две недели

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

Сохраняю в Telegram всё подряд, а Claude Sonnet раз в сутки пишет по каждому материалу разбор для блога. Почти половина сохранёнок для блога лишняя, и на каждую уходит полный разбор. Рассказываю, как поставил перед Sonnet дешёвую модель Jev, которая отвечает вероятностью, почему формулировка вопроса оказалась важнее модели (AUC 0,46 против 0,95), какие предохранители стоят в коде и что показал журнал за две недели.

Читать далее

V‑GEN: автономный генератор теленовостей и видеосюжетов на Google Gemini и FFmpeg

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

V-GEN — локальный сервис с веб-интерфейсом, который собирает новостные ролики сам «под ключ»: от живого поиска инфоповодов до готового Full HD файла с русским именем для эфирного плейлиста.

Читать далее

Как обойти проверку SynthID

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

Что я пробовал вначале. JPEG не помог. Шум тоже.

Кадр один: девочка у пруда, утки в траве, осенние деревья, 1536 × 1024. Я мял его обработкой и снова получал одно и то же. SynthID обнаружен. Картинка уже выглядела хуже. Проверка по-прежнему находила знак.

Сработал другой ход. Сгенерировать вторую версию сцены через ControlNet Canny, взять из неё полосу текстуры и подмешать в исходник. Ручная проверка этого файла вернула not detected. Трава изменилась. Утки остались утками.

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