Как стать автором
Обновить

Эволюция HTTP. Часть 1. Краткая история развития самого популярного протокола Всемирной паутины

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

Привет! Меня зовут Глеб Гончаров, я руководитель группы разработки клиентского продукта в СберМаркете. В серии статей я рассмотрю историю развития протокола HTTP. Полное обсуждение семантики выходит за рамки, но понимание ключевых изменений в устройстве HTTP и мотивов принимаемых решений даст необходимую основу для обсуждения вопросов производительности и ограничений протокола, особенно в контексте предстоящих улучшений HTTP/2 и его преемника HTTP/3. Про HTTP-NG сейчас написано только на английском и буквально в нескольких редких книгах, так что я поизучал домашние страницы членов комитета и их презентации 1996-1998 гг., чтобы понять основные мотивы. Хочу поделиться находками с аудиторией Хабра.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Управление заголовками HTTP в Joomla 4 (часть 2)

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

Эта статья - вторая часть перевода статьи Joomla’s New HTTP Headers Plugin For J4 из майского номера (2022) Joomla Community Magazine. Эта часть перевода посвящена тонкостям настройки  Content Security Policy, HSTS в Joomla 4, тому как избежать атак на Ваш сайт.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии4

gRPC — альтернатива REST API от Google

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

Проблема

Когда мы разрабатываем приложение, которое разделено на независимые автономные компоненты, мы говорим о микросервисной архитектуре. Для взаимодействия компонентов используется API. Самый популярным API является REST. Это обусловлено его гибкостью, эффективностью (в большинстве сценариев) и тем, что он легко масштабируется. 

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

Зачем нужен gRPC

gRPC (Remote Procedure Calls) — это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google. В качестве основного протокола передачи применяется HTTP/2, для описания процедур применяется “Protocol Buffers”. Это в свою очередь приносит дополнительные преимущества: сжатие HTTP-заголовков и мультиплексирование запросов.

gRPC предполагает возможность аутентификации, потоковой передачи данных в любую сторону, управление потоками, отмену и time-out запросов, при этом выделяется кроссплатформенностью за счет генерации исходного кода классов для всех популярных языков программирования. 

Читать далее
Всего голосов 25: ↑14 и ↓11+3
Комментарии33

Ультимативный гайд по HTTP. Структура запроса и ответа

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

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture. Я решил написать цикл статей об истории и развитии HTTP, рассмотреть каждую из его версий и проблемы, которые они решали и решают сейчас. 

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

Читать далее
Всего голосов 16: ↑14 и ↓2+12
Комментарии4

Ультимативный гайд по HTTP. Cookies и CORS

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

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture, а это мой цикл статей о протоколе HTTP. В первой части мы уже познакомились с версией протокола 1.0 и поговорили о структуре ответов и запросов. Теперь пришло время узнать, что такое Cookies и для чего нужен CORS.

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии2

Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2

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

Продолжаем цикл статей о протоколе HTTP: расскажем, что нового привнесла версия HTTP/1.1 и какие у нее принципиальные отличия с версией HTTP/2.

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии10

Эволюция HTTP. Часть 2. Краткая история развития самого популярного протокола Всемирной паутины

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

Привет! Меня зовут Глеб Гончаров, я руководитель группы разработки клиентского продукта в СберМаркете. Это вторая часть в серии статей об истории развития самого популярного протокола Всемирной паутины — протокола HTTP.

В первой части я рассказал про старую группу протокола HTTP  (HTTP/0.9, HTTP/1.0, HTTP-NG, HTTP/1.1): причины их появления, видах запросов и недостатках. Сегодня же поговорим о новой группе, которая включает в себя протоколы SPDY, HTTP/2, gQUIC и HTTP/3.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии1

Пара HTTP-заголовков, о которых, похоже, не знают разработчики

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

Вот какое дело: как показывают мои изыскания, большинство веб-разработчиков поразительно мало знают об HTTP-заголовках или, в целом, о стандарте HTTP. Я имею в виду, что я понимаю то, что во многих университетах и школах, вероятно, этому не учат (там, где я учился, определённо, так и было). А кто будет, сидя дома праздным воскресным утром, думать о том, чтобы развлечь себя чтением стандарта HTTP? Да никто. Знаю, но… есть одно важное обстоятельство: отсутствие хоть какого-то понимания стандарта HTTP — это зияющая дыра в знаниях веб-разработчиков, в знаниях многих из тех, кто это читает. Предлагаю это исправить.

Читать далее
Всего голосов 52: ↑33 и ↓19+14
Комментарии19

Что выбрать для очередного API: HTTP или gRPC

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


Команда VK Cloud перевела статью с подробным техническим сравнением двух типов API: HTTP и gRPC. Автор рассказывает о своем опыте работы и описывает нюансы, преимущества и недостатки каждой технологии.
Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии9

Засылаем картинку из Unreal Engine на сервер в теле HTTP запроса

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

Привет, Хабражители!

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

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии3

