Привет, Хабр! Я Артём Чаадаев, бэкенд-разработчик в Туту. Я занимаюсь разработкой на языке Go в команде ассортимента размещения. Мы отвечаем за работу с контентом отелей и интеграции с поставщиками.Периодически мы собираем данные для аналитики, и в таких задачах нужно реализовывать схему отправки данных в ClickHouse. В этой схеме мы преобразовываем данные с помощью Redpanda Connect. В статье покажу простой практический пример работы с этим инструментом, который должен помочь тем, кто только нач…
Привет, Хаброжители! К выходу перевода книги «Go: идиомы и паттерны проектирования, 2-е изд.» мы долго думали, чем же удивить читателя Хабра. Так мы возьмём рецензию Томаса Свояновского — full-stack разработчика с восьмилетним опытом. Он в рецензии постарался учесть отличия второго издания книги от первого, подробно объяснил, о чём Джон Боднер писал и какие знания вкладывал на страницы. Приятного чтения! Написав эту книгу, Джон рассказал о том, как пришёл к разработке на Go, поделился секрет…
Omap — это пакет Golang для работы с потокобезопасными упорядоченными map. Упорядоченная map содержит map golang, list и mutex для выполнения функций упорядоченной map.Упорядоченная map— это map, которая запоминает порядок элементов. Map можно итерировать для извлечения элементов в том порядке, в котором они были добавлены.Введение в пакет omap GoПакет omap Go — это легкая и эффективная библиотека для работы с упорядоченными map в Go. Упорядоченная map— это структура данных, которая объединяет …
Залог успеха любого программного решения — хорошее покрытие его функциональными тестами. Каждая полностью покрытая функция — минус одна потенциальная ошибка в работе проекта или даже больше. Однако при написании тестов в проекте, насчитывающем тысячи строк кода и множество пакетов (packages), можно столкнуться с различными трудностями. Я Роман Соловьев, ведущий ИТ‑инженер в отделе RnD и готовых решений управления развития продукта в СберТехе. Сегодня расскажу, с какими проблемами мы столкнулись…
ВведениеВ мире современной разработки на языке Go (Golang) горутины являются одной из ключевых особенностей, обеспечивающих высокую производительность и эффективность многозадачности. Они представляют собой легковесные потоки, которые позволяют выполнять задачи параллельно, что делает Go идеальным выбором для создания высоконагруженных приложений. Однако, как и любая мощная технология, горутины требуют внимательного подхода к управлению ресурсами. Одной из распространённых проблем, с которой ст…
Привет, Хабр! Меня зовут Максим, я инженер в команде облачных сервисов Selectel. В этой статье хотел бы рассказать, как мы тестируем кластеры Kubernetes перед тем, как обновления попадают к клиентам. Мой коллега Артём уже писал о тестировании в Kubernetes с помощью Python. Сегодня же мы посмотрим на небольшие примеры на Go. Используйте навигацию, если не хотите читать текст полностью: → Предыстория → Пишем тест → Запускаем тест → Кратко. Что еще → Выводы Перед началом скажу, чем обусловлен…
Тонкая настройка параллелизма в тестах GoВ Go есть три способа управления параллельностью тестов:Флаг -pФлаг -parallelВызов функции t.Parallel()Но многие ли понимают, как они работают? И зачем нам все три?Оказывается:-p управляет числом тестовых пакетов, выполняемых параллельно.-parallel определяет количество тестовых функций внутри одного пакета, выполняемых параллельно.t.Parallel() помечает тестовую функцию, разрешая Go выполнять её параллельно с другими тестами в том же пакете.Пример 1Допуст…
Мастерство конкурентности в Go: Механика горутин и каналов Паттерн генератор (вы туть)Паттерн конвейер (оригинал) Fan-in Fan-out (оригинал)Итак вторая часть продолжаем. Теперь давайте посмотрим, как эти примитивы объединяются, образуя мощные шаблоны, которые решают реальные проблемы.В этой статье мы рассмотрим генератор и попытаемся визуализировать его. Итак, давайте подготовимся, поскольку весь процесс пройдем с примерами.ГенераторГенератор как фонтан, который непрерывно производит значения, к…
ВступлениеВсем привет! Я стал замечать на себе, что чаще решаю задачи, связанные с эксплуатацией инфраструктуры (Ops), чем с разработкой. Это видно по моим статьям — они в основном посвящены настройке и развертыванию различных инструментов. Однако «Dev»-составляющая тоже важна, и поэтому я решил прокачиваться еще и в разработке!В этой статье я хочу поделиться опытом создания Kubernetes-оператора на Go. Этот язык часто используют для подобных задач, а сама идея родилась из практической потребнос…