С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:— Нет никакой организации! — вопили они.Подозреваю, что слежка велась через мой телеграм-канал.Тем не менее я жив, а значит, пора поведать об архитектурной подлости неимоверных масштабов. Вы узнаете, как ведется борьба с крупными корпорациями изнутри и снаружи, к…
Почему HTTP/2?HTTP/2 — это крупное обновление по сравнению с HTTP/1.1, и в наши дни он практически везде используется по умолчанию. Если вы открывали Chrome DevTools для проверки сетевых запросов, то, скорее всего, уже видели соединения по протоколу HTTP/2.Проверка подключений HTTP / 2 с помощью ChromeНо почему HTTP/2 так важен? Что не так с HTTP/1.1?В HTTP/1.1 была введена конвейерная обработка, которая на первый взгляд казалась значительным шагом вперед. Идея была проста: несколько запросов м…
Язык программирования Go, также известный как Golang, был разработан в Google в 2007 году Робертом Гриземером, Робом Пайком и Кеном Томпсоном. Он стал открытым исходным кодом в 2009 году.Go (или Golang) — это компилируемый, статически типизированный язык программирования, разработанный в Google. Он был создан для упрощения разработки масштабируемых и эффективных программ, особенно в многопоточной среде. Go обладает минималистичным синтаксисом, что делает его легким для изучения и использования.…
Мы в ответе за тех, кого разрастили. Go-разработчики из YADRO, Ви.Tech и Weborama рассказали, как работать с проектами, которые без должного внимания стали бы техдолгом. А еще — поделились опытом генерации стабов и организации нетривиального стриминга данных на Go. Собираем проект на Go: от Make до MiseРассказал: Даниил Подольский, эксперт по разработке ПО, Go-евангелист, YADROКоротко о сути доклада: Команда Common Yadro Platform, в которой работает Даниил, вырастила настоящего монстра в виде …
В мире микросервисов часто возникает необходимость сделать согласованные изменения в сервисах. Один из надёжных способов добиться этого — использовать паттерн «Сага», который помогает выполнять распределённые транзакции и при сбоях корректно откатывать изменения. Но, как всегда, есть нюансы, начиная от нереалистичных материалов на эту тему и заканчивая реальным опытом использования. Алексей Бакин ведёт канал «Заботливый разработчик» и занимается разработкой внутренних продуктов. Один из них — э…
Привет, Хабр!Сегодня рассмотрим библиотеку libp2p в Go. libp2p — это модульная библиотека для построения P2P-сетей. Libp2p выросла из проекта IPFS, но теперь активно используется в блокчейнах, мессенджерах и других децентрализованных приложениях. Главная фича библиотеки — она даёт возможность полностью контролировать P2P-коммуникации.Libp2p разделена на несколько модулей, которые можно подключать по мере необходимости:Transport: низкоуровневое соединение (TCP, WebSocket, QUIC, WebRTC).Muxing: п…
Жизненный цикл горутиныВсем привет! Меня зовут Дима, я лид команды государственных интеграций в Ozon Банке и очень люблю ковыряться в сурс-коде Go. Это всегда очень интересно: никогда не знаешь, что встретится в очередной функции. Иногда могут быть какие-то невероятные костыли, каждый из которых, справедливости ради, — осознанное задокументированное решение. А иногда — элегантные подходы, вдохновляющие на написание ещё одной json-варилки.Вы когда-нибудь, глядя на горутину, думали, что у неё под…
Сортировка — это процесс упорядочивания элементов в массиве или списке по определенному критерию (например, по возрастанию или убыванию). В программировании это одна из базовых задач, которая помогает эффективно искать, обрабатывать и анализировать данные. Давайте разберем основные алгоритмы сортировки, их принципы работы и сложность на примерах реализации на языке Go.Введение в алгоритмы сортировкиСуществует несколько способов сортировки данных. Основные алгоритмы можно разделить на две катего…
В этой статье вы узнаете о рекурсии и о том, как она работает.Примеры в этой статье на языке Go, но концепция рекурсии одинакова для любого языка программирования.Что такое рекурсия?В большинстве языков программирования функция может вызывать другую функцию. Но функция также может вызывать саму себя. Рекурсия - это техника, при которой функция вызывает саму себя.Пример:// Функция для вычисления факториала с использованием рекурсии func factorial(n int) int { if n == 0 { // Базовый случай: факт…