Библиотека Go (Golang) разработчика
2.65K subscribers
306 photos
99 videos
29 files
370 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
Go sync.Mutex: Normal and Starvation Mode
Go sync.WaitGroup and The Alignment Problem
Go sync.Pool and the Mechanics Behind It (We’re here)
Go sync.Cond, the Most Overlooked Sync Mechanism
Go sync.Map: The Right Tool for the Right Job
Go Sync.Once is Simple… Does It Really?
Go Singleflight Melts in Your Code, Not in Your DB

https://victoriametrics.com/blog/go-sync-mutex/index.html

👉 @golang_lib
👍3
🚀 Отличная статья для тех, кто работает с финансовыми системами и хочет разобраться в стандарте ISO 8583 с помощью Go.

Автор пошагово показывает:

- как устроены ISO 8583 сообщения;
- какие поля и структуры применяются;
- как с ними работать в реальных платежных системах;
- примеры реализации парсинга и сборки сообщений на Golang.

Полезно для бэкенд-разработчиков, которые занимаются интеграциями с банками и процессингами.

https://alovak.com/2024/08/15/mastering-iso-8583-messages-with-golang/

👉 @golang_lib
👍2
В хабе на Хабр «Разработка публичных облаков» — свежие статьи
от инженеров MWS Cloud Platform ⬜️.

Ценности решают. Как пять принципов помогли вырасти с 150 до 520 человек и запустить IaaS за год.

Binapi и VPP. Программируем SR Policy на Go, разбираем грабли и показываем рабочий прототип для traffic engineering.

Control plane под замком. Зачем прятать мастера Kubernetes и какие решения мы протестировали в Managed Kubernetes.

SPDK для VM. Почему стандартного QEMU мало и как мы ускоряли диски в публичном облаке.

eBPF & Security. Новые возможности для Cilium и Falco и новые риски: атаки на maps, io_uring и rootkits.

🔗 Подпишись на облачный хаб MWS — там регулярно рассказываем, как строим новое облако с нуля.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Tetrigo

Играйте в Тетрис на своём терминале.

Реализация Тетриса на Golang, соответствующая официальному руководству по дизайну Тетриса 2009 года.

https://github.com/Broderick-Westrope/tetrigo

👉 @golang_lib
👍6
Советы по созданию приложений Bubble Tea

По словам его создателей, Bubble Tea — это «мощный небольшой TUI-фреймворк» для Go. Он, может быть, и небольшой, но мне пришлось изрядно попотеть, прежде чем я смог по-настоящему освоить его мощь. Я провёл много ночей, борясь с неисправными раскладками и неотзывчивыми клавишами, прежде чем на собственном горьком опыте понял, где я ошибался. Результатом моих усилий стал PUG, полноэкранный терминальный интерфейс для управления Terraform:

https://leg100.github.io/en/posts/building-bubbletea-programs/

👉 @golang_lib
🗑 Сборщик мусора в Go — тема, которая кажется скучной, пока ваше приложение не начинает “есть” память, тормозить и загадочно падать в проде.

📗 На открытом уроке мы разберём, как устроен GC: от триколорной маркировки до последних улучшений в новых версиях языка. Мы покажем, как измерить и проанализировать работу сборщика с помощью GODEBUG и pprof, а также разберём практические приёмы снижения нагрузки — от оптимизации указателей до пулов объектов.

❗️ Поймёте, как Golang взаимодействует с системой и где скрываются узкие места, влияющие на производительность. После урока сможете писать код, который не “утекает”.

Регистрируйтесь 📆 21 октября в 19:00 МСК и разберитесь, как приручить сборщик мусора, а не бороться с ним: https://vk.cc/cQnOrz

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1👍1
Go Beyond: Создание высокопроизводительных и надёжных приложений на Golang

Представьте себе: вы находитесь в атмосфере военной переговорной. Напряжение витает в воздухе, пока ваша команда разработки и вы сами лихорадочно пытаетесь разобраться со внезапным всплеском OOM-проблем, поразивших контейнеры вашего приложения. Кажется, что утечек памяти нет, но дальнейшее расследование раскрывает шокирующую правду: сборщик мусора (GC) не запускался тогда, когда должен был! Этот критически важный процесс очистки не освободил память до того, как её использование превысило жёсткий лимит контейнера, вызвав те самые ненавистные OOM-события.

https://blog.zomato.com/go-beyond-building-performant-and-reliable-golang-applications

👉 @golang_lib
👍1
Media is too big
VIEW IN TELEGRAM
Ты не все знаешь о массивах и слайсах в Go

