backendportal | Неотсортированное

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

15708

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

Подписаться на канал

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

Docker 101: запуск контейнеров в фоновом режиме, чтение логов и повторное подключение

Практическое задание для отработки навыков:

> Запустить контейнер в фоновом режиме
> Получить доступ к логам контейнера
> Повторно подключиться к контейнеру, запущенному в фоне

Сможешь справиться? 😂

👉 @BackendPortal

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

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

Годный сервис для быстрого тест-драйва Linux-дистров прямо в браузереDistrosea

За пару кликов можно глянуть на интерфейсы и пощупать терминал более чем 70 дистрибутивов с разными DE

Удобный способ протестить перед установкой ✌️

👉 @BackendPortal

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

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

В чём разница между аутентификацией на сессиях и JWT?

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

Большинство веб-приложений выбирают один из двух подходов к авторизации: сессии (состояние хранится на сервере) или JWT (состояние передаётся вместе с клиентом).

1. Аутентификация на основе сессий

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

Почему стоит выбрать сессии:

🔹Мгновенная аннуляция доступа (например, «выйти из всех устройств») — это просто удаление строки из Redis или SQL.
🔹Секреты никогда не покидают бэкенд → ниже риск утечки.
🔹Подходит для малых и средних систем, где общий кэш не становится узким местом.

Но будь осторожен: при горизонтальном масштабировании понадобятся sticky-сессии или реплицируемый кэш, что может увеличить задержки и усложнить инфраструктуру.

2. Аутентификация через JWT

После входа сервер подписывает JSON Web Token, содержащий:

> заголовок (alg, typ)
> полезную нагрузку (sub, role, и др.)
> подпись

JWT — это base64-кодированный, но не зашифрованный токен: любой может прочитать payload, но только владелец секрета может подделать подпись. Сервер не хранит состояние: любая нода может локально проверить подпись и доверять токену.

Почему можно выбрать JWT:

🔸каждый микросервис или edge-нода может верифицировать токен без общей базы или кэша.
🔸Отлично работает с SPA и мобильными приложениями, которые делают прямые запросы к множеству бэкендов.
🔸удобно передаётся в Authorization-заголовке или cookie.

Однако после выдачи JWT остаётся валидным до истечения срока — его нельзя отозвать без дополнительной инфраструктуры. Это усложняет блокировку аккаунта или экстренный выход.

Вывод:

Если для вас важна возможность немедленно отзывать доступ — используйте сессии.

Если приоритет масштабирование без состояния — используйте подписанные JWT, но учитывайте, что отозвать их нельзя. ✌️

👉 @BackendPortal

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

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

Переинжиниринг это как прикрутить ракетные ускорители к велосипеду.

Звучит круто. Бесполезно на практике. И скорее всего — приведёт к аварии.

– Тебе не нужны микросервисы для обычного CRUD-приложения.
– Тебе не нужны event-driven пайплайны ради формы обратной связи.
– Тебе не нужно 12 слоёв абстракции, чтобы вывести “Hello, world”.

Решай ту проблему, которая есть, а не ту, которой хочешь впечатлить.

Простое — масштабируется. Сложное — ломается. 🤵

👉 @BackendPortal

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

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

VK Weekend Offer: отправьте заявку, пройдите интервью и получите офер!

28–29 июня VK проведёт Weekend Offer для бэкендеров с опытом от трёх лет. Участников со знанием Java, Go, Python или C++ ждут технические собеседования, знакомство с продуктами и, если всё сложится, офер уже в конце выходных.

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

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

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

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

Знаете ли вы, что можно запускать удалённые виртуальные машины (или даже мини-сети из ВМ) прямо из CLI так просто?

Каждое окружение запускается всего за несколько секунд и полностью бесплатно в течение одного часа в день (а платный тариф тоже довольно доступен).

Тестируйте свой следующий MCP, агент, контейнер и т.д. в безопасной и изолированной среде - https://github.com/iximiuz/labctl 🥰

👉 @BackendPortal

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

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

Концепции моделирования данных, которые должен знать каждый разработчик

1. Сущность — Объект реального мира или концепт, о котором вы хотите хранить данные (например, пользователь, заказ).

2. Атрибут — Свойство или поле сущности (например, имя, email, цена).

3. Первичный ключ — Уникальный идентификатор для каждой строки в таблице (например, user_id).

4. Внешний ключ — Ссылка на первичный ключ в другой таблице; используется для связывания сущностей.

5. Связь "один к одному" — Каждая строка в одной таблице связана с одной строкой в другой.

6. Связь "один ко многим" — Одна строка в таблице связана с несколькими строками в другой (например, пользователь → посты).

7. Связь "многие ко многим" — Несколько строк в одной таблице связаны с несколькими строками в другой (требуется таблица-связка).

8. Нормализация — Организация данных с целью уменьшения дублирования и повышения целостности.

9. Денормализация — Добавление избыточных (дублированных) данных для повышения скорости чтения.

10. Первая нормальная форма (1NF) — Устранение повторяющихся групп; каждая ячейка содержит атомарное значение.

11. Вторая нормальная форма (2NF) — Устранение частичных зависимостей от составного ключа.

12. Третья нормальная форма (3NF) — Устранение транзитивных зависимостей (неключевые столбцы не зависят от других неключевых столбцов).

13. Суррогатный ключ — Системно-сгенерированный идентификатор (например, UUID или auto-increment ID).

14. Естественный ключ — Уникальный идентификатор из реального мира (например, email или номер паспорта).

15. Составной ключ — Первичный ключ, состоящий из нескольких столбцов.

16. Уникальное ограничение — Обеспечивает уникальность значений в столбце (или группе столбцов).

17. Допустимость NULL — Возможность хранить в столбце NULL (т.е. отсутствие значения).

18. Ограничение по значению — Проверяет значения в столбце на соответствие условиям (например, age > 0).

19. Индекс — Повышает производительность поиска за счёт ускоренного доступа к данным.

20. Схема — Структура/определение таблиц, полей, типов и связей в базе данных.

21. ERD (диаграмма "сущность-связь") — Визуальное представление сущностей и их связей.

22. Кардинальность — Количество строк, которое может быть связано в рамках связи.

23. Тип данных — Определяет, какие значения может хранить столбец (например, INT, VARCHAR, DATE).

24. Перечисление — Поле, значение которого ограничено предопределённым набором (например, status = [pending, complete]).

25. Мягкое удаление — Пометка записи как удалённой без фактического удаления (например, deleted_at).

|👉 @BackendPortal

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

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

🌐 WAICORE — хостинг, за который не надо переживать

Устали от лагов, сложных панелей и переплат? Переходите на VPS с AMD Ryzen 9 — быстро, просто, без нервов.

💬 Почему клиенты выбирают нас:
— Цена начинается от 2€
— Скорость канала до 10 Гбит/с
— Поддержка 24/7 — отвечаем быстро и без шаблонов

Приятный бонус: Бесплатный VPN — расширение для браузера в подарок каждому нашему юзеру

VPN | Расширение для браузера

📍 Локации: Германия (Франкфурт), Москва, Нидерланды (уже скоро) — стабильный пинг, DDoS-защита.

🔥 Успейте сегодня
Выбрать сервер | 💬 Наш канал

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

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

Жизнь слишком коротка для неправильных ответов от API.

Вот 14 типичных ошибок при работе с HTTP, которые я до сих пор вижу в 2025 году:

🔸Возврат 200 OK, даже если запрос фактически завершился с ошибкой

🔸Неиспользование 202 Accepted для асинхронных операций

🔸Применение 500 Internal Server Error для любой неизвестной ошибки

🔸Игнорирование 429 Too Many Requests при превышении лимитов

🔸Пропуск 422 Unprocessable Entity для ошибок валидации

🔸Неиспользование 304 Not Modified для кэшированных ответов

🔸Возврат 200 OK при успешном DELETE (следует использовать 204 No Content)

🔸Отправка 201 Created без заголовка Location

🔸Использование 500 для обозначения устаревшего API (следует 410 Gone)

