golang

Post Thumbnail

Репозиторий

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

Post Thumbnail

Maelstrom

Быстрый тестовый раннер для Rust, Go и Python, который запускает каждый тест в отдельном контейнере. Тесты могут выполняться локально или распределяться по кластеру для параллельного запуска.

Post Thumbnail

Two mul or not two mul

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

Post Thumbnail

Кросс-языковые SDK

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

Post Thumbnail

AdGuard

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

Post Thumbnail

pwru

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

Post Thumbnail

cleanups и weak

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

Post Thumbnail

gnet

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

Post Thumbnail

10x Faster TypeScript

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

Post Thumbnail

Чистая Архитектура

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

Post Thumbnail

Кастомные memory pools

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

Post Thumbnail

Swiss Tables

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

Post Thumbnail

Limbo Go

Пример использования purego для работы с новым, модным молодежным драйвером для SQLite - limbo purego - дает возможность вызывать Rust сразу из Go. Я как-то писал про него

Post Thumbnail

AtomixDB

Atomix DB - это мини-реляционная база данных, полностью написанная на Go. Основное внимание было уделено внедрению и пониманию работы базы данных, управлению хранилищем и обработке транзакций. Отличный образовательный проект

Post Thumbnail

revive

Быстрый, настраиваемый, расширяемый, гибкий и красивый линтер для Go. Это простая замена glint. Revive предоставляет платформу для разработки пользовательских правил и позволяет вам определить строгие настройки для улучшения процессов разработки и проверки кода.

Post Thumbnail

synctest

Тестирование конкурентного кода с помощью synctest. Продолжаем разбираться с фишками Go 1.24