Привет! Меня зовут Глеб Гончаров, я руководитель группы разработки клиентского продукта в СберМаркете. В серии статей я рассмотрю историю развития протокола HTTP. Полное обсуждение семантики выходит за рамки, но понимание ключевых изменений в устройстве HTTP и мотивов принимаемых решений даст необходимую основу для обсуждения вопросов производительности и ограничений протокола, особенно в контексте предстоящих улучшений HTTP/2 и его преемника HTTP/3. Про HTTP-NG сейчас написано только на английском и буквально в нескольких редких книгах, так что я поизучал домашние страницы членов комитета и их презентации 1996-1998 гг., чтобы понять основные мотивы. Хочу поделиться находками с аудиторией Хабра.
Управление заголовками HTTP в Joomla 4 (часть 2)
Эта статья - вторая часть перевода статьи Joomla’s New HTTP Headers Plugin For J4 из майского номера (2022) Joomla Community Magazine. Эта часть перевода посвящена тонкостям настройки Content Security Policy, HSTS в Joomla 4, тому как избежать атак на Ваш сайт.
gRPC — альтернатива REST API от Google
Проблема
Когда мы разрабатываем приложение, которое разделено на независимые автономные компоненты, мы говорим о микросервисной архитектуре. Для взаимодействия компонентов используется API. Самый популярным API является REST. Это обусловлено его гибкостью, эффективностью (в большинстве сценариев) и тем, что он легко масштабируется.
Большая часть реализаций REST использует стандарт JSON для обмена сообщениями. Обычно это удобно - сама по себе такая структура легко читается людьми и предоставляет независимость от языка программирования. Недостатками такого решения является избыточность данных и сущностей из которых состоит запрос. В большинстве случаев это некритично. Проблемы начинаются в сценариях, когда нужно передавать много данных с низкой задержкой.
Зачем нужен gRPC
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google. В качестве основного протокола передачи применяется HTTP/2, для описания процедур применяется “Protocol Buffers”. Это в свою очередь приносит дополнительные преимущества: сжатие HTTP-заголовков и мультиплексирование запросов.
gRPC предполагает возможность аутентификации, потоковой передачи данных в любую сторону, управление потоками, отмену и time-out запросов, при этом выделяется кроссплатформенностью за счет генерации исходного кода классов для всех популярных языков программирования.
Ультимативный гайд по HTTP. Структура запроса и ответа
Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture. Я решил написать цикл статей об истории и развитии HTTP, рассмотреть каждую из его версий и проблемы, которые они решали и решают сейчас.
Весь современный веб построен на протоколе HTTP. Каждый сайт использует его для общения клиента с сервером. Между собой сервера тоже часто общаются по этому протоколу. На данный момент существует четыре его версии и все они до сих пор используются. Поэтому статьи будут полезны инженерам любых уровней и специализаций, и помогут систематизировать знания об этой важной технологии.
Ультимативный гайд по HTTP. Cookies и CORS
Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture, а это мой цикл статей о протоколе HTTP. В первой части мы уже познакомились с версией протокола 1.0 и поговорили о структуре ответов и запросов. Теперь пришло время узнать, что такое Cookies и для чего нужен CORS.
Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2
Продолжаем цикл статей о протоколе HTTP: расскажем, что нового привнесла версия HTTP/1.1 и какие у нее принципиальные отличия с версией HTTP/2.
Эволюция HTTP. Часть 2. Краткая история развития самого популярного протокола Всемирной паутины
Привет! Меня зовут Глеб Гончаров, я руководитель группы разработки клиентского продукта в СберМаркете. Это вторая часть в серии статей об истории развития самого популярного протокола Всемирной паутины — протокола HTTP.
В первой части я рассказал про старую группу протокола HTTP (HTTP/0.9, HTTP/1.0, HTTP-NG, HTTP/1.1): причины их появления, видах запросов и недостатках. Сегодня же поговорим о новой группе, которая включает в себя протоколы SPDY, HTTP/2, gQUIC и HTTP/3.
Пара HTTP-заголовков, о которых, похоже, не знают разработчики
Вот какое дело: как показывают мои изыскания, большинство веб-разработчиков поразительно мало знают об HTTP-заголовках или, в целом, о стандарте HTTP. Я имею в виду, что я понимаю то, что во многих университетах и школах, вероятно, этому не учат (там, где я учился, определённо, так и было). А кто будет, сидя дома праздным воскресным утром, думать о том, чтобы развлечь себя чтением стандарта HTTP? Да никто. Знаю, но… есть одно важное обстоятельство: отсутствие хоть какого-то понимания стандарта HTTP — это зияющая дыра в знаниях веб-разработчиков, в знаниях многих из тех, кто это читает. Предлагаю это исправить.
Что выбрать для очередного API: HTTP или gRPC
Команда VK Cloud перевела статью с подробным техническим сравнением двух типов API: HTTP и gRPC. Автор рассказывает о своем опыте работы и описывает нюансы, преимущества и недостатки каждой технологии.
Засылаем картинку из Unreal Engine на сервер в теле HTTP запроса
Привет, Хабражители!
Довольно часто бывает ситуация, когда нужно залить картинки, сгенерированные в UE на сервер, у движка есть все части инструмента, но готового решения для отправки картинок в теле запроса, к сожалению, нет. Что ж, попробуем запилить свой велосипед, благо, это велосипед не сложный, игрушечный, можно сказать.
Как создать микросервис на Rust при помощи gRPC
❯ Введение
В сегодняшнем туториале по Rust мы откроем для себя мир gRPC. Для этого создадим очень простой микросервис с единственной конечной точкой, который будет отзеркаливать то сообщение, что мы ему пошлем. Чтобы протестировать наш микросервис, мы также напишем простой клиент на Rust.
Перед изучением этого поста также будет полезно посмотреть предыдущие публикации автора по Rust:
https://blog.ediri.io/lets-build-a-cli-in-rust
https://blog.ediri.io/how-to-asyncawait-in-rust-an-introduction
Как устроен «HTTPS по умолчанию» в браузерe Brave
Начиная с версии 1.50, Brave внедряет новую технологию «HTTPS по умолчанию». Brave принудительно будет переводить сайты в режим HTTPS, прибегая к HTTP, только если сайт не поддерживает HTTPS или в тех редких случаях, когда известно, что сайт работает некорректно по HTTPS. Это наиболее агрессивная на рынке политика принудительного использования HTTPS.
Основы библиотеки cURL PHP
cURL — библиотека, используемая для отправки HTTP-запросов с различных языков программирования, включая C, PHP и другие.
В статье проведено знакомство с библиотекой, описаны основные функции и предопределённые константы. Представлены способы настройки сеанса, совершения GET- и POST-запросов, обработка исключений, проверки SSL-сертификата и аутентификации на сервере.
PowerShell и LiveJournal (ЖЖ): три способа аутентификации
Я изучаю сетевое взаимодействие по протоколу HTTP(S). Мне было интересно попробовать связаться с «Живым Журналом» (он же «LiveJournal» или «ЖЖ») из программы-оболочки «PowerShell» и получить от этого веб-сервиса какие-нибудь данные.
В статье описаны подходы к началу работы с ЖЖ из программы через веб. Даны ссылки на документацию. Детально, с практическими примерами на языке PowerShell, описано три способа аутентификации при вызове удалённых процедур (функций) программы-сервера «Живого Журнала»: «clear», «challenge-response» и способ с помощью «cookie». В последнем случае описано, как открыть сессию, работать в ней, а затем завершить ее.
Шаблоны тест-кейсов по API, тест-кейсы по идемпотентности
Привет всем, я, Надежда Дудник, главный инженер по тестированию в СБЕРе, а ещё ментор по тестированию ПО.
Как два года введу блог по тестированию, помогаю начинающим специалистам по тестированию развивать хард скиллы, дополнительно сочиняю тесты для закрепления знаний по основам тестирования и не только.
В рамках своего блога я поделилась информацией как составлять тест-кейсы по бэкенду, и захотелось также поделиться этой информацией здесь.
Хочу вам рассказать о важности написания тест-кейсов по API, а именно про стратегию составления тест-кейсов по бэку (backend), где результатом будет являться хорошо структурированный тест-кейс.
На работе я постоянно провожу ревью тестовых моделей по бэку, даю обратную связь, чтобы было качественное тестовое покрытие согласно требованиям.
Как вы знаете, что каждый тест состоит из предусловий, шагов и ожидаемых результатов.
При выполнении каждого запроса API нам необходимо и важно проверить:
Как работает Docker Desktop Networking
Современные приложения активно используют сети. Обычное дело, когда во время сборки apt-get/dnf/yum/apk install
устанавливает пакет из репозитория пакетов дистрибутива Linux. При выполнении команды приложение может захотеть подключиться к внутренней базе данных postgres или mysql, чтобы сохранить определённое состояние при вызове listen()
и accept()
. При этом разработчик должен иметь возможность работать отовсюду — из дома или офиса, с мобильного устройства или через VPN. Docker Desktop помогает сделать так, чтобы сеть «просто работала» в каждом из сценариев. В статье разбираем инструменты и методы, которые обеспечивают это, начиная с всеми любимого набора протоколов: TCP/IP.
Полезные и неизвестные библиотеки Java
Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное и неизвестное». Предыдущая описывала несколько привлекательных, но малоизвестных возможностей Java. Подробнее об этом можно прочитать здесь.
Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test
, то одновременно мы включаем такие библиотеки, как mockito
, junit-jupiter
или hamcrest
. Конечно, это известные библиотеки для сообщества.
На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.
Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!
Как я приложение с Go на Rust переписывал
О Rust я слышал ещё несколько лет назад и все его либо хвалили, либо порицали, по различным причинам, но сам как-то не брался за него - мне, неподготовленному к подобному синтаксису и не знакомому с подобными языками хотя бы на базовом уровне, в то время он казался совершенно непонятным.
Не так давно решил написать для себя небольшое приложение-бенчмарк для теста HTTP API серверов и написал его на Go. Но размер в 5 с лишним Мбайт, несоблюдение целевого RPS и некоторые другие проблемы заставили посмотреть в сторону более производительного Rust + Tokio + Hyper.
Эта статья о коде Rust-приложения, переходе с Go на Rust, преимуществах и недостатках обоих языков и сравнении двух сферических коней в вакууме.
Версионная миграция данных в мире DTO
Доброе время суток, уважаемое Хабр коммьюнити. В этой публикации я хотел бы показать несколько известных мне подходов к версионной миграции данных в контексте DTO. Примеры будут продемонстрированы на языке Java.
Основы веба, которые должен знать начинающий разработчик
В этом посте я объясню, как работает Интернет. Мы ответим на вопросы наподобие «Как браузер находит файл HTML для запрошенной веб-страницы?», «Как файл HTML превращается в интерфейс пользователя?», «Что можно сделать, чтобы ускорить этот процесс?», «Как устанавливается и поддерживается связь с сервером?», а также рассмотрим следующие концепции:
- Клиент-серверную модель
- Жизненный цикл запроса веб-страницы
- Hypertext Transfer Protocol
- Как браузеры рендерят контент