Go in Action @go_in_action Channel on Telegram

Go in Action

@go_in_action


Всё про язык программирования Go на русском и английском языке

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Go in Action (Russian)

Добро пожаловать в канал "Go в действии"! Здесь вы найдете всю необходимую информацию о языке программирования Go на русском и английском языках. Этот канал создан для всех, кто интересуется данной темой и хочет углубить свои знания. Здесь вы сможете найти полезные советы, новости, обновления и многое другое, связанное с Go. Наша цель - помочь каждому стать опытным разработчиком на этом языке и поддерживать общение в сообществе. Присоединяйтесь к нам, чтобы быть в курсе всех событий и улучшить свои навыки программирования! У нас также есть возможность размещения рекламы, если вам интересно продвижение в данной сфере. По всем вопросам обращайтесь к нашему боту по продажам @tproger_sales_bot. Пожалуйста, ознакомьтесь с правилами общения в канале по ссылке https://tprg.ru/rules. Также не забудьте заглянуть в наши другие каналы @tproger_channels для еще большего контента и информации. Присоединяйтесь к нам, и давайте вместе погрузимся в мир Go и станем лучшими разработчиками в этой сфере!

Go in Action

12 Jan, 17:53


🎮 Как я создал 2D-игру за 40 минут с Ebiten

Вдохновившись "Frogger", я разработал игру "Scorpions and Ferraris" на Go с библиотекой Ebiten. Статья описывает, как использовать структуры и методы для создания и управления объектами, а также делится полезными советами по визуальному оформлению. Узнайте больше о нюансах разработки!

Подробнее: https://nuancesprog.ru/p/23395/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:44


Повышение безопасности: 2FA в Golang

Хотите обезопасить свое приложение с помощью 2FA? Узнайте, как использовать временные одноразовые пароли (TOTP) и интегрировать уникальные секретные ключи с помощью HMAC-SHA1 в Golang. Эта статья расскажет о ключевых аспектах настройки, чтобы защитить данные ваших пользователей.

Подробнее: https://nuancesprog.ru/p/26884/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:44


Избегайте ошибок с интерфейсами в Go

Переходя на Go, важно понять специфику работы с интерфейсами. Они должны быть небольшими и открываться по мере необходимости. Это делает код гибким и адаптируемым. Изучите, как клиентский код реализует интерфейсы без дополнительных ограничений, и упростите тестирование с помощью компиляторов.

Подробнее: https://nuancesprog.ru/p/22380/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:44


🔧 Как создать кастомный балансировщик нагрузки для gRPC

На Хабре вышла статья о проектировании кастомного балансировщика нагрузки для gRPC на Go. Изучите архитектуру, узнайте о приоритетах адресов, минимизации задержек и повышении отказоустойчивости. Подробности об компонентах BalancerBuilder, Resolver и Picker ждут вас!

Подробнее: https://nuancesprog.ru/p/25597/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:43


Эффективный мониторинг приложений на Go

Погружаемся в мониторинг приложения на Go с использованием Prometheus, Grafana, New Relic и Sentry. Вы узнаете, как настроить тестирование, анализировать метрики, и обрабатывать ошибки с помощью современных инструментов наблюдения. Откройте для себя эффективные методики DevOps!

Подробнее: https://nuancesprog.ru/p/25427/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:43


Функции высшего порядка в Go

Функции высшего порядка дают возможность оптимизировать код в Go, делая его более модульным и эффективным. Несмотря на преимущества в обработке ошибок и тестировании, они могут увеличить накладные расходы. Узнайте, как их правильно использовать для повышения производительности.

Подробнее: https://nuancesprog.ru/p/25130/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:42


💡 Эффективный поиск с Meilisearch и Golang

Ищете решение для улучшения поиска в вашем приложении на Golang? Обратите внимание на Meilisearch — бесплатный движок с открытым исходным кодом. Простой в интеграции, он обеспечивает высокую релевантность результатов даже в условиях роста проекта. Узнайте, как его установить и использовать. Интеграция Meilisearch с Golang: быстрый старт

Погрузитесь в мир Meilisearch и Golang! Статья раскрывает, как избегать создания БД и получать данные непосредственно из внешних источников. Узнайте, как подключиться к Meilisearch, создать индексы и провести эффективный поиск. Читайте больше по ссылке! Как повысить свои навыки во фронтенде

Статья предлагает несколько тестов для оценки знаний в IT-сфере, включая JavaScript и базы данных. Это отличная возможность понять, где вы находитесь и в каких областях стоит улучшить навыки, чтобы стать успешнее во фронтенд-разработке.

Подробнее: https://nuancesprog.ru/p/24857/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:42


Запуск CRUD API на Go за 50 строк кода

Хотите быстро создать CRUD API с использованием Golang? В статье описывается, как это сделать с помощью фреймворка GoFr и базы данных MySQL. С GoFr вы можете генерировать обработчики, избегая рутины, и полностью сосредоточиться на логике приложения. Узнайте больше из статьи! Создаем CRUD API в Golang: быстрый старт

Статья описывает самый быстрый способ создания CRUD API на Golang. Основное внимание уделяется интеграции с MySQL и REST API. Акцент сделан на важности миграций для синхронизации базы данных и на готовности API к промышленной эксплуатации. Подробности по ссылке.

Подробнее: https://nuancesprog.ru/p/24452/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:42


Управление транзакциями с шаблоном Saga на Go

Шаблон Saga предлагает эффективный подход к управлению продолжительными транзакциями в распределенных системах. Интеграция компенсационных действий на каждом этапе транзакции обеспечивает надежность и согласованность данных. Узнайте, как это применяется в микросервисной архитектуре! Применение шаблона Saga в Go

В статье рассмотрена реализация шаблона Saga в языке Go для создания отказоустойчивых и масштабируемых систем. Это позволяет управлять транзакциями, охватывающими несколько компонентов, поддерживая согласованность данных даже при сбоях. Подробности проекта можно найти на GitHub.

Подробнее: https://nuancesprog.ru/p/24396/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Jan, 17:42


Kubernetes и шаблон Sidecar: как это работает?

Статья рассказывает о шаблоне Sidecar в архитектуре микросервисов, где вспомогательные контейнеры расширяют функциональность основного приложения. Примеры реализации на Go показывают, как Sidecar перенаправляет запросы к основному контейнеру. Также описано развертывание в Kubernetes. Управление приложениями с помощью Sidecar в Kubernetes и Go

Текст: В статье Mert ÇAKMAK раскрываются особенности использования паттерна Sidecar в Kubernetes с применением языка Go. Узнайте, как этот подход может упростить управление микросервисами и повысить гибкость вашего приложения. Погрузитесь в мир современной разработки!

Подробнее: https://nuancesprog.ru/p/24279/

#ru

@go_in_action | Другие наши каналы

Go in Action

11 Jan, 10:09


К слову, о именах переменных в Go

Субботним утречком, решил поговорить, кое о чем действительно важном. Управление памятью, сборщик мусора - это все недостойная обсуждения фигня, имена переменных вот это действительно стоящая тема. Не вижу, почему бы трем благородным донам, ее не обсудить.

Для тех кто пишет на go давно, изложенное ниже может показаться очевидным, но буду рад вашим комментам (панамку за некоторую сумбурность изложения приготовил)

Одной из ключевых особенностей Go является ориентация на читаемость и краткость кода. Это проявляется как в конструкциях языка, так и в стилевых рекомендациях, принятых сообществом и разработчиками языка.

Короткие имена переменных — важная часть этой философии. В отличие от языков, где длинные и описательные имена переменных могут быть нормой (например, PHP или Java), Go поощряет использование коротких имен, особенно в случаях, когда их смысл легко понять из контекста.

Роб Пайк (надеюсь не надо представлять этого благородного дона) в одном из старых своих постов писал


Читать: https://habr.com/ru/articles/872940/

#ru

@go_in_action | Другие наши каналы

Go in Action

10 Jan, 14:04


Как упаковать бэкенд-код на Go для аналитики на базе Spark

Всем привет! Я Ваня Ахлестин, занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop в Авито. Сегодня расскажу, как начать использовать ваш код из Python или PySpark и не тратить много времени дорогих разработчиков.

Читать: «Как упаковать бэкенд-код на Go для аналитики на базе Spark»

#ru

@go_in_action | Другие наши каналы

Go in Action

09 Jan, 16:32


Импорт из Jira: перенос с запахом карри

Привет, Хабр!

Меня зовут Егор, я руководитель разработки таск-менеджера. В комментах к прошлой статье были вопросы про экспорт из Jira на наш аналог, так что мы решили поделиться своим опытом решения проблем, с которыми на этой пути сталкивается идущий. Пойдем по пунктам: проблема – решение.

Эта статья может быть интересна тем, кто сейчас в поисках рабочих костылей, а еще – тем, кто уже решил проблему экспорта по-своему.


Читать: https://habr.com/ru/articles/871326/

#ru

@go_in_action | Другие наши каналы

Go in Action

08 Jan, 06:34


VisuAlgo: один из лучших сайтов по изучению алгоритмов👍

Почему? Да потому что он предоставляет супер-наглядное объяснение. Каждый алгоритм на сайте имеет визуальное представление и сопровождается различными анимациями в процессе его изучения.

А когда закончите, можете самостоятельно потыкаться, используя собственные входные данные для любого алгоритма, или пройти викторину по теме.

Добавляйте в закладки — такое чудо точно того стоит!

