Skip to content

Zagato27/Go_Learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐹 Go Learning — Интерактивный курс по Go

Локальное веб-приложение для изучения языка Go с теорией, примерами кода и практическими заданиями.
В базовом курсе задачи автопроверяемые, а в разделах «Веб» и «Продвинутый» — задания в формате лабораторных/мини‑проектов (manual, выполняются в IDE по подробному ТЗ).

Go License

✨ Возможности

  • 📚 124 урока — от базового Go до продвинутых backend-тем
  • 🎯 492 практических задания: auto (встроенная проверка) + manual (лабы/мини‑проекты)
  • 📊 Отслеживание прогресса — очки и статистика
  • 📝 Личные заметки к каждому уроку
  • 🔍 Полнотекстовый поиск по всем материалам
  • 💻 Встроенный редактор кода с подсветкой синтаксиса
  • 🧩 Раздел «Проекты» — 2 capstone-проекта с развёрнутым ТЗ и ссылками на уроки

🚀 Быстрый старт

Требования

  • Go 1.22 или выше

Установка и запуск

# Клонируйте репозиторий
git clone https://github.com/your-username/go-learning.git
cd go-learning

# Установите зависимости
go mod download

# Запустите сервер
go run ./cmd/server --db ./data.db --addr :8080

Откройте http://localhost:8080 в браузере.

Примечание: База данных data.db уже содержит все уроки и задания — дополнительная настройка не требуется!

📖 Содержание курса

Раздел 1: Язык Go (92 урока)

Глава Темы
Введение Что такое Go, первая программа
Основы языка Переменные, типы, операторы, циклы, условия
Функции Параметры, возврат значений, замыкания, рекурсия
Указатели Работа с адресами памяти
Производные типы Структуры, методы, срезы, карты
Пакеты и модули Организация кода, зависимости
��нтерфейсы Полиморфизм в Go
Горутины и каналы Параллельное программирование
Обработка ошибок error, panic, recover, defer
Файлы и I/O Чтение, запись, потоки
Сеть TCP, HTTP клиент/сервер
Базы данных SQL, MySQL, PostgreSQL, SQLite, MongoDB
Тестирование Unit/Integration/HTTP тесты, бенчмарки, покрытие
Generics Constraints, структуры данных, паттерны
Context Timeouts, отмена, values, best practices

Раздел 2: Веб-разработка на Go (11 уроков)

Глава Темы
Основы веб HTTP сервер, маршрутизация, gorilla/mux
Шаблоны html/template, синтаксис
Работа с БД CRUD операции через веб-интерфейс

Раздел 3: Продвинутое программирование Go (21 урок)

Глава Темы
Архитектура Clean Architecture
Gin Framework REST API, middleware, валидация
JWT access/refresh, безопасность
GORM модели, связи, preload
Docker multi-stage, compose, best practices
CI/CD GitHub Actions, lint, -race
gRPC proto, streaming, interceptors
Observability Prometheus метрики
Производительность pprof, trace, нагрузочное тестирование
Логирование log/slog, request_id, корреляция
Tracing OpenTelemetry (Gin/gRPC)
Production ready таймауты, health/readiness, graceful shutdown
Redis cache-aside, TTL, stampede
Postgres/SQL миграции, пул, транзакции, EXPLAIN
gRPC Production TLS/mTLS, grpc-gateway + OpenAPI

Раздел 4: Проекты (2 capstone)

Доступны на странице: /projects
Тексты ТЗ хранятся в lessons_mdx/Проекты/*.md (этот каталог не импортируется как курс).

🏗 Структура проекта

go-learning/
├── cmd/
│   ├── server/       # Веб-сервер
│   ├── ingest/       # CLI для импорта контента
│   └── purge_demo/   # CLI для удаления демо-уроков из БД
├── internal/
│   ├── db/           # SQLite, миграции
│   ├── content/      # Модели и репозиторий уроков
│   ├── ingest/       # Парсер markdown
│   ├── practice/     # Проверка кода (go run/test)
│   ├── progress/     # Прогресс пользователя
│   └── web/          # HTTP handlers, шаблоны, статика
├── lessons_ai/       # Исходные markdown файлы уроков
├── lessons_mdx/      # Основной контент уроков в MDX (для ingest --mdx)
│   └── Проекты/      # ТЗ capstone-проектов (Markdown)
├── data.db           # SQLite база с уроками и заданиями
├── project_specs.go  # go:embed ТЗ из lessons_mdx/Проекты для страницы /projects
└── README.md

🔧 API

Метод Путь Описание
GET / Главная (список уроков)
GET /lessons/{slug} Страница урока
GET /projects Проекты (capstone ТЗ)
GET /search?q= Поиск
POST /api/progress/lesson/{id} Обновить прогресс
POST /api/notes/lesson/{id} Сохранить заметку
POST /api/run Выполнить Go-код
POST /api/check Проверить решение задачи
POST /api/tasks/{id}/complete Отметить manual‑задачу выполненной

🛠 Разработка

Импорт/обновление уроков

# Импортировать все уроки из lessons_mdx (рекомендуется)
go run ./cmd/ingest --db ./data.db --dir ./lessons_mdx --mdx

# Импортировать демо-данные (для разработки)
go run ./cmd/ingest --db ./data.db --demo

# Удалить демо-уроки из базы (если случайно добавили)
go run ./cmd/purge_demo --db ./data.db

Сброс базы данных

# Linux/macOS
rm -f data.db

# Windows (PowerShell)
Remove-Item -Force .\\data.db

# Пересоздать базу из lessons_mdx
go run ./cmd/ingest --db ./data.db --dir ./lessons_mdx --mdx

📋 Формат заданий

В проекте есть два режима практики:

Auto (встроенная проверка)

Задача включает:

  • Описание/ТЗ
  • Ожидаемый результат (вывод) и/или паттерны кода
  • Критерии приёмки
  • Подсказки
  • Стартовый код

Проверка выполняется автоматически (/api/check):

  1. Компиляция кода
  2. Проверка обязательных паттернов
  3. Сравнение вывода с ожидаемым

Manual (лабы/мини‑проекты)

Задача включает подробное ТЗ, чек‑лист приёмки и самопроверку.
Выполняется в IDE (встроенный Run/Check не показывается), после чего можно нажать «Отметить выполненным» — это создаст успешную сдачу и начислит очки один раз (/api/tasks/{id}/complete).

📄 Лицензия

MIT — свободно для личного и коммерческого использования.


Сделано с ❤️ для изучения Go

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors