Category : golang

golang
Исследуем лицензирование Cockroach DB до Enterprise или не случившийся хард-реверс-инжиниринг

Добрый день, меня зовут Богдан мой профиль - java-разработка, о рабочих буднях и прочих оклоджавовых штуках рассказываю в своем телеграмм канале, но сегодня не о java, ну вернее почти не о ней :)ДИСКЛЕЙМЕР: вся информация в статье представлена с исследовательской целью и не преследует никаких деструктивных мотивов, анализ выполнен на основе открытых исходных кодов, все персонажи вымышлены, а совпадения случайны.Пролог. Как известно java компилируется в байт-код, скомпилированные классы также б…

  • среда, 20 марта 2024 г. в 00:00:17
golang
Monkey patching в Go, или грабли от Apple

Модель - Stable Diffusion v1-5Все началось с того, что я в очередной раз немного поменял структуры БД, и в некоторых SQL-запросах добавилась новая колонка. Нормальная ситуация - взять и легким движением руки сломать половину unit test’ов, потому что БДшные моки ожидают определенный текст запроса.Хрупкость тестов раздражала меня давно, но в тот раз я был не в настроении, и решил, что хватит, пора что-то с этим сделать. Ясное дело, если я меняю запрос в функции, это ломает тесты для этой функции…

  • среда, 20 марта 2024 г. в 00:00:16
golang
Основы тестирования в Go: mock-объекты, fuzzing и property-based testing

Привет, Хабр!Golang как ЯП очень хорош для разработки высокопроизводительных приложений. В любом проекте наступает момент, когда нужно проверить, насколько хорошо все работает на самом деле, это можно сделать с помощью тестирования.Тестирование в Go можно выполнять с помощью mock-объектов, fuzzing и property-based testing. В этой статье мы рассмотрим эти механизмы.Mock-объектыMock-объекты — это такие подставные объекты, используемые в тестировании для имитации поведения реальных компонентов си…

  • среда, 20 марта 2024 г. в 00:00:15
golang
Простой CRUD на chi. Часть 1

ВведениеСогласно официальному сайту, chi — это легковесный, идиоматический и композируемый маршрутизатор для создания HTTP-сервисов на Go. Он на 100% совместим с net/http и довольно легок в обращении, однако его документация предназначена скорее для опытных разработчиков, чем для новичков, поэтому я решил написать серию статей, в ходе которых мы будем постепенно развивать и перерабатывать простейший CRUD, написанный на chi.В рамках данной части мы напишем код, который ляжет в основу дальнейш…

  • понедельник, 18 марта 2024 г. в 00:00:17
golang
Работа с Kubernetes: поднимаем локальный кластер и деплоим в него приложения

Привет! Меня зовут Павел Агалецкий, я ведущий разработчик юнита Platform as a Service в Авито. Kubernetes — один из самых популярных инструментов для деплоя приложений и сервисов. В Авито мы используем его не только в продакшене, но и в качестве среды для локального запуска сервисов на машинах разработчиков. В этой статье я подробно разбираю, как поднять маленький кластер Kubernetes на своём компьютере с помощью общедоступных инструментов и деплоить простейшие приложения.Подготовка к работе: у…

  • суббота, 16 марта 2024 г. в 00:00:15
golang
Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go

Эта статья основана на истории об одном личном челлендже. Нужно было помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось IPC для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях числилось использование чистого С. Другие языки, включая С++ и Go, не рассматривались. В итоге я получил интересный опыт системного и параллельного программирования. Меня зовут Алексей Буреев, я работаю старшим инженером по …

  • пятница, 15 марта 2024 г. в 00:00:12
golang
А ты хорошо знаешь Go? Держи пару полезностей по оптимизации кода

Привет, Хабр!Эта статья — моя подборка приёмов и техник, которые помогут писать лаконичный и производительный код на Go без лишних костылей и велосипедов.Речь пойдёт о:полезностях для конкурентного программированияприёмах в Go в целом, таких как использование iota, работа с ошибками, вывод интерфейса и т.д.методах оптимизации работы со слайсамиОбсудим, как избежать ненужной аллокации памяти, как быть с состоянием гонки, поговорим про компактность и лаконичность кода и ещё про массу полезных шт…

  • среда, 13 марта 2024 г. в 00:00:16
golang
Делаем RPG на Go: часть 0.5

В предыдущей статье мы начали знакомство с Ebitengine. В этой части структура игры будет доработана и переведена на сцены. Часть 0.5? Это вторая pre-1 часть, в которой разрабатывается отдельный демо-проект. Начинать делать RPG с нулевой базы было бы слишком сложно: я хочу использовать все свои любимые библиотеки и практики как можно раньше, при этом у меня не получилось придумать способа достаточно плавно вводить все составляющие на менее искусственном проекте. Возможно, уже следующая статья …

  • среда, 13 марта 2024 г. в 00:00:15
golang
Go на митап: обсудим sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках

28 марта встречаемся на митапе по Go-разработке с инженерами из команд систем хранения данных и телекома YADRO, а также разработчиками из VK и AvitoTech. Эксперты расскажут, как: снизить нагрузку на сборщик мусора,сделать свой mini-k8s,написать библиотеку для обработки ошибок,использовать горутины грамотно и безопасно.Митап пройдет в Нижнем Новгороде и онлайн. Регистрируйтесь на встречу по ссылке и выбирайте удобный формат участия. Снижаем нагрузку на Garbage Collector и ускоряем работу с памя…

  • среда, 13 марта 2024 г. в 00:00:15