#алгоритмы #программирование

Go in Action

06 Jan, 17:16


Реализация Paxos на Go: создаем алгоритм консенсуса без готовых решений

Привет, Хабр!

Paxos — это алгоритм, который позволяет нескольким узлам прийти к единому мнению, даже если не все из них работают идеально. Даже если один или два узла оказываются недоступными, Paxos всё равно помогает согласовать решение, а остальным узнать о том, что вообще было принято.

Вот такие вещи — согласование, отказоустойчивость, выбор лидера — по сути и составляют ядро распределённых систем. Они позволяют избежать катастроф.


Читать: https://habr.com/ru/companies/otus/articles/869122/

#ru

@go_in_action | Другие наши каналы

Go in Action

05 Jan, 11:54


Пишем медленный код на Go

Подождите, что? Медленный код? Разве мы не должны беспокоиться об ускорении наших Go-программ?

На самом деле, нет. Оптимизация кода на Golang ради производительности - это попросту трата времени, и вот почему:
1. Производительность в большинстве случаев не имеет значения
2. Go и так быстрый
3. Читаемость важнее скорости

Эти аргументы нуждаются в объяснении, и я его дам. Для них есть исключения, как, собственно говоря, для всех нетривиальных утверждений. Честно говоря, стоит сказать, что эти 3 пункта вряд ли являются компромиссом среди программистов-инженеров. Так что, прежде чем начать снижать мне рейтинг и писать негативные комментарии("Худшая статья на Хабре"), прочитайте до конца.
Прочитать до конца

Читать: https://habr.com/ru/articles/871726/

#ru

@go_in_action | Другие наши каналы

Go in Action

03 Jan, 10:31


ErrorHandling-патерн в golang

Обработка и передача ошибок в конкурентном коде имеет некоторые особенности. Поскольку решении о запуске подзадачи(или подзадач) принимается вне запущенной горутины, центр обработки информации(в данном случае ошибки) должен находится в другом месте. Это может быть часть кода инициирующая запуск горутин(родительская горутина) и ожидающая результатов ее выполнения или отдельная горутина, запущенная для этих целей.

Будем отталкиваться от примера, где мы ожидаем результатов выполнения n-горутин. Результат читаем из канала resultChannel:


Читать: https://habr.com/ru/articles/871394/

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Jan, 18:15


Импорт из Jira: перенос с запахом карри

Привет, Хабр!

Меня зовут Егор, я руководитель разработки таск-менеджера АИПлан. В комментах к прошлой статье были вопросы про экспорт из Jira на наш аналог, платформу АИПлан.

Мы решили поделиться своим опытом решения проблем, с которыми на этой пути сталкивается идущий. Пойдем по пунктам: проблема – решение.

Эта статья может быть интересна тем, кто сейчас в поисках рабочих костылей, а еще – тем, кто уже решил проблему экспорта по-своему.


Читать: https://habr.com/ru/articles/871326/

#ru

@go_in_action | Другие наши каналы

Go in Action

01 Jan, 09:03


Go: что ты знаешь о горутинах и каналах? Уровень — easy

Горутины и каналы — чуть ли не самые мощные инструменты в Golang. Листайте вниз, отвечайте на вопросы — докажите, что вы знаете об этих парнях все!

Читать: «Go: что ты знаешь о горутинах и каналах? Уровень — easy»

#ru

@go_in_action | Другие наши каналы

Go in Action

30 Dec, 07:41


Ory Kratos — конструктор для сборки цифрового продукта любой сложности

Привет! Я Андрей Баронский, бэкенд-тимлид в KTS.

Одно из ключевых направлений деятельности нашей компании — это аутсорс-разработка цифровых продуктов. При создании очередной системы мы хотим уделять больше времени и сил необходимым фичам для клиентов, а не настройке рутинного взаимодействия с юзерами, и для ускорения проработки основных пользовательских сценариев мы используем технологию Ory Kratos. В статье я расскажу, почему я рекомендую обратить на нее внимание и как с ней работать.

Для тех, кто впервые сталкивается с этим названием, дам немного контекста. Ory Kratos — это система API-first Identity и User Management. Она управляет всеми аспектами работы с пользователями, включая регистрацию, вход, восстановление пароля, многофакторную аутентификацию, верификацию данных и управление профилем.

Иными словами, Ory Kratos берёт на себя рутинные технические задачи, предлагая готовое, гибкое и удобное в интеграции решение.


Читать: https://habr.com/ru/companies/kts/articles/870454/

#ru

@go_in_action | Другие наши каналы

Go in Action

27 Dec, 09:13


Как я узнал данные 70 тысяч игроков MMORPG

Мне нравится рубить дерево в Minecraft'е. Я рубил дерево целый год и мне стало интересно сколько дерева срубаю каждый день. Так получилось сделать сервис по сбору статистики https://foragingupdate.com.

Реверс инжиниринг tcp протокола Minecraft'а, проектирование сервиса, golang, СУБД.
Delve right in

Читать: https://habr.com/ru/articles/869522/

#ru

@go_in_action | Другие наши каналы

Go in Action

27 Dec, 07:36


Антипаттерны Go: чего нельзя делать и почему

Привет, Хабр! Go часто называют «языком простоты»: мол, нет лишних фич, легко стартовать, запустил горутину — и вперед! Но в реальности эта «простота» — палка о двух концах. Я собрал самые распространенные (на мой взгляд) антипаттерны в Go, которые приводят к дедлокам, паникам и километрам непонятного кода.


Читать: https://habr.com/ru/companies/beget/articles/870138/

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Dec, 18:28


Отмена defer вызова функции в Golang

Недавно столкнулся с такой проблемой, что не всегда приходиться выполнять defer вызов функции. Те кто знают, как работает defer можете листать вниз до реализации моего паттерна.

Представьте, что у вас среди 10 кейсов, существует один, в котором не нужно вызывать defer func. Что же тогда делать......

Оператор defer помещает вызов функции в список. Список сохраненных вызовов выполняется после того, как возвращается функция. Defer обычно используется для упрощения функций, выполняющих различные действия по очистке.


Читать: https://habr.com/ru/articles/870146/

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Dec, 12:37


Безболезненная миграция с NATS на Kafka

Привет, Хабр! Меня зовут Максим, я Go-разработчик из Wildberries. Свою дебютную статью я хочу посвятить довольно популярной теме, когда на проекте приходится уходить с одной технологии на другую. Данная статья будет полезна разработчикам, кто активно использует асинхронный способ передачи данных в своих проектах.


Читать: https://habr.com/ru/articles/870018/

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Dec, 11:40


bufio в Go

Привет, Хабр!

Сегодня мы рассмотрим замечательный пакет в Golang bufio. Пакет bufio — это стандартная библиотека Go, предназначенная для буферизации ввода-вывода. Почему буферизация важна? Представьте, что вы пытаетесь читать или записывать данные по одному байту за раз. Это утомительно и неэффективно. bufio помогает объединить множество мелких операций в более крупные блоки.


Читать: https://habr.com/ru/companies/otus/articles/868658/

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Dec, 11:07


Как устроена межсервисная авторизация в Авито PaaS

Антон Губарев, инженер в Avito PaaS, рассказал, как реализовать межсервисную авторизацию на 2500 сервисов и ничего не сломать.

Читать: «Как устроена межсервисная авторизация в Авито PaaS»

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Dec, 09:39


Создаем систему напоминаний о приёме лекарств

Утро, аромат свежесваренного кофе, и телефон тихонько напоминает вам о приеме важного лекарства. «Привет! Не забудь принять лекарство!» Такую систему можно реализовать самостоятельно с помощью Golang и Exolve API.

В этой статье я покажу, как клиники и медцентры могут построить надежную систему SMS-напоминаний.


Читать: https://habr.com/ru/companies/exolve/articles/869928/

#ru

@go_in_action | Другие наши каналы

Go in Action

24 Dec, 12:30


Горутины и каналы в Go: эффективная конкурентность

Go язык программирования, который предлагает простой и мощный способ работы с конкурентностью, а именно через горутины и каналы. Эти инструменты делают параллельное выполнение задач удобным, безопасным и читаемым. Давайте разберем их ключевые особенности.


Читать: https://habr.com/ru/articles/869400/

#ru

@go_in_action | Другие наши каналы

Go in Action

24 Dec, 10:02


Google Play уходит, а ваши платежи остаются!

Google Play прекращает сотрудничество с российскими разработчиками 26 декабря. Кажется, самое время подключить альтернативный способ приёма онлайн-платежей. 

С CloudPayments монетизация бизнеса продолжит работать без перебоев!

Интегрируйте сценарии оплаты через мобильный SDK и получите весь инструментарий платёжного сервиса CloudPayments:

— Сервис подписок — настройте рекуррентные платежи через удобный UI и получайте прогнозируемую прибыль 
— Приём международных платежей — ваши клиенты смогут оплачивать покупки из любой точки мира
— Все платёжные методы — от T-Pay до СБП. Ваши покупатели точно найдут удобный для них способ оплаты

Подключить сервис легче, чем вы думаете
Ассистенты Cloud всегда помогут с реализацией ваших идей.

Подключение: https://clck.ru/3FQ6tZ

Подписывайтесь на канал Cloud и получайте ещё больше полезной информации о приёме онлайн-платежей.

Это #партнёрский пост

Go in Action

24 Dec, 08:59


Fullstack v2: учимся писать UI на Go

