Мы используем cookie для стабильной работы сервиса. Подробнее

Программа: Go-разработчик [ Go + SQL + Git + Linux ]

ФорматОнлайн
Объём61 занятий
О курсе

Подробнее

Программа создана для тех, кто хочет получить глубокую инженерную базу и понимать, как код работает "под капотом". Мы объединили глубокое погружение в Go с изучением фундаментального стека бэкендера: SQL, Linux, Git и Docker. Это те навыки, которые готовят к реальным задачам на производстве и прохождению технических интервью.   Наша цель - сформировать у вас навык создания надежных бэкенд-систем и инженерного мышления. Вы перестанете писать код "вслепую" и научитесь создавать высоконагруженные бэкенд-системы, понимая каждое свое принятое архитектурное решение.   Почему этот курс? Детально разбор даже самых сложных тем. 5 полноценных курсов в одном пакете: Go, SQL, Git и Linux с Docker. Покупать их вместе гораздо выгоднее, чем собирать стек по отдельности. Больше 100 часов видео, тысячи тестов и задач. Материал разработан Павлом Тарасовым и командой Pragmatic Programmer. Авторы являются номинантами и призерами престижной премии Stepik Awards. Вы получаете доступ в закрытые Telegram-чаты, где авторы и сокурсники помогают разбирать сложные кейсы и баги.   Что предстоит? Программа выстроена последовательно, начиная с самых базовых и простейших тем, заканчивая созданием многопоточных приложений, оптимизации запросов к базам данных, разработке CLI-утилит, HTTP-серверов и клиентов, упаковкой сервисов в Docker и автоматизации рутины с помощью Bash-скриптов.
Требования

Что нужно для старта

  • Что необходимо на старте:
  • Базовая компьютерная грамотность (умение устанавливать софт, работать с файловой системой и браузером).
  • Готовность много практиковаться и спокойно относиться к ошибкам в коде, это часть обучения.
  • Что не обязательно, но облегчит прохождение:
  • Минимальный опыт в программировании на любом языке.
  • Технические требования к технике:
  • Компьютер или ноутбук (Windows, macOS или Linux) с доступом в интернет.
  • Минимум 4 ГБ оперативной памяти (комфортнее работать с 8 ГБ и более).
  • Все используемое в курсе ПО бесплатно и будет установлено по ходу уроков.
  • Если коротко: никаких специальных предварительных знаний не требуется. Курс начинается с самого нуля, нужно только желание учиться, терпение и готовность разбираться. Остальному мы научим!
Результат

Что вы получите

  • Писать код на Go - работать с типами, ошибками, структурами и интерфейсами, используя новейшие конструкции языка.
  • Разрабатывать HTTP-серверы и клиенты, создавать CLI-приложения, работать с JSON и файловыми системами.
  • Анализировать внутреннее устройство слайсов, мап (Swiss Tables) и интерфейсов, оценивать стоимость аллокаций и оптимизировать работу с памятью.
  • Применять паттерны асинхронности, избегать гонок данных (race conditions) и утечек горутин.
  • Строить эффективные SQL-запросы, использовать JOIN, подзапросы, оконные функции, подзапросы и анализировать планы выполнения.
  • Проектировать схему БД и применять транзакции, представления, хранимые процедуры и триггеры.
  • Управлять инфраструктурой в Linux, научитесь работать в терминале, настраивать права доступа, писать Bash-скрипты, использовать SSH и cron.
  • Контейнеризировать приложения - создавать оптимизированные Docker-образы, писать Dockerfile и оркестрировать сервисы через Docker Compose.
  • Организовывать разработку в Git, вести ветки, разрешать конфликты слияния, оформлять Pull Requests и работать с GitHub.
Аудитория

Для кого этот курс

  • Новички в программировании. Если вы выбрали Go в качестве первого языка, этот курс будет идеальным выбором. Вы пройдете все, начиная с базовых вещей до сложных процессов без пробелов в знаниях.
  • Разработчикам на Python, Java, PHP или C# и тех, кто хочет перейти на Go - вы быстро освоите специфику языка и научитесь работать, здесь собраны лучшие практики.
  • Junior Go-разработчикам курс поможет систематизировать знания, закрыть пробелы в понимании конкурентности, рантайма и работы с памятью.
  • Для студентов IT-специальностей данный курс - отличный способ дополнить академическую теорию нужными практическими навыками, актуальными для современного рынка.
  • Тем кто готовится к собеседованиям курс будет выглядеть как идеальный интенсив, для подготовки к каверзным вопросам, где будут разобраны все вопросы, в деталях.
Содержание

Программа курса

61 занятие
ТемаЧто внутри
01Go [1.1] Введение

- О курсе
- Что нужно сделать
- Про Golang
- Установка Golang
- Установка редактора кода
- Первая программа
- Запуск и компиляция
- Отладка

02Go [1.2] Базовые типы

