He is here

22 марта 2022
He is here

Свершилось. Самое ожидаемое обновление языка Go вышло в релиз 15 марта 2022 года. Улучшенная производительность, фаззинг и дженерики — всё значительно расширило возможности и упростило жизнь Go-разработчиков. Сейчас расскажем детальнее.

Go 1.18 is released!

Для подавляющего большинства разработчиков версия 1.18 будет в первую очередь ассоциироваться с внедрением дженериков и фаззинга. Про это мы как раз писали в прошлом дайджесте. Но вот за кадром осталась ещё одна интересная фича, а именно многомодульные рабочие пространства (Multi-module workspaces).

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

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

Конечно можно воспользоваться костылями в виде функции replace, но это может выйти боком. Если при коммите они улетят в репозиторий, то скорее всего это сломает CI/CD и сборку у других разработчиков из команды. Внедрение многомодульных рабочих пространств решает этот недостаток.

Компиляция GraphQL API в SQL-запросы

REST API несомненно удобная штука, но не лишенная определенных ограничений by design. Когда эти ограничения начинают откровенно мешать, появляются соответствующие инструменты. Одним из них стал GraphQL API. Это не просто очередная рядовая библиотека и не отдельный язык. Тут стоит рассматривать его в качестве умного слоя между клиентом и источниками данных. Вот эта статья на Хабре отлично объясняет, что это такое и как используется.

Задача создания API очень часто выливается в борьбу разработчика с ORM. Создатель инструмента GraphJin решил, что каждый раз писать код для преобразования данных достаточно затратно по времени. Из этого родилась идея о том, что можно применить к нему тот же подход, который обычно применяется компиляторами. Можно сформировать стандартные SQL-запросы прямо из GraphQL API. Это даёт значительный прирост производительности и упрощает процесс создания API.

Построение gRPC-сервера на Go

Сегодня своими руками мы построим простой gRPC-сервер с одним эндпойнтом. Не такая уж редкая ситуация, когда необходимо реализовать общение с клиентом по протоколу RPC. Транспортом при этом будет HTTP/2, а в качестве описания интерфейсов будет задействован протокол Protobuf. Это такая бинарная альтернатива XML. 

Собственно и сам фреймворк gRPC, и Protobuf были разработаны в Корпорации добра для внутренних нужд. Предпосылкой к созданию Protobuf стала необходимость реализовать обмен сообщениями между серверами без использования DOM и XML. В конечном итоге эти разработки были опубликованы для общественного использования под лицензиями BSD (для Protobuf) и APL 2.0 (для gRPC). Так что теперь любой желающий может создать свой сервер, в том числе и на языке Go.

Автор этой статьи собрал подобное серверное приложение без использования каких-либо сторонних утилит. Сам по себе процесс не слишком сложен — определить структуру проекта, создать proto-файл, нагенерировать заглушек и через пару минут уже приступить к тестированию созданного сервера. Кстати, даже не имея клиента, можно воспользоваться утилитой gRPCurl. Это как обычный curl, только для gRPC.

 

Рендеринг Markdown в HTML

Управление знаниями в организации — замечательная практика. Правда, когда встает вопрос о создании базы знаний, приходится решать много вопросов. Использовать ли покупное решение, такое как Confluence? Создать самописное решение на основе DITA? Или вообще пойти собственным путем и собирать документацию из Markdown? Последнее особенно интересно, ведь формат Markdown крайне прост для освоения и любим не только программистами, но и теми, кто часто создает инструкции.

Приложение, выполняющее рендеринг Markdown в HTML, может стать связующим звеном, между теми, кто создает документацию и теми, кто её использует. Это действительно удобно, ведь документацию можно хранить непосредственно в репозитории и активно задействовать версионирование. В целом, это полностью соответствует концепции Docs as code и помогает техническим писателям удобнее создавать актуальные материалы.

Создать такое приложение на Golang вполне реально за очень короткое время. Процесс детально расписан автором соответствующей статьи на Medium. Чтобы все выглядело красиво и аккуратно, задействуется Bulma CSS framework, о котором мы расскажем в следующем дайджесте по Frontend-разработке.

Обучение

Онлайн

Курс Python в Evrone Academy

60 учебных модулей 

Если вы думаете о смене работы или хотите стать частью нашей команды, но у вас недостаточно коммерческого опыта, то теперь можно учиться прямо в Evrone. А после — попасть к нам на оплачиваемую стажировку.

 

Основа обучения в Evrone Academy — наши высокие требования к разработчикам и опыт в проектах. Мы записали лекции, подготовили текстовые версии, добавили практические задания — это позволит вам подтянуть знания до middle-уровня. На стажировке мы дополним теорию практикой, а после — добро пожаловать на «боевой» проект.

Сейчас академия доступна в режиме early access — можно пройти базовые части по Python или Ruby. Но мы уже готовим новые материалы и практические задания, подписывайтесь на нас в соцсетях, чтобы не пропустить обновления!

Регистрация

Конкурсы для разработчиков

Онлайн

Go Quiz

до 19 апреля 2022

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

Его составляли наши опытные разработчики, так что придётся хорошо подумать. Внутри сложные вопросы и несколько вариантов ответов. Лишь один — верный.

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

Митапы

Онлайн

GO meetup

20 апреля 2022 19:00

Рады сообщить, что у нас запланирован отличный Go Meetup, который пройдёт 20-го апреля. Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых Go-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.