Меня зовут Илья Глухов. Последние 7 лет я пишу на Go. Я люблю этот язык, а ещё люблю задаваться странными, на первый взгляд, вопросами. Например, как разные интересные штуки, которые мы пишем на Go взаимодействуют с пользователем? В классическом бэкенде мы при помощи RPC (Remote Procedure Call), протокола HTTP или разных очередей модифицируем поведение нашей программы. А что насчёт graphic UI? Он же из фронтенда? Или нам так только кажется? Давайте  создадим пользовательский интерфейс (UI) на Go. Выбор решений разнообразен: Gopherjs, gomobile, обёртки для Qt, GTK и много чего ещё. Но если мы хотим добиться кросс-платформенной совместимости для браузеров, мобильных устройств и десктопов, нам нужен универсальный UI. Давайте на практическом примере разберём как создать его на Go.


Читать: https://habr.com/ru/companies/oleg-bunin/articles/865292/

#ru

@go_in_action | Другие наши каналы

Go in Action

22 Dec, 16:45


Skip List в Golang

Привет, Хабр! Сегодня я решил поделиться с вами одной из тех структур данных, которая, возможно, не так популярна, как хеш-таблицы или деревья, но обладает своими уникальными фичами. Знакомьтесь — Skip List!

Итак, Skip List — это структура данных, которая позволяет быстро искать, вставлять и удалять элементы. Можно сказать, что это своего рода гибрид между списком и деревом, только без всяких заморочек.

Рассмотрим реализацию этой структуры в Golang, и для этого есть пакет huandu/skiplist.


Читать: https://habr.com/ru/companies/otus/articles/866920/

#ru

@go_in_action | Другие наши каналы

Go in Action

21 Dec, 00:15


📊 Итоги опроса разработчиков Go 2024

Недавний опрос выявил, что 93% программистов остаются довольны Go, отмечая его простоту и удобство развертывания. 70% используют AI асистентов, в основном для завершения кода и написания тестов. Поддержка Go в облачных сервисах, таких как AWS и Google Cloud, также высоко ценится. Исследование по использованию Go и AI помощников

Текст: Недавнее исследование показало, что разработчики Go активно применяют AI помощников, таких как ChatGPT и GitHub Copilot, для повышения своей продуктивности. Особое внимание уделяется новичкам, которые чаще используют AI для обучения и отладки кода. Также обсуждаются проблемы с поддержанием кодовых стандартов и важность оптимизации производительности с помощью SIMD. Анализ опроса разработчиков Go: весна 2023

Мы подвели итоги нашего полугодового опроса среди разработчиков Go! Узнайте о последних трендах, предпочтениях и разнообразии мнений, которые помогут улучшить язык. Интересные различия ответов по опыту и размеру организаций. Спасибо всем, кто принял участие!

Подробнее: https://go.dev/blog/survey2024-h2-results

#en

@go_in_action | Другие наши каналы

Go in Action

20 Dec, 21:37


Odinbit, продолжение разработки своей игры. Новые механики, оптимизации, появление мультиплеера

Всем привет, это вторая статья по счету про мою 2D игру песочницу под названием Odinbit. Первая статья была выпущена уже давно, за это время я ввел несколько обновлений, столкнулся с новыми проблемами, поэтому я хотел бы пролить свет на новые обновления и рассказать про архитектурные решения, решение проблем и почему я сделал так, а не иначе.


Читать: https://habr.com/ru/articles/868478/

#ru

@go_in_action | Другие наши каналы

Go in Action

20 Dec, 15:01


Lamoda Tech Golang Meetup: материалы встречи

Golang — это любовь, уверены мы в Lamoda Tech, и это подтверждают более 170 инженеров в нашем гошном комьюнити. Мы собрали три доклада, которые хотели бы послушать сами, и провели зимний митап по Go. Делимся записями видео и презентациями c него.


Читать: https://habr.com/ru/companies/lamoda/articles/868414/

#ru

@go_in_action | Другие наши каналы

Go in Action

20 Dec, 14:00


Сравниваем форматы сериализации на Go: скорость и удобство

Дмитрий Королёв, бэкенд-разработчик в Авито, разобрал на примерах, чем отличаются друг от друга форматы сериализации данных и как выбрать самый удобный.

Читать: «Сравниваем форматы сериализации на Go: скорость и удобство»

#ru

@go_in_action | Другие наши каналы

Go in Action

20 Dec, 12:36


Жизненный цикл потоков ОС в Golang

Всем привет! Меня зовут Паша, я занимаюсь коммерческой разработкой уже 10 лет, 8 из них — на Go. Мне довелось разрабатывать приложение, активно использующее как сеть, так и диск.

Регулярно приходилось решать вопросы производительности. В ходе исследований я использовал все, что было было под рукой: логи, метрики, трейсы, профилировщики и runtime-трейсы. А еще изучал, как по доступным данным расследовать причины проблем производительности постфактум. Тогда мне стало интересно, почему метрика количества потоков сильно отличается от значения GOMAXPROCS и можно ли по этой метрике диагностировать какие-то конкретные проблемы.


Читать: https://habr.com/ru/companies/tbank/articles/868390/

#ru

@go_in_action | Другие наши каналы

Go in Action

19 Dec, 16:18


Паттерн Composite в Go на котиках

Привет, Хабр!

В этой статье поговорим о паттерне «Компоновщик» (он же Composite) — на примере котиков. Котики идеально иллюстрируют структуру паттерна: в каждом доме есть простые котики, сложные котики (например, те, кто лазает по шкафам и открывает холодильники), а иногда — целые прайды из котиков.


Читать: https://habr.com/ru/companies/otus/articles/866508/

#ru

@go_in_action | Другие наши каналы

Go in Action

16 Dec, 20:07


🔍 Новый API для Go Protobuf: Opaque

Go команда представила новую API для Go Protobuf — Opaque API. Она скрывает структуру данных и снижает затраты на память, улучшая производительность. Opaque API позволяет безопасно поддерживать ленивую декодировку, повышая эффективность при работе с большими данными. Подробности на go.dev!

Подробнее: https://go.dev/blog/protobuf-opaque

#en

@go_in_action | Другие наши каналы

Go in Action

16 Dec, 14:52


Горящие таски — в сторону. Мы нашли вам занятие поинтереснее!

Tproger вместе с друзьями приготовил для вас Виммельбух. Первые три главы уже на сайте — переходите по ссылке и узнавайте, чем живёт технологичный город в новогоднюю пору: https://tprg.ru/XmuN

А ещё на улицах города мы спрятали предметы… Сможете найти все?

Реклама, ИП Михайлишина Гузель Фаниловна, erid: LjN8KJDZd

Go in Action

16 Dec, 10:14


Как писать код, который не ломается: гайд по TDD от эксперта Эйч Навыки

Владислав Гайденко, эксперт Эйч Навыки и бэкенд-разработчик в Авито, рассказывает, как TDD помогает избежать ловушек нестабильного кода, сократить время на исправление багов и контролировать процесс разработки.

Читать: «Как писать код, который не ломается: гайд по TDD от эксперта Эйч Навыки»

#ru

@go_in_action | Другие наши каналы

Go in Action

13 Dec, 06:56


Как построить оценку качества контакт-центра с помощью Speech Analytics API

Привет, Хабр! Контакт-центры — это важная линия взаимодействия бизнеса с клиентами. Клиенты могут быть разными: кто-то жалуется на задержки, кто-то хочет вернуть товар, а кто-то просто звонит выразить благодарность. Но для бизнеса важно понять одно: насколько хорошо оператор решил проблему клиента? И ушел ли клиент довольным?

В этой статье создадим систему для анализа качества работы операторов. Будем извлекать данные о звонках, сохранять их в базе данных и автоматизируем процесс с помощью webhook. В конце концов, контакт-центр — это не только про разговоры, это про цифры.


Читать: https://habr.com/ru/companies/exolve/articles/866244/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Dec, 07:42


Picostress — наш подход к нагрузочному тестированию

Привет, меня зовут Георгий Ломакин, и я инженер по нагрузочному тестированию в компании Picodata — разработчике одноимённой NewSQL СУБД. В этой статье я поделюсь своим опытом нагрузочного тестирования и расскажу, как мы строили эту практику с нуля.

Мы выбираем распределённые системы за производительность и надёжность. Однако без постоянного нагрузочного тестирования и анализа отчётов после него, и то и другое лишь обещания. Конечно же, нагрузочное тестирование обязательно и в нашей команде, разрабатывающей распределённую NewSQL — базу данных Picodata.


Читать: https://habr.com/ru/companies/arenadata/articles/864974/

#ru

@go_in_action | Другие наши каналы

Go in Action

11 Dec, 16:15


Go: фокусы трассировки

В Мире нет панацеи - лекарства от всех болезней. Так и в разработке нет идеальных решений. Многопоточность в некоторых случаях может значительно ускорить вычисления программы, но в то же время может превратиться в настоящий кошмар для разработчика. Не имеет смысла писать многопоточный код без умения пользоваться трассировкой. О способах её получения написано много материала. Более того, есть много статей, где анализ кода сопровождается с анализом трассировки. К сожалению, обычно этот инструмент используется под конкретную задачу, это приводит к тому, что обычно не подсвечиваются некоторые его особенности. В статье на простых очевидных примерах объясняются неочевидные результаты трассировки.


Читать: https://habr.com/ru/articles/865812/

#ru

