🚀 PGO: Как получить +10% к скорости, не написав ни строчки кода Все мы любим оптимизировать. Переписываем мапы, пулим объекты в sync.Pool, боремся с аллокациями. Но что, если я скажу, что в новых версиях Go (начиная с 1.21) можно ускорить приложение на 5-10%, просто подкинув компилятору один файлик? Profile-Guided Optimization (PGO). В чем проблема обычного компилятора? При стандартной сборке компилятор опирается на эвристики. Он смотрит на функцию и гадает: "Наверное, эту функцию вызывают част...
Библиотека Go (Golang) разработчика
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
13 из 13📦 go mod: Хватит удалять go.sum, когда что-то сломалось Управление зависимостями в Go выглядит элегантно: написал import, сделал go mod tidy, и всё работает. Но стоит случиться конфликту версий, как многие разработчики переходят в режим паники: удаляют go.mod, удаляют go.sum, чистят кэш и надеются на чудо. Давайте разберем, как это работает под капотом, чтобы перестать воевать с тулчейном. 1. Миф про go.sum (Это не lock-файл!) Выходцы из JS (NPM) или Python (Poetry) часто думают, что go.sum - э...
👣 Вы видите обобщения (дженерики) в Go и обходите их стороной Понимаете, что они могут избавить от дублирования кода. Но синтаксис выглядит странно, поведение непредсказуемо, а риск усложнить архитектуру кажется выше, чем польза. Проще скопировать функцию для нового типа, чем разбираться. Проблема не в обобщениях. Проблема в том, что вы не знаете, где они нужны, а где только вредят. 🗓 10 марта в 20:00 — открытый урок «Обобщения в Go: от синтаксиса до смысла» Разберём, как работают дженерики из...
🔥 Go Maps Explained: Как на самом деле хранятся пары ключ-значение Go map — это встроенный тип данных, который реализует хеш-таблицу для хранения пар ключ–значение. В статье рассматриваются важные детали работы map в Go, которые часто упускают из виду, и даются практические рекомендации по их использованию. Ключевые моменты: Неупорядоченность Go не гарантирует порядок обхода элементов в map. Если нужен определённый порядок, нужно использовать срез для сортировки ключей перед обходом. Zero value...
🔍Тестовое собеседование с Go TeamLead из американского FinTech в этот четверг 12 марта(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика. Как это будет: 📂 Дмитрий Дорофеев, Go TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью �...
Когда система падает под нагрузкой, виноват не язык и не фреймворк. Почти всегда проблема в архитектуре. 🔔 Курс «Highload Architect» учит строить системы, которые выдерживают сотни тысяч и миллионы запросов в секунду. Вы разберёте весь путь запроса — от клиента до базы данных и обратно — и поймёте, какие архитектурные решения действительно работают под высокой нагрузкой, а какие ломаются первыми. Программа ориентирована на веб-разработчиков, тимлидов и архитекторов ПО. На курсе рассмотрим типов...
🧬 Generics: Как перестать писать Java на Go Мы ждали их 10 лет. И вот, когда они появились, код-ревью превратились в выставку угловых скобок. Я видел разработчиков, которые пытались впихнуть дженерики даже в хендлеры HTTP-запросов. Коллеги, давайте договоримся на берегу: Generics созданы для работы с типами, а не с поведением. Если вам нужно поведение, у нас уже есть интерфейсы. Давайте разберем, где дженерики это пушка, а где - технический долг. ❌ Как делать НЕ надо (Бизнес-логика) Типичная ош...
🧩 Struct Padding: Как вы теряете гигабайты памяти на ровном месте Знаете это чувство, когда вы долго проектируете структуру, высчитываете типы, используете int8 вместо int, чтобы сэкономить память... а потом смотрите в профайлер и плачете? Вы думаете, что экономите память, а компилятор тихо посмеивается и подкидывает вам мусорные байты. Проблема в том, что железо читает память не побайтово, а "машинными словами" (обычно по 8 байт на 64-битных архитектурах). Чтобы CPU было удобно и быстро читать...
🐳 Идеальный Dockerfile для Go. Худеем с 800 МБ до 10 МБ Знакомая картина: джун приносит микросервис, который делает пару запросов к БД, а Docker-образ весит под гигабайт. Почему? Потому что в FROM гордо красуется golang:latest. Вместе с вашим кодом в продакшен уезжает весь тулчейн компилятора, операционная система, куча утилит (шелл, curl) и, как бонус, пачка потенциальных уязвимостей. Прелесть Go в том, что он компилирует всё в один независимый бинарный файл. Нам не нужен Go в рантайме! Наш пу...
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиоте...