Golang-разработчик онлайн-практикум [Rebrain] [Fevlake] [Дмитрий Гордеев, Николай Наумченко, Евгений Коняхин]

Bot

Администратор
Команда форума
23 Янв 2020
201,202
3,138
113
image_2020-12-01_234930.png

Golang - это:

1. 12 место по популярности в мире средиязыков программирования
*по данным рейтинга TIOBE

2. 200 000 р.- Средняя зарплата Golang-разработчика

3. 1800 вакансий на территории РФ
*данные взяты с сайта hh.ru

Кому подойдет практикум:

- Разработчики
- Специалисты по тестированию
- Системные архитекторы и аналитики
- DevOps-инженеры

Практикум Golang by REBRAIN:

- 90% практики, 70+ рабочих задач
- Быстрая проверка заданий.
- Максимальное время проверки - 24 часа
- Эффективность. Вы своими руками сделаете задания, актуальные для разработчика на Go
- Выполняете реальные кейсы разработчика на Go
- Чат с составителями практикума и действующими разработчиками
- Смотрите видеоматериалы в удобное для вас время
- Практикуйтесь в удобное для вас время
- Быстрая проверка заданий
- Живые мастер-классы от действующих разработчиков
- Личная проверка заданий экспертами. Высылаем подробные объяснения к каждому заданию

Спойлер: Пример задания (легкий)
1. Установите Go и настройте рабочее пространство.
2. Ознакомьтесь со стилем написания кода на Go (code style) и утилитой для форматирования gofmt.

3. Создайте файл main.go и напишите код, который выводит приветствие и текущие дату и время в виде строки ДД.ММ.ГГГГ ЧЧ:ММ.

  • Для вывода строки нужно воспользоваться стандартным пакетом fmt.
  • Для получения даты и форматирования потребуется функция из стандартного пакета time.

4. Подробно концепция пакетов и работа с ними будут рассмотрены позже. На данном этапе следует ознакомиться с функциональностью указанных пакетов.
5. Скомпилируйте ваш код и запустите полученный бинарный файл. В качестве ответа пришлите исходный код программы.


Спойлер: Пример задания (средний)
1. Создайте в своем проекте module04 из ветки module04_01 - ветку module04_02.
2. Предположим, что теперь нам необходимо не позволить внешнему коду предоставлять нам реализацию свойства CalcDiscount, а жестко задать реализацию в привязке к структуре Customer, для этого сделайте CalcDiscount методом, а не свойством структуры Customer:

  • Логику оставить, как была в функции CalcDiscount.
  • Константу DEFAULT_DISCOUNT перенести в пакет internal.
  • Свойство Discount сделать нередактируемым вне пакета internal.

3. В ответе пришлите ссылку на МР ветки module04_02 с нужными правками в ветку master своего проекта.

Спойлер: Программа обучения
Основы языка
  • Переменные, типы данных
  • Указатели в Go
  • Слайсы
  • Map’ы в Go
  • Конструкции языка и функции
  • Defer - обработка выхода из функции
  • Panic и их обработка
  • Обработка ошибок
Модули и пакеты
  • Области видимости, инициализация через init
  • Работа с зависимостями, go mod
  • Версионирование пакетов
  • LayOut проекта
Структуры и интерфейсы
  • Структуры в Go
  • Методы структур
  • Интерфейсы и утиная типизация
  • Пустой интерфейс
  • Композитное наследование
Асинхронность
  • Goroutines
  • Goshedule, переменная окружения GOMAXPROCS
  • Race condition
  • Атомарность операций и пакет sync
  • Взаимодействие через каналы
  • Мультиплексирование каналов
  • Пакет context и канал отмены
  • sync.Waitgroup
Тестирование, бенчмарки и профилирование
  • Unit-тестирование в Go
  • Table driven test vs closure driven tests
  • Test coverage
  • Benchmarks
  • Профилирование с pprof
Кодогерация
  • Рефлексия
  • AST + Templates
  • Решение проблем рефлексии
  • Враппинг
Работа с БД
  • Конфигурирование соединений (max_connections, maxIdle и т.д.)
  • Нативные средства psql - переопределение пакета через init
  • Работа с базой на примере использования GORM
Сервер на Go (обработка запросов, context, middleware)
  • Поднимаем сервер, роутинг, первый handler
  • Работа с параметрами
  • Роутер Gorilla
  • Роутер Chi
  • Middleware
  • Контекст запроса
Низкоуровневость + продвинутая сборка
  • go proxy, go mod
  • Сборка с использованием Idflags -X
  • Сборка с использованием тегов go build –tags. Создание билда с разной конфигурацией
  • Запуск с использованием аргументов
  • Сборка для разных ОС
  • Пакет unsafe
  • Cgo
Микросервисная архитектура
  • Заворачиваем наш сервис в образ
  • Поднимаем контейнер из образа
  • Подтягиваем конфигурации из key-value store
Межсервисное взаимодействие
  • Синхронное взаимодействие через REST
  • gRPC и brotobuf
  • Генерация gRPC-сервера
  • Генерация gRPC-клиента
  • Interceptors
  • Асинхронное взаимодействие (самописный брокер или kafka)
  • Пишем sub-сервис
  • Пишем pub-сервис
Оптимизация
  • in-memory хранение
  • Redis
  • Самописный LRU cache
Работа сервиса в кластере
  • Уровни логирования
  • Формат логов
  • Пишем логи (Greylog/ELK)
  • Сквозное логирование
  • Метрики (Prometheus + Graphana)
  • Graceful обработка сигналов
  • Healthcheck

Продажник: rebrainme.com/golang/