Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 1 hour 52 min ago

CI — это не Jenkins. Зачем, как, чем — и цена отказа

Mon, 08/17/2026 - 12:27

Пайплайн у вас есть. Он есть у всех: CI перестал быть предметом споров примерно тогда же, когда Docker перестал быть новостью. Именно поэтому разговор пора вести другой - не “зачем вам CI”, а можно ли верить вашему зелёному пайплайну, сколько он стоит и кто им владеет. Разбор в формате “зачем - как - чем - цена отказа” - пилот рубрики: дальше в ней будут другие практики, формат останется.

Читать далее

Как перестать имитировать Agile и начать получать результат

Mon, 08/17/2026 - 12:15

На Хабре немало статей о том, почему Agile не работает. И в большинстве из них авторы справедливо отмечают, что ритуалы превратились в формальности, Scrum выродился в бюрократию, команды имитируют активность. Всё так.

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

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

Эта статья — не про то, что Agile плох. Она про то, как сделать его работающим.

Читать далее

Vec и Vec — это две разные функции. И линкер это не чинит

Mon, 08/17/2026 - 12:05

Привет, Хабр!

У меня есть для вас очень простой способ испортить себе вечер. Поставьте cargo-llvm-lines, запустите на своём проекте и посмотрите не на первую колонку, а на вторую, которая называется Copies. Сверху почти наверняка будет core::ptr::drop_in_place, дальше что-нибудь из Vec, потом хвост от serde. И напротив каждой строчки будет стоять не единица.

Обычная реакция в этот момент: ну да, дженерики, зато быстро, а одинаковые копии потом схлопнет LLVM. Часть действительно схлопнет. Только не тем механизмом, о котором вы подумали, и точно не тем, который вы включили в Cargo.toml.

В статье узнаем откуда берутся копии, почему Vec<u32> и Vec<i32> в бинарнике сливаются в одну функцию, а Vec<u32> и Vec<u64> не сольются ни при каких настройках, что от этого видно в именах символов, как с той же проблемой воюет сам std и куда делась полиморфизация, которую пять лет ждали как лекарство.

Читать далее

Как я ускорил TypeScript-типы в 15.7 раза

Mon, 08/17/2026 - 12:03

Иногда TypeScript думает мучительно долго. У меня это вылезло не самым приятным способом: @_chenglou — он работал над React, ReasonML и ReScript, а сейчас над Midjourney — завёл в моей библиотеке схем issue «Large TS types cause type inference slowdown».

Ну… неприятно. Но я знал, что в системе типов TS люди собирали и не такое, вплоть до Doom, — значит, тормоза лечатся, а не заложены в фундамент.

Дальше всё оказалось довольно механически. Сначала тесты на типы, чтобы ничего не сломать молча: оптимизация типов легко превращает { a: string } в { a?: string }, и никто вам об этом не сообщит. Потом замеры через @ark/attest от создателей ArkType — он считает, во сколько инстанцирований типов обходится выражение, и фиксирует это как бейзлайн, который дальше можно занести в CI. И только после этого — сама оптимизация.

Фикс в итоге оказался на одну строчку. S.Output матчился по всему типу Schema<…> — большому объекту с перегрузками, пересечённому с юнионом всех вариантов схемы, — хотя готовый тип всё это время лежал в соседнем поле ~standard. Достаточно было заглянуть сразу туда.

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

Читать далее

Римская империя: дороги и дома

Mon, 08/17/2026 - 12:01

Если верить мемам, многие мужчины удивительно часто думают о Римской империи. Этот факт удивляет женщин, но на самом деле его легко объяснить. Вся западная цивилизация формировалась под влиянием Рима. Архитектура, политика, экономика, города, образ жизни. Расширение Рима сформировало Европу, а Европа сформировала мир.

Следы Рима сохранились и в языке. Тысячи слов латинского происхождения вошли в европейские языки — непосредственно из латыни или через другие языки. Например, в русском это «текст», «армия», «университет», «документ», Роман — и тысячи других слов.

