Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Manticore Search 27.1.5: аутентификация, шардированные таблицы, диалоговый поиск и более быстрый векторный поиск

Время на прочтение5 мин
Охват и читатели2.3K

Manticore Search 27.1.5 выпущен. Этот релиз приносит встроенные аутентификацию и авторизацию, шардированные таблицы, conversational search, более быструю сборку HNSW, улучшенные фасетирование и агрегации, а также длинный список исправлений в KNN, репликации, совместимости протоколов и других областях.

Этот пост - сводка всего, что вышло с 25.0.1 по 27.1.5.

Читать далее

Новости

Headless CMS, или движки без руководящего компонента

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели2.8K

В 1865 году британский журналист Томас Майн Рид написал роман "Всадник без головы", который послужит нам отправной точкой в вопросе о том, что же такое "безголовая" CMS и какие из них представлены сейчас на рынке веб-разработки.

Давайте разбираться

Skill of the Week: Spring Data JDBC — качество Opus на модели за копейки

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели2.7K

Ранее в рубрике Skill of the Week мы уже разбирали Skill для Spring Data JPA. И, что предсказуемо, в комментариях нашлись те, кто увидел в нём лишнее доказательство простого тезиса: «вот видите, JPA не нужна, она слишком сложная». Аргумент понятный — у AI Agent-а с JPA действительно регулярно случаются «пожары»: ошибки в настройке связей между сущностями, странности с конфигурацией базовых типов, путаница с контекстом персистентности и разными состояниями сущности. Что характерно, ровно на этих же местах спотыкаются и живые разработчики — так что претензия скорее к технологии, чем к модели.

Раз JPA такая сложная — почему бы не взять что-нибудь попроще? Чистый JDBC многим кажется слишком низкоуровневым, и взгляд естественным образом падает на Spring Data JDBC: те же репозитории и сущности, но без прокси, lazy loading и кэша первого уровня. Технология проще — значит, и никакой Skill тут не нужен, верно?

А вот и нет. Умение AI «пользоваться» той или иной технологией зависит не столько от её когнитивной сложности, сколько от того, сколько кода с её использованием модель видела на этапе обучения. Spring Data JDBC объективно проще JPA, но кода с ней в открытом доступе на порядки меньше. Парадокс, но именно для технологий «с малым количеством кода» Skill даёт наибольший эффект: он закрывает ровно тот пробел, который модели нечем заполнить самостоятельно.

В сегодняшнем эпизоде еженедельной рубрики Skill of the Week разберёмся, как, используя Spring Data JDBC Skill, научить своего агента важным навыкам при работе со Spring Data JDBC.

Читать далее

Что происходит с SDLC в эпоху AI-агентов

Время на прочтение11 мин
Охват и читатели2.8K

Несколько месяцев назад в публичном пространстве появилась история, которую в engineering-сообществе стали называть поучительной. Команда AWS использовала внутренний AI-инструмент Kira для ускорения работы. Kira предложила джуниорам сценарий: переразверни продакшн-слой. Инженеры согласились. Следующие шесть часов весь AWS не работал. После разбора полётов компания объявила новое правило: финальный апрув на изменения, предложенные агентом, должен давать сениор-инженер.

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

История AWS точно формулирует главный вызов 2025-2026 годов: AI научился быстро писать код, но индустрия пока не научилась с такой же скоростью его доставлять, проверять и принимать решения о нём. Данные, собранные в рамках масштабного исследования State of AI4SDLC, это подтверждают.

Читать далее

Внутри метастора S3 в One-Cloud

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели3K

Как мы пришли к локальному скану, фильтру Блума и переезду очереди на Kafka — и почему это всё случилось 

Привет, Хабр. Я Данил Кислов, разработчик команды хранилищ. У нас в One-cloud (внутренняя корпоративная облачная платформа) лежит собственная S3-совместимая реализация — one-object-storage. Хочу рассказать, как эволюционировал метастор S3— та часть, что отвечает за метаданные объектов: списки версий, индексы, настройки бакетов и прочую служебную мелочь.

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

Разбираем эволюцию метастора

Deckhouse Prom++: как мы сжали разметку метрик Prometheus и снизили расход памяти в 2,5 раза с помощью статистики данных

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели3K

Хотели избежать копирования данных, придумали свою служебную разметку, а потом обнаружили: она занимает почти столько же места, сколько сам исходный текст. Мы перестали гадать, посмотрели на реальные данные и применили простые, но эффективные подходы: числа переменной длины, отказ от double в пользу целых типов и умные if-else вместо switch

Итог: мы сжали разметку в 2,5 раза и при этом даже немного выиграли в скорости. Рассказываем, как знание предметной области помогло нам не усложнять код, а сделать его быстрее и легче.

Читать далее

Source generators в.NET: как они вытеснили рефлексию из стандартной библиотеки

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

Ещё несколько лет назад рефлексия считалась нормой для.NET‑приложений. Сегодня Microsoft последовательно выносит всё больше работы из runtime в этап компиляции: JSON‑сериализация, логирование, регулярные выражения, конфигурация и даже тестовые фреймворки всё чаще опираются на source generators.

Разбираемся, почему рефлексия начала сдавать позиции, где кодогенерация уже стала стандартом и что это меняет для разработчиков.NET.

Читать далее

Изометрия в 1С: склад стал интереснее, чем ваш сериал

Время на прочтение15 мин
Охват и читатели9.9K

Что, если мы создадим такой интерфейс в 1С, чтобы он был удобнее, чем в Excel? Да не просто удобнее — а чтобы сотрудники сказали: «Ого, это же как игра!» С вами снова Ведущий специалист модуля разработки 1С Михеев Антон. Давайте вместе сделаем эту игру идею реальностью

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

Читать далее

ORM — есть ли профит? Особенно когда по двору бегает ИИ-шка

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели10K

ORM — Object-Relational Mapping — Объектно-реляционное отображение — это технология, позволяющая связывать SQL-ые БД с ООП кодом. Самая известная из них — Hibernate.

Hibernate — очень красивая технология. Она формирует ощущение магии.

Ты просто создаёшь объект, — хлабысь! — он уже в базе данных. Никакого SQL, никаких соединений, никаких ResultSet. Всё происходит как будто само собой. Прелесть.

Именно поэтому отказаться от Hibernate так тяжело.

Это напоминает Кольцо Всевластия из «Властелина колец». Оно не просто давало силу — оно меняло сознание своего владельца. Оно внушало мысль, что без него уже нельзя. Что именно оно даёт власть и контроль.

Hibernate действует очень похоже. Он формирует ощущение, что именно он управляет данными. Что именно он связывает код с базой. Что без него всё развалится.

И ты начинаешь бояться.

Бояться, что без Hibernate придётся писать бесконечный SQL. Бояться, что потеряешь контроль над данными. Бояться, что любая операция с базой превратится в мучение.

Ты уже не представляешь себе проект без этой магии. Ты настолько к ней привык, что мысль «выкинуть Hibernate» кажется почти кощунственной. Кажется, будто вместе с ним исчезнет и сама возможность нормально работать с базой данных.

Читать далее

Project Valhalla: 10 спустя

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели7.7K

В новом переводе от команды Spring АйО рассмотрим решение старой проблемы в Java: полноценные классы часто слишком дорогие для памяти и процессора.

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

Project Valhalla добавляет value class. Это обычный на вид класс с полями, конструктором и методами, но без идентичности объекта. JVM сможет хранить такие данные плотнее: например, прямо внутри массива, без отдельного объекта для каждого значения.

JEP 401 планируют включить в JDK 28 как preview. Это еще не финал: value class пока может быть null, а полная поддержка быстрых generics и плотных коллекций появится позже. Но первый рабочий шаг Valhalla уже близко.

Читать далее

Ограничения Manifest V3 в расширении EasyProxy для управления прокси

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.9K

Как перестать искать подходящее расширение и написать его самому. Отличия API Firefox и Chrome Extensions.

Читать далее

Как мы ускорили KNN-поиск в Manticore: двухпроходный обход HNSW, пакетная обработка и AVX-512

Время на прочтение6 мин
Охват и читатели5.9K

Кратко: Три изменения в HNSW-поиске ускоряют KNN-поиск до 29% при больших k и дают более 20% прироста при параллельной нагрузке. Без изменений API, без перестроения индексов и без новых настроек — просто более быстрый поиск.

Читать далее

