Библиотека Go (Golang) разработчика
2.65K subscribers
302 photos
99 videos
29 files
369 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
В хабе на Хабр «Разработка публичных облаков» — свежие статьи
от инженеров 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
👍2
🚀 1 ноября в Москве пройдет Я.Субботник по Go — митап для разработчиков и энтузиастов Go

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

В программе:

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

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

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

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

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

По мере того как возможности LLM (Large Language Models — большие языковые модели) и связанных инструментов, таких как модели для эмбеддингов, значительно выросли за последний год, всё больше разработчиков задумываются о внедрении LLM в свои приложения.

Поскольку LLM обычно требуют специализированного оборудования и значительных вычислительных ресурсов, их чаще всего упаковывают как сетевые сервисы, предоставляющие API для доступа. Так работают API ведущих LLM, таких как OpenAI или Google Gemini; даже инструменты для локального запуска собственных моделей, например Ollama, оборачивают LLM в REST-API для локального использования. Более того, разработчики, использующие LLM в приложениях, часто нуждаются в дополнительных инструментах вроде векторных баз данных, которые также обычно разворачиваются как сетевые сервисы.

Другими словами, приложения на базе LLM очень похожи на современные cloud-native приложения: они требуют отличной поддержки REST и RPC протоколов, высокой производительности и хорошей работы с конкурентностью. А это как раз те области, в которых Go силён, что делает его великолепным языком для создания приложений с использованием LLM.

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

https://go.dev/blog/llmpowered

👉 @golang_lib
👍1
Заметки о запуске Go в браузере с WebAssembly

Недавно мне пришлось компилировать Go в WebAssembly, чтобы запускать его в браузере в паре небольших проектов, и вообще я уделил некоторое время изучению WebAssembly. Мне кажется, что WebAssembly — очень захватывающая технология как для веба, так и для других применений (например, через WASI). Особенно классно, что мы можем брать существующие проекты и компоненты, написанные на Go, и запускать их прямо в браузере.

В этом посте я подытожу несколько полезных шаблонов запуска Go в браузере через WebAssembly. Все примеры представлены небольшими, самодостаточными программами, которые можно найти в этом репозитории на GitHub.

https://eli.thegreenplace.net/2024/notes-on-running-go-in-the-browser-with-webassembly/

👉 @golang_lib
👍1
System Design интервью с ТимЛидом из американского FinTech уже завтра

29 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью по System Design.

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

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

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

Реклама.
О рекламодателе