Именованием ok считается вредным?
Существует старая шутка среди программистов, что в информатике есть всего две сложные проблемы: выбор названий, параллелизм и ошибки на единицу.
Давайте поговорим о названии булевых переменных в Go.
https://www.dolthub.com/blog/2024-05-10-ok-considered-harmful/
👉 @golang_lib
Существует старая шутка среди программистов, что в информатике есть всего две сложные проблемы: выбор названий, параллелизм и ошибки на единицу.
Давайте поговорим о названии булевых переменных в Go.
https://www.dolthub.com/blog/2024-05-10-ok-considered-harmful/
👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
Оптимизируем код на Go в 10 раз | Как избежать false sharing в Go
00:00 - Введение
00:17 - Подход с RWMutex
01:40 - Подход с Mutex
02:10 - Подход с Atomic
03:39 - Подход с шардированием
04:36 - Подход с выравниванием при шардировании
05:42 - False sharing
08:13 - Заключение
источник
👉 @golang_lib
00:00 - Введение
00:17 - Подход с RWMutex
01:40 - Подход с Mutex
02:10 - Подход с Atomic
03:39 - Подход с шардированием
04:36 - Подход с выравниванием при шардировании
05:42 - False sharing
08:13 - Заключение
источник
👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
Секреты внутреннего устройства аллокатора Go
00:00 - Введение
01:49 - Концепция аллокатора
06:09 - Линейный аллокатор
11:22 - Блочный аллокатор
16:21 - Стековый аллокатор
20:18 - Устройство malloc
25:01 - Недостатки malloc
26:55 - Устройство tcmalloc
28:28 - Устройство аллокатора Go
32:55 - Предсказуемая фрагментация памяти
40:33 - Где аллоцируются объекты в Go
51:11 - Почему аллокация на стеке работает быстрее, чем в куче
52:35 - Расширение и уменьшение стека в Go
58:12 - Зачем это все нужно знать (практические примеры)
01:03:37 - Пулы объектов (sync.Pool)
01:06:57 - Арены (memory arenas)
01:14:30 - Аллокатор ОС
01:18:28 - Курс по глубокому Go
источник
👉 @golang_lib
00:00 - Введение
01:49 - Концепция аллокатора
06:09 - Линейный аллокатор
11:22 - Блочный аллокатор
16:21 - Стековый аллокатор
20:18 - Устройство malloc
25:01 - Недостатки malloc
26:55 - Устройство tcmalloc
28:28 - Устройство аллокатора Go
32:55 - Предсказуемая фрагментация памяти
40:33 - Где аллоцируются объекты в Go
51:11 - Почему аллокация на стеке работает быстрее, чем в куче
52:35 - Расширение и уменьшение стека в Go
58:12 - Зачем это все нужно знать (практические примеры)
01:03:37 - Пулы объектов (sync.Pool)
01:06:57 - Арены (memory arenas)
01:14:30 - Аллокатор ОС
01:18:28 - Курс по глубокому Go
источник
👉 @golang_lib
Анализ бинарных файлов Go с помощью gftrace
gftrace — это инструмент командной строки для Windows, который запускает Go-бинарный файл и записывает все вызовы API Windows, выполняемые в процессе его работы. После решения задания Napper из HackTheBox, автор решил применить этот инструмент к бинарному файлу из этой задачи.
В статье также приведён краткий обзор работы gftrace, включая разбор исходного кода с GitHub. Несмотря на некоторую "сырость" инструмента, он представляет собой полезное дополнение к инструментарию разработчика и заслуживает внимания в дальнейшем.
https://0xdf.gitlab.io/2024/05/07/gftrace.html
👉 @golang_lib
gftrace — это инструмент командной строки для Windows, который запускает Go-бинарный файл и записывает все вызовы API Windows, выполняемые в процессе его работы. После решения задания Napper из HackTheBox, автор решил применить этот инструмент к бинарному файлу из этой задачи.
В статье также приведён краткий обзор работы gftrace, включая разбор исходного кода с GitHub. Несмотря на некоторую "сырость" инструмента, он представляет собой полезное дополнение к инструментарию разработчика и заслуживает внимания в дальнейшем.
https://0xdf.gitlab.io/2024/05/07/gftrace.html
👉 @golang_lib
Generic Concurrency в Go
В этой статье я хочу поделиться мыслями и идеями, которые у меня накопились за время работы с дженериками в Go, и в частности о том, как шаблоны многозадачности могут стать более удобными и переиспользуемыми с помощью дженериков.
https://sergey.kamardin.org/ru/articles/generic-concurrency-in-go/
👉 @golang_lib
В этой статье я хочу поделиться мыслями и идеями, которые у меня накопились за время работы с дженериками в Go, и в частности о том, как шаблоны многозадачности могут стать более удобными и переиспользуемыми с помощью дженериков.
https://sergey.kamardin.org/ru/articles/generic-concurrency-in-go/
👉 @golang_lib
🌟 Хотите создать чат-бота? Выберите Golang! 🌟
11 декабря в 20:00 МСК приглашаем вас на открытый урок, где вы узнаете, как с помощью Go разработать собственного бота для мемов — от идеи до готового функционала!
Этот урок подойдёт как новичкам, так и опытным разработчикам, которые хотят освоить Go и добавить немного юмора в свои проекты. К концу занятия у вас будет работающий бот и практические знания!
🚀 Регистрируйтесь на вебинар прямо сейчас! Все участники получат скидку на курс «Go (Golang) Developer Basic»: https://vk.cc/cFPJvy
Не упустите возможность прокачать свои навыки и развлечься! 💻✨
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
11 декабря в 20:00 МСК приглашаем вас на открытый урок, где вы узнаете, как с помощью Go разработать собственного бота для мемов — от идеи до готового функционала!
Этот урок подойдёт как новичкам, так и опытным разработчикам, которые хотят освоить Go и добавить немного юмора в свои проекты. К концу занятия у вас будет работающий бот и практические знания!
🚀 Регистрируйтесь на вебинар прямо сейчас! Все участники получат скидку на курс «Go (Golang) Developer Basic»: https://vk.cc/cFPJvy
Не упустите возможность прокачать свои навыки и развлечься! 💻✨
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Популярные ошибки в Golang и как их избежать
Go известен своей лаконичностью и простотой синтаксиса, но даже в нём есть множество подводных камней, с которыми можно столкнуться в работе. В этой статье я сделаю разбор распространённых ошибок с примерами и расскажу, как их можно избежать.
https://habr.com/ru/companies/avito/articles/813697/
👉 @golang_lib
Go известен своей лаконичностью и простотой синтаксиса, но даже в нём есть множество подводных камней, с которыми можно столкнуться в работе. В этой статье я сделаю разбор распространённых ошибок с примерами и расскажу, как их можно избежать.
https://habr.com/ru/companies/avito/articles/813697/
👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
Как стать сеньором / Василий Романов (VK, Облако Mail ru)
Какой уровень Golang нужен сеньорам? Разберем, чем сеньор отличается от других грейдов и какие есть сеньор-антипаттерны. Поймем, что сеньоры бывают разные. И придем к выводу, что знать алгоритмы GC нашей гошечки нужно не каждому сеньору.
источник
👉 @golang_lib
Какой уровень Golang нужен сеньорам? Разберем, чем сеньор отличается от других грейдов и какие есть сеньор-антипаттерны. Поймем, что сеньоры бывают разные. И придем к выводу, что знать алгоритмы GC нашей гошечки нужно не каждому сеньору.
источник
👉 @golang_lib
🌟 Хочешь писать код, который решает конкурентные задачи без багов? Начни с каналов в Go. Разберём устройство и применение на практике.
🗓 Открытый урок уже 25 декабря! Не упусти шанс наконец-то сделать свой код лучше.
🔍 Освоишь лучшие практики и научишься избегать ошибок, которые разрушают продуктивность приложений.
👨💻 Вебинар для Golang-разработчиков — и новичков, и практиков. Регистрируйся, если не хочешь стоять на месте: https://vk.cc/cGc664
🗓 Открытый урок уже 25 декабря! Не упусти шанс наконец-то сделать свой код лучше.
🔍 Освоишь лучшие практики и научишься избегать ошибок, которые разрушают продуктивность приложений.
👨💻 Вебинар для Golang-разработчиков — и новичков, и практиков. Регистрируйся, если не хочешь стоять на месте: https://vk.cc/cGc664
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Production Ready Go Concurrency
Параллелизм - это одна из тех вещей, в которых легко ошибиться, даже при наличии функций параллелизма в Go. Давайте рассмотрим, что следует учитывать при написании продакшена с использованием параллелизма.
Руководство разделено на три части, каждая из которых имеет свою цель. Сначала мы поговорим о "правилах большого пальца", которые обычно являются правильными. Вторая часть посвящена тому, что нужно использовать для написания параллельного кода. И наконец, мы расскажем о том, как написать собственные примитивы параллелизма.
Прежде чем мы начнем, я должен отметить, что у многих из этих рекомендаций есть условия, при которых они не являются лучшим выбором. Основными ситуациями будут производительность и прототипирование.
https://www.storj.io/blog/production-concurrency
👉 @golang_lib
Параллелизм - это одна из тех вещей, в которых легко ошибиться, даже при наличии функций параллелизма в Go. Давайте рассмотрим, что следует учитывать при написании продакшена с использованием параллелизма.
Руководство разделено на три части, каждая из которых имеет свою цель. Сначала мы поговорим о "правилах большого пальца", которые обычно являются правильными. Вторая часть посвящена тому, что нужно использовать для написания параллельного кода. И наконец, мы расскажем о том, как написать собственные примитивы параллелизма.
Прежде чем мы начнем, я должен отметить, что у многих из этих рекомендаций есть условия, при которых они не являются лучшим выбором. Основными ситуациями будут производительность и прототипирование.
https://www.storj.io/blog/production-concurrency
👉 @golang_lib
Как контейнеризировать приложение Golang с помощью Docker для разработки и производства
Вы хотите написать приложение на языке Golang, контейнеризированное с помощью Docker? Цель этой статьи - помочь вам быстро получить приложение Golang в контейнере для разработки (с горячей загрузкой) и для использования в продакшне.
https://bartlomiejmika.com/post/2022/how-to-containerize-a-golang-app-with-docker-for-development-and-production/
👉 @golang_lib
Вы хотите написать приложение на языке Golang, контейнеризированное с помощью Docker? Цель этой статьи - помочь вам быстро получить приложение Golang в контейнере для разработки (с горячей загрузкой) и для использования в продакшне.
https://bartlomiejmika.com/post/2022/how-to-containerize-a-golang-app-with-docker-for-development-and-production/
👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
Выжимаем из Go максимум производительности / Никита Галушко (VK, ВКонтакте)
Этот доклад о том, как писать код на Go так, чтобы выжимать максимум производительности.
Например, из него вы узнаете:
почему не все for-range-циклы равны между собой;
что такое small-size-объекты;
источник
👉 @golang_lib
Этот доклад о том, как писать код на Go так, чтобы выжимать максимум производительности.
Например, из него вы узнаете:
почему не все for-range-циклы равны между собой;
что такое small-size-объекты;
источник
👉 @golang_lib
Вебинар: база данных на Go!
Присоединяйтесь к открытому вебинару «Взаимодействие с базой данных и миграции на Go».
Что вы узнаете:
- как создавать таблицы и структурировать базы данных;
- как разрабатывать базу для веб-приложений на Go;
- как работать с ОРМ и SQL-запросами.
Почему это важно: Golang — язык будущего. После вебинара вы сможете создавать и мигрировать базы данных, что станет вашим преимуществом в IT.
Действуйте!
Регистрируйтесь на вебинар и получите скидку на участие в большом курсе «Go (Golang) Developer Basic»: https://vk.cc/cHjjaB
Присоединяйтесь к открытому вебинару «Взаимодействие с базой данных и миграции на Go».
Что вы узнаете:
- как создавать таблицы и структурировать базы данных;
- как разрабатывать базу для веб-приложений на Go;
- как работать с ОРМ и SQL-запросами.
Почему это важно: Golang — язык будущего. После вебинара вы сможете создавать и мигрировать базы данных, что станет вашим преимуществом в IT.
Действуйте!
Регистрируйтесь на вебинар и получите скидку на участие в большом курсе «Go (Golang) Developer Basic»: https://vk.cc/cHjjaB
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
Расскажу о необходимости DDD, о его плюсах и минусах, зачем стоит использовать данный подход в разработке и с какими трудностями мы столкнулись. Как проектировать внутреннюю архитектуру сервиса так, чтобы было удобно и эффективно работать с ним в будущем.
https://www.youtube.com/watch?v=JcsKI7QyDrs
👉 @golang_lib
Расскажу о необходимости DDD, о его плюсах и минусах, зачем стоит использовать данный подход в разработке и с какими трудностями мы столкнулись. Как проектировать внутреннюю архитектуру сервиса так, чтобы было удобно и эффективно работать с ним в будущем.
https://www.youtube.com/watch?v=JcsKI7QyDrs
👉 @golang_lib
YouTube
Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
Приглашаем на Golang Conf X 2025, которая пройдет 4 июня 2025 в Москве.
Программа, подробности и билеты по ссылке https://bit.ly/4aJwiZ2
---------
Профессиональная конференция для Go-разработчиков
Презентация и тезисы:
https://golangconf.ru/2023/abstracts/11376…
Программа, подробности и билеты по ссылке https://bit.ly/4aJwiZ2
---------
Профессиональная конференция для Go-разработчиков
Презентация и тезисы:
https://golangconf.ru/2023/abstracts/11376…
📊 Визуализация покрытия кода в Go с помощью treemap
Если вы пишете на Go и хотите улучшить качество вашего кода, обратите внимание на инструмент go-cover-treemap. Это CLI-утилита, которая преобразует отчёты покрытия кода (coverage) в наглядные treemap-диаграммы. Она помогает визуально оценить, какие части вашего проекта хорошо тестируются, а где ещё есть пробелы.
Особенности:
- Генерация HTML-страниц с treemap для лучшей читаемости.
- Поддержка всех версий Go с встроенными инструментами покрытия.
- Простой в использовании и лёгкий в настройке.
https://github.com/nikolaydubina/go-cover-treemap
👉 @golang_lib
Если вы пишете на Go и хотите улучшить качество вашего кода, обратите внимание на инструмент go-cover-treemap. Это CLI-утилита, которая преобразует отчёты покрытия кода (coverage) в наглядные treemap-диаграммы. Она помогает визуально оценить, какие части вашего проекта хорошо тестируются, а где ещё есть пробелы.
Особенности:
- Генерация HTML-страниц с treemap для лучшей читаемости.
- Поддержка всех версий Go с встроенными инструментами покрытия.
- Простой в использовании и лёгкий в настройке.
$ go install github.com/nikolaydubina/go-cover-treemap@latest
$ go test -coverprofile cover.out ./...
$ go-cover-treemap -coverprofile cover.out > out.svg
https://github.com/nikolaydubina/go-cover-treemap
👉 @golang_lib
👀Как обнаруживать и правильно разрабатывать Cloud Native приложения, верно использовать функционал health-check-ов, а также внедрять и поддерживать их в Kubernetes?
Узнайте на бесплатном вебинаре онлайн-курса «Golang Developer. Professional» — «Кошелек или жизнь? Фича или баг? Хелсчеки в k8s»: регистрация
✅В результате вебинара участники узнают:
— Разницу между readiness и liveness probes
— Как настроить проверки на практике;
— Условия успешной работы health-check-ов
— Как настраивать probes для контейнеров в k8s.
🎯Вебинар будет полезен:
— Разработчикам на Go на уровнях Junior и Middle
— Специалистам, желающим улучшить свои навыки в Kubernetes
— Всем, кто стремится создавать надежные Cloud Native приложения.
🤝После вебинара продолжите обучение на курсе со скидкой и даже в рассрочку!
Узнайте на бесплатном вебинаре онлайн-курса «Golang Developer. Professional» — «Кошелек или жизнь? Фича или баг? Хелсчеки в k8s»: регистрация
✅В результате вебинара участники узнают:
— Разницу между readiness и liveness probes
— Как настроить проверки на практике;
— Условия успешной работы health-check-ов
— Как настраивать probes для контейнеров в k8s.
🎯Вебинар будет полезен:
— Разработчикам на Go на уровнях Junior и Middle
— Специалистам, желающим улучшить свои навыки в Kubernetes
— Всем, кто стремится создавать надежные Cloud Native приложения.
🤝После вебинара продолжите обучение на курсе со скидкой и даже в рассрочку!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Не возвращайте err в Go
Статья объясняет особенности работы с ошибками в Go, предоставляя глубокий взгляд на их обработку и использование. Автор рассматривает эволюцию подходов к работе с ошибками в Go, начиная с базовых принципов и заканчивая более сложными реализациями, такими как обертки, форматирование и трассировка.
Ключевые моменты статьи:
- Объяснение базового подхода к обработке ошибок в Go через возвращаемые значения.
- Использование пакета
- Примеры использования
- Рассмотрение новых возможностей работы с ошибками в Go 1.13+, включая
- Подходы к логированию и диагностике, а также нюансы проектирования API.
https://akavel.com/go-errors
👉 @golang_lib
Статья объясняет особенности работы с ошибками в Go, предоставляя глубокий взгляд на их обработку и использование. Автор рассматривает эволюцию подходов к работе с ошибками в Go, начиная с базовых принципов и заканчивая более сложными реализациями, такими как обертки, форматирование и трассировка.
Ключевые моменты статьи:
- Объяснение базового подхода к обработке ошибок в Go через возвращаемые значения.
- Использование пакета
errors
для обертывания ошибок и добавления контекста. - Примеры использования
fmt.Errorf
с поддержкой обертывания ошибок. - Рассмотрение новых возможностей работы с ошибками в Go 1.13+, включая
errors.Is
и errors.As
. - Подходы к логированию и диагностике, а также нюансы проектирования API.
https://akavel.com/go-errors
👉 @golang_lib
Увеличение производительности Go-приложений с использованием оптимизации, основанной на профилировании
Благодаря профилированию Go-приложений во время выполнения, компилятор Go может принимать более эффективные решения об оптимизации в последующих сборках, что приводит к значительному улучшению производительности CPU. В рамках этой технической сессии разработчики узнают, как работает оптимизация, основанная на профилировании, и как они могут использовать её для повышения (и измерения) производительности своих приложений как в Google Cloud, так и за его пределами.
https://www.youtube.com/watch?v=FwzE5Sdhhdw
👉 @golang_lib
Благодаря профилированию Go-приложений во время выполнения, компилятор Go может принимать более эффективные решения об оптимизации в последующих сборках, что приводит к значительному улучшению производительности CPU. В рамках этой технической сессии разработчики узнают, как работает оптимизация, основанная на профилировании, и как они могут использовать её для повышения (и измерения) производительности своих приложений как в Google Cloud, так и за его пределами.
https://www.youtube.com/watch?v=FwzE5Sdhhdw
👉 @golang_lib
👩💻 Go в действии: подборка докладов для разработчиков на Go. Узнайте о создании инструментов для фаззинга, развертывании Kubernetes-кластеров с использованием Go и многом другом.
Подборка презентаций с руководствами по разработке кастомных решений, которые уже были успешно внедрены инженерами и разработчиками из YADRO, Avito Tech, Ozon Fintech и других технологических компаний в своих продуктах.
Если вашей команде требуется инструмент для фаззинга или обработки ошибок на Go, вы можете создать их, опираясь на примеры и кейсы, представленные специалистами в их выступлениях и материалах.
🔹 Внедряем фаззинг: какой инструмент вам подойдет / Иван Золотников, инженер в YADRO
🔹 Создаем замену buf: сеанс реверс-инжиниринга / Эдгар Сипки, разработчик в Ozon Fintech, и Василий Близнецов, разработчик в Positive Technologies
🔹 Доступно о паттернах, умных обработчиках и красивой синхронизации в Go / Олег Козырев, старший инженер в AvitoTech
🔹 Учим сервис сообщать понятно об ошибке пользователям, программистам и машинам / Александр Лырчиков, разработчик в команде систем хранения данных в YADRO
🔹 Пишем свой mini-k8s на Go с helm-шаблонизатором / Станислав Иванкевич, старший программист в команде разработки DataMasters в VK Tech
🔹 Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool / Александр Иванов, тимлид в команде телекома в в YADRO
👉 @golang_lib
Подборка презентаций с руководствами по разработке кастомных решений, которые уже были успешно внедрены инженерами и разработчиками из YADRO, Avito Tech, Ozon Fintech и других технологических компаний в своих продуктах.
Если вашей команде требуется инструмент для фаззинга или обработки ошибок на Go, вы можете создать их, опираясь на примеры и кейсы, представленные специалистами в их выступлениях и материалах.
🔹 Внедряем фаззинг: какой инструмент вам подойдет / Иван Золотников, инженер в YADRO
🔹 Создаем замену buf: сеанс реверс-инжиниринга / Эдгар Сипки, разработчик в Ozon Fintech, и Василий Близнецов, разработчик в Positive Technologies
🔹 Доступно о паттернах, умных обработчиках и красивой синхронизации в Go / Олег Козырев, старший инженер в AvitoTech
🔹 Учим сервис сообщать понятно об ошибке пользователям, программистам и машинам / Александр Лырчиков, разработчик в команде систем хранения данных в YADRO
🔹 Пишем свой mini-k8s на Go с helm-шаблонизатором / Станислав Иванкевич, старший программист в команде разработки DataMasters в VK Tech
🔹 Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool / Александр Иванов, тимлид в команде телекома в в YADRO
👉 @golang_lib
⭐️ Symfony и Kafka — союз, о котором мечтают разработчики!
👉 Узнайте, как интеграция Symfony Messenger с Kafka делает обработку асинхронных задач надёжной и масштабируемой. Мы разберём примеры, лучшие практики и подводные камни.
⏰ Хотите уверенно работать с этой мощной связкой и прокачать свои проекты? 28 января в 20:00 мск вас ждёт открытый урок, где мы расскажем, как настроить и использовать Kafka как транспорт.
Спикер Михаил Каморин — Dev Tech Lead в Skyeng, участник и организатор конференций по PHP, член ПК Podlodka PHP Crew.
👉 Регистрируйтесь на вебинар сейчас и получите скидку на обучение на курсе «Symfony Framework»: https://vk.cc/cHIjHZ
👉 Узнайте, как интеграция Symfony Messenger с Kafka делает обработку асинхронных задач надёжной и масштабируемой. Мы разберём примеры, лучшие практики и подводные камни.
⏰ Хотите уверенно работать с этой мощной связкой и прокачать свои проекты? 28 января в 20:00 мск вас ждёт открытый урок, где мы расскажем, как настроить и использовать Kafka как транспорт.
Спикер Михаил Каморин — Dev Tech Lead в Skyeng, участник и организатор конференций по PHP, член ПК Podlodka PHP Crew.
👉 Регистрируйтесь на вебинар сейчас и получите скидку на обучение на курсе «Symfony Framework»: https://vk.cc/cHIjHZ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru