🛠 Как использовать новую директиву
До Go 1.24, чтобы «закрепить» зависимости на CLI-инструменты, разработчики использовали такой хак:
Теперь всё намного проще
1. Добавьте инструмент в
2. Это создаст запись:
Инструмент не будет включён в go build — он «за кадром», только как зависимость для разработки.
Важно:
• tool не устанавливает инструмент — он лишь фиксирует его как зависимость.
• Команда
• Отлично подходит для корпоративных и командных проектов, где важна единая версия
🐸 Библиотека Go разработчика #буст
tool
До Go 1.24, чтобы «закрепить» зависимости на CLI-инструменты, разработчики использовали такой хак:
// tools.go
//go:build tools
package tools
import (
_ "github.com/golang/mock/mockgen"
)
Теперь всё намного проще
1. Добавьте инструмент в
go.mod
:go get tool github.com/golang/mock/mockgen@v1.6.0
2. Это создаст запись:
tool github.com/golang/mock/mockgen v1.6.0
Инструмент не будет включён в go build — он «за кадром», только как зависимость для разработки.
Важно:
• tool не устанавливает инструмент — он лишь фиксирует его как зависимость.
• Команда
go mod tidy
не удаляет такие записи.• Отлично подходит для корпоративных и командных проектов, где важна единая версия
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 go-size-analyzer v1.9.0
Инструмент для анализа размера скомпилированных Go-бинарников, go-size-analyzer, получил обновление, включающее экспериментальную поддержку WebAssembly и улучшения в стабильности.
Теперь можно анализировать файлы WebAssembly, сгенерированные с помощью
➡️ Почитать о релизе
🐸 Библиотека Go разработчика #свежак
Инструмент для анализа размера скомпилированных Go-бинарников, go-size-analyzer, получил обновление, включающее экспериментальную поддержку WebAssembly и улучшения в стабильности.
Теперь можно анализировать файлы WebAssembly, сгенерированные с помощью
go gc
. На данный момент реализован только анализатор pclntab
; поддержка анализаторов symbol
и dwarf
пока отсутствует.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📋 Чек-лист по синтаксису Go
Для разработчика на Go важно не только написать работающий код, но и сделать его понятным, чистым и соответствующим идиомам языка.
Составили для вас чек-лист, который поможет ускорить разработку в разы за счёт правильного и чистого кода.
✅ Основы синтаксиса
• Используется правильный package — каждый файл начинается с корректного определения пакета
• Импорты сгруппированы и отсортированы (стандартная библиотека, внешние пакеты, внутренние)
• Константы и переменные объявлены с типами, где это необходимо (
• Используется короткое объявление переменных
✅ Функции и методы
• Функции имеют четкие и понятные имена (глаголы для действий)
• Используется явный возврат значений (не прячем
• Обработка ошибок — всегда проверяется
• Используются именованные возвращаемые значения для улучшения читаемости (по необходимости).
• Методы объявлены с указателем
✅ Циклы и условия
• Циклы
• Используется
• В условных выражениях нет лишних скобок — Go этого не требует.
✅ Структуры и интерфейсы
• Структуры и интерфейсы объявлены с понятными именами.
• Используются теги для JSON, если структура используется для сериализации (
• Методы интерфейса определены минимально и по назначению.
• Композиция структур вместо наследования, где это возможно.
✅ Работа с ошибками
• Ошибки возвращаются явно из функций (
• Используются кастомные типы ошибок или fmt.Errorf с %w для обёртки ошибок.
• Важные ошибки логируются или обрабатываются на уровне вызова.
✅ Чистота кода и стиль
• Форматирование соответствует
• Лишние комментарии и неиспользуемые переменные удалены.
• Функции не слишком длинные — каждая отвечает за одну задачу.
• Использование
• Нет глобальных переменных, если это можно избежать.
✅ Работа с пакетами
• Пакеты не слишком большие, разделены по функционалу.
• Используются правильные уровни видимости: экспортируемые (с большой буквы) и неэкспортируемые элементы.
• Пакеты имеют README с описанием назначения (по возможности).
✅ Оптимизация и производительность
• Используются срезы и карты эффективно (избегаем ненужных копирований).
• Избегается выделение памяти в горячих циклах.
• Используются каналы и горутины с правильным управлением (контекст, тайм-ауты).
✅ Документация
• Публичные функции, типы и пакеты имеют комментарии в формате GoDoc.
• Документы объясняют назначение и использование, а не только перефразируют имена функций.
🐸 Библиотека Go разработчика #буст
Для разработчика на Go важно не только написать работающий код, но и сделать его понятным, чистым и соответствующим идиомам языка.
Составили для вас чек-лист, который поможет ускорить разработку в разы за счёт правильного и чистого кода.
• Используется правильный package — каждый файл начинается с корректного определения пакета
• Импорты сгруппированы и отсортированы (стандартная библиотека, внешние пакеты, внутренние)
• Константы и переменные объявлены с типами, где это необходимо (
var
и const
)• Используется короткое объявление переменных
:=
в локальной области• Функции имеют четкие и понятные имена (глаголы для действий)
• Используется явный возврат значений (не прячем
error
)• Обработка ошибок — всегда проверяется
if err != nil
• Используются именованные возвращаемые значения для улучшения читаемости (по необходимости).
• Методы объявлены с указателем
*Type
для изменения состояния (если нужно).• Циклы
for
написаны лаконично и с понятной логикой (без лишних вложенностей).• Используется
switch
вместо цепочек if-else
там, где это уместно.• В условных выражениях нет лишних скобок — Go этого не требует.
• Структуры и интерфейсы объявлены с понятными именами.
• Используются теги для JSON, если структура используется для сериализации (
json:"fieldName"
).• Методы интерфейса определены минимально и по назначению.
• Композиция структур вместо наследования, где это возможно.
• Ошибки возвращаются явно из функций (
return err
).• Используются кастомные типы ошибок или fmt.Errorf с %w для обёртки ошибок.
• Важные ошибки логируются или обрабатываются на уровне вызова.
• Форматирование соответствует
gofmt
/ goimports
.• Лишние комментарии и неиспользуемые переменные удалены.
• Функции не слишком длинные — каждая отвечает за одну задачу.
• Использование
defer
для освобождения ресурсов и закрытия файлов/соединений.• Нет глобальных переменных, если это можно избежать.
• Пакеты не слишком большие, разделены по функционалу.
• Используются правильные уровни видимости: экспортируемые (с большой буквы) и неэкспортируемые элементы.
• Пакеты имеют README с описанием назначения (по возможности).
• Используются срезы и карты эффективно (избегаем ненужных копирований).
• Избегается выделение памяти в горячих циклах.
• Используются каналы и горутины с правильным управлением (контекст, тайм-ауты).
• Публичные функции, типы и пакеты имеют комментарии в формате GoDoc.
• Документы объясняют назначение и использование, а не только перефразируют имена функций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑💻 Расслабление и концентрация на коде
Zen Mode — это специальный режим работы в GoLand, который минимизирует визуальные отвлекающие элементы и позволяет полностью сосредоточиться на написании кода.
В этом режиме скрываются все панели, вкладки и прочие элементы интерфейса, которые могут отвлекать внимание.
Как его включить
1. Вызовите Find Action —
2. Введите в поиске команду «Zen Mode».
3. Активируйте её — интерфейс перейдёт в минималистичный вид.
Как работать без вкладок
• Используйте Navigation Bar (включается через Alt+Home или по команде) — это компактная строка навигации по проекту и файлам.
• Воспользуйтесь поиском файлов (
• Используйте быстрые переходы, чтобы переключаться между последними файлами.
Важно освоить эффективные методы навигации, чтобы компенсировать отсутствие привычных элементов интерфейса.
🐸 Библиотека Go разработчика #буст
Zen Mode — это специальный режим работы в GoLand, который минимизирует визуальные отвлекающие элементы и позволяет полностью сосредоточиться на написании кода.
В этом режиме скрываются все панели, вкладки и прочие элементы интерфейса, которые могут отвлекать внимание.
Как его включить
1. Вызовите Find Action —
Ctrl+Shift+A
2. Введите в поиске команду «Zen Mode».
3. Активируйте её — интерфейс перейдёт в минималистичный вид.
Как работать без вкладок
• Используйте Navigation Bar (включается через Alt+Home или по команде) — это компактная строка навигации по проекту и файлам.
• Воспользуйтесь поиском файлов (
Ctrl+Shift+N
/ Cmd+Shift+O
) для быстрого открытия нужного файла.• Используйте быстрые переходы, чтобы переключаться между последними файлами.
Важно освоить эффективные методы навигации, чтобы компенсировать отсутствие привычных элементов интерфейса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Go умудряется масштабировать тысячи горутин с минимальной нагрузкой на систему благодаря уникальной архитектуре своего планировщика.
В основе работы планировщика лежит модель GMP — связка из горутины (G), потока ОС (M) и абстракции процессора (P). Именно она позволяет Go удерживать баланс между легковесностью и управляемостью.
Чтобы понять, как Go так эффективно распределяет задачи, нужно заглянуть под капот его механизма выполнения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Что мы загадали в ребусе
Попробуйте отгадать слово из go в комментариях 👇
P.S.Слова на английском языке
🐸 Библиотека Go разработчика #междусобойчик
Попробуйте отгадать слово из go в комментариях 👇
P.S.
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Дайджест недели
Без лишнего: мы собрали для вас только лучшее
— Свежий выпуск подкаста Cup o' Go
Обсуждение ухода Иэна Лэнса Тейлора из команды Go и беседа с Кевином Хоффманом из SparkLogs, который делится своими взглядами на важность эмпатии в разработке и находит радость в процессе логирования.
— Интеграция PostgreSQL в Go
Описывается использование драйвера pgx с пулом подключений, управление миграциями с помощью инструмента tern, организацию кода через паттерн репозиториев и настройку среды разработки с использованием Makefile и Docker.
— Грин-флаги в вакансиях: 10 признаков хорошего работодателя
— go-sandbox
Веб-инструмент, предоставляющий опыт разработки на Go, приближенный к полноценной IDE.
— go-size-analyzer v1.9.0
— goimapnotify 2.5
Вышла новая версия утилиты goimapnotify — IMAP IDLE-клиента на Go, позволяющего выполнять скрипты при изменениях в почтовом ящике.
В обновлении добавлена поддержка команды IMAP ID и шаблонов в конфигурации, а также улучшена обработка нестандартных ответов серверов.
— Смешные новости про IT теперь в одном канале
🐸 Библиотека Go-разработчика #свежак
Без лишнего: мы собрали для вас только лучшее
— Свежий выпуск подкаста Cup o' Go
Обсуждение ухода Иэна Лэнса Тейлора из команды Go и беседа с Кевином Хоффманом из SparkLogs, который делится своими взглядами на важность эмпатии в разработке и находит радость в процессе логирования.
— Интеграция PostgreSQL в Go
Описывается использование драйвера pgx с пулом подключений, управление миграциями с помощью инструмента tern, организацию кода через паттерн репозиториев и настройку среды разработки с использованием Makefile и Docker.
— Грин-флаги в вакансиях: 10 признаков хорошего работодателя
— go-sandbox
Веб-инструмент, предоставляющий опыт разработки на Go, приближенный к полноценной IDE.
— go-size-analyzer v1.9.0
— goimapnotify 2.5
Вышла новая версия утилиты goimapnotify — IMAP IDLE-клиента на Go, позволяющего выполнять скрипты при изменениях в почтовом ящике.
В обновлении добавлена поддержка команды IMAP ID и шаблонов в конфигурации, а также улучшена обработка нестандартных ответов серверов.
— Смешные новости про IT теперь в одном канале
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Go | тесты, код, задания
Senior Golang-разработчик — от 300 000 ₽, Офис (Москва)
Golang Developer — от 210 000 ₽, Удаленно/Офис (Питер)
Golang наставник — от 350 000 ₽, Гибрид/Офис (Воронеж)
Hotel Search Team Lead — от 6 400 $, Удаленно
Бустер — удалённо (не только Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐 Шпаргалка по ключевым сетевым протоколам и их взаимосвязям
Подготовили для вас наглядную схему, которая визуально покажет взаимодействие протоколов.
Краткие пояснения по схеме:
• IPv4 / IPv6 — сетевые протоколы, определяющие, как устройства находят друг друга в интернете
• ICMP / ICMPv6 — диагностика и контроль (например, команды ping, traceroute)
• TCP / UDP / SCTP / DCCP — транспортные протоколы
• IPSec — безопасность на уровне IP (шифрование, проверка подлинности)
На основе UDP работают:
• DNS — доменные имена
• DHCP — выдача IP-адресов
• SIP — VoIP телефония
• NTP — синхронизация времени
• RIP / RPT — маршрутизация
• QUIC — альтернатива TCP от Google, работает поверх UDP
На основе TCP:
• HTTP / HTTPS — веб-протокол
• SSL/TLS — безопасное соединение
• SSH — защищённый удалённый доступ
• POP / IMAP — получение почты
• RDP / VNC — удалённый рабочий стол
• BGP — обмен маршрутами между провайдерами
💬 На какие темы вы бы хотели увидеть шпаргалки? Напишите свои варианты в комментарии 👇
🐸 Библиотека Go-разработчика #буст
Подготовили для вас наглядную схему, которая визуально покажет взаимодействие протоколов.
Краткие пояснения по схеме:
• IPv4 / IPv6 — сетевые протоколы, определяющие, как устройства находят друг друга в интернете
• ICMP / ICMPv6 — диагностика и контроль (например, команды ping, traceroute)
• TCP / UDP / SCTP / DCCP — транспортные протоколы
• IPSec — безопасность на уровне IP (шифрование, проверка подлинности)
На основе UDP работают:
• DNS — доменные имена
• DHCP — выдача IP-адресов
• SIP — VoIP телефония
• NTP — синхронизация времени
• RIP / RPT — маршрутизация
• QUIC — альтернатива TCP от Google, работает поверх UDP
На основе TCP:
• HTTP / HTTPS — веб-протокол
• SSL/TLS — безопасное соединение
• SSH — защищённый удалённый доступ
• POP / IMAP — получение почты
• RDP / VNC — удалённый рабочий стол
• BGP — обмен маршрутами между провайдерами
💬 На какие темы вы бы хотели увидеть шпаргалки? Напишите свои варианты в комментарии 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
В ходе аудита библиотеки TOB Crypto команда Go обнаружила несколько важных технических уязвимостей, включая ошибки в обработке ключей и недостатки в управлении памятью.
Также выявили места с возможными рисками тайминговых атак из-за недостаточно защищённых операций.
Обнаруженные проблемы поправили, а также оставили аудиторские рекомендации, в числе которых усиления проверок данных, улучшение управления памятью и оптимизация криптографических методов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Bluemonday — это инструмент для очистки HTML-контента. Его главная задача — защитить веб-приложения от атак типа Cross-Site Scripting (XSS), удаляя из пользовательского ввода потенциально опасные теги и атрибуты.
Bluemonday использует политики на основе allowlist, позволяя контролировать, какие элементы остаются в HTML, а какие — удаляются.
Встроенные политики уже оптимизированы для типичных сценариев, например, для обработки пользовательского контента.
Инструмент интегрируется в Go-проекты и поддерживает разные форматы ввода, от строк до потоков.
Чтобы избежать уязвимостей, важно применять инструмент на последнем этапе обработки и с осторожностью настраивать политики.
Пример очистки пользовательского контента с помощью стандартной политики UGC:
import (
"fmt"
"github.com/microcosm-cc/bluemonday"
)
func main() {
p := bluemonday.UGCPolicy() // Политика для пользовательского контента
dirtyHTML := `<a href="http://example.com" onclick="alert('XSS')">Ссылка</a><script>alert('bad')</script>`
cleanHTML := p.Sanitize(dirtyHTML)
fmt.Println(cleanHTML)
}
Результат:
<a href="http://example.com" rel="nofollow">Ссылка</a>
Вредоносный
<script>
и атрибут onclick
удалены, добавлен rel="nofollow"
для безопасности.💬 Используете ли вы подобные санитайзеры, фреймворки безопасности или собственные решения? Делитесь тулзами в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥵 Устали от статей, где эйчары рассказывают, как на самом деле выглядит рынок труда в ИТ?
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
Мы тоже! Поэтому решили узнать правду и представить ее всем айтишникам — но нам нужен ваш голос. Опрос займет 3 минуты, а пользы — вагон для всего сообщества.
Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).
👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA