Если вам предстоит работать с проектами на gRPC, то этот гайд позволит в максимально сжатые сроки покрыть львинную долю того, чему необходимо научиться.
Он доступен в двух вариантах:
- Видео на YouTube
- Статья на Хабре
Сервис пишется с нуля, попутно затрагивается множество аспектов:
- Правильная архитектура проекта
- Как писать ProtoBuf контракты, генерировать по ним код
- Как полноценно тестировать свой сервис, написание функциональных тестов
- Как правильно работать с паролями и токенами авторизации
- Взаимодействие между сервисами
- Работа с миграциями
И многое другое.
#guide #grpc
Please open Telegram to view this post
VIEW IN TELEGRAM
Исследование Go-разработчиков от авторов языка
https://go.dev/blog/survey2023-h2-results
Основные результаты:
- Разработчики Go заявили, что они больше заинтересованы в инструментах AI/ML, которые улучшают качество кода, который они пишут, а не пишут код для них. Круглосуточно доступный "ревьюер" может стать одной из наиболее полезных фич ИИ.
- Эксперимент с шаблонами проектов (gonew), похоже, решает критические проблемы Go-разработчиков (особенно новичков в Go). Основываясь на этих результатах, можно сказать что gonew может существенно снизить порог входа в Go для новичков.
- 3/4 респондентов работают над программным обеспечением на Go, которое также использует облачные сервисы; это свидетельствует о том, что разработчики рассматривают Go как язык для современной облачной разработки.
- Настроение разработчиков по отношению к Go остается крайне позитивным: 90% респондентов опроса заявили, что удовлетворены работой с Go в течение предыдущего года.
#survey #go_official
https://go.dev/blog/survey2023-h2-results
Основные результаты:
- Разработчики Go заявили, что они больше заинтересованы в инструментах AI/ML, которые улучшают качество кода, который они пишут, а не пишут код для них. Круглосуточно доступный "ревьюер" может стать одной из наиболее полезных фич ИИ.
- Эксперимент с шаблонами проектов (gonew), похоже, решает критические проблемы Go-разработчиков (особенно новичков в Go). Основываясь на этих результатах, можно сказать что gonew может существенно снизить порог входа в Go для новичков.
- 3/4 респондентов работают над программным обеспечением на Go, которое также использует облачные сервисы; это свидетельствует о том, что разработчики рассматривают Go как язык для современной облачной разработки.
- Настроение разработчиков по отношению к Go остается крайне позитивным: 90% респондентов опроса заявили, что удовлетворены работой с Go в течение предыдущего года.
#survey #go_official
go.dev
Go Developer Survey 2023 H2 Results - The Go Programming Language
What we learned from our 2023 H2 developer survey
Открытое собеседование Senior Go разработчика
https://youtu.be/GD0iHLucYdU
Самые популярные интервьюеры русскоязычного Go сообщества - Даниил Подольский (Yadro) и Владимир Балун (Yandex) провели собеседование сеньора на канале Николая Тузова.
Собеседование состоит из двух частей - общие вопросы по знаменитому опроснику Даниила и лайв-кодинг с Владимиром.
В роли кандидата выступил Антон Зиновьев - разработчик и техлид из компании Gaijin.
#собеседование
https://youtu.be/GD0iHLucYdU
Самые популярные интервьюеры русскоязычного Go сообщества - Даниил Подольский (Yadro) и Владимир Балун (Yandex) провели собеседование сеньора на канале Николая Тузова.
Собеседование состоит из двух частей - общие вопросы по знаменитому опроснику Даниила и лайв-кодинг с Владимиром.
В роли кандидата выступил Антон Зиновьев - разработчик и техлид из компании Gaijin.
#собеседование
YouTube
Собеседование Senior Go-разработчика / Даниил Подольский, Владимир Балун - Антон Зиновьев
Даниил Подольский и Владимир Балун проводят собеседование Senior GoLang разработчика - Антона Зиновьева. Интервью состоит из двух частей: общие вопросы и лайв-кодинг.
Канал Антона, на котором он проводит стримы с разработкой на Go: https://www.youtube.com/@laxcity…
Канал Антона, на котором он проводит стримы с разработкой на Go: https://www.youtube.com/@laxcity…
Как устроена память в Go
https://habr.com/ru/companies/vk/articles/776766/
На мой взгляд, устройство памяти - это очень важная тема для тех, кто хочет лучше разбираться, как Go устроен под капотом. Сама статья читается легко и интересно, мне понравилось.
#article #memory
https://habr.com/ru/companies/vk/articles/776766/
На мой взгляд, устройство памяти - это очень важная тема для тех, кто хочет лучше разбираться, как Go устроен под капотом. Сама статья читается легко и интересно, мне понравилось.
#article #memory
Хабр
Потрошим golang: как устроена память
Привет, меня зовут Стас Иванкевич, и я работаю в VK Cloud над разработкой облачных сервисов в команде Data Masters. Сервисы, запрошенные клиентами, так или иначе должны развернуться в том виде, в...
Go Tour на стероидах от ArdanLabs
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlabs.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlabs.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
Ardan Labs
Ultimate Go Tour
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
Forwarded from Go Update
🎉 Состоялся релиз Go 1.22
Как-то буднично и без предварительных фанфар состоялся релиз новой версии языка. Изменений много, постараюсь остановится лишь на самых значимых:
— Расширение синтаксиса циклов for. Теперь можно писать
Вместо
Изменение приятное, уменьшающее число когнитивной нагрузки. Само изменение шло в довесок к итераторам, которые отложили до Go 1.23 (но которые можно попробовать уже сейчас).
— Изменение принципов создания переменных внутри объявления циклов. Об этом я писал вот тут, но если в кратце больше не нужна конструкция вида
— Итераторы доступны в экспериментальном режиме. Включить и поиграться можно через переменную окружения
—
— Переделали trace – и пакет и UI.
—
— Первый v2 пакет
— PGO (оптимизация использующая данные профилировщика) теперь генерирует еще более быстрый код. Обещают от 2% др 14% прироста производительности при использовании PGO.
— Оптимизации "встраивание функций" и "девиртуализатор" теперь работают совместно, что позволяет выполнять один после другого и обратно. Этого очень просили пользователи функций криптографических пакетов которые возвращают интерфейсы.
— Оптимизацию "встраивание функций" сделали еще более умной - теперь она пытается отработать внутри циклов и других горячих местах, и наоборот пытается не инлайнить в коде обработки паник. Но пока все это тоже в экспериментальном режиме. Попробовать можно через
— Из лично приятного: в пакет
На мой взгляд релиз в целом приятный, но половинчатый: многое из действительно интересных вещей скрыты за флагом
Полный список изменений как всегда тут.
Как-то буднично и без предварительных фанфар состоялся релиз новой версии языка. Изменений много, постараюсь остановится лишь на самых значимых:
— Расширение синтаксиса циклов for. Теперь можно писать
for i := range 10 {
println(i)
}
Вместо
for i := 0; i < 10; i++ {
println(i)
}
Изменение приятное, уменьшающее число когнитивной нагрузки. Само изменение шло в довесок к итераторам, которые отложили до Go 1.23 (но которые можно попробовать уже сейчас).
— Изменение принципов создания переменных внутри объявления циклов. Об этом я писал вот тут, но если в кратце больше не нужна конструкция вида
tt := tt
внутри циклов.— Итераторы доступны в экспериментальном режиме. Включить и поиграться можно через переменную окружения
GOEXPERIMENT=rangefunc
. Можно установить через go env -w GOEXPERIMENT=rangefunc
если не хочется каждый раз возится. В комплекте так-же идет пакет iter
который позволяет создавать pull итераторы из push. Почитать про все это от разработчиков языка можно тут.—
go test -cover
теперь корректно выводит 0% покрытия для пакетов где нет тестов, но есть исполняемый код. Для пакетов где нет go файлов или они содержат только структуры выводит старое [no test files]
.— Переделали trace – и пакет и UI.
—
net/http
роутер теперь поддерживает указание метода и паттерны. Про это расширение роутера было много статей и блогов, поэтому тут будет просто упоминание.— Первый v2 пакет
math/rand/v2
. Заменили Mitchell & Reeds LFSR
генератор rand.Source
случайных чисел на более современный и криптографически стойкий ChaCha8
. А сие значит, что его можно использовать для криптографических операций. Плюс он быстрее и жрет меньше памяти. Так-же есть PCG
генератор, который не криптографически стойкий, но еще быстрее. Кроме этого пакет получил дополнительные методы (в том числе дженерик функция rand.N
для работы с семейством int
типов, например time.Duration
).— PGO (оптимизация использующая данные профилировщика) теперь генерирует еще более быстрый код. Обещают от 2% др 14% прироста производительности при использовании PGO.
— Оптимизации "встраивание функций" и "девиртуализатор" теперь работают совместно, что позволяет выполнять один после другого и обратно. Этого очень просили пользователи функций криптографических пакетов которые возвращают интерфейсы.
— Оптимизацию "встраивание функций" сделали еще более умной - теперь она пытается отработать внутри циклов и других горячих местах, и наоборот пытается не инлайнить в коде обработки паник. Но пока все это тоже в экспериментальном режиме. Попробовать можно через
GOEXPERIMENT=newinliner
. Почитать тут.— Из лично приятного: в пакет
slices
добралась функция Concat
для соединения произвольного числа слайсов. Больше не нужно городить цепочку append
.На мой взгляд релиз в целом приятный, но половинчатый: многое из действительно интересных вещей скрыты за флагом
GOEXPERIMENT
, а часть вообще осталась ждать Go 1.23. Тем не менее обновится стоит, хотя-бы ради нового синтаксиса циклов for.Полный список изменений как всегда тут.
Telegram
Go Update
🆒 Fixing For Loops in Go 1.22
Рассказывая про счастливое далекое будущее, я часто забываю рассказать про хорошее (почти) настоящее. Но перед тем как начать, я задам вопрос: а что выведет следующая программа?
package main
import "fmt"
func main() {
var…
Рассказывая про счастливое далекое будущее, я часто забываю рассказать про хорошее (почти) настоящее. Но перед тем как начать, я задам вопрос: а что выведет следующая программа?
package main
import "fmt"
func main() {
var…
Пишем RPG на Go - серия статей
0) https://habr.com/ru/articles/791192/
0.5) https://habr.com/ru/articles/799497/
Искандер активно продвигает GameDev на Go, и вот его очередной проект - обучающая серия статей по написанию RPG на Ebitengine.
Пока написаны только две вступительные статьи, остальное в процессе.
Напомню, что у Искандера уже есть готовая игра - Roboden, написанная на Go, которая уже добралась до Steam и даже до Steamdeck.
————
Если вам интересен подобный формат, предлагаю поддержать автора, чтобы у него точно была мотивация довести проект до конца👾
#guide #gamedev #quasilyte
0) https://habr.com/ru/articles/791192/
0.5) https://habr.com/ru/articles/799497/
Искандер активно продвигает GameDev на Go, и вот его очередной проект - обучающая серия статей по написанию RPG на Ebitengine.
Пока написаны только две вступительные статьи, остальное в процессе.
Напомню, что у Искандера уже есть готовая игра - Roboden, написанная на Go, которая уже добралась до Steam и даже до Steamdeck.
————
Если вам интересен подобный формат, предлагаю поддержать автора, чтобы у него точно была мотивация довести проект до конца
#guide #gamedev #quasilyte
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Делаем RPG на Go: часть 0
Один из самых частых вопросов в нашем сообществе разработке игр на Go — это с чего начать. В этой серии статей мы будем изучать движок Ebitengine и создадим RPG в процессе. Вступление Что от вас...
Сторисы выкладывать тут не буду, но если хотите гоферов в реакты под постами, вы знаете за кого голосовать 👾
https://t.me/boost/golang_digest
Можно в полдень 😉
————
UPD 2: Два гофера есть 👾 🤡
https://t.me/boost/golang_digest
————
Please open Telegram to view this post
VIEW IN TELEGRAM
Красивое решение для борьбы с ботами на серверах
Ещё один интересный пост от Daily Geek News:
https://t.me/daily_geek_news/230
Речь про endlessh-go
- решение для защиты серверов, работающих с SSH. На самом деле, это просто реализация Endlessh на Go с добавлением метрик и дашборда в Графане.
Для тех, кто не очень понимает автора оригинально поста, давайте разберемся о чем речь:
- Тарпит (Tar pit) - технология безопасности, предназначенная для замедления атакующего, путем увеличения времени ответа сервера. Это заставляет сканирующие боты или атакующие инструменты тратить гораздо больше времени на попытку подключения к серверу, что затрудняет атаку. Вот более подробная статья на эту тему.
- Ханипот (Honeypot) - система безопасности, представляющая собой ложную цель для атакующих. Она преднамеренно содержит уязвимости для привлечения хакеров, позволяя администраторам отслеживать попытки несанкционированного доступа и анализировать методы атаки.
Хорошую статью на эту тему на нашел. Если знаете, делитесь в комментариях, а пока вот такая (не читал, не ручаюсь что хорошая)
- Экспортирование данных в Графану позволяет наглядно отслеживать активность вокруг сервера SSH, строить на этом какую-то аналитку
#project #cybersecurity
Ещё один интересный пост от Daily Geek News:
https://t.me/daily_geek_news/230
Речь про endlessh-go
- решение для защиты серверов, работающих с SSH. На самом деле, это просто реализация Endlessh на Go с добавлением метрик и дашборда в Графане.
Для тех, кто не очень понимает автора оригинально поста, давайте разберемся о чем речь:
- Тарпит (Tar pit) - технология безопасности, предназначенная для замедления атакующего, путем увеличения времени ответа сервера. Это заставляет сканирующие боты или атакующие инструменты тратить гораздо больше времени на попытку подключения к серверу, что затрудняет атаку. Вот более подробная статья на эту тему.
- Ханипот (Honeypot) - система безопасности, представляющая собой ложную цель для атакующих. Она преднамеренно содержит уязвимости для привлечения хакеров, позволяя администраторам отслеживать попытки несанкционированного доступа и анализировать методы атаки.
Хорошую статью на эту тему на нашел. Если знаете, делитесь в комментариях, а пока вот такая (не читал, не ручаюсь что хорошая)
- Экспортирование данных в Графану позволяет наглядно отслеживать активность вокруг сервера SSH, строить на этом какую-то аналитку
#project #cybersecurity
Telegram
Daily Geek News
Невероятное красивое решение, в буквальном смысле: тарпит и ханипот для ssh, умеющий экспортировать красивые данные для графиков в графане. Теперь все те боты, которые ходят по сети и пытаются попасть на ваш ssh сервер будут тормозить, а вы их будете автоматом…
Очередная дискуссия про обработку ошибок в Go
https://habr.com/ru/companies/karuna/articles/830346/
Пост написан по мотивам поста этого же автора в его Telegram-канале.
В целом с автором я согласен, но, на мой взгляд, в статье мало нового, и повторяются плюс-минус те же тезисы, которые мы слышим много лет. При этом, статья в очередной раз привлекла внимание сообщества и вызвала активное обсуждение в комментариях.
Если ты новичок, можешь погрузиться в тему - что же у нас не так с обработкой ошибок. А если опытный разработчик, можешь в очередной раз присоединиться к дискуссии и почитать proposals🍾
————
Сам я выкручиваюсь обычно так:
Не идеально, но просто и понятно.
Надеюсь, что когда-нибудь авторы предложат нам что-то более удобное.
#error_handling
https://habr.com/ru/companies/karuna/articles/830346/
Пост написан по мотивам поста этого же автора в его Telegram-канале.
В целом с автором я согласен, но, на мой взгляд, в статье мало нового, и повторяются плюс-минус те же тезисы, которые мы слышим много лет. При этом, статья в очередной раз привлекла внимание сообщества и вызвала активное обсуждение в комментариях.
Если ты новичок, можешь погрузиться в тему - что же у нас не так с обработкой ошибок. А если опытный разработчик, можешь в очередной раз присоединиться к дискуссии и почитать proposals
————
Сам я выкручиваюсь обычно так:
func myFunc() error {
const op = "mypackage.myFunc"
// ...
if err != nil {
return fmt.Errorf("%s: %w", op, err)
}
Не идеально, но просто и понятно.
Надеюсь, что когда-нибудь авторы предложат нам что-то более удобное.
#error_handling
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Ошибки в языке Go — это большая ошибка
// гофер пытается найти логику среди обработки ошибок +-------+-------+-------+-------+-------+-------+ | | err | | err | | err | | ,_,,, | | | | | | ( ◉ _ ◉) | | | | | | /) (\ | | | | | ""...
Forwarded from Go Update
🎉 Вышел Go 1.23! 🎉
Ключевые нововведения:
• Итераторы — больше вот тут. TLDR: теперь можно делать
• Opt-in телеметрия — опциональный сбор метрик и периодическая отправка их. Детальный док вот тут. TLDR: эта вещь позволяет понять как часто и каким командами пользуются Go разработчики, какие флаги они применяют и как часто люди сталкиваются с ошибками компилятора. Статистика обезличенная, а сам формат полностью в открытом доступе. Важно! Сбор по умолчанию включен, но никуда не отсылает метрики. Включить отправку можно с помощью команды
• Директива
• Больше нельзя обратится к неэкспортируемым именам в стандартной библиотеке с помощью
•
• Пакет unique. Про него тоже писал раньше.
• Много функции для итераторов.
Полное описание релиза вот тут.
Ключевые нововведения:
• Итераторы — больше вот тут. TLDR: теперь можно делать
range
по таким функциям:
func(func() bool)
func(func(K) bool)
func(func(K, V) bool)
• Opt-in телеметрия — опциональный сбор метрик и периодическая отправка их. Детальный док вот тут. TLDR: эта вещь позволяет понять как часто и каким командами пользуются Go разработчики, какие флаги они применяют и как часто люди сталкиваются с ошибками компилятора. Статистика обезличенная, а сам формат полностью в открытом доступе. Важно! Сбор по умолчанию включен, но никуда не отсылает метрики. Включить отправку можно с помощью команды
go telemetry on
. Выключить полностью можно с помощью команды go telemetry off
.• Директива
godebug
в go.mod
файлах.• Больше нельзя обратится к неэкспортируемым именам в стандартной библиотеке с помощью
//go:linkname
(за исключением ряда функций).•
time.Timer
и time.Ticker
больше не нужно останавливать для того, что-бы сборщик мусора смог их собрать. Во вторых, канал который ассоциирован с этими таймерами теперь небуферизированный и гарантирует, что в канале нет данных после остановки. Другими словами, после остановки time.Timer
и time.Ticker
больше не требуется пытаться вычитать данные из канала, на случай если таймер уже истек и послал данные в канал. Включается только если go.mod
содержит go 1.23.0
и выше. Заметку про это обновление можно прочитать вот тут.• Пакет unique. Про него тоже писал раньше.
• Много функции для итераторов.
Полное описание релиза вот тут.
go.dev
Go 1.23 Release Notes - The Go Programming Language
Golang Дайджест
🎉 Вышел Go 1.23! 🎉 Ключевые нововведения: • Итераторы — больше вот тут. TLDR: теперь можно делать range по таким функциям: func(func() bool) func(func(K) bool) func(func(K, V) bool) • Opt-in телеметрия — опциональный сбор метрик и периодическая отправка…
Если уж читать краткую выжимку самого интересного, то лучше у Димы (репост из его канала). Он всегда пристально следит за развитием языка, глубоко погружен в тему.
В общем, крайне рекомендую. Не реклама❤️
В общем, крайне рекомендую. Не реклама
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Thank Go! (Anton Zhiyanov)
Go 1.23
Тут вышел Go 1.23, ну а мы с вами успели разобрать основные изменения заранее:
— Итераторы
— Таймеры
— Уникальные значения
— Скопировать каталог
— Куки
Все вместе с интерактивными примерами:
https://antonz.org/go-1-23
Тут вышел Go 1.23, ну а мы с вами успели разобрать основные изменения заранее:
— Итераторы
— Таймеры
— Уникальные значения
— Скопировать каталог
— Куки
Все вместе с интерактивными примерами:
https://antonz.org/go-1-23
Golang Дайджест
Go 1.23 Тут вышел Go 1.23, ну а мы с вами успели разобрать основные изменения заранее: — Итераторы — Таймеры — Уникальные значения — Скопировать каталог — Куки Все вместе с интерактивными примерами: https://antonz.org/go-1-23
Тут тоже интересно рассказано про новое в 1.23, вдруг кому-то больше понравится в таком формате.
Range Over Function Types
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official #go_1_23
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official #go_1_23
go.dev
Range Over Function Types - The Go Programming Language
A description of range over function types, a new feature in Go 1.23.
Паттерн Functional Options
Это очень популярный подход, который я встречал во всех компаниях, в которых довелось писать код на Go.
В этом посте я подробно описал суть проблемы, которую он решает. А в этом разобрал суть паттерна и его реализацию.
#pattern #guide
Это очень популярный подход, который я встречал во всех компаниях, в которых довелось писать код на Go.
В этом посте я подробно описал суть проблемы, которую он решает. А в этом разобрал суть паттерна и его реализацию.
#pattern #guide
unique - новый пакет в стандартной библиотеке Go 1.23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
go.dev
New unique package - The Go Programming Language
New package for interning in Go 1.23.
Go memory ballast: How I learnt to stop worrying and love the heap
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
Очень крутая статья, в которой разработчики Twitch снова борются с Garbage Collector'ом (GC). В статье есть очень крутой ликбез по GC, про некоторые его основы и нюансы.
И всё это закрепляется крутым реальным примером оптимизации, которую можно осознать благодаря понимаю этих самых тонкостей.
Будем честны, далеко не всем это пригодится в реальной работе, т.к. реальная польза будет заметна лишь при большом хайлоаде, но расширять кругозор полезно (а не расширять вредно).
Кроме того, статья поможет разобраться не столько в хайлоаде, сколько во внутреннем устройстве GC, а то ещё более ценно.
Статья написана очень круто — материал довольно сложный, глубокий, но при этом читается довольно легко и интересно.
————
Краткая суть проблемы из статьи: периодически Твич ловит внезапный рост нагрузки. Например, из-за так называемого refresh storm — это когда крупный стример перезапускает стрим, и все его зрители начинают массово обновлять страницу.
Масштабировать такое сложно, т.к. всё происходит слишком быстро, а держать достаточное количество мощностей, работающих постоянно — дорого.
Ребята решили оптимизировать нагрузку на процессор тем, что снизили частоту срабатывания GC. Как именно? Если кратко, то вот так:
Подробное обоснование, объяснение и результаты найдёте в статье🙃
Ну ладно, спойлер, вот результаты:снижение количества срабатываний GC на 99% и снижение нагрузки на CPU на 30%
Вообще, всё это выглядит как грязный хак и костыли, но авторы уже завели proposal, в котором предлагают ввести флаг, позволяющий решить данную проблему легально.
#article #english #highload #garbage_collector
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
Очень крутая статья, в которой разработчики Twitch снова борются с Garbage Collector'ом (GC). В статье есть очень крутой ликбез по GC, про некоторые его основы и нюансы.
И всё это закрепляется крутым реальным примером оптимизации, которую можно осознать благодаря понимаю этих самых тонкостей.
Будем честны, далеко не всем это пригодится в реальной работе, т.к. реальная польза будет заметна лишь при большом хайлоаде, но расширять кругозор полезно (а не расширять вредно).
Кроме того, статья поможет разобраться не столько в хайлоаде, сколько во внутреннем устройстве GC, а то ещё более ценно.
Статья написана очень круто — материал довольно сложный, глубокий, но при этом читается довольно легко и интересно.
————
Краткая суть проблемы из статьи: периодически Твич ловит внезапный рост нагрузки. Например, из-за так называемого refresh storm — это когда крупный стример перезапускает стрим, и все его зрители начинают массово обновлять страницу.
Масштабировать такое сложно, т.к. всё происходит слишком быстро, а держать достаточное количество мощностей, работающих постоянно — дорого.
Ребята решили оптимизировать нагрузку на процессор тем, что снизили частоту срабатывания GC. Как именно? Если кратко, то вот так:
func main() {
// Create a large heap allocation of 10 GiB
ballast := make([]byte, 10<<30)
// Application execution continues
// ...
}
Подробное обоснование, объяснение и результаты найдёте в статье
Ну ладно, спойлер, вот результаты:
Вообще, всё это выглядит как грязный хак и костыли, но авторы уже завели proposal, в котором предлагают ввести флаг, позволяющий решить данную проблему легально.
#article #english #highload #garbage_collector
Please open Telegram to view this post
VIEW IN TELEGRAM
blog.twitch.tv
Go memory ballast: How I learnt to stop worrying and love the heap
I’m a big fan of small code changes that can have large impact. This may seem like an obvious thing to state, but let me explain:
Мысли про найм Go-разработчиков в 2024 году
https://habr.com/ru/articles/846962/
Честно, статья мне не очень понравилась, слишком сумбурно и очень много субъективных мыслей. И главное — не очень понятна основная мыль, которую пытался донести автор.
Но почитать все равно было интересно, ведь на собеседованиях я сейчас бываю довольно редко, и стало интересно что там сейчас происходит на рынке (спойлер — ровно то же самое, что и лет 5 назад).
В любом случае, автору статьи спасибо за то, что поделился своими мыслями❤️
А вот дискуссии в комментариях читать оказалось даже интересней, чем саму статью.
————
С удивлением обнаружил, что автор этой статьи также является автором довольно неплохого сайта-тренажера для решения задач по программированию - Code Abbey. Да, на первый взгляд он выглядит неказисто, но задачки довольно неплохие, и подход интересный. Со мной им когда-то давно поделился Глеб Яльчик — на его взгляд, это один из лучших тренажеров для новичков. Не буду тут подробно объяснять почему — если интересно, спросите в комментариях, обсудим.
Расскажите также в комментариях про свой опыт собеседований по Go в последнее время, только не забывайте уточнять грейд.
https://habr.com/ru/articles/846962/
Честно, статья мне не очень понравилась, слишком сумбурно и очень много субъективных мыслей. И главное — не очень понятна основная мыль, которую пытался донести автор.
Но почитать все равно было интересно, ведь на собеседованиях я сейчас бываю довольно редко, и стало интересно что там сейчас происходит на рынке (спойлер — ровно то же самое, что и лет 5 назад).
В любом случае, автору статьи спасибо за то, что поделился своими мыслями
А вот дискуссии в комментариях читать оказалось даже интересней, чем саму статью.
————
С удивлением обнаружил, что автор этой статьи также является автором довольно неплохого сайта-тренажера для решения задач по программированию - Code Abbey. Да, на первый взгляд он выглядит неказисто, но задачки довольно неплохие, и подход интересный. Со мной им когда-то давно поделился Глеб Яльчик — на его взгляд, это один из лучших тренажеров для новичков. Не буду тут подробно объяснять почему — если интересно, спросите в комментариях, обсудим.
Расскажите также в комментариях про свой опыт собеседований по Go в последнее время, только не забывайте уточнять грейд.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Особенности трудоустройства в 2024 (golang)
За свои 15+ лет в разработке я прошёл наверное 100+ собеседований — и почти четверть из них в этом году, в течение последнего месяца:) Что‑то необычное происходит —...