- Переменные
- Названия переменных
- Типы
- Тип int
- Переполнение и приведение типов int
- Типы byte и rune
- Выбор int
- Система счисления
- iota
- Случайное целое число
- Тип float
- Случайное дробное число
- Тип complex
- Пакет math
- Тип bool
- Тип string
- Пакет strings
- Приведение в строку
- Приведение строки в число
- Пакет fmt
- Спецификаторы f-функций
- Тип rune
- Указатели
- nil и new
- Ввод данных от пользователя
- Тип any или interface{}
- Другие типы

03Go [1.3] Операторы

- Операторы и операнды
- Математические операторы
- Операторы присваивания
- Конкатенация
- Сравнение
- Логические операторы
- Логические "И", "ИЛИ"
- Побитовые операторы
- Пример побитовых операторов

04Go [1.4] Ветвления

- Логические конструкции if-else
- Логическое if с присвоением значения
- Конструкция switch
- Область видимости
- Практика - Определение времени суток
- Практика - Калькулятор ИМТ
- Практика - Поиск по названию товара

05Go [1.5] Функции

- Создание функций
- Параметры
- Возвращение значений
- Именованный return
- Применение return
- Вариативный параметр
- Указатели и функции
- defer
- Нюансы defer
- Стек вызовов - callstack
- Паника!!!
- Ошибки
- Оборачивание ошибок
- Замыкания
- Пользовательские типы
- Инициализация с init
- Рекурсия
- Практикуемся с рекурсией - факториал
- Стиль функций
- Одна функция - одна задача
- if, else и return
- Затенение переменных
- Имена функций
- Практика - Система оценок
- Практика - Декораторы

06Go [1.6] Пакеты

- Пакеты в golang
- Внешние пакеты и их подключение
- Советы по пакетам

07Go [1.7] Циклы

- Цикл for
- Итерация по строкам
- break, continue и return
- Вложенные циклы и лейблы
- Практика - Игра "Угадай число"
- Практика - Анализ текста

08Go [1.8] Массивы

- Создание массивов
- Доступ к значениям массивов
- Итерация по массиву
- Массивы и функции
- Сравнение массивов
- Практика - Секретный код

09Go [1.9] Слайсы

- Создание слайсов
- Итерация по слайсу
- Просто про добавление значений - append()
- Вариативные параметры функции
- Пустой слайс - nil
- Вложенные массивы и слайсы
- Копирование - copy
- Подслайсы
- Указатель на элемент
- Вставка значений - append()
- Удаление значений
- Нюансы работы со слайсами
- Сортировка
- Пакет slices
- Практика - шифр Цезаря
- Практика - Отслайси его!

10Go [1.10] Структура map

- Создание map
- Итерация по map
- Изменение map во время итерации
- Ключи
- Значения
- Скорость работы
- Пример использования map
- Сравнение map
- Копирование и клонирование
- Удаление значений с maps.DeleteFunc()
- Практика - рекомендации фильмов
- Практика - анализ друзей

11Go [1.11] Структуры

- Проблема хранения данных
- Структуры
- Вложенные структуры
- Передача по значению
- Методы
- Изменение структуры в методах
- Экспортируемость полей и методов
- Функция-конструктор
- Теги
- Композиция
- Встраивание
- Композиция vs встраивание
- Пустая структура
- Практика - система управления тегами
- Практика - система управления проектами

12Go [1.12] Интерфейсы

- Создание интерфейсов
- Пример использования
- Тип any или пустой интерфейс
- nil
- Вызов метода у nil
- Пользовательские типы
- Пример использования пользовательских типов
- Сложнее пример с интерфейсами
- Встраивание интерфейсов
- Практика - Симуляция жизни в деревне

13Go [1.13] Ошибки

- Вспоминаем про ошибки
- Оборачивание ошибок
- Пользовательские ошибки
- Функции errors.Is() и errors.As()
- Как устроены errors.Is() и errors.As()
- Оборачивание пользовательских ошибок
- Другой подход к работе с ошибками
- Советы по работе с ошибками
- Практика - Обработка ошибок платежа

14Git [1] Основы Git

- Знакомство
- О курсе
- Обзор систем контроля версий
- Установка и настройка Git
- Первый репозиторий
- Первый коммит
- Индекс
- Подробнее о коммита
- Откат изменений
- Удаление файлов
- Переименование/перемещение файлов
- Просмотр изменений
- История коммитов
- Машина времени (изменение истории)
- Игнорирование файлов
- Домашнее задание

15Git [2] GitHub

- Создание удаленного репозитория
- Клонирование репозитория
- SSH аутентификация
- Копирование чужого репозитория (fork)
- GitHub Copilot
- Файл Readme.md и разметка Markdown
- Альтернативы GitHub
- Домашнее задание

16Git [3] Ветвление и командная работа

- Введение в ветки
- Переключение между ветками
- Создание, просмотр, удаление веток
- Слияние веток
- Конфликты при слиянии
- Экстренное переключение между задачами
- Безопасное обновление репозитория
- Поиск автора кода
- Запросы на слияние (Pull Request)
- Большая шпаргалка