Читать далее

C++29 — начало. Встреча ISO C++ в Брно

Mon, 08/17/2026 - 12:01

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. Недавно в Брно состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз началась работа над C++29 и как раз о новинках и хочется рассказать.

Читать далее

Loop Engineering: почему цикл легко собрать и трудно остановить

Mon, 08/17/2026 - 12:00

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

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

Слоган "хватит промптить кодинг-агентов, проектируйте циклы" собрал миллионы просмотров и оброс гайдами "как печатать альфу 24/7". Я полез смотреть, что там под мемом, и за пару месяцев собрал поверх своей обвязки собственный цикл. Переписывал столько раз, что перестал считать.

Читать далее

Еще три интересные логические задачи

Mon, 08/17/2026 - 11:56

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

Формулировка:

3 честных рациональных инопланетянина (А, Б, В) стоят в колонне. В видит А и Б; Б видит только А; А не видит никого. На каждого надет колпак либо синего, либо зеленого, либо красного цвета, количество колпаков того или иного цвета не ограничено. Договорившись об общей стратегии, они по очереди (начиная с В) называют возможный цвет своего колпака. Цель - гарантировать, чтобы минимум двое ответили верно.

Решение:

Воспользуемся арифметикой по модулю 3 (будем считать остатки от деления на 3, соответствующего количеству цветов). Участники заранее присваивают каждому цвету число - красный = 0, синий = 1, зеленый = 2. Инопланетянин В видит двоих перед собой (Б и А). Он складывает их числа и называет цвет, который соответствует остатку от деления суммы на 3. Например, В видит у Б - синий (1), у А — зеленый (2). 1 + 2 = 3. Остаток от деления 3 на 3 равен 0. В говорит: «Красный» (код числа 0). Б слышит «Красный» (0) и понимает: «Мой цвет + цвет А делится на 3 без остатка». Затем он смотрит на А. Допустим, Б видит, что на А — зеленый колпак (2). Единственное число, которое при сложении с 2 дает число, делящееся на 3 — это 1. Б понимает, что он — Синий (1), и уверенно это произносит. А слышал код от В (0) и ответ от Б (1) и понимает, что на нем колпак зеленого цвета (2).

Данный метод работает для любого количества цветов и любого количества инопланетян.

Читать далее

AI/ML в действии: как сервис Sofros AI/ML помогает компаниям из разных отраслей повышать качество НСИ

Mon, 08/17/2026 - 11:00

Введение

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

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

В этой статье мы разберем, какие задачи решают современные AI/ML-инструменты, почему они эффективнее традиционных методов и как их внедрение трансформирует управление данными в организации.

Читать далее

Вики из 48 часов видео: конвейер, который не даёт LLM выдумывать

Mon, 08/17/2026 - 11:00

У меня было 48 часов видеозаписей учебного курса и простая мысль: пересматривать это я не буду никогда. Сырой транскрипт немногим лучше — болото на сотни страниц. Я собрал конвейер, который превратил записи в Obsidian-вики: 47 связанных статей, и каждое утверждение в любой из них — в двух кликах от места в записи, где это было сказано.

Читать далее

RAG без магии: что действительно влияет на качество системы

Mon, 08/17/2026 - 11:00

У большинства разработчиков, не работающих с ИИ, ментальная модель RAG либо ошибочна, либо опасно неполна. И дело не в том, что они плохие инженеры, — просто почти всё, что написано про RAG, это либо десятиминутный туториал по фреймворку, за которым не видно ни одного реального решения, либо научная статья для тех, кто и так занимается этим профессионально. Между этими крайностями почти ничего нет.

Эта статья — как раз то, что между ними. Недавно я собрал продакшн-систему RAG поверх 62 книг по античной истории (~46 000 чанков) и проверил каждое проектное решение на фиксированном тестовом наборе — включая те решения, которые не сработали. Я пропущу маркетинг фреймворков и расскажу о тех немногих вещах, которые действительно определяют, можно ли доверять вашей RAG-системе, — и подкреплю всё цифрами.