Таймкоды:
00:00 - Введение
00:47 - Устройство массивов в Go
01:40 - Работа с массивами в Go
10:00 - Перемещение массива в стеке
11:29 - Итерация по массивам в Go
15:11 - Где аллоцируются массивы в Go
17:22 - Педедача массива в функцию
18:16 - Слайсы в Go
21:34 - Реаллокация слайса в Go
24:45 - Резервирование памяти под слайс
25:44 - Создание слайса без инициализации
27:38 - Модификация строк в Go
28:35 - Приведение слайсов в строки и обратно без копирования
30:13 - Передача слайса в функцию
31:12 - Итерация по слайсам в Go
33:55 - Оптимизация итерации по слайсам в Go
35:42 - Получение слайсов в Go
42:40 - Получение слайса из массива в Go
43:15 - Конвертация слайса в массив в Go
44:15 - Конвертация слайса в указатель на массив в Go
45:02 - Указатель на нулевой массив в Go
46:18 - Удаление из конца слайса в Go
46:51 - Удаление из начала слайса в Go
49:02 - Реализация стека и очереди в Go
50:00 - Как увеличить размер слайса в Go
50:48 - Как уменьшить емкость слайса в Go
54:05 - Где аллоцируются слайсы в Go
59:12 - Как очистить слайс в Go
01:01:51 - В чем разница пустых и нулевых слайсов в Go
01:05:17 - Как сравнивать слайсы в Go
01:07:53 - Как скопировать данные слайса в Go
01:09:47 - Почему функция appeng возвращает слайсв в Go
01:12:39 - Потенциальные проблемы с функцией append в Go
01:14:10 - Реализация функции append в Go
01:15:32 - Утечки памяти при работе со слайсами в Go
01:21:59 - Курс по глубокому Go

источник

👉 @golang_lib
3👍2🔥1
😨 Даже опытные Go-разработчики часто обходят стороной sync.Cond — это слишком «темная лошадка», не так ли? Но именно она может стать вашим самым точным инструментом для управления конкурентностью, если знать, как использовать её правильно.

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

❗️ После вебинара вы перестанете «бояться» sync.Cond, научитесь применять его для оптимизации кода и получите новые инструменты для решения задач конкурентности.

Открытый вебинар проходет 📆 20 октября в 20:00 МСК.
👉 Регистрируйтесь и разберитесь, что скрывает Golang: https://vk.cc/cQvBpK

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
Статическая и динамическая компоновка бинарных файлов Go

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

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

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

https://packagemain.tech/p/golang-statically-and-dynamically-linked-binaries

👉 @golang_lib
👍3
Одна строка — тысячи горутин: как мы поймали утечку памяти в сервисе на Go

В этом техническом разборе рассмотрим, как инженеры Harness обнаружили и исправили критическую утечку памяти в Go: переназначение переменной контекста в циклах воркеров порождало невидимые цепочки, мешавшие сборщику мусора освобождать память в тысячах горутин, из-за чего их сервис-делегат CI/CD в итоге потреблял гигабайты памяти.

https://www.harness.io/blog/the-silent-leak

👉 @golang_lib
🤷‍♂1👍1
🔍Тестовое собеседование с Go TeamLead из американского FinTech в этот четверг

23 октября(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.

Как это будет:
📂 Дмитрий Дорофеев, Go TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир
→ @shortcut_go_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Qrcp

Передавайте файлы по Wi-Fi с компьютера на мобильное устройство, сканируя QR-код, не отходя от терминала.

https://github.com/claudiodangelis/qrcp

👉 @golang_lib
👍4
Три способа оптимизировать работу с памятью на Go с помощью memory pools

Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы.

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

https://habr.com/ru/companies/yadro/articles/842314/

👉 @golang_lib
👍21
🚀 1 ноября в Москве пройдет Я.Субботник по Go — митап для разработчиков и энтузиастов Go

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

В программе:

Доклады спикеров. Старший разработчик бэкенда Яндекс Маркета Александр Никитин расскажет про трассировку логики вычислений с помощью Debug Tree, а разработчик бэкенда Плюса и Финтеха Игорь Панасюк разберет новый garbage collector в Go 1.25.
Полный список спикеров и расписание докладов доступны на сайте.

Круглые столы с экспертами. Обсудим использование AI-инструментов, структуру проектов, highload, нетипичное применение Golang, инструменты разработки и будущее языка.

Живое общение и нетворкинг. Общаемся с коллегами в перерывах между докладами, обсуждаем, делимся опытом и заводим полезные знакомства.

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

Ознакомиться с программой и зарегистрироваться можно тут.
👍1🔥1