Habr.com

Ленты новостей Хабр
Все публикации подряд на Хабре
Обновлено: 1 час 6 мин. назад

Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения

вт, 05/19/2026 - 17:33

Меня зовут Родион, и я уже около 2,5 лет работаю в VK Android-разработчиком в крупном многомодульном проекте с сотнями экранов и довольно большой аудиторией. Когда я попал на проект, стек был классическим и проверенным: XML-вёрстка, навигация через Cicerone, Dagger 2 для DI, Coroutines и Flow для асинхронщины, а в качестве архитектурного паттерна — MVVM. 

Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов. 

Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли. 

Полный переход на Jetpack Compose мы разделили на три больших этапа:

- переписываем содержимое всех фрагментов на ComposeView;

- переходим с Dagger2 на Koin;

- меняем навигацию с Cicerone на Compose-навигацию.

О втором и третьем этапах кратко расскажу ниже —  в главе стратегии перехода, а на первом этапе остановлюсь подробнее.

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

Читать далее

Графы знаний в юридическом домене: эксперимент с LightRAG

вт, 05/19/2026 - 17:27

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

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

Это первая часть практического эксперимента с LightRAG, одним из самых известных графовых фреймворков. На небольшом корпусе из Гражданского кодекса РФ и судебной практики разбираем, как фреймворк устроен, как его быстро развернуть, и почему граф из "коробки", без оптимизации и тонкой настройки, при всей внешней убедительности, еще не готов к полноценной работе в юридическом домене.

Читать далее

«Первая в мире носимая бутылка»: проводим патентное расследование

вт, 05/19/2026 - 17:17

На неделе в интернете завирусился на 15 млн просмотров ролик с «гениальным изобретением».

Как патентный поверенный я не смог пройти мимо этой истории. Пока американцы сметают продукт тысячами заказов, давайте-ка разберемся, а правда ли он «первый в мире».

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

Читать далее

Паттерны организационного дизайна: практическое руководство

вт, 05/19/2026 - 17:15

Меня зовут Игорь Гранщиков, я руководитель разработки Авито Недвижимости. Эта статья о паттернах организационного дизайна основана на моём докладе на Saint TeamLead Conf 2025. Там, где что-то взято из книги, фреймворка или методологии, будут явные ссылки. Всё остальное — моё личное мнение, основанное на опыте. Каждый из этих паттернов я так или иначе пробовал в разное время и в разных компаниях: что-то приживалось надолго, а от чего-то приходилось довольно быстро отказываться.

Читать далее

Кроссплатформенное приложение на Go руками PHP разработчика

вт, 05/19/2026 - 17:09

В вакансиях на hh всё чаще встречаются требования: Go + Python, Go + PHP. Для веб-разработки python и php во многом похожи, и у меня уже был опыт работы с ними.

В статье раскрываю свой опыт изучения Go на примере разработки приложения для проверки доступности сайтов.

Читать далее

Джуны теперь пишут лучше, чем понимают. Что с этим делать

вт, 05/19/2026 - 17:06

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

Читать далее

Что общего у гибридного облака и Бэтмена

вт, 05/19/2026 - 17:06

У Брюса Уэйна есть деньги, влияние и ресурсы.

У Бэтмена — скорость, гибкость и гаджеты на все случаи жизни.

Но по отдельности один без другого не может: без Брюса неоткуда взять технологии, а без Бэтмена они не имеют смысла. Только вместе они закрывают проблемы, с которыми поодиночке не справились бы. Гибридная инфраструктура работает (примерно) так же...

Читать далее

Сколько весит интернет: считаем массу данных и их хранилищ

вт, 05/19/2026 - 17:00

Интернет — распределенная система, размер которой нельзя увидеть в окне «Свойства». Более того, ответ на вопрос «что считать интернетом?» существенно влияет на результат вычислений. Точных данных не найти, но отдельные исследования и статистика крупных интернет-ресурсов позволяют произвести примерные расчеты.

