Обновить
256K+

Python *

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

Считаю проверки бизнеса в открытой выгрузке реестра: ноль плановых, 48 тысяч внеплановых

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

[картинка: habr-09-kdpv.jpg]

Мораторий на проверки малого и среднего бизнеса - самое повторяемое слово в осенних пересказах для бизнеса, и почти всегда без единого числа. Мне надоело цитировать чужие пересказы, и я пошёл в первоисточник: единый реестр контрольных (надзорных) мероприятий, который ведёт Генеральная прокуратура, отдаёт свои данные файлами, без регистрации и капчи. Я скачал октябрьскую выгрузку, разобрал два с четвертью гигабайта разметки и посчитал. Плановых проверок за октябрь 2026 года в реестре ноль. Внеплановых - 48 292, и у 37 тысяч из них в записи стоит субъект МСП. Ещё 218 673 записи - профилактические мероприятия, о которых в пересказах моратория не пишут вовсе.

Ниже - метод, нормы и числа со снимка 3 ноября 2026 года. Этот разбор не является юридической консультацией и рекомендацией: решение по своему случаю остаётся за вами.

Читать далее

Применение ИИ в проведении численных экспериментов и оформлении статей поисковых НИР

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

Всем привет. Представлюсь: Шевченко Максим Юрьевич. Работал мануальным тестировщиком (в том числе); считаю себя исследователем, в основном, в области математики.

В этой публикации я хочу поделиться личным опытом и результатами использования LLM Gemini в связке с Python для проведения численных экспериментов и оформления статей в рамках своих математических исследований. Они носят поисковый характер. Здесь нет жесткого плана, и методология взаимодействия больше похожа на Agile, чем на Waterfall. В процессе сотрудничества с ИИ я столкнулся как с его достоинствами, так и с недостатками, о которых и хотел бы поделиться.

Читать далее

Ассистент Встреч своими руками: анонимный Chrome в контейнере, календарь через EWS и две тысячи встреч в проде

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

Как я сделал бота, который сам приходит на встречи в Teams / Яндекс Телемост / МТС Линк, записывает разговор и через несколько минут отдаёт расшифровку и саммари с договорённостями. Почему не Copilot и не штатная расшифровка, почему два разных потока вместо одного, какие грабли собрал и что показали четыре месяца в проде.

Читать далее

Очумелые ручки с Чижиком, выпуск № 2: школьная география на 5

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

Можно ли превратить фотографию сухого школьного списка географических объектов, которые нужно выучить за каникулы в полноценный тренажер карты мира? Во втором выпуске «Очумелых ручек с Чижиком» делаем офлайн-приложение с 82 объектами, подсказками и установщиком для Windows - и выясняем, почему Байкал найти проще, чем правильно обработать один клик мыши.

Погнали

Почему в CustomTkinter не работают Ctrl+C / Ctrl+V и как это починить Писал админку на CustomTkinter и наткнулся на...

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

Почему в CustomTkinter не работают Ctrl+C / Ctrl+V и как это починить

Писал админку на CustomTkinter и наткнулся на классический баг: стандартное контекстное меню (правая кнопка мыши) с «Копировать/Вставить» просто не работает. Точнее, оно появляется, но при нажатии ничего не происходит.

Проблема в том, что CTkEntry наследуется от tkinter, но не обрабатывает системные виртуальные события (<<Copy>>, <<Paste>>) так, как мы привыкли.

Как это выглядит в коде (не работает):

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

INT8 не виноват: как мы мерили сэмплеры на квантованных flow-моделях и опровергли собственную идею

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

INT8 не виноват: как мы мерили сэмплеры на квантованных flow-моделях и опровергли собственную идею

Читать далее

История хостинга одного Flask-приложения без настройки VPS

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

Мы хотим рассказать историю одного нашего клиента, с которым прошли долгий путь. И по запросам которого реализовали несколько интересных функций в нашей PaaS-платформе.

Компания AIprintgen (занимается 3D-моделированием) искала сервис для хостинга приложения на Flask с возможностью автоматизации деплоя через привязку Git-репозитория. Но с ростом проекта столкнулась со сложностями, которые нам предстояло решить совместно.

Читать далее

Распил монолита глазами QA: как взять от жизни все и наладить тестирование нового микросервиса

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

Вынести сервис из монолита непросто, но результат того стоил: регресс при выкатке новой фичи стал в 30 раз быстрее. Рассказываю, почему автотесты переносили руками, а не через Claude, и что вскрыл этот аудит.

Читать далее

Голосовые в текст на одном ядре: GigaAM v3, нарезка по паузам и очередь по кругу

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

Сделал бесплатного бота, который переводит голосовые и кружки в текст, и уложил его в одно ядро сервера. Внутри — замеры GigaAM v3 против Whisper на процессоре, нарезка длинных записей по паузам без отдельной модели, очередь по кругу, чтобы короткое голосовое не ждало чужой подкаст, и свой сервер Bot API для файлов до 2 ГБ. Код открыт.