🔸Возврат 403 Forbidden при отсутствии авторизации (нужно 401 Unauthorized)

🔸Пропуск 409 Conflict при наличии дубликатов ресурса

🔸Возврат 404 Not Found для неподдерживаемого метода (должно быть 405 Method Not Allowed)

🔸Отсутствие 415 Unsupported Media Type при неправильном Content-Type

🔸Неуказание Retry-After при ответах 429 или 503

Статусы ответов — это не просто технические детали. Это часть контракта с пользователем.

> Они направляют клиента
> Передают намерение
> Формируют доверие

Перестаньте воспринимать их как второстепенные — они часть дизайна. 😨

👉 @BackendPortal

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

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

Создание гибкого движка шаблонов в Go

Стандартный пакет html/template в Go предоставляет метод ParseGlob, но он поддерживает только один glob-шаблон.
Если ваши шаблоны разбросаны по нескольким директориям — придётся объединять их вручную.

Вот как можно реализовать простой NewEngine(), который принимает несколько шаблонных паттернов и загружает их в один экземпляр *template.Template

👉 @BackendPortal

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

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

Можно изучать системное проектирование, ожидая свой кофе.

Серьёзно. Кофейня это живая демонстрация распределённых систем:

Кассир = API-шлюз (API Gateway)
Заказы = Очередь сообщений (Message Queue)
Бариста = Потребители событий (Event-Driven Consumers)
Кофемашина = Общий ресурс (Shared Resource)
Готово! = Push-уведомление (Push Notification)

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

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

Рауль Дж. разложил всё по шагам, с визуализациями, компромиссами и уроками из практики. 🤵

👉 @BackendPortal

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

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

Как работает Apache Spark от начала до конца

1 - Вы пишете код Spark с использованием API на Scala, Python (PySpark), Java или SQL, например:

df = spark.read.csv("file.csv").filter("age > 30").groupBy("city").count()


2 - Spark преобразует это в логический план — абстрактное представление того, что должен сделать запрос (но пока не как).

3 - Затем он оптимизирует логический план с помощью оптимизатора Catalyst, который:

> Упрощает выражения
> Переупорядочивает фильтры и проекции
> Удаляет ненужные колонки
> Проталкивает операции ближе к источникам данных, если возможно

4 - Логический план преобразуется в физический план — разбивается на стадии (stages) и задачи (tasks) с конкретными стратегиями исполнения.

5 - План выполняется на Spark-кластере, в котором есть:

> Driver — главный процесс, управляющий кодом и джобом
> Executors — воркеры JVM, исполняющие задачи над данными

6 - Spark разбивает данные на партиции и распределяет задачи между executors в параллельном режиме.

7 - Каждый executor читает свою часть данных, обрабатывает их в памяти через RDD или DataFrame, и передаёт результат на следующий этап, если нужно.

8 - Spark использует DAG (направленный ациклический граф) для управления потоком трансформаций и действий между стадиями.

9 - Некоторые операции (например, map, filter) — узкие зависимости (без shuffle), другие (например, groupBy, join) — широкие зависимости и требуют shuffle, то есть пересылки данных между executors.

10 - Spark старается держать данные в памяти ради скорости, но при нехватке памяти может использовать диск.

11 - После завершения всех стадий driver собирает итоговый результат (или записывает в хранилище: S3, HDFS и т.д.).

12 - После завершения задачи Spark отключает executors.

👉 @BackendPortal

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

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

Как работает движок регулярных выражений

1. Вы пишете шаблон, например: ^a\d{3}b$

• (Начинается с a, затем 3 цифры, затем b, конец строки.)

2. Движок регулярных выражений разбирает шаблон в абстрактное синтаксическое дерево (AST) — каждый символ, квантификатор и группа становятся узлами.

3. Это AST компилируется в конечный автомат, обычно:

a. NFA (недетерминированный конечный автомат) — используется для движков с бэктрекингом (например, Python, JavaScript)

b. DFA (детерминированный конечный автомат) — используется для высокопроизводительных движков (например, RE2, Rust)

4. Движок начинает проход по входной строке с начала.

