Новости

Post Thumbnail

Кто отменил контекст?

В Go стандартные ошибки context canceled и context deadline exceeded - это те ещё головняки, потому что они говорят, что что-то пошло не так, но умалчивают, почему именно. С версий 1.20 и 1.21 в языке появились функции вроде WithCancelCause и WithTimeoutCause,...

Post Thumbnail

Аллокаторы

Автор продолжает цикл статей про рантайм Go. Теперь на очереде разбор аллокаторов. Аллокатор, по сути, компонента runtime, который эффективно управляет выделением и освобождением памяти в куче. Вместо того чтобы каждый раз обращаться к операционной системе ...

Post Thumbnail

eBPF и XDP

Еще одна неплохая статья по eBPF Аббревиатура eBPF расшифровывается как extended Berkeley Packet Filter (расширенный фильтр пакетов) — изначально она появилась как фильтр пакетов. Особую популярность eBPF получила в последние годы и активно развивается. В э...

Post Thumbnail

Уменьшаем бинарник

Инженеры Datadog рассказали, как всего за полгода им удалось "похудеть". Они уменьшили размер Go-бинарников своего агента мониторинга на 77% и вернулись к показателям пятилетней давности, при этом ничего не сломав и не вырезав ни одной функции. Годами они ...

Post Thumbnail

Sssssh

Автор запилил многопользовательскую "Змейку", в которую можно играть прямо в терминале. Вбиваешь ssh snakes.run и погнал. Самое сложное было заставить все это работать по SSH и не чтобы не сжиралось тонны трафика. Сначала автор мучился с графикой (терминал...

Post Thumbnail

Капасити

В статье объясняется, как работают подсказки ёмкости (capacity hints) в Go для срезов и карт. Срезы имеют явную капасити - это максимальное количество элементов, которое можно в них хранить до перераспределения памяти. В отличие от срезов, у мап нет поняти...

Post Thumbnail

Убер рейт лимиты

В статье описывается эволюция системы ограничения скорости запросов в Uber от разношорстных решений к единой автоматизированной платформе. Изначально каждая команда внедряла собственную логику тротлинга, и это довольно неудобно и сложно в обслуживании. Для...

Post Thumbnail

Go и Max

А вы что думали, я не буду про Max постить? Конечно буду Вот чувак написал клиент на Go для апишки макса и опкбликовал статью про него. Мое почтение, молодчага. Ждем, когда дадут возможность не только юрикам своих ботов заводить и апишкой пользоваться

Post Thumbnail

Traceway

Наткнулся на отличный инструмент для работы с трейсингом - Traceway. В статье по ссылке автор рассматривает разные способы трассировки времени выполнения запросов к базе данных и выделяет три подхода к решению этой задачи. Первый - ручное добавление спанов в к...

Post Thumbnail

Go fix

В блоге Go вышла статья Алана Донована про то, как круто обновили команду go fix в версии 1.26. Раньше это была просто скучная утилита для легаси кода, а теперь это настоящий "апгрейдер" кода: он сам прогоняет кучу анализаторов и приводит твой код к самому све...

Post Thumbnail

Аллокаторы

Автор рассказывает, как устроены аллокаторы памяти в современных языках вроде Rust, Zig, Odin и C3, где они являются "гражданами первого сорта". В каждом модном языке своя фишка: в Rust глобальный аллокатор по умолчанию (хоть и не указано какой), в Zig аллокат...

Post Thumbnail

AI или не AI

Весьма интересное обсуждение - стоит ли использовать AI для разработки Go? Рас Кокс очень обстоятельно отвечает всем интересующимся: засуньте уже себе в ...! На саммо деле, нет конечно, все очень прилично, но суть примерно как я описал выше. Он подчёркивает...

Post Thumbnail

Линкер

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

Post Thumbnail

uForwarder

Инженеры Uber рассказали, как им жилось с огромным кластером Kafka и почему они в итоге написали свой прокси-сервис с открытым кодом - uForwarder. По сути, это прослойка, которая прячет от разработчиков всю боль работы с очередями сообщений (вроде блокировок, ...

Post Thumbnail

Парсер JSON с помощью Egg

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

Post Thumbnail

Synctest прекрасен

Автор применили новый пакет Go "testing/synctest" к особенно проблемному участку кода и был приятно удивлены его эффективностью. В этой статье рассматривается пакет synctest, его нюансы и то, как он делает гораздо больше, чем просто ускоряет ваши тесты. Дей...

Post Thumbnail

Манки-патчинг

Учимся делать манки-патчинг в Go. Автор показывает, как с помощью рефлексии в рантайме изменить логику работы функции. В примере автор использует time.Now, и когда-то такой подход был актуален для тестов. Такие штуки очень полезны для общего развития и пониман...

Post Thumbnail

Go рантайм

Когда вы пишете на Go, многое происходит за кулисами. Горутины легковесны, каналы работают как надо, память управляется автоматически, а вам даже не приходится думать о пулах потоков. Всё это обеспечивается средой выполнения Go - сложной инфраструктурой, котор...

Post Thumbnail

Go 1.26

Там это, вышел свежий Go. Много всего интересного. Самое время на выходных попробовать новую версию

Post Thumbnail

Логическая репликация

Я тут начал ковырять как работают всякие инстументы для репликации данных из постгри куда-то еще. И это можно делать красиво на гошке. Можно наколбасить свой CDC фреймворк и наслаждаться. Для затравки закинул не свежую статью(но все еще актуальные) как ребята ...