Реалтайм-аналитика «без боли»: миграция из PostgreSQL и Kafka в ClickHouse и визуализация в Superset

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели7.6K

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

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

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

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

Узнать больше

Ближайшие события

Switchback-тесты: инфраструктура для экспериментов в условиях сетевых эффектов

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели9.2K

Меня зовут Даниил Никольский, я бэкенд-инженер команды Trisigma. В создании статьи участвовали Искандер Мирмахмадов, руководитель продуктового направления, и Александр Кузнецов, старший аналитик. В этой статье я расскажу про Switchback-эксперименты, рассмотрим как они устроены, почему для него не подходит обычный t-тест, и какая инфраструктура нужна, чтобы проводить такие эксперименты в промышленном масштабе.

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

Читать далее

Как мы перестали гонять данные туда-сюда и подружили OLTP с аналитикой: знакомьтесь, Postgres Pro AXE

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.2K

«HTAP», «единая платформа для OLTP и OLAP», «никаких ETL» — такие обещания в индустрии делают каждые полгода. Обычно за этим следуют компромиссы: либо транзакции деградируют, либо аналитика тормозит, либо архитектура превращается в Франкенштейна. Мы расскажем, что конкретно сделали в Postgres Pro AXE — и почему это работает иначе.

Читать далее

Move‑семантика в C++: пять задач, в которых легко ошибиться

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.1K

В C++ часть ошибок выглядит слишком безобидно, чтобы сразу насторожиться: std::move в return, emplace_back «для скорости», перемещение из const, move‑конструктор без noexcept. Код компилируется, тесты могут проходить, а потом внезапно появляются лишние копирования, просадки производительности и странное поведение объектов.

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

Разобраться в move

Что делать, если HTTP‑запрос прошёл, а транзакция в БД откатилась?

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели8.2K

Если ваш сервис одновременно пишет в БД и дёргает внешние API, прямо сейчас у вас есть как минимум один из этих сценариев:

– деньги списаны, заказа в базе нет;
– товар на складе заблокирован навсегда под «призрачный» заказ;
– курьерская служба везёт посылку, которую никто не заказывал.

Это не баги в коде – это архитектурная проблема двойной записи. И у неё есть классическое решение: паттерны Transactional Outbox, Result Table и Saga Compensation. Под катом – не только теория, но и живой рабочий проект на Scala, который можно склонировать и запустить.

Читать далее

Tensordyne Napier — еще одно решение на замену традиционных GPU в инференсе

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели10K

Почти каждый месяц очередной стартап, производящий серверное железо, объявляет о своих ноу-хау. Естественно, ориентированных на задачи инференса и обучения ML-моделей. И пусть до реального использования в дата-центрах доходит лишь малая их часть, мы стараемся следить за всеми апдейтами, чтобы не пропустить ту новинку, которая, возможно, изменит рынок. С вами Сергей Ковалёв, менеджер продукта Selectel, а под катом вас ждут подробности об очередной чудо-железке.

Читать далее

Хватит засовывать всё в контейнеры: возвращаем комфорт в локальную разработку

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели19K

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

Каждый разработчик давно знает обо всех преимуществах Docker: мы привыкли воспринимать его как универсальный ответ на любые вопросы инфраструктуры. Некогда революционная парадигма разработки стала чем‑то обыденным и сегодня часто принимается как no‑brainer решение при разработке очередного проекта на локальной машине. Но давайте на минуту остановимся и зададимся вопросом: всегда ли эта избыточная изоляция оправдана? Действительно ли мы нуждаемся в «мини‑сервере» на каждом этапе написания кода, или мы просто следуем моде, жертвуя скоростью и комфортом.

Вступить на путь самурай

Разработка длиною в 3 года: как я писал свой PHP CMS/Framework Gy, «убийцу» Битрикса, весом 350 Кб

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели5.7K

Под катом делюсь обзором своего самописного PHP-фреймворка Gy — попытки сделать легковесного «убийцу» Битрикса весом 350 Кб. Расскажу, как я реализовал вызов компонентов, зачем написал кастомный SQL-движок на текстовых файлах PhpFileSql.

Костыли, велосипеды, 3 года разработки по выходным, 315 коммитов, 14232 строки кода, поддержка практически всех версий PHP и ровно 0 пользователей.

Читать далее
1
23 ...