Новости

Post Thumbnail

Traefik на Rust

Rivet Guard - это главный распределитель трафика в экосистеме Rivet. Его задача — принимать все входящие запросы и грамотно их раскидывать. Фактически, это умный маршрутизатор, который обеспечивает порядок в системе и гарантирует, что каждый запрос окажется в ...

Post Thumbnail

Go для агентов

Агент — это программа, которая работает в цикле и сама решает, что делать дальше. Если объяснять проще: представьте робота, который не просто тупо выполняет заранее прописанные шаги (это был бы просто "рабочий процесс"), а умеет немного думать и выбирать сл...

Post Thumbnail

ZST

Указатели на типы нулевой длины (ZST) могут быть очень полезными для экономии памяти и мощных механизмов проектирования, но взаимодействие с указателями на них может привести к ошибкам Лучше избегайте использования ZST в качестве указателей, предпочитая пр...

Post Thumbnail

Никакого сахара

Одна из самых старых и постоянных претензий к Go касается многословности обработки ошибок. Мы все хорошо (а кто-то, возможно, и болезненно) знакомы с этим шаблоном кода: if err != nil. Уже было довольно много разных пропозалов на тему обработки ошибок. Это и h...

Post Thumbnail

Гол!

Пятница - время новых языков программирования. Сегодня у нас Goal - язык для работы с массивами. Array programming language (язык программирования для работы с массивами) - это тип языков, где операции по умолчанию применяются к целым массивам данных, а не ...

Post Thumbnail

GORM Generics

GORM официально добавил поддержку дженериков Go в своей последней версии (v1.30.0 и выше). Это нововведение существенно улучшает удобство использования и типобезопасность, одновременно устраняя SQL-загрязнение при повторном использовании экземпляров gorm.DB. К...

Post Thumbnail

Что нового в Go

В Go 1.24 появилось множество достойных нововведений: поддержка постквантовой криптографии, полноценная работа с обобщёнными псевдонимами типов (generic type aliases), а также ряд оптимизаций в рантайме, которые значительно снижают нагрузку на CPU для большинс...

Post Thumbnail

DI не нужен

На самом деле нужен, конечно В промышленной разработке на Go dependency injection (DI) часто незаслуженно демонизируют - но только из-за перегруженных DI-фреймворков. Сам же подход DI исключительно полезен. Просто его обычно объясняют через призму ООП-терми...

Post Thumbnail

Synctest

В блоге victoriametrics продолжают публиковаться годные статьи Synctest — это новый механизм, добавленный в Go 1.24. Он позволяет детерминированно тестировать конкурентный код, выполняя горутины в изолированных и контролируемых окружениях. В synctest вре...

Post Thumbnail

Искусство пулинга

В обычной разработке мы то и дело натыкаемся (или хотя бы слышим) на одни и те же грабли: сервисы падают из-за нехватки ресурсов, память скачет из-за бесконечного создания объектов, а базы данных тормозят из-за постоянных переподключений. Корень зла тут один —...

Post Thumbnail

Токены и бакеты

Контроль трафика с помощью алгоритма токен бакета Представьте, что у вас есть 5 билетов на поездку, и каждый новый час вы получаете новый билет, но вы никогда не сможете превысить лимит в 5 билетов. При каждой поездке используется один билет. Таким образом,...

Post Thumbnail

Сапер

Небольшой, но интересный туториал по написанию сапера на Go и Raylib. Ага, того самого как в старые добрые времена. Исходники в комплекте

Post Thumbnail

GoVisual

Очень легкий и простой визуализатор и дебагер для HTTP запросов. Работает как красивая панелька, доступная по отдельной ссылке. Настройки нужны минимальные, добавляется в код как миделваря. Возможности: - Мониторинг запросов в реальном времени - отслеживан...

Post Thumbnail

Gravity

Это селфхостед DNS с возможностью блокировки рекламы и еще кучей всяких фишек. Большая часть кода основана на Blocky - это тоже отличный DNS сервер на Go Кстати, есть ее видос про написание своего DSN сервера на канале https://vkvideo.ru/@kodikapusta

Post Thumbnail

Хендлер ошибок

Простой паттерн, который немного упростит вам жизнь при разработке вашего API. Автор предлагает использовать врапер для перехвата любых ошибок на уровне роутера. Просто, но эффективный и удобный паттерн

Post Thumbnail

sync.WaitGroup

WaitGroup - это очень удобный и на первый взгляд очень простой инструмент. Но есть несколько заковыристых моментов, которые могут стрельнуть в колено. Бездумное использование sync.WaitGroup без полного понимания его работы может легко привести к ошибкам - напр...

Post Thumbnail

Graceful Shutdown

Корректное завершение работы в любом приложении, как правило, должно удовлетворять трём минимальным условиям: - Закрытие точки входа. Остановка приёма новых запросов или сообщений из источников (HTTP, pub/sub систем и т.д.). При этом исходящие подключения к...

Post Thumbnail

Singleflight

Малюсенькая статья про пакет и паттерн singleflight. Очень удобно когда вы из разных потоков запрашиваете данные по ключу, которые редко меняются

Post Thumbnail

Change Data Capture

Реализация паттерна Change Data Capture (CDC) на Go. Этот паттерн позволяет отслеживать изменения в базе данных в реальном времени, что критически важно для событийно-ориентированных систем (event-driven), аналитических пайплайнов или синхронизации микросервис...

Post Thumbnail

Ассемблер на Go

Avo упрощает написание, проверку и поддержку высокопроизводительного ассемблерного кода в Go. Пакет avo дает удобный интерфейс который ускоряет разработку ассемблерного кода без потери производительности: - Используйте Go-конструкции для генерации ассемб...