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

Бэкенд

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

Визуализация обмена с 1С: синхронизация заказов, остатков и контрагентов для e-commerce

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

Привет! Это Илья, руководитель проектов в Webest. Расскажу о том, как мы построили обмен между интернет-магазином и 1С. Реализовали двусторонний обмен через очереди, ввели приоритеты для разных типов данных и сделали прозрачный мониторинг в админке Orchid.

Читать далее

Бот-модератор с LLM для Телеграм

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

В этой статье я рассмотрю пример в котором будут использоваться LLM для выполнения задач модерации в Telegram.

И в отличии от классического ML, LLM не нужно переобучать, достаточно просто изменить промпт. Это делает LLM идеальным инструментом для интеллектуальной модерации.

Читать далее

Пять производительных паттернов кэширования, которые ускорят ваш микросервис

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

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

Читать далее

Нововведения Java 25

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

Java не стоит на месте и продолжает активно развиваться. Скоро выйдет уже 25-я версия языка. В этом релизе изменили работу с boilerplate-кодом и конструкторами, а также отказались от поддержки устаревших систем. Обо всех этих и других нововведениях расскажем в статье.

Читать далее

Post-PHP эра: куда движется веб-разработка?

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

Привет, хабровчане! Я Алиса — тимлид в e-commerce-агентстве KISLOROD, по базовой профессии — сеньор PHP-разработчик с десятилетним стажем. И да, спойлер: PHP не только жив, он бодро бегает марафоны.

По данным W3Techs, PHP работает на более чем 76% серверов, где известен язык бэкенда. Последние релизы стабильно приносят +20–25% производительности на версию — на фоне вечного рефрена «PHP умер». Удобно хоронить то, чьи обновления не открывал с 2012-го, верно? Давайте разбираться.

Читать далее

История Rust: от стартапа до продакшена

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


Вокруг Rust в Linux-сообществе до сих пор не утихают жаркие споры. Кто-то считает его спасением, а кто-то — проклятием. В дебатах сталкиваются две позиции: сторонники видят в нем ключ к безопасности и модернизации ядра, противники опасаются усложнения и нарушения традиционных подходов. 

Давайте разберем, как он появился, какие точки роста сделали его рабочим, где он уже побеждает и почему вы его недооцениваете. А также подскажем, как Rust-разработчикам сделать вклад в развитие реального open source-проекта. Детали под катом.

Читать далее

Неудачные эксперименты с Vibe Coding на Python

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

Команда Python for Devs подготовила перевод статьи Элa Свейгарта о неудачных экспериментах с vibe coding. Все говорят, что ИИ уже умеет писать приложения, но стоит чуть отклониться от привычных сценариев — и всё идёт наперекосяк. Картофельная Африка вместо карты, пинбол, превращающийся в пинг-понг, и счёты с отрицательными числами — автор собрал коллекцию своих провалов с vibe coding.

Читать далее

Хватит дообучать ИИ — дайте ему контекст

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

Команда AI for Devs подготовила перевод статьи о том, почему Retrieval-Augmented Generation (RAG) чаще всего эффективнее дообучения моделей. Vector, Graph и Agentic RAG помогают ИИ работать точнее, быстрее адаптироваться и учитывать реальный контекст — будь то кодовая база, документация или API. Дообучение же остаётся дорогим и негибким инструментом.

Читать далее

Что стоит за дистрибуцией Greenplum?

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

Что известно про Greenplum?
Это MPP система на базе PostgreSQL, которая нужна, чтобы работать с большими объемами данных и делать OLAP. Отлично, но лично меня не устраивает это поверхностное знание, хочется узнать, что внутри. Какие алгоритмы использует Greenplum в своих процессах. Я хочу начать с дистрибуции, и приглашаю вас с собой в это путешествие.

Что внутри?

Рецензия на книгу «Разработка мультитенантных SaaS-архитектур: принципы, модели, практика»

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

Книга Тода Голдинга, ведущего архитектора AWS по SaaS-решениям, представляет собой подробный путеводитель по ключевым принципам построения мультитенантных SaaS-систем. Автор последовательно раскрывает весь спектр вопросов: от базовых архитектурных моделей (silo, pool, pod) и изоляции арендаторов до практических аспектов — онбординга клиентов, идентификации, управления данными, биллинга, мониторинга и эксплуатации. Книга написана в основном по облачным сервисам AWS, но ее материал поможет работать с облаком любого провайдера.

Читать далее

Новый экспериментальный API для JSON в Go

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

Команда Go for Devs подготовила перевод статьи о новом экспериментальном API для работы с JSON в Go. Спустя почти 15 лет после появления encoding/json в стандартной библиотеке разработчики столкнулись с его ограничениями. В версии Go 1.25 появился экспериментальный encoding/json/v2 — он решает старые проблемы, добавляет потоковую обработку и повышает производительность.

Читать далее

Несколько занятных вопросов собеседований по Go

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

Наверное, многим знакомо - пишешь ты на языке (вот скажем, Go) уже не первый год - а на собеседовании всё равно найдут чем удивить :-) Вот поделюсь уловом последних дней - не смейтесь над моей наивностью - вдруг кому пригодится!

Читать далее

Sber SaluteSpeech в Python без боли и сертификатов

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

