Путь синего бобра
бобренокПуть представляет субъективный набор книг и ресурсов для полного обхвата Go


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

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

Итак, представленные на изображении книги, помогут обхватить базовые вещи, которые понадобиться для джуна(не включая какие либо бд и другие вещи).
Ну и на последок еще вот эту книгу для начала:


Ну а теперь разберем же книги, что же в них такое и с чем едят:
Head first Go
Описание: книга достаточно популяризованная и самое важное с картинками, в топах или рекомендациях, я ее конечно не нашел, но сам начал с нее, поэтому включил.
Донован, Керниган: Язык программирования Go:
Описание: книги конечно не могут быть как хорошее вино и многие из них устаревают по причине развития технологий, но на 2024 год эта книга еще поймала свою золотую середину и вы сможете подчерпнуть что то из внутренней составляющей Go, также ее можно прочитать сразу без head first, позже я расскажу о новом методе, который сам придумал.
100 ошибок GO
Описание: Тут можно сказать одно, учимся только не чужих ошибках, чтобы случайно не положить прод и сделать свой код более красивым и стабильным
Великая троица под номерами 4, 5, 6
Как бы сказал ДиКаприо в фильме Волк с Уолл-Стрит: вы думаете это законно ? Нихрена это не законно.
Это я к тому, что дженерики, тесты и тулзы для GO, я не изучил, но как истинный книжный знаток и на основе того, что я прочел об этих книгах, могу сказать, что они достойные внимания, да и не такие большие по объёму.
Mastering Go
Описание: Книга воистину завершит путь джуна, собрано прямо таки все что нужно для профи, джуна конечно же.
Junior +

И вот мы закончили с началом джуна пути, подумали все, but noup, этот путь
не завершен и перед синим самураем встала еще одна стена, которую нужно пройти.
Если вы думали, что после начала, от книг вас будет тошнить, поверьте мне, это только начало, но если мы не победим самого себя, как мы сможем покорить вершины, итак погнали:

Domain-Driven Design with Golang
Поймите концепцию предметно-ориентированного проектирования и создайте с нуля две системы DDD, которые могут быть представлены как часть вашего портфолио.
Go Cookbook: Expert Solutions for Commonly Needed Go Tasks
В этом практическом руководстве собраны рецепты, которые помогут разобраться с распространенными проблемами и выполнить полезные задачи при работе с Go. Каждый рецепт включает в себя решения, которые вы можете свободно использовать, а также обсуждение того, как и почему они работают.
Hands-On Data Structures and Algorithms with Go
- Повышение производительности приложения с помощью наиболее подходящей структуры данных и алгоритма
- Ознакомьтесь с широким спектром классических алгоритмов, таких как рекурсия и алгоритмы хеширования
- Работа с такими алгоритмами, как сборка мусора, для эффективного управления памятью
- Анализ соотношения затрат и выгод для определения алгоритмов и структур данных для решения проблем
- Изучение методов написания алгоритма псевдокода и кодирования на доске в интервью
- Выявляйте подводные камни при выборе структур данных и алгоритмов, прогнозируя их скорость и эффективность
Network Programming with Go
Сетевое программирование с помощью Go поможет вам использовать Go для написания безопасного, читаемого, готового к использованию сетевого кода. В первых главах вы познакомитесь с основами работы с сетью и маршрутизацией трафика. Затем вы примените эти знания на практике, когда книга поможет вам написать программы, которые взаимодействуют с помощью сокетов TCP, UDP и Unix для обеспечения надежной передачи данных.
Network Programming and Automation Essentials
С помощью курса «Основы сетевого программирования и автоматизации» вы вкратце изучите основы работы с сетями. Вы изучите экосистему сетевого программирования и автоматизации, узнаете о ведущих программируемых интерфейсах и познакомитесь с протоколами, инструментами, методами и технологиями, связанными с сетевым программированием. В этом подробном руководстве вы также освоите автоматизацию сети с помощью Python и Go с практическими занятиями и реальной эмуляцией сети.
К концу этой книги вы будете хорошо подготовлены к эффективному программированию и автоматизации сетей.
ДЖУН ВСЕ

Битва синего самурая и йокаев

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