Как создать микросервис на Rust при помощи gRPC

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров7.2K
image

Введение


В сегодняшнем туториале по 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
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии18

Как устроен «HTTPS по умолчанию»‎ в браузерe Brave

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

Начиная с версии 1.50, Brave внедряет новую технологию «HTTPS по умолчанию». Brave принудительно будет переводить сайты в режим HTTPS, прибегая к HTTP, только если сайт не поддерживает HTTPS или в тех редких случаях, когда известно, что сайт работает некорректно по HTTPS. Это наиболее агрессивная на рынке политика принудительного использования HTTPS.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии5

Основы библиотеки cURL PHP

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

cURL — библиотека, используемая для отправки HTTP-запросов с различных языков программирования, включая C, PHP и другие.

В статье проведено знакомство с библиотекой, описаны основные функции и предопределённые константы. Представлены способы настройки сеанса, совершения GET- и POST-запросов, обработка исключений, проверки SSL-сертификата и аутентификации на сервере.

Читать далее
Всего голосов 15: ↑12 и ↓3+9
Комментарии19

PowerShell и LiveJournal (ЖЖ): три способа аутентификации

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

Я изучаю сетевое взаимодействие по протоколу HTTP(S). Мне было интересно попробовать связаться с «Живым Журналом» (он же «LiveJournal» или «ЖЖ») из программы-оболочки «PowerShell» и получить от этого веб-сервиса какие-нибудь данные.

В статье описаны подходы к началу работы с ЖЖ из программы через веб. Даны ссылки на документацию. Детально, с практическими примерами на языке PowerShell, описано три способа аутентификации при вызове удалённых процедур (функций) программы-сервера «Живого Журнала»: «clear», «challenge-response» и способ с помощью «cookie». В последнем случае описано, как открыть сессию, работать в ней, а затем завершить ее.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Шаблоны тест-кейсов по API, тест-кейсы по идемпотентности

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

Привет всем, я, Надежда Дудник, главный инженер по тестированию в СБЕРе, а ещё ментор по тестированию ПО.

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

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

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

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

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

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

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии14

Как работает Docker Desktop Networking

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

Современные приложения активно используют сети. Обычное дело, когда во время сборки apt-get/dnf/yum/apk install устанавливает пакет из репозитория пакетов дистрибутива Linux. При выполнении команды приложение может захотеть подключиться к внутренней базе данных postgres или mysql, чтобы сохранить определённое состояние при вызове listen() и accept(). При этом разработчик должен иметь возможность работать отовсюду — из дома или офиса, с мобильного устройства или через VPN. Docker Desktop помогает сделать так, чтобы сеть «просто работала» в каждом из сценариев. В статье разбираем инструменты и методы, которые обеспечивают это, начиная с всеми любимого набора протоколов: TCP/IP.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии35

Полезные и неизвестные библиотеки Java

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

Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное и неизвестное». Предыдущая описывала несколько привлекательных, но малоизвестных возможностей Java. Подробнее об этом можно прочитать здесь.

Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test, то одновременно мы включаем такие библиотеки, как mockito, junit-jupiter или hamcrest. Конечно, это известные библиотеки для сообщества.

На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.

Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!

Читать далее
Всего голосов 12: ↑9 и ↓3+6
Комментарии4

Как я приложение с Go на Rust переписывал

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

О Rust я слышал ещё несколько лет назад и все его либо хвалили, либо порицали, по различным причинам, но сам как-то не брался за него - мне, неподготовленному к подобному синтаксису и не знакомому с подобными языками хотя бы на базовом уровне, в то время он казался совершенно непонятным.

Не так давно решил написать для себя небольшое приложение-бенчмарк для теста HTTP API серверов и написал его на Go. Но размер в 5 с лишним Мбайт, несоблюдение целевого RPS и некоторые другие проблемы заставили посмотреть в сторону более производительного Rust + Tokio + Hyper.

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

Читать далее
Всего голосов 50: ↑35 и ↓15+20
Комментарии56

Версионная миграция данных в мире DTO

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

Доброе время суток, уважаемое Хабр коммьюнити. В этой публикации я хотел бы показать несколько известных мне подходов к версионной миграции данных в контексте DTO. Примеры будут продемонстрированы на языке Java.

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии11

Основы веба, которые должен знать начинающий разработчик

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

В этом посте я объясню, как работает Интернет. Мы ответим на вопросы наподобие «Как браузер находит файл HTML для запрошенной веб-страницы?», «Как файл HTML превращается в интерфейс пользователя?», «Что можно сделать, чтобы ускорить этот процесс?», «Как устанавливается и поддерживается связь с сервером?», а также рассмотрим следующие концепции:

  • Клиент-серверную модель
  • Жизненный цикл запроса веб-страницы
  • Hypertext Transfer Protocol
  • Как браузеры рендерят контент
Читать дальше →
Всего голосов 50: ↑41 и ↓9+32
Комментарии16