39.1K subscribers
1.65K photos
46 videos
5 files
1.79K links
admin - @haarrp

https://t.me/Golang_google - Golang разработка

https://t.me/golangl - golang чат

https://t.me/golangtests go тесты

https://t.me/ai_machinelearning_big_data машинное обучение

@itchannels_telegram

РКН: clck.ru/3Fmx3s
Download Telegram
👣 Разбор статьи о том, как Go управляет памятью

Go использует собственную, достаточно сложную модель аллокации памяти, которая сильно отличается от традиционного malloc. Вместо прямой работы с кучей Go оперирует несколькими уровнями:

- Arena - основной блок памяти в 64 МБ, который Go выделяет у ОС.
- Page - каждая арена делится на страницы по 8 КБ.
- Span - набор страниц, который используется для аллокаций объектов одного размера.
- Size class - категории размеров объектов (от tiny до large), каждая из которых имеет свой способ обработки.

Память также делится на:
- scan (объекты с указателями, которые должен обходить GC),
- noscan (объекты без указателей, GC может их игнорировать).

Аллокация объектов
- Tiny-объекты (менее 16 байт) могут группироваться в один слот для ускорения.
- Small-объекты (до 32 КБ) выделяются из span’ов в соответствии с size class.
- Large-объекты (более 32 КБ) выделяются напрямую из кучи (heap).

Escape analysis
Go-компилятор анализирует, выходит ли переменная за пределы функции:
- если нет → объект попадает на стек,
- если да → объект уходит в кучу.
Это решает судьбу каждой переменной и напрямую влияет на работу GC.

Стек горутин
- Каждая горутина стартует со стека в 2 КБ.
- Стек растёт динамически (copy & grow) и может сжиматься.
- При глубокой рекурсии или сложных вычислениях рост стека может быть дорогим, так как требует копирования всех данных.

Практические советы
1. Избегайте лишних tiny / small аллокаций в горячих функциях - каждая мелочь создаёт нагрузку на GC.
2. Переиспользуйте срезы и буферы (`row[:0]`, sync.Pool) для минимизации мусора.
3. Объединяйте переменные в структуры, если они живут одинаковое время, чтобы уменьшить число malloc’ов.
4. Следите за размером объектов, чтобы они не перескакивали из small в large — это увеличивает расходы.
5. Профилируйте escape analysis (`go build -gcflags="-m"`) - он покажет, какие переменные уходят в кучу, а какие остаются на стеке.
6. Следите за ростом стека в рекурсивных функциях - копирование может быть дорогим.

Контроль над аллокацией в Go - это контроль над работой GC. Если понимать, как именно Go управляет памятью, можно проектировать код так, чтобы минимизировать аллокации, упростить жизнь GC и получить значительный прирост производительности.

🟢 Полный разбор здесь: https://nghiant3223.github.io/2025/06/03/memory_allocation_in_go.html
🟢Видео-разбор: https://www.youtube.com/watch?v=VrXQhtpjHWs

@golang_google

#golang #go #memory
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62👍2416
👣 From Bash to Go — часть III

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

Что реализовано:
• Easypod API Server — простой API-сервер поверх Kubernetes.
• Поддерживаются три базовые операции:
- POST /pod — создать Pod
- GET /pods — получить список Pod’ов
- DELETE /pod/{name} — удалить Pod
• Подключение к Kubernetes через официальный Go SDK (client-go).
• Показаны примеры кода: структуры, обработчики запросов, JSON-декодинг, взаимодействие с API-сервером кластера.

Зачем это нужно:
• Bash-скрипты хороши для простых задач, но плохо масштабируются. Go даёт типизацию, читаемость и безопасность.
• Платформа на Go позволяет абстрагировать сложные операции (например, работу с Kubernetes) и предоставить командам удобный API.
• Такой подход можно развивать: добавлять новые маршруты, интеграции и строить полноценные инструменты для DevOps и платформенной инженерии.

Что можно улучшить:
• Добавить авторизацию и аутентификацию, чтобы ограничить доступ к API.
• Реализовать логирование, метрики и мониторинг.
• Улучшить обработку ошибок и подумать о масштабировании.

