Все потоки
Поиск
Написать публикацию
Обновить

Бэкенд

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

Что я знаю про онлайн редактирование

Время на прочтение9 мин
Количество просмотров1.3K

Привет! Меня зовут Сергей и я техлид. Причем уже долгое время. За время своей работы я успел поработать с разными решениями, надо разными проектами и столкнуться с разными задачами. Проекты я всегда старался выбирать свежие. Когда надо построить большую и сложную систему с нуля.

Идея этой статьи пришла ко мне год назад. При посещении Highload я был у стенда одной большой компании, которая очень любит алгоритмы. На нем предлагалась решить архитектурную задачу за мерч. Когда дошла очередь до меня, мне выпала задача — построить онлайн редактор с нуля. Это отличный вариант! Как раз такое мне уже приходилось проектировать. В процессе решения, автор задачи сказал, что я усложняю и вообще онлайн редктор — это гораздо проще. После разбора нескольких корнер кейсов, он согласился, что это всего лишь первый взгляд. Далее уже достаточно долго мы обсуждали а как вообще можно построить онлайн редактор. В тот момент и появилась идея поделиться своим опытом публично, но вот только сейчас дошли руки. Итак, приступим.

Читать далее

Разрабатываем spring-boot Starter адаптера EGTS протокола для передачи телеметрии курьеров в РНИС

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров671

Привет! Меня зовут Игнат. В этой статье я расскажу про разработку адаптера для работы с EGTS-протоколом (Era Glonass Telematics Standard), который можно использовать для передачии телеметрии курьеров из курьерских служб в РНИС (РНИС - государственная информационная система «Единая региональная навигационно-информационная система города Москвы»). Код написан на Kotlin и подходит для использования в Java и Kotlin приложениях. Простота подключения модуля привела к идее вынести проект в опенсорс, чтобы его могли использовать курьерские службы с бэкендом на jvm. Поехали!

Читать далее

Скачиваем с YouTube без рекламы и SMS: гайд по созданию консольной утилиты на C#

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

Надоела бесконечная реклама на сайтах-загрузчиках? Хочется простой и быстрый инструмент для скачивания видео с YouTube? Решение есть — написать его самому!

Читать далее

Междоменные (процессные) инварианты

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров920

Ястолкнулся с такой проблемой: логика между доменами сложнее самих доменов

Если строить систему по DDD: домены, агрегаты, use cases, события - всё красиво.

Потом пришёл сценарий: «Отменить заказ»

Я думал: `Order::cancel()`, вызову `inventory.release()`, `pricing.refund()`, и готово». Но...

Если доставка уже в пути - нужно создать возвратную накладную

Если платёж падал дважды - отменить всё, а при первой попытке только заморозить баллы

Если товара нет - перенести резерв на другой склад, пересчитать доставку, спросить клиента, если дороже

Если клиент повторил платёж - восстановить резерв и доставку

И я решил:

Самая сложная логика тут не в доменах, а между ними.

А в книжках по DDD, Clean Architecture, Hexagonal об этом не пишут.

Это напомнило проблему в ООП, когда каждый объект отвечает только за свою корректность (инвариант), а логическую зависимость при взаимодействии должен обеспечить ещё один класс "чистая выдумка". Также, у ФП есть более простые и явные способы.

Я напишу на Rust, потому что этот язык удобнее управляет бизнес правилами.

Читать далее

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4.4K

Привет! Я Рома, бэкендер-питонист в KTS.

Это вторая статья в моем цикле об алгоритме архивации bzip2. Первую можно прочитать здесь, но для понимания сегодняшней темы она необязательна. Ниже я разберу преобразование Барроуза-Уилера — ключевой этап сжатия bzip2.

Читать далее

net/netip в Go 1.25

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

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

Go ценят за предсказуемость и простые решения в стандартной библиотеке, а в сервисах чаще всего упираемся в IP, разбор host:port, CIDR и сериализацию. Сегодня это удобно закрывается стандартным net/netip: компактные value-типы, корректный парсинг адресов и портов, работа с зонами, проверка принадлежности сетям и быстрые операции без лишних аллокаций. В статье рассмотрим этот пакет подробнее.

Читать далее

SSO через Keycloak для инфраструктурных сервисов: часть 2, практика

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров4.5K

В первой части мы разобрали, как устроен Keycloak, какие у него сущности и зачем вообще нужен SSO в DevOps-инфраструктуре. Теперь — к делу. Во второй части переходим от теории к практике. Разворачиваем Keycloak в Kubernetes, настраиваем Terraform-провайдер, подключаем к нему Grafana, Argo CD и другие сервисы. Разбираемся, как выглядят реальные конфигурации клиентов, scopes и mappings, чтобы SSO действительно работал — с нужными токенами, ролями и группами.

Читать далее

AWS удалил мой 10‑летний аккаунт и все данные без предупреждения

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

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

На 23 июля 2025 года AWS удалил мой аккаунт, которому было 10 лет, и каждый байт данных, который я там хранил. Без предупреждения. Без льготного периода. Без возможности восстановления. Произошла полная цифровая аннигиляция.

Ниже я расскажу историю о катастрофической внутренней ошибке в AWS MENA, 20 днях кошмарного общения с поддержкой, в ходе которого я так и не получил прямого ответа на вопрос «Мои данные ещё существуют?», и о том, что всё это показывает в отношении доверия облачным провайдерам.

Читать далее

Как экспортировать HTML-таблицы в Excel с помощью Python

Время на прочтение11 мин
Количество просмотров2.7K

Экспорт HTML-таблиц в Excel — это распространенная задача в обработке данных, отчетности и автоматизации. Независимо от того, работаете ли вы с данными, полученными с веб-страниц, панелями управления или отчетами на основе HTML, преобразование таблиц в формат Excel может облегчить анализ данных и их обмен.

В этом блоге мы рассмотрим...

Читать далее

Jakarta Data. Что это означает для Java-сообщества

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров7.4K

Большинство enterprise-приложений работают с БД в том или ином виде. Чаще всего в качестве БД выступает реляционная DBMS, например, PostgreSQL или Oracle. Относительно часто для доступа к данным используют Hibernate. Ранее он предлагал только одну спецификацию — JPA (Java Persistence API), она же Jakarta. Но теперь Hibernate реализует ещё и Jakarta Data.

Jakarta Data — это новая спецификация под зонтиком проекта Jakarta EE (как и JPA), которая упрощает интеграцию данных в корпоративных Java-приложениях. Обе эти спецификации разрабатывает Eclipse Foundation, и в частности Gavin King, создатель Hibernate.

Большинство разработчиков привыкли работать с Hibernate именно через Spring Data JPA. Изначально, когда только обсуждали спецификацию Jakarta Data, Spring Data (не обязательно JPA) была одним из тех проектов, который, в перспективе, мог бы реализовать спецификацию Jakarta Data. Но этого не произошло, и, несмотря на то, что изначально команда Spring Data была вовлечена в процесс создания спецификации, они отказались от идеи реализовывать Jakarta Data, и та стала развиваться самостоятельно. Сегодня Jakarta Data применяют в Hibernate, Open Liberty и ряде более мелких решений. Как же так вышло?

Меня зовут Михаил Поливаха, я практикующий инженер и активный коммитер Spring Data. В этой статье я расскажу об особенностях Jakarta Data, как она появилась и чем отличается от конкурентных решений. Я также расскажу, что помешало команде Spring Data реализовать Jakarta Data, и что же нас ждёт дальше.

Читать далее

Postgres Pro TDE — безопасность и производительность

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.6K

TDE бывает разным: от шифрования на уровне TAM до полного кодирования всего кластера и меток tablespace. Мы сравниваем Percona, Cybertec/EDB, Pangolin/Fujitsu и показываем, где теряется производительность и надёжность, а где появляется гибкость. Дополнительно замдиректора департамента разработки продуктов Василий Бернштейн и старший инженер по ИБ Владимир Абрамов расскажут о том, как в Postgres Pro Enterprise реализована ротация ключей без полного переписывания таблиц и почему выбран AES‑GCM.

Читать далее

Жизненный цикл фичи в коммутаторе: от идеи через QA до прода

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров11K

Привет, Хабр! На связи Андрей Золотых, старший инженер по разработке ПО для коммутаторов YADRO KORNFELD. Сегодня я расскажу о пути, который проходит новая фича перед выходом в свет. Разберем весь процесс имплементации: начиная с идеи и заканчивая продакшеном. Особое внимание уделим тестированию, которое в случае сетевого оборудования имеет ряд особенностей. А еще поговорим о специалистах, которые участвуют в процессе: от бизнес-аналитиков до сетевых инженеров.

Читать далее

GIMP Script-Fu ООП. Векторы

Время на прочтение10 мин
Количество просмотров555

Библиотека функций к Script-fu

Когда то, очень давно, считалось что графические редакторы делятся на растровые и векторные. К векторным относились Coreldraw Adobe Illustrator Inkscape и работали они не с отдельными пикселами изображений, а с элементами называемыми векторами, которые можно превращать, с помощью манипуляций в дуги различной формы, называемыми кривыми Безье. К растровым же относились Photoshop Paint и тот же GIMP. В этих редакторах отсутствовала какая либо геометрия и изображения представляли собой наборы отдельных точек - пикселов. Но время не стоит на месте и элементы растрового редактирования проникали в редакторы, которые считались векторными и наоборот, элементы векторных редакторов переносились в растровые графические редакторы. Примером тому является GIMP.

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

Читать далее

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

Как развернуть SonarQube в Linux: пошаговая инструкция

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.5K

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

Меня зовут Николай, я 1С-разработчик в SimbirSoft и в этой статье хочу подробно рассказать о процессе установки и настройки SonarQube в ОС Linux.

Читать далее

Как мы сделали AI-агента и пользуемся им на практике

Время на прочтение6 мин
Количество просмотров5.1K

Привет, Хабр! В последнем обновлении Explyt мы добавили AI-агента для написания кода. В этой статье расскажем, что он умеет и как мы сами его используем.

Пару месяцев назад в нашем плагине не было AI‑агента, а был только ассистент для генерации тестов. И пока агент не появился, в работе мы использовали другие известные плагины. Лично мне очень нравился Copilot, из‑за своего минималистичного интерфейса и контроля за контекстом. Однако фичи копайлота в первую очередь доезжали до VSCode, а пользователю IntelliJ IDEA приходилось дожидаться их месяцами. Поэтому для прототипирования и скаффолдинга, написания бойлерплейтного кода с помощью AI‑агентов мне приходилось переключаться между любимой средой разработки и IntelliJ, что было несколько неудобно.

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

Читать далее

Как организовать внутренний митап среди IT-команд в компании

Время на прочтение2 мин
Количество просмотров534

Митапы — это не про формальные отчёты и скучные презентации. Но они и не про корпоративы с шариками. Митапы родились в IT-тусовках как способ обмениваться опытом без официоза. В нулевых разработчики собирались в баре после работы и обсуждали код — так появились «Beer Talks». В России митапы стали популярны в 2010-х, когда IT-компании поняли: лучшие идеи рождаются в неформальной дискуссии, а не на совещаниях. Сейчас это классный инструмент для прокачки команды и корпкультуры.

Читать далее

Гайд по использованию Spring GraphQL. Часть 2

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.8K

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

Меня зовут Дмитрий, я бэкенд-разработчик в SENSE и последние 10 лет пишу серверную часть на Java. Эта статья — продолжение первой части гайда по Spring GraphQL, где мы с нуля подняли проект и подключили GraphQL к Spring Boot.

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

Поехали!

Читать далее

Koda: AI-помощник разработчика – бесплатно, без VPN, с поддержкой русского языка

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров20K

Индустрия ИИ переживает рекордный бум: каждую неделю появляются новые модели, а заголовки пестрят новостями о многомиллионных контрактах и громких переходах звёздных исследователей. Прорывы происходят на всех уровнях: от чипов и инфраструктуры (NVIDIA и др.) до моделей и инструментов вроде Cursor или Windsurf.

Но у российских разработчиков выбор заметно ýже: ограничения, VPN, трудности с оплатой. Мы решили это изменить и создали Koda — AI-помощника, который доступен бесплатно и без VPN, работает с современными моделями и привычными функциями: автодополнение кода, чат, поиск по документации и коду проекта, а также агентный режим!

Читать далее

SSO через Keycloak для инфраструктурных сервисов: часть 1, теория

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8K

Если вы хоть раз настраивали доступ к Grafana, Argo CD, Vault или Prometheus и сталкивались с аутентификацией «на костылях», значит, тоже задавались вопросом: почему бы не сделать это один раз и правильно — через SSO?

Эта первая часть разбора мастер-класса с DevOpsConf 2025 от Алексея Цыкунова, CTO Hilbert Team.

Читать далее

Умный дом под давлением

Время на прочтение16 мин
Количество просмотров9.2K

Хотите знать, как работает платформа умного дома, обслуживающая десятки и сотни тысяч (а то миллионы!) устройств? А как проводят нагрузочное тестирование таких платформ, когда нужно проверить их поведение при увеличении количества приборов? Ведь это сложно — железок не напасешься! Если я вас заинтриговал, то добро пожаловать в статью, я как раз рассказываю о том, как это все делается. :)

Меня зовут Иван Банников, я работаю в VK Tech. Я ведущий разработчик команды Tarantool CDC, одного из продуктов экосистемы Tarantool, но в статье я расскажу про давние времена, про проект, на котором я познакомился с Tarantool, зафанател от него и в итоге пришел потом работать в Tarantool. Поговорим о платформе для интернета вещей, о ее устройстве, о том, какие в ней могут быть слабые места и как мы их выявляли с помощью нагрузочного тестирования, а также о MQTT.

Читать далее