commit 05515b2da927826d6fcf74e1941a47a54787f20b Author: Fedor Korotkiy Date: Sat Jan 18 20:00:24 2020 +0300 Initial commit. Draft syllabus. diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc0e1fc --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# Курс по Го в ШАД + +## Программа курса + +1. Введение. Программа курса. Отчётность по курсу, критерии + оценки. if, switch, for. Hello, world. Command line arguments. Word + count. Animated gif. Fetching URL. Fetching URL concurrently. Web + server. Tour of go. Local IDE setup. Submitting solutions to + automated grading. gofmt. goimport. linting. Submitting PR's with + bug fixes. + +2. Базовые конструкции языка. names, declarations, variables, + assignments. type declarations. packages and files. scope. Zero + value. Выделение памяти. Стек vs куча. Basic data + types. Constants. Composite data types. Arrays. Slices. Maps. Structs. + JSON. text/template. string и []byte. Работа с unicode. Unicode + replacement character. + Функции. Функции с переменным числом аргументов. Анонимные функции. Ошибки. + +3. Методы. Value receiver vs pointer receiver. Embedding. Method + value. Encapsulation. Интерфейсы. Интерфейсы как + контракты. io.Writer, io.Reader и их + реализации. sort.Interface. error. http.Handler. Интерфейсы как + перечисления. Type assertion. Type switch. The bigger the + interface, the weaker the abstraction. Обработка ошибок. panic, + defer, recover. errors.{Unwrap,Is,As}. fmt.Errorf. %w. + +4. Горутины и каналы. clock server. echo server. Размер + канала. Блокирующее и неблокирующее чтение. select + statement. Channel axioms. `time.After`. `time.NewTicker`. Pipeline + pattern. Cancelation. Parallel loop. sync.WaitGroup. Обработка + ошибок в параллельном коде. errgroup.Group. Concurrent web + crawler. Concurrent directory traversal. + +5. Продвинутое тестирование. Subtests. *testing.B. (*T).Logf. (*T).Skipf. (*T).FailNow. + testing.Short(), testing flags. Генерация моков. testify/{require,assert}. testify/suite. Test fixture. + Интеграционные тесты. Goroutine leak detector. TestingMain. Coverage. Сравнение бенчмарков. + +6. Concurrency with shared memory. sync.Mutex. sync.RWMutex. sync.Cond. atomic. sync.Once. + Race detector. Async cache. + +7. Package context. Passing request-scoped data. http middleware. chi.Router. Request cancelation. + Advanced concurrency patterns. Async cache. Graceful server shutdown. context.WithTimeout. + Batching and cancelation. + +8. Reflection. reflect.Type and reflect.Value. struct tags. net/rpc. encoding/gob. + sync.Map. reflect.DeepEqual. + +9. Low-level programming. unsafe. Package binary. bytes.Buffer. cgo, + syscall. + +10. Архитектура GC. Write barrier. Stack growth. GC pause. GOGC. sync.Pool. Шедулер + горутин. GOMACPROCS. Утечка тредов. + +11. Go tooling. pprof. CPU and Memory profiling. Кросс-компиляция. GOOS, GOARCH. CGO_ENABLED=0. + Build tags. go modules. godoc. x/analysis. Code generation. + +12. Полезные библиотеки. CLI applications with cobra. Protobuf and + GRPC. zap logging. + +13. Запасная леция #1. Работа с crypto/* и x/crypto. + +14. Запасная леция #2. + +## TODO + +1. Check go blog. +2. Check gopher puzzlers. +3. Архитектура и паттерны. +4. Core net/http examples. +5. Project layout. +6. Go proverbs. https://go-proverbs.github.io/ +7. All stdlib packages.