This media is not supported in your browser
VIEW IN TELEGRAM
На GitHub есть репозиторий free-programming-books, где собрано более 4000 бесплатных книг, 2000 курсов и других полезных ресурсов по программированию
Для удобства поиска можно использовать этот инструмент
Этот проект - яркий пример силы опенсорс сообщества, который из клона списка со StackOverflow стал одним из самых популярных на GitHub✌️
🔹 Русскоязычная версия ресурсов
👉 @GolangPortal
Для удобства поиска можно использовать этот инструмент
Этот проект - яркий пример силы опенсорс сообщества, который из клона списка со StackOverflow стал одним из самых популярных на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🔥2
Серия обучающих статей по программированию на Go для сисадминов, девопсов и безопасников
https://www.gomonk.net/
👉 @GolangPortal
https://www.gomonk.net/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👎1
Рассмотрите возможность использовать
✅ Работают даже если из канала никто не читает.
✅ Позволяют нескольким получателям отслеживать завершение
👉 @GolangPortal
close() для канала или sync.WaitGroup для сигнализации о завершении горутины. Оба подхода:Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Начиная с Go 1.26 можно передавать выражение в
До Go 1.26 можно было делать только
Новое поведение
Но есть 3 нюанса:
1. Если
2.
3. Нетипизированные константы сначала получают тип по умолчанию:
👉 @GolangPortal | #tip by Phuong Le
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) — невалидно.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2🤔1
Высокопроизводительный сервис преобразования изображений, написанный на Go, предоставляющий URL-ориентированный API для обработки изображений в реальном времени. Опенсорсная альтернатива Cloudflare Images и ImageKit.
GitHub: kriti-images
👉 @GolangPortal
GitHub: kriti-images
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🤔2
Хотели ли вы когда-нибудь одновременно сохранить вывод команды и при этом стримить его в stdout/err текущего процесса в Go?
Для этого идеально подходит утилита
Подробнее о приёме тут
👉 @GolangPortal
Для этого идеально подходит утилита
io.MultiWriter()! Очень полезная штука для CLI и системного программирования.Подробнее о приёме тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤6🔥2
Redis 101: взгляд новичка
Вводный обзор того, что такое Redis, почему он так быстр (за счёт работы в памяти, однопоточного исполнения и оптимальных структур данных) и как его можно использовать не только как кэш, но и как базу данных, брокер сообщений и rate-лимитер
https://mrinalxdev.github.io/mrinalxblogs/blogs/redis.html
👉 @GolangPortal
Вводный обзор того, что такое Redis, почему он так быстр (за счёт работы в памяти, однопоточного исполнения и оптимальных структур данных) и как его можно использовать не только как кэш, но и как базу данных, брокер сообщений и rate-лимитер
https://mrinalxdev.github.io/mrinalxblogs/blogs/redis.html
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4👀1
Пошаговый разбор реверс-инжиниринга Golang! Задачу решаем тремя разными подходами: (1) статический анализ в IDA, (2) динамический анализ в дебаггере и (3) патчинг бинарника с переключением на нужный путь выполнения кода
Смотрите на YouTube
👉 @GolangPortal
Смотрите на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Сети для самых маленьких
Это серия статей о сетях, их настройке и администрировании. Здесь собраны основные аспекты, которые необходимо знать и понимать. В этой серии рассматривается планирование сети, настройка маршрутизаторов, работа с коммутацией и маршрутизацией, протоколы и технологии: STP, NAT, VPN, BGP, MPLS и многое другое.
https://linkmeup.gitbook.io/sdsm
👉 @GolangPortal
Это серия статей о сетях, их настройке и администрировании. Здесь собраны основные аспекты, которые необходимо знать и понимать. В этой серии рассматривается планирование сети, настройка маршрутизаторов, работа с коммутацией и маршрутизацией, протоколы и технологии: STP, NAT, VPN, BGP, MPLS и многое другое.
https://linkmeup.gitbook.io/sdsm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
Go-пакет
Благодаря простому API, по сути единственной функции
👉 @GolangPortal
synctest помогает контролировать время (в определённых пределах) при тестировании конкурентных программ. Благодаря простому API, по сути единственной функции
Wait, он позволяет убрать (почти) все вызовы time.Sleep в тестах.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4🤔1
Утилита на Go, которая без лишних усилий преобразует ваши текущие команды Cobra в инструменты MCP, а также предоставляет CLI-команды для интеграции с Claude и VSCode
GitHub: ophis
👉 @GolangPortal
GitHub: ophis
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
Архитектурный паттерн для централизованной обработки ошибок в хендлерах на Go
Статья предлагает архитектурный паттерн для централизованной обработки ошибок в HTTP-хендлерах на Go: вводится кастомный тип HTTPError и обёртка (middleware), которая перехватывает ошибки, логирует их и унифицированно формирует HTTP-ответы
Читайте здесь
👉 @GolangPortal
Статья предлагает архитектурный паттерн для централизованной обработки ошибок в HTTP-хендлерах на Go: вводится кастомный тип HTTPError и обёртка (middleware), которая перехватывает ошибки, логирует их и унифицированно формирует HTTP-ответы
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🤔1🌚1
Запуск и управление контейнерами Docker
Изучите, как запускать контейнеры самых разных типов (серверы, базы данных, CLI-инструменты и т.д.), взаимодействовать с ними и сформировать чёткое понимание того, как Docker управляет вашими приложениями «под капотом».
Здесь: Docker 101: Run and Manage Containers
👉 @GolangPortal
Изучите, как запускать контейнеры самых разных типов (серверы, базы данных, CLI-инструменты и т.д.), взаимодействовать с ними и сформировать чёткое понимание того, как Docker управляет вашими приложениями «под капотом».
Здесь: Docker 101: Run and Manage Containers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Инструмент визуализации инфраструктуры на Go, который преобразует YAML-определения в диаграммы Graphviz
GitHub: gorph
👉 @GolangPortal
GitHub: gorph
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
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
Это явление называется «выравнивание» (alignment), концепция, заимствованная из C++, но применимая и в Go.
Посмотрим на пример
У структур A и B одинаковые поля; простая перестановка их порядка делает структуру A вдвое больше. Размер A возрастает до 32 байт, тогда как структура B остаётся меньше - 16 байт.
Подробнее об этом можно прочитать в этой статье:
Struct Optimization — A Small Change
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥4
Вышли Go 1.25.2 и Go 1.24.8
Анонс: https://groups.google.com/g/golang-announce/c/4Emdl2iQ_bI/m/qZN5nc-mBgAJ
Скачать: https://go.dev/dl/#go1.25.2
👉 @GolangPortal
Анонс: https://groups.google.com/g/golang-announce/c/4Emdl2iQ_bI/m/qZN5nc-mBgAJ
Скачать: https://go.dev/dl/#go1.25.2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Визуализатор и отладчик HTTP-запросов на чистом Go, не требующий конфигурации, для локальной веб-разработки на Go
GitHub: govisual
👉 @GolangPortal
GitHub: govisual
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4
Объяснение Go maps: как на самом деле хранятся пары ключ-значение
Годный лонгрид от Phuong Le, который на простых иллюстрациях объясняет не самые простые аспекты Go. Этот гайд посвящен типу map и всему, что с ним связано.
🔹 Читать
👉 @GolangPortal
Годный лонгрид от Phuong Le, который на простых иллюстрациях объясняет не самые простые аспекты Go. Этот гайд посвящен типу map и всему, что с ним связано.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥1