Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 16 min 54 sec ago

Законный вход в Telegram через РФ сервисы на примере проекта: «Моя АнтиСоцсеть»

Wed, 08/19/2026 - 16:27

Готовое решение в статье — как реализовать вход в Telegram через РФ сервисы: VK ID, Яндекс ID и MAX.

Мы оставили Telegram как удобную точку входа и канал доставки, а идентификацию вынесли в отдельные ID-сервисы. Идея простая: разделить «кто пользователь» (identity) и «куда ему слать уведомления» (channel identity). Пользователь авторизуется через VK ID, Яндекс ID или MAX, а telegram_id позже привязывается к его аккаунту исключительно для отправки ленты — не для входа.

Читать далее

River OSS и Kafka: почему transactional outbox не гарантирует порядок событий агрегата

Wed, 08/19/2026 - 16:26

Меня зовут Василий Миловидов, я системный архитектор в крупной компании. Мы строим обмен между сервисами на событиях: сервис меняет агрегат в PostgreSQL, в той же транзакции кладёт задачу в outbox на River, воркер публикует событие в Kafka с ключом aggregate_id.

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

Статья написана для моей команды, чтобы у всех была одна картина проблемы и один язык для её обсуждения. Если она пригодится кому‑то ещё, тем лучше. Отдельно я старался, чтобы текст был понятен человеку, который только начинает работать с распределёнными системами: каждый механизм я объясняю с точки зрения того, что он делает и от чего защищает.

Всё, что касается поведения River, Kafka и PostgreSQL, проверено по документации, ссылки собраны в конце. Там, где утверждение является моим выводом, а не документированным поведением, я это отмечаю отдельно.

Читать далее

Теория миграции ИТ‑систем. Чем отличаются подходы вендоров и как с этим дела в разных странах

Wed, 08/19/2026 - 16:22

Привет, Хабр! В целом, про миграцию и импортозамещение высказался уже практически каждый утюг нашей необъятной родины. Почему мы вообще снова хотим подсветить эту тему? Потому что прошло уже достаточно времени, чтобы осознать: миграция — это не просто оперативное решение проблемы, а новый подход к созданию и поддержанию ИТ-инфраструктуры. Мы в компании работаем в такой парадигме довольно давно, начали задолго до 2022 и роста популярности подобных решений, так что успели накопить достаточно опыта.

Статья носит обзщепознавательный характер и будет полезна тем, кому в целом интересны механизмы миграции ИТ-систем — и их ключевые отличия у разных вендоров в разных странах. В следующих статьях цикла мы разберем типы миграции, их алгоритмы и посмотрим на результаты тестирования, чтобы оценить их работу в реальных условиях. А пока…

Читать далее

Гайд по играм на ретро: опыт продакт-менеджера

Wed, 08/19/2026 - 16:20

Меня зовут Роман, я работаю продактом в Альфа-Банке. В первые дни работы ко мне перешла команда разработки, которая сформировалась буквально за 2 месяца до меня. Прошлый продакт работал на 3 команды, времени на всех не хватало, поэтому команда встретила меня холодно. Как я это понял? По ретро — несмотря на то, что мы не закрывали планируемые задачи на спринт, у всех «все было хорошо» и «обсуждать нечего», а ребята больше работали как одиночки, чем как команда. 

Это было что-то новое для меня, так как на прошлом месте работы команда разработки работала вместе не один год и решала многие проблемы самостоятельно. А для продакта, который взаимодействует с командой разработки кучу своего времени, а также отвечает за сроки релизов, чрезвычайно важно выстроить хорошие отношения и атмосферу доверия внутри команды. 

Я начал искать как можно быстрее сплотить команду и в какой-то момент осознал, что могу скучные и вымученные ретро добавить эмоций. И решил попробовать. 

Читать далее

ZBFun: архитектура для ZigBee без обязательного облака на Python

Wed, 08/19/2026 - 16:17

Меня зовут ZolAnd, я - независимый инженер-разработчик embedded-систем в основном для дома и сельской усадьбы. В какой-то момент мне захотелось собрать под одной крышей разношёрстный парк ZigBee-устройств от разных производителей, работать с ним локально, без обязательной привязки к облаку, и при этом иметь возможность не только интегрировать чужие устройства, но и проектировать свои. Так появился проект ZBFun. Эта статья — про то, с какими вызовами я столкнулся, какие решения уже существуют и почему они мне не подошли, и про архитектуру, к которой я в итоге пришёл.

С чего всё началось

Задача звучала просто: хочу python-библиотеку для ZigBee на ESP32-C6. Готовой не нашлось — есть отличный esp-zigbee-lib от Espressif на C, но ничего сопоставимого на Python или MicroPython для этой платформы не было. Значит, писать самому. И тут выяснилась вторая, более фундаментальная проблема. Чтобы написать библиотеку, нужно понимать, что такое ZigBee Cluster Library (ZCL) — стандарт, который описывает, из чего вообще состоит ZigBee-устройство: кластеры, атрибуты, команды, типы данных, зависимости между ними. Официальный документ Alliance — 1213 страниц PDF, написанный для инженеров, имплементирующих стек с нуля, без какой-либо машиночитаемой версии. Ни JSON, ни XML — только текст, рассчитанный на то, что человек прочитает и перепечатает нужное руками. Дальше — хуже. Когда я стал сверять этот текст с реальными SDK и реальными устройствами, обнаружились расхождения. Причём не косметические, а такие, из-за которых устройство просто не будет работать правильно.

Читать далее

От одного npm‑пакета к кластеру Contagious Interview: практическое расследование supply chain‑кампании

Wed, 08/19/2026 - 16:15

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

На этот раз первым сигналом стал мой собственный supply chain‑мониторинг. Он сообщил о новом npm‑пакете plugin-react-vite. На первый взгляд это выглядело как очередной тайпсквоттинг - ничего особенно необычного.

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

В результате расследование ушло далеко за пределы одного package.json: от подозрительной зависимости я пришел к второму этапу размером около 30 тысяч строк, а затем - к нескольким месяцам активности, связанным пакетам, нескольким npm‑аккаунтам и уже известному кластеру.

Именно этот путь я и хочу разобрать.

Погрузиться в расследование

[Перевод] Qwen3.8-27B: лучший локальный LLM, который вы, вероятно, не сможете запустить

Wed, 08/19/2026 - 16:01

В этом месяце Alibaba выпустила две модели, и та, о которой все писали, оказалась не той, что мы ждали. Qwen3.8-Max — это API с 2,4 триллионами параметров, и пару недель назад я с большим энтузиазмом написал о ней обзор. Но релиз, которого я действительно ждал, вышел 14 августа: Qwen3.8-27B, Apache 2.0, веса на Hugging Face, модель достаточно компактна, чтобы работать на ноутбуке.

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

Что представляет собой Qwen3.8-27B на самом деле

27,78 миллиарда параметров, плотная модель, включающая в себя визуальный энкодер, о котором никто не объявлял заранее. Принимает на вход текст, изображения и видео. Собственный контекст — 262 144 токена, с помощью YaRN можно увеличить его примерно до миллиона, если запускать модель на сервере.

Архитектура — это по-настоящему интересная часть, и это не обычный трансформер. На протяжении 64 слоёв Qwen чередует 48 слоёв Gated DeltaNet (линейное внимание) с 16 полными слоями Gated Attention в соотношении 3:1. Только эти 16 слоёв с полным вниманием имеют KV-кэш. Таким образом, на каждый токен приходится около 64 КБ, что составляет примерно четверть от объёма памяти, необходимого для обычной 64-слойной модели с плотным кодированием.

Если вы запомните только одно число из этого поста, пусть это будет именно оно. Всё, что касается того, поместится ли эта модель на вашем компьютере, зависит от объёма KV-кэша.

Читать далее

Canva Code 2.0 доступна всем: можно ли собрать сайт для бизнеса

Wed, 08/19/2026 - 16:00

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

15 июля Canva выпустила Code 2.0. Анонс успел отлежаться, первые восторги немного выветрились, а независимые авторы добрались до кнопок, которые обычно остаются за краем презентации.

Главное новшество звучит скромнее привычного обещания собрать сайт одной фразой. Получившийся проект теперь можно редактировать как обычный дизайн Canva: менять текст, цвета, изображения, обсуждать правки с командой и публиковать всё из одного окна. Ещё сервис принимает готовый HTML и превращает его в редактируемый макет.

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

Читать далее

Психанул: как я за полтора месяца сделал формат конфигов и парсеры для семи языков

Wed, 08/19/2026 - 15:56

Cлучилось то, что я обычно советую не делать: я не выбрал из существующих 14 форматов, а сделал 15-й.

Читать далее

От struct к компиляции под схему: ускоряем RowBinary-декодер на Python

Wed, 08/19/2026 - 15:44

Я автор aiochlite — асинхронного клиента ClickHouse на aiohttp. Раньше мой декодер RowBinary читал каждое числовое поле отдельно. Если брать 200 тысяч строк с десятью числовыми колонками, получалось два миллиона таких чтений, хотя все данные уже были в памяти.

Сначала я думал использовать Cython, C или Rust. Но потом решил попробовать оптимизировать сам процесс: объединить соседние поля с фиксированной длиной в один struct, а полностью фиксированные строки разбирать с помощью Struct.iter_unpack. На числовых данных это ускорило работу примерно в 8.3 раза.

Со смешанной схемой данных получилось интереснее: простая склейка почти не помогла. Главной проблемой осталась проверка типов внутри основного цикла. В итоге я начал генерировать и компилировать Python-функцию под конкретную схему ответа — это дало ускорение еще примерно в 1.7 раза.

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

Читать далее

Как я искала неизвестно что, но нашла основной принцип для современной базы знаний (в моём представлении)

Wed, 08/19/2026 - 15:42

ДИСКЛЕЙМЕР: У меня нет готового лайфхака. Я тащу эту структуру из собственной головы прямо сейчас, в режиме реального времени. Эта статья про одни из граблей, которые я смогла по-своему задетектить. О том, как я искала ответ, или, точнее, вопрос. Я восстанавливаю последовательность своих мыслей из логов двухмесячной давности, показываю, как разрозненное раздражение собиралось вокруг одной оси. Если Вам близко такое размышление – буду рада Вашим мыслям по прочтению

Читать далее

Как я улучшил векторный поиск в YDB

Wed, 08/19/2026 - 15:42

В распределённой СУБД YDB (читается вай‑ди‑би) векторный поиск по kmeans‑tree индексу раскрывался оптимизатором в цепочку из нескольких стадий StreamLookup. Это работало, но порождало большие планы запросов и существенно затрудняло оптимизации самого поиска. Я заменил эту цепочку одним специализированным read‑актором TKqpVectorSearchActor, который берёт всю логику обхода индекса под свой контроль, а не размазывает её по независимым стадиям.

Читать далее

Криптомайнер на Gitea: 70% нагрузки CPU, RCE в self-hosted Gitea вместо GitLab и как я закрыл уязвимость

Wed, 08/19/2026 - 15:39

Всё началось с обычного письма от хостинга: VPS слишком долго держит CPU выше 70%. Я открыл Gitea посмотреть, что происходит, а там уже был чужой репозиторий.

По логам восстановил атаку почти по секундам: регистрация, repository, diffpatch, Git hook, RCE. От первого запроса до proof прошло около 11 секунд.

А дальше обнаружился loader крипто-майнера. Покажу, как это произошло и что пришлось переделать на сервере.

Читать разбор

Все станут архитекторами? Как AI схлопывает привычные IT-профессии

Wed, 08/19/2026 - 15:34

Дискуссия о том, заменит ли искусственный интеллект программистов, получает всё новые поводы для обсуждения. Так, в мае 2026 года компания Anthropic сообщила, что уже более 80% кода, вливаемого в её кодовую базу, написано Claude.

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

Однако современные исследования показывают другую картину. Классический цикл разработки ПО (SDLC) никуда не исчезнет, но кардинально изменится распределение работы: всё больше задач внутри каждого этапа будут брать на себя AI-агенты.

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

Читать далее

NN vs фракталы: может ли нейросеть выучить красивые математические функции?

Wed, 08/19/2026 - 15:32

В процессе прохождения курса от MIT про нейросети наткнулась на интересную тему, представленную одним из лекторов. Он задался вопросом: «А может ли нейросеть выучить функцию Вейерштрасса (непрерывная функция на вещественной прямой, не имеющая производной ни в одной точке)?». Я решила проверить это на практике. Мною было принято решение не останавливаться на фракталах, а поискать другие функции, обладающие интересными для математика свойствами: лестница Кантора, функция Римана (Томаэ) и др. В данной статье представлена только функция Вейерштрасса.

Читать далее

Как защитить права на программное обеспечение: пошаговый гайд для правообладателя

Wed, 08/19/2026 - 15:32

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

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

Читать далее

Покрути это колесо

Wed, 08/19/2026 - 15:30

Точкой старта работы над проектом можно считать день, когда Дедушка Мороз положил мне под ёлку набор “Робот-автомобиль для Raspberry Pi 4B” от Keyestudio.

Читать далее

Открыт предзаказ на второе издание «Грокаем алгоритмы искусственного интеллекта»

Wed, 08/19/2026 - 15:24

Привет, Хаброжители! На протяжении всей своей истории человечество неустанно искало способы решать задачи, прикладывая как можно меньше усилий. Люди всегда стремились создавать инструменты и автоматизировать повторяющиеся действия, чтобы выживать и экономить силы. Здесь некоторые могут поспорить, заявив, что человек умен, ищет возможности совершенствования, умеет творчески решать задачи и создавать произведения искусства в области литературы, музыки и т.п. Но второе обновленное издание «Грокаем алгоритмы искусственного интеллекта» не ставит целью обсуждение философской сути бытия. Оно дает обзор методов искусственного интеллекта, которые можно применять для решения прикладных задач.

Читать далее

От Excel до Python: автоматизация SEO крупного e‑commerce

Wed, 08/19/2026 - 15:10

Всем привет! Меня зовут Алексей Малафеев, я Senior SEO‑специалист, ex‑Детский мир. Также работал в качестве лида в компании KazanExpress (нынешний Магнит Маркет).

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

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

Что делать, чтобы не работать руками

Чем платить за OpenAI, Claude, Gemini, Cursor и Midjourney из России в 2026 году

Wed, 08/19/2026 - 15:05

Команда разработчиков обычно подписана сразу на несколько таких сервисов: ChatGPT, Claude, Gemini, Cursor, Midjourney. У каждого своя подписка, свой биллинг, и в итоге расходы размазываются по личным картам сотрудников, а бухгалтерия потом не может свести отчетность.

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

Читать далее

Who's online

There are currently 0 users and 6 guests online.