В этой статье вас ждет доступная в интернете информация об интернете, простые расчеты и, конечно же, статистика.

Читать далее

Как мы вывели в админку ошибки yt-dlp, которые жили только в логах. Bridge на 200 строк и борьба с alert-fatigue

вт, 05/19/2026 - 16:51

История о том, как сделать видимыми ошибки yt-dlp, которые молча умирали в логах воркера. Bridge на 200 строк, классификатор content vs infra, борьба с alert-fatigue.

Читать

Можно ли вайбкодить на MacBook Neo: почти что настоящая разработка на самом дешевом ноутбуке Apple

вт, 05/19/2026 - 16:48

Меня, наверное, сейчас поднимут на смех, но сам я и близко не разработчик. Вообще. Так, по-любительски пилю ботов для Telegram через Claude Code: пара вечеров, одна папка с проектом, и оно работает. И вот за этим занятием в какой-то момент возник простой вопрос: а на каком минимально возможном железе все это делать? Топовый MacBook Pro отпал сразу. Все-таки 300к за машину, на которой ты по выходным учишь нейросетку отвечать на стикеры — как-то жирновато. MacBook Air? Ну, возможно. А что если опуститься еще ниже и купить MacBook Neo? Звучит интересно. Но вот потянет ли?..

Читать далее

Сложности разработки на UE 4 и анонс на крупном медиа

вт, 05/19/2026 - 16:44

Анонс игры — одна из самых важных частей её разработки.

Сложно переоценить значение этого этапа. Он важен как для крупных студий, так и для соло‑разработчиков вроде меня. Хочу поделиться своей историей «успеха» анонса на IGN. Расскажу о технических проблемах при работе с движком UE 4, а также какими инструментами я пользуюсь.

Читать далее

Разбираемся в ML без воды: от базы до Attention. Часть 1

вт, 05/19/2026 - 16:23

Сколько статей на хабре про машинное обучение? Обозначим их количество за и напишем ‑ю.

Это попытка собрать цельное понимание: пройти путь от «что это вообще такое» до условных трансформеров и связать всё в одну логичную цепочку.

Попробую всё описать максимально простым языком, минимально опираясь на математическую терминологию.

Как говорится, буду разбирать так, как сам это вижу и понимаю — без лишней теории, но и без магии.

Читать далее

Культ квантования: почему 3 битные LLM это диагноз, а не оптимизация

вт, 05/19/2026 - 16:15

Переход от FP16 к 8 битному квантованию был триумфом инженерии, позволившим запускать LLM на потребительском железе почти без потерь. Но сегодня индустрия сошла с ума. 4 бита стали нормой, 3 бита преподносятся как новый стандарт, а на GitHub всерьез обсуждают 2-битные и 1.58-битные модели. В этой статье мы поговорим о математике квантования и о том, почему экстремальное сжатие весов перестало быть оптимизацией и превратилось в фанатизм. Почему огромная 70B модель, урезанная до 3 бит, математически глупее, чем 32B модель в 8 битах, и как мы обманываем сами себя, глядя на метрики perplexity.

Читать далее

Лунный масс-драйвер: что строить, если Starship закрыл Землю

вт, 05/19/2026 - 16:13

Если Starship уронит цену вывода на низкую околоземную орбиту до $100–150 за килограмм к 2030 году, наземный электромагнитный масс-драйвер теряет экономический смысл. Но Опция B — лунный масс-драйвер — этим выигрывает. $28 млрд капекса, 8-километровый ствол в лавовой трубке кратера Шеклтон, 2,4 км/с скорости капсулы на выходе. С Луны кислород и Гелий-3 в точки Лагранжа за $50–80 за килограмм без единого ракетного двигателя. Опционный анализ 2×4: лунная катапульта даёт выигрыш в 3 из 4 сценариев Starship. Глубокий разбор инженерии ствола, реактора, орбитального ловителя и геополитики ILRS. Продолжение Урал-Драйвера.

