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

Бэкенд

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

Реализация Outbox паттерна в разных языках программирования

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

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

Сегодня мы рассмотрим реализацию Outbox паттерна в разных ЯП. Цель простая: одним атомарным действием обновлять бизнес-данные и фиксировать факт события, а затем надежно доставлять его в брокер. Разберем общую схему, конкуренцию воркеров, ретраи, дедупликацию, метрики и покажу, как это собрать на C#, Java, Go, Python и Node.js.

Читать далее

Всё про BlockingCollection и фичи с ними

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

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

В .NET живёт старый, понятный инструмент для конкурентной обработки — BlockingCollection<T>. Коллекция, которая упрощает модель producer–consumer, даёт строгую ограниченную вместимость и предсказуемую блокировку при пустоте или переполнении. Да, у нас есть Channel<T>, есть TPL Dataflow, есть миллион самодельных очередей на SemaphoreSlim. Но когда нужны простые правила и железный backpressure без BlockingCollection по-прежнему закрывает задачи хорошо.

Читать далее

librats: новая библиотека для распределённых P2P-приложений

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

Всем привет! Я являюсь создателем распределённого поисковика rats-search на базе DHT ( GitHub ). Его принцип работы довольно прост: поисковик собирает торренты у всех участников сети и формирует большую распределённую базу для поиска, включая метаданные (например, описания и прочую информацию).

В этой статье я хочу рассказать о своей новой библиотеке для построения распределённых приложений (p2p), где знание IP-адресов участников не обязательно, а поиск ведётся через различные протоколы — DHT, mDNS, peer-exchange и другие. Думаю, с учётом постоянных неприятностей, которые происходят вокруг, это может оказаться полезным ;-).

Читать далее

Монорепозитории на GitLab: rules:changes, условные include и «тонкое» клонирование

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

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

Монорепозитории удобны, пока CI не начинает пробегаться по всему дереву. Сегодня рассмотрим, как на GitLab собрать внятный pipeline для монорепы так, чтобы на каждое изменение реагировали только нужные куски. Базовых кирпичиков тут три: rules:changes, условные include и тонкое клонирование репозитория.

Читать далее

OpenStack: подборка open source инструментов

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

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

Читать далее

WhatsApp Web и Telegram коннектор для Bitrix24: наш опыт реализации и внедрения. Часть 1 — Интеграция Bitrix24

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

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

Работая в формате крупного IT-аутсорсинга, мы в компании столкнулись с проблемой: использование общего WhatsApp/Telegram Web, подключённого на компьютерах сотрудников поддержки, оказалось неэффективным. Такой подход не позволял контролировать качество диалогов, а также затруднял перевод обращений клиентов в структурированные тикеты, вследствие чего была начата разработка коннектора к нашему корпоративному порталу Bitrix24.

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

Читать далее

Как проектировать качественные API

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

Основная часть работы современных разработчиков ПО1 связана с API: публичными интерфейсами для общения с программой, например, API Twilio. Я потратил кучу времени на работу с API как их разработчик и пользователь. Я писал публичные API для сторонних разработчиков, приватные API для внутреннего использования (или для потребления одной страницей фронтенда), API REST и GraphQL и даже несетевые интерфейсы, например, для инструментов командной строки.

Думаю, большинство рекомендаций по проектированию API слишком уж уходит в тонкости. Разработчики отвлекаются на обсуждения того, что же такое «реальный» REST, правильно ли использовать HATEOAS и так далее. В этом посте я попытаюсь рассказать всё, что знаю о проектировании хороших API.

Читать далее

Иллюстрированное руководство по Claude (I): Профессиональная команда через Subagents

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

Ваше взаимодействие с Claude Code всё ещё ограничивается простой схемой «ввод команды -> ожидание выполнения -> проверка результата»? Если это так, то вы, вероятно, упускаете его истинный потенциал. С сегодняшнего дня я запускаю серию уроков «Визуальное руководство по продвинутым методам работы с Claude Code», которая поможет вам исследовать те расширенные функции Claude Code, которые требуют первоначальных усилий для освоения, но после овладения ими значительно повышают эффективность работы.

По сравнению с официальными руководствами, данная серия ставит перед собой цели:

Читать далее

Как подружить MISP и Python? Мой опыт

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

Привет, хабровчане! С вами снова Иван — разработчик, который пишет на Python, и хаброписатель, который пишет для блога МТС.

Если вы работаете в сфере кибербезопасности или интересуетесь ей, то, скорее всего, знаете о существовании индикаторов компрометации. «Да, они есть, и что дальше?» — скажете вы. Ответ: их нужно где-то хранить. Для этой задачи есть различные платформы, одни платные, другие — нет. Сегодня мы сфокусируемся на MISP — у этого продукта множество фанатов, и их можно понять. Но вручную вносить все индикаторы скучно, не так ли? Поэтому мы добавим нотку автоматизации, и тут нам поможет Python. Как именно, узнаете дальше.

Читать далее

Миграция календаря из MS Exchange в VK WorkSpace

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

Российский бизнес активно занимается импортозамещением ИТ. В этих условиях компаниям требуется непрерывность бизнес-процессов при переезде на новый стек. Особое внимание в этом процессе уделяется инструментам для коммуникации и планирования. 

Меня зовут Леонид Мотовских. Я руководитель команды Календаря VK WorkSpace. В этой статье расскажу о методах миграции календаря из MS Exchange в VK WorkSpace, как мы реализуем их под капотом и какие механизмы применяем для исключения конфликтов.

Читать далее

Самый быстрый способ читать Excel в Python

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

Команда Python for Devs подготовила перевод статьи о том, как читать Excel в Python быстрее всех. В статье результаты тестирования pandas, openpyxl, Tablib, DuckDB, LibreOffice и даже связки с Rust. Кто справился лучше всех и как за 4 секунды Python «проглотил» полмиллиона строк — читайте в статье.

Читать далее

Когда дело не в коде: как мы ловили мистические пропажи запросов на сетевом уровне

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

Привет, меня зовут Анатолий, я ведущий разработчик в ITFB Group. У нас высоконагруженный сервис торговых операций. И раз в неделю, как по расписанию, раздавался панический звонок: «Опять пропали запросы!». Мы неслись смотреть логи — а там... ничего. Ни ошибок, ни падений. Никаких пятисотых, только стабильные двухсотые. Стенды dev и prod молчали, как рыбы. Запросы загадочным образом появлялись через некоторое время, и всё работало, пока история не повторялась снова. Это был не баг, это был призрак. Призрак в сети.

Сегодня я расскажу, как мы его поймали.

Читать далее

SPDK в публичном облаке: лезем внутрь дисковой подсистемы в user-space

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

Всем привет! Меня зовут Василий Иванов, я ведущий разработчик в команде Data Storage в MWS Cloud Platform, занимаюсь тем, чтобы диски наших виртуальных машин были надёжные и быстрые.

В этой статье я расскажу, как данные попадают из виртуальной машины в хранилище. Рассмотрим, как мы используем SPDK, зачем мы вообще взялись за этот низкоуровневый фреймворк, а также почему просто «заиспользовать» не получилось и пришлось копать, как всё устроено в самой глубине. Также мы увидим, как high performance фреймворка при нашем количестве устройств не хватало и какие доработки пришлось сделать.

Эта статья выходит по следам моего доклада на летнем Highload 2025 года.

Читать далее

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

Agentic RAG: создание более умных ИИ-систем, понимающих контекст

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

Команда AI for Devs подготовила перевод статьи о новом подходе — Agentic RAG. Он превращает извлечение данных в активный процесс: агенты сами решают, где искать, как уточнять запросы и когда остановиться. В результате ИИ становится гибче, точнее и действительно готовым к «боевым» задачам.

Читать далее

Хватит ли мне недорогой VPS? Сравниваем недорогие тарифные планы HOSTKEY по конфигурациям, мощностями и применимости

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

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

Читать далее

Как проверить время и асинхронный код в Go

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

Команда Go for Devs подготовила перевод статьи о пакете synctest, который с Go 1.25 стал частью стандартной библиотеки. Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов.

Читать далее

Заблокировать нельзя использовать: кратчайшая история противостояния трекинговых кук и современных браузеров

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

«Сторонние куки больше не нужны», — заявили разработчики Google Chrome и в январе 2024 года начали принудительно отключать их у каждого сотого пользователя браузера. Однако уже в июле последовало осторожное: «Ну, с другой стороны...» — и отмена кук была отменена.

Многие даже не заметили, что произошло. Но на самом деле речь шла о том, как должен работать интернет в целом: отказ затронул бы почти каждый сайт из тех, что ты посещаешь,%USERNAME%.

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

Читать далее

Развивать или выпиливать легаси: где грань?

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

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

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

Читать далее

Пишем геймтон на nodejs

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

Сегодня мы разработаем с 0 собственный геймтон и запустим соревнования среди хабравчан и всех желающих just for fun. А также дадим возможность запустить свой геймтон локально по своим правилам Под катом вас ждет разработка геймтона на стеке nodejs + prisma + vuejs + fastify. А также пример разработки фулстек приложения с различными тонкостями построения API.

Читать далее

Как быстро сделать Low-Code RAG для своей компании?

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

Допустим, у вашей организации есть внутренний сервис с большим объемом накопленных документов, тикетов и комментариев, и все это ведется в Jira. Представьте, если при клиентском запросе или взаимодействии с контрагентом, можно было бы обращаться к AI-ассистенту и получать максимально релевантные ответы, дополняя существующую в вашей системе информацию данными из внешних источников. Очевидно, что это позитивно отразилось бы на конверсии в продажи за счет персонализированного подхода, увеличило бы уровень удовлетворенности сервисом у клиентов, да и менеджерам бы облегчило жизнь!

Если вы руководитель отдела или ведете собственный бизнес, вы наверняка подумаете «наверное, это дорогая технология, которая требует больших затрат и найма техспециалистов для разработки». Когда-то это было так, но теперь нет.

В этой статье я опишу короткую инструкцию, как реализовать что-то похожее на описанный функционал без особых навыков. Лучшие умы человечества могут уличить меня в том, что моя предлагаемая реализация максимально проста и наивна. И да, это так. Целью я ставил — показать массовому читателю прикольную штуку, а не задушнить ;-) 

Читать дальше