Category : golang

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
golang
Переход на Go глазами PHP-разработчика: 5 подводных камней

Хабр, привет! Меня зовут Костя Козин, я старший PHP-разработчик Lamoda Tech. За 17 лет в коммерческой разработке я писал на JS, PHP, и теперь на Golang. Сегодня в Lamoda Tech мы учим PHP-разработчиков писать на Go, и под это создали целый онбординг. Довольно часто в локальных обсуждениях я слышал, как тяжело дается переход с PHP на Go, а у некоторых первые месяцы работы с Go вовсе отбивают желание работать с языком. Поэтому я поделюсь подводными камнями, которые ожидают вас при переходе с одног…

  • среда, 16 октября 2024 г. в 00:00:12
golang
Go sync.WaitGroup и проблема с выравниванием

WaitGroup — это, по сути, способ дождаться, пока несколько горутин закончат свою работу. Мы начнем с основ, а затем разберемся, как это устроено под капотом.Есть классные статьи, где рассматривается несколько примитивов синхронизации в Go: Go Sync Mutex: Normal & Starvation ModeGo sync.Pool and the Mechanics Behind ItКаждый из них имеет свой набор проблем, и этот не отличается. Мы сосредоточимся на проблемах выравнивания WaitGroup, и как ее  внутренняя структура менялась в разных версиях.Эт…

  • вторник, 15 октября 2024 г. в 00:00:10
golang
Server Side Rendering на Go

Жизнь – это вечная спираль, где всё идёт по кругу, но с каждым витком становится лучше. Ещё 20 лет назад я писал веб-приложения на Perl + Template Toolkit 2, генерируя HTML на стороне сервера. Время шло, и веб-разработка разделилась на две половины: фронтенд и бэкенд, а между ними API. Со временем я переключился с Perl на Go для бэкенда и AngularJS, а потом и Vue для фронтенда. В таком стеке я создал несколько проектов, включая HighLoad.Fun. Писать API и генерировать клиентскую библиотеку на Ty…

  • воскресенье, 13 октября 2024 г. в 00:00:22
golang
Анонимная сеть в 100 строк кода на Go

ВведениеПрошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.НачалоЕсли мы посмотрим на большинство анонимных сетей современности, то можно заметить, что …

  • пятница, 11 октября 2024 г. в 00:00:10
golang
Создание AI-ассистента с OpenAI Assistants API на Go

Всем привет!Меня зовут Дмитрий, я занимаюсь развитием отношений с клиентами и партнерами в IT-компании StecPoint.Недавно возникла необходимость создать AI-ассистента, обученного искать и выдавать информацию из базы знаний, предоставленных заказчиком.В этой статье мы рассмотрим процесс создания MVP такого ассистента. Мы загрузим в него файлы, зададим инструкции, привяжем все к Telegram-боту и будем обрабатывать запросы пользователей. Для создания ассистента будем использовать функциональность Op…

  • вторник, 8 октября 2024 г. в 00:00:04
golang
Муравьиный алгоритм. Решение задачи коммивояжера

В данной статье я бы хотел объяснить работу муравьиного алгоритма и решить с его помощью задачу коммивояжера. Решение задачи сводиться к выходу из какой-либо вершины графа, прохождению по всем вершинам по одному разу самым коротким путем и возврату к начальной точке. В конце статьи вас ожидает реализация алгоритма на языке Go.Метод перебораСамый простой способ решить эту задачу можно методом перебора. Только данный способ подходит при малом количестве вершин. С увеличением роста вершин вычислит…

  • понедельник, 7 октября 2024 г. в 00:00:10
golang
Транзакции в БД на Go с использованием многослойной архитектуры

Когда я присоединяюсь к новой компании, меня часто посещает синдром самозванца. После всех этих собеседований кажется, что парни знают, что делают и я смиренно настравиаюсь учиться у лучших.Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления. 🤯 Проблема заключалась в том, что набор SQL-обновлений не был выполнен внутри транзакции. Работа в новой компании — это всегд…

  • понедельник, 7 октября 2024 г. в 00:00:09