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

Бэкенд

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

Бесконечные циклы. Всё, что может пойти не так — пойдёт не так

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

Конструкции типа while(true) или for(;;) довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.

В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.

Читать далее

Что такое RabbitMQ и как мы его внедрили в интеграцию с 1С

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

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

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

Читать далее

Что с Python? Меньше производительности, никакого сахара и больше багов

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

Python продолжает меняться, но не всегда так, как ждёт сообщество. Новый синтаксический сахар отклоняют, прирост производительности оказывается скромнее обещанного, а очередные депрекации в setuptools ломают проекты. При этом экосистема получает долгожданный стандартный lock-файл и поддержку uv в Dependabot. В статье разбираем, что это значит на практике и почему начинающим Python-разработчикам важно следить за этими изменениями.

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 2

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

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в продолжение первой статьи, закрываем архитектурную часть — поговорим об отправке и хранении метрик. А главное, перейдём к самому интересному: получившимся дашбордам Grafana. На конкретных примерах покажу, какие проблемы удалось обнаружить и какие рекомендации по оптимизации можно извлечь из каждого элемента.

Читать далее

Как превратить SQL в API на Go?

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

Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.

Читать далее

PCW — новая метрика продуктивности разработчиков с ИИ

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

Команда AI for Devs подготовила перевод статьи о метрике Percentage of Code Written (PCW) от Windsurf. Эта метрика показывает, какой процент кода в проекте реально пришёл от ИИ. Авторы утверждают: PCW надёжнее привычных показателей вроде acceptance rate и отражает, насколько продукт действительно помогает разработчикам. А как вы думаете — можно ли измерить ценность ИИ в цифрах?

Читать далее

«Архитектура бэкенда», или как я написал мою первую техническую книгу

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

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

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

Читать далее

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

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

В большинстве материалов по SQL обсуждаются знакомые всем конструкции — SELECT, JOIN, WHERE, группировки, простые индексы. Но когда вы обрабатываете сложные данные, оптимизируете производительность или строите аналитические отчёты, ограничиваться только базовыми операторами — значит добровольно усложнять себе жизнь. В SQL есть мощные, но редко упоминаемые функции, которые помогают решить задачи элегантно и эффективно.

В этой статье, основанной на личных экспериментах и наблюдениях, мы рассмотрим три таких инструмента: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные (filtered) индексы.

Читать далее

Python и множества: генераторы, которые делают код чище

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

Команда Python for Devs подготовила перевод статьи о генераторах множеств в Python. С их помощью можно создавать, преобразовывать и фильтровать множества одной строкой кода. Разбираем примеры, практические приёмы и ошибки, которых стоит избегать.

Читать далее

Создание Системы генерации ответов на истории тикетов поддержки (часть 1)

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

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

Меня зовут Анатолий, занимаюсь диалоговыми системами, автоматизацией бизнес-процессов, применением Искусственного Интеллекта в бизнесе.

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

Читать далее

EVMPack — Управление жизненным циклом блокчейн-проектов

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

Так получилось что этот проект внезапно родился пока я создавал другой.

В мире блокчейна, разработка под экосистему ethereum очень сильно развита, много смарт контрактов "готовых", которые прошли аудит, много разных инструментов таких как SlitherFoundryHardhat и т.д., с ними комфортно писать контракты и тестировать.

Что делать со всем этим дальше? Нет инструментов которые бы меня устроили, или я не нашел, все идет на откуп команды разработчиков, то как они построят процесс обновления смарт контрактов, аудит, безопасность и т.д.

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

Давайте вспомним что должна делать операционная система для классической ЭВМ:

Читать далее

Arrow Flight + ADBC: как гонять десятки ГБ/с между сервисами без REST

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

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

Когда делаешь сервисы на C++ и вокруг летает много данных, в какой-то момент понимаешь простую вещь: REST хорош для управления сущностями, но плохо подходит для потока колонок в десятки гигабайт в секунду. Переносить фреймы по сто миллионов строк через JSON и спотыкаться об сериализацию — не наш путь. В статье рассмотрим как собрать транспорт данных на Apache Arrow Flight и где встраивается ADBC, чтобы между сервисами гонять таблицы почти на скорости сети и не городить зоопарк драйверов.

