Обновить
256K+

Python *

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

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

Как я заставил Windows Server 2003 выйти в современный интернет (и что из этого вышло)

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

Привет, Хабр! Недавно я поднимал в VirtualBox старую Windows Server 2003 R2. Кто-то скажет: «Зачем?». А мне было интересно, как поведет себя система, которая перестала получать обновления много лет назад, если её попробовать «подружить» с современной сетью.

Эпоха Windows Server 2003 и Windows XP — это время, когда интернет был другим. Тогда не было повсеместного HTTPS, сайты весили по 50 килобайт, а основным браузером был Internet Explorer 6. С тех пор веб-стандарты ушли далеко вперед, а протоколы безопасности (TLS) были переписаны с нуля. И если старую систему можно запустить в виртуалке ради ностальгии, то выйти с её помощью в современный интернет — это настоящий вызов.

Главная проблема, с которой я столкнулся — это отсутствие современных протоколов безопасности. Internet Explorer 8 (максимальная версия для Server 2003) физически не может открыть ни один современный сайт, так как он не понимает новые шифры.

Читать далее

RoombaMusic: как я заставил старую Roomba играть MIDI с современного ПК

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

Привет, Хабр. У меня дома уже много лет лежит iRobot Roomba — та самая, из середины нулевых. Выкидывать жалко, работать как пылесос она уже толком не хочет, а тут я вспомнил про старый проект HackingRoomba Тода Курта: он ещё в 2006-м показал, что Roomba можно заставить играть мелодии через открытый протокол Roomba Open Interface. Идея была классная, но утилиты RoombaMidi и RoombaMidi2 давно перестали запускаться на современных ОС — драйверов нет, порты другие, Java несовместимая. В общем, всё умерло, кроме самих роботов.

Вот я и решил: а почему бы не написать своё приложение, которое будет работать на нормальном современном ПК? Так появился RoombaMusic. О том, как я до этого дошёл, что сломалось по дороге и почему в итоге всё-таки заиграло — ниже.

Читать далее

Системные сертификаты обновили, а pip — нет: проверяем окружения после инцидента eMudhra

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

20 октября раскрыли слабо сгенерированные ключи промежуточных УЦ eMudhra. Браузеры и системное хранилище уже починили, но официальный pip по-прежнему доверяет встроенному бандлу certifi: одного обновления ОС недостаточно. На стенде сравниваю пакетный pip из Debian 13, Python 3.15.1 и 3.15.2, certifi 2026.10.19 и 2026.10.23 и проверяю, есть ли в интерпретаторе блоклист ssl из CVE-2026-115557. Весь вывод — с локальной машины.

Читать далее

Галлюцинации недели: HackerTube, GPT Images 2.6 и школьники, которые не смогут гуглить, если школа запретит AI

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

У русскоязычных пользователей Claude новый уровень сложности: Persona просит фото паспорта и лица. С российским паспортом, судя по жалобам с 29 октября, уровень заканчивается баном. Мы начали игру заново, с нового аккаунта.

Читать далее

Почему 200 OK врёт: что я переделал в проверке доступности сайтов

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

Задача казалась простой: раз в минуту сходить на сайт и сказать, работает он или нет. Первая версия уместилась в десяток строк: GET, проверка кода ответа, уведомление в Telegram. Через неделю оказалось, что почти каждая из этих строк врёт.

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

Где ещё врёт простая проверка

Дело не в нагрузке: почему пул httpx теряет соединения при отменах

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

PoolTimeout, когда свободные соединения вроде бы есть, и медленный рост busy при ровном RPS — знакомые симптомы? Причина может быть не в нагрузке, а в отмене запроса при закрытии ответа: в httpcore соединение остаётся в состоянии ACTIVE, а закрыть его повторно уже некому. В статье — диагностика по состоянию пула, минимальное воспроизведение и варианты исправления, пока фикса в upstream нет.

Читать далее

Где кончается скидка за тираж: считаю оптовый прайс печати на футболках

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

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

Читать далее

Данные для бэктеста на Мосбирже: свой сборщик bid/ask на Python, архивы биржи и DMA

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

