Skip to content

ityulkanov/otus_homework_tips

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 

Repository files navigation

ДЗ полезные советы

Общение с наставником

  • Контакт высылаю в чате Отуса.
  • Проверяю ДЗ пару раз в неделю. Частота зависит от загрузки на основной работе.
  • Могу ответить на вопросы по ДЗ, подебажить какую то ошибку если есть время.
  • На темы помимо ДЗ отвечаю если есть знания по теме и свободное время.

Общие рекомендации

Перед написанием любого кода в Go рекомендую ознакомиться с некоторыми его конвенциями

ДЗ не обязательно выполнять по очереди (за исключением календаря). Тут как в тесте, можете выполнить те что считаете самыми лёгкими, возвращаясь к самым сложным позже, по мере роста опыта и по мере прохождения курса.

Git

В ДЗ обязательно понимать работу системы контроля версий и базовых гит флоу (бренч от 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 новый тест. Не возбраняется писать больше тестов, естественно.

.sync файлы

Это файлы маркеры которые используются гит 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 (так вы гарантируете, что проверка вашего задания займёт наименьшее количество времени). Можно под это дело создать и коллекцию постмена и сложить в тот же репозиторий.

ДЗ Проект

Рекомендую делать в отдельном репозитории гитхаба, и сдавать пошагово, как и календарь, для упрощения его проверки. Только не забудьте добавить меня в проверяющие и коллабораторы. Все вышеперечисленные советы по календарю так же применимы и к проекту.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published