17Linux [1] Вступление

- О курсе
- Установка Linux Ubuntu как виртуальной машины
- Разворачивание Linux "в облаках"
- Настройка SSH-сервера
- Резюме модуля `Введение`. Контрольные вопросы

18Linux [2] Знакомство с терминалом

- Трюки и лайфхаки в терминале
- Список горячих клавиш в терминале Linux
- Основные команды для навигации по папкам
- Создание файлов и папок
- Основные операции с файлами
- Просмотр файлов
- Резюме модуля. Контрольные вопросы

19Linux [3] Редактирование файлов

- Nano. Дружественный к пользователю текстовый редактор
- Vim. Редактор по умолчанию
- Vimtutor. Обучалка по редактору Vim.
- Резюме модуля. Контрольные вопросы.

20Linux [4] Промежуточные итоги

- Шпаргалка по редактору Nano
- Шпаргалка по горячим клавишам Vim
- Тест по пройденному материалу
- Домашнее задание

21Linux [5] Файловая структура

- Поиск файлов, команда find
- Важные директории, утилиты, архивирование
- Резюме модуля. Контрольные вопросы

22Linux [6] Управление пользователями и группами

- Вывод информации о пользователях
- Создание пользователей
- Изменение пользователей
- Права root, удаление пользователей
- Управление группами
- Резюме модуля. Контрольные вопросы
- Домашнее задание

23Linux [7] Права доступа (rwx)

- Вывод информации + команда chmod
- Смена владельцев и групп
- Специальные биты, права по умолчанию
- Резюме модуля. Контрольные вопросы
- Домашнее задание

24Linux [8] Важные инструменты терминала Linux

- Ссылки, iNodes
- Потоки ввода-вывода
- Конвейер обработки команд
- Резюме модуля. Контрольные вопросы
- Домашнее задание

25Linux [9] Инструменты для мониторинга

- Утилита top (диспетчер задач)
- Утилиты htop, ps, kill, systemctl
- Резюме модуля. Контрольные вопросы

26Linux [10] Управление программным обеспечением

- Утилита apt / apt-get
- Утилиты dpkg, snap
- Добавление репозитория
- Резюме модуля. Контрольные вопросы

27Linux [11] Планировщик задач

- Служба cron, утилита crontab
- Настройка логов, задачи других пользователей
- Резюме модуля. Контрольные вопросы

28Linux [12] Работа с фаерволом (утилита iptables)

- Просмотр, добавление, удаление правил
- Политики по умолчанию, сохранение правил
- Резюме модуля. Контрольные вопросы

29Linux [13] Bash

- История создания, запуск скриптов, оболочка
- Синтаксис Bash: условия, ветвления
- Синтаксис Bash: циклы, функции
- Резюме модуля. Контрольные вопросы

30Linux [14] Работа с дисками

- Чтение информации
- Монтирование диска
- Общее файловое хранилище
- Дополнительные диски "в облаках"
- LVM (logical volume management)
- Домашнее задание

31Linux [15] Docker

- Дисклеймер
- Введение, установка
- Список команд, первый контейнер
- Контейнер с документацией
- Веб-сервер Nginx в Docker
- Dockerfile
- Docker Compose
- Удаление ресурсов
- Домашнее задание

32Go [2.1] Слайсы

- Введение
- Структура слайса
- Как работает append()
- Нюансы append()
- Подслайсы
- Неожиданные мутации

33Go [2.2] Big O

- Сложность операций: Big O
- Как данные хранятся в памяти?
- Практика: Угадай сложность

34Go [2.3] Хеш-таблица

- Проблема поиска
- Придумываем хеш-таблицу
- Коллизии
- Создаем свою хеш-таблицу
- Заключение

35Go [2.4] Map

- Введение
- Идея swiss tables
- hash
- Каталог и расширяемое хеширование
- Таблицы (Swiss tables)
- Группы
- Поиск элемента и пробирование
- CRUD в map
- Нюансы map
- Заключение

36Go [2.5] Интерфейсы

- Устройство интерфейсов
- Таблицы методов (itab)
- Интерфейсы, nil и производительность
- Использование интерфейсов

37Go [2.6] Время - time

- Основы времени
- Арифметика времени
- Форматирование и парсинг времени
- Временные зоны
- Monotonic и Wall Time
- Таймеры и задержки
- DST, високосные секунды и другие подводные камни

38Go [2.7] Работа с файловой системой

- Введение в работу с файлами
- Ручное управление файлом
- Операции с *os.File
- Пример: чтение конфигурации
- Работа с большими файлами
- bufio
- Реализуем логику head
- Пути и работа с директориями
- Directory (Path) Traversal
- Рекурсивный обход файловой системы
- Права доступа, метаданные и временные файлы
- Атомарная запись
- Практика: реализуем tail
- Стандартные операции над файлами

39Go [2.8] JSON