🟢 Репозиторий

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1510👍6😁4
💡 Совет для Go-тестов

Когда пишете вспомогательные функции вроде assertEquals или doRequest, добавьте в них t.Helper().

Зачем? Если тест упадёт, Go покажет строку вызова в самом тесте, а не внутри хелпера. Так сразу видно, где именно ошибка.

@golang_google

#golang
👍7221🔥6🥰1🤔1
Офер в VK для бэкендеров и ML-щиков — станьте частью команды за выходные.

4–5 октября пройдёт VK Weekend Offer. Всего за 2 дня вы сможете пройти весь путь от знакомства с командами до приглашения на работу: пройти техническое собеседование, встретиться с лидами и получить офер.

Требования для бекэндеров – три года опыта коммерческой разработки, знание Java, Go, Python, C++.
Для ML-щиков – те же три года опыта + знания Classic ML, RecSys, NLP/LLM, CV, Speech.

Читайте подробности на сайте и подавайте заявку до 2 октября!
😁7👍6🤬42😱2😢2
📊 Высокопроизводительная библиотека логирования для Go 🚀

mtlog — это библиотека структурированного логирования для Go, вдохновленная Serilog. Она обеспечивает нулевые аллокации для простых операций логирования и поддерживает мощные функции для сложных сценариев, включая шаблоны сообщений и совместимость с OpenTelemetry.

🚀Основные моменты:
- Нулевые аллокации для простых сообщений
- Поддержка шаблонов сообщений и Go синтаксиса
- Интеграция с Kubernetes и OpenTelemetry
- Многофреймворковая поддержка для HTTP
- Расширенные стратегии выборки и маршрутизации логов

📌 GitHub: https://github.com/willibrandon/mtlog

@golang_google

#golang
12👍6🔥3🤬1🎉1
🚀 Оптимизация контейнеров с Slim

Slim — это инструмент для оптимизации и безопасности контейнеров, который помогает разработчикам уменьшать размер образов до 30 раз, сохраняя их функциональность. Он обеспечивает улучшенную видимость и удобство работы, позволяя легко настраивать и отлаживать контейнеры без необходимости в глубоких знаниях о Linux.

🚀 Основные моменты:
- Уменьшение размера контейнеров и улучшение безопасности.
- Поддержка различных языков программирования и ОС.
- Интерактивный интерфейс для анализа и отладки.
- Автоматическая оптимизация без изменения исходного кода.

📌 GitHub: https://github.com/slimtoolkit/slim

#go
👍74🥰2
Совет на 2025 год — переходите на Go.

На Go собирают банки, маркетплейсы и highload-сервисы. Зарплаты мидлов начинаются от 200 000 ₽, а у сеньоров доходят до 600 000 ₽.

А чтобы освоить его всего за 3 месяца — изучите канал Максима Аверина.

Его бэкграунд: Senior Golang/Python (X5, Lamoda, BestDoctor), 7 лет в бэкенде, экс-тимлид и PM, 300+ собеседований с 2018

На канале вы найдёте:

Советы, которые в разы повысят ваши шансы на перекат в Go

— Как легко выбивать себе ту ЗП, которую желаете: скрипты переговоров и шаблоны писем

— Как сделать мощный проект с code-review и уже через три недели пойти на собесы.

Огромный опыт, который ты можешь перенять абсолютно бесплатно. Переходи и изучай: @maksim_golang
🤬36😁105🔥3😱1
👣 PGMCP: AI-Driven PostgreSQL Queries

PGMCP позволяет взаимодействовать с любыми базами данных PostgreSQL через естественные языковые запросы. Пользователи могут задавать вопросы на английском и получать структурированные результаты SQL с автоматической обработкой ошибок и потоковой передачей данных.

🚀Основные моменты:
- Поддержка любого PostgreSQL без изменений схемы
- Безопасный доступ только для чтения
- Автоматическая потоковая передача больших наборов данных
- Интеллектуальное понимание запросов
- Множественные форматы вывода (таблица, JSON, CSV)

📌 GitHub: https://github.com/subnetmarco/pgmcp

@golang_google

#go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7😁64🤯1
👣 Devsyringe — это CLI-утилита (написана на Go), которая позволяет инжектить динамические значения в код или конфигурации, опираясь на декларативные правила описанные в YAML

