Как стать автором
Обновить
74.96
Рейтинг

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга

Инструменты выполнения фоновых задач в Go

Программирование *Go *

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

Go →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2.4K
Комментарии 5

Новости

Анализ синтаксиса, который всегда с тобой

Блог компании Delivery Club Tech Open source *Программирование *Go *Управление разработкой *

Всем привет, меня зовут Денис Лимарев, я разработчик платежной системы Delivery Club. И сегодня я расскажу, как мне надоели однообразные ошибки и собственная невнимательность, и как я с этим борюсь. Недавно я написал статью о нашем линтере, где вскользь затрагивал возможность написания локальных проверок под конкретный проект. Сегодня раскрою эту тему подробнее и опишу приемы, упрощающие проверку кода мне и коллегам. А в конце статьи расскажу, как можно автоматизировать некоторые проверки ИБ из нашей недавней статьи, поделюсь дальнейшими планами по развитию по развитию и оставлю ссылку на доклад автора go-ruleguard (далее ruleguard).

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Просмотры 2.1K
Комментарии 7

Табличные тесты в Go с использованием Gomock

Блог компании Авито Программирование *Go *Тестирование веб-сервисов *
Перевод

Чтобы эффективнее тестировать работу программы, можно использовать табличные юнит-тесты. В этой статье пошагово рассказываем, как писать такие тесты с помощью фреймворка Gomock.

Этот текст написал Golang-разработчик Арек Ностер. С разрешения автора мы перевели статью.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 1.5K
Комментарии 1

Изменения функции append в Go 1.18

Программирование *Go *
Из песочницы

Совсем недавно произошел релиз Go 1.18, гвоздем программы стали дженерики. Но про этот факт уже достаточно статей, а мне нечего к ним добавить. Однако, я не смог найти ни одного поста про этот кусочек релиза:

The built-in function append now uses a slightly different formula when deciding how much to grow a slice when it must allocate a new underlying array. The new formula is less prone to sudden transitions in allocation behavior.

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

Читать далее
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 7K
Комментарии 8

Маски, картины, тайные покупатели и анализ продаж: разбираем решения задач для Go-разработчиков

Блог компании VK Блог компании Ozon Tech Занимательные задачки Go *Учебный процесс в IT
3 апреля на платформе All Cups прошло отборочное соревнование на курс «Продвинутая разработка микросервисов на Go» — это уже второй поток бесплатных курсов для разработчиков от Ozon Tech. Программа предназначена для мидлов, поэтому нужно было придумать задания и провести контест, чтобы отобрать релевантных участников.

Методисты All Cups совместно с организаторами разработали алгоритмические задачи, добавив актуального контекста. Здесь много любителей головоломок: предлагаем попробовать свои силы в задачах и сравнить с решениями.


Поехали!
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 4.5K
Комментарии 25

Постигаем искусство написания Dockerfile для Go

Блог компании OTUS Программирование *Go *
Перевод

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

Читать далее
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 4.2K
Комментарии 6

Дженерики могут замедлить ваш код на Go

Программирование *API *Go *
Перевод

Встречайте, вот и Go 1.18, а с ней – первый релиз долгожданной реализации дженериков, наконец-то готовых к реальному использованию в продакшене. Дженерики – это весьма востребованная возможность, давно вызывающая жаркие споры в сообществе Go. С одной стороны, самые голосистые беспокоятся по поводу сложности, которую привносят дженерики. Их страшит неизбежная эволюция Go, которая доведет его либо до многословия как в энтерпрайз-версии Java, со своими обобщенными фабриками, либо, самое страшное, превратит Go в вырожденный HaskellScript, где if-ы придется заменить монадами. Положа руку на сердце, оба этих опасения могут быть преувеличенными. С другой стороны, поборники дженериков считают, что дженерики критически важны для масштабного внедрения чистого кода, пригодного для многоразового использования.

Автор этой статьи не принимает ни одну из сторон в данных дебатах и не дает рекомендаций, где и в каких случаях использовать дженерики в Go. Напротив, эта статья призвана осветить запутанный случай с дженериками в Go с третьей стороны: с точки зрения системных программистов, которые воодушевлены не дженериками как таковыми, а мономорфизацией и тем, как она может сказаться на производительности. Нас таких десятки. Десятки! И мы все имеем изъявить некоторое серьезное разочарование.

Читать далее
Всего голосов 61: ↑58 и ↓3 +55
Просмотры 11K
Комментарии 13

Golang-дайджест № 15 (1 – 30 марта  2022)

Go *

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии Go 1.18, 1.17.8, 1.16.15 взлом типов sum с помощью generics, используйте графический процессор Mac M1 с Go, набор инструментов для обфускации сборок Go, библиотека в стиле Lodash для Go 1.18

Приятного чтения!

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 3.2K
Комментарии 0

Проверяем защищённость приложения на Go: с чего начать

Блог компании Delivery Club Tech Информационная безопасность *Программирование *IT-стандарты *Go *

Привет! Меня зовут Александра, я инженер по информационной безопасности в Delivery Club. Мы используем Go в качестве основного языка для разработки Web-API и представляем вашему вниманию краткое руководство по быстрой проверке сервиса на соответствие базовым требованиям безопасности. Представленную ниже информацию можно адаптировать под проекты, написанные и на других языках.

Читать далее
Всего голосов 26: ↑20 и ↓6 +14
Просмотры 8K
Комментарии 7

Unifi prometheus exporter

Сетевые технологии *Go *Сетевое оборудование

Всем привет! На днях захотелось сделать графики по всем нашим точкам доступа, у нас их много, часть на базе Mikrotik и с ними нет проблем, он легко опрашивается по SNMP и отдаёт статистику сразу по всем точкам, а вот с Unifi всё сложней, нужно опрашивать каждую точку доступа отдельно, а они у нас иногда меняются, соответственно, нужно какое-то решение, которое будет отслеживать эти изменения автоматически. В момент поиска готового решения наткнулся на unpoller, но у нас это не заработало, решение не смогло авторизоваться в нашем контроллере с кодом 400, поэтому написали свое простое решение, решил поделиться, вдруг кому-то пригодится.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 2.4K
Комментарии 0

Rest шлюз для gRPC сервисов на го — gRPC-gateway

IT-инфраструктура *API *Go *
Tutorial

Всем привет!

Данная статья является гайдом по построению REST прокси поверх существующих gRPC сервисов. После прочтения данного материала можно будет вызывать любой из существующих gRPC сервисов используя стандартный REST API, а так же получить полную документацию в swagger формате.

Читать далее
Всего голосов 6: ↑3 и ↓3 0
Просмотры 2.2K
Комментарии 2

Вопросы и ответы для собеседования Go-разработчика

Программирование *Go *Карьера в IT-индустрии

Структурирование информации — очень полезный навык. И дабы привнести некоторый порядок в этап подготовки к интервью на должность Golang разработчика (и немножко техлида) решил записывать в этой заметке в формате FAQ те вопросы, которые я задавал, задавали мне или просто были мной найдены на просторах сети вместе с ответами на них. Стоит относиться к ним как к шпаргалке (если затупишь на реальном интервью — будет где подсмотреть) и просто набору тем, которым тебе стоит уделить внимание.


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


Да, это очень объемный пост, и вряд ли его можно вдумчиво осилить за один подход, но поместив его в закладки он, возможно, когда-то сослужит вам добрую службу (читать его можно по частям, находясь в метро или между вечными совещаниями; да и Ctrl + F никто не отменял). Ещё ему очень не хватает оглавления для удобной навигации между вопросами, но у хабраредактора нет возможности генерировать TOC (если будут запросы об этом в комментариях — сделаю его руками). Об очепятках, пожалуйста, пишите в личку.

Читать дальше →
Всего голосов 41: ↑38 и ↓3 +35
Просмотры 20K
Комментарии 14

Инструкция: Как построить процесс доставки приложения в Kubernetes, используя gitlab ci и gitlab runner

Блог компании CloudMTS Go *Микросервисы *Kubernetes *


Привет, Хабр! Меня зовут Егор Комаров, я тестировщик в команде #CloudMTS.

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

Когда в приложении появляется новый функционал (например, изменился ответ от сервера), запускается ряд стандартных действий:

  • получить фичу от разработчика;
  • сбилдить контейнер с новым приложением;
  • загрузить контейнер в репозиторий;
  • изменить и применить манифест кубера.

Эти рутинные действия можно автоматизировать через функционал gitlab ci.
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 5.9K
Комментарии 7

Гайд по поиску и устранению утечек памяти в Go сервисах