@go_in_action | Другие наши каналы

Go in Action

11 Dec, 13:54


5 паттернов проектирования в Go на примере котиков

Привет, Хабр! Сегодня мы рассмотрим реализацию паттернов проектирования на Go, и, чтобы было не скучно, возьмем главными героями котиков. Будем разбирать 5 популярных паттернов: Singleton, Factory Method, Strategy, Observer, Decorator.


Читать: https://habr.com/ru/companies/otus/articles/864748/

#ru

@go_in_action | Другие наши каналы

Go in Action

10 Dec, 13:12


Клиентоцентричность с точки зрения Go-разработчика и причем тут рефлексия

Когда всё, что делает компания — от продуктов, услуг и до обслуживания — направлено на то, чтобы клиент был доволен и возвращался снова, все команды объединяются вокруг единой цели — смотреть на задачи и искать решения с точки зрения проблем и нужд конечного клиента.

Я Александр Шакмаев — технический лидер в Cloud.ru. Поделюсь опытом нашей команды: расскажу, как с помощью gRPC-интерцепторов и рефлексии команда Go-разработчиков может изменить продукт и улучшить пользовательский опыт.
Читать дальше

Читать: https://habr.com/ru/companies/cloud_ru/articles/861668/

#ru

@go_in_action | Другие наши каналы

Go in Action

10 Dec, 12:05


Популярные ошибки в Golang и как их избежать

Дмитрий Королев расскажет про распространённые ошибки при работе со слайсами, каналами и другими структурами в Go. Научимся предупреждать их и справлять на примерах.

Читать: «Популярные ошибки в Golang и как их избежать»

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Dec, 11:39


Строим систему управления заказами с помощью Temporal: c нуля до десятков тысяч заказов в день

Обработка заказов — это один из самых сложных аспектов в e-commerce, особенно когда речь идёт о микросервисной архитектуре. Большинство существующих систем используют хореографию для управления заказами, что сложно реализовать и часто приводит к беспорядку. Бизнес-требования разбиты на множество мелких задач, и обеспечить отказоустойчивость бывает трудно. В таких системах часто возникает низкая прозрачность, поиск дефектов может занять дни, а внедрение новой функциональности — месяцы. Проблему можно решить с помощью платформы для оркестрации рабочих процессов.


Читать: https://habr.com/ru/companies/uzum/articles/862972/

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Dec, 07:20


Дженерики в Go

Это первая часть статьи, посвященной дженерикам в Go, из четырех.

Одна из последних и наиболее интересных фич в Golang — поддержка дженериков. Эта серия туториалов будет посвящена тому, что это такое, какую пользу приносит, когда их стоит использовать и как они меняют процесс написания приложений на Golang. Начнем же!


Читать: https://habr.com/ru/companies/beget/articles/862910/

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Dec, 07:04


App.Farm CI. Часть I. Проблемы и выбор решений

Привет, Хабр! На связи команда разработки App.Farm — продукта, созданного в РСХБ‑Интех. Хотели бы представить вам цикл статей о нем.

App.Farm — продукт по типу PaaS, необходимый для стандартизации процесса разработки бизнес‑приложений: от хранения исходного кода до запуска сервисов. Основные подсистемы платформы включают хранилище исходного кода и CI, хранилище артефактов, среду исполнения приложений, SSO, интеграционную подсистему, observability и т. д..

Подробнее ознакомиться с компонентами можно в обзорной статье, ранее опубликованной на Хабре: Как мы создавали PaaS‑платформу App.Farm. Сейчас мы бы хотели углубиться в детали реализации и поделиться с вами проблемами, которые мы решали, и как пришли к текущей архитектуре. Первый цикл статей мы решили посвятить одной из подсистем нашей платформы — App.Farm CI.


Читать: https://habr.com/ru/companies/rshb/articles/861252/

#ru

@go_in_action | Другие наши каналы

Go in Action

29 Nov, 09:27


Играть = учиться. Как я создал образовательную игру для школьников

Всем привет! Меня зовут Андрей Волков, уже более семи лет я занимаюсь разработкой. Начинал как системный администратор на кафедре информатики в моей альма-матер — РГУНГ им. И.М. Губкина, где поддерживал более 200 рабочих станций: от локальных сетей до огромных серверных стоек. Затем по стечению обстоятельств перешёл в отдел АСУ ЦБ. Там я занимался разработкой и поддержкой функционала информационных систем университета: от личного кабинета студента и расписания до внутренних HR- и СКУД-систем.

За свою карьеру я также успел поработать в продуктовой разработке в России и на аутстаффе с российскими и западными заказчиками. Моим основным стеком был Symfony/PHP. Спустя несколько лет работы на фреймворке Symfony благодаря курсу «Продвинутый Go-разработчик» от Яндекс Практикума у меня получилось сменить стек и уйти на позицию PHP/Go разработчика в компанию Rambler.


Читать: https://habr.com/ru/companies/yandex_praktikum/articles/862196/

#ru

@go_in_action | Другие наши каналы

Go in Action

27 Nov, 16:04


Go: нужно ли закрывать канал?

Эта статья посвящена каналам. Поднимается вопрос необходимости закрытия каналов. Приводится множество примеров, на escape-анализе и трассировке которых объясняются особенности сохранения каналов в памяти, взаимодействие с GC, горутинами. Также поднимается вопрос уместности закрытия каналов. Подсвечивается практическая польза использования однонаправленных каналов.


Читать: https://habr.com/ru/articles/861846/

#ru

@go_in_action | Другие наши каналы

Go in Action

27 Nov, 04:55


Netpoll: пишем сервера, которые не умирают от нагрузки

Вы знаете, что обычные сетевые библиотеки Go начинают «тяжело дышать», если их нагрузить десятками тысяч соединений? Неважно, делали вы HTTP API или свой TCP сервер — дефолтные инструменты вроде net всегда имеют свои лимиты. Тут-то хорош зайдет Netpoll — библиотека, которая позволяет серверам обрабатывать сотни тысяч соединений одновременно и при этом не терять в производительности.


Читать: https://habr.com/ru/companies/otus/articles/859964/

#ru

@go_in_action | Другие наши каналы

Go in Action

26 Nov, 06:35


«Напомните через месяц?»: как автоматизировать напоминания клиентам с Golang, SQLite и вебхуками

Привет, Хабр! Представим ситуацию: вы клиент. Разговор с менеджером завершен, он предложил вам что-то полезное — услугу, продукт или подписку — и, допустим, вы соглашаетесь: «Почему бы и нет, отличная идея». Менеджер записал ваше согласие и обещал напомнить вам через месяц. Звучит просто.

Но вот в реальности ни один менеджер не помнит про сотни обещаний клиентам. И здесь на помощь приходит автоматизация. В этой статье рассмотрим, как построить систему автоматического напоминания, которая избавит менеджеров от лишней работы и увеличит количество сделок, которые могли бы улетучиться.


Читать: https://habr.com/ru/companies/exolve/articles/861346/

#ru

@go_in_action | Другие наши каналы

Go in Action

25 Nov, 10:08


Реализуем задачи на Go (и не только): самая подробная шпаргалка

Даниил Динько, тимлид в компании-лидере в международном кибербезе и эксперт Эйч Навыки, рассказывает, как разработчикам эффективно планировать, анализировать и оптимизировать свои проекты.

Читать: «Реализуем задачи на Go (и не только): самая подробная шпаргалка»

#ru

@go_in_action | Другие наши каналы

Go in Action

21 Nov, 09:01


Создание XDP eBPF программы с использованием C и Golang: пошаговое руководство

В сегодняшнем мире, где всё тесно связано и ориентировано на данные, производительность сети имеет решающее значение для обеспечения эффективного взаимодействия и оптимального пользовательского опыта. XDP и eBPF — это мощные технологияи, которые помогают обрабатывать пакеты с высокой скоростью и оптимизировать работу сети.

В этом пошаговом руководстве мы рассмотрим процесс создания XDP eBPF программы с использованием языков C и Golang.


Читать: https://habr.com/ru/companies/otus/articles/860104/

#ru

@go_in_action | Другие наши каналы

Go in Action

21 Nov, 07:41


Functional options in Go

Варианты работы с конструкторами в Go, паттерн функциональных опций и генератор кода, который делает API предсказуемым и позволяет сосредоточиться на разработке, а не на шаблонном коде.


Читать: https://habr.com/ru/articles/859676/

#ru

@go_in_action | Другие наши каналы

Go in Action

20 Nov, 14:28


Использование Redis в Go

Redis — хранилище из семейства нереляционных (NoSQL) баз данных. Redis является очень быстрым хранилищем данных благодаря своей архитектуре in-memory. Он идеально подходит для задач, требующих быстрого доступа к данным, таких как кэширование, очереди сообщений, сессионная информация и многое другое. Go также известен своей высокой производительностью за счет компиляции в машинный код и эффективного управления памятью.


Читать: https://habr.com/ru/articles/860060/

#ru

@go_in_action | Другие наши каналы

Go in Action

17 Nov, 11:11


Middleware на уровне сетевого стэка в Go

Привет, любители Go! Сегодня мы рассмотрим, как создать middleware на уровне сетевого стэка в Go. Middleware позволяет добавлять полезные функции к HTTP-запросам и ответам: логирование, аутентификация, обработка ошибок и многое другое.


Читать: https://habr.com/ru/companies/otus/articles/857070/

#ru

@go_in_action | Другие наши каналы

Go in Action

15 Nov, 10:36


Создание кастомного балансировщика нагрузки на Go для gRPC с приоритизацией адресов

В процессе разработки микросервисных приложений часто необходимо наладить эффективную и быструю коммуникацию между сервисами. Разработанный Google gRPC предоставляет высокопроизводительный фреймворк для организации такого взаимодействия. Однако стандартные балансировщики нагрузки в gRPC не всегда удовлетворяют специфическим требованиям, особенно когда требуется приоритизация адресов для минимизации сетевых задержек и обеспечения отказоустойчивости.

В этой статье я поделюсь опытом создания кастомного балансировщика нагрузки на Go для gRPC, который использует приоритеты адресов для выбора наилучшего соединения. Это решение позволяет гибко управлять распределением клиентских запросов между серверами с разными уровнями доступности и обеспечивает подключение к оптимальному ЦОД с минимальными задержками.


Читать: https://habr.com/ru/companies/vk/articles/858290/

#ru

@go_in_action | Другие наши каналы

Go in Action

14 Nov, 17:12


Проверка готовности приложения к работе в реальном ненадежном мире. Часть 5

Пятая и заключительная часть статьи, в которой Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик» рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Статья состоит из 5 частей, которые выходят по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.


Читать: https://habr.com/ru/companies/slurm/articles/858702/

#ru

@go_in_action | Другие наши каналы

Go in Action

14 Nov, 08:25


Внутренности планировщика Go

В настоящий момент занимаюсь наставничеством разработчиков на языке Golang и один из студентов принес очередной вопрос, который заставил задуматься и вникнуть глубже в устройство планировщика Go.

Почему данный код всегда будет выводить одинаковый результат?


Читать: https://habr.com/ru/articles/858490/

#ru

@go_in_action | Другие наши каналы

Go in Action

13 Nov, 14:59


Запуск узла Hidden Lake на языке Go

Анонимная сеть Hidden Lake является в своей области уникальным и достаточно своеобразным проектом, т.к. базируется на совершенно иных методах и подходах анонимизации трафика, чем большинство ныне нам известных сетей. Из-за того, что сеть является относительно новой - она часто дополняется и совершенствуется. Одним из таковых дополнений стал новый способ запуска узла HL.


Читать: https://habr.com/ru/articles/858110/

#ru

@go_in_action | Другие наши каналы

Go in Action

13 Nov, 14:59


Проверка готовности приложения к работе в реальном ненадежном мире. Часть 4

Четвертая часть статьи, в которой Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик» рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Статья состоит из 5 частей, которые выходят по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.


Читать: https://habr.com/ru/companies/slurm/articles/858060/

#ru

@go_in_action | Другие наши каналы

Go in Action

13 Nov, 14:59


Go отмечает 15-летие с обновлениями и планами

Пятнадцатая годовщина Go привнесла в язык значительные обновления, такие как изменения в циклах и поддержка итераторов. За последние пять лет число пользователей утроилось, что делает Go одним из самых быстрорастущих языков. Планируется поддержка современных аппаратных возможностей и улучшение AI-инфраструктуры.

Подробнее: https://go.dev/blog/15years

#en

@go_in_action | Другие наши каналы

Go in Action

13 Nov, 14:59


Проверка готовности приложения к работе в реальном ненадежном мире. Часть 3

Третья часть статьи, в которой Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик» рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Статья состоит из 5 частей, которые выходят по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.


Читать: https://habr.com/ru/companies/slurm/articles/857682/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Nov, 14:49


200 проектов для практики программистам любого уровня

Пет-проекты обычно делают для себя в свободное время. Но основная проблема — это найти такие пет-проекты, чтобы научиться чему-нибудь полезному, не забить на них в процессе и сделать их так, чтобы в портфолио не стыдно было приложить.

Тут автор проделал огромную работу и сделал аж 200 идей для ваших проектов. И что круто — этот список подходит не только новичкам и не ограничивается какими-то определёнными технологиями. Все проекты удобно разделены по уровню сложности и стеку: блокчейн, веб, редактор изображений — да буквально что угодно! Остаётся только выбрать и начать.

#хобби #карьера

Go in Action

11 Nov, 11:07


Паттерн Наблюдатель в Golang на котиках

Привет, Хабр! Сегодня будем разбирать паттерн Наблюдатель на примере наших любимых пушистиков — котиков. Ведь кто, как не коты, могут быть идеальными субъектами и наблюдателями в нашем коде?


Читать: https://habr.com/ru/companies/otus/articles/857330/

#ru

@go_in_action | Другие наши каналы

Go in Action

10 Nov, 17:01


ТОП-25 курсов Golang-разработчиков: бесплатное и платное онлайн-обучение программированию на языке GO

Лучшие онлайн-курсы для Golang-разработчиков. Список школ, осуществляющих обучение на бесплатной или платной основе, а так же цены на курсы программистов на языке GO

Читать: «ТОП-25 курсов Golang-разработчиков: бесплатное и платное онлайн-обучение программированию на языке GO»

#ru

@go_in_action | Другие наши каналы

Go in Action

08 Nov, 14:40


Проверка готовности приложения к работе в реальном ненадежном мире. Часть 2

Вторая часть статьи, в которой Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик» рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Статья состоит из 5 частей, которые будут выходить по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.


Читать: https://habr.com/ru/companies/slurm/articles/857144/

#ru

@go_in_action | Другие наши каналы

Go in Action

07 Nov, 11:39


В команду Deckhouse ищут Go-разработчиков и тимлидов.

Под капотом Deckhouse — ванильный Kubernetes и Open Source-инструменты, которые стали индустриальным стандартом.

Предстоит разрабатывать Kubernetes-платформу и других продуктов экосистемы. Например, писать фичи для модулей автомасштабирования, observability, безопасности, а также Storage-компоненты и функциональность для управления образами контейнеров.

Да, задачи не из лёгких и точно не из рутинных. 
Посмотрите вакансии на сайте.

#вакансии

Go in Action

06 Nov, 16:00


Проверка готовности приложения к работе в реальном ненадежном мире. Часть 1

Опытом делится Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик». Он рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.

Считайте это некоторым чек-листом, но не применяйте все пункты as is, потому что каждая система уникальна и иногда вполне допустимо построить менее надежную систему с целью значительного сокращения затрат на разработку, поддержку и эксплуатацию (например, отсутствие резервирования). Однако бэкапы обязательно должны быть 🙂

Некоторые термины не будем переводить не в силу лени автора, а в силу устойчивости терминов в литературе.

Отдельные пункты внимательный читатель может отнести сразу к нескольким разделам верхнего уровня. Поэтому деление на подгруппы довольно условное.

Если возникнет вопрос, а почему не описан некоторый X в чек-листе, то ответ простой: статья и так получилась огромной, и вы вероятно сможете найти что-то полезное для себя.

Статья состоит из 5 частей, которые будут выходить по очереди:

1. Надежность.

2. Масштабируемость/отказоустойчивость.

3. Resiliency/отказоустойчивость.

4. Безопасность. Процесс разработки. Процесс выкатки.

5. Наблюдаемость. Архитектура. Антипаттерны.


Читать: https://habr.com/ru/companies/slurm/articles/856582/

#ru

@go_in_action | Другие наши каналы

Go in Action

05 Nov, 15:52


Погружение в интерфейсы Go

Интерфейсы — одна из самых сложных тем для начинающих в Go. Я решил тщательно разобраться с этой темой и одновременно написать эту статью. После прочтения этой статьи вы сможете ответить на следующие вопросы:
Что такое интерфейс? Что такое значение интерфейса? Что такое пустой интерфейс? Почему nil-интерфейс не равен nil? Где разместить интерфейс? Какая структура интерфейса?


Читать: https://habr.com/ru/articles/856272/

#ru

@go_in_action | Другие наши каналы

Go in Action

05 Nov, 13:16


Делаем форму обратного звонка: лендинг, Go и SMS-уведомления

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. Сегодня расскажу, как создать простую, но эффективную форму обратного звонка с SMS-уведомлениями. Дам пример для сценария, когда клиент оставляет заявку через форму, а менеджер связывается с ним через Callback API. После успешного разговора система автоматически отправляет SMS через SMS API с подтверждением договоренностей и следующими шагами.

SMS-уведомления здесь играют роль надежного канала для закрепления результатов разговора и напоминания о договоренностях. Они не требуют интернета или установки приложений и работают везде, даже при слабом сигнале связи.

Причем пример будет без громоздких фреймворков — только Go и чистый HTML с щепоткой JavaScript.


Читать: https://habr.com/ru/companies/ru_mts/articles/856232/

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Nov, 04:39


Строим микрокernel на Golang

Привет, Хабр! Сегодня рассмотрим, как построить гибкую и масштабируемую систему с использованием микрокernel архитектуры на Golang.

Перед тем как взяться за код, разберёмся, о чём вообще идёт речь. Микрокernel — это архитектурный стиль, при котором минимальное ядро системы отвечает за основные функции: управление процессами, памятью, коммуникациями и т.д., а всё остальное делегируется в виде отдельных модулей или сервисов.

Почему стоит использовать микрокernel? Простота модификации, высокая степень изоляции компонентов и легкость масштабирования — лишь малая часть преимуществ.


Читать: https://habr.com/ru/companies/otus/articles/854120/

#ru

@go_in_action | Другие наши каналы

Go in Action

01 Nov, 10:05