- Что такое JSON
- Основы JSON
- omitempty и omitzero
- MarshalJSON и UnmarshalJSON
- Вложенные структуры, слайсы, мапы
- Динамический JSON
- Валидация в UnmarshalJSON
- Streaming и работа с большими данными
- Циклические ссылки
- encoding/json/v2
- stepik

40Go [2.9] Конкурентность

- Горутины и GMP
- Как устроен GMP
- Горутины
- Каналы
- Нюансы каналов
- Практика с каналами
- select
- Таймеры и таймауты

41Go [2.10] Контекст

- Введение в контекст
- Отмена контекста
- Передача контекста вниз по стеку
- Причина - context.Cause
- Пример: длинные вычисления с проверкой контекста

42Go [2.11] Сигналы

- Работа с сигналами
- Graceful shutdown

43Go [2.12] Пакет sync

- Введение в пакет sync
- sync.Mutex
- sync.RWMutex
- sync.WaitGroup
- sync.Once
- sync.Cond
- sync.Map
- sync.Pool
- errgroup
- Что выбрать?

44Go [2.13] Пакет atomic

- Атомарные операции
- Пример: Флаг отмены для воркеров
- Атомарное обновление структуры - atomic.Pointer
- Когда нельзя использовать атомарные операции
- Заключение

45Go [2.14] Паттерны конкурентности

- Graceful shutdown
- Pipeline
- Worker Pool
- Fan-Out/Fan-In
- Resource Pool
- Circuit Breaker
- Rate Limiting
- Pub/Sub
- Prioritized Select

46Go [2.15] Задачи по конкурентности

- Семафор
- Идемпотентный закрыватель каналов
- Паттерны And и Or
- Неблокирующая передача данных
- Window Buffer
- Паттерн Мост (Bridge)
- Динамический Fan-In
- Паттерн First-Of
- Singleflight
- Собственный errgroup
- Паттерн Барьер
- Мини-оркестратор с откатом
- Worker Pool с динамическим масштабированием
- Диспетчер нетраннера

47Go [2.16] CLI

- Введение в CLI-приложения
- Цветной вывод и индикаторы прогресса
- Стандартный пакет flag
- Пакет pflag
- Библиотека urfave/cli
- Библиотека Cobra и Viper
- Интерактивные режимы (REPL)

48Go [2.17] Теория HTTP

- Введение в HTTP как протокол
- Уровни сетевого взаимодействия: OSI
- Эволюция HTTP
- Stateless-природа HTTP

49Go [2.18] HTTP-сервер

- Основы HTTP-сервера
- Регистрация обработчиков
- Запуск сервера
- Заполнение обработчиков
- Добавляем log/slog
- Роутер
- Роутинг в http.ServeMux
- Убираем глобальный логгер
- Middleware
- Context и цепочки middleware
- Настройка HTTP-сервера
- Чтение данных из HTTP-запроса
- Раздача статических файлов
- Загрузка файлов
- Множественная загрузка файлов
- Заключение

50Go [2.19] HTTP-клиент

- Простые запросы HTTP
- http.Client
- http.Transport
- Диагностика сетевых ошибок
- http.Request

51SQL [1] Установка рабочего окружения.

- О курсе
- Установка MySQL сервера
- Работа в терминале
- Графические IDE (Workbench, DBeaver)
- Взаимодействие с сервером
- Контрольные вопросы
- Решаем задачи. Пишем SQL код

52SQL [2] Проектирование БД (команды DDL)

- Первичные ключи
- Особенности типов данных и именование объектов
- Руководство по стилю SQL · SQL Style Guide
- Индексы
- Внешние ключи
- Подробнее про ALTER TABLE
- Особенности синтаксиса MySQL
- Виды связей между таблицами (1х1, 1хМ, МхМ)
- Таблицы-справочники
- ER-диаграмма
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

53SQL [3] Работа с данными (команды DML, CRUD)

- Команда INSERT
- Команда SELECT
- Команда UPDATE
- Команда DELETE
- Бонус: Сервисы для генерации данных
- Импорт-экспорт данных
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

54SQL [4] Основы SELECT запросов

- Фильтрация (WHERE + LIKE)
- Сортировка (ORDER BY)
- Агрегирующие функции (COUNT, MIN, MAX, AVG, SUM)
- Группировка (GROUP BY)
- Фильтрация (HAVING)
- Отсутствие значения (NULL)
- Пейджинг (LIMIT + OFFSET)
- Условия, ветвления (IF, CASE)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

55SQL [5] Сложные SELECT запросы

- Вложенные запросы (подзапросы)
- Объединения (JOIN) - Теория
- Объединения (CROSS JOIN, INNER JOIN)
- Объединения (LEFT JOIN, RIGHT JOIN)
- Объединения (FULL OUTER JOIN)
- Вложенные запросы VS объединения
- Соединения (UNION)
- Оконные функции
- Общие табличные выражения (CTE)
- Рекурсивные табличные выражения
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Решаем задачи. Пишем SQL код. Часть 3
- Решаем задачи. Пишем SQL код. Часть 4

56SQL [6] Продвинутые фичи SQL

