Новости

Post Thumbnail

Async/Await

Статья про реализацию паттерна Async/Await в Go. Якобы, он упростит написание конкурентного кода. В основном автор рекламирует свою либу go-opera. Ну, вот хрен знает, как по мне - только все сложнее становится.

Post Thumbnail

Проще лучше

Автор рассказывает как он запилил крутую базу данных с лок-фри ринг-буфером, пинером для GC и кучей умных слов в README, а потом оказалось, что всё это работает через жопу. Оказалось, что он перемудрил со всеми умными локфри алгоритмами. Мне кажется, у все...

Post Thumbnail

Свой маленький TCP

Есть чуваки - Pilot. Они пилять различные сетевые решения для агентов Они на Go с нуля забабахали свой транспорт для обхода NAT поверх UDP, очень похожий на TCP. Cо скользящими окнами, контролем перегрузок и повторными таймаутами. Обошлись вообще без сторон...

Post Thumbnail

FastCGI все еще достоин

FastCGI - протокол, которому уже 30 лет, но он по-прежнему может показать свою силу Автор предлагает использовать FastCGI для реверс прокси вместо HTTP. И в этом действительно есть смысл. Двес основные причины - безопастность и неопределенность в передаче н...

Post Thumbnail

Домашний HAL

Автор считает, что пора собирать себе домашнего HAL’а на новых локальных моделях вроде Gemma4 или Qwen 3.6. Сейчас даже на обычной видеокарте можно запустить нормального мультимодального ассистента, который и жестикулирует, и лицо распознает, и умный дом крути...

Post Thumbnail

Швейцарский стол

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

Post Thumbnail

Простое профилирование кучи

Статья от ребят из Coroot. Эти ребята знают толк в профилировании и вьювабилити. Тут они рассказывают, как вместо подключения pprof к Go-сервисам, чтобы посмотреть, что там с памятью, начали использовать встроенные возможности рантайма. Go сам постоянно соб...

Post Thumbnail

go tool task

Я очень люблю Taskfile и в своих петпроектах не пользуюсь Makefile. Это реально супер удобная замена уродского Makefile, но у старичка есть преймущество - он make есть везде. Но! Теперь для CI стало значительно удобнее использовать Taskfile через go tool t...

Post Thumbnail

Выбираем логер

На протяжении долгого времени в Go выбор библиотеки логирования был выбором между Logrus, zap, zerolog и несколькими другими, каждая из которых предлагала свой собственный интерфейс, идиомы и представления о том, как должно работать структурированное логирован...

Post Thumbnail

Контейнеры

Статья толково объясняет, как работают контейнеры изнутри. Автор на пальцах рассказывает, что Docker - это не магия, а просто удобная обертка над стандартными механизмами Linux: namespaces, чтобы процесс видел только свое "личное пространство" и cgroups, ч...

Post Thumbnail

Процент покрытия

Ребята из DoltHub решили наконец-то задуматься о покрытии кода тестами в своем проекте на Go, хотя до этого восемь лет жили без этого и норм. В Go с версии 1.20 появилась возможность собирать данные о покрытии не только для юнит-тестов, но и для интеграцио...

Post Thumbnail

Нетполлер

Еще одна из цикла про устройство рантайма Go В этой статье разбирается, как устроен сетевой поллер (netpoller) в Go - та самая магия, которая позволяет писать простой блокирующий код вроде conn.Read(), а под капотом использовать epoll, kqueue и IOCP без бло...

Post Thumbnail

Атомики

Автор рассказывает про атомарные операции в Go как более производительная альтернатива мьютексам для lock-free программирования. В статье объясняется аппаратная основа атомарных операций - инструкции CPU уровня LOCK XADD. Автор показывает как работать с ти...

Post Thumbnail

eBPF в GitHub

Ребята из GitHub рассказали как они используют eBPF. С помощью eBPF они перехватываем DNS-запросы, перенаправляют их через специальные DNS-прокси, выявляют обращения к проблемным доменам и даже определяем конкретный процесс или команду, вызвавшую определнны...

Post Thumbnail

Soppo

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

Post Thumbnail

Только свои ошибки

В многослойном Go-сервисе легко случайно пропустить наверх ошибки хранения данных (например, sql.ErrNoRows) вплоть до самых обработчика HTTP или gRPC и это приводит к связыванию транспортного уровня с деталями реализации базы данных. Чтоб такого не случалос...

Post Thumbnail

Паттерн репозиторий

Да да, банально, но всегда интересно смотреть кто как реализует разные паттерны Автор объясняет, как паттерн "репозиторий" помогает отделить бизнес-логику от деталей реализации хранения данных, что делает код более тестируемым, масштабируемым и гибким. Суть...

Post Thumbnail

Байтоебство

Статья объясняет, как использовать битовые флаги и битовые маски в Go для эффективной конфигурации вместо множества булевых полей в структурах. Автор показывает идиоматический паттерн с iota для генерации степеней двойки (1, 2, 4, 8…), демонстрирует основные б...

Post Thumbnail

Разбудить по сети

В статье подробно объясняется, как работает технология Wake-on-LAN, которая позволяет удаленно включать компьютер по сети. Автор разбирает структуру "волшебного пакета" (Magic Packet), который состоит из синхронизационной последовательности шести байт FF и...

Post Thumbnail

Черный ящик

Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор решил применить ту же концепцию "черного ящика" к логам: хранить последние N записей в кольцевом буфере без аллокаций на горячем пути, снэпшот по требованию и асинхронный сброс при оши...

Post Thumbnail

Версионирование

В статье автор делится опытом разбора инцидента, где отсутствие информации о версиях приложения привело к многократной задержке устранения проблемы. Он утверждает, что в отличие от бытовой техники с детальной маркировкой версий, в разработке ПО стандарты в...