Читать про лунный масс-драйвер

Рациональность как недооценённая компетенция: как управлять нагрузкой вместо вечного аврала

вт, 05/19/2026 - 16:02

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

Читать далее

Шесть интересных логических задач

вт, 05/19/2026 - 15:58

Продолжаю публикацию интересных математических задач.

5 рациональных пиратов (А, Б, В, Г и Д) должны разделить 100 золотых монет. Иерархия: А — самый старший, Д — самый младший. Старший предлагает план дележа. Если за него проголосует хотя бы половина пиратов (включая его самого), план принимается. Если нет — старшего выбрасывают за борт, и право предложить план переходит к следующему. Как пират А должен разделить золото, чтобы остаться в живых и получить максимум?

Решение: Нужно рассуждать с конца. Если останутся только Г и Д, Г заберет всё (его голоса хватит для 50%). Чтобы этого не допустить, В должен предложить Д хотя бы 1 монету, чтобы тот поддержал его. Пират А знает это и предлагает: 98 — себе, 0 — Б, 1 — В, 0 — Г, 1 — Д. В и Д согласятся, так как при отказе и переходе хода к Б они могут не получить ничего или меньше.

Читать далее

Я дал LLM писать unsafe Rust полгода. Miri плакал

вт, 05/19/2026 - 15:57

Полгода я давал LLM писать unsafe Rust в боевых проектах и разбирал каждый блок под miri и санитайзерами. Категории ошибок, которые модели делают стабильно: aliasing, провенанс, layout в alloc/dealloc, забытый ManuallyDrop, гонки в FFI-колбэках, ручные Send/Sync, uninit-память, Pin. Каждая категория идёт с минимальным примером и фиксом.

Читать далее

Связь между ростом бизнеса и информационными технологиями

вт, 05/19/2026 - 15:52

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

Глубинная связь

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

Два примера планирования

1 - Новый контракт

Рассмотрим пример неэффективного согласования контракта с новым клиентом. Менеджер начинает оформлять заявку, но не знает код подразделения. Ищет. Потом выясняется, что у юриста нет свободного времени до конца недели. Затем финдиректор запрашивает дополнительную выписку. Каждый шаг — это бесконечное ожидание, поиск информации и стресс от давления сверху из-за вышедших сроков. Это цепочка действий, где сбор информации и работа идут вперемешку. Чтобы обслужить чуть больше клиентов приходится нанимать дополнительных менеджеров и юристов. Высокий рост затрат как на новых сотрудников, так и урегулирование конфликтов между ними. Маржа тает.

от плохого:

Читать далее

О чём говорили на ICLR 2026? Репортаж AIRI о поездке на конференцию в Рио

вт, 05/19/2026 - 15:42

Конференции в науке об ИИ очень любят и ждут. Подача работы на какое‑либо мероприятие из верхушки рейтинга CORE обычно престижнее, чем подача её же в журнал первого квартиля. В «большую тройку» главных конференций года принято включать NeurIPS, ICML и ICLR. Последняя обычно проходит раньше двух других — в этом году она прошла в конце апреля в Рио‑де‑Жанейро.

Мы посетили ICLR 2026 вместе с коллегами из AIRI и рассказываем, чем запомнилась нашим исследователям эта командировка.

Читать далее

[Перевод] YellowKey: zero-day эксплойт полностью обходит стандартную защиту BitLocker в Windows 11

вт, 05/19/2026 - 15:36

Тридцать секунд, USB-флешка и зажатая клавиша Ctrl — этого достаточно, чтобы превратить «надёжно зашифрованный» корпоративный ноутбук в открытую книгу. Никакого подбора паролей, никаких хитрых атак на TPM — просто папка с подозрительным именем и среда восстановления Windows, любезно открывающая командную строку с полным доступом к диску.

Читать далее

Сейчас на сайте

Сейчас на сайте 0 пользователей и 7 гостей.