Библиотека Go-разработчика | Golang
23.5K subscribers
2.29K photos
46 videos
87 files
4.7K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
👨‍💻 Недельный дайджест

Подборка новостей уходящей недели

Go 1.25.2 и 1.24.8

DataGrip теперь бесплатный

Сравнение Go-библиотек для интеграции Ollama

golang.org/x/net v0.45.0

Устранены две критические уязвимости в html-парсере

Свежий Cup o' Go

Про релизы языка с фиксами и конференции по Go.

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
💬 Что из контента за эту неделю зацепило лично вас? Делитесь, интересно обсудить👇

🐸 Библиотека Go-разработчика

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19👍4
This media is not supported in your browser
VIEW IN TELEGRAM
В proglib.academy — Глобальная распродажа знаний ‼️

💥 Весь октябрь –40% на те курсы, которые выбирают чаще всего.

Курсы с практикой, без воды и пафоса.
Просто берёшь и делаешь апгрейд.


👉 Успей забрать свой курс на proglib.academy
🥱8😁5🌚1
🙅‍♂️ Ошибка инлайнинга

Ваш код компилируется, запускается и работает корректно, но при этом может быть в разы медленнее, чем мог бы. Компилятор не выдаст ошибку — ведь технически всё правильно.

Анализаторы кода замечают: выполняется очень часто, а её структура блокирует инлайнинг — одну из ключевых оптимизаций компилятора.

Представьте: вы написали функцию, которая складывает два числа. Простейшая операция. Но каждый раз, когда программа её вызывает, происходит целая церемония:

1.Процессор прыгает к адресу функции в памяти
2. Сохраняет контекст — где он был, куда вернуться
3. Создаёт новый фрейм стека для аргументов и локальных переменных
4. Выполняет полезную работу (наконец-то!)
5. Разрушает фрейм стека
6.Прыгает обратно и восстанавливает контекст

Для сложения двух чисел весь этот оркестр может занять в 10-100 раз больше времени, чем сама операция сложения.

Как обнаружить проблему

1. Используйте линтеры, они укажут напрямую где и что не инлайнится

2. Спросите компилятор:
go build -gcflags='-m' your_file.go


3. Профилирование выдаст симптомы
go test -bench=. -cpuprofile=cpu.prof
go tool pprof cpu.prof


Если видите, что процессор тратит 20% времени на вызов функции, которая делает return a + b — проблема очевидна.

Как писать код правильно с самого начала

• Уменьшайте функции

• Выносите defer за пределы частоиспользуемых функций

• Разделяйте быстрый и медленный пути:
//  Оптимальный подход
func process(value interface{}) int {
// Fast path — 90% случаев, инлайнится
if v, ok := value.(int); ok {
return v * 2
}
// Slow path — 10% случаев, может быть сложным
return complexProcessing(value)
}

func complexProcessing(value interface{}) int {
// Тут defer, циклы, паники — всё что угодно
// Инлайнинг не критичен, код выполняется редко
switch v := value.(type) {
case string:
defer logProcessing()
return parseAndProcess(v)
case []byte:
return processBytes(v)
}
return 0
}


• Используйте подсказки компилятору
//go:inline
func fastPath(x int) int {
return x * 2
}


⚠️ Директива-подсказка, но не гарантия. Компилятор сам решит.

Эта ошибка не о синтаксисе и не о логике. Это ошибка архитектурного мышления. Вы должны понимать, как компилятор оптимизирует код, и писать так, чтобы дать ему эту возможность.

🐸 Библиотека Go-разработчика

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍81👾1
💼 Топ-вакансий для Go-разработчиков за неделю

Разработчик Go на гибрид в Новосибирск

В офис в Москве или на гибрид Тим лид от 350 000 ₽

Golang-разработчик
до 300 000 ₽ на удалёнку в Москве.

Бустер — удалённо (не только Москва)

➡️ Еще больше топовых вакансий — в нашем канале Go jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
4🥱2👍1
⚡️ Быстрый патч

13 октября вышли версии Go 1.25.3 и 1.24.9. Эти версии вышли всего через неделю после предыдущих обновлений, которые закрывали уязвимости в девяти пакетах стандартной библиотеки.

Новый фикс сфокусирован исключительно на дополнительном исправлении в модуле работы с сертификатами.
Если вы работаете с TLS, сертификатами или другими криптографическими примитивами, стоит обновиться на актуальные версии.

➡️ Release notes

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122👏1👾1
🔍 50 фраз, из-за которых ваше резюме летит в корзину

На первый взгляд может показаться, что фраза «пишу чистый код» звучит убедительно и профессионально — но на практике рекрутеры и ATS-системы давно привыкли к таким штампам и игнорируют их как пустые слова.

Когда вы пишете общие формулировки вместо конкретных достижений, ваше резюме теряется среди сотен похожих. Вместо «работаю с микросервисами» напишите «разработал и поддерживаю 12 микросервисов на Go, обрабатывающих 50K RPS с латентностью p99 < 100ms».

➡️ В статье про все клише, которые стоит убрать из резюме

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51👾1
🤓 Пока Python стал π-thon, ты можешь стать Data Scientist'ом

В Proglib.academy стартует экспресс-курс «Математика для Data Science»: 10 живых вебинаров, практика на Python и спикеры из ВШЭ, Яндекс Практикума и Wildberries, которые всё разложат по полочкам.

В программе:
🔹 матан, линал, теория вероятностей;
🔹 3 практических проекта + викторина с розыгрышем TG Premium;
🔹 поддержка преподавателей и чат с единомышленниками;

🎁 Оплати курс до 19 октября — получи курс по базовой математике в подарок.
🗓️ Старт — 6 ноября

👉 Записаться на курс
1🥱1
🧩 Полуночный вопрос

Есть такой код:
nums := []int{1, 2, 3, 4, 5, 6, 7, 8}

for i, num := range nums[3:] {
fmt.Printf("i=%d, num=%d\n", i, num)
}


Вопрос: какое значение будет у i на первой итерации? 0 или 3?

Ответ: 0. И вот почему: когда мы используем nums[3:], создаётся новый слайс, который начинается с 4-го элемента исходного массива.

Оператор
range всегда возвращает индексы относительно того слайса, по которому он итерируется, а не исходного массива.

🐸 Библиотека Go-разработчика

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍515
🥂 Дружба с коллегами

На reddit разгорелся жаркий спор: можно ли дружить с коллегами по работе или это путь к проблемам? Одни считают, что дружба на работе — это нормально и даже полезно, другие уверены, что нужно держать дистанцию. Разберём обе стороны.

Мы проводим на работе треть своей жизни — так почему бы не общаться с людьми, которые нам интересны? Дружеская атмосфера в команде повышает продуктивность, упрощает коммуникацию и делает работу приятнее.

Но профессионализм требует дистанции. Когда ты дружишь с коллегой, сложно давать критическую обратную связь, объективно оценивать работу или конкурировать за повышение.

💬 Расскажите о своём опыте: помогала ли дружба в работе или, наоборот, создавала проблемы?

🐸 Библиотека Go-разработчика

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
3👾2
🧐 Хочешь в Data Science, но не знаешь, с чего начать?

Пройди короткий тест по математике — бот покажет, насколько ты готов к переходу и что стоит подтянуть.

Всего пару минут — и ты поймёшь, куда двигаться дальше.


👉 Пройти тест
😁62
😊 CLI-AI-ассистент

Ghost — это CLI-инструмент, который интегрирует возможности языковых моделей прямо в ваш терминал. Вместо того чтобы переключаться между редактором, браузером и ChatGPT, вы можете задавать вопросы и получать помощь не отрываясь от командной строки.

Основные возможности

• Помощь с командами. Забыли, как работает tar с определёнными флагами? Ghost объяснит и покажет примеры прямо в терминале.

• Объяснение ошибок. Скопировали непонятный stack trace? Ghost разберёт его и подскажет возможные решения.

• Генерация кода. Нужен быстрый скрипт или сниппет? Опишите задачу — получите готовый код.

Ghost использует API языковых моделей и работает как прокси между вами и AI. Вы настраиваете API-ключ один раз, и дальше просто вызываете Ghost из командной строки когда нужна помощь.

➡️ Попробовать Ghost

Чтобы пилить свои надёжные приложения нужно знать архитектуру. Её можно подтянуть на нашем интенсиве по архитектуре. До конца октября действует скидка 40%!

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54👾1
🤓 Две команды вместо одной универсальной

Если вы всё ещё используете git checkout для всего подряд, есть две команды, которые сделают вашу работу проще и безопаснее.

Git Switch: для работы с ветками

git switch заменяет checkout в операциях с ветками.

Переключиться на существующую ветку:
git switch feature/api-refactoring


Создать новую ветку и сразу переключиться:
git switch -c feature/grpc-implementation


Команда делает только одно — работает с ветками. Меньше шансов случайно перезаписать файлы.

Git Restore: для работы с файлами

git restore заменяет checkout в операциях с файлами.

Откатить один файл к последнему коммиту:
git restore main.go


Откатить несколько файлов:
git restore config.yaml handler.go


Восстановить файл из конкретного коммита:
git restore --source HEAD~1 user_service.go


Явно показывает, что вы работаете с файлами, а не с ветками.

Типичный воркфлоу для разработчика:
# Создаем ветку для новой фичи
git switch -c feature/add-prometheus-metrics

# Работаем, что-то меняем в коде
# Упс, случайно поломали конфиг

# Откатываем конкретный файл
git restore config.yaml

# Проверяем статус
git status

# Коммитим нужные изменения
git add .
git commit -m "Add Prometheus metrics for HTTP handlers"
git push origin feature/add-prometheus-metrics


Случайно запустили go get не в той ветке и сломали зависимости:
# Откатываем go.mod и go.sum
git restore go.mod go.sum

# Возвращаем чистое состояние
go mod tidy


Особенно важно, когда работаете одновременно над несколькими микросервисами или модулями.

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2183
🎲 Мы не только учим, но и играем!

На экспресс-курсе «Математика для Data Science» — викторина с призом TG-Premium 🎁
Проверь знания, прокачай математику и забери приз.

‼️ Оплатишь до 19 октября — получишь базовый курс в подарок.

👉 Записаться на курс
👾1
👨‍💻 Когда любимый сервис недоступен

Сегодня ночью YouTube снова лёг. Видео не грузятся, страницы зависают, и все остались без привычной дозы подкастов на фоне.

Инфраструктура, на которую мы полагаемся каждый день, иногда даёт сбой. И каждый раз это напоминание: зависимость от одного источника — это риск.

💬 Что вы делаете в таких случаях? Включаете музыку? Запускаете другие сервисы? Или просто идёте спать, потому что это знак судьбы?

Можно, к примеру, пройти наш курс по алгоритмам со скидкой в 40%.

🐸 Библиотека Go-разработчика

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
🎓 Как вайб-кодинг меняет рынок IT-образования

Сегодня студенту достаточно сформулировать задачу голосом, чтобы получить результат быстрее, чем мы когда-то учились выводить первую строку на экран.

Почему за промпт-инжинирингом и работой с LLM уже выстраиваются очереди, а курсы в вузах и онлайн-школах переписывают свои программы? Разбираемся, как вайб-кодинг меняет философию обучения и рынок труда для разработчиков нового поколения.

➡️ В статье о том, что стоит за этим термином и как он меняет обучение IT-специалистов.

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15👍3🤔1🥱1
📐 Какую архитектуру выбрать для приложения

Нашли схемы популярных паттернов: от классического MVC до современного VIPER. Сравните потоки данных и решите, что подходит вашему проекту.

А чтобы потом построить такую архитектуру нужна база с нашего интенсива. До конца октября скидка 40%.

🐸 Библиотека Go-разработчика

#GoVisual
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2