Go и Rust заменят Java и Python: на чем писать в 2025 году и дальше

Go и Rust заменят Java и Python. На чем писать в 2025 году и дальше. Рассматриваем преимущества и недостатки языков программирования Tproger

Читать: «Go и Rust заменят Java и Python: на чем писать в 2025 году и дальше»

#ru

@go_in_action | Другие наши каналы

Go in Action

01 Nov, 07:28


Лёгкости перехода: четыре разработчика о том, почему они перешли на Go

Микросервисная архитектура — это новый черный: кажется, уже все бигтехи пилят монолиты на сервисы и и ищут гошников в штат. Спрос рождает предложение — всё больше ребят переходят с других бэкенд-языков на Golang.

Мы попросили наших разработчиков поделиться своим опытом перехода на Go и рассказать, почему они решили освоить новый язык программирования, какие плюсы и минусы видят в нём, дал ли переход на Go буст в новых карьерных возможностях и кому и в каких случаях они бы они советовали освоить golang.

Эта статья может быть полезна тем, кто тоже хочет добавить Go в копилку знаний, но пока не решился. Приступим!


Читать: https://habr.com/ru/companies/kuper/articles/854586/

#ru

@go_in_action | Другие наши каналы

Go in Action

01 Nov, 07:03


Golang + Redux

Привет, Хабр!

Сегодня мы попробуем реализовать управление состоянием в Go‑приложениях с помощью паттерна Redux. Да‑да, Redux не только для JS.

Redux — это предсказуемый контейнер состояния для приложений. Он помогает управлять состоянием приложения централизованно, делая его более предсказуемым и удобным для отладки. В основном Redux ассоциируется с фронтендом на JavaScript, но принципы, лежащие в его основе, иногда могут подойти и для Go‑приложений.


Читать: https://habr.com/ru/companies/otus/articles/854306/

#ru

@go_in_action | Другие наши каналы

Go in Action

31 Oct, 06:11


Как мы внедрили CockroachDB на DBaaS в компанию классических СУБД

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


Читать: https://habr.com/ru/companies/avito/articles/854732/

#ru

@go_in_action | Другие наши каналы

Go in Action

30 Oct, 18:48


Какой то странный баг в Go со временем

Всем привет. Понадобилось мне как то посчитать производительность сервера. И поставили задачу вычислить минимальное, максимальное, и среднее время на обработку запроса.

Короче я делал, делал и не мог понять, почему на холостом ходу микросекунды, а на тесте какие то странные цифры.

Начал исследовать причину. И я ее нашел. И теперь задаюсь вопросом: или лыжи не едут или в go баг?
Интересненько...

Читать: https://habr.com/ru/articles/854808/

#ru

@go_in_action | Другие наши каналы

Go in Action

30 Oct, 08:11


Приложение на Go шаг за шагом. Часть первая: скелет, НТТР-сервер и конфигурация

Современные курсы стараются максимально охватить спектр технологий, которые используют компании. Ориентироваться в этом океане модных фич всё труднее, особенно это касается новичков, которые только начали знакомство с программированием. В итоге может случиться так, что выпускник курса вроде бы всё знает, а применять не может.

Привет! Я Владислав Попов, автор курса «Go-разработчик с нуля» в Яндекс Практикуме. В серии статей я хочу помочь начинающим разработчикам упорядочить знания и написать приложение на Go с нуля: мы вместе пройдём каждый шаг и создадим API для получения информации о книгах и управления ими.


Читать: https://habr.com/ru/companies/yandex_praktikum/articles/854482/

#ru

@go_in_action | Другие наши каналы

Go in Action

30 Oct, 05:29


Как писать качественные unit-тесты: процент покрытия, мутанты и работа с моками

Привет, Хабр! Меня зовут Марина, я Backend-инженер в компании Авито. Сегодня я хочу поделиться собственными рекомендациями, к которым удалось прийти при работе над качеством тестового покрытия сервисов нашей команды.


Читать: https://habr.com/ru/articles/854546/

#ru

@go_in_action | Другие наши каналы

Go in Action

29 Oct, 09:16


Паттерны проектирования Go. Fan-in

Доброго времени суток!

Наблюдая за тем, как разработчик пишет код, можно подумать, что он пребывает в состоянии глубокой безмятежности - работа непыльная, тяжести поднимать не нужно. Тем не менее, этот труд кажется простым только с виду. На самом деле очень легко сделать что-то не так. Да и вообще... что такое код? - мысли разработчика в чистом виде, а мысли у всех людей разные. Даже если решение получается верным, его понимание может требовать определённых усилий со стороны других разработчиков, что здорово может замедлить работу команды. Да и в принципе прибавить хлопот при дальнейшем сопровождении кода. Для избежания таких трудностей были придумана паттерны проектирования - варианты решений типовых задач в разработке. Такой подход позволяет не только воспользоваться готовой идеей, но и выработать общий стиль написания кода в команде...но, конечно, при правильном понимании паттерна проектирования.

В этой статье хочется немного поговорить о паттернах, которые применяются в Go. Поэтому рассмотрим, так называемый, fan-in: попишем немного код и unit-тест.


Читать: https://habr.com/ru/articles/854302/

#ru

@go_in_action | Другие наши каналы

Go in Action

29 Oct, 08:11


Вопросы по мэпам (map) в Go

Пару недель я собрал в статейку несколько базовых вопросов по массивам и слайсам - и в комментариях было предложено "а теперь надо про мэпы". Хорошая мысль - мы пользуемся ими почти на "интуитивном" уровне и о некоторых нюансах не задумываемся. Довольно много статей посвящено сверхподробному изложению внутреннего устройства - это мы пропустим. А посмотрим на мэпы так сказать "снаружи", с точки зрения их использования. Для знатоков тут вряд ли будет что-то новенькое, а тем кто недавно в языке всё-таки может послужить небольшим "чек-листом" :)

Мы используем жаргонный термин "мэпа" (она же "мапа") вместо того чтобы писать по-английски "map" чисто ради того чтобы иметь возможность пользоваться свойственными русскому языку падёжными окончаниями для большей связности текста.


Читать: https://habr.com/ru/articles/854214/

#ru

@go_in_action | Другие наши каналы

Go in Action

28 Oct, 15:05


Это точно поможет тебе в проектировании API

Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: Он удобен и на каждом этапе содержит ссылки для изучения подтем.

6 самых популярных стилей архитектуры API: которые вам нужно знать (с плюсами, минусами и примерами использования)

Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Руководство по проектированию сетевых API от Google: Его использовали внутри компании с 2014 года, и оно служит основой при разработке облачных и других API.

— Книга «Паттерны проектирования API: Сотрудник того же Google Джей Гивакс рассказывает о том, как в компании создают масштабируемые и гибкие сервисы. Вы узнаете, как улучшить дизайн самых распространённых API и как действовать в сложных пограничных случаях. Сопровождается иллюстрациями и примеры кода.

С вас лойс 👍

#api

Go in Action

28 Oct, 09:09


Как создать систему страшных звонков на Хэллоуин на Go и Exolve Voice API

Хэллоуин — это время костюмов, конфет и, конечно же, легких розыгрышей. И что может быть лучше, чем отправить друзьям и знакомым жуткие автоматические звонки со страшными аудиосообщениями? В этой статье рассмотрим, как с помощью Exolve Voice API и Go можно создать систему для отправки пугающих звонков.


Читать: https://habr.com/ru/companies/exolve/articles/853952/

#ru

@go_in_action | Другие наши каналы

Go in Action

28 Oct, 05:45


Python, Go, Ruby — сайты создателей популярнейших языков собрали в одном месте

Свежий проект собрал личные сайты создателей популярных языков программирования Python, Go и Ruby в одном месте, но столкнулся с техническими трудностями, такими как высокая загрузка процессора

Читать: «Python, Go, Ruby — сайты создателей популярнейших языков собрали в одном месте»

#ru

@go_in_action | Другие наши каналы

Go in Action

25 Oct, 09:46


Микросервисы: Почему именно gRPC?

Архитектура микросервисов широко распространена в современном программировании. Благодаря этой архитектуре разработчики смогут самостоятельно разрабатывать сервисы и управлять ими. Однако очень важно выбрать правильный протокол для эффективного взаимодействия между микросервисами. Здесь протокол gRPC (Google Remote Treatment Call) выделяется своей высокой эффективностью и скоростью. В этой статье мы предоставим подробную информацию о RPC и gRPC, рассмотрим преимущества gRPC в архитектурах микросервисов и продемонстрируем их различия на примерах кода на языке программирования Go.


Читать: https://habr.com/ru/articles/853392/

#ru

@go_in_action | Другие наши каналы

Go in Action

25 Oct, 05:44


Sidecar на Go: позволь другому заниматься твоими проблемами

Привет, Хабр!

В распределённых системах каждая служба выполняет свою задачу: одна отвечает за логи, другая за обработку запросов, третья за безопасность. Но не всегда удобно нагружать основной сервис дополнительной логикой. Именно здесь хорошо вписывается Sidecar — отдельный контейнер или процесс, который берёт на себя часть инфраструктурных задач, разгружая основное приложение и позволяя сосредоточиться на главной бизнес-логике.

Сегодня мы рассмотрим реализацию Sidecar на Golang.


Читать: https://habr.com/ru/companies/otus/articles/852642/

#ru

@go_in_action | Другие наши каналы

Go in Action

23 Oct, 16:23


