Category : golang

golang
Бойлерплейт как инструмент стандартизации Go-проектов

Трудности в процессе разработки на Go — частая история. Чтобы их преодолеть, нам даже пришлось писать собственный бойлерплейт. Хотя казалось бы — всё уже есть, но нет, нам понадобилось имплементировать собственную хардкорную штуку. Расскажем, почему и зачем.Привет, Хабр! Я Александр Калошин из компании Last.Backend. Это статья по мотивам совместного доклада на GolangConf 2023 моего и Константина Пастор-Гертье.Написали собственный Kubernetes и PagerDutyКомпания Last.Backend появилась в 2014 году…

  • пятница, 26 апреля 2024 г. в 00:00:13
golang
Fuzzing-тестирование. Практическое применение

Привет, Хабр! Меня зовут Никита Догаев, я Backend Team Lead в команде Контента на портале поставщиков Wildberries. Мы отвечаем за карточки, которые каждый день испытывают на прочность сотни тысяч продавцов из разных стран.В статье поделюсь своим опытом применения фаззинга для нагрузочных и интеграционных тестирований. Расскажу про генерацию текстов на армянском языке, тестирование SQL-запросов, а также можно ли использовать фаззер и unit-тестирование бок о бок, и какие баги нам удалось найти. Н…

  • пятница, 26 апреля 2024 г. в 00:00:13
golang
Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему? TLDR: Преобразовываем наши тексты в наборы чисел (векторы) при помощи AP…

  • среда, 24 апреля 2024 г. в 00:00:10
golang
Использование миграций баз данных в Go

Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В нашем проекте команда решила не использовать ORM (Object-Relational Mapping), а вместо этого применить миграции. Так как я работал только с ORM, мне, как и автору статьи, было мало знакомо понятие миграций баз данных. В поисках информации о миграциях и популярных решениях, я наткнулся на эту статью. Перевод статьи я оставил ниже. Возможно, она будет вам полезна. Буду признателен, если вы сможете поде…

  • вторник, 23 апреля 2024 г. в 00:00:06
golang
Как мы ускорили Golang-тесты на CI

Привет, Хабр! 👋 Меня зовут Александр, я занимаюсь разработкой ПО. В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.Во всех golang-сервиса…

  • среда, 17 апреля 2024 г. в 00:00:16
golang
Сказ о Python или почему его лучше не выбирать новичкам

Всем привет, я Full-stack программист с опытом командной разработки около полугода, а также опытом в создании небольших и средних проектов в районе 3-х лет. Тут я хочу внести ясность для новичков в IT, которые мечутся из стороны в сторону, пытаясь и язык повостребованнее найти, и чтобы попроще учиться, ну и на галеру протиснуться.Простота обманчиваМожно подумать, что Python очень простой язык, скорость написания кода х5, он вроде как нужен, вот, смотри, какие-то графики, я прав, а вот ты ошиба…

  • среда, 17 апреля 2024 г. в 00:00:16
golang
Архитектура telegram-бота. На горутинах и каналах

Это мой первый telegram-бот и моя первая разработка на go. В качестве базы данных используются google-таблицы, благодаря чему большая часть логики находиться в них. Но к сути это отношения имеет мало. Основной причиной написания этой статьи стало то, что проект который я разрабатывал, уже технически реализованный, отложили что бы маркетингом "навести суету" по схемам десятилетней давности. Полагаю проект всё равно будет заброшен, по крайней мере у меня уже нет сил его "продавливать…

  • вторник, 16 апреля 2024 г. в 00:00:08
golang
Дайджест полезных материалов из мира Golang за неделю (6.04.24 -13.04.24)

🔥 Дайджест полезных материалов из мира Golang за неделюПодборка полезных материалов и находок из мира Go за неделю.Инструменты недели:  • xgo — библиотека, которая позволяет добавить функцию Trap и предоставляет такие инструменты, как Mock и Trace. Xgo помогает разработчикам писать юнит-тесты и отлаживать их проще и быстрее. • reverst - обратный туннель (с балансировщиком нагрузки) и клиентская библиотека Go-сервера, построенная на основе QUICK и HTTP/3•portr - туннельное решение, позволяющее …

  • воскресенье, 14 апреля 2024 г. в 00:00:11
golang
Топовые подходы к решению алгоритмических задач

Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач. Базовые концепцииЗнакомство с алгоритмами и структурами данных лучше в…

  • суббота, 13 апреля 2024 г. в 00:00:13