backendportal | Unsorted

Telegram-канал backendportal - Backend Portal | Программирование

15708

Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь: @devmangx РКН: https://clck.ru/3FobxK

Subscribe to a channel

Backend Portal | Программирование

Подзапросы в SQL сначала могут казаться запутанными, но на деле это просто запросы, которые передают данные другому запросу.

В этой статье Абдулла объясняет, как работают подзапросы и где они используются в SQL.

Разбираются некоррелированные и коррелированные подзапросы, производные столбцы и таблицы, а также операторы IN, ANY, ALL, EXISTS и многое другое.

https://freecodecamp.org/news/how-to-work-with-subqueries-in-sql/

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.

В программе два трека — Go и Java, по три доклада в каждом.

Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк

Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK

А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.

Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.

Читать полностью…

Backend Portal | Программирование

20 Kubernetes-челленджей

Итак, вот 20 вопросов (и ответов):

1. danielepolencic/kubernetes-challenge-1-counting-endpoints-9d9c49dac2aa">Подсчёт endpoints

2. danielepolencic/kubernetes-challenge-2-waiting-for-a-miracle-f8448c864397">Ждём чуда

3. danielepolencic/kubernetes-challenge-3-i-said-stop-3323e74002ca">Я сказал стоп

4. danielepolencic/kubernetes-challenge-4-designing-shared-clusters-dc836f087fb2">Проектирование shared-кластеров

5. danielepolencic/kubernetes-challenge-5-kernel-panic-b5409d3db6e4">Kernel panic

6. danielepolencic/challenge-6-hop-little-bunny-b0748c3cd907">Прыгай, кролик

7. danielepolencic/kubernetes-challenge-7-how-many-is-too-many-217cbc2c2b63">Сколько — это слишком много

8. danielepolencic/kubernetes-challenge-8-keeping-the-lights-on-bb2826dba28b">Держим свет включённым

9. danielepolencic/kubernetes-challenge-9-greedy-etcd-ba0e395cac8a">Прожорливый etcd

10. danielepolencic/challenge-10-multiplying-pods-ebd2a65e0ac9">Умножение pod’ов

11. danielepolencic/kubernetes-challenge-11-going-indie-0a91d244b17f">В одиночку

12. danielepolencic/challenge-12-rollin-28abe367e76b">Rollin’

13. danielepolencic/challenge-13-all-you-can-eat-c93045d17388">All you can eat

14. danielepolencic/challenge-14-bounce-2ba683214e7b">Bounce

15. danielepolencic/challenge-15-down-the-rabbit-hole-d1d16121a835">В кроличью нору

16. danielepolencic/challenge-16-throttled-93133f8fd0ad">Throttled

17. danielepolencic/challenge-17-sticky-mess-7f7f00be2636">Липкий бардак

18. danielepolencic/challenge-18-dead-or-alive-16357e0b874e">Жив или мёртв

19. danielepolencic/challenge-19-tied-up-dc16a3786218">Связанный по рукам

20. danielepolencic/challenge-20-one-to-bind-them-all-ca83406d0296">Один, чтобы связать их всех


Вы можете использовать эти задания, чтобы прокачать свои знания, как (очень сложные) вопросы на собеседованиях или чтобы подготовиться к интервью

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Разработчику стоит знать основные концепции системного дизайна.

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

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

https://freecodecamp.org/news/learn-system-design-principles/

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

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

Огромный открытый гайд со всем, что нужно для старта и дальнейшего изучения self-hosting:

Docker, Kubernetes, базы данных, LLM, сети, Raspberry Pi, Home Assistant, безопасность, программирование и ещё куча всего.

Если давно хотели научиться запускать собственный софт вместо того, чтобы зависеть от SaaS-сервисов, это точно стоит сохранить.

Источник: github.com/mikeroyal/Self-Hosting-Guide

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Импортируете CSV в Postgres? Используйте COPY или \copy.

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

Что важно знать:

FORMAT csv
Включает стандартный разбор CSV: запятые, поля в кавычках и экранированные кавычки.

Список целевых столбцов
Порядок столбцов в CSV редко совпадает с таблицей. Всегда указывайте целевые столбцы в том порядке, в котором они идут в файле. Postgres сопоставляет их по позиции, а не по имени из заголовка CSV.

HEADER / HEADER n
Пропускает строки заголовка. Обычный HEADER пропускает первую строку. Ожидается, что Postgres 19 позволит передавать число, например HEADER 2, чтобы пропускать несколько начальных строк.

DEFAULT 'string'
Позволяет сопоставить специальную строку в CSV, например '__DEFAULT__', с выражением DEFAULT соответствующего столбца.

Неуказанные столбцы
Столбцы таблицы, которые не указаны в списке целевых столбцов, автоматически получают DEFAULT или NULL.

Лишние столбцы в CSV
Postgres выдаст ошибку, если в CSV больше полей, чем указано целевых столбцов. Обрежьте файл или сначала загрузите данные в более широкую промежуточную таблицу.

NULL-значения
В формате csv стандартным представлением NULL является пустая строка без кавычек. Это можно изменить через NULL 'string'.

Обработка ошибок через ON_ERROR и REJECT_LIMIT
Исторически COPY останавливался на первой ошибке преобразования. В новых версиях появились:

ON_ERROR ignore в Postgres 17 — пропускает некорректные строки и сообщает их количество
REJECT_LIMIT n в Postgres 18 — задаёт максимальное число плохих строк при ON_ERROR ignore, после которого импорт будет остановлен
ON_ERROR set_null в Postgres 19 — заменяет некорректное поле на NULL вместо того, чтобы отбрасывать всю строку

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют

По данным Минфин 32% граждан покинули своё место работы, поскольку в среднем уже в первый месяц тут можно зарабатывать от 140 000 рублей, а через 2-3 месяца с легкостью выйти на семизначные числа.

Самое смешное, что лишь 8% россиян что-то слышали об этой профессии, хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют

Там объясняют, как имея телефон и доступ в интернет, заработать свои первые $2000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!

Быстрее вступайте, пока это бесплатно — /channel/+yFtPq4VlI-k0OWEy

Читать полностью…

Backend Portal | Программирование

PostgreSQL: архитектура и тюнинг SQL-запросов

Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.

🌐 В программе курса:

🤩 Разберём, как работают СУБД вообще и PostgreSQL в частности: что такое MVCC, ACID, WAL, LRU, PPC/TPC и другие фундаментальные понятия архитектуры баз данных

🤩 Получишь теорию и практику EXPLAIN и EXPLAIN ANALYZE на разных типа запросов: без индексов, с индексами, index only, нормализованные и документ-ориентированные данные и json-поля, изменение параметров сессии/конфигурации для ускорения запросов

🤩 Изучишь архитектуру хранения данных в PostgreSQL, типы и особенности индексов, а также полезные советы и трюки оптимизации БД

🤩 Получишь свой собственный выделенный облачный PostgreSQL-сервер (8 vCPU, 12G RAM, 100G NVMe) – предоставляется БЕСПЛАТНО на время обучения + готовый e-commerce датасет TPC-H (миллион пользователей, несколько миллионов заказов на десятки гигабайт)

🗓 Старт курса: 3 сентября. 5 недель обучения.

BackendPortal">Изучить программу и записаться можно здесь.

