Прохождение курса на Coursera от МФТИ, VK, ФРОО.
-
1 неделя:
-
2 неделя:
-
3 неделя:
- задание: оптимизация программы с использованием
pprof
- задание: оптимизация программы с использованием
-
4 неделя:
- задание: http-сервис и покрытие его тестами
Материалы для чтения
-
Неделя 1. конспект лекции
Материалы для дополнительного чтения на английском:
-
https://golang.org/ref/spec - спецификация языка
-
https://golang.org/ref/mem - модель памяти го. на начальном этапе не надо, но знать полезно
-
https://golang.org/doc/code.html - про организацию кода. GOPATH и пакеты
-
https://github.com/golang/go/wiki - вики го на гитхабе. очень много полезной информации
-
https://golang.org/doc/effective_go.html - основной сборник тайного знания, сюда вы будуте обращатсья в первое время часто
-
https://github.com/golang/go/wiki/CodeReviewComments как ревьювить (и писать код). обязательно к прочтению
-
https://divan.github.io/posts/avoid_gotchas/ - материал аналогичный 50 оттенков гоhttps://research.swtch.com/interfaces
-
http://jordanorelli.com/post/42369331748/function-types-in-go-golang
-
https://www.devdungeon.com/content/working-files-go - работа с файлами
-
http://www.golangprograms.com - много how-to касательно базовых вещей в go
-
http://yourbasic.org/golang/ - ещё большой набор how-to где можно получить углублённую информацию по всем базовым вещам. очень полезны http://yourbasic.org/golang/blueprint/
-
https://github.com/enocom/gopher-reading-list - большая подборка статей по многим темам ( не только данной лекции )
-
https://www.youtube.com/watch?v=MzTcsI6tn-0 - как организовать код
-
https://medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1 - статья на предыдущую тему
Материалы для дополнительного чтения на русском:
-
https://habrahabr.ru/company/mailru/blog/314804/ - 50 оттенков го. обязательно к прочтению. многое оттуда мы ещё не проходили, но на будущее - имейте ввиду
-
https://habrahabr.ru/post/306914/ - Разбираемся в Go: пакет io
-
https://habrahabr.ru/post/272383/ - постулаты go. Маленькая статья об основными принципах языка
-
https://habrahabr.ru/company/mailru/blog/301036/ - лучшие практики go
-
https://habrahabr.ru/post/308198/ - организация кода в go
-
https://habrahabr.ru/post/339192/ - Зачем в Go амперсанд и звёздочка (& и *)
-
https://habrahabr.ru/post/325468/ - как не наступать на грабли в Go
-
https://habrahabr.ru/post/276981/ - Краш-курс по интерфейсам в Go
Литература по го на русском языке:
-
Язык программирования Go, Алан А. А. Донован, Брайан У. Керниган
-
Go на практике, Matt Butcher, Мэтт Фарина Мэтт
-
Программирование на Go. Разработка приложений XXI века, Марк Саммерфильд
-
-
Неделя 2. конспект лекции
Материалы для дополнительного чтения на английском:
Видео:
- https://www.youtube.com/watch?v=5buaPyJ0XeQ - классное выступление Dave Cheney про функции первого класса и использование их с горутинами, очень рекомендую, оно небольшое-
https://www.youtube.com/watch?v=f6kdp27TYZs - Google I/O 2012 - Go Concurrency Patterns - очень рекомендую
-
https://www.youtube.com/watch?v=rDRa23k70CU&list=PLDWZ5uzn69eyM81omhIZLzvRhTOXvpeX9&index=15 - ещё одно хорошее видео про паттерны конкуренции в го
-
https://www.youtube.com/watch?v=KAWeC9evbGM - видео Андрея Смирнова с конференции Highload - в нём вы можете получить более детальную информацию по теме вводного видео (методы обработки запросов и плюсы неблокирующего подхода), о том, что там творится на системном уровне. На русском, не про go
На русском:
-
https://habrahabr.ru/post/141853/ - как работают горутины
-
https://habrahabr.ru/post/308070/ - как работают каналы
-
https://habrahabr.ru/post/333654/ - как работает планировщик ( https://rakyll.org/scheduler/ )
-
https://habrahabr.ru/post/271789/ - танцы с мютексами
Книги:
-
Язык программирования Go, Алан А. А. Донован, Брайан У. Керниган
-
Go на практике, Matt Butcher, Мэтт Фарина Мэтт
-
Программирование на Go. Разработка приложений XXI века, Марк Саммерфильд
-
-
Неделя 3. конспект лекции
Рефлексия и кодогенерация:
Производительность. Материалы на русском:
-
https://habrahabr.ru/company/mailru/blog/331784/ - статья про то как Почта@Mail.ru держит 3 миллиона вебсокет-соединений
Производительность. Материалы на английском:
-
https://about.sourcegraph.com/go/an-introduction-to-go-tool-trace-rhys-hiltner/ - большая статья, посвященная go tool trace
-
https://www.goinggo.net/2017/05/language-mechanics-on-stacks-and-pointers.html
-
https://docs.google.com/document/d/1CxgUBPlx9iJzkz9JWkb6tIpTe5q32QDmz8l0BouG0Cw/preview
-
https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/
-
https://lwn.net/Articles/250967/ - не про го, но знать полезно
-
https://github.com/golang/go/wiki/Performance - много про то что можно вытащить из pprof-а
-
https://about.sourcegraph.com/go/generating-better-machine-code-with-ssa/
-
https://about.sourcegraph.com/go/evolutionary-optimization-peter-bourgon/
-
https://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go
-
https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast - вообще в блоге Дейва очень много полезной инфы по го
-
https://github.com/dgryski/go-perfbook/blob/master/performance.md
-
https://www.youtube.com/watch?v=NS1hmEWv4Ac - Make your Go go faster! Optimising performance through reducing memory allocations + слайды https://fosdem.org/2018/schedule/event/faster/attachments/slides/2510/export/events/attachments/faster/slides/2510/BryanBorehamGoOptimisation.pdf
-
https://www.youtube.com/watch?v=N3PWzBeLX2M - Profiling and Optimizing Go
-
https://www.youtube.com/watch?v=Lxt8Vqn4JiQ - Golang UK Conference 2017 | Filippo Valsorda - Fighting latency: the CPU profiler is not your ally
-
https://www.youtube.com/watch?v=ydWFpcoYraU - Finding Memory Leaks in Go Programs
-
https://medium.com/@val_deleplace/go-code-refactoring-the-23x-performance-hunt-156746b522f7
Тесты:
- https://blog.golang.org/cover - расширенная информация о go test -cover
Полезные инструменты:
-
https://mholt.github.io/json-to-go - позволяет по json сформировать структуру на go, в которую он может быть распакован
-
https://github.com/mailru/easyjson - кодогенератор для json от mail.ru
-
Неделя 4. конспект лекции
Документация:
Дополнительные материалы:
-
https://gowebexamples.github.io/ - примеры касательно разработки веба
-
https://astaxie.gitbooks.io/build-web-application-with-golang/
-
https://github.com/thewhitetulip/web-dev-golang-anti-textbook/
-
https://codegangsta.gitbooks.io/building-web-apps-with-go/content/
-
https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/ - про таймауты
На русском:
- https://habrahabr.ru/post/330512/ - Многопользовательская игра на Go через telnet - чисто сеть
-