- Полнотекстовый поиск
- Представления (View)
- Хранимые процедуры
- Пользовательские функции
- Переменные
- Триггеры
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

57SQL [7] Транзакции

- Введение в транзакции
- Обработка исключений (ошибок)
- Уровни изоляции транзакций
- Блокировки таблиц
- Взаимная блокировка (deadlock)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код

58SQL [8] Права доступа

- Пользователи
- Роли
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код

59SQL [9] Вопросы оптимизации

- Лишний JOIN
- Денормализация
- Настройки сервера
- Анализ запросов (EXPLAIN)
- Графический план исполнения запроса
- Исправление проблемных мест
- Графический план: показательные примеры
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

60SQL [10] Дополнительные темы

- Работа с логами
- Циклы
- Курсоры
- SQL инъекции
- Контрольные вопросы
- Решаем задачи. Пишем SQL код

61Завершение учебной программы

- Подведение итогов

01Go [1.1] Введение

- О курсе
- Что нужно сделать
- Про Golang
- Установка Golang
- Установка редактора кода
- Первая программа
- Запуск и компиляция
- Отладка

02Go [1.2] Базовые типы

- Переменные
- Названия переменных
- Типы
- Тип int
- Переполнение и приведение типов int
- Типы byte и rune
- Выбор int
- Система счисления
- iota
- Случайное целое число
- Тип float
- Случайное дробное число
- Тип complex
- Пакет math
- Тип bool
- Тип string
- Пакет strings
- Приведение в строку
- Приведение строки в число
- Пакет fmt
- Спецификаторы f-функций
- Тип rune
- Указатели
- nil и new
- Ввод данных от пользователя
- Тип any или interface{}
- Другие типы

03Go [1.3] Операторы

- Операторы и операнды
- Математические операторы
- Операторы присваивания
- Конкатенация
- Сравнение
- Логические операторы
- Логические "И", "ИЛИ"
- Побитовые операторы
- Пример побитовых операторов

04Go [1.4] Ветвления

- Логические конструкции if-else
- Логическое if с присвоением значения
- Конструкция switch
- Область видимости
- Практика - Определение времени суток
- Практика - Калькулятор ИМТ
- Практика - Поиск по названию товара

05Go [1.5] Функции

- Создание функций
- Параметры
- Возвращение значений
- Именованный return
- Применение return
- Вариативный параметр
- Указатели и функции
- defer
- Нюансы defer
- Стек вызовов - callstack
- Паника!!!
- Ошибки
- Оборачивание ошибок
- Замыкания
- Пользовательские типы
- Инициализация с init
- Рекурсия
- Практикуемся с рекурсией - факториал
- Стиль функций
- Одна функция - одна задача
- if, else и return
- Затенение переменных
- Имена функций
- Практика - Система оценок
- Практика - Декораторы

06Go [1.6] Пакеты

- Пакеты в golang
- Внешние пакеты и их подключение
- Советы по пакетам

07Go [1.7] Циклы

- Цикл for
- Итерация по строкам
- break, continue и return
- Вложенные циклы и лейблы
- Практика - Игра "Угадай число"
- Практика - Анализ текста

08Go [1.8] Массивы

- Создание массивов
- Доступ к значениям массивов
- Итерация по массиву
- Массивы и функции
- Сравнение массивов
- Практика - Секретный код

09Go [1.9] Слайсы

- Создание слайсов
- Итерация по слайсу
- Просто про добавление значений - append()
- Вариативные параметры функции
- Пустой слайс - nil
- Вложенные массивы и слайсы
- Копирование - copy
- Подслайсы
- Указатель на элемент
- Вставка значений - append()
- Удаление значений
- Нюансы работы со слайсами
- Сортировка
- Пакет slices
- Практика - шифр Цезаря
- Практика - Отслайси его!

10Go [1.10] Структура map

- Создание map
- Итерация по map
- Изменение map во время итерации
- Ключи
- Значения
- Скорость работы
- Пример использования map
- Сравнение map
- Копирование и клонирование
- Удаление значений с maps.DeleteFunc()
- Практика - рекомендации фильмов
- Практика - анализ друзей

11Go [1.11] Структуры

- Проблема хранения данных
- Структуры
- Вложенные структуры
- Передача по значению
- Методы
- Изменение структуры в методах
- Экспортируемость полей и методов
- Функция-конструктор
- Теги
- Композиция
- Встраивание
- Композиция vs встраивание
- Пустая структура
- Практика - система управления тегами
- Практика - система управления проектами

12Go [1.12] Интерфейсы

- Создание интерфейсов
- Пример использования
- Тип any или пустой интерфейс
- nil
- Вызов метода у nil
- Пользовательские типы
- Пример использования пользовательских типов
- Сложнее пример с интерфейсами
- Встраивание интерфейсов
- Практика - Симуляция жизни в деревне

13Go [1.13] Ошибки

