Category : golang

golang
Reflection в Go

Привет, Хабр!Сегодня мы рассмотрим в одну из интересных особенностей Golang — reflection. Мы рассмотрим, что такое reflection, как он работает, и когда его стоит использовать. Reflection позволяет программам инспектировать свои структуры и модифицировать поведение в runtime. Пакет reflectВ Go reflection реализован через пакет reflect. Этот пакет имеет интерфейсы и функции для динамического анализа типов и значений на стадии выполнения программы. Основные концепции, которые необходимо понимать, …

  • воскресенье, 18 августа 2024 г. в 00:00:08
golang
Как защитить свое Go-приложение

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

  • среда, 14 августа 2024 г. в 00:00:09
golang
Как создать генератор кодов верификации на Go с помощью SMS API

Привет, Хабр! Всегда было любопытно, как автоматизировать отправку кодов через SMS для второго этапа подтверждения личности при входе пользователя. Мы с коллегой решили разработать простой, но эффективный инструмент, который мог бы автоматически генерировать и отправлять SMS с кодами пользователя. Для реализации этой задачи выбрали API сервиса МТС Exolve.Этот сервис упрощает рассылку SMS и предоставляет удобные инструменты для работы с сообщениями. Также Exolve добавляет новым пользователям 300…

  • среда, 14 августа 2024 г. в 00:00:08
golang
ChatOps на практике: создание бота для мониторинга логов

Недавно на работе меня попросили придумать рабочую задачку для студентов. Поскольку я работаю в инфраструктурной команде, мои повседневные задачи вряд ли подходят для их домашек или курсовых работ. Чтобы найти подходящую идею, я начал перебирать инструменты, которыми мы с командой часто пользуемся. Большинство из них интегрированы с чатами и ботами, и один из ключевых инструментов — это Алерт Бот. Он отслеживает логи и отправляет оповещения, если происходит что-то необычное. Это позволяет нам б…

  • среда, 14 августа 2024 г. в 00:00:07
golang
Собиратель конфигураций на Go

Начну с того, что я C#-разработчик, но Go мне очень нравится и один из проектов я решил для разнообразия и расширения знаний написать в связке Go + React.js + MongoDB. И тут я понял, что не могу найти библиотеку пакет для чтения единых настроек конфигурации из разных источников. Часть настроек была в .env, часть - в переменных окружения. Хотелось получить экземпляр одной структуры со всеми значениями, выполнив какую-то одну функцию. Возможно, плохо искал. Но, не найдя, решил написать своё. Тем …

  • вторник, 13 августа 2024 г. в 00:00:10
golang
Как использовать defer в Go

Привет, Хабр!Defer — это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.В этой статье мы и рассмотрим как использовать defer в Golang.ОсновыЧтобы понять, как defer работает в Go, нужно знать немного о его внутреннем устройстве. Когда вы используете defer, вы говорите компилятору Go отложить выполнение указанной функции до момента завершения окружающей функции. То естьdefer п…

  • воскресенье, 11 августа 2024 г. в 00:00:08
golang
Микросервисы на Go: Как заставить систему работать на тебя

Когда-то мне пришлось перелопатить сотни статей, пролистать горы книг и выпить не одну чашку кофе, чтобы разобраться в микросервисной архитектуре. Я искал ответы на вопросы, которые появлялись на каждом шагу: как заставить микросервисы работать дружно, как удержать систему на плаву и, главное, как не сойти с ума от всех этих нюансов. После всего этого марафона мне хочется поделиться своими находками и советами, чтобы сэкономить тебе пару бессонных ночей.Эта статья — это своего рода маленький га…

  • суббота, 10 августа 2024 г. в 00:00:09
golang
Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом. В Каруне этот вопрос иногда возникал на код ревью, поэтому такая статья мне показалась полезной. TLDR: sync.Map лучше работает на задачах, где много операций чтения, и ключи достаточно стабильны. Внутреннее устройство sync.Map sync.Map — это потокобезопасная реализация мапы в Go, оптимизированная для определенных сценариев использования. Основная структура sync.Ma…

  • пятница, 9 августа 2024 г. в 00:00:05
golang
Подбираем нужные автозапчасти: миллиарды комбинаций за 12 минут

Привет! Меня зовут Кирилл Егоров, я технический лидер двух юнитов Авито: «Запчасти» и «Строительство и ремонт». В этой статье рассказываю о том, как мы определяем, к каким автомобилям подходят запчасти из объявлений, как нам с помощью Golang удается перебрать миллиарды вариантов и какие трудности пришлось решить при реализации этого решения.Задача юнита «Запчасти» — помочь пользователю легко и быстро найти детали, которые подойдут его авто. В приложение встроен раздел «Гараж» — туда можно добав…

  • среда, 7 августа 2024 г. в 00:00:10