Category : golang

golang
Multipath TCP в Go

КДПВПо данным mptcp.io на 1 ноября 2023 года в глобальной сети функционируют около 350 тысяч ресурсов с поддержкой Multipath TCP (далее - MPTCP).График с сайтаРанее уже был проведен некоторый анализ внедрения стандарта.И, если коротенечко, то MPTCP позволяет использовать несколько каналов связи. Например на смартфоне использовать одновременно WiFi и сотовую сеть.Предназначен для решения задачи улучшения производительности (утилизации каналов) и надежности передачи данных в сети.Другим инструме…

  • четверг, 9 ноября 2023 г. в 00:00:19
golang
Организация стенда локальной разработки для самых маленьких с автоматической пересборкой приложения…

Вносить изменения в код приложения и тут же автоматически получать задеплоенные изменения, чтобы быстро тестировать его, — мечта разработчика. В этой статье мы посмотрим, как реализовать такой подход для небольшого приложения с фронтендом и бэкендом: организуем два варианта локального стенда на базе minikube или Docker с автоматическим развертыванием всех изменений или только закоммиченых в Git. Бэкенд приложения напишем на Go, а фронтенд — на Vue.js. Все это позволит быстро запускать проект д…

  • вторник, 7 ноября 2023 г. в 00:00:20
golang
Проблемы функции Golang init

Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на ящик, в котором находятся некоторые инструменты или небольшая машина. Он является отправной точкой для инициализации всего пакета. По-видимому, это соответствует назначению функции init.Предположим, что у вас есть код без функции init, например, такой:// foo.go package foo var A int func bar(){} /…

  • воскресенье, 5 ноября 2023 г. в 00:00:21
golang
Реализация Graceful Shutdown в Go

Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db не сбрасывает текущее состояние на диск, или что если вы хотите завершить работу веб-сервера с тысячами соединений, но не дожидаетесь окончания запросов. Изящное завершение работы не только положительно сказывается на пользовательском опыте, но и облегчает в…

  • суббота, 4 ноября 2023 г. в 00:00:19
golang
Мультиплатформенные образы: что это такое и зачем они нужны

Привет! Меня зовут Павел Агалецкий, я ведущий инженер в Авито. В нашей компании многие специалисты используют ноутбуки MacBook для локальной разработки, а большинство сервисов запускаются внутри Docker контейнеров. Долгое время мы обходились версиями Docker образов для архитектуры процессоров amd64. С появлением новых процессоров Apple Silicon (M1, M2) мы стали запускать контейнеры в режиме эмуляции процессора, что приводило к низкой скорости их работы. Так возникла задача поддержать внутренню…

  • суббота, 4 ноября 2023 г. в 00:00:18
golang
Использование табличных тестов в go для тестирования запросов к БД + testify

При написании бэкенда работа с базой данных зачастую составляет большую часть кода в проекте. Но несмотря на то, что в го стандартная библиотека для тестирования довольно удобная, она требует написания большого количества кода. Поэтому иногда вместо того, чтобы писать тесты разработчики могут ограничить тестирование при помощи какого-либо клиента (например, при помощи tableplus или другого sql-клиента), либо тестируют уже конечные точки API используя postman. С одной стороны, это, конечно може…

  • пятница, 3 ноября 2023 г. в 00:00:21
golang
PKI на ENS. Часть 2. Proof-of-Concept

Небольшие правки в первой части и программа для связки пары ключей для подписи и домена(имени).1. Исправление первой частиЯ предожил использовать резолвинг имени на хеш для проверки принадлежности ключей домену. "Aккаунтом в эфире можно считать пару публичного и приватного ключей ECDSA, а хеш публичного ключа это адрес аккаунта". "Из сигнатуры и хеша данных мы получаем публичный ключ, считаем хеш публичного ключа и сравниваем его с тем хешем который получили из ENS для ens.eth.&#34…

  • четверг, 2 ноября 2023 г. в 00:00:20
golang
Введение в Чистую архитектуру через 6 кругов рефакторинга

Ускоряй! (Accelerate). Авторы этого пособия посвятили целую главу архитектуре приложений и тому, как архитектура влияет на эффективность разработки. И вся эта глава крутится вокруг понятие слабой связанности (loosely coupled).Зачем нужна архитектура?Цель использования какой‑либо архитектуры заключается в минимизации избыточного общения между командами. Независимая разработка, без n синков с фронтендерами, девопсерами, дизайнерами, офис‑менеджерами, стажёрами офис‑менеджеров, а также помощникам…

  • воскресенье, 29 октября 2023 г. в 00:00:16
golang
Playground. Как сэкономить время на настройке локальной среды

Привет, Хабр! Меня зовут Никита, и я Go-разработчик. В свободное от работы время я интересуюсь платформенной разработкой, а в рабочее — практикую в команде PaaS в СберМаркете. Моя специализация — локальное окружение разработчика и тулинг. Главная метрика, на которую работает моя команда, — Тime-Тo-Мarket, совокупное время, затраченное на разработку фичи от самого начала разработки и до релиза на пользователей. В сложившихся процессах разработки всегда найдется место для оптимизации затрат ресу…

  • суббота, 28 октября 2023 г. в 00:00:19