Читать далее

Event-Driven Architecture в высоконагруженном ДБО: наш опыт

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

Привет, Хабр! Меня зовут Александр, я главный солюшн архитектор трайба в ОТП Банке мы с моей коллегой Екатериной, senior разработчиком трайба, в продолжение прошлой статьи расскажем вам про вызовы, с которыми мы столкнулись при реализации интеграций нашего ДБО с бэкофисом. 

Читать далее

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

LSP API теперь доступен всем пользователям IntelliJ IDEA и разработчикам плагинов

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

Команда Spring АйО перевела статью от JetBrains, в которой рассказано про избавление одного из главных барьеров на пути к массовому внедрению Language Server Protocol (LSP) в своей экосистеме.

С версии IntelliJ IDEA Ultimate 2025.2 пользователи смогут использовать LSP даже после окончания подписки, а с 2025.3 — LSP станет доступным во всех редакциях IDE благодаря переходу на единый дистрибутив.

Читать далее

RocksDB-стейт в стриминге: как ловить потерянные события и дубликаты

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

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

Читать далее

Как спроектировать кэш-библиотеку нового поколения и не умереть?

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

Всем привет! Меня зовут Алексей Майшев, я работаю Go-инженером в Авито. В этой статье рассказываю, как мы проектировали и разрабатывали кэш-библиотеку следующего поколения для Go — otter

Вы узнаете, чем нас не устроили текущие кэш-библиотеки в Go, какие подходы и оптимизации мы рассматривали и на каких остановились, как замеряли производительность и потребление памяти и в чём otter превосходит конкурентов. А ещё тут будет много теории — в процессе работы над библиотекой нам приходилось читать много страшных научных статей на тему кэшей.

Читать далее

Почему асинхронный Python не такой популярный?

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

Недавно на Youtube появилась документалка о Python. Примерно в середине ленты есть драматический эпизод о том, как переход от Python 2 к 3 разделил сообщество (спойлер: в конечном итоге этого не случилось).

Первые версии Python 3 (3.0-3.4) в основном делали упор на стабильность и упрощение перехода пользователей с версии 2.7. В 2015 была выпущена версия 3.5 с новой фичей: ключевыми словами async и await для выполнения корутин.

Миновало десять лет и девять релизов, через считанные недели выпустят финальную версию Python 3.14.

Пока все отвлеклись на фичи разноцветного REPL в 3.14, в release notes появились серьёзные заявления, связанные с конкурентностью и параллелизмом.

Читать далее

Как допилить GitLab CI/CD и перестать переписывать пайплайны

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

С подключением, хабровчане! Меня зовут Роман Волков, я Senior DevOps в МТС Web Services. Последние несколько лет мне приходилось создавать и адаптировать конвейеры на базе GItLab-CI, изменяя процесс автоматизации под каждую новую команду, стек, продукт и окружения эксплуатации. Чтобы облегчить жизнь себе и коллегам, я сделал небольшой внутренний фреймворк — FundaPipe, значительно упрощающий создание, развитие, переиспользование и применение самих конвейеров разработчиками.

Читать далее

От прокрастинации к продуктивности

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

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

Сегодня я хочу поговорить о лени. Точнее о том, что мы часто за нее принимаем – о прокрастинации. Решил я разобраться, как (и почему) она работает и что с этим вообще делать (в моем конкретном случае). Я не буду рассказывать о видах, типах и классификациях прокрастинаторов. Эта информация широкодоступна, основное можно прочитать, допустим, на Википедии. Я напишу исключительно о том, как справился я и что мне помогло.  

Начну немного издалека.

Читать далее

Глобальные индексы для секций в Postgres Pro: глобальная уникальность без костылей

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

Когда фильтра по ключу секционирования нет, локальные индексы превращаются в марафон по секциям. Новый gbtree держит единый каталог ключей и прыгает к строке по PK; покажем алгоритм, реальные цифры и ограничения (PK обязателен, ON CONFLICT не работает) — и где это решает боль в CRM/биллинге.

Читать далее