Всем привет, меня зовут Лев Рябов, я фронтенд-разработчик в М2 Tech. После прочтения этой статьи вы поймете, что чтобы во всём разобраться, знания ML не нужны. Если вы умеете писать REST API и делать запросы к PostgreSQL, вы сможете построить всё, что здесь описано.

Читать далее

Написание ядра ОС с нуля. Ч2 — Анатомия памяти

Mon, 08/17/2026 - 10:49

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

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

Читать далее

Цифровая медицина: разбор UX-барьеров и точки роста

Mon, 08/17/2026 - 10:37

Сегодня разберу ЕМИАС - приложение для пациентов гос.поликлиник. Работает пока только в Москве. Но в целом идеи применимы ко всем приложениям подобного рода. До этого пользовалась SmartMed и СОГАЗ по ДМС.

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

Привет! Меня зовут Маша, я Senior Product Manager и разбираю только те продукты, над которыми сама хотела бы поработать, так как ими пользуюсь, люблю и вижу, где есть потенциал роста. Мне драйвово искать для них решения, которые выводят продукт на новый уровень не только по деньгам, но и по UX и любви пользователей. Мои другие разборы: Яндекс.Музыка: как нарисовать красивые метрики, испортив продукт и ВкусВилл: UX, который покоряет, и ложка дёгтя в офлайне. В этой статье поделюсь какие UX-барьеры есть сейчас в приложении госполиклиник и как их можно было бы улучшить.

Перейти к разбору

Особенности патентования полезных моделей за рубежом: Япония, Китай, ФРГ, Франция и Италия

Mon, 08/17/2026 - 10:27

Понятие «полезная модель» подразумевает, как правило, более простой и дешевый, по сравнению с изобретением, способ защиты технических решений, которые по каким-либо причинам не могут получить защиту в качестве последнего. Режим охраны в качестве полезной модели часто выручает заявителей в тех случаях, когда разработка «не дотягивает» до уровня изобретения или когда заявитель выпускает на рынок устройство, жизненный цикл которого довольно короток, и важно получить на него охранный документ как можно быстрее, не растягивая экспертизу на годы. Подобный режим охраны признают не все страны — например, получить патент на полезную модель в США, Великобритании или Канаде невозможно —  однако те из них, где полезные модели существуют как категория (а таких на сегодняшнее время насчитывается более 70), хотя и представляются более привлекательными для малого и среднего бизнеса, но уже который год (за исключением Китая) переживают спад изобретательской активности в данном сегменте и нуждаются в модернизации соответствующей части законодательства. Сегодня на примере отдельных стран вместе с патентным поверенным Анной Чернецовой постараемся разобраться, с чем это связано.

Читать далее

Более 100 000 вакансий: полная анализ IT-рынка России в 2026 году. И почему hh.ru нас обманывает?

Mon, 08/17/2026 - 10:17

Привет, Хабр! (И тебе, IT-шник, который хочет разобраться, что в 2026 вообще здесь происходит? Сейчас разберёмся, но легче тебе от этого не станет).

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

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

Читать далее

Паничный PIN, который отдавал ключ от всего: разбор ошибок

Mon, 08/17/2026 - 08:55

Мы делаем мессенджер RCQ (rcq.app, исходники клиентов на github.com/rcq-messenger). В нём есть штука, которую в разных приложениях называют по-разному: паничный PIN, duress PIN, подставной код. Смысл один. У вас просят разблокировать телефон, вы вводите второй PIN, и человек напротив видит приложение, в котором ничего интересного нет.

В августе мы сели проверять какие у нас остались проблемы с этой фичей. Проверка началась как формальность перед внешним аудитом: пройти по коду, сверить с тем, что написано в модели угроз, поправить формулировки. Закончилась она тем, что на Android подставной PIN оказался не границей, а ключом от всей переписки.

Читать далее

Можно, но зачем: 7 фигур и 19 положений того самого Тетриса

Mon, 08/17/2026 - 06:26

Есть старый мем: а что, если сделать троллейбус из буханки хлеба? Можно, но зачем. В исходнике того самого Тетриса, который Алексей Пажитнов написал для Электроники-60 в ВЦ Академии наук, есть процедура ровно такого устройства. Игра тратит 958 байт кода на то, чтобы при каждом запуске заново вычислить 342 байта данных: семь фигур, их девятнадцать положений и правила поворота. Готовую таблицу можно было положить в программу и не вычислять ничего.

Код игры восстановлен: он компилируется байт в байт в тот же файл, что снят с ленты. Все 590 строк можно открыть и читать.

Фигура в Тетрисе это тетромино: четыре клетки, склеенные сторонами. Разных тетромино семь, и называть их принято латинскими буквами, похожими по очертанию: I, O, T, S, Z, J, L. Давайте посмотрим, как игра строит эти семь фигур и их производные положения. Под катом шесть коротких анимаций и немного старого Паскаля

Читать далее

WireGuard не хранит AllowedIPs у пира

Mon, 08/17/2026 - 06:08

Добавляете нового пира на сервер WireGuard — и у соседнего в wg show вместо префикса появляется allowed ips: (none). Команда отработала успешно, dmesg пуст, wg-quick промолчал, туннель up, handshake свежий. А если бы у нового пира маска была /32 вместо /24, ничего бы не произошло.

Это ловят снова и снова: в трекере VyOS с 2020-го (закрыто как Invalid — «так делает ядро»), в OPNsense в 2025-м, на форуме OpenWrt каждый раз, когда к серверу добавляют второй телефон.

Разбор по drivers/net/wireguard/ мейнлайна, тег v6.12: почему AllowedIPs вообще не хранится у пира, что делает list_move_tail в allowedips.c:201, почему симптом «пропало у одних пиров, но не у всех» объясняется одной строкой parent->cidr == cidr, и откуда берётся ping: sendmsg: Required key not available, если вы его когда-нибудь видели и решили, что это про ключи шифрования.

И заодно: то же самое лежит в FreeBSD, OpenBSD, BoringTun, wireguard-go и в драйвере под Windows — шесть кодовых баз, пять разных структур данных, один и тот же молчаливый контракт. А MikroTik, который запрет прямо задокументировал, сам его не проверяет: на CHR оба пира показывают префикс, трафик идёт одному, и вернуть его второму можно только записью того же самого значения обратно.

Плюс способ проверить самому: настоящий allowedips.c из ядра, собранный в userspace одним gcc. Без модуля и без root.

Читать далее

С нуля до Junior DevOps в 2026 году. Часть 7.2. Ansible в DevOps: Docker, Kubernetes, CI/CD и Terraform

Mon, 08/17/2026 - 02:58

Как Ansible вписывается в современную DevOps-инфраструктуру? В этой статье разберём связку Terraform → Ansible → Docker → Kubernetes → CI/CD и на практике создадим воспроизводимый проект. Статья ориентирована на тех, кто уже знаком с базовыми возможностями Ansible.

Читать далее

[Перевод] Язык Java быстрый, а ваш код — не факт

Mon, 08/17/2026 - 01:52

Однажды мне довелось выступать на конференции DevNexus, и в качестве примера я написал на Java приложение для обработки заказов. Приложение было исправным. Тесты проходили. Я прогнал нагрузочный тест, и на его основе собрал файл Java Flight Recording (JFR).

До того, как я внёс какие‑либо изменения: истекло 1 198 мс, обрабатывалось 85 000 заказов в секунду, пиковый размер кучи — немного более 1 ГБ, 19 остановок на сборку мусора.

После изменений: 239 мс, 419 000 заказов в секунду, куча 139 МБ, 4 остановки на сборку мусора.

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

Читать далее

Who's online

There are currently 0 users and 1 guest online.