🚀Главное:
- Инъекция в любые целевые файлы.
- Поддержка извлечения данных из командной строки.
- Конфигурация через YAML-файлы.
- Удобный интерфейс для управления процессами.

📌 GitHub: https://github.com/alchemmist/devsyringe

#go #golang

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔146👍2🔥1🤩1
👣 TableWriter for Go

Удобная Go-библиотека tablewriter для создания таблиц в разных форматах: ASCII, Unicode, Markdown, HTML и с цветами для терминала.

Подходит для:

- CLI-утилит
- логов
- веб-приложений

Простой инструмент, если нужно быстро и красиво вывести табличные данные.

go get github.com/olekukonko/tablewriter@v0.0.5

🟢 Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥108🤬1
PostgreSQL 17: архитектура и тюнинг SQL-запросов

Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.

🌐 В программе курса:

🤩 Разберем, как работают СУБД вообще и PostgreSQL в частности: что такое MVCC, ACID, WAL, LRU, PPC/TPC и другие фундаментальные понятия архитектуры баз данных
🤩 Получите свой собственный выделенный облачный PostgreSQL-сервер (8 vCPU, 12G RAM, 100G NVMe) – БЕСПЛАТНО на время обучения предоставляется
🤩 Получите теорию и практику EXPLAIN и EXPLAIN ANALYZE на разных типа запросов
🤩 Изучите архитектуру хранения данных в PostgreSQL, типы и особенности индексов, а также получите полезные советы и трюки оптимизации БД

Кто мы: R&D-центр Devhands, основатель школы Алексей Рыбак. Автор курса — Николай Ихалайнен, эксперт по СУБД (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО.

🗓 Старт курса: 16 октября, 5 недель обучения.

Изучить программу и записаться можно здесь.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquiQ76e
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥3🤬1
📦 Для Go появился лёгкий и удобный инструмент для событийной архитектуры

signals — это минималистичная библиотека без зависимостей, которая реализует простой pub-sub механизм для ваших Go-приложений.

Особенности:
- никаких внешних зависимостей
- тонкий и понятный API
- удобный in-process event system

Репозиторий: https://github.com/maniartech/signals

#golang
8👍7🔥5
🆕 На Stepik вышел курс — «Golang + SQLx: построение высоконагруженных сервисов с нуля до продакшена» 

Уже пишете на Go и хотите разобраться, как строить быстрые и отказоустойчивые сервисы? Этот курс — именно то, что нужно, чтобы прокачать навыки работы с SQLx и backend-архитектурой.

• Полный путь от CRUD-операций до масштабируемых систем: транзакции, уровни изоляции, конкурентное программирование, балансировка нагрузки
• Оптимизация SQL: индексы, кэширование, профилирование запросов
• Масштабирование и администрирование сервисов: кластеры, отказоустойчивость, мониторинг и логирование
• Практика на реальных кейсах: проектируем API, отрабатываем ошибки, настраиваем CI/CD
• 150+ интерактивных заданий с автопроверкой — пишите код прямо в браузере, когда удобно
• Итоговый pet-project: к концу курса у вас будет готовый сервис уровня продакшн

🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn

🚀 Прокачайте Golang и SQLx с пользой и практикой. Начните уже сегодня и получите скидку 30%, которая действует в течение 48 часов.

👉 Пройти курс на Stepik
🤬9🤔82😁1
👣 Scrutiny: Умный мониторинг состояния жестких дисков

Scrutiny — это веб-интерфейс для мониторинга S.M.A.R.T. состояния жестких дисков, интегрированный с smartd. Он помогает отслеживать критические метрики и предсказывать сбои, предоставляя удобный интерфейс для анализа данных.

🚀Основные моменты:
- Веб-интерфейс с акцентом на критические метрики
- Интеграция с smartd для автоматического обнаружения дисков
- Историческое отслеживание S.M.A.R.T. атрибутов
- Настраиваемые пороги на основе реальных данных о сбоях
- Поддержка уведомлений через вебхуки

📌 GitHub: https://github.com/AnalogJ/scrutiny

#go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥42🥰2