Разбираю проблемы cross-platform onboarding между Telegram Mini Apps и native apps. Почему Android, iOS, Windows и Linux по-разному ведут себя при deeplink handoff внутри Telegram WebView.
Читать далееПривет, Хабр! Меня зовут Илья, я работаю Manual QA в команде, которая отвечает за качество продукта с большим количеством микросервисов, API и регулярными релизами. Если вы хоть раз писали тест-кейсы по тикету из Jira, потом руками собирали Postman-коллекцию по OpenAPI-спецификации, а после ревью документации обнаруживали, что половину сценариев забыли — эта статья для вас.
Я собрал инструмент, который автоматизирует три самых рутинных задачи QA-инженера: генерацию тест-кейсов, генерацию API-тестов и ревью документации. Всё это под одной крышей, с поддержкой любого OpenAI-совместимого LLM (включая локальные модели), с интеграциями в Jira, Confluence, TestRail, TestIT и Zephyr Scale.
Проект называется Test Generator Suite (TGS), и в этой статье я расскажу, какие проблемы он решает и как устроен внутри. Сразу оговорюсь: я не разработчик, я QA, и большую часть кода писал «как умею» — поэтому если в архитектурных решениях вам что-то покажется странным, я заранее согласен. Это инструмент для коллег по цеху, а не образец Python-инженерии.
Читать далееПредставьте: вы в офисе, срабатывает пожарная сигнализация. Что вы делаете?
Идёте к эвакуационному плану на стене? Пытаетесь вспомнить, что показывали на последнем инструктаже? Или просто идёте за толпой, надеясь, что все знают, куда бежать?
Наша команда столкнулись с этим вопросом, когда начала работать над проектом для «Просоюза», профсоюзной организации «Сбера». Задача звучала просто: «Помочь людям не растеряться в чрезвычайной ситуации». Но когда мы начали погружаться в тему, оказалось, что не всё так однозначно.
Читать далееКогда вы открываете mail.google.com, ваш рекурсивный резолвер делает три-четыре шага: спрашивает root, потом TLD, потом authoritative для google.com, иногда ещё один уровень. Десятилетиями каждому из этих серверов отправлялся один и тот же вопрос целиком: «дай мне mail.google.com». Root-серверу, который понятия не имеет про google. TLD-серверу, который умеет только делегации com.. Каждый из них видел всю строку, хотя для своей работы нуждался в одной метке.
В 2016 году Стефан Бортцмайер написал RFC 7816 и сказал: ребята, это странно. Давайте резолвер будет спрашивать ровно столько, сколько нужно для следующего хопа. Идея простая до неприличия. И с этого момента началось десять лет внедрения.
Где течёт DNSВы когда-нибудь задумывались, что будет с вашей профессией, когда ИИ научится делать половину вашей работы? Дело не в увольнениях — меняется сама структура занятости.
Согласно свежему исследованию McKinsey, в десяти крупнейших странах Европы уже сегодня можно автоматизировать 58% рабочих часов. Технологии созрели. Вопрос только в том, как быстро компании начнут их внедрять.
Аналитики выделили три новых архетипа профессий. В первом (31% занятости) человек остается в центре — это врачи, менеджеры, педагоги. Во втором (27%) люди работают бок о бок с агентами и роботами — продавцы, сантехники, медсестры. В третьем (42%) структура и алгоритмы берут верх — бухгалтеры, операторы, инспекторы.
Изменения не сводятся к тому, что вместо человека за цифры отвечает нейросеть. Это переформатирование профессий: одни навыки уходят в автоматику, другие становятся еще более ценными. Меняется сам способ работы. Европе, чтобы оставаться конкурентоспособной, предстоит переобучить миллионы людей.
Попробуем разобраться, какие навыки окажутся в выигрыше, какие уйдут в тень и что это значит для каждого из нас.
Читать далееПришла мне как-то идея сделать мобильное приложение на базе Telegram. Полез в npm и сразу нашёл react-native-telegram, но это оказалась обёртка над Bot API и тут я понял, что будет весело.
У Telegram с инструментами для разработчиков в целом нормально — Bot API, MTProto, TDLib. Только под RN ничего нет и вряд ли когда-то будет, насколько я знаю уже есть популярные Telegram-клиенты на React-Native, но видимо они не стали упаковывать это в библиотеку и делиться опытом с народом.
Кто пробовал запилить свой клиент Telegram на RN, тот знает, что без хороших навыков нативной разработки особо ничего не получится. В какой-то момент я устал мучиться с patch-package и кучей натива внутри RN проекта, поэтому решил, что пора это упаковать в либу. Через два года и одиннадцать релизов она оказалась в официальной документации TDLib.
Читать далееВ этой статье мы на практическом примере разберём создание консольной симулятора файтинга на C++ с двумя персонажами на арене. Вы увидите, как работают основные принципы ООП: инкапсуляция, наследование и полиморфизм. Мы реализуем базовый класс Character и трёх наследников — Warrior, Orc и Magician — каждый со своими уникальными атаками, дальностью обнаружения врага и поведением (преследование / побег). Также покажем простейшую анимацию выстрелов, отрисовку карты 14×14 и игровой цикл с пошаговой логикой боя. Статья будет полезна новичкам, которые уже знакомы с синтаксисом C++ и хотят увидеть, как теория превращается в работающую игру.
Читать далееСотни строк кода, страницы документации, корпоративные чаты — и всё это каждый день. Когнитивная нагрузка не снижается. Внутри — система инструментов, которая помогает мне не тонуть: конфиги clang и специфичные настройки VSCode, приложения визуализации и др. С объяснением зачем каждый из них.
Читать далееSegmentation fault - одна из тех ошибок, с которой сталкивался каждый, но мало кто разбирался что за ней стоит. В этой статье копаем глубже обычного: смотрим как ядро Linux понимает что произошло, какие типы ошибки бывают - с реальными примерами и исходниками ядра Linux.
СегфолтнутьсяИнтернет любит вечные войны: Linux против Windows, Vim против IDE, tabs против spaces. И, конечно, Python против Java. Одни говорят: «Python уже готов для enterprise». Другие считают RPS и стоимость инфраструктуры.
Под катом — история реального выбора для аэропортовой системы AWOS: почему строгая типизация, бинарная переносимость и современный GC перевесили лаконичность — и что стоит попробовать Python-разработчику.
Читать далееПри создании новой игры, одним из первых вопросов является выбор игрового движка.
Основные кандидаты у всех на слуху: Unity, Unreal Engine и Godot.
Но кроме них существует ещё немало движков второго эшелона, про которые мало кто знает.
Собственно, про один из них - под названием MonoGame - я и хочу рассказать.
Читать далееКак понять смущающую интуицию задачу за секунду - метод экстремальных параметров.
Бывало ли у вас такое - вы смотрите на условие задачи, логику алгоритма или даже жизненную ситуацию, интуиция кричит: «Здесь всё очевидно!», а строгая логика, тесты или реальность упрямо показывают совершенно другой результат?
Человеческий мозг ленив и часто пасует перед теорией вероятностей или сложными физическими взаимодействиями. Но есть один простой инженерный трюк, который позволяет мгновенно подсветить правильный ответ. Нужно просто выкрутить параметры задачи на максимум или минимум.
Давайте разберем, как этот метод работает, на двух классических парадоксах, над которыми годами ломают копья в интернете.
Как подкрутить ожидания?Выпадающий список — это ui-компонент, без которого редко обходится сайт. В этой статье я расскажу про то, как принял решение отказаться от enum для рендеринга выпадающих списков и перешел к конфигу-константе, и почему результат мне понравился.
Читать далееЕсли нужно спрятать дерево, прячьте его в лесу. Лес интернета состоит из TLS-соединений (>70% трафика, если верить статистике): вкладок браузера, WebSocket-потоков, долгоживущих HTTPS-запросов, клиентов игр, мобильных приложений, телеметрии, видеоплееров, чатов и тысяч спокойных TCP/443-соединений, которые выглядят настолько обычно, что именно это и делает их интересной средой для, кхм, исследования.
Очевидно, единственная и конечная цель существования интернета — быть распределённым хранилищем порно, так почему бы не использовать его по прямому назначению и не хранить смешные картинки прямо в трафике?
Чатить далееВторой месяц пытаюсь продать планшет. 54 покупателя добавили в его избранное и чего то ждут. Видимо ждут снижения цены. Цену снижать не планирую, а вот помочь покупателям не тратить время на её проверку могу. Один скрипт может мониторить цену по ссылке, с уведомлением в телеграм или на почту.
Посмореть скриптНаверняка все помнят о событиях вокруг Венесуэлы в начале этого года. Также, я ранее рассматривал в рамках обзора на нефть различных стран Венесуэлу и так как в основном тот материал был более историческим, решил добавить актуальных данных.
Можно считать это дополнением к предыдущему обзору на нефть Венесуэлы.
Если кратко по текущим потребителям: из очевидного США. Из менее очевидного - Индия (для вытеснения российской нефти).
Читать далееИногда хочется с кем-то обсудить что-нибудь интеллектуальное, но не так часто находятся люди готовые поддержать разговор. Поэтому все чаще ловлю себя на том, что ИИ становится хорошим собеседником, готовый выслушать все твои бредовые идеи.
И иногда это приводит очень интересным диалогам. Не знаю на сколько это близко к тематике ресурса, снесут так снесут.
ПогналиПродолжаем серию про файнтюнинг и создание DevOps-агента Oni. В первой части я собирался в отпуск и хотел, чтобы локальная моделька через OpenClaw сама мониторила ошибки и переподнимала проекты — пока я отдыхаю. Перебрал много разных моделей через Ollama и понял, что половина либо не умеет tool calling, либо ломаются на multi-step. В отпуск я в итоге не уехал — вместо этого снял VM с RTX 3090, начал учить Qwen3-14B через Unsloth QLoRA, а через неделю купил с авито старенький Dell с 3090, чтобы обучать у себя на локалке — стало интересно победить проблему.
Во второй части я пробовал разные подходы к файнтюнингу Qwen3:14b и понял: incremental delta-merge не работает. Дошёл до oni:v8 с 11/11 на Django scaffold, попытался добавить SSH/docker поверх — и модель забыла Django. Пять регрессий подряд, anchor-примеры не спасают, самый мягкий lr=1e-5 всё равно ломает. Познакомился с catastrophic forgetting, потратив пять ночей и полгигабайта удалённых GGUF-чекпоинтов. Переехал на fresh-from-base: каждая base-N с нуля от чистого Qwen3-14B, эволюционирует только датасет.
В третьей части — про дистилляцию. Hand-crafting упёрся в потолок: каждый трейс — это итерация с Claude, ревью, правки, повторная генерация, и так на каждый из тысяч примеров. Сделал локальную дистилляцию через gemma4:31b на той же 3090: сырые датасеты → фильтр → переформат в agent-trace → валидация → датасет. Получил внушительную базу датасетов для моего агента, не вкладывая деньги на сторону.
А эта, четвёртая часть — самая серьёзная. С неё начинается всё по-взрослому. Первые три — это «как я собрал инструмент». Тесты — это «как я понимаю, что инструмент вообще работает, и что он не работает не так, как я думаю». Без них вся история выше — самообман: цифры обучения красивые, чекпоинты лежат, в чате модель отвечает уверенно — а что она реально умеет, чего не умеет и где у неё дыры, ты не знаешь.
Читать далееКоманда начинает тонуть не в тот момент, когда задач становится много, а когда поток работы перестаёт соответствовать реальной пропускной способности разработки.
В статье — разбор ситуации, знакомой многим IT‑командам: дедлайны не двигаются, найм заморожен, техдолг растёт, инциденты множатся, а люди постепенно выгорают. На примере условного «ФинТеха» автор показывает, почему попытка «ускориться ещё сильнее» обычно только усугубляет кризис и как двухнедельный Stop the Line может вернуть управляемость процессам без расширения штата.
Читать далееГде‑то в начале года мы решили: давайте автоматизируем часть поддержки через LLM. Ну, знаете, идея тогда казалась почти очевидной.
Мы ни в коем случае не думали о том, чтобы заменять живых операторов. План внедрения был аккуратным: ИИ отвечает на простые вопросы, сложные уходят людям, у модели есть доступ к базе знаний, и если модель не уверена — ответ не отправляется. Ну, по крайней мере, такой был план и так это выглядело на слайдах. В дальнейшем мы хотели полностью освободить саппорт от рутины, снизить выгорание и текучку. На практике система оказалась намного хаотичнее.
Читать далее