Развлекаемся с итераторами в Go

Релиз версии Go 1.23 добавил поддержку итераторов и пакет iter. Теперь можно перебирать константы, контейнеры (map, slice, array, string) и функции. Сначала создание итератора показалось мне неудобным, хотя в то же время его использование выглядело простым.

Моя проблема с подходом к итераторам в Go заключается в том, что их нельзя «связывать» так,как это можно делать в JavaScript:


Читать: https://habr.com/ru/companies/beget/articles/852940/

#ru

@go_in_action | Другие наши каналы

Go in Action

23 Oct, 14:55


Как запустить миграцию базы данных в Kubernetes — различные подходы с примерами

В эпоху микросервисов и Kubernetes управление миграциями баз данных стало сложнее, чем когда-либо. Традиционных методов запуска миграций во время запуска приложения больше недостаточно.

В этой статье рассматриваются различные подходы к управлению миграциями баз данных в среде Kubernetes с упором на инструментарий Go. 

#kubernetes

Go in Action

23 Oct, 07:51


Сравнение двух функций в Go с указателями и без

Меня часто спрашивают, почему указатели лучше? Шёрт побери, вот почему!

Описание функций меняющих местами значения переменных:

1. Функция с указателями:


Читать: https://habr.com/ru/articles/852390/

#ru

@go_in_action | Другие наши каналы

Go in Action

22 Oct, 19:23


Паттерны многопоточности в Go

В этой статье я постараюсь рассказать о том как их компоновать в самые популярные паттерны для поддержки масштабируемости и удобства сопровождения будущих систем.Почему же многопоточность так важна? Сегодняшние приложения должны быть быстрыми и отзывчивыми, а для этого нужно выполнять множество задач одновременно.

Представь себе, что твоя программа обрабатывает запросы пользователей, одновременно загружает данные с сервера и проводит вычисления. И все это должно происходить без задержек и ошибок. Для всего этого у тебя есть горутинки! Однако если с ними обращаться неосторожно, то могут возникнуть такие ошибки, которые сложно будет сразу отловить. Вот здесь на сцену выходят паттерны многопоточности, которые помогают структурировать и оптимизировать параллельную работу.


Читать: https://habr.com/ru/articles/852556/

#ru

@go_in_action | Другие наши каналы

Go in Action

22 Oct, 07:18


Создание кастомного Kubernetes Scheduler для StatefulSet

В этой статье мы рассмотрим процесс создания кастомного scheduler'а для Kubernetes, ориентируясь на Kubernetes Scheduling Framework.

Обычно для назначения подов на вычислительные узлы используется стандартный планировщик, который, проанализировав различные параметры, автоматически выполнит оптимальное размещение (например, распределит поды таким образом, чтобы не размещать их на вычислительных узлах с недостаточными ресурсами).

В одном из наших проектов, где мы использовали оператор Strimzi для развёртывания кластеров Kafka, заказчик выдвинул специфические требования по размещению данных, резервному копированию и восстановлению.
Одним из ключевых пунктов стал вопрос строгой привязки экземпляров приложения к вычислительным узлам.
Для этого нам пришлось создать кастомный scheduler, учитывая нюансы инфраструктуры, особенности приложения и требуемые правила размещения.
Schedule Reading

Читать: https://habr.com/ru/articles/851896/

#ru

@go_in_action | Другие наши каналы

Go in Action

21 Oct, 10:31


Нашёл огромную библиотеку алгоритмов с открытым исходным кодом

Команда энтузиастов собрала обширную коллекцию алгоритмов, аккуратно распределила их по категориям и языкам программирования, а для удобства использования создала сайт.

Кстати, языков на этом ресурсе реально много — от популярных, по типу Python, Java и C#, до более нишевых, таких как R и Scala.

Полезно будет всем, так что берём на заметку

#алгоритмы

Go in Action

21 Oct, 09:55


Protobuf и buf: блеск, нищета и импортозамещение

Если для компиляции proto-файлов вы всё ещё используете protoc, самое время перестать и перейти на buf. Разберём, как это сделать и почему это необходимо. Также рассмотрим проблемы доступа к buf.build.

Меня зовут Эдгар Сипки, я Go-разработчик в Ozon Fintech. buf — мощная утилита для линтинга протофайлов, проверки обратной совместимости API, генерации кода и валидации запросов. Однако, из-за санкций она недоступна в России. Поэтому я расскажу, как мы разрабатывали собственное решение в рамках импортозамещения.


Читать: https://habr.com/ru/companies/oleg-bunin/articles/816631/?utm_campaign=816631

Go in Action

18 Oct, 11:06


Go-разработчики создают высоконагруженные сервисы в сферах онлайн-ритейла, доставки, финтеха, интернета вещей. Язык Go отличается масштабируемостью и высокой производительностью, поэтому с каждым годом профессия становится всё популярнее. 

Курс Практикума подойдёт тем, кто уже знаком с Go и хочет упорядочить свои знания, а также тем, кто хочет перейти на Go с другого языка программирования. 

— Вы сделаете 3 проекта с нуля и добавите их в портфолио 
— Научитесь писать сложные приложения на Go
— Освоите архитектурные паттерны

Начните курс бесплатно, а если понравится, платите как удобно: в рассрочку или целиком.

Присоединиться

Это #партнёрский пост

Go in Action

17 Oct, 08:30


Backend engineer, ваш выход

На новой вакансии вам предстоит:
— разрабатывать и внедрять масштабируемые и надёжные решения в области обработки потоковых и пакетных данных;
— определять и устранять проблемы производительности и масштабируемости в сложных частях продукта;
— активно участвовать в обзорах дизайна системы;
— улучшать общее качество кода и продукта.

Будет плюсом:
— опыт работы с оркестраторами потоков операций обработки данных: Apache Airflow, Prefect, Dagster;
— опыт работы с рекомендательными системами;
— опыт работы с облачными платформами.

Нажимайте, чтобы быть на связи

#вакансии #работа

Go in Action

16 Oct, 09:03


Второй год подряд ребята из DevCrowd проводят большое исследование Go-разработчиков

Вот что они анализируют:

— Что входит в обязанности и каких навыков не хватает.
— Сколько в среднем зарабатывают в профессии в зависимости от грейда.
— Какие инструменты, сервисы наиболее популярны.
— Что читают, слушают и смотрят для профессионального развития.

Результаты опроса помогут вам сравнить свои ожидания с рыночными, построить план своего развития, и просто понять, что происходит с индустрией!

Проходите опрос, делитесь своими мнениями и помогите сделать исследование максимально охватным. Организаторы обещают сравнить данные с прошлым годом и поделиться выводами публично уже в конце ноября.

Пройти опрос

Посмотреть результаты прошлого года

Go in Action

15 Oct, 21:20


Корутины: stackful vs stackless

В этой статье я хочу объяснить разницу между stackless и stackful корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых языках программирования реализована многопоточность.

Я стараюсь писать статьи простым и понятным языком, чтобы их мог понять как можно больший круг читателей. Поэтому в тексте будут сделаны упрощения.


Читать: https://habr.com/ru/articles/850970/

#ru

@go_in_action | Другие наши каналы

Go in Action

15 Oct, 13:01


Сделали квиз для нижегородских backend-разработчиков

Проверьте, насколько хорошо вы шарите в профессиональных терминах и архитектуре Нижнего. К тому же каждый вопрос украшен ламповой иллюстрацией города в стиле пиксель-арт: https://tprg.ru/ePN7

Это #партнёрский пост

Go in Action

15 Oct, 09:22


Переход на Go глазами PHP-разработчика: 5 подводных камней

Хабр, привет! Меня зовут Костя Козин, я старший PHP-разработчик Lamoda Tech. За 17 лет в коммерческой разработке я писал на JS, PHP, и теперь на Golang. Сегодня в Lamoda Tech мы учим PHP-разработчиков писать на Go, и под это создали целый онбординг. Довольно часто в локальных обсуждениях я слышал, как тяжело дается переход с PHP на Go, а у некоторых первые месяцы работы с Go вовсе отбивают желание работать с языком. Поэтому я поделюсь подводными камнями, которые ожидают вас при переходе с одного языка на другой, и с которыми сталкивался я сам и мои коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Golang станет более предсказуемым.


Читать: https://habr.com/ru/companies/lamoda/articles/850456/

#ru

@go_in_action | Другие наши каналы

Go in Action

15 Oct, 08:25


Ошибки в Go: проблема и элегантное решение с библиотекой try

Все мы знаем: Go — это классный язык программирования.
Простота, ясность, скорость компиляции — мечта разработчика.
Но вот одна вещь может довести до белого каления — это обработка ошибок.
В отличие от языков вроде Java или Python, где ошибки обрабатываются с помощью конструкции try-catch, Go предпочитает явный подход: большинство функций возвращают ошибку в виде второго значения, и разработчик обязан проверять её после каждого вызова.
Это выглядит чисто и прозрачно, но на практике такие проверки приводят к громоздким и повторяющимся конструкциям. Вместо того чтобы писать код, который решает задачи, мы погружаемся в бесконечные проверки:

if err != nil {
return err
}


Читать: https://habr.com/ru/articles/850464/

#ru

@go_in_action | Другие наши каналы

Go in Action

14 Oct, 09:37


Go sync.WaitGroup и проблема с выравниванием

WaitGroup — это, по сути, способ дождаться, пока несколько горутин закончат свою работу. Мы начнем с основ, а затем разберемся, как это устроено под капотом.


