Go Singleflight тает в вашем коде, а не в вашей базе данных
Когда к вам одновременно приходит несколько запросов за одними и теми же данными, по умолчанию каждый из них отправляется в базу данных отдельно. В результате один и тот же запрос выполняется несколько раз, что, откровенно говоря, просто неэффективно.
https://victoriametrics.com/blog/go-singleflight/index.html
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
👉 @golang_lib
Когда к вам одновременно приходит несколько запросов за одними и теми же данными, по умолчанию каждый из них отправляется в базу данных отдельно. В результате один и тот же запрос выполняется несколько раз, что, откровенно говоря, просто неэффективно.
https://victoriametrics.com/blog/go-singleflight/index.html
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
👉 @golang_lib
👍2
Реализация системы обработки заказов
Temporal — это фреймворк для реализации долговременных рабочих процессов (workflows) на Go. В данном практическом шестичастном руководстве рассматривается создание системы обработки заказов, используя Go, Temporal, Gin, sqlc, PostgreSQL и Docker.
1️⃣ Setting Up the Foundation
2️⃣ Advanced Temporal Workflows
3️⃣ Advanced Database Operations
4️⃣ Monitoring and Alerting
5️⃣ Distributed Tracing and Logging
6️⃣ Production Readiness and Scalability
👉 @golang_lib
Temporal — это фреймворк для реализации долговременных рабочих процессов (workflows) на Go. В данном практическом шестичастном руководстве рассматривается создание системы обработки заказов, используя Go, Temporal, Gin, sqlc, PostgreSQL и Docker.
1️⃣ Setting Up the Foundation
2️⃣ Advanced Temporal Workflows
3️⃣ Advanced Database Operations
4️⃣ Monitoring and Alerting
5️⃣ Distributed Tracing and Logging
6️⃣ Production Readiness and Scalability
👉 @golang_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Параллелизм — одно из главных преимуществ Go, но без понимания горутин и каналов код быстро превращается в хаос. Если вы хотите наконец разобраться, как работает многопоточность “по-гошному” — добро пожаловать на открытый урок OTUS.
📗На вебинаре вы узнаете, как запускать тысячи задач одновременно без перегрузки процессора, почему горутины дешевле потоков и как безопасно обмениваться данными через каналы. Разберём типичные ошибки новичков — утечки, блокировки и deadlock-и — и покажем, как их избегать.
❗️После урока вы поймёте базовую механику конкурентности в Go и сможете уверенно использовать её для создания быстрых и надёжных приложений.
📆 10 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Basic».
👉Регистрируйтесь и начните понимать Go не на уровне “синтаксиса”, а на уровне процессов: https://vk.cc/cQYS21
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📗На вебинаре вы узнаете, как запускать тысячи задач одновременно без перегрузки процессора, почему горутины дешевле потоков и как безопасно обмениваться данными через каналы. Разберём типичные ошибки новичков — утечки, блокировки и deadlock-и — и покажем, как их избегать.
❗️После урока вы поймёте базовую механику конкурентности в Go и сможете уверенно использовать её для создания быстрых и надёжных приложений.
📆 10 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Basic».
👉Регистрируйтесь и начните понимать Go не на уровне “синтаксиса”, а на уровне процессов: https://vk.cc/cQYS21
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤1
⏱️ Работа со временем в Go
Обработка времени — одна из самых трудных задач в программировании, но в Go она реализована максимально удобно.
Matt Boyle подробно объясняет ключевые принципы работы с временем в Go и показывает, как писать код, который легко тестировать при использовании временных функций.
https://www.bytesizego.com/blog/golang-time
👉 @golang_lib
Обработка времени — одна из самых трудных задач в программировании, но в Go она реализована максимально удобно.
Matt Boyle подробно объясняет ключевые принципы работы с временем в Go и показывает, как писать код, который легко тестировать при использовании временных функций.
https://www.bytesizego.com/blog/golang-time
👉 @golang_lib
👍1
Counterfeiter — инструмент для генерации самостоятельных, типобезопасных тестовых заглушек в Go
При модульном тестировании часто нужны поддельные реализации зависимостей. В Go такие заглушки трудно создавать автоматически во время выполнения, а ручная реализация отнимает время. Counterfeiter упрощает задачу, автоматически генерируя тестовые фейки для заданного интерфейса.
https://github.com/maxbrunsfeld/counterfeiter
👉 @golang_lib
При модульном тестировании часто нужны поддельные реализации зависимостей. В Go такие заглушки трудно создавать автоматически во время выполнения, а ручная реализация отнимает время. Counterfeiter упрощает задачу, автоматически генерируя тестовые фейки для заданного интерфейса.
https://github.com/maxbrunsfeld/counterfeiter
👉 @golang_lib
GitHub
GitHub - maxbrunsfeld/counterfeiter: A tool for generating self-contained, type-safe test doubles in go
A tool for generating self-contained, type-safe test doubles in go - maxbrunsfeld/counterfeiter
🔥2
🌐 HTTP уже не тянет? В микросервисной архитектуре запросы множатся, скорость падает, а код превращается в клубок зависимостей. Настало время познакомиться с инструментом, который решает эти проблемы изящно — gRPC.
📗 На открытом уроке вы разберёте, как работает этот фреймворк, почему он вытесняет REST и как описывать API с помощью Protobuf. Вы узнаете, как обеспечить обратную совместимость между сервисами, повысить производительность и упростить взаимодействие микросервисов.
❗️После вебинара вы сможете строить быстрые и надёжные коммуникации между сервисами на Go — с чистой архитектурой и минимумом боли.
➡️ 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Professional». Регистрируйтесь и узнайте, почему gRPC становится стандартом нового поколения для Go-разработчиков: https://vk.cc/cR3zC5
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📗 На открытом уроке вы разберёте, как работает этот фреймворк, почему он вытесняет REST и как описывать API с помощью Protobuf. Вы узнаете, как обеспечить обратную совместимость между сервисами, повысить производительность и упростить взаимодействие микросервисов.
❗️После вебинара вы сможете строить быстрые и надёжные коммуникации между сервисами на Go — с чистой архитектурой и минимумом боли.
➡️ 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Professional». Регистрируйтесь и узнайте, почему gRPC становится стандартом нового поколения для Go-разработчиков: https://vk.cc/cR3zC5
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤1
Увеличение производительности 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
👍3
13 ноября(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
📉👩💻 Гайд по garbage collector в Go
Страница, которую стоит держать под рукой каждому Go-разработчику. Здесь подробно разобран принцип работы сборщика мусора в Go, а также приведены наглядные интерактивные схемы для лучшего понимания внутренних процессов.
https://tip.golang.org/doc/gc-guide
👉 @golang_lib
Страница, которую стоит держать под рукой каждому Go-разработчику. Здесь подробно разобран принцип работы сборщика мусора в Go, а также приведены наглядные интерактивные схемы для лучшего понимания внутренних процессов.
https://tip.golang.org/doc/gc-guide
👉 @golang_lib
👍1
🖥 Работа со строками и рунами в Go — откройте внутреннюю механику языка
Как Go хранит текст? Почему одна буква может занимать четыре байта, а строки иногда «ломаются» при итерации? Эти мелочи отличают новичка от разработчика, который действительно понимает язык.
🗓 17 ноября в 20:00 МСК на открытом уроке разберём, как устроены строки и руны в Go, что происходит «под капотом» при работе с кодировками и как писать корректный, быстрый код для обработки текста. Вместе с преподавателем напишем живые примеры, разберём частые ошибки и объясним, как их избежать.
➡️ Урок проходит в преддверие старта курса «Golang Developer. Basic». Все участники вебинара получат скидку на обучение: https://vk.cc/cResCu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как Go хранит текст? Почему одна буква может занимать четыре байта, а строки иногда «ломаются» при итерации? Эти мелочи отличают новичка от разработчика, который действительно понимает язык.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Препроцессоры на Go: нарушение границ или сила -toolexec
Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали препроцессинг в Go. Да, несмотря на то, что этот язык официально не поддерживает препроцессоры — мы всё равно сделали. А сейчас делимся результатами этой работы с вами.
Эта статья по мотивам моего доклада на Golang Conf X 2025 о болях шаблонного кода и вариантах их решения с помощью препроцессинга на базе стандартного тулчейна Go. В тексте не будет сравнения с препроцессорами в других языках и морально-этической оценки решения.
https://habr.com/ru/companies/oleg-bunin/articles/958946/
👉 @golang_lib
Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали препроцессинг в Go. Да, несмотря на то, что этот язык официально не поддерживает препроцессоры — мы всё равно сделали. А сейчас делимся результатами этой работы с вами.
Эта статья по мотивам моего доклада на Golang Conf X 2025 о болях шаблонного кода и вариантах их решения с помощью препроцессинга на базе стандартного тулчейна Go. В тексте не будет сравнения с препроцессорами в других языках и морально-этической оценки решения.
https://habr.com/ru/companies/oleg-bunin/articles/958946/
👉 @golang_lib
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Легко визуализируйте граф зависимостей вашего Go-проекта с внешними модулями
Преобразуйте граф зависимостей вашего Go-проекта в динамичную, интерактивную визуализацию с помощью modview. Этот мощный инструмент устраняет сложность понимания графа модулей, предоставляя чёткое и удобное представление зависимостей вашего проекта.
modview использует вывод команды
https://github.com/bayraktugrul/modview
👉 @golang_lib
Преобразуйте граф зависимостей вашего Go-проекта в динамичную, интерактивную визуализацию с помощью modview. Этот мощный инструмент устраняет сложность понимания графа модулей, предоставляя чёткое и удобное представление зависимостей вашего проекта.
modview использует вывод команды
go mod graph для создания визуализации в браузере, позволяя вам легко перемещаться по графу, искать элементы и понимать структуру зависимостей. Независимо от того, оптимизируете ли вы кодовую базу, решаете конфликты версий или изучаете экосистему вокруг вашего проекта - modview станет вашим путеводителем в сложном мире модулей Go.https://github.com/bayraktugrul/modview
👉 @golang_lib
👍2
🧑💻 Все еще пишешь типовой код вручную?
Есть способ лучше. Кодогенерация в Go — это мощный инструмент, который автоматизирует рутину и расширяет возможности языка.
На открытом уроке «Кодогенерация в Go: код, который не пришлось писать» разберем, как это работает. Поговорим о том, когда кодогенерация уместна, какие механизмы Go ее позволяют и как это применяется в реальных проектах.
❗️ Это тот случай, когда нейросети не заменят глубокого понимания механизмов языка. Практикующий разработчик с опытом в продакшене покажет, как избежать подводных камней и применять кодогенерацию в рабочих проектах. Ваш шанс научиться создавать более эффективные и лаконичные решения. Перестаньте тратить время на шаблонные задачи и начните генерировать код, который работает за вас.
🗓 Урок пройдет 19 ноября в 20:00 в преддверии старта курса «Golang Developer. Professional». Все участники вебинара получат скидку на обучение. Регистрируйтесь по ссылке, чтобы освоить один из самых перспективных навыков в Go: https://vk.cc/cRnaj1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Есть способ лучше. Кодогенерация в Go — это мощный инструмент, который автоматизирует рутину и расширяет возможности языка.
На открытом уроке «Кодогенерация в Go: код, который не пришлось писать» разберем, как это работает. Поговорим о том, когда кодогенерация уместна, какие механизмы Go ее позволяют и как это применяется в реальных проектах.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация Go: как повысить скорость и эффективность кода
Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.
Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.
https://habr.com/ru/companies/simbirsoft/articles/819015/
👉 @golang_lib
Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.
Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.
https://habr.com/ru/companies/simbirsoft/articles/819015/
👉 @golang_lib
👍2