🤩Кто мы: R&D-центр Devhands, автор курса Николай Ихалайнен, эксперт по СУБД (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquuHE37

Читать полностью…

Backend Portal | Программирование

Microsoft открыла исходный код одного из лучших из своих инструментов для анализа данных с помощью ИИ.

Он называется Data Formulator.

Подключите любой источник — CSV, Postgres, BigQuery или даже URL с актуальными данными, а затем создавайте графики с помощью сочетания перетаскивания и обычного языка.

ИИ-агент сам пишет SQL и выполняет преобразования, а затем выдаёт график, который можно редактировать.

Можно перетаскивать поля на X/Y/Color, закреплять очищенный результат, чтобы последующие запросы не возвращались к исходным данным, создавать ответвления от любого графика для изучения других вариантов и подключать актуальные данные с автоматическим обновлением.

Используйте ключ своей модели, и всё будет работать локально.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

11 принципов разработки ПО, которые стоило понять гораздо раньше.

1. SOLID — более качественное объектно-ориентированное проектирование
2. DRY — не повторяйся
3. KISS — не усложняй
4. YAGNI — не реализуй то, что пока не нужно
5. SRP — одна ответственность
6. Open/Closed — расширяй, не ломая существующее
7. Dependency Inversion — уменьшай связанность
8. Composition — собирай систему из гибких компонентов
9. Separation of Concerns — разделяй ответственность между частями системы
10. Fail Fast — обнаруживай проблемы как можно раньше
11. Measure First — оптимизируй только то, что действительно имеет значение

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Летняя уборка в базе данных. Теперь пора посмотреть на сами запросы.

pg_stat_statements отслеживает форму запросов, количество вызовов и время выполнения по всей базе. Это самый короткий путь от «база почему-то тормозит» до «вот эти пять запросов съедают большую часть времени».

Включаем pg_stat_statements

Если вы используете Crunchy Bridge, расширение уже доступно по умолчанию и можно сразу переходить к CREATE EXTENSION.

При самостоятельном размещении нужно изменить postgresql.conf и перезапустить PostgreSQL

shared_preload_libraries = 'pg_stat_statements, ...'
pg_stat_statements.track = top


Можно указать top или all. Режим all также учитывает запросы внутри функций и процедур. top используется по умолчанию и отслеживает только запросы, выполняемые клиентами.

Затем включаем расширение для нужной базы

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;


Ищем дорогие запросы

Для такой проверки обычно полезнее смотреть на суммарное время выполнения. Запрос средней тяжести, который вызывается миллионы раз, часто наносит больше вреда, чем один редкий медленный запрос.

SELECT
round(total_exec_time::numeric, 1) AS total_ms,
calls,
round(mean_exec_time::numeric, 2) AS mean_ms,
rows,
query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;


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

Что означают столбцы

calls — сколько раз запрос выполнялся с момента последнего сброса статистики
total_exec_time и mean_exec_time — суммарное и среднее время выполнения в миллисекундах
rows — общее количество полученных или изменённых строк
query — нормализованный запрос с параметрами вида $1

Статистика копится до ручного сброса

SELECT pg_stat_statements_reset();


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

Что делать с найденными запросами

1. Запустить EXPLAIN с реальными параметрами. pg_stat_statements показывает форму запроса, но не план выполнения.
2. Проверить недостающие индексы, сбросы на диск из-за work_mem и слишком большое количество мелких запросов приложения вроде N+1.
3. После деплоя или добавления индекса сбросить статистику, дать системе поработать под реальной нагрузкой и проверить, уменьшилось ли суммарное время выполнения.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Переименование поля в API изнутри кажется безобидным. Снаружи оно может положить каждый дашборд, который рассчитывал на старое имя.

Любое изменение API попадает в одну из двух категорий, и от этого зависит всё.

Если изменение ломающее, нужно поднимать версию: удаление или переименование полей, добавление обязательных параметров или фундаментальное изменение поведения эндпоинта.

Безопасные изменения можно выпускать без новой версии: добавлять необязательные поля, новые эндпоинты или просто ускорять работу.

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

Несколько простых правил помогают держать баланс:

— Показывайте версию явно, например /v1/ в URL, как это делают Stripe и GitHub.
— Используйте семантическое версионирование, чтобы смена мажорной версии сразу означала необходимость изменений в клиентском коде.
— Если версия выводится из эксплуатации, говорите об этом прямо в ответе через заголовок Sunset и давайте 6–12 месяцев на миграцию.

Версия API — это обещание о том, что не изменится.

Нарушать его нужно редко и громко. Никогда — молча.

Какую ошибку вы встречали чаще?

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Ещё один отличный плейлист по структурам данных и алгоритмам от pmavrin.

https://youtube.com/playlist?list=PLrS21S1jm43igE57Ye_edwds_iL7ZOAG4&si=4mS5lXn3uxI-V2LM

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

97% инженеров Google заявили, что довольны своим инструментом для ревью кода.

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

В Google всё устроено иначе. Там ревью — часть самого процесса написания кода.

Компания изучила собственный процесс на выборке из 9 млн проверенных изменений. И вот что особенно интересно.

Медианный размер изменения — всего 24 строки. Более 10% изменений вообще затрагивают одну строку.

70% изменений попадают в основную ветку в течение 24 часов после отправки на ревью.

Медианное время полного ревью — меньше 4 часов.

Для сравнения: у AMD этот показатель составляет 17,5 часа, у Chrome OS — 15,7 часа. В исследованиях Microsoft фигурируют значения от 14,7 до 24 часов.

Небольшие изменения получают первый комментарий меньше чем за час. Очень большие — примерно через 5 часов.

Разработчик в среднем тратит на ревью 3,2 часа в неделю. Большинство изменений отправляются одному ревьюеру.

И главная причина такой скорости — размер изменений.

Разницу на 24 строки легко держать в голове. Разницу на 900 строк — уже нет.

Внутренний инструмент Google называется Critique. Он убирает большую часть рутины.

Статический анализ запускается ещё до отправки изменения. Система показывает, чья сейчас очередь действовать. Ревьюер может предложить исправление, а автор применяет его одним кликом.

Но сильнее любой функции на культуру влияет одно правило.

Ревьюер не может просто отклонить изменение и оставить всё как есть. Любая негативная обратная связь должна указывать на конкретную вещь, которую нужно исправить.

Кроме того, каждое изменение должен одобрить ещё хотя бы один человек. То есть код всегда видят минимум двое.

В книге Software Engineering at Google это сформулировано очень просто:

«Доверие и коммуникация — основа процесса ревью кода».

Однажды в нашей команде я видел огромный PR с изменениями в 2000 файлов. Его так и не смержили. Возможно, он открыт до сих пор.

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

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Поздравляем, вы на 1 шаг ближе к работе мечты 🥳

Осталось только прочитать этот пост, подписаться на канал и откликнуться на вакансию 😉

Avito Career* — место, где Авито делится актуальными вакансиями и стажировками для бэкенд-разработчиков.

Подписывайтесь, чтобы найти ту самую работу ✨

*карьера

Читать полностью…

Backend Portal | Программирование

Shell Gym – интерактивный тренажёр командной строки Linux, созданный на основе многолетнего опыта преподавания. По сути, автор выделил ядро iximiuz Labs и превратил его в отдельный демон.

https://github.com/iximiuz/shellgym

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

С Lazydocker работать с Docker становится заметно проще

Lazydocker – это опенсорс TUI для управления Docker и Docker Compose прямо из терминала.

В одном интерфейсе можно смотреть контейнеры, сервисы, логи и метрики, а также перезапускать, удалять и пересобирать контейнеры или подключаться к ним, без постоянного ввода Docker-команд.

github.com/jesseduffield/lazydocker

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Репозиторий TypeScript больше не на JavaScript. Теперь он на Go.

TypeScript 7 только что влили в основную ветку.

✓ Нативный компилятор — до 10 раз быстрее
✓ Значительная часть JavaScript-кода уходит в прошлое

Конец одной эпохи. И начало другой:

https://github.com/microsoft/TypeScript/pull/63763

Читать полностью…

Backend Portal | Программирование

Этот репозиторий на GitHub собрал больше 1000 бесплатных публичных API практически на любой случай.

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

Полезная штука, если нужен готовый API для пет-проекта, прототипа или тестирования идеи.

https://github.com/public-apis/public-apis

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Бенчмарки – оружие массового заблуждения?

E2E-бенчмарк может показать впечатляющие цифры, но при этом тестовые сценарии расходятся с реальностью. Что с этим делать расскажет Антон Курако на JVM Day от Т-Банка – конференции для Java-, Scala- и Kotlin-разработчиков, архитекторов и тимлидов. Спикер объяснит, где заканчивается полезное измерение и начинается погоня за красивыми показателями, а также как проверять производительность так, чтобы не стать жертвой собственного графика.

Еще в программе – доклад Сергея Петрелевича о Mechanical Sympathy. На примере Spring Boot MVC он покажет, как такой подход помогает добиться большей скорости с помощью простых решений и готовых библиотек. Александр Ланцов разберет разные модели конкурентного программирования после появления Virtual Threads, а Андрей Кулешов поделится последними новостями из мира JVM-языков.

После деловой программы начнется афтепати с играми, ИТ-квизом и диджей-сетом на виниле. Количество мест на ивент ограничено, поэтому есть смысл зарегистрироваться заранее. Пишите, если пойдете, в комментах: тем, кто тоже собирается на JVM Day, будет проще вас найти и организовать совместный поход.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Linux 101: Практика по управлению хранилищами

Отработайте основы управления хранилищами в Linux на серии практических заданий – от монтирования существующих файловых систем до разметки дисков и автоматизации их подготовки:

- Смонтировать диск с уже существующими данными и прочитать его содержимое
https://labs.iximiuz.com/challenges/storage-simple-mount

- Создать файловую систему ext4 на неформатированном диске
https://labs.iximiuz.com/challenges/storage-simple-format

- Создать таблицу разделов GUID Partition Table (GPT) на пустом диске
https://labs.iximiuz.com/challenges/storage-simple-partition-table

- Разбить диск на несколько разделов и отформатировать их в ext4 и Btrfs
https://labs.iximiuz.com/challenges/storage-partition-drive

- Смонтировать существующую директорию по новому пути с помощью bind mount
https://labs.iximiuz.com/challenges/storage-bind-mount

- Настроить постоянное монтирование файловой системы, чтобы оно сохранялось после перезагрузки
https://labs.iximiuz.com/challenges/storage-persistent-mount

- Автоматизировать подготовку диска с помощью shell-скрипта
https://labs.iximiuz.com/challenges/storage-provision-drive-script


👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Илон теперь взялся за Microsoft!!

Cursor планирует убить GitHub.

Вчера GitHub не работал семь с половиной часов. Сайт, Actions, Copilot, слияние кода — всё лежало. О сбое сообщили 15 000 разработчиков.

Технический директор GitHub признал, что они закладывали запас мощностей в 10 раз, а в итоге поняли, что нужен запас в 30 раз. Теперь GitHub арендует серверы у AWS — крупнейшего облачного конкурента Microsoft.

И в тот же день Cursor запустил Origin.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

На одном собеседовании по системному дизайну я использовал Kafka.
На другом — Redis.
На ещё одном — S3.
На ВСЕХ собеседованиях по системному дизайну я использовал базы данных.

Базы данных — основа любой архитектуры независимо от масштаба, стека или предметной области.

Если вы понимаете, как данные хранятся, запрашиваются, индексируются, реплицируются и партиционируются, то вы уже понимаете 70% системного дизайна.

Не отвлекайтесь на каждый новый модный компонент. Очереди, кэши и оркестраторы приходят и уходят.

А базы данных остаются.

Реляционные, NoSQL, временные ряды, векторные базы — подходы меняются, но принципы остаются теми же:

- пути чтения и записи
- индексация и кэширование
- транзакции и изоляция
- репликация и партиционирование

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

Изучайте базы данных глубоко.

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

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Клиент доволен. Осталось только перейти к оплате ✅

Для разработчика это не должно превращаться в очередную задачу.

Обменник by Ali помогает принимать оплату от зарубежных клиентов через понятный сценарий в Telegram.

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

🌎 Сервис помогает и с оплатой зарубежных рабочих инструментов: ChatGPT, Claude, GitHub, Cursor, облачных сервисов, доменов, хостингов, подписок и других нужных покупок.

🙅🏻‍♂️Не нужно каждый раз искать новый способ и разбираться с оплатой самостоятельно.

💰Наш сервис: /channel/exchanger_ali_bot?start=ABC4DC15

Посмотрите отзывы в нашем Telegram-канале.

Подробнее о сервисе — на сайте.

Остались вопросы? Ответ даст наш умный бот

Читать полностью…

Backend Portal | Программирование

Competitive Programmer’s Handbook — руководство по спортивному программированию.

Книга рассчитана на студентов, которые хотят изучить алгоритмы и, возможно, готовиться к Международной олимпиаде по информатике IOI или Международному студенческому чемпионату по программированию ICPC.

PDF доступен бесплатно.

https://cses.fi/book/book.pdf

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Никто не хочет весь день смотреть в панели мониторинга PostgreSQL. Поэтому чувак сделал бота, который делает это за вас.

Он находит, что работает не так, объясняет, что изменилось, и говорит, что нужно исправить в первую очередь.

Метрики — это данные. pgbot даёт вам ответы.

pgbot умеет следить за состоянием PostgreSQL, анализировать производительность запросов, находить медленные запросы и регрессии, разбирать блокировки и блокирующие запросы, анализировать таблицы и индексы, показывать работу VACUUM и autovacuum, отслеживать рост базы данных, находить первопричины проблем с помощью ИИ и давать рекомендации.

Подключаться можно напрямую к базе или через агента с приватным доступом.

Бесплатный, с открытым исходным кодом и написан на Go.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Переписывание Postgres на Rust завершено.

Заявляется полное воспроизведение поведения Postgres один в один: все тесты проходят, совместимость сохранена, система готова к использованию в production.

Если это действительно так, то звучит безумно: один из самых важных проектов в мире баз данных фактически воспроизвели на Rust.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

«Современные микропроцессоры: руководство на 90 минут».

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

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

https://lighterra.com/papers/modernmicroprocessors/

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

90% PostgreSQL в 2026 году сводится к этим 10 вещам. Всё остальное — в основном споры об расширениях.

1. MVCC + VACUUM
Обновления создают мёртвые строки. Если autovacuum настроен плохо, таблицы и индексы раздуваются, а задержки постепенно растут неделями.

2. Индексы под реальные сценарии запросов
Порядок колонок в составных индексах важен. Нужно понимать частичные и покрывающие индексы, а также почему ORM иногда незаметно приводит к полному сканированию таблицы.

3. Блокировки и DDL
ALTER TABLE может заблокировать запись. Важно понимать режимы блокировок, очереди и безопасные приёмы вроде CREATE INDEX CONCURRENTLY и обновления данных небольшими партиями.

4. Уровни изоляции и аномалии
Read Committed, Repeatable Read, Serializable. Пропавшие или дублирующиеся строки часто нужно разбирать через конкурентные транзакции, а не искать проблему только в коде.

5. Управление соединениями
Слишком много соединений убивает CPU и память. Нужны PgBouncer, адекватные размеры пулов и контроль долгих транзакций в состоянии idle in transaction.

6. WAL, checkpoints и репликация
Объём WAL напрямую влияет на ввод-вывод. Плохие настройки checkpoints вызывают скачки задержек, а отставание реплик ломает чтение с реплик и делает переключение при сбое рискованным.

7. Основы планировщика запросов
EXPLAIN (ANALYZE, BUFFERS) — ваш отладчик. Нужно понимать оценки количества строк, типы JOIN и когда требуется ANALYZE или расширенная статистика.

8. Наблюдаемость, привязанная к реальным сбоям
Следите за p95 задержкой, ожиданием блокировок, временными файлами, попаданиями в кэш, отставанием autovacuum и реплик. Добавьте журнал медленных запросов с нормальными порогами.

9. Резервные копии и проверка восстановления
Базовые бэкапы плюс архивирование WAL — минимум. Главная ошибка — никогда не проверять восстановление и уже во время аварии выяснить, что не хватает ролей, расширений или восстановление занимает слишком долго.

10. Безопасность и права
Минимально необходимые права, отдельные владельцы объектов, никакого superuser у приложения, регулярная смена учётных данных, ограничение сетевого доступа и закрытая на запись схема public в production.

👉 @BackendPortal

Читать полностью…

Backend Portal | Программирование

Я ожидаю, что «джавафикация» экосистемы Go продолжится с появлением обобщённых методов в Go 1.27.

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

👉 @BackendPortal

Читать полностью…
Subscribe to a channel