Category : golang

golang
Продвинутые структуры Redis

Привет, Хабр! Я Олег Арутюнов, Go разработчик из Контура. Сейчас я работаю над проектом Мойра – опенсорс-системе реалтайм-алёртинга. Мойру разработали в Контуре ещё в 2015 году для того, чтобы доставлять алёрты на основе метрик из системы мониторинга Graphite, позже появилась поддержка метрик из Prometheus/VictoriaMetrics. Наша задача в случае поломки какой-то системы в Контуре, как можно быстрее уведомить о ней пользователей, разбудить их, достать и заставить всё починить.Пользователь Мойры со…

  • вторник, 20 августа 2024 г. в 00:00:08
golang
Написание функционального тестирования в Go

Не все знают, как писать функциональные тесты. В этой статье будут библиотеки, фишки про функциональные тесты, а самое главное - попрактикуемся их писать на примере Rest APIФункциональное тестированиеФункциональное тестирование - это такой тип тестирования, когда проверяется не маленькая часть, а вся программа, при этом сама программа не знает о том, что ее тестируюют. Правильно ли она работает при определенных условиях, что вернет, какая будет ошибка и т.дБиблиотекиВот несколько библиотек для …

  • воскресенье, 18 августа 2024 г. в 00:00:09
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