Начиная с лекции 6 все домашние задания выполняются в рамках проекта: "Контроллер умного дома". Каждая следующая работа является продолжением предыдущей либо будет использоваться в этом проекте.
Контроллер умного дома это сервис, который предоставляет интерфейс для мониторинга состояния систем дома.
Он принимает информацию от датчиков, сохраняет ее, может отдать информацию по запросу.
Мы умышленно упростили некоторую логику этого сервиса, например функционал контроллера ограничен только работой с датчиками двух типов:
ContactClosure
- сухие контакты (датчик протечки, переключатель на замыкание или размыкание). Обычно события приходят при изменении состоянии датчика. Например, при открытии двери или окна.ADC
- аналоговый вход (термометры, датчики уровней). Обычно события приходят при изменении показаний датчика. Например, при изменении показаний датчика температуры или влажности.
Детали задания указаны на edu
- Для каждого задания создайте отдельную ветку.
- После выполнения задания создайте Pull Request в ветку
main
проекта. - После создания Pull Request отправьте ссылку на PR в EDU
- После того как задача будет принята примите Pull Request в ветку
main
проекта. - Для работы над следующим заданием сделайте новую ветку от ветки
main
проекта.
Обратите внимание, для того чтобы скачать спецификацию и тесты для следующих заданий, нужно подтянуть изменения из основного репозитория. Для этого:
- Замержите в свой main всю накопленную работу в своём форке и переключитесь на обновлённый main локально
- Если не настроен upstream, то сделайте
git remote add upstream [email protected]:central-university-dev/2025-go-course-lesson6-2025-spring-go-course-lesson6.git
илиgit remote add upstream https://github.com/central-university-dev/2025-go-course-lesson6-2025-spring-go-course-lesson6.git
- Обновите upstream:
git fetch upstream
илиgit fetch --all
- Подтяните изменения из upstream и ребазируйтесь на них:
git rebase upstream/main
- Установить docker (windows, Mac, Linux)
- Если установили не docker-desktop, а docker отдельно - необходимо установить docker-compose
- Установить migrate
- Базу данных можно развернуть с помощью docker-compose (файл в корне проекта). Для этого необходимо выполнить команду
docker-compose up -d
. После того, как она запустится, к ней можно подключаться -postgres://postgres:[email protected]:5432/db
. - Для миграции нужно выполнить команду
migrate -path=./migrations -database postgres://postgres:[email protected]:5432/db?sslmode=disable up
. Также к проекту приложен Makefile, с помощью которого тоже можно выполнить миграцию -make migrate-up
.
Если решили выполнить миграцию через Make (make migrate-up
) на Windows - его нужно установить. В Mac и Linux установка не требуется.
Для запуска приложения требуется переменная окружения DATABASE_URL
- URL подключения к базе (postgres://postgres:[email protected]:5432/db?sslmode=disable
).
Тесты в процессе запуска используют docker. Убедитесь, что он у вас запущен.
- зайти в терминале в каталог с домашним заданием
- вызвать
go test -v ./... -race
Для линтинга используется golangci-lint. Инструкцию по установке можно найти тут.
Для запуска линтера нужно выполнить команду golangci-lint run
в корне проекта.
Большую часть ошибок линтера можно поправить с использованием флага --fix
.
От того как вы выполните это задание зависит и то, как ваш проект будет продвигаться в дальнейшем. Если вы в чем-то сомневаетесь, то не стесняйтесь задавать вопросы.