Golang Portal
7.89K subscribers
404 photos
26 videos
7 files
439 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Golang-разработчика

Связь: @devmangx
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Освойте деплойменты в Kubernetes

Нашел практическое задание, которое поможет разобраться, как работают Deployment'ы: от их создания до масштабирования, обновления образов, проверки состояния Pod'ов и отката изменений.

Отлично подходит для практики реальных операций, стоящих за kubectl apply/create и kubectl rollout.

Попробуйте здесь

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
This media is not supported in your browser
VIEW IN TELEGRAM
На GitHub есть репозиторий free-programming-books, где собрано более 4000 бесплатных книг, 2000 курсов и других полезных ресурсов по программированию

Для удобства поиска можно использовать этот инструмент

Этот проект - яркий пример силы опенсорс сообщества, который из клона списка со StackOverflow стал одним из самых популярных на GitHub ✌️

🔹 Русскоязычная версия ресурсов

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2🔥2
Серия обучающих статей по программированию на Go для сисадминов, девопсов и безопасников

https://www.gomonk.net/

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👎1
Рассмотрите возможность использовать close() для канала или sync.WaitGroup для сигнализации о завершении горутины. Оба подхода:

Работают даже если из канала никто не читает.
Позволяют нескольким получателям отслеживать завершение

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
Начиная с Go 1.26 можно передавать выражение в new(), чтобы напрямую получить указатель на результат этого выражения.

До Go 1.26 можно было делать только new(Type), чтобы получить указатель на нулевое значение этого типа.

Новое поведение new(expr) — это синтаксический сахар для:
tmp := expr
result := &tmp


Но есть 3 нюанса:

1. Если expr уже является указателем, то new(expr) вернёт указатель на этот указатель.
new(bytes.NewBuffer(nil)) → **bytes.Buffer


2. new(expr) копирует значение expr во вновь созданную переменную.
i := 1
p := new(i)
i = 2 // → *p всё ещё равно 1


3. Нетипизированные константы сначала получают тип по умолчанию:
new(123)  → *int
new(1.2) → *float64
new('a') → *rune

new(nil) — невалидно.

👉 @GolangPortal | #tip by Phuong Le
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2🤔1
Высокопроизводительный сервис преобразования изображений, написанный на Go, предоставляющий URL-ориентированный API для обработки изображений в реальном времени. Опенсорсная альтернатива Cloudflare Images и ImageKit.

GitHub: kriti-images

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9🤔2
Хотели ли вы когда-нибудь одновременно сохранить вывод команды и при этом стримить его в stdout/err текущего процесса в Go?

Для этого идеально подходит утилита io.MultiWriter()! Очень полезная штука для CLI и системного программирования.

Подробнее о приёме тут

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥2
Redis 101: взгляд новичка

Вводный обзор того, что такое Redis, почему он так быстр (за счёт работы в памяти, однопоточного исполнения и оптимальных структур данных) и как его можно использовать не только как кэш, но и как базу данных, брокер сообщений и rate-лимитер

https://mrinalxdev.github.io/mrinalxblogs/blogs/redis.html

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84👀1
Пошаговый разбор реверс-инжиниринга Golang! Задачу решаем тремя разными подходами: (1) статический анализ в IDA, (2) динамический анализ в дебаггере и (3) патчинг бинарника с переключением на нужный путь выполнения кода

Смотрите на YouTube

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Сети для самых маленьких

Это серия статей о сетях, их настройке и администрировании. Здесь собраны основные аспекты, которые необходимо знать и понимать. В этой серии рассматривается планирование сети, настройка маршрутизаторов, работа с коммутацией и маршрутизацией, протоколы и технологии: STP, NAT, VPN, BGP, MPLS и многое другое.

https://linkmeup.gitbook.io/sdsm

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
Go-пакет synctest помогает контролировать время (в определённых пределах) при тестировании конкурентных программ.

Благодаря простому API, по сути единственной функции Wait, он позволяет убрать (почти) все вызовы time.Sleep в тестах.

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54🤔1
Утилита на Go, которая без лишних усилий преобразует ваши текущие команды Cobra в инструменты MCP, а также предоставляет CLI-команды для интеграции с Claude и VSCode

GitHub: ophis

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Классная шпаргалка по cron в Linux с примерами

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131🤯1
Архитектурный паттерн для централизованной обработки ошибок в хендлерах на Go

Статья предлагает архитектурный паттерн для централизованной обработки ошибок в HTTP-хендлерах на Go: вводится кастомный тип HTTPError и обёртка (middleware), которая перехватывает ошибки, логирует их и унифицированно формирует HTTP-ответы

Читайте здесь

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🤔1🌚1
Запуск и управление контейнерами Docker

Изучите, как запускать контейнеры самых разных типов (серверы, базы данных, CLI-инструменты и т.д.), взаимодействовать с ними и сформировать чёткое понимание того, как Docker управляет вашими приложениями «под капотом».

Здесь: Docker 101: Run and Manage Containers

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Инструмент визуализации инфраструктуры на Go, который преобразует YAML-определения в диаграммы Graphviz

GitHub: gorph

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
This media is not supported in your browser
VIEW IN TELEGRAM
Две структуры с одинаковыми полями могут иметь разный размер

Это явление называется «выравнивание» (alignment), концепция, заимствованная из C++, но применимая и в Go.

Посмотрим на пример

У структур A и B одинаковые поля; простая перестановка их порядка делает структуру A вдвое больше. Размер A возрастает до 32 байт, тогда как структура B остаётся меньше - 16 байт.

Подробнее об этом можно прочитать в этой статье:
Struct Optimization — A Small Change

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
Визуализатор и отладчик HTTP-запросов на чистом Go, не требующий конфигурации, для локальной веб-разработки на Go

GitHub: govisual

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84
Объяснение Go maps: как на самом деле хранятся пары ключ-значение

Годный лонгрид от Phuong Le, который на простых иллюстрациях объясняет не самые простые аспекты Go. Этот гайд посвящен типу map и всему, что с ним связано.

🔹 Читать

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1