5. Он пытается сопоставить символы с автоматом, следуя:

a. Литералы (например, a, b)
b. Классы символов (\d, \w, [a-z])
c. Квантификаторы (+, *, {3} и т.д.)
d. Якоря (^, $)
e. Группы и альтернации ([abc|def])

6. Если движок использует бэктрекинг (как большинство языков):

a. Он пробует все возможные пути при неудаче сопоставления.

b. Это может вызывать проблемы с производительностью при сложных или неоднозначных шаблонах (например, катастрофический бэктрекинг).

7. Если полное совпадение найдено → возвращает успех.

• Если нет подходящего пути → возвращает неудачу.

8. Для групп захвата сохраняет начальные/конечные индексы и извлекает совпадающие подстроки.

9. После завершения возвращает:

• Булево значение (совпадение или нет)
• Объект совпадения (с захваченными группами, позициями, индексами)

👉 @BackendPortal

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

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

🔥 Интересный кейс от Яндекс Маркета по внедрению ML в продакшен

Руководитель службы ML Яндекс Маркета, Саша Воронцов, рассказал о том, как они заменили legacy-систему формализации характеристик товаров на YandexGPT. Раньше они работали с «Формализатором» — эффективным, но громоздким инструментом, требовавшим тонны ресурсов и ручной поддержки, а теперь поручили всё нейросети.

В статье вы найдёте:

- Реальную история миграции с legacy-решения на ML-модель
- Детальный разбор разных подходов к обучению
- Конкретные метрики
- Практические сложности и их решения

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

Читать статью здесь

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

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

Использование dbx в Go для чистых и гибких SQL-запросов

Если вам нужен лёгкий и гибкий конструктор запросов в Go без глубокой зависимости от магии ORM, dbx — отличный выбор. Он позволяет писать SQL-подобные запросы с привязкой параметров, сохраняя полный контроль.

👉 @BackendPortal

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

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

Как хеширование работает внутри

1. Вы начинаете с некоторого ввода, например "hello123".

2. Этот ввод сначала преобразуется в двоичный формат, поскольку хеш-функции работают только с битами (0 и 1).

3. Алгоритм должен обрабатывать данные фиксированными блоками (в данном случае по 512 бит), поэтому сообщение дополняется (padding), чтобы соответствовать размеру блока.

Дополнение включает:

> добавление одного бита 1, затем набора 0
> затем добавляется длина исходного сообщения (в двоичном виде)

4. После дополнения сообщение разбивается на блоки, и каждый блок обрабатывается хеш-функцией.

5. SHA-256 использует 8 предопределённых начальных значений (можно представить как 8 чаш, в которых будет происходить смешивание).

6. Также используется 64 предопределённых "константы" (представьте их как жёстко зашитые значения или "магические числа", которые алгоритм использует для перемешивания данных — аналогично фиксированным сольям в безопасных функциях).

7. Для каждого 512-битного блока:

i. Из этого блока готовятся 64 маленьких фрагмента (называемых словами).

ii. Эти фрагменты смешиваются с константами при помощи:


1. Побитовых сдвигов

2. Ротаций

3. Операций AND, OR, XOR

4. Модульного сложения (добавление с переполнением, которое оборачивается)


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

9. После 64 раундов значения в 8 чашах (начальные значения) обновляются с учётом нового перемешанного результата.

10. Когда все блоки обработаны, финальные значения в чашах объединяются в 256-битный результат — это и есть ваш SHA-256 хеш.

Что особенного в результате?

🔸Фиксированный размер: Независимо от длины входных данных, результат всегда 256 бит (или 64 шестнадцатеричных символа).

🔸Односторонность: Нельзя восстановить исходное сообщение из хеша — это математически сложно.

🔸Малейшее изменение = полностью другой результат: например, изменение "hello123" на "hello124" полностью изменит хеш.

Почему MD5 и SHA-1 устарели

🔸Раньше они были популярны, но теперь их можно взломать, создав разные входы с одинаковым хешем (так называемые коллизии).

🔸Поэтому сейчас используют SHA-256 или более стойкие алгоритмы. Для хеширования паролей ещё лучше использовать bcrypt или Argon2.