В БКС есть направление прямого доступа к бирже: мы подключаем алготрейдеров к шлюзам Московской биржи, помогаем с роботами, данными и инфраструктурой. Один из частых вопросов клиентов – где взять историю bid/ask для бэктеста. Этот текст – развернутый ответ: что есть в брокерском API, что продает биржа и когда нужен поток с биржи напрямую. С кодом сборщика и свечей. Статью подготовил Руслан Гнатовский, руководитель направления DMA.

Бэктест на минутных свечах отвечает на вопрос «была ли идея», но не на вопрос «заработал бы на ней робот». Свеча не знает, по какой цене на самом деле можно было войти, кто был инициатором сделок, сколько объема стояло на нужной цен и сколько заявок было перед нами.

Порядок цифр на фьючерсе на доллар (Si): шаг цены 1 пункт, это 1 рубль на контракт. Робот, который входит и выходит по рынку, покупает по ask, продает по bid и на каждом круге отдает спред. Спред 1 пункт, 100 кругов в день по 10 контрактов – 1 000 рублей в день, около 20 000 в месяц, которых нет в бэктесте по цене закрытия свечи.

Ниже три пути получить котировки: записать самому через брокерский API, купить архив у биржи и/или взять поток напрямую с биржи через DMA.

Читать далее

Признаки в обучении и проде расходятся: воспроизводим ошибку на тестовом наборе

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

Модель проходит офлайн-тесты, но ошибается в продакшене из-за расхождения входных признаков. На примере Python разбираем, как выявить Training–Serving Skew, восстановить данные на момент прогноза и автоматизировать проверку перед релизом.

Разобрать пример

Бот, которому запретили оправдываться

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

На восьмой день бот перестал отвечать половине чата. Он не упал и не завис, он просто молчал. В журнале на каждое такое молчание стояла одна строка: «ответ забракован (английские слова: Alex)».

Проверка ответа запрещала боту английские слова, потому что однажды он пожелал чату «Good morning». Имя «Alex» в обращении проверка тоже сочла английским. Бот писал ответ, сам его забраковывал и не общался с теми, у кого имя латиницей.

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

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

Читать далее

Синтетические плавки в ДСП-3: как сгенерировать данные и не обмануть себя

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

Привет, Хабр! Эта история началась с того, что меня позвали пообщаться на тему работы в металлургическую компанию. Спросили коротко: «Готов?». Я оценил свои силы, масштаб задачи и ответил прямо — готов зайти сразу на позицию Head of AI, чтобы выстроить процесс от и до.

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

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

Эта статья посвящена исключительно генератору. Мы разберем, как он устроен «под капотом», какие неочевидные ошибки я в нем допустил, и как проверить, что синтетика не врет сама себе. Обучение CatBoost и создание работающего микросервиса-советника мы оставим для второй части.

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

Читать далее

robots.txt не запрещает обучение ИИ: каких роботов закрывать, чтобы сайт остался в ответах нейросетей

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

Многие владельцы сайтов ставят в robots.txt Disallow для GPTBot и считают, что закрыли свои тексты от ChatGPT. Гари Ильес из Google напомнил: файл решает только, может ли краулер (робот, который обходит сайт) скачать страницу, а что потом делают с контентом, он не решает. Значит, robots.txt для нейросетей работает как просьба к конкретному роботу, а не как запрет на обучение. Строка про GPTBot не убирает сайт из ответов ChatGPT и ничего не говорит о страницах, которые уже скачаны. Поэтому сначала стоит решить, от чего закрываться, от обучения ИИ-моделей или от появления в их ответах, и закрывать это отдельными правилами для отдельных роботов.

Читать далее

HTML‑виджеты Telegram до выхода Bot API 10.4: отправляем через MTProto из Telethon и разбираем грабли слоя 233

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

В Telegram появились HTMLBubbles: бот присылает сообщение, внутри которого работает крошечная веб-страница со скриптом. Игра, опрос или калькулятор живут прямо в пузыре чата, без Mini App и хостинга. В публичном Bot API метода для них пока нет, но в протоколе MTProto они уже есть.

