- Контакт высылаю в чате Отуса.
- Проверяю ДЗ пару раз в неделю. Частота зависит от загрузки на основной работе.
- Могу ответить на вопросы по ДЗ, подебажить какую то ошибку если есть время.
- На темы помимо ДЗ отвечаю если есть знания по теме и свободное время.
Перед написанием любого кода в Go рекомендую ознакомиться с некоторыми его конвенциями
ДЗ не обязательно выполнять по очереди (за исключением календаря). Тут как в тесте, можете выполнить те что считаете самыми лёгкими, возвращаясь к самым сложным позже, по мере роста опыта и по мере прохождения курса.
В ДЗ обязательно понимать работу системы контроля версий и базовых гит флоу (бренч от main -> MR -> merge в main) Для понимания что такое гит и как с ним работать рекомендую видео от brief.
Часть ошибок лечится простой командой:
golangci-lint run --fix
Ошибка линтера
level=error msg="[linters_context] gocritic: load embedded ruleguard rules: rules/rules.go:13: can't load fmt: setting an explicit GOROOT can fix this problem."
обычно означает что версия линтера не совпадает с версией go. Лечится изменением версии линтера до последней в .github/workflows/tests.yml
файле.
вообще рекомендую вам поднять версии до go 1.22
а golang-ci lint до v1.57.2
сразу.
Ошибка
import 'github.com/stretchr/testify/require' is not allowed from list 'Main' (depguard)
Лечится настройкой depguard:
depguard:
rules:
Main:
files:
- $all
- "!$test"
allow:
- $gostd
Test:
files:
- $test
allow:
- $gostd
- github.com/stretchr/testify
Либо мьютом конкретной строки на которую ругается линтер:
//nolint:depguard
Во всех заданиях есть файл go.mod
в котором изначально прописаны только шаблоны путей до ваших модулей ДЗ (так как у каждого будет свой репозиторий с проектом).
Все их можно найти поискав fixme_my_friend
по файлам. Пути к модулю форумируются из названия проекта и вашего юзернейма на гитхабе. Не
забывайте изменить их.
Как вариант можно разделаться с этим раз и навсегда сразу поправив все пути во всех 17 ДЗ (можно сделать в первом же ДЗ).
В каждом задании, для получения проходного балла, за исключением первого должен быть написан хотя бы 1 новый тест. Не возбраняется писать больше тестов, естественно.
Это файлы маркеры которые используются гит actions для обновления папок в которых они расположены в случае изменений в основном репозитории.
По условиям ДЗ в том числе, файлы .sync
лучше.
Задания:
- 2е задание. Перед выполнением рекомендую почитать следующую статью - времени на прочтение минут 10, а может сэкономить вам несколько часов правок в последующем
UTF-8 strings with Go: len(s) isn't enough
Концепции рун - 3е задание. Сортировки достаточно одной
- 4е задание. Обратите внимание на то что выполнение всех операций должно занимать O(1)
- 5е задание. Имхо эта и следующая самые сложные из всех ДЗ. Поэтому тут можно либо скипнуть, если пока не уверены
в своих силах, либо делать параллельно. Тут рекомендую ознакомиться со статьёй
Каналы и как с ними работать - 6е задание. Пайплайны Прежде чем копировать ДЗ из интернета, обязательно попробуйте решить самостоятельно. Даже неоконченные решения лучше чем никаких. Присылайте мне PR в draft варианте, постараюсь помочь разобраться что не работает.
- 7е задание. Желательно проверять не копируете ли вы из файлов вроде dev/urandom, proc и прочих системных файлов.
- 10е задание. При выполнении рекомендую пошагово фиксировать результаты тестов в текстовых файлах и закоммитить все их с небольшими описаниями улучшений. В крайнем случае необходимо 1 тестовый файл с результатами тестов до / после.
Является самым объемным по коду, и предшествует проекту,
для упрощения его проверки, рекомендую заранее обновлять readme файл с
описанием как запускать ваше решение, и какие из портов и эндпойнтов готовы.
А также желательно добавить в make таргеты для создания контейнеров Postgres
и RabbitMQ
(так вы гарантируете, что проверка вашего
задания займёт наименьшее количество времени).
Можно под это дело создать и коллекцию постмена и сложить в тот же репозиторий.
Рекомендую делать в отдельном репозитории гитхаба, и сдавать пошагово, как и календарь, для упрощения его проверки. Только не забудьте добавить меня в проверяющие и коллабораторы. Все вышеперечисленные советы по календарю так же применимы и к проекту.