Learn Concurrent Programming with Go
Параллелизм не должен сбивать с толку. Начните писать параллельный код, который повышает производительность, масштабируется для обработки больших объемов данных и использует все преимущества современного многопроцессорного оборудования.
Go for devops
Ключевые особенности
- Развивайте навыки создания инструментов командной строки для управления тысячами узлов
- Используйте Go для создания поставщиков Terraform и действий GitHub, а также расширения Kubernetes
- Получите знания для создания понятных, масштабируемых и безопасных рабочих процессов DevOps
С помощью Go for DevOps вы узнаете, как легко и безопасно предоставлять услуги, становясь при этом лучшим инженером DevOps.
Build an Orchestrator in Go (From Scratch)
Создание оркестратора в Go (с нуля) вы узнаете, как:
- Идентификация компонентов, составляющих любую систему оркестровки
- Планирование контейнеров на рабочих узлах
- Запуск и остановка контейнеров с помощью API Docker
- Управление кластером рабочих узлов с помощью простого API
- Работа с алгоритмами, впервые разработанными Боргом от Google
- Развейте мифы о системах оркестрации, таких как Kubernetes и Nomad
gRPC Microservices in Go
В gRPC Microservices in Go вы узнаете:
- Проектирование и реализация отказоустойчивой микросервисной архитектуры
- Тестирование микросервисов
- Развертывание микросервисов в облаке с помощью современных инструментов оркестрации
- Мониторинг и контроль микросервисов
Microservices with Go
С легкостью создавайте, масштабируйте и поддерживайте микросервисы в Golang.
- Ключевые особенностиСоздание и организация хорошо структурированных микросервисов Go
- Ознакомьтесь с лучшими отраслевыми практиками и получите представление об инструментах, шаблонах и решениях для разработки микросервисов Go
- Практические примеры Golang в каждой главе
Event-Driven Architecture in Golang
- Узнайте о преимуществах и недостатках событийно-управляемых архитектур на практических примерах и примерах использования
- Понимание синергии с источниками событий, CQRS и предметно-ориентированной разработкой в архитектуре программного обеспечения
- Создание комплексной надежной архитектуры приложения к концу книги
Описание книги:
Событийно-управляемая архитектура в Golang — это подход, используемый для разработки приложений, которые обмениваются изменениями состояния асинхронно, внутренне и внешне с помощью сообщений. Приложения САПР лучше подходят для работы в ситуациях, когда требуется быстрое масштабирование, а вероятность отказа отдельных компонентов с меньшей вероятностью приведет к сбою системы. Вот почему EDA — это отличная вещь для изучения, и эта книга предназначена для того, чтобы помочь вам начать с помощью пошаговых объяснений основных концепций, практических примеров и многого другого.
Вы начнете создавать управляемые событиями микросервисы, включая шаблоны для обработки согласованности и устойчивости данных. Вы узнаете не только о шаблонах, лежащих в основе управляемых событиями микросервисах, но и о том, как взаимодействовать с потоками событий с помощью асинхронного обмена сообщениями. Затем вы создадите приложение, состоящее из нескольких микросервисов, которое взаимодействует с помощью как хореографического, так и организованного обмена сообщениями.
К концу этой книги вы сможете создавать и развертывать собственные управляемые событиями микросервисы с помощью асинхронного взаимодействия.
Hands-On Software Architecture with Golang
Что вы узнаете
- Понимание архитектурных парадигм и глубокое погружение в микросервисы
- Разработка шаблонов параллелизма и параллелизма и изучение шаблонов объектно-ориентированного проектирования в Go
- Изучение системной архитектуры на основе API с введением в стандарты REST и GraphQL
- Создавайте архитектуры, управляемые событиями, и делайте свои архитектуры антихрупкими
- Постройте масштабируемость и узнайте, как перейти на Go с других языков
- Ознакомьтесь с рекомендациями по развертыванию с конвейером CICD, облачными развертываниями и т. д.
- Создание комплексной серверной части приложения для электронной коммерции (путешествий) в Go
Hands-On Software Engineering with Golang
Что вы узнаете
- Понимать различные этапы жизненного цикла разработки программного обеспечения и роль инженера-программиста
- Создавайте API-интерфейсы с помощью gRPC и используйте промежуточное ПО, предлагаемое экосистемой gRPC
- Узнайте о различных подходах к управлению зависимостями пакетов для ваших проектов
- Создайте комплексный проект с нуля и изучите различные стратегии его масштабирования
- Разработайте систему обработки графов и расширьте ее для работы в распределенном режиме
- Развертывайте сервисы Go в Kubernetes и отслеживайте их работоспособность с помощью Prometheus
The Software Developer's Guide to Linux
Обязательна к прочтению для разработчиков программного обеспечения, не обладающих навыками работы с командной строкой, специализирующихся на Linux. Он предоставляет передаваемые навыки работы с командной строкой для использования в Mac OS, Unix и Windows с WSL
- Ключевые особенностиПрактическое, серьезное руководство, специально написанное для разработчиков (не системных администраторов), которым необходимо быстро освоить навыки работы с командной строкой
- Расширьте свои практические навыки и почувствуйте себя волшебником в командной строке
- Получите практические навыки для эффективной работы с наиболее распространенными инструментами CLI в Unix-подобных системах
Итак, с книгами мы покончили, а теперь наш самурай должен наладить связи с ссылками:
Время ссылочного безумия:

Постарался найти все самое лучшее для этого языка
Итак для начала 2 платформы для изучения GO и их отличия{
- https://exercism.org/tracks - куча заданий, куча базы, как раз для отработки
- https://vectree.ru/path/38 - курс в котором идет от джуна до мидла, также есть мини проекты (маловато) и картиночки
}
Информация и гайды по интрументам DevOps {
https://coderlessons.com/tutorials/devops/uchitsia-git/git-tutorial - множество гайдов с инструментами
https://devsecopsguides.com/docs/rules/go/ - обучение devsecops
}
Базовые понятия {
- https://yourbasic.org/golang/
- https://tour.ardanlabs.com/tour/rus/list - Основы го на русском
- https://go.dev/doc/tutorial/create-module - создание модуля
}
Ошибки и их исправления {
- https://golang50shad.es/ - Рассказывается о распространённых ошибках (хорошее дополнение к книге 100 ошибок)
- https://100go.co/ - более обширное рассмотрение ошибок в GO
}
Паттерны программирования в GO {
- https://github.com/AlexanderGrom/go-patterns - перечислены все паттерны для го
- https://refactoring.guru/ru/design-patterns/go - рассказывается о рефакторинге, а также паттернах на GO (нужен впн)
- thewhitetulip/web-dev-golang-anti-textbook: Learn how to write webapps without a framework in Go. (github.com)
}
Введение в основные библиотеки {
}
Практика {
- https://codingchallenges.fyi/challenges/intro - челленджи
- https://encore.dev/docs/tutorials/uptime - создание мониторинга
- https://medium.com/the-godev-corner/how-to-create-publish-a-go-public-package-9034e6bfe4a9 - Пошаговое руководство по разработке и публикации Go-пакета
- https://youtu.be/gnchfOojMk4
- Home - Practical Go Lessons Book (practical-go-lessons.com) - книгу которую надо прочитать для понятия устройства ГО
- https://r2p.dev/b/2024-03-18-1brc-go/ - решение задачи One Billion Row Challenge (1BRC)
- Создание балансировщика нагрузки прикладного уровня с помощью Golang
- Создание DNS-преобразователя с помощью Golang
- https://github.com/bregman-arie/devops-exercises?tab=readme-ov-file - задания для практики по GO
- https://habr.com/ru/post/701488/ - Теория и практика разработки анонимного мессенджера на Go, построенного на ядре анонимной сети HLS (Hidden Lake Service).
- https://github.com/cblte/100-golang-exercises - челленджи
- https://habr.com/ru/post/674694/ - Имплементация простого WebSocket эхо-сервера на Go
- https://dev.to/signoz/implementing-distributed-tracing-in-a-golang-application-5cm1 - Руководство по реализации распределенной трассировки в Go-приложении с использованием OpenTelemetry и SigNoz
- https://habr.com/ru/company/ozontech/blog/668254/ - написания внешней Go-библиотеки, удобной для экспорта и импорта
- Машинное обучение GO теория практика
- https://0xdf.gitlab.io/2024/05/07/gftrace.html - Анализ Go-бинарей с использованием gftrace
- https://youtu.be/J2svN8h21oo - Реверс Go-бинарей с использованием Ghidra
- https://totallygamerjet.hashnode.dev/the-smallest-go-binary-5kb - Создание компилятора С на Го
- Building A Terminal User Interface With Golang - Earthly Blog - Создание TUI
- Создание шаблона аутентификации с нуля, используя Go, GoFiber и PostgreSQL {
- Реализация сервера с PostgreSQL (https://dev.to/mdfaizan7/create-a-server-with-postgresql-in-go-part-1-3-of-go-authentication-series-3127)
- Настройка маршрута SignUp (https://dev.to/mdfaizan7/creating-jwt-s-and-signup-route-part-2-3-of-go-authentication-series-5339)
- Реализация маршрута входа и частных маршрутов с обновлением токенов (https://dev.to/mdfaizan7/creating-login-and-private-routes-with-refreshing-tokens-part-3-3-of-go-authentication-series-2n0c)
}
}
Новости и подкасты {
- https://golangweekly.com/issues/latest - новости
- https://changelog.com/gotime/205#transcript - подкасты
}
Алгоритмы {
- https://github.com/TheAlgorithms/Go
- https://rtoch.com/posts/golang-segment-tree/ - Подробная реализация дерева отрезков (Segment Tree) на Go
- https://habr.com/ru/post/666904/ - R*-tree (подвид алгоритма R-tree) в Go: теория и детали реализации.
}
Горутины {
https://proglib.io/w/94177b59 - Разбираем внутренности горутин и каналов в Go
}
Дженерики {
- Туториал по дженерикам в Go | Ковардин (kovardin.ru) - введение в дженерики
- https://go.dev/blog/when-generics - когда использовать
- Go by Example информация о дженериках
}
Тестирование {
Дополнение к книге 100 ошибок Го от создателя(
https://teivah.medium.com/concurrency-isnt-always-faster-in-go-de325168907c - Автор 100 Go Mistakes делится фундаментальными знаниями о конкурентности в Go и показывает пример, где к производительности конкурентного решения «есть вопросы».
)
- Установка Go | Изучение Go через тестирование (gitbook.io)
- https://proglib.io/w/40f22786
- https://golangci-lint.run/ - либа для тестов
- https://www.youtube.com/watch?v=v24wrd3RwGo&list=PL2ntRZ1ySWBfiSJSt-zPRbVSMDfK0EwQC - От синтаксического анализа и сборки мусора до WebAssembly и фаззинг-тестирования: эти и другие доклады на GopherCon 2022
- https://blog.jetbrains.com/go/2022/11/22/comprehensive-guide-to-testing-in-go/ - полное руководство по тестированию
- https://habr.com/ru/company/kaspersky/blog/696724/ - про фаззинг
- https://teivah.medium.com/how-to-write-accurate-benchmarks-in-go-4266d7dd1a95 - Разбор четырех распространенных ловушек, которые ведут к неточностям тестирования в Go
- https://habr.com/ru/company/ozontech/blog/672678/ - Create Your Tests Easily: анонс open source библиотеки от Ozon Tech в BDD-стиле, которая облегчает тяготы создания автотестов.
}
Перевод языка в ассемблер {
}
Организация кода {
- https://egonelbre.com/thoughts-on-code-organization/ - 12 правил организации кода
- https://12factor.net/ - Еще одна версия 12 правил
- Organizing a Go module - The Go Programming Language - организация кода для модуля
- https://habr.com/ru/company/indriver/blog/690088/ - структурировании Go-проекта
- https://go.dev/doc/modules/layout - организация проекта
}
Cheatsheet {
}
Архитектуры {
- https://github.com/thangchung/go-coffeeshop - Пример приложения для кофейни на Go. Архитектура
}
Внутреннее строение {
- https://sumercip.com/posts/inside-the-go-cpu-profiler/ - Go CPU profiler под капотом
- https://go.dev/doc/gc-guide - документации новое руководство по сборщику мусора Go
- https://youtu.be/P_SXTUiA-9Y - Как на самом деле устроен тип Map в Go
- https://habr.com/ru/companies/vk/articles/776766/ - Как устроена память в Go: от теории к практике
- https://proglib.io/w/7a66a3fb - внутренностях реализации замыканий в Go
- https://www.youtube.com/watch?v=P2Tzdg8n9hw&t=0s - Видеогайд про внутреннее устройство планировщика Go от Владимира Балуна
- https://youtu.be/gnchfOojMk4 - Наглядное объяснение механизмов работы RPC и gRPC
}
Работа с файлами {
- https://developer20.com/json/ - Практическое руководство по работе с JSON в Go
- https://thedevelopercafe.com/articles/serving-static-files-in-go-f4acf2b4cfe5 - Обработка статических файлов с помощью встроенных функций Go: http.Dir и http.FileServer
}
Для кодинга {
- https://bitfieldconsulting.com/golang/vs-code-go - Обзор полезных возможностей VS Code для Go-разработчика
- https://habr.com/ru/post/678298/ - Настройка Neovim для разработки на Go с использованием плагинов Lua и
}
Логировние{
- https://betterstack.com/community/guides/logging/zerolog/ - Полный гайд по логированию в Go с использованием Zerolog: как установить, настроить и использовать Zerolog logger в Go-приложении.
- https://www.bytesizego.com/blog/guide-to-logging-in-go - Логирование в Go: от основ до профи
}
Сети {
- https://dev.to/kevwan/sending-type-safe-http-requests-with-go-5h2l - Краткие заметки по использованию пакета httpc из go-zero для отправки типобезопасных HTTP-запросов
}
Go и HashiCorp {
- https://www.twilio.com/blog/manage-go-application-secrets-using-vault - Руководство по управлению секретами в Go-приложений с использованием
}
БД {
- https://www.alexedwards.net/blog/organising-database-access - Разбор четырех различных методов организации доступа к базе данных на Go.
- https://thedevelopercafe.com/articles/database-migrations-in-go-using-migrate-package-5735cf056231 - Базовое руководство по использованию пакета migrate для миграции базы данных на Go
- https://betterprogramming.pub/database-migrations-f3a227e29f5f - Отслеживание изменений схемы базы данных с помощью Go: советы и простые практические приемы
}
Пакеты {
- https://threedots.tech/post/list-of-recommended-libraries/ - HTTP, базы данных, разработка CLI, тестирование, observability, конфигурация и многое другое: быстрый обзор 22-х Go-библиотек, проверенных в боевых условиях
- https://thedevelopercafe.com/articles/payload-validation-in-go-with-validator-626594a58cf6 - Базовое руководство по работе с пакетом Validator, который реализует проверку значений для структур и отдельных полей на основе тегов.
- https://habr.com/ru/post/667164/ - Анонс библиотеки потоковой обработки данных goio, вдохновлённой Scala-библиотеками cats-effect и fs2.
- https://github.com/goyek/goyek/releases/tag/v2.1.0 - библиотека для автоматизации задач
- Серия статей о работе со временем в Go {
— Parse timestamp formats (https://dev.to/aohorodnyk/parse-timestamp-on-backend-m0h)
— Parse time from different non timestamp formats (https://dev.to/aohorodnyk/parse-time-from-different-non-timestamp-formats-4kb9)
— Universal time UnmarshalJSON implementation (https://dev.to/aohorodnyk/universal-time-unmarshaljson-implementation-3okm)
}
}
Конкурентность {
- https://sayedalesawy.hashnode.dev/concurrency-race-conditions-and-concurrency-control - что такое конкурентность (можно читать перед книгой о конкурентности)
- https://dev.to/karanpratapsingh/advanced-concurrency-patterns-in-go-2je1 - Шаблоны конкурентности
}
API {
- https://blog.devgenius.io/golang-apis-a-skeleton-for-your-future-projects-a082dc4d6818 - Серия статей о построении скелетона для API на Go
}
Оптимизация {
https://sourcegraph.com/blog/slow-to-simd - Оптимизация производительности в Go на практике
}
Шпора {



}
После всего что тут, вы станете рубить врага лишь взглядом, всем удачного времени без напряжения!