Почти каждый наш UI-тест начинался одинаково: старт, email, OTP, пароль, создать пасскод, повторить пасскод. Шесть экранов, около 26 секунд, и ни один из этих тестов не проверял логин. Он был просто предусловием.
Совет «делай предусловия через API, а не через UI» знает каждый, кто писал автотесты. Мы проверили его на трёх кандидатах в Android-сьюте на реальных устройствах. В одном месте API-вариант оказался на 29% медленнее UI. В двух других вышло заметно быстрее: логин ускорился с ~26 до ~7 секунд, а суммарное время 400+ тестов сократилось на 27%.
Дальше расскажу, почему так получилось, как устроен программный логин внутри процесса приложения, как мы мерили (и где ошиблись в замере сами) и по какому правилу теперь решаем, что переводить с UI.
Читать далееМногие специалисты, даже опытные, не умеют просить повышение — просто потому что никто никогда не учил вести переговоры о деньгах. Зато все умеют выполнять свои рабочие задачи: писать код, решать сложные задачи и работать с непонятными требованиями, и медленно, но верно повышать квалификацию.
Но как только дело доходит до разговора с руководителем о зарплате, начинается смятение и ожидание удобного момента. Но само собой ничего не получается, и руководители редко инициируют разговор о повышении первыми.
В статье разберём, как устроены грейды в IT, как понять, что вы готовы к следующему уровню, и как построить продуктивный разговор о повышении.
Читать далееКак попытка пофиксить русификатор для мода к DDLC вылилась в разработку собственного семантического анализатора для Ren'Py со скоростью 77 000 строк за 3.8 секунды, собственным ScopeStack, AST-парсером и LSP-сервером для VS Code.
Рассказываю, почему встроенный renpy lint бесполезен на CI, как неочевидные предиктивные рендеры экранов воруют золото у игроков, почему переменные без default гарантированно убивают сохранения после релизных патчей и как защититься от RCE при распаковке чужих .rpa архивов.
Читать далееЯ сделал бота для Telegram и MAX. Ему пишут обычной фразой: «Египет в ноябре с 10-го ±3 дня на 8 ночей, двое взрослых и ребёнок 7 лет, 4–5 звёзд». Бот находит туры, билеты и отели, а по кнопке следит за ценой и пишет, когда она падает.
В статье — техническая часть: как языковая модель превращает фразу в строгий запрос, как один код обслуживает два мессенджера, как устроено слежение за ценами и какие грабли нашлись в API Слетать.ру и Aviasales. Код на Python 3.12, asyncio, httpx, pydantic, SQLite; живёт в Docker на VPS.
Читать далееВсем привет! Я Дима, Android-разработчик в KTS, и я большой фанат языка Kotlin и библиотеки kotlinx.coroutines.
Здоровый человек может задать справедливый вопрос: зачем нужна очередная статья про корутины, когда есть ИИ? Любая модель моментально расскажет, как написать код с корутинами: где поставить suspend, что передать в launch, какой диспатчер выбрать.
Но чтобы понять, почему корутины устроены именно так, нужна выстроенная последовательность из десятка шагов, где каждый следующий опирается на предыдущий. Не осмыслив их устройство, здоровый человек не сможет понять, почему suspend-функцию нельзя вызвать из обычной.
У меня на это ушло много времени. Я писал рабочий код с корутинами, он работал, и всё это время я не до конца понимал, что происходит под капотом. Понимание пришло, когда я наконец сел и разобрал одну-единственную функцию: suspendCoroutine.
Так что я решил написать цикл статей про корутины, чтобы читателям Хабра было проще прийти к этому пониманию, чем мне. Думаю, он будет полезен и Android-разработчикам, и бэкендерам-котлинистам, и iOS-ерам, причём как начинающим, так и матерым сеньорам.
Читать далееВ прошлый раз я рассказывал, как в одиночку с AI-агентами собрал ERP-платформу на Kubernetes из 30+ сервисов. Эта статья — про её мозг: не «ещё один агентский фреймворк», а продакшн-движок, который год несёт живых клиентов (рекрутинг с AI-интервью, CRM, парсинг-конвейеры, копилот).
Про сам термин «харнесс» на Habr уже писали: это обвязка вокруг модели — цикл, инструменты, память, контекст. Повторять общее не буду, разберу конкретику: как это устроено в коде, какие таблицы, где что ломалось. Лонгрид: сначала единое окно и роутер моделей, потом сам харнесс (определения, прогоны, журнал, инструменты, агенты), в конце — всё вместе на одном живом интервью. Нетекстовые модели (речь, зрение, синтез) — отдельная вторая статья.
Сервис работает на Node, на CPU.
Читать далееДве недели назад я поставил себе инженерную задачу без редакции и без бюджета: сайт должен выпускать по пять материалов в день о том, что произошло в мире LLM, причём каждый материал проверен по первоисточникам, снабжён картинкой, разметкой для поиска и не повторяет предыдущие. Человек в этом конвейере остаётся ровно в одной точке — воротах согласования, где у него десять минут на решение.
Сейчас в журнале конвейера 61 карточка, из них 56 стали страницами на сайте, семь дней подряд собирается вечерняя сводка, а сам прогон от поиска до готовой страницы занимает три минуты, из которых языковая модель работает меньше минуты. Ниже — как это устроено, что пришлось переделывать и на чём PowerShell с LLM мстят друг другу.
Читать далееКогда смотришь на современную LLM, легко решить, что всё сводится к вызову API. Но многие разработчики, которые часто используют LLM в работе или в своих проектах, рано или поздно хотят действительно разобраться, как они работают. К тому же - кто не смотрел «Железного человека»? По сути самый лучший способ реально разобраться это сделать что-то свое. Чаще всего возможности позволяют сделать что-то маленькое, зато свое и работающее.
Так появился jarvis - компактный decoder-only transformer для русского текста и диалогов. В проекте нет готового AutoModelForCausalLM: я сам реализовал архитектуру, обучил токенизатор, собрал пайплайн подготовки данных, добавил претрейн и SFT, KV-cache для генерации, консольный чат, Telegram-бота и простой бенчмарк. Готовый SFT-checkpoint и соответствующий токенизатор опубликованы на Hugging Face.
Читать далееЯ с конца сентября запускал PC‑версии Dark Souls на iPhone Air через эмулятор Madeira. Remastered теперь играется с экранным геймпадом, у Dark Souls III в тяжёлых сценах медиана выросла с примерно 20 до 36,7 FPS на экспериментальной сборке. По дороге набралось 5 принятых и 11 открытых PR в Madeira, Wine, FEX и DXMT и репозиторий со скриптами, который я теперь выкладываю.
Оговорка сразу: у меня один телефон (iPhone Air на бета‑версии iOS 27.2), один тестер, то есть я, и все цифры ниже снимались на этом устройстве. Игры у меня свои, купленные. В репозитории нет ни игровых файлов, ни сейв‑редакторов, ни обхода защиты, и принимать такое я не буду.
Читать далееКак я перешёл с openclaw на DeepSeek Harness, вернул своему VDS load average 0,03 и перестал докупать память.
Вслед за многими читателями этого сайта я в какой-то момент дошёл до стадии, когда тоже установил себе ИИ-ассистента на VDS. Поначалу всё ограничивалось поиском новостей, но время шло, и спектр работ, которые он выполняет, рос.
Не буду писать о своих задачах, для статьи они не особо важны. Скажу лишь, что в основном они здесь именно ассистентные: найти, предупредить, прочитать и т.п.
Но эйфория от того, что я, начитавшись интернетов и насмотревшись видео, поставил себе openclaw, быстро прошла. Да, функциональность у него потрясающая.
Однако...Была мысль: а место ли этой статьи на хабре? Но потом вспомнил, что тут уже была штукатурка… А еще подумал, что тут очень много людей, которые суют свои ручки во все места, до которых могут дотянуться, а значит — стоит! )
Ну а последней каплей стала фото на озоне, в которой покупатель предъявлял претензию к «некачественной» гибкой подводке, которая течет. На фото были гайки подводки, которые закручены на трубы, обмотанные ФУМ лентой… Ну кто в теме понял о чем я. А кто не в теме — дальше будет понятно.
Я не профи в этой теме. Я всего лишь «тыжпрограммист», который чинит водопровод сам. Хотя в моей копилке есть водопровод с нуля в новостройке (с некоторыми ошибками, да). Несмотря на кажущуюся простоту я постоянно встречаю «детские» ошибки вроде подматывания ФУМ ленты под гайку гибкой подводки и подобное.
Тут не будет какого-то углубления в тему. Не будет и рассказа о том, как редуктор давления без обратного клапана после него может загнать стрелку манометра за пределы шкалы в 10 атм при давлении на входе всего 3 атм (да, это мой опыт). Цель статьи — что бы кто-то, кто полез в водопровод сделал меньше ошибок.
Итак, водопровод состоит из соединений труб :) И эта статья о них. Типов соединений довольно много, но большинство встретится только с двумя из них: с накидной гайкой и с обычным резьбовым соединением.
Закрутим!Это продолжение истории про облачное хранилище aroshka.cloud и заказы на Kwork, которые подводили исполнителей к оплате тарифа. Первая часть: https://habr.com/ru/articles/1097776/, вторая: https://habr.com/ru/articles/1098252/. На этот раз речь пойдёт о человеке, который все эти дни защищал сервис в комментариях к нашим статьям. Мы проверили, кто он, и нашли его же заказы на Kwork, только размещённые от имени самого сервиса.
Все скриншоты ниже лежат в открытом репозитории (https://github.com/viktor138irk/aroshka-api-docs/tree/main/evidence), а страницы, с которых они сняты, сохранены в Web Archive. Ссылки на архивные копии стоят рядом с каждым фактом.
Читать далееСвёрточные нейросети умеют находить закономерности в данных, но на финансовых рынках легко принять особенности волатильности за сигнал и получить модель, которая хорошо работает только на исторических котировках. Разберём, как применять CNN к временным рядам и данным ордербука, избегать утечки будущего и проверять качество прогнозов, чтобы понять, когда свёрточные архитектуры действительно полезны в финансовом анализе.
Изучить методИстории о том, как ИИ-агент «натворил дел» на сервере, похожи одна на другую. Модель не злая, она уверенная. Сделать её безошибочной нельзя, а решить заранее, во что обойдётся её ошибка, можно. Семь рамок, которые стоит поставить до первого запроса — независимо от того, какой инструмент вы выберете.
Читать далееСалют, Хабр!
Не так давно мне захотелось сохранить себе подборку статей одного автора: несколько десятков публикаций вместе с комментариями (которые зачастую не менее ценны, чем сами статьи). Конечно, будь статья одна, я, не задумываясь, нажал бы Ctrl+S или Ctrl+P. Но жать их полсотни раз — удовольствие сомнительное. Готовые решения нашлись, но меня ни одно не устроило (о них ниже). Поэтому я, как истинный программист, озадачился написанием собственного инструмента. А как истинный ленивый программист — поручил часть этой задачи Claude Code.
Так появился HabrExporter — приложение с графическим интерфейсом и CLI, которое сохраняет статьи, блоги авторов и закладки Хабра в PDF, EPUB, Markdown и ещё нескольких форматах. PDF при этом выглядит точь‑в‑точь как на сайте, вместе с деревом комментариев, а данные программа берёт не парсингом HTML, а из внутреннего API Хабра.
О том, как это устроено, что умеет программа, я и расскажу.
Save as...Добрый день, дорогие читатели!
Мы переходим к использованию API MaxPatrol VM по-взрослому.
В прошлой статье мы успешно авторизовались в MPVM, получили нужные для любого API-запроса headers.
Сегодня мы загрузим в MPVM IP-план Организации, создадим задачи по сканированию Пентестом и затронем задачи по Аудиту.
Примеры будут также на Python.
Читать далееПредлагаю вашему вниманию информацию о применении популярного SDR HackRF One — использование для радиомониторинга эфира, контроля занятости радиочастот/диапазонов частот, определение центральной частоты излучения немодулированного радиосигнала и другое, с сохранением результатов в файлы различных форматов (CSV, PNG/JPG), о чём сообщу далее.
Благодаря относительно невысокой стоимости HackRF, по своим свойствам и характеристикам, он завоевал популярность в среде радиолюбителей и специалистов в области радиосвязи, привлекая сочетанием универсальности и доступности.
Для радиолюбительского сообщества решающим фактором стала возможность не просто «слушать эфир», а полноценно экспериментировать с передачей: от тестирования самодельных модулей до имитации сигналов и работы с цифровыми протоколами. При этом устройство закрывает большинство типовых задач начального и среднего уровня — анализ спектра, декодирование сигналов, изучение модуляции, — без необходимости инвестировать в дорогостоящие измерительные комплексы.
В профессиональной среде (в том числе у инженеров по радиосвязи и в учебных лабораториях) ценность HackRF — в роли платформы для прототипирования. На его базе удобно отрабатывать алгоритмы обработки сигналов, тестировать приёмные тракты, моделировать помеховые обстановки и проверять совместимость оборудования. Открытый исходный код софта и поддержка GNU Radio позволяют быстро адаптировать стенд под конкретную задачу, а модульная архитектура даёт возможность наращивать функционал внешними компонентами (аттенюаторами, фильтрами, внешними опорными генераторами). Кроме того, используя навыки программирования: C++, Python и др., на базе HackRF вполне возможно создавать «аналоги» приборов для проведения оценочных (предварительных) измерений — чему и уделим больше времени по этой части.
Читать далееУ EmbeddingGemma 2 выходная проекция имеет ранг 512, хотя штатный эмбеддинг содержит 768 координат. Мы использовали QR-разложение этой проекции, чтобы перевести векторы в 512-мерное пространство и сохранить косинусное сходство. Затем сравнили QR-варианты с штатным MRL-уменьшением размерности.
Эксперименты провели на RTX 5090: проверили качество поиска на SciFact и FiQA, измерили память и задержку точного поиска FAISS на корпусах MS MARCO до пяти миллионов документов, а также время конвертации готовой базы. На пяти миллионах документов QR-direct снизил пик памяти процесса с 15,88 до 11,11 ГиБ. Полная задержка одного запроса изменилась с 36,19 до 34,80 мс, а батча из 32 — с 50,62 до 44,97 мс.
В статье разбираем, как устроено преобразование, какие варианты сравнивали и где заканчиваются выводы этих экспериментов. Стенд с RTX 5090 арендовали через каталог GPUGO.
Читать далееСередина девяностых, транзитный терминал одного из американских аэропортов. Пожилой грузный мужчина заходит в кабинку мужского туалета, закрывает за собой щеколду и ставит дорожную сумку прямо на кафель. Звать его Джером Джейкобсон. В компании Simon Marketing этот солидный гражданин занимал ни много ни мало пост директора по корпоративной безопасности. И прямо в этот момент наш герой находился при исполнении: оберегал от лап криминала общенациональную промоакцию McDonald’s Monopoly.
Правда, защита выглядела… мягко говоря, специфически. Джером расстегнул сумку, достал плотный сейф‑пакет, аккуратно срезал контрольную пломбу и выудил оттуда редчайший заветный стикер с джекпотом в один миллион долларов. На место миллиона отправился пустой бланк. Следом из кармана появилась новенькая фабричная пломба‑дубликат с точно таким же номером. Щёлк — и конверт снова выглядит абсолютно девственным. Срезанный кусок пластика отправился в брючный карман, купон на миллион — во внутренний карман пиджака. На всё про всё ушло от силы три минуты.
Читать далее21 октября разработчики PHP выпустили исправления для двух критических уязвимостей — CVE-2026-109618 и CVE-2026-109619, известных как PHP2Shell. Обе затрагивают сам интерпретатор PHP и при определенных условиях позволяют выполнить код на сервере без авторизации. Для атаки необязательно находить ошибку в WordPress, Laravel или другом приложении, так как проблема находится уровнем ниже.
О механике этих уязвимостей уже достаточно написано. Мы сосредоточимся на обновлении работающего сервера: что проверить до установки патча, как обновить PHP через ispmanager или пакетный менеджер Linux и убедиться, что исправленная версия действительно обслуживает сайт.
Читать далее