Category : golang

golang
Антипаттерны в TDD

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

  • среда, 18 октября 2023 г. в 00:00:17
golang
Улучшенная маршрутизация HTTP-серверов в Go 1.22

В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете net/http.Существующий мультиплексор (http.ServeMux) обеспечивает рудиментарное сопоставление путей, но не более того. Это привело к появлению целой индустрии сторонних библиотек для реализации более мощных возможностей. Я рассматривал эти возможности в серии статей "REST-серверы на Go", в частях …

  • среда, 18 октября 2023 г. в 00:00:17
golang
Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта

Привет, Хабр! Меня зовут Сергей Скубач, я работаю в VK и разрабатываю облачное хранилище WorkDisk. Мы используем Tarantool в своём продукте, так как его разрабатывают и развивают наши коллеги. Я впервые столкнулся с Tarantool именно в VK, и для более глубокого понимания решил попробовать использовать его в своём pet-проекте.Постараюсь рассказать о сложностях, с которыми столкнулся при внедрении Tarantool-а с позиции разработчика, впервые работающего с этой базой данных.Tarantool — это решение …

  • суббота, 14 октября 2023 г. в 00:00:17
golang
Как PaaS решил проблемы стандартизации разработки сервиса одной утилитой

Привет 👋 На связи команда PaaS СберМаркета. Меня зовут Роман, и уже больше 2-х лет моя группа занимается разработкой инструментов для разработчиков, в том числе утилитой sbm-cli, о которой хочу рассказать сегодня.Вероятно вы каждый день пользуетесь консольными утилитами, такими как git, homebrew, ssh, grep, find, etc. Мы сделали command line interface приложение, запуск которого на локальной машине разработчика может превышать количество запусков команды git (спойлер: статистика в конце статьи…

  • суббота, 14 октября 2023 г. в 00:00:17
golang
Самый быстрый поиск пути на Go без аллокаций и СМС

Алгоритмы важны. Но реализовать их можно очень по-разному. При одном и том же алгоритме, оптимизированная библиотека будет в тысячу раз быстрее наивной. Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее под кат! Интро Алгоритмы на сегодня: A-star и greedy BFS. Оба отлично разобраны в статье Introduction to the A* Algorithm. Поиск пути мне понадобился в игре Roboden. Написана она на Go с использованием движка Ebitengine, соответственно и библиотеку я искал …

  • пятница, 13 октября 2023 г. в 00:00:15
golang
Алгебраические Типы Данных

Что же такое Алгебраические Типы Данных(Algebraic Data Types(ADT))? Обычно определение состоит из терминов теории типов и обязательно с примером на Haskell. Но на практике всё не так сложно.Типы данныхСначала разберемся с типами данных в общем случае.Тип данных - это допустимое множество всех значений именнованой абстракции.НапримерСамый простой тип данных bit. Его значения: {0, 1}.Тип bool = {true, false}.Тип byte = {0,1,..,255} или {-128, -127,…, 127} или {ASCII Table}Обычно на уровне языка …

  • пятница, 13 октября 2023 г. в 00:00:14
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