Category : golang

golang
Почему Go?

На моих трансляциях лайв-кодинга постоянно всплывает этот вопрос. Проговаривал много раз, но если записать ответ, то дальше можно просто выдавать ссылку. Кодить начал в 1995-ом на Delphi для автоматизации каталога компьютерных комплектующих. Я был успешным менеджером оптовых и дилерских продаж в системном интеграторе, но занимался любимым делом всё свободное время. Накопил два чемодана книжек по программированию. И повторял, что вместо выписывания счетов-фактур, я стану разработчиком. Первые ве…

  • четверг, 6 ноября 2025 г. в 00:00:07
golang
Система типов и интерфейсы в Go (статическая типизация)

Эта статья собрана «по существу»: что нужно знать о типовой системе Go, как правильно и безопасно работать с интерфейсами и чем чреваты распространённые ошибки.СодержаниеКраткая характеристика типовой системы GoПримитивные и составные типыСтатическая типизация и проверка в компилятореИнтерфейсы: концепция и механика (под капотом)Method sets и pointer vs value receiversСовместимость типов и compile-time проверкиИнтерфейс interface{} (empty interface) и reflectType assertion и type switchВажные п…

  • четверг, 6 ноября 2025 г. в 00:00:06
golang
Как пробить днище проекта техдолгом без смс и регистрации

Вот давайте начистоту. Открываешь ты такой таск, видишь кусок кода, написанный полгода назад, и твоя первая мысль - "Господи, какой идиот это писал?". Потом git blame показывает твое имя. Классика. Этот момент, когда ты встречаешься со своим техническим долгом лицом к лицу.В сети полно статей, где техдолг раскладывают по квадрантам, рисуют красивые графики и сыплют терминами, от которых хочется заснуть. Это все академическая чушь, которая почти всегда бесполезна в реальной разработке, к…

  • среда, 5 ноября 2025 г. в 00:00:08
golang
Конкурентность — горутины и каналы

Конкурентность — это ядро языка Go. Горутины, каналы и связанные примитивы — это инструменты, с которыми Go делает параллелизм простым и выразительным. В этой статье я объясню концепции, покажу ключевые конструкции, разберу типичные ошибки/подводные камни, дам практические паттерны и инструменты для отладки и профилирования. В конце — краткий практический план действий.СодержаниеЧто такое горутина и как она работаетКаналы: буферизированные и небуферизированныеselect и управление множественными …

  • среда, 5 ноября 2025 г. в 00:00:07
golang
Когда мейнтейнер молчит

Странно писать про форк open-source проекта для ушедшего в историю Docker Swarm. Но после Millau остался ещё один гештальт - периодические задачи. Посмотрел на Ofelia и Swarm-cronjob, их звезды, обновления, количество заброшенных репортов. Попытался связаться с автором - тишина. Так что с чистой совестью взял код и добавил недостающее. Получилась Cirona - job scheduling с телеметрией и дашбордами.Почему не cronНаивная наихудшая реализации расписания в Docker - это использовать cron контейнера. …

  • понедельник, 3 ноября 2025 г. в 00:00:09
golang
Как я уменьшил Docker-образ Go-приложения с 1.92 GB до 9 MB

ВведениеПервый Docker-образ для моего Go-приложения весил 1.92 GB. Для микросервиса на 100 строк — абсурдно. Решил разобраться, куда именно уходит место и как добиться максимально лёгкого образа.За несколько итераций оптимизации удалось уменьшить образ в 91 раз — до 21 MB production вариант. С дополнительным UPX-сжатием в 213 раз — до 9 MB.В статьеМаксимальная оптимизация Docker-образа для GoВыбор базового образа и техник для каждого сценарияСоздал простенький мониторинг микросервисФункционал:/…

  • воскресенье, 2 ноября 2025 г. в 00:00:12
golang
Как «жыбий рыр» кейс делал

В этой статье я расскажу вам, как наша команда - "жыбий рыр" участвовала в хакатоне от DDOS-GUARDРассмотрим, какой кейс мы выбрали, покажу, к какой реализации пришли и покажу наше решение, а в конце подведем итогиОписание кейсаDevOps - Amazing AutomataДанный кейс состоял в автоматизации сборки и деплоя разных приложений - надо было создать некий сервис, который будет анализировать проект, собирать его и деплоить на серверГлавная задача заключалась в том, чтобы можно было загрузить любой…

  • воскресенье, 2 ноября 2025 г. в 00:00:11
golang
Green Tea: новый экспериментальный сборщик мусора в Go

Команда Go for Devs подготовила перевод статьи о новом экспериментальном сборщике мусора Green Tea, появившемся в Go 1.25. Он уже используется в Google и показывает снижение затрат CPU на GC до 40%. Разбираемся, почему это не просто оптимизация, а новый уровень эффективности.В Go 1.25 появился новый экспериментальный сборщик мусора под названием Green Tea, который можно включить, установив переменную окружения GOEXPERIMENT=greenteagc во время сборки. Во многих сценариях работы программы время, …

  • пятница, 31 октября 2025 г. в 00:00:08
golang
Как сделать идемпотентные API в Go: Idempotency-Key, дедуп в Redis/БД и защита от гонок

Привет, Хабр! Представьте: клиент отправил важный POST‑запрос (например, создание заказа или списание денег), но из‑за сетевого сбоя не получил ответ. Не зная, что на сервере операция уже выполнилась, клиент пробует повторить запрос. Если бэкенд не подготовлен к таким дублям, итог может быть печальным: мы создадим две одинаковые записи вместо одной или, хуже того, спишем деньги с пользователя два раза. Как этого избежать? Правильный ответ — реализовать идемпотентность в API.Идемпотентность запр…

  • четверг, 30 октября 2025 г. в 00:00:06