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

Связь: @devmangx
Download Telegram
Wireshark на Go для ваших Docker-контейнеров. Позволяет разработчикам видеть все входящие и исходящие запросы на их бэкенд-сервере, чтобы быстрее решать проблемы в продакшене

GitHub: subtrace

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥115
Graceful Shutdown в HTTP-серверах на Go: как обеспечить нулевой простой для живого трафик

Читать здесь

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
This media is not supported in your browser
VIEW IN TELEGRAM
Прокачай базовые навыки работы с Kubernetes

Вот практическое задание, которое проведёт тебя через весь жизненный цикл Pod’а — от его создания до инспектирования, выполнения команд внутри, просмотра логов и удаления.

Это отличный способ потренироваться, если ты только начинаешь работать с Kubernetes или хочешь увереннее чувствовать себя при работе с kubectl.

Попробуй здесь:
https://labs.iximiuz.com/challenges/kubernetes-pod-fundamentals-ad0b10b3

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5
SSH-туннели без лишней боли: поднимай и мониторь SSH-туннели из одного YAML-конфига, используя текущую настройку OpenSSH

GitHub: tunn

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104
Тип Context в Go можно использовать для создания таймаутов. Это удобно, когда нужно задать лимит времени для любой функции, принимающей контекст

Пример: мы можем отменить веб-запрос, если он выполняется слишком долго, чтобы код не ждал дольше, чем нам нужно

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🌚1
Библиотека Go для создания таблиц с форматированным текстом в ASCII, Unicode, Markdown, HTML и раскрашенных терминалах. Отлично подходит для CLI-утилит, логов и веб-приложений.

GitHub: tablewriter

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍147
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