👉 @BackendPortal

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

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

Как получить образование бесплатно с дальнейшим трудоустройством.

МТС и НИУ ВШЭ открывают набор на второй поток магистратуры по искусственному интеллекту. Подача документов стартует 20 июня. Еще можно успеть оказаться в числе 30 счастливчиков, которые получат знания бесплатно.

Что внутри:
🔸 70% курсов ведут специалисты МТС Web Services и MWS AI — никакой оторванной от жизни теории;
🔸 Реальные кейсы вместо синтетических задачек из учебника;
🔸 Доступ к GPU-ресурсам MWS Cloud для ваших проектов;
🔸 Офферы на стажировку и трудоустройство прямо во время учебы.

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

Диплом топового вуза + реальный опыт = идеальное комбо для старта в ИИ.

👉 @BackendPortal

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

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

📚 Продвинутые методы архивации: LZ77/78

Приглашаем на открытый урок.

🗓 25 июня в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Алгоритмы и структуры данных».

✔️ На этом вебинаре мы завершим создание архиватора, добавив алгоритм LZ77/78. Разберем принцип словарного сжатия, механизм поиска повторяющихся последовательностей и формат их кодирования. 

✔️ Имплементируем выбранный алгоритм и проведем финальное сравнение всех трех методов сжатия (RLE, Huffman, LZ77/78). Определим, какие алгоритмы лучше работают для различных типов файлов и почему. 
Завершающее практическое занятие для тех, кто хочет освоить продвинутые алгоритмы и увидеть их применение в реальном проекте.​​​​​​​​​​​​​​​​

🎁 Всем участникам вебинара дарим промокод, который дает скидку на обучение - Algo5 

👉 Регистрация на вебинар: https://otus.pw/4dbaw/

#реклама
О рекламодателе

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

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

События в Kubernetes становятся шумными при масштабировании, поэтому автор написал собственный агрегатор на Go, чтобы упростить их обработку и управление.

Улучшение управления событиями в Kubernetes с помощью кастомной агрегации: читать 🍿

👉 @BackendPortal

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

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

Сетевые основы, как работает маршрутизация трафика

Знаете ли вы, что компьютеры могут обмениваться данными только с соседями (участниками одной подсети)?
Но как тогда отправляются пакеты через весь Интернет? Здесь и вступает в дело маршрутизация. 😎

▶️Узнайте больше: читать

👉 @BackendPortal

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

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

Приглашаем тебя на Just JVM Meetup для бэкенд-разработчиков 🦾

Встречаемся 20 июня, в 17:00

Где?
▪️офлайн в офисе Selectel, Цветочная, 19
▪️онлайн по всему миру, ссылка на трансляцию скоро появится на сайте

🤌В программе — экспертные доклады от Just AI, Делимобиль, Яндекс Путешествия и Магнит OMNI о корутинах и их работе на JVM, реактивных микросервисах, тестировании с Mockito и создании веб-приложений на Kotlin без Spring.

Собираемся, чтобы обсудить современные подходы в разработке JVM-приложений!
А еще вас ждет классный квиз и увлекательный нетворкинг под вкусную пиццу 🔥

🚀 Участие бесплатно, регистрация обязательна по этой ссылке 🚀

Партнеры мероприятия: Selectel и Just AI💙

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

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

Dead Letter Queue — это не страховка. Это инструмент наблюдаемости.

Большинство команд используют DLQ неправильно — и в итоге теряют данные незаметно.

Сообщение не обрабатывается.
Попадает в DLQ.
Никто не замечает.
Оно истекает.
Проблема становится перманентной.

Если вы используете DLQ как мусорку, а не как сигнал — вы работаете вслепую.

Рауль написал подробный разбор: link

> 4 самых частых ошибки при использовании DLQ

> Как тегировать сбои с полноценными метаданными

> Как безопасно переотправлять сообщения, не сломав всё снова

> И почему наблюдаемость важнее повторных попыток (retry)

Без воды. Только реальные паттерны из продакшн-систем. 😐