Читать: https://habr.com/ru/articles/850018/

#ru

@go_in_action | Другие наши каналы

Go in Action

12 Oct, 07:13


Server Side Rendering на Go

Жизнь – это вечная спираль, где всё идёт по кругу, но с каждым витком становится лучше. Ещё 20 лет назад я писал веб-приложения на Perl + Template Toolkit 2, генерируя HTML на стороне сервера. Время шло, и веб-разработка разделилась на две половины: фронтенд и бэкенд, а между ними API. Со временем я переключился с Perl на Go для бэкенда и AngularJS, а потом и Vue для фронтенда. В таком стеке я создал несколько проектов, включая HighLoad.Fun. Писать API и генерировать клиентскую библиотеку на TypeScript было удобно, а Vue-приложение деплоилось как SPA. Всё вроде бы шло хорошо... до тех пор, пока не пришла необходимость внедрить SSR для SEO. Тут начались проблемы: нужно было поднять NodeJS сервер для выполнения SSR, который должен ходить на Go сервер за данными, думать о том, где в данный момент выполняется код, на сервере или в браузере и писать и писать бессмысленный код перекладывающий данные.

Тогда я встал перед выбором: либо отказаться от Go на бэкенде, либо отказаться от Vue на фронтенде. Для меня выбор был очевиден: я остался с Go.

Генерация HTML на Go, в общем-то, не проблема: можно использовать готовые шаблонизаторы, вручную писать контроллеры и настроить WebPack для сборки статики. Но всё это долго и неудобно. А главное – я люблю писать программы, но ненавижу писать код. И тогда я задался целью: создать инструмент, который облегчит мне жизнь и будет автоматически решать большую часть задач за меня.

Мне нужен был генератор, который бы:

* Превращал Vue-подобные шаблоны в Go-код с типизированными переменными, позволяя ловить ошибки на этапе компиляции.

* Автоматически генерировал DataProvider интерфейсы для получения данных и, желательно, их базовую имплементацию.

* Собирал и подключал только нужные JS и CSS файлы из лежащих рядом с шаблонами TypeScript и SCSS файлов.

* Поддерживал переменные, выражения, условия и циклы в шаблонах, как во Vue.

* Объединял шаблоны из подпапок по принципу Vue-тега <router-view.

* Автоматически маршрутизировал страницы, поддерживая динамические параметры.

И главное – всё это должно работать в автоматическом режиме: изменения в исходном коде автоматически пересобираются и перезапускаются без лишних усилий.

После ряда экспериментов и нескольких ночей мне это кажется удалось. Под катом – подробный туториал, как разрабатывать быстрые и удобные сайты с помощью GoSSR.


Читать: https://habr.com/ru/articles/848640/

#ru

@go_in_action | Другие наши каналы

Go in Action

10 Oct, 00:51


Анонимная сеть в 100 строк кода на Go

Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.


Читать: https://habr.com/ru/articles/849552/

#ru

@go_in_action | Другие наши каналы

Go in Action

06 Oct, 17:18


Создание AI-ассистента с OpenAI Assistants API на Go

Всем привет!

Недавно возникла необходимость создать AI-ассистента, обученного искать и выдавать информацию из базы знаний, предоставленных заказчиком.

В этой статье мы рассмотрим процесс создания MVP такого ассистента. Мы загрузим в него файлы, зададим инструкции, привяжем все к Telegram-боту и будем обрабатывать запросы пользователей.

Для создания ассистента будем использовать функциональность OpenAI Assistants API с помощью сторонних прокси-сервисов.

Все это напишем на Go, а код, готовый к запуску и компиляции, будет доступен в конце статьи.

Приятного чтения!
К статье

Читать: https://habr.com/ru/articles/848624/

#ru

@go_in_action | Другие наши каналы

Go in Action

06 Oct, 15:24


Транзакции в БД на Go с использованием многослойной архитектуры

Когда я присоединяюсь к новой компании, меня часто посещает синдром самозванца. После всех этих собеседований кажется, что парни знают, что делают и я смиренно настравиаюсь учиться у лучших.

Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления.

Читать: https://habr.com/ru/articles/848596/

#ru

@go_in_action | Другие наши каналы

Go in Action

06 Oct, 15:24


Муравьиный алгоритм. Решение задачи коммивояжера

В данной статье я бы хотел объяснить работу алгоритма муравьиного алгоритма и решить с его помощью задачу коммивояжера. Решение задачи сводиться к выходу из какой-либо вершины графа, прохождению по всем вершинам по одному разу самым коротким путем и возврату к начальной точке. В конце статьи вас ожидает реализация алгоритма на языке Go.


Читать: https://habr.com/ru/articles/848590/

#ru

@go_in_action | Другие наши каналы

Go in Action

05 Oct, 07:31


Массивы и слайсы в Go — для собеседований

Набив несколько шишек поначалу мы начинаем довольно уверенно пользоваться массивами и слайсами в Go и обычно не сильно задумываемся над разными неприятными подробностями (если пишем достаточно аккуратно). Однако когда дело доходит до собеседований, оказывается что наши интуитивные представления легко могут дать сбой - где-то что-то забылось, а о каких-то нюансах может и не задумывались.

Здесь собраны несколько базовых вопросов встретившихся в последнюю сессию поисков работы :) вдруг поможет кому-то кто только вникает в язык - а кто-то, может, дополнит или поправит...
Ух, понеслись!

Читать: https://habr.com/ru/articles/848392/

#ru

@go_in_action | Другие наши каналы

Go in Action

04 Oct, 10:12


Как мы законтрибьютили целую строчку в HashiCorp Vault

Привет! Меня зовут Пётр Жучков, я руководитель группы хранения секретов и конфигураций в отделе Message Bus в Ozon. Мы отвечаем за поддержку и развитие системы хранения и использование секретов, активно сотрудничаем с ребятами из департамента информационной безопасности, чтобы все сервисы могли безопасно работать с секретами.

Основной наш инструмент для управления секретами — Vault. Он отличается хорошей функциональностью, а также имеет подробную документацию, благодаря которой можно быстро начать его использовать. Конечно, запустить Vault и подключить к своему сервису — это совсем не то же самое, что надёжно и безопасно предоставить платформенный доступ более 6000 сервисов и других инфраструктурных систем. Для нас крайне важно отдавать данные быстро и хранить безопасно.

Если вы хотите безопасно хранить секреты или просто погрузиться в gRPC и Go, то, думаю, вам будет интересно и полезно не повторять наши ошибки.

Далее я расскажу историю о том, как во время стандартной процедуры обслуживания Vault мы смогли положить его и потратили много времени и нервных клеток, чтобы вернуть в рабочее состояние.


Читать: https://habr.com/ru/companies/ozontech/articles/845290/

#ru

@go_in_action | Другие наши каналы

Go in Action

03 Oct, 14:51


Строим ETL-конвейер для машинного обучения с помощью Kafka, Clickhouse и Go

В этой статье я поделюсь с вами своим опытом использования Golang, Kafka и Clickhouse на примере простого ETL-конвейера для параллельной передачи JSON-данных в базу данных с последующим прогнозированием температуры на основе машинного обучения.


Читать: https://habr.com/ru/companies/otus/articles/847896/

#ru

@go_in_action | Другие наши каналы

Go in Action

03 Oct, 07:17


Алгоритм Прима

В данной статье я бы хотел объяснить работу алгоритма Прима. Алгоритм используется для нахождения минимального остовного дерева. Сам алгоритм очень прост, в статье хотел бы поделиться своей реализации на языке Go.


Читать: https://habr.com/ru/articles/847836/

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Oct, 14:39


Как написать производительный и безопасный backend на Go

Backend на Go. Показываем, как написать бекенд на Го. Рассматриваем реальные примеры и кейсы Tproger

Читать: «Как написать производительный и безопасный backend на Go»

#ru

@go_in_action | Другие наши каналы

Go in Action

02 Oct, 06:57


Тестовое задание от гейм-студии (matchmaking, разбор)

На это задание я наткнулся в процессе недавнего поиска работы - компания занимающаяся разработкой игр (по-моему, Lesta Games) предлагала его выполнить до отклика на HH. То есть "присылайте отклик вместе со ссылкой на ваше решение" или в этом духе. А я обожаю тестовые задания - такой шанс быстро напедалить с нуля какой-то код и потом спокойно про него забыть :) Здесь задачка была сформулирована не слишком конкретно - мне такие кажутся скорее "поводом поговорить" - поэтому любопытно обсудить подобный кейс с сообществом, знатоками и сочувствующими. Речь шла про позицию Go-разработчика - но задание достаточно language-agnostic - так что читайте смело!
Итак, Задача!

Читать: https://habr.com/ru/articles/847538/

#ru

@go_in_action | Другие наши каналы

Go in Action

30 Sep, 10:27


Как подружить Gorm и PostGIS, решение промышленного уровня

GORM Фантастическая ORM для Golang.

PostGIS расширяет возможности реляционной базы данных PostgreSQL , добавляя поддержку хранения, индексирования и запросов геопространственных данных.

В этой статье поделимся своим опытом интеграции GORM и PostGIS, сложностями при попытке использования gorm для работы с геометрическими данными и конечно предлагаем готовое решение.
Изначально эта статья была опубликована здесь.


Читать: https://habr.com/ru/articles/847048/

#ru

@go_in_action | Другие наши каналы