Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь: @devmangx РКН: https://clck.ru/3FobxK
Различия между HTTP/1, HTTP/2 и HTTP/3
HTTP является основой веб-коммуникации с 1989 года, но за это время он значительно эволюционировал. Вот разбор того, как каждая версия развивалась, чтобы удовлетворять растущие потребности:
1. HTTP/1.1 (1997)
Оригинальный протокол, определивший взаимодействие в вебе, использует простые методы, такие как GET и POST. Однако с развитием веба, появлением сложных приложений, потокового HD-видео и других нагрузок HTTP/1.1 столкнулся с рядом ограничений:
⏩Проблема head-of-line (HOL) blocking
, замедляющая загрузку ресурсов.
⏩Избыточные HTTP-заголовки.
⏩Необходимость устанавливать несколько TCP-соединений для параллельной загрузки ресурсов.
2. HTTP/2 (2015)
Значительный шаг вперед, включающий:
⏩Сжатие заголовков для экономии трафика.
⏩Мультиплексирование – возможность одновременной передачи нескольких запросов в одном TCP-соединении.
⏩Приоритезация запросов для ускоренной загрузки важных элементов.
⏩Бинарное кодирование вместо текстового, что ускоряет обработку.
HTTP/2 позволил сократить число TCP-соединений, ускоряя загрузку страниц и оптимизируя использование ресурсов сети. Однако он все еще страдал от TCP head-of-line blocking и проблем безопасности, таких как Stream Reuse Attack.
3. HTTP/3 (2020)
Основан на протоколе QUIC и использует UDP вместо TCP, что дает:
⏩Полное устранение head-of-line blocking TCP.
⏩Улучшенную миграцию соединений (например, при смене Wi-Fi на мобильную сеть).
⏩Встроенное шифрование (TLS 1.3 по умолчанию).
⏩Быстрое установление соединений за счет отказа от трехэтапного рукопожатия TCP.
HTTP/3 не полностью заменяет HTTP/2 – он предназначен для определенных сценариев, где его преимущества наиболее заметны, тогда как HTTP/2 остается надежным вариантом.
👉 @BackendPortal
Git Merge vs Rebase
Одна из самых важных функций Git — это ветвление. Однако при работе с ветками необходимо объединять изменения из одной ветки в другую, и сделать это можно разными способами.
У нас есть два варианта: 👇
1. Merge
Когда ты выполняешь слияние ветки A в ветку B (с помощью git merge), Git создаёт новый коммит слияния. Этот коммит имеет двух родителей — один из каждой ветки, символизируя объединение их истории. Это неразрушающая операция, которая сохраняет всю историю проекта в первозданном виде.
Когда использовать?
☑ Полезно в совместной работе, где важно сохранять целостность и хронологию изменений.
❌ Однако merge-коммиты могут засорять историю, усложняя её понимание.
2. Rebase
Когда ты перебазируешь ветку A на ветку B (git rebase), это означает: "Давайте представим, что изменения из ветки A были сделаны поверх последних изменений в ветке B."
При этом Git перезаписывает историю, создавая новые коммиты для каждого коммита из исходной ветки. В результате получается более чистая и линейная история.
Когда использовать?
☑ Отлично подходит для личных веток, когда тебе нужно сделать историю более аккуратной и понятной.
❌ Но опасно использовать при совместной работе — перебазирование изменяет историю, что может вызвать конфликты, если другие разработчики уже подтянули или запушили исходную ветку.
👉 @BackendPortal
Анализ логов в Linux – полезные команды
⏩Найти все строки с "ERROR" в логах
grep "ERROR" /var/log/syslog
grep -i "failed" /var/log/auth.log
awk '{print $1}' /var/log/access.log | sort | uniq
grep -c "timeout" /var/log/nginx/error.log
awk '{print $1, $2, $3}' /var/log/syslog
sed 's/ERROR/ALERT/g' /var/log/syslog
grep "disk full" /var/log/messages | tail -n 10
grep ' 500 ' /var/log/nginx/access.log
grep -v "DEBUG" /var/log/app.log
awk '$3 == "username"' /var/log/app.log
sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\2\/\3\/\1/' /var/log/app.log
tail -f /var/log/syslog | grep "ERROR"
📕 Открытый урок по разработке веб-приложений на Scala
На открытом уроке 1 апреля в 20:00 мск мы погрузимся в мир бэкенд-разработки на Scala.
📗 В результате вы:
— Узнаете ключевые аспекты создания современных веб-приложений на Scala;
— Познакомитесь с популярными фреймворками и инструментами для работы с базами данных;
— На практике создадите простое CRUD-приложение для закрепления навыков.
Спикер: Алексей Воронец — руководитель разработки департамента проектных решений и поисковых систем в компании Naumen, эксперт с 14-летним опытом, специализирующийся на Scala и функциональном программировании.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие
https://otus.pw/3X5o/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает?
Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам.
✔️ Как научиться отвлекаться от работы и отдыхать?
✔️ Как совместить кучу рабочих задач и время с семьей?
✔️ Как справиться с прокрастинацией?
✔️ Как не растерять запал, даже если кажется, что ничего не выходит?
Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни!
👨🏻💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.
Что такое HTTP Downgrading, зачем его использовать и как это работает?
HTTP/2 является стандартом для большинства веб-приложений в наши дни, однако не редкость, когда серверы на бэкенде все еще используют HTTP/1.1, что может приводить к несоответствиям при разборе запросов между фронтендом и бэкендом.
И вот здесь и появляется HTTP downgrading! Но что это такое?
HTTP downgrading — это процесс принуждения запроса обрабатываться через HTTP/1.1 вместо HTTP/2.
Это позволяет манипулировать тем, как серверы на фронтенде и бэкенде интерпретируют запросы, а также использовать уязвимости, уникальные для разбора HTTP/1.1, такие как атаки Content-Length Transfer-Encoding (CL.TE).
Как понизить HTTP/2 до HTTP/1.1 с помощью Burp Suite 🤔
1️⃣ Откройте Burp Suite и перейдите в Proxy → HTTP History
2️⃣ Найдите запрос, который в данный момент использует HTTP/2.
3️⃣ Отправьте запрос в Repeater
4️⃣ В вкладке Repeater откройте панель "Inspector" → Request Attributes → Protocol
5️⃣ Измените версию HTTP на HTTP/1.1
6️⃣ Нажмите "Send" в Repeater.
Если все прошло успешно, вы получите валидный ответ, подтверждающий, что сервер принимает HTTP/1.1.
Вот и все! Вы только что понизили протокол HTTP и подтвердили, что сервер на фронтенде принимает HTTP/1.1!
👉 @BackendPortal
Что такое предметно-ориентированное проектирование (DDD) и как оно работает?
Программное обеспечение, которое органично интегрируется с бизнес-доменами, приносит организации значительные преимущества.
Оно может оптимизировать операции, улучшать пользовательские функции и предоставлять заинтересованным сторонам актуальную аналитику для быстрого и продуманного принятия решений.
Это подход к разработке ПО, который обеспечивает согласованность между бизнес-экспертами и разработчиками, связывая функциональность программного обеспечения с потребностями бизнеса. 🔥
Основные концепции DDD: 👇
⏩Ограниченные контексты (Bounded Contexts)
Это логическая граница, в пределах которой термины остаются последовательными. Универсальный язык (Ubiquitous Language) служит мостом между технической и бизнес-коммуникацией в этом контексте, позволяя всем участникам говорить на одном языке — это одно из самых мощных преимуществ DDD.
⏩Сущности и объекты-значения (Entities & Value Objects)
Оба играют ключевую роль в точном моделировании бизнес-домена:
🟡Сущности (Entities) — это объекты с уникальной идентичностью, которая сохраняется во времени и в разных состояниях.
🟡Объекты-значения (Value Objects) описывают характеристики, но не имеют концептуальной идентичности. Они неизменяемы (в отличие от сущностей, которые могут менять свое состояние).
⏩Агрегаты (Aggregates)
Это группы взаимосвязанных объектов (сущностей и объектов-значений), которые рассматриваются как единое целое. Они обеспечивают механизм управления и поддержания согласованности внутри набора связанных объектов.
Преимущества DDD:
☑ Согласованность: DDD соединяет бизнес-домены и программное обеспечение, обеспечивая их тесную интеграцию.
☑ Гибкость: Четкие модели домена позволяют легче вносить изменения в соответствии с развивающимися бизнес-требованиями.
☑ Улучшенное взаимодействие: Универсальный язык способствует лучшему пониманию между разработчиками и бизнес-экспертами.
Когда применять DDD:
— Сложные системы: DDD особенно эффективен в сложных доменах с детализированными бизнес-правилами.
— Крупные команды: Обеспечивает единое понимание домена для междисциплинарных команд.
— Быстро развивающиеся бизнесы: Позволяет гибко адаптировать программное обеспечение к изменениям в бизнесе.
Недостатки DDD:
❌ Затраты на внедрение: Проектирование правильных контекстов, сущностей и объектов-значений требует времени.
❌ Сложность: Для простых доменов может оказаться избыточным, требует высокой дисциплины и значительного обучения.
❌ Риск рассинхронизации: Без регулярных консультаций с бизнес-экспертами модель может отдалиться от реальных потребностей бизнеса.
Brain fog - это настоящая эпидемия нашего времени, но есть вещество, которое способно пробудить даже мертвеца..
Alpha GPC + CDP Choline = увеличение скорости и объема электрических импульсов в синапсах головного мозга🧠
Добавка повышает концентрацию внимания и скорость реакции, а так же действует как очень мягкий антидепрессант 🧘♂️
Не оказывает сильный стимулирующий эффект и не нарушает качество сна 💤
Ты не можешь сделать 36 часов в сутках, но ты можешь увеличить скорость своего мышления ⚡️
👇👇👇
ЗАКАЗАТЬ НА WILDBERRIES
Что такое Cross-Origin Resource Sharing (CORS)?
Браузеры используют CORS, чтобы предотвратить загрузку данных с других доменов. Когда браузер делает запрос, он добавляет в заголовок origin (источник запроса). Если запрос идёт на сервер того же источника, браузер его разрешает. Если нет — блокирует.
Как решить проблемы с CORS?
Настроить CORS можно на сервере. Сервер должен добавлять заголовок Access-Control-Allow-Origin в ответ. Этот заголовок должен совпадать с origin из запроса, чтобы браузер разрешил загрузку.
Есть два способа исправить ошибки CORS:
🍩 Настроить сервер для поддержки CORS
Можно разрешить доступ ко всем доменам с Access-Control-Allow-Origin: *
, но это небезопасно. Лучше разрешить запросы только с определённого домена, например:
Access-Control-Allow-Origin: https://somedomain.com
6 ключевых видов тестирования API
⏩ Тестирование рабочих процессов – проверяет, корректно ли работают последовательности API-запросов (например, процесс покупки в интернет-магазине).
⏩ Тестирование производительности – оценивает скорость, стабильность и отзывчивость API под разной нагрузкой.
⏩ Тестирование безопасности – выявляет уязвимости, защищая API от атак и утечек данных (используются penetration testing, fuzz testing).
⏩ Тестирование на основе данных – проверяет API на разных входных данных, чтобы убедиться в корректности работы.
⏩ Тестирование конечных точек – проверяет, правильно ли API-эндпоинты возвращают ответы, коды состояния и ошибки.
⏩ Контрактное тестирование – гарантирует, что взаимодействие между API и его потребителями соответствует установленным соглашениям и не ломается при обновлениях.
Эти методы помогают создать надежное, безопасное и эффективное API!
👉 @BackendPortal
Понимание заголовков REST
Протокол передачи гипертекста (HTTP) включает в себя заголовки, которые передают дополнительную информацию во время HTTP-запросов и ответов.
Сервер и браузер используют HTTP-заголовки для обмена метаданными о документе и данных, передаваемых веб-сервером запрашиваемого сайта.
Различные данные в REST-заголовках могут помочь в поиске и устранении проблем по мере их возникновения. Так как они содержат метаданные, относящиеся к API-запросу и ответу, HTTP-заголовки играют важную роль в этих процессах. Заголовки включают информацию о:
⏩Теле запроса и ответа
⏩Авторизации запроса
⏩Кэшировании ответа
⏩Cookies в ответе
Кроме перечисленных категорий, HTTP-заголовки содержат информацию о различных типах HTTP-соединений, прокси-серверах и других аспектах.
Большинство этих заголовков предназначены для поддержания соединений между клиентами, серверами и прокси, поэтому их тестирование часто не требуется.
В общем случае существуют заголовки запроса и ответа. Мы устанавливаем заголовок запроса при отправке запроса к API и получаем заголовки в ответе.
Общая структура заголовка выглядит как Имя: значение, но может включать несколько значений, разделенных запятыми.
Некоторые распространенные заголовки:
🟡 Authorization – содержит информацию об аутентификации клиента для запрашиваемого ресурса.
🟡 Accept-Charset – сообщает серверу, какие наборы символов поддерживает клиент. Этот заголовок передается вместе с запросом.
🟡 Content-Type – указывает тип медиа-данных в ответе (например, text/html или application/json), что помогает клиенту обработать содержимое ответа.
🟡 Cache-Control – определяет правила кэширования для ответа. Клиент может хранить и повторно использовать кэшированный ответ в течение указанного времени.
Таким образом, заголовки HTTP играют ключевую роль в обеспечении взаимодействия между клиентом и сервером, влияя на авторизацию, обработку данных и кэширование.
👉 @BackendPortal
Нашёл удобный способ анализировать сетевой трафик в Kubernetes — Kubeshark
Открываешь сайт или выполняешь kubectl krew install kubeshark
, и сразу можешь следить за запросами в реальном времени
Полезно для отладки, мониторинга и поиска багов. Работает прямо в кластере и показывает всю сетевую активность между подами.
Удобно для DevOps и тестирования ❌
👉 @BackendPortal
Grafana — это платформа для визуализации и мониторинга данных из разных источников с гибкими дашбордами и оповещениями.
👉 @BackendPortal
Если вы пользуетесь Pandas — ловите шпаргалку по Data Wrangling.
В хорошем качестве тут
👉 @BackendPortal
HTTP Статусы
🟡1xx Информационные
— 100 Continue – Сервер получил заголовки, ожидает тело.
— 101 Switching Protocols – Сервер меняет протокол по запросу.
🟡2xx Успех
— 200 OK – Запрос выполнен успешно.
— 201 Created – Создан новый ресурс.
— 202 Accepted – Принято, но не обработано.
— 204 No Content – Успешно, но без контента.
— 3xx Перенаправление
— 301 Moved Permanently – Ресурс перемещен навсегда.
— 302 Found – Временный новый адрес.
— 304 Not Modified – Данные не изменились, нет необходимости пересылать.
— 307 Temporary Redirect – Временное перенаправление.
🟡4xx Ошибки клиента
— 400 Bad Request – Ошибка в запросе.
— 401 Unauthorized – Требуется авторизация.
— 403 Forbidden – Доступ запрещен.
— 404 Not Found – Ресурс не найден.
— 429 Too Many Requests – Слишком много запросов (лимит).
🟡5xx Ошибки сервера
— 500 Internal Server Error – Внутренняя ошибка сервера.
— 502 Bad Gateway – Сервер получил неверный ответ.
— 503 Service Unavailable – Сервер перегружен или на обслуживании.
— 504 Gateway Timeout – Сервер не получил ответ вовремя.
👉 @BackendPortal
IT_ONE Cup. ML Challenge от IT_ONE и Sk FinTech Hub — создай AI-ассистента, который будет помогать в работе дизайнерам, системным и бизнес-аналитикам. Участвуй онлайн с 12 по 29 апреля и поборись за 1 500 000 рублей.
Регистрация открыта до 11 апреля
Твоя формула победы:
✅ Разбираешься в машинном обучении.
✅ На ты с NLP и LLM.
✅ Концептуально понимаешь принципы работы веб-приложений.
Также приглашаем Backend и Frontend-разработчиков, системных и бизнес-аналитиков, UI/UX-дизайнеров. Участвуй онлайн соло или командой до 5 человек.
Задачи IT_ONE Cup. ML Challenge:
🔤 Динамические контекстные подсказки для системного аналитика.
🔤 AI-генератор дизайн-макетов по описанию требований.
🔤 Система визуализации BPMN-диаграмм.
4 апреля приходи на митап с экспертами соревнования — задай вопросы и узнай больше о задачах.
Создай AI-ассистента, который облегчит выполнение рабочих задач — регистрируйся на IT_ONE Cup. ML Challenge
❤️ Backend Talks от Яндекс 360
17 апреля, Москва, 19:00
Поговорим про три основы, без которых невозможно создавать высоконагруженные сервисы для миллионной аудитории: инфраструктура, архитектура и команда.
В программе:
📌На пути к 9999: принципы и практики построения высоконагруженных сервисов — Игорь Обручев, руководитель группы SRE
📌Эволюция проектирования общих решений в Яндекс 360 — Евгений Ширанков, руководитель команды платформенных сервисов
📌Ценности и культура команды. Почему они важны и как их сохранить в период роста — Роман Акинфеев, руководитель бэкенд-разработки Яндекс 360
Команда Яндекс 360 работает с нагрузками >1 000 000+ RPS и создает продукты которыми пользуются 95+ млн человек каждый месяц — Диск, Почта, Телемост, Мессенджер и другие.
🍻Приходите на митап обсуждать инженерные практики, качественно нетворкаться с разработчиками и классно провести время!
Регистрируйтесь
Крутейшая онлайн-платформа для практики программирования, которая предлагает более 7000 упражнений на 75 различных ЯП
Каждый язык представлен целой дорожкой с задачами, которые помогут разобраться во всех тонкостях шаг за шагом.
А если застрял, можно получить обратную связь от опытных менторов — не всегда сразу, но всегда по делу ✌️
👉 @BackendPortal
SSH-туннелирование – трюк, который позволяет безопасно передавать данные через зашифрованное соединение.
Разберем основные виды
🟡Локальное перенаправление
Хочешь получить доступ к веб-ресурсу на удаленном сервере? Используй:
ssh -L 8080:localhost:80 user@server
http://localhost:8080
, а трафик пойдет через SSH к серверу.ssh -L 8080:server:80 user@bastion
localhost
на bastion
), то тогда команда будет:ssh -L 8080:localhost:80 user@bastion
ssh -R 0.0.0.0:8080:localhost:80 user@gateway
8080
и перенаправлять запросы на твой локальный компьютер.Проектирование надежных микросервисов требует выбора правильных шаблонов для обеспечения производительности, отказоустойчивости и масштабируемости.
Вот основные шаблоны, которые должен знать каждый архитектор.
⏩Шаблон "База данных на сервис"
Каждый микросервис управляет собственной базой данных, что обеспечивает слабую связанность и полное владение данными.
⏩Шаблон "Источник событий"
Сохраняет каждое изменение как событие, а не только последнее состояние. Отлично подходит для журналов аудита и отладки.
⏩Шаблон "API-шлюз"
Выступает в качестве единой точки доступа, которая направляет запросы к микросервисам, обрабатывая такие задачи, как аутентификация и ограничение частоты запросов.
⏩Шаблон "Сага"
Координирует распределенные транзакции, используя последовательность шагов и компенсирующие действия для обработки отказов.
⏩Шаблон "BFF (Backend for Frontend)"
Создает разные бэкенды для веба и мобильных приложений, улучшая производительность и настраивая обработку данных под каждого клиента.
⚡ Новые каналы с вакансиями и стажировками для джунов
В этих каналах публикуются все свежие вакансии и стажировки
🔺 ВАКАНСИИ
Горячие вакансии с привлекательными офферами для джуниор разработчиков, аналитиков, дизайнеров и QA-специалистов.
Стажировки для начинающих специалистов в IT независимо от возраста!
Свежие стажировки для junior специалистов в топовых компании России и мира
Вакансии и стажировки для junior-разработчиков на удалёнке.
Junior вакансии и стажировки в крупнейших IT-компаниях мира: NVidia, Apple, T-банк, Яндекс, Google и т. д.
Эксперименты про трудоустройство в IT, советы для быстрого поиска работы и офферы для джунов.
Язык программирования Go - отличный выбор для создания бэкэнда ваших приложений.
В этом курсе вы создадите фронтэнд React на основе бэкэнда Go.
Вы узнаете, как настроить проект, создать API, обработать логику на стороне сервера и многое другое.
⏩ Источник: смотреть
👉 @BackendPortal
Сила CI/CD:
Пайплайны непрерывной интеграции и непрерывного развертывания (CI/CD) упрощают процесс разработки, автоматизируя тестирование и развертывание, что приводит к более быстрой доставке и улучшенному качеству программного обеспечения.
🍩Начало → Разработчик делает коммит кода.
🍩Автоматизированные тесты → Проверка кода.
❌Если тесты не пройдены → исправление ошибок.
☑Если тесты пройдены → сборка приложения.
🍩Развертывание на staging → запуск интеграционных тестов.
❌Если тесты не пройдены → исправление ошибок.
☑Если пройдены → развертывание в продакшн.
🍩Финал → Приложение успешно развернуто.
👉 @BackendPortal
🇷🇺«Сталинские Соколы» объявляют первый крупнейший в России турнир «Drone-Con» в номинациях:
- Настройка WiFi
- Пилотирование FPV дронов
- Онлайн стратегия «Битва Дронов»
🕙Когда? 11-13 апреля 2025 года
Заезд участников с 10.04.2025
Приз за выход в 1/8 финала в каждой номинации – 300 000 рублей
За победу в номинации:
🥇I место – 3 000 000 рублей
🥈II место – 2 000 000 рублей
🥉III место – 1 000 000 рублей
Пройди заочный онлайн этап до 1 апреля, и получи возможность попасть на очный этап «Drone-Con»!
Подать заявку и узнать подробности – @dronecon
8 алгоритмов балансировки нагрузки, которые вы должны знать:
🍩Round Robin (Круговой метод) – запросы распределяются равномерно между серверами по очереди.
🍩Least Connections (Наименьшее количество соединений) – запрос направляется на сервер с наименьшим числом активных соединений.
🍩Weighted Round Robin (Взвешенный круговой метод) – серверам присваиваются веса, и запросы распределяются с учетом этих весов.
🍩Weighted Least Connections (Взвешенный метод наименьших соединений) – учитывается как число соединений, так и вес сервера.
🍩IP Hash (Хэширование по IP) – запрос направляется на сервер в зависимости от хэша IP-адреса клиента.
🍩Least Response Time (Наименьшее время отклика) – запрос идет на сервер с наименьшим временем ответа.
🍩Random (Случайный выбор) – сервер выбирается случайным образом.
🍩Least Bandwidth (Наименьшая пропускная способность) – запрос идет на сервер с наименьшей текущей загрузкой сети.
👉 @BackendPortal
Нашел для вас мощный инструмент — Apidog
Бесплатная платформа для полного цикла разработки API, объединяющая дизайн, отладку, тестирование, документацию и мокирование в одном месте.
Визуальный редактор для проектирования и отладки API с поддержкой JSON Schema. Автоматизация тестирования и генерация документации — легко
Интеграция на всех этапах разработки API, обеспечивая синхронизацию спецификаций и изменений. 👍
👉 @BackendPortal
Файл содержит вопросы и ответы для собеседований по Git и GitHub.
В нем рассматриваются основные концепции, такие как контроль версий, создание и управление репозиториями, работа с ветками, команды для коммитов, пушей, пулов и мерджей, а также различия между Git и SVN. 📰
⚡Также затрагиваются вопросы управления доступом, разрешения конфликтов и использования стэша
👉 @BackendPortal
Безсерверные вычисления имеют множество преимуществ, таких как отсутствие необходимости вручную управлять или масштабировать серверы.
И в этом подробном руководстве Ифеани обучит вас созданию безсерверного CRUD REST API.
Вы будете использовать Serverless Framework, Node.js и GitHub Actions.
⏩Держи гайд: ссылка
👉 @BackendPortal
Принёс вам удобную шпаргалку по Python 😍
На quickref.me/python всё чётко и по делу — команды, примеры, быстрые подсказки. Никакой воды, только полезный контент.
Учишь Python? Сохраняй, пригодится.
👉 @BackendPortal