👉 @BackendPortal

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

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

Краткие объяснения Backend-технологий

API Gateway
↳ Используется для управления, маршрутизации, защиты и мониторинга API-вызовов централизованно в микросервисной архитектуре.

Load Balancer
↳ Применяется для равномерного распределения трафика между серверами для масштабируемости и отказоустойчивости.

Reverse Proxy
↳ Используется для перенаправления клиентских запросов на backend-серверы, часто с добавлением SSL, кеширования или сжатия.

Cache (Redis/Memcached)
↳ Применяется для ускорения отклика за счёт хранения часто запрашиваемых данных в памяти.

Message Queue (Kafka/RabbitMQ)
↳ Используется для разделения сервисов и обеспечения асинхронного взаимодействия между ними.

Object Storage (S3/MinIO)
↳ Используется для хранения больших неструктурированных данных, таких как изображения, видео или бэкапы.

CDN (Cloudflare/Akamai)
↳ Применяется для доставки статических ресурсов быстрее за счёт кеширования ближе к пользователю.

Job Scheduler (Celery/Quartz)
↳ Используется для выполнения фоновых задач или плановых заданий по расписанию (аналогично cron).

Serverless (AWS Lambda)
↳ Позволяет запускать backend-код без управления серверами; подходит для задач с низкой нагрузкой или событийно-ориентированных сценариев.

Container Orchestration (Kubernetes)
↳ Применяется при управлении контейнеризованными приложениями в масштабах, обеспечивая авто-масштабирование и устойчивость.

Web Server (Nginx/Apache)
↳ Используется для обработки HTTP-запросов, отдачи статического контента или как обратный прокси.

👉 @BackendPortal

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

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

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

Как всегда, лучше начинать с базовых вещей.

Изучи, как управлять ресурсами CPU и памяти процесса с помощью Linux cgroup: тык

👉 @BackendPortal

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

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

Если хотите прокачаться в системном дизайне, разберитесь с этими концептами:

> API Gateway vs Load Balancer — ссылка
> Reverse Proxy vs Forward Proxy — ссылка
> Горизонтальное и вертикальное масштабирование — ссылка
> Микросервисы и монолитная архитектура — ссылка

👉 @BackendPortal

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

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

HTTP-концепции, которые должен знать каждый разработчик

> HTTP-методы — Определяют действие: GET (получить), POST (создать), PUT (заменить), PATCH (обновить), DELETE (удалить).

> Коды статуса — Сообщают, что произошло: 2xx (успех), 4xx (ошибка клиента), 5xx (ошибка сервера).

> Заголовки — Пары ключ-значение, которые передают метаинформацию (например, Content-Type, Authorization, Cache-Control).

> Тело запроса — Фактические данные, отправляемые в POST/PUT/PATCH-запросах (часто в формате JSON или form-data).

> Параметры запроса — Пары ключ-значение в URL после ?, используются для фильтрации, сортировки, поиска.

> Параметры пути — Динамические части URL (например, /user/:id), используются для идентификации ресурсов.

> Идемпотентность — Повтор одного и того же запроса (например, PUT или DELETE) приводит к одному и тому же результату.

> Безопасные методы — Методы, такие как GET и HEAD, которые не должны изменять состояние сервера.

> HTTP/1.1 vs HTTP/2 vs HTTP/3 — Новые версии ускоряют работу за счёт мультиплексирования, бинарных фреймов и протокола QUIC.

> Keep-Alive — Повторное использование TCP-соединений для нескольких запросов для снижения задержек.

> Content-Type — Указывает серверу/клиенту, в каком формате тело запроса (например, application/json).

> Accept — Указывает серверу, какие форматы ответа клиент может обрабатывать.

> Authorization — Несёт учетные данные (токены, basic auth) для аутентификации запросов.

> Кэширование — Использует заголовки вроде Cache-Control, ETag, Last-Modified для снижения нагрузки и задержек.

> ETag — Уникальный хеш для версии ресурса; помогает в условных запросах и кэшировании.

> Редиректы (3xx) — Инструктируют клиент попробовать другой URL (например, 301, 302, 307).