- Вспоминаем про ошибки
- Оборачивание ошибок
- Пользовательские ошибки
- Функции errors.Is() и errors.As()
- Как устроены errors.Is() и errors.As()
- Оборачивание пользовательских ошибок
- Другой подход к работе с ошибками
- Советы по работе с ошибками
- Практика - Обработка ошибок платежа

14Git [1] Основы Git

- Знакомство
- О курсе
- Обзор систем контроля версий
- Установка и настройка Git
- Первый репозиторий
- Первый коммит
- Индекс
- Подробнее о коммита
- Откат изменений
- Удаление файлов
- Переименование/перемещение файлов
- Просмотр изменений
- История коммитов
- Машина времени (изменение истории)
- Игнорирование файлов
- Домашнее задание

15Git [2] GitHub

- Создание удаленного репозитория
- Клонирование репозитория
- SSH аутентификация
- Копирование чужого репозитория (fork)
- GitHub Copilot
- Файл Readme.md и разметка Markdown
- Альтернативы GitHub
- Домашнее задание

16Git [3] Ветвление и командная работа

- Введение в ветки
- Переключение между ветками
- Создание, просмотр, удаление веток
- Слияние веток
- Конфликты при слиянии
- Экстренное переключение между задачами
- Безопасное обновление репозитория
- Поиск автора кода
- Запросы на слияние (Pull Request)
- Большая шпаргалка

17Linux [1] Вступление

- О курсе
- Установка Linux Ubuntu как виртуальной машины
- Разворачивание Linux "в облаках"
- Настройка SSH-сервера
- Резюме модуля `Введение`. Контрольные вопросы

18Linux [2] Знакомство с терминалом

- Трюки и лайфхаки в терминале
- Список горячих клавиш в терминале Linux
- Основные команды для навигации по папкам
- Создание файлов и папок
- Основные операции с файлами
- Просмотр файлов
- Резюме модуля. Контрольные вопросы

19Linux [3] Редактирование файлов

- Nano. Дружественный к пользователю текстовый редактор
- Vim. Редактор по умолчанию
- Vimtutor. Обучалка по редактору Vim.
- Резюме модуля. Контрольные вопросы.

20Linux [4] Промежуточные итоги

- Шпаргалка по редактору Nano
- Шпаргалка по горячим клавишам Vim
- Тест по пройденному материалу
- Домашнее задание

21Linux [5] Файловая структура

- Поиск файлов, команда find
- Важные директории, утилиты, архивирование
- Резюме модуля. Контрольные вопросы

22Linux [6] Управление пользователями и группами

- Вывод информации о пользователях
- Создание пользователей
- Изменение пользователей
- Права root, удаление пользователей
- Управление группами
- Резюме модуля. Контрольные вопросы
- Домашнее задание

23Linux [7] Права доступа (rwx)

- Вывод информации + команда chmod
- Смена владельцев и групп
- Специальные биты, права по умолчанию
- Резюме модуля. Контрольные вопросы
- Домашнее задание

24Linux [8] Важные инструменты терминала Linux

- Ссылки, iNodes
- Потоки ввода-вывода
- Конвейер обработки команд
- Резюме модуля. Контрольные вопросы
- Домашнее задание

25Linux [9] Инструменты для мониторинга

- Утилита top (диспетчер задач)
- Утилиты htop, ps, kill, systemctl
- Резюме модуля. Контрольные вопросы

26Linux [10] Управление программным обеспечением

- Утилита apt / apt-get
- Утилиты dpkg, snap
- Добавление репозитория
- Резюме модуля. Контрольные вопросы

27Linux [11] Планировщик задач

- Служба cron, утилита crontab
- Настройка логов, задачи других пользователей
- Резюме модуля. Контрольные вопросы

28Linux [12] Работа с фаерволом (утилита iptables)

- Просмотр, добавление, удаление правил
- Политики по умолчанию, сохранение правил
- Резюме модуля. Контрольные вопросы

29Linux [13] Bash

- История создания, запуск скриптов, оболочка
- Синтаксис Bash: условия, ветвления
- Синтаксис Bash: циклы, функции
- Резюме модуля. Контрольные вопросы

30Linux [14] Работа с дисками

- Чтение информации
- Монтирование диска
- Общее файловое хранилище
- Дополнительные диски "в облаках"
- LVM (logical volume management)
- Домашнее задание

31Linux [15] Docker

- Дисклеймер
- Введение, установка
- Список команд, первый контейнер
- Контейнер с документацией
- Веб-сервер Nginx в Docker
- Dockerfile
- Docker Compose
- Удаление ресурсов
- Домашнее задание

32Go [2.1] Слайсы

- Введение
- Структура слайса
- Как работает append()
- Нюансы append()
- Подслайсы
- Неожиданные мутации

33Go [2.2] Big O

- Сложность операций: Big O
- Как данные хранятся в памяти?
- Практика: Угадай сложность

34Go [2.3] Хеш-таблица

- Проблема поиска
- Придумываем хеш-таблицу
- Коллизии
- Создаем свою хеш-таблицу
- Заключение

35Go [2.4] Map