Go *DevOps *Микросервисы *
Tutorial

Привет меня зовут Игорь и я профессионально занимаюсь веб разработкой с 2005 года, раньше это называлось "веб-мастер", а сейчас full-stack developer.

На данный момент я tech lead в одной классной команде и иногда мне приходиться писать много текста в confluense, что бы не объяснять всё дважды и заодно приумножить knowledge base компании. Этот гайд мои "заметки на полях" в ходе исследования одного инцидента.

Читать далее
Всего голосов 10: ↑6 и ↓4 +2
Просмотры 3.1K
Комментарии 4

Дженерики в Go — подробности из блога разработчиков

Блог компании SkillFactory Программирование *Интерфейсы *Go *Изучение языков
Перевод

В Go 1.18 добавлена поддержка дженериков. Это самое большое нововведение с момента первого Open Source выпуска Go. Не будем пытаться охватить все детали, затронем всё важное. Подробное описание со множеством примеров смотрите в документе с предложением по улучшению языка. Материалом делимся к старту курса по Backend-разработке на Go.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 6.2K
Комментарии 8

TEGRUS подтверждает, что корпоративная почта Mailion выдерживает нагрузку в 600 тысяч пользователей

Блог компании МойОфис Тестирование IT-систем *TDD *Go *Софт


В ноябре прошлого года МойОфис представила корпоративную почту нового поколения Mailion, разработанную при грантовой поддержке РФРИТ. Это тиражируемое решение для крупных организаций, которое разворачивается на собственных серверах клиента или на базе инфраструктуры доверенного партнера. Благодаря Cloud Native микросервисной архитектуре Mailion гарантирует высокую отказоустойчивость, быстрое самовосстановление и масштабируемость в период колебания нагрузок.

Инженеры компании TEGRUS, российского системного интегратора полного цикла, провели нагрузочное тестирование почты Mailion и подтвердили её применимость в структурах с 600 тысячами пользователей. В ходе тестирования проверялась корректность исполнения сценариев нагрузки, которые эмулируют рабочий день организации и описывают типовое поведение сотрудников крупного предприятия при работе с электронной почтой.

О том, как проходило тестирование и какие результаты мы получили — читайте под катом.
Читать дальше →
Всего голосов 19: ↑16 и ↓3 +13
Просмотры 2.3K
Комментарии 11

Номинация: Худший способ сформировать URL строку в Golang

Блог компании Timeweb Cloud Программирование *ООП *Go *
Tutorial


Давайте я сразу зайду с козырей. Сколько ошибок в коде этой функции вы можете найти за 60 секунд?


func NewConnectionString(host, path, database, user, password string, debug bool) string {
	return fmt.Sprintf(
		"proto://%s/%s?userName=%s&password=%s&database=%s&debug=%t",
		host, path, database, user, password, debug,
	)
}

Все ошибки в этом довольно небольшом коде найти и обезвредить довольно сложно. Я попробую их сейчас сформулировать и скомпоновать в две основные:


  • очевидная — перепутаны параметры;
  • не очевидная — параметры не экранируются.

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


Читать дальше →
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 7.1K
Комментарии 9

Микросервисный фреймворк Flogo — собираем систему из кирпичиков

Блог компании OTUS Go *Микросервисы *

Для создания микросервисной архитектуры на Go может использоваться фреймворк Flogo, основанный на идеях потока сообщений/данных между микросервисами и реакции на события. В этой статье мы рассмотрим его возможности на примере простой задачи обработки данных телеметрии.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 3.6K
Комментарии 1

Метаморфозы Go: сможет ли язык одолеть Python и Java?

Блог компании *instinctools Программирование *Go *Интервью

Мы продолжаем публиковать выдержки из дискуссий экспертов, которые обсуждали наиболее важные тренды в IT. Эти встречи проводились *instinctools в рамках проекта «Техпора», и одна из бесед касалась развития языка программирования Go. Правильно ли считать Go перспективным языком и что в нем и экосистеме изменилось за последнее время? 

Читать далее
Всего голосов 19: ↑10 и ↓9 +1
Просмотры 5.3K
Комментарии 6

Разворачиваем Golang приложение в Kubernetes

Go *Kubernetes *

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 3.7K
Комментарии 1

Вклад авторов

Работа

Go разработчик
117 вакансий