Читать далее

Старый софт на свежем Linux: свой GCC, свой OpenSSL и честный RPATH

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

А что если… нужен старый софт, но при этом хост Linux свежий?

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

Казалось бы, проблема решена. Но есть нюанс (с). Добро пожаловать под кат.

Читать далее

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

PyTorch установлен. А GPU точно работает?

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

PyTorch установлен. А GPU точно работает?

Когда устанавливаете PyTorch, сразу определитесь, где будете запускать вычисления: на процессоре или видеокарте. От этого зависит выбор сборки: CPU, CUDA для NVIDIA или ROCm для AMD. С конфигурацией лучше разобраться заранее, чтобы потом не искать причину, по которой фреймворк не видит GPU. 

Перед установкой стоит проверить несколько вещей 👇🏻

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

Бесплатный аналог Auto Label от Roboflow: как я разметил 12 576 кадров за ночь

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

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

Auto Label у Roboflow задачу решал, но на бесплатном тарифе это полгода ожидания, а платный прогон по всему массиву обошёлся бы примерно в двести долларов. Поэтому я написал автоаннотатор на SAM3: пятнадцать файлов на PyQt6, текстовые промпты вместо обучения, пороги по классам.

Главный трюк — конфликты классов. SAM3 находит «руку» и «перчатку», а нарушение приходится вычислять вычитанием: если бокс руки перекрыт перчаткой больше чем на четверть, он уходит в нарушение. На этом держится вся разметка шести классов.

Итог: 12 576 кадров, 104 726 боксов, одна ночь на RTX 4060 Ti, ноль рублей. Модель на датасете даёт mAP50 = 0.825. В статье есть код и разбор того, где SAM3 врёт.

Читать далее

Скрипт обновил JSON, а читатель получил половину файла Рассмотрим домашний сервер: один скрипт собирает показания...

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

Скрипт обновил JSON, а читатель получил половину файла

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

Обновление выглядит привычно:

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

Мне давно не хватало простого gui пингера, на подобии Netmap под виндой, который бы работал из коробки и без танцев с...

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

Мне давно не хватало простого gui пингера, на подобии Netmap под виндой, который бы работал из коробки и без танцев с бубном в wine. Приложение, которое можно было бы свернуть в трей, не требовало тонну зависимостей, и не имело не нужного функционала, типа веб интерфейса (это уже другой уровень мониторинга)

QPing — написан на Python с использованием библиотеки PyQt6. Для мониторинга доступности сетевых хостов по ICMP или TCP-портов. Предоставляет визуальное отображение статуса хостов в виде графиков с latency и министатистикой. Поддерживает группировку хостов для удобства, и всплывающие уведомления через системный трей.

Основные возможности:

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

Эмулятор Game Boy Color на MicroPython: Pokémon Crystal на конференц-бейдже с RP2350

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

Стив Франсиа, автор Hugo и Cobra, после эмулятора NES запустил на конференц-бейдже GitHub Universe с RP2350 эмулятор Game Boy Color — на MicroPython с генератором кода Viper. Процессор SM83 с его восемью регистрами и 512 опкодами не влез в четыре быстрые локальные переменные Viper, и декодер пришлось строить на восьмеричной раскладке опкода. Ветвления по адресу заменила таблица из 16 страниц по 4 КБ, двухмегабайтные картриджи подгружаются по банку при первом обращении, а разгон до 300 МГц вешал общую шину QSPI. Плюс три бага из реальных игр: окно диалога в Oracle of Ages, «вывернутый» Линк в режиме двойной скорости и указатель стека, который Pokémon Crystal направляет прямо в ROM.

Читать далее

Ипотека или аренда в Петербурге: я посчитал на Python и вот что вышло

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

Привет, Хабр! Я построил простую экономико‑математическую модель жилищного бюджета домохозяйства, подставил в неё данные по Санкт‑Петербургу на 2026 год и прогнал несколько сценариев. Код выложил на GitHub, а здесь — результаты, графики и все входные данные, чтобы можно было воспроизвести.

GitHub: https://github.com/CheesePunk/Housing-Budget-Model

Читать далее

Как голосовой робот принимает заявки на ремонт и передаёт их мастеру в Битрикс24

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

Привет, Хабр! В этом материале сделаем сервис, который разгрузит диспетчера сервисного центра по ремонту бытовой техники. Голосовой робот будет принимать входящий звонок и собирать детали обращения. На каждое обращение в Битрикс24 будет создаваться карточка с назначенным мастером.

Стек проекта: Python 3.10+, FastAPI, Pydantic, SQLite, HTTPX, Битрикс24, Яндекс Геокодер, голосовой робот и SMS API от МТС Exolve.

Читать далее