- Введение
- Идея swiss tables
- hash
- Каталог и расширяемое хеширование
- Таблицы (Swiss tables)
- Группы
- Поиск элемента и пробирование
- CRUD в map
- Нюансы map
- Заключение

36Go [2.5] Интерфейсы

- Устройство интерфейсов
- Таблицы методов (itab)
- Интерфейсы, nil и производительность
- Использование интерфейсов

37Go [2.6] Время - time

- Основы времени
- Арифметика времени
- Форматирование и парсинг времени
- Временные зоны
- Monotonic и Wall Time
- Таймеры и задержки
- DST, високосные секунды и другие подводные камни

38Go [2.7] Работа с файловой системой

- Введение в работу с файлами
- Ручное управление файлом
- Операции с *os.File
- Пример: чтение конфигурации
- Работа с большими файлами
- bufio
- Реализуем логику head
- Пути и работа с директориями
- Directory (Path) Traversal
- Рекурсивный обход файловой системы
- Права доступа, метаданные и временные файлы
- Атомарная запись
- Практика: реализуем tail
- Стандартные операции над файлами

39Go [2.8] JSON

- Что такое JSON
- Основы JSON
- omitempty и omitzero
- MarshalJSON и UnmarshalJSON
- Вложенные структуры, слайсы, мапы
- Динамический JSON
- Валидация в UnmarshalJSON
- Streaming и работа с большими данными
- Циклические ссылки
- encoding/json/v2
- stepik

40Go [2.9] Конкурентность

- Горутины и GMP
- Как устроен GMP
- Горутины
- Каналы
- Нюансы каналов
- Практика с каналами
- select
- Таймеры и таймауты

41Go [2.10] Контекст

- Введение в контекст
- Отмена контекста
- Передача контекста вниз по стеку
- Причина - context.Cause
- Пример: длинные вычисления с проверкой контекста

42Go [2.11] Сигналы

- Работа с сигналами
- Graceful shutdown

43Go [2.12] Пакет sync

- Введение в пакет sync
- sync.Mutex
- sync.RWMutex
- sync.WaitGroup
- sync.Once
- sync.Cond
- sync.Map
- sync.Pool
- errgroup
- Что выбрать?

44Go [2.13] Пакет atomic

- Атомарные операции
- Пример: Флаг отмены для воркеров
- Атомарное обновление структуры - atomic.Pointer
- Когда нельзя использовать атомарные операции
- Заключение

45Go [2.14] Паттерны конкурентности

- Graceful shutdown
- Pipeline
- Worker Pool
- Fan-Out/Fan-In
- Resource Pool
- Circuit Breaker
- Rate Limiting
- Pub/Sub
- Prioritized Select

46Go [2.15] Задачи по конкурентности

- Семафор
- Идемпотентный закрыватель каналов
- Паттерны And и Or
- Неблокирующая передача данных
- Window Buffer
- Паттерн Мост (Bridge)
- Динамический Fan-In
- Паттерн First-Of
- Singleflight
- Собственный errgroup
- Паттерн Барьер
- Мини-оркестратор с откатом
- Worker Pool с динамическим масштабированием
- Диспетчер нетраннера

47Go [2.16] CLI

- Введение в CLI-приложения
- Цветной вывод и индикаторы прогресса
- Стандартный пакет flag
- Пакет pflag
- Библиотека urfave/cli
- Библиотека Cobra и Viper
- Интерактивные режимы (REPL)

48Go [2.17] Теория HTTP

- Введение в HTTP как протокол
- Уровни сетевого взаимодействия: OSI
- Эволюция HTTP
- Stateless-природа HTTP

49Go [2.18] HTTP-сервер

- Основы HTTP-сервера
- Регистрация обработчиков
- Запуск сервера
- Заполнение обработчиков
- Добавляем log/slog
- Роутер
- Роутинг в http.ServeMux
- Убираем глобальный логгер
- Middleware
- Context и цепочки middleware
- Настройка HTTP-сервера
- Чтение данных из HTTP-запроса
- Раздача статических файлов
- Загрузка файлов
- Множественная загрузка файлов
- Заключение

50Go [2.19] HTTP-клиент

- Простые запросы HTTP
- http.Client
- http.Transport
- Диагностика сетевых ошибок
- http.Request

51SQL [1] Установка рабочего окружения.

- О курсе
- Установка MySQL сервера
- Работа в терминале
- Графические IDE (Workbench, DBeaver)
- Взаимодействие с сервером
- Контрольные вопросы
- Решаем задачи. Пишем SQL код

52SQL [2] Проектирование БД (команды DDL)

- Первичные ключи
- Особенности типов данных и именование объектов
- Руководство по стилю SQL · SQL Style Guide
- Индексы
- Внешние ключи
- Подробнее про ALTER TABLE
- Особенности синтаксиса MySQL
- Виды связей между таблицами (1х1, 1хМ, МхМ)
- Таблицы-справочники
- ER-диаграмма
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

53SQL [3] Работа с данными (команды DML, CRUD)

