Category : golang

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
golang
Go (fiber) vs Rust (axum) JWT&DB

На medium.com есть ряд статей со сравнением простых web-сервисов, написанных на разных языках. Одна из них Go vs Rust: Performance comparison for JWT verify and MySQL query и судя по ней, Go на 42% быстрее чем Rust. Я решил перепроверить и заодно поменять Gin на Fiber, Axis на Axum и MySQL на PostgreSQL.Web-сервис будет принимать запрос с аутентификацией по токену JWT, искать в БД пользователя с данным email из JWT и возвращать его в виде json. Так как подобная аутентификация используется повс…

  • четверг, 30 ноября 2023 г. в 00:00:19
golang
Agency: The Go Way to AI. Часть 1

Рост генеративного ИИ, API OpenAI и локальные LLM, влияют на то, как мы разрабатываем приложения. У разработчиков на Python и JavaScript есть много инструментов, особо популярен LangChain. Однако, у гошников вариантов меньше. LangChainGo, порт оригинального LangChain, пытается маппить питонячие концепции на го, получается не слишком идеоматично. К тому же, есть ощущение, что LangChain сам по себе переусложнен.Из-за потребности в простом, но мощном инструменте для Go, мы разработали Agency. Эта…

  • среда, 29 ноября 2023 г. в 00:00:19