Sber SaluteSpeech — мощный сервис для распознавания речи, но его официальный SDK имеет высокий порог входа. Разработчики сталкиваются с многоступенчатым процессом, временными токенами авторизации и сертификатами Минцифры, что является избыточно сложным для типовой задачи транскрибация аудио.

Когда требуется простое решение — «передал аудиофайл, получил текст», — хочется иметь под рукой лаконичный и понятный интерфейс.

Чтобы решить эту проблему, я разработал salute_speech — легковесную Python-библиотеку, которая абстрагирует сложность официального API и предоставляет простой интерфейс, вдохновленный подходом OpenAI Whisper.

Читать далее

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

Что нового в Maven 4?

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

В новом переводе от команды Spring АйО рассматриваются основные изменения, которые ждут нас в новой версии Maven. Изменения затронули performance, POM, новый тип упаковки, улучшения для подпроектов и много другое. 

Читать далее

PostgreSQL 18: Часть 5 или Коммитфест 2025-03

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

25 сентября ожидается выход PostgreSQL 18. Эта статья о мартовском коммитфесте завершает описание новых возможностей 18-й версии. Статья получилась большая, ведь последний мартовский коммитфест по традиции наиболее объемный и богатый на новинки.

Самое интересное из предыдущих коммитфестов версии можно прочитать здесь: 2024-07, 2024-09, 2024-11, 2025-01.

Клиентские и серверные приложения

pg_dump[all]/pg_restore: выгрузка и восстановление статистики
Сбор статистики после обновления сервера
pg_upgrade --swap: перемещение каталогов из старого кластера в новый
pg_combinebackup --link или жесткие ссылки вместо копирования файлов
pg_dump[all], pg_restore: --no-policies
pg_createsubscriber: включение параметра two_phase для всех подписок
pg_createsubscriber: удаление публикаций на подписчике
pg_createsubscriber: создание подписок для всех баз данных сервера публикации
psql: конвейерный режим работы
psql: информация о текущем подключении
psql: настройка умолчания для интервала времени в команде \watch
psql: \dx показывает версию расширения по умолчанию

Мониторинг

NUMA: инструменты мониторинга систем с архитектурой неоднородного доступа к памяти
pg_stat_get_backend_wal: статистика WAL для отдельного процесса
EXPLAIN: фактическое число строк с точностью до двух знаков после запятой
EXPLAIN: интерфейс для добавления команде новых параметров
Журналирование неудачных попыток захватить блокировку
Журналирование времени на подключение нового сеанса
log_line_prefix: IP-адрес локального сервера
pg_stat_statements: нормализация команд со списками констант в IN
Дополнительные инструменты мониторинга переполнения буфера WAL
Отслеживание времени простоя при выполнении очистки и анализа

[Авто]очистка и анализ

vacuum_truncate: управление обрезанием пустых страниц в конце таблицы
Более частая автоочистка «мертвых» строк в больших таблицах
Более частая автоочистка после вставки новых строк
Нетерпеливая заморозка в помощь агрессивной очистке

Производительность

Асинхронный ввод/вывод
io_combine_limit: максимальный размер увеличен до 1МБ
[Применение интер

Читать далее

Как я спустя 15 лет решил проблему распределённых очередей

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

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

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

Читать далее

Подстилая соломку, или Как выжить в ситуационном центре

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

Привет, Хабр. Меня зовут Кирилл Борисов, я SRE в Ситуационном центре. Я часто видел, как неправильное использование паттернов отказоустойчивости архитектуры или их игнорирование приводит к серьёзным последствиям. Поэтому хочу рассказать, как обеспечить надёжность в условиях, когда может упасть любой микросервис.

Читать далее

Кэширование DNS в NodeJS

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

Команда JavaScript for Devs подготовила перевод статьи о том, как кэширование DNS в NodeJS помогает ускорить работу приложений. На примере инфраструктуры крупного онлайн-сервиса автор показывает, как незаметные на первый взгляд DNS-запросы могут превратиться в узкое место и как простое решение на уровне кода способно повысить стабильность и отклик системы.

Читать далее

Почему языковые модели «галлюцинируют»

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

Команда AI for Devs подготовила перевод статьи OpenAI о природе галлюцинаций языковых моделей. Почему модели уверенно «выдумывают» факты, как это связано с предсказанием следующего слова и почему традиционные метрики только усиливают проблему?

Читать далее

Testcontainers: путь к надежным интеграционным тестам в Spring Boot

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

Мы знаем, что разработка надежных приложений требует тщательного тестирования. Многие программисты и даже целые компании склонны полагаться исключительно на юнит-тесты, считая, что этого достаточно для обеспечения качества их приложений. Однако такой подход часто демонстрирует свои минусы на этапе вывода функционала в тестовый контур, а далее уже в продакшн. Где-то не заполнилось поле, которое должно быть Not Null, где-то не создался Kafka-consumer из-за опечатки в конфиге. Сколько раз такие проблемы возникали в вашей практике и приводили к тому, что нужно срочно делать Pull Request с исправлением очевидной ошибки, испытывая стыд перед коллегами за то, что совершили такую элементарную оплошность? Сколько раз компоненты, прекрасно работающие по отдельности, выбрасывали пачки исключений при совместной работе?

Избежать таких сценариев помогут интеграционные тесты. И сегодня мы поговорим об одном из инструментов интеграционного тестирования – TestContainers.

Читать далее