- Команда INSERT
- Команда SELECT
- Команда UPDATE
- Команда DELETE
- Бонус: Сервисы для генерации данных
- Импорт-экспорт данных
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

54SQL [4] Основы SELECT запросов

- Фильтрация (WHERE + LIKE)
- Сортировка (ORDER BY)
- Агрегирующие функции (COUNT, MIN, MAX, AVG, SUM)
- Группировка (GROUP BY)
- Фильтрация (HAVING)
- Отсутствие значения (NULL)
- Пейджинг (LIMIT + OFFSET)
- Условия, ветвления (IF, CASE)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

55SQL [5] Сложные SELECT запросы

- Вложенные запросы (подзапросы)
- Объединения (JOIN) - Теория
- Объединения (CROSS JOIN, INNER JOIN)
- Объединения (LEFT JOIN, RIGHT JOIN)
- Объединения (FULL OUTER JOIN)
- Вложенные запросы VS объединения
- Соединения (UNION)
- Оконные функции
- Общие табличные выражения (CTE)
- Рекурсивные табличные выражения
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Решаем задачи. Пишем SQL код. Часть 3
- Решаем задачи. Пишем SQL код. Часть 4

56SQL [6] Продвинутые фичи SQL

- Полнотекстовый поиск
- Представления (View)
- Хранимые процедуры
- Пользовательские функции
- Переменные
- Триггеры
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

57SQL [7] Транзакции

- Введение в транзакции
- Обработка исключений (ошибок)
- Уровни изоляции транзакций
- Блокировки таблиц
- Взаимная блокировка (deadlock)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код

58SQL [8] Права доступа

- Пользователи
- Роли
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код

59SQL [9] Вопросы оптимизации

- Лишний JOIN
- Денормализация
- Настройки сервера
- Анализ запросов (EXPLAIN)
- Графический план исполнения запроса
- Исправление проблемных мест
- Графический план: показательные примеры
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2

60SQL [10] Дополнительные темы

- Работа с логами
- Циклы
- Курсоры
- SQL инъекции
- Контрольные вопросы
- Решаем задачи. Пишем SQL код

61Завершение учебной программы

- Подведение итогов

Организатор

Автор курса

StepikStepik
Stepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным. Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ. В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе
Мнения учеников

Отзывы о курсе

Оставьте отзыв

Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.

Напишите ваш коментарий, не менее 30 символов

Нажимая кнопку, вы даете согласие на обработку персональных данных

Оставьте заявку

Консультант ответит на вопросы о курсе «Программа: Go-разработчик [ Go + SQL + Git + Linux ]» и поможет разобраться в деталях обучения.

Комментарий ...

Нажимая кнопку, вы даете согласие на обработку персональных данных

Информация обновлена 7 сентября 2026 г.

Продолжить выбор

Похожие курсы

GOLANG NINJA. Искусство работы с ошибками
Курс не имеет дедлайнов, можно проходить в удобном для вас темпе
GOLANG NINJA. Искусство работы с ошибками

Данный курс является первой частью специализации "Искусство работы с ошибками и безмолвной паники в Go". Что такого особенного можно рассказать про ошибки? Мы считаем, что грамотн…

Онлайн9 занятийПродвинутый
22 529 ₽
Фреймворк Apache Spark для разработчиков: продвинутый уровень
−10%32 академ. часов
Фреймворк Apache Spark для разработчиков: продвинутый уровень

Глубокое погружение в внутреннее устройство Apache Spark и его компонентов. Этот курс поможет вам понять, как устроены и работают различные модули Spark, такие как Spark Core, Spa…

ОнлайнПродвинутый
55 500 ₽−10%
49 950 ₽
SQL практикум. Полный курс
4-5 часов в неделю
SQL практикум. Полный курс

Загляни в Телеграм канал курса. Там обсуждение и новости. В конце курса студентов ждет приятный бонус! 🎁 Цель курса Научить вас работать с базами данных на профессиональном уровне…

Онлайн12 занятий
1 700 ₽
Начать без затрат

Бесплатные курсы

Введение в базы данных
Бесплатно8 часов в неделю
Введение в базы данных

Курс введения в базы данных знакомит слушателями с историей создания систем обработки структурированных данных, подходами к обработке информации, развитием моделей данных и систем…

Онлайн8 занятий
Бесплатно
Симулятор SQL
Бесплатно1 месяц
Симулятор SQL

Бесплатный курс «Симулятор SQL» разработан специально для новичков и позволяет с нуля овладеть самым востребованным инструментом для работы с данными. Учитесь в удобное время, реш…

Онлайн2 занятий
Домашние заданияИнтерактивные тренажёры+4
Бесплатно
SQL — курс для начинающих
Бесплатно15 минут в день
SQL — курс для начинающих

💡 Курс находится в разработке, дополняется теоретическим и практическим материалом. ✨ Курс будет дорабатываться в течение сентября-октября 2026, модули открываются каждый понедель…

Онлайн8 занятий
Бесплатно