
golang


Репозиторий
В своей жизни я видел много сложного кода. Довольно часто причиной этой сложности была логика приложения в сочетании с логикой базы данных. Сохранение логики вашего приложения вместе с логикой базы данных делает ваше приложение намного более сложным, его трудно тестировать и поддерживать. Кароч, в статье автор рассказывает как готовить паттерн "репозиторий"

Two mul or not two mul
Автору нужно было часто использовать алгоритм подписи ed25519 и это влияло на производительность. В итоге все уперлось в оптимизацию умножения

Кросс-языковые SDK
В этом посте описывается опыт создания переносимых кросс-языковых SDK и неожиданные технические сложности, которые несколько раз заставляли пересматривать подход. Началось всё с относительно простой реализации через FFI (Foreign Function Interface), но затем пришлось углубиться в изучение стандартных библиотек C, статическую линковку и в итоге перейти к WebAssembly. В процессе стало ясно, что даже в 2025 году мечта о по-настоящему переносимых библиотеках всё ещё далека от реальности. Однако гибридный подход, сочетающий WASM с нативным кодом, возможно, станет ключом к созданию кросс-платформенных SDK.

AdGuard
AdGuard — это программа для блокировки рекламы и защиты от слежки в интернете. После настройки она будет работать на всех устройствах у вас дома, и для этого не нужно устанавливать дополнительные приложения. Все работает через систему DNS Он работает как DNS-сервер, который перенаправляет запросы к отслеживающим доменам в "черную дыру", тем самым блокируя подключение ваших устройств к этим серверам. В его основе лежит то же программное обеспечение, что и у публичных DNS-серверов AdGuard, так что у них много общего кода.

pwru
это инструмент на основе eBPF, который помогает отслеживать сетевые пакеты прямо в ядре Linux. У него крутые возможности для фильтрации, так что можно детально разбираться, что происходит внутри ядра. Это особенно полезно, когда нужно отладить проблемы с сетевым подключением — можно копнуть глубоко и понять, где именно что-то пошло не так. Когда-нибудь я доберусь плотнее разобраться с eBPF

cleanups и weak
В прошлогоднем посте в блоге про пакет unique упомянули о некоторых новых функциях, которые тогда находились на стадии обсуждения. И теперь с Go 1.24 эти функции доступны всем разработчикам на Go. Речь идёт о runtime.AddCleanup, которая добавляет функцию в очередь на выполнение, когда объект становится недоступным, и о типе weak.Pointer, который позволяет безопасно ссылаться на объект, не мешая сборщику мусора его удалить. Вместе эти две функции дают достаточно возможностей, чтобы создать свой собственный аналог пакета unique! Давайте разберёмся, чем они полезны и когда их стоит использовать.

gnet
gnet — это событийно-ориентированный фреймворк для работы с сетевыми приложениями, который отличается высокой скоростью и минимальным потреблением ресурсов. Он был разработан с нуля с использованием системных вызовов epoll (для Linux) и kqueue (для macOS), что позволяет ему достигать значительно более высокой производительности и меньшего потребления памяти по сравнению с стандартной библиотекой net в Go в определенных сценариях. gnet и net придерживаются разных философий в подходе к сетевому программированию. Поэтому создание сетевых приложений с использованием gnet может существенно отличаться от разработки с net, и эти подходы сложно совместить. В сообществе существуют аналогичные продукты на других языках программирования, такие как libevent, libuv, Netty, Twisted, Tornado и другие. Все они работают по схожим принципам, лежащим в основе gnet.

10x Faster TypeScript
Вы уже наверняка слышали, но я вам все равно еще раз расскажу. Команда работает над новой версией компилятора TypeScript и сопутствующих инструментов. Нативная реализация значительно ускорит запуск редактора, сократит время сборки в 10 раз и заметно уменьшит использование памяти. И все это на Go Попробовать можно уже сейчас, ссылка в статье

Чистая Архитектура
Шаблон Чистой Архитектуры для приложений на Golang Цель этого шаблона - показать принципы Чистой Архитектуры Роберта Мартина (дядюшки Боба): - как структурировать проект и не дать ему превратиться в спагетти-код - где хранить бизнес-логику, что бы она оставалась независимой, чистой и расширяемой - как не потерять контроль при росте проекта

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

Swiss Tables
В оф блоге вышла статья "Faster Go maps with Swiss Tables" https://go.dev/blog/swisstable И в дополнение, еще одна статья про мапы в Go

С Java на Go
Интересная статейка как ребята свичнулись с Java на Go и решили все свои проблемы