Category : golang

golang
Как создать систему страшных звонков на Хэллоуин на Go и Exolve Voice API

Хэллоуин — это время костюмов, конфет и, конечно же, легких розыгрышей. И что может быть лучше, чем отправить друзьям и знакомым жуткие автоматические звонки со страшными аудиосообщениями? В этой статье рассмотрим, как с помощью Exolve Voice API и Go можно создать систему для отправки пугающих звонков.Что нам потребуетсяAPI-ключ Exolve API (зарегистрируйтесь на Exolve).Go.Аудиофайлы для создания звонков (например, звук дыхания, шепот или страшные голоса). Скачать их можно здесь и дополнить свои…

  • вторник, 29 октября 2024 г. в 00:00:06
golang
Sidecar на Go: позволь другому заниматься твоими проблемами

Привет, Хабр!В распределённых системах каждая служба выполняет свою задачу: одна отвечает за логи, другая за обработку запросов, третья за безопасность. Но не всегда удобно нагружать основной сервис дополнительной логикой. Именно здесь хорошо вписывается Sidecar — отдельный контейнер или процесс, который берёт на себя часть инфраструктурных задач, разгружая основное приложение и позволяя сосредоточиться на главной бизнес-логике.Сегодня мы рассмотрим реализацию Sidecar на Golang.Реализация Sidec…

  • суббота, 26 октября 2024 г. в 00:00:08
golang
Микросервисы: Почему именно gRPC?

Архитектура микросервисов широко распространена в современном программировании. Благодаря этой архитектуре разработчики смогут самостоятельно разрабатывать сервисы и управлять ими. Однако очень важно выбрать правильный протокол для эффективного взаимодействия между микросервисами. Здесь протокол gRPC (Google Remote Treatment Call) выделяется своей высокой эффективностью и скоростью. В этой статье мы предоставим подробную информацию о RPC и gRPC, рассмотрим преимущества gRPC в архитектурах микро…

  • суббота, 26 октября 2024 г. в 00:00:07
golang
Как я отказался от оффера в Сбер

Вы, наверное, хотите сказать: "Ну отказался и отказался, что тут такого?". Чтобы добавить контекста, расскажу немного о себе. Ещё год назад я новоиспечённый гофер, только начинаю познавать основы языка, делаю свои первые пет-проекты и начинаю делать свои первые отклики. Естественно получаю кучу отказов. В тот момент я готов хвататься за любые возможности, лишь бы получить бесценный коммерческий опыт, даже работать бесплатно. По сути обучение и самообразование - это такая же неоплачиваем…

  • пятница, 25 октября 2024 г. в 00:00:11
golang
Паттерны многопоточности в Go

Привет! Ты читаешь эту статью, а значит интересуешься Go и хочешь прокачать свои навыки в многопоточности. Наверняка ты уже знаком и активно пользуешь примитивы многопоточного программирования (горутины, каналы, мьютексы). В этой статье я постараюсь рассказать о том как их компоновать в самые популярные паттерны для поддержки масштабируемости и удобства сопровождения будущих систем.Почему же многопоточность так важна? Сегодняшние приложения должны быть быстрыми и отзывчивыми, а для этого нужно …

  • четверг, 24 октября 2024 г. в 00:00:08
golang
Сравнение двух функций в Go с указателями и без

Меня часто спрашивают, почему указатели лучше? Шёрт побери, вот почему!Описание функций меняющих местами значения переменных: 1. Функция с указателями: func swapValues(first, second *int) { fmt.Println("Перед:", *first, *second) temp := *first *first = *second *second = temp fmt.Println("После:", *first, *second) }Эта функция использует указатели на целые числа (*int). При вызове функции передаются адреса переменных, что позволяет функции изменять реальные …

  • четверг, 24 октября 2024 г. в 00:00:06
golang
Развлекаемся с итераторами в Go

Релиз версии Go 1.23 добавил поддержку итераторов и пакет iter. Теперь можно перебирать константы, контейнеры (map, slice, array, string) и функции. Сначала создание итератора показалось мне неудобным, хотя в то же время его использование выглядело простым.Моя проблема с подходом к итераторам в Go заключается в том, что их нельзя «связывать» так,как это можно делать в JavaScript:[1,2,3,4] .reverse() .map(e => e*e) .filter(e => e % 2 == 0) .forEach(e => console.log(e)) Р…

  • четверг, 24 октября 2024 г. в 00:00:06
golang
Создание кастомного Kubernetes Scheduler для StatefulSet

В этой статье мы рассмотрим процесс создания кастомного scheduler'а для Kubernetes, ориентируясь на Kubernetes Scheduling Framework.Обычно для назначения подов на вычислительные узлы используется стандартный планировщик, который, проанализировав различные параметры, автоматически выполнит оптимальное размещение (например, распределит поды таким образом, чтобы не размещать их на вычислительных узлах с недостаточными ресурсами).В одном из наших проектов, где мы использовали оператор Strimzi д…

  • среда, 23 октября 2024 г. в 00:00:10
golang
Ошибки в Go: проблема и элегантное решение с библиотекой try

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

  • среда, 16 октября 2024 г. в 00:00:13