Category : golang

golang
Визуализация результатов escape-анализа в VS Code

В Go есть возможность получить отчёт о выполняемом escape-анализе: go build -gcflags '-m=3 -l'. В этой статье я расскажу, как можно визуализировать этот отчёт в VS Code. Дополнительно приведу способ, как в несколько кликов проверить теорию (escape-анализ) практикой (профилирование). Визуализация с использованием gopls Этот метод основан на статье Analyzing Go Heap Escapes. Идём в Manage -> Settings -> User, там ищем gopls, далее выбираем Edit in settings.json и добавляем следую…

  • пятница, 8 декабря 2023 г. в 00:00:18
golang
Безопасность web приложений с использованием Identity Provider

В современном цифровом мире, где взаимодействие с онлайн-ресурсами и web приложениями стало неотъемлемой частью нашей повседневной жизни, безопасность и управление личной идентификацией стали ключевыми аспектами. Именно в этом контексте становится крайне важным понятие “Identity Provider” или, сокращённо, IdP.Identity Provider представляет собой централизованный сервис, который играет решающую роль в процессе аутентификации пользователей в сети. Это технологическое решение позволяет пользовате…

  • пятница, 8 декабря 2023 г. в 00:00:18
golang
Торговые роботы на Golang

Трейдеры на финансовом рынке обрабатывают большие объемы информации и принимают решения максимально быстро, чтобы не упустить возможность и избежать рисков. Получить преимущество можно, если умеешь хотя бы немного программировать. Это особенно важно там, где время — деньги.Я Александр Парфенов, бэкенд-разработчик в Тинькофф Инвестициях и автор InvestAPI SDK для языка Go. Расскажу о том, как автоматизировать торговые стратегии при помощи Tinkoff INVEST API и языка Go.Интервальный алгоритм торго…

  • среда, 6 декабря 2023 г. в 00:00:16
golang
DDD в golang. Превозмогая трудности

В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang.Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью type defintions. А разберу работу с изменением аггрегатов.Попытаюсь разобрать какие подходы распространены сейчас и почему DDD в go это сложнее, чем в других языках.В начале было Active recordДля большинства разработчиков, пишущих много обычных CRUD, интуитивным подходом является Active Recor…

  • вторник, 5 декабря 2023 г. в 00:00:25
golang
Многопоточность и параллелизм в Go: Goroutines и каналы

Язык программирования Go, разработанный с упором на простоту и эффективность, предлагает уникальный подход к реализации параллельных вычислений через Goroutines и каналы. Goroutines, представляющие собой легковесные потоки выполнения, обеспечивают значительные преимущества по сравнению с традиционными потоками, используемыми во многих других языках программирования. Они позволяют создавать тысячи параллельных процессов без значительной нагрузки на системные ресурсы. Каналы в Go, предоставл…

  • вторник, 5 декабря 2023 г. в 00:00:24
golang
ORM для реальных приложений не окупается

Идея упростить или абстрагировать код с помощью ORM, возможно, имеет очень ограниченный контекст применимости. По сути ORM хорош для приложений уровня простого CRUD, а дальше начинает только мешать. А CRUD-приложений в реальной жизни очень мало. Проблемы При использовании ORM мы обычно прописываем в коде сущности и их взаимосвязи, и по сути это — проектирование БД ещё раз (дублирование логики!) прямо в коде. Борьба с проблемами производительности никуда не денется всё равно, как ни абстраг…

  • вторник, 5 декабря 2023 г. в 00:00:24
golang
Есть ли Singleton в Golang?

Давайте начнем с определения из Википедии.“Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.”“Единственный экземпляр некоторого класса” означает что нет возможности написать код, в котором объект может быть скопирован или создан еще каким-либо способом.В этом посте про "гарантирующий".Рассмотрим общеизвестную реализац…

  • вторник, 5 декабря 2023 г. в 00:00:20
golang
Разработка простого DNS сервера на Go, согласно RFC

Привет, Хабр!В этой статье я хочу рассказать о своем опыте создания DNS сервера. Разрабатывал я его "чисто повеселиться", при разработке будем придерживаться спецификации RFC.DNS серверСейчас по-быстрому разберемся, в чем принцип работы DNS серверов. Чтобы сейчас читать эту статью, вы зашли на Хабр, для этого в браузере вы ввели www.habr.com, браузер же переводит этот домен в ip адрес, по типу 178.248.237.68:443, чтобы сделать запрос. Домены существуют, чтобы люди не запоминали эти сло…

  • воскресенье, 3 декабря 2023 г. в 00:00:22
golang
Мапы в Go: уровень Pro

В мире программирования часто встречаются две структуры данных: массивы, или списки; и мапы — словари или объекты. В этой статье рассмотрим, как устроены мапы в языке Go и как это реализовано в коде. Мапа в Go — это хэш-таблица, она нужна для хранения пар «ключ-значение».Теория хэш-таблицХэш-таблица — это структура данных, ассоциативный массив. Она позволяет хранить пары «ключ-значение» и выполнять три операции: поиск значения по ключу, добавление пары,удаление пары. В общем случае хэш-таблица…

  • суббота, 2 декабря 2023 г. в 00:00:23