> CORS — Управляет тем, какие источники могут обращаться к вашему API из браузера.

> Preflight-запросы — Запросы типа OPTIONS, которые браузер отправляет перед некоторыми CORS-запросами для проверки разрешений.

> Туннелирование HTTP-методов — Некоторые прокси пропускают только GET/POST, поэтому PUT/DELETE инкапсулируются через POST + _method.

> User-Agent — Заголовок, который браузеры отправляют для идентификации (часто подделывается или изменяется).

> Referer — Заголовок, указывающий URL предыдущей страницы (используется в аналитике и безопасности).

> Host Header — Указывает домен, на который направлен запрос (важен при виртуальном хостинге).

> Connection Header — Управляет поведением соединения (например, close, keep-alive).

> HEAD-метод — Как GET, но возвращает только заголовки (без тела); полезен для проверки ресурсов.

👉 @BackendPortal

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

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

👩‍💻 Всем программистам посвящается!

Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:

Выбирай своё направление:

👩‍💻 C/C++ — /channel/cpp_ready
👩‍💻 C# & Unity — t.me/csharp_ready
👩‍💻 Python — t.me/python_ready
🤔 InfoSec & Хакинг — t.me/hacking_ready
🖥 SQL & Базы Данных — t.me/sql_ready
🤖 Нейросетиt.me/neuro_ready
👩‍💻 Linux — t.me/linux_ready
📖 IT Книги — t.me/books_ready
👩‍💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
👩‍💻 Backend — t.me/backend_ready
📱 GitHub & Git — t.me/github_ready
👩‍💻 Java — t.me/java_ready
👩‍💻 Весь IT — t.me/it_ready
👩‍💻 Bash & Shell — t.me/bash_ready
🖼️ DevOpst.me/devops_ready
🖥 Design — t.me/design_ready

📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

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

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

Что такое MQTT?

MQTT (изначально Message Queuing Telemetry Transport)
=> легковесный протокол обмена сообщениями в стиле publish-subscribe.

=> разработан для быстрой, эффективной и надёжной коммуникации между устройствами, особенно в условиях ограниченной пропускной способности и высокой задержки.

=> использует брокер для маршрутизации сообщений от публикаторов (устройств, отправляющих данные) к подписчикам (устройствам или приложениям, которым эти данные нужны), при этом они не знают друг о друге.

Немного истории 🇮🇹

=> Придуман в 1999 году Энди Стэнфорд-Кларком (IBM) и Арленом Ниппером (Arcom) для мониторинга нефтепроводов через ненадёжные спутниковые соединения.
Главная цель => минимальное потребление трафика и энергии.

=> В 2010 году IBM открыла MQTT 3.1 как открытый протокол
=> Стандартизирован OASIS в 2013
=> MQTT 5 выпущен в 2019

Сегодня MQTT — это де-факто стандарт для обмена сообщениями в IoT и широко используется в разных отраслях.

Пример из реального мира

Умный дом / Home Automation

=> Умный термостат публикует данные о температуре в MQTT-брокер
=> Умные лампы или HVAC-система подписаны на эти данные и автоматически регулируются
=> Владелец управляет всеми устройствами из одного приложения

Другие крупные кейсы


=> Промышленный IoT
=> Управление автопарками
=> Умные энергосети
=> Здравоохранение (удалённый мониторинг)
=> Сельское хозяйство
=> Логистика

👉 @BackendPortal

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

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

Пакет fs в Go: современная абстракция файловой системы 1/9

Пакет fs появился в Go 1.16 и кардинально изменил подход к работе с файловой системой в Go-программах. До его появления разработчики в основном использовали пакет os для всех операций с файлами, что приводило к сильной связке между логикой приложения и конкретной реализацией операционной системы

—> статья

👉 @BackendPortal

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

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

В этой статье подробно объясняется, как лимит в 1 МБ на объект в etcd приводит к сбоям при деплое через Helm, когда метаданные релиза, сохраняемые в виде Secrets, превышают допустимый размер.

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

👉 @BackendPortal

Читать полностью…
Подписаться на канал