Category : golang

golang
Операторы в Kubernetes

Ручные изменения в кластере доставляют одну лишь головную боль. А чтобы от них избавиться, используются операторы, в частности K8s. Что это такое? И самое главное, как его написать?Меня зовут Дмитрий Самохвалов, я архитектор в компании КРОК. Пробовал себя в разработке, инфраструктуре и тимлидерстве. Расскажу про архитектуру и внутреннее устройство оператора и покажу как создать свой оператор на Go. Все остальные вопросы можно задать мне в Телеграм.Что такое облачный сервис-провайдер?Один из пр…

  • пятница, 13 октября 2023 г. в 00:00:13
golang
Книга «100 ошибок Go и как их избежать»

Привет, Хаброжители! Лучший способ улучшить код — понять и исправить ошибки, сделанные при его написании. В этой уникальной книге проанализированы 100 типичных ошибок и неэффективных приемов в Go-приложениях. Вы научитесь писать идиоматичный и выразительный код на Go, разберете десятки интересных примеров и сценариев и поймете, как обнаружить ошибки и потенциальные ошибки в своих приложениях. Чтобы вам было удобнее работать с книгой, автор разделил методы предотвращения ошибок на несколько …

  • пятница, 13 октября 2023 г. в 00:00:13
golang
Profile-guided optimization в Go 1.21

В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO), которую пользователи могли протестировать. После устранения известных ограничений в предварительной версии и дополнительных доработок благодаря отзывам и вкладу сообщества, PGO в Go 1.21 готова к использованию! Полная документация приведена в руководстве пользователя по profile-guided optimization.Ниже мы рассмотрим пример использования PGO для повышения производительности приложения. Прежде чем мы перейдем к рас…

  • среда, 11 октября 2023 г. в 00:00:17
golang
Ускоряем разработку новых фич: как я написал плагин кодогенерации для Protobuf

Всем привет! Меня зовут Ефим Воробьёв, я учусь на программиста в университете, создаю свои проекты и работаю в стартапе. Я с девятого класса разрабатывал веб-приложения на PHP и Python, зарабатывая на фрилансе. Со временем я понял, что хочу развиваться дальше, и поступил на курс «Go-разработчик» в Практикуме. С новыми знаниями я пришёл в стартап «умных дверей». Для него я написал плагин для Protobuf, который собирает служебную информацию из proto-файлов, сопоставляет её с информацией от контро…

  • среда, 11 октября 2023 г. в 00:00:17
golang
Введение в приёмочные тесты

В компании $WORK мы столкнулись с необходимостью "плавного завершения работы" наших сервисов. Грациозное завершение работы позволяет убедиться в том, что система правильно финиширует перед завершением. В качестве аналогии можно привести ситуацию, когда человек пытается правильно завершить телефонный разговор перед тем, как перейти к следующей встрече, а не просто бросает трубку на середине фразы.В этой главе мы расскажем о том, что такое плавное завершение работы в контексте HTTP-серве…

  • понедельник, 9 октября 2023 г. в 00:00:14
golang
Масштабирование приёмочных тестов

Эта глава является продолжением главы "Введение в приёмочные тесты". Готовый код этой главы можно найти на GitHub.Приёмочные тесты очень важны, они напрямую влияют на вашу способность уверенно развивать систему с течением времени при разумной стоимости изменений.Кроме того, они являются прекрасным инструментом для работы с устаревшим кодом. Если вы столкнулись с плохой кодовой базой без тестов, не поддавайтесь искушению начать рефакторинг. Вместо этого напишите несколько приёмочных тес…

  • понедельник, 9 октября 2023 г. в 00:00:13
golang
Введение в приемочные тесты

В компании $WORK мы столкнулись с необходимостью "плавного завершения работы" наших сервисов. Грациозное завершение работы позволяет убедиться в том, что система правильно финиширует перед завершением. В качестве аналогии можно привести ситуацию, когда человек пытается правильно завершить телефонный разговор перед тем, как перейти к следующей встрече, а не просто бросает трубку на середине фразы.В этой главе мы расскажем о том, что такое плавное завершение работы в контексте HTTP-серве…

  • воскресенье, 8 октября 2023 г. в 00:00:15
golang
Работа без имитаторов

В этой главе мы погрузимся в мир тестовых двойников и рассмотрим, как они влияют на процесс тестирования и разработки. Мы раскроем ограничения традиционных mocks (имитаторы), stubs (заглушки) и spies (шпионы) и представим более эффективный и адаптируемый подход с использованием подделок (fakes) и контрактов (contracts).tl;drMocks, spies и stubs побуждают вас кодировать предположения о поведении зависимостей ad-hoc в каждом тесте.Эти предположения, как правило, не проверяются вручную, что стави…

  • воскресенье, 8 октября 2023 г. в 00:00:14
golang
Готовый набор golang линтеров (джунам и мидлам)

При рефакторинге легаси проекта перед нами встала задача внедрить в компании готовый линтер-тулз, дабы минимизировать объёмы генерируемого говнокода.Вот что у нас получилось (полная инструкция по внедрению).1. Сам ямл, со всем конфигомЯмл закидывается в корень проекта под названием .golangci.ymllinters-settings: varnamelen: min-name-length: 2 max-distance: 20 nlreturn: # Size of the block (including return statement that is still "OK") # so no return split required.…

  • суббота, 7 октября 2023 г. в 00:00:21