Я сделал мини-игру из Telethon, подменив клиенту слой протокола с 229 на 233. Рассказываю, где брать схему (документация расходится с исходниками Telegram Desktop), как описать новые типы руками, почему бот падает, если сделать его админом канала, и как это чинится парсером на десяток строк. В конце - таблица того, что умеет движок виджетов, и проверка, куда их на самом деле пускают: пересылка, инлайн, каналы и группы закрыты, хотя документация разрешает.

Разбираем грабли слоя 233

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

ОС еще не загрузилась, а Python уже работает: зачем мы принесли змею в UEFI

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

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

Слово «просто» здесь выполняет декоративную функцию. Примерно как кнопка закрытия дверей в некоторых лифтах: нажимать приятно, на происходящее влияет не всегда.

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

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

Так мы начали обживаться в UEFI Shell. А некоторое время спустя у нас появился собственный сборщик Python для этой среды.

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

Читать далее

От игрушки с рандомными опкодами до 4-битной машины времени: как я собрал настоящий Intel 4004

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

Как я переписал свой старый эмулятор с нуля: теперь это не игрушка с рандомными опкодами, а полноценная машина времени с ассемблером, линкером, BASIC, виртуальными дискетами, монитором и Тетрисом, который ломается ровно так, как ломался бы на реальном железе 1971 года.

Читать далее

AI Sous-chef: как мы собрали приложение с облачными моделями и вынесли промпты из кода

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

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

Такой сценарий мы выбрали для командного проекта AI Sous-chef. Пользователь фотографирует продукты или вводит их списком, а сервис предлагает блюда и шаги приготовления. За два с половиной месяца мы выпустили Android-приложение и Telegram-бота.

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

Основной репозиторий AI Sous-chef опубликован под лицензией GNU AGPL v3.0. В нём находятся бэкенд, промпты, конфигурации и материалы проверок. Покажем, как устроены загрузка инструкций и обработка ответов, какие решения могут пригодиться в похожем проекте и что нам ещё предстоит доработать.

Читать далее

Сервисы без копипасты, нейронки и вечный спор Python с Go

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

Кажется, намечается интересный вечерок. 25 ноября на 114-м Moscow Python Meetup обсудим, как перестать плодить одинаковые сервисы и таскать за собой старые костыли, почему нейронка даже после десятого промпта не врубается, чего от неё хотят, и что лучше для ИИ-разработки.

Будет два доклада с реальными кейсами и цифрами, а под конец — вечный холивар взрослая дискуссия. В общем, приручаем нейронку, отказываемся от копипасты и пытаемся не поссориться из-за Go.

Подробности под катом.

Читать далее

Задачи на моём производстве терялись. Я собрал систему, где агент всех тормошит

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

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

Читать далее

Осьминог, холодильник и 498 тестов: как я за 4 дня навайбкодил бота, который собирает мне корзину в Лавке

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

Сейчас в тренде подсчет калорий БЖУ и прочие радости. Скажу честно сам считаю) И так же вайбкодинг. Лично для меня агенты стали чем то как 3D принтер. Если есть фантазия то сделать можно что угодно.

Я захотел, чтобы было так: говорю «3 дня, двое, 5000 ₽, примерно 2000 ккал в день» — и получаю меню с рецептами, где сначала используется то, что уже лежит дома, и собранную корзину в доставке . Оплачиваю сам, одной кнопкой в приложении.

Я не профессиональный разработчик. Пишу на Python для себя и честно называю себя вайбкодером: код за меня пишут ИИ-агенты, а я ставлю задачи, проверяю и говорю «да/нет». Ниже — как это было: что получилось, на каких граблях мы с агентами прыгали и что я вынес про вайбкодинг.

Читать далее

Злой автономный ИИ который реверс-инженерит чужой софт и отправляет багрепорты чтобы владелец работал бесплатно

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

🏴‍☠️ Плохо лежит

Нужный мне софт для торговли на бирже продается за подписку банковской картой Swift. Так как платежный шлюз карт МИР не был интегрирован изначально, мне ничего не остается кроме как написать аналогичный самостоятельно. В этом мне поможет автономный дистиллирующий ИИ агент

Читать далее