Привет, гофер. Ну если ты не гофер и хочешь им стать, тоже привет. Я предлагаю в этой кодлабе совместить две вещи. Изучить как язык Go и может быть освоить для себя пару новых вешей.
Codelab расчитана на людей, у которых есть опыт в программировании и которые хотят попробовать Go. Это может быть люди, пишушие на PHP/Python/Ruby. Для пишуших на C/C++ Codelab будет врятли полезен
Тебе понадобится следующее:
- Установленный язык Go
- Настроенный
GOPATH
(Для 1.8 не актуально) - Ты знаком с базовыми вещами в Go. Тур по Go может хорошо в этом помочь
У этой лабораторной работы две цели:
- Получить опыт в Go
- Научиться понимать как примерно работают key-value хранилища(redis, memcached)
- Как работают некоторые индексы.
По итогу БД будет уметь следующие вещи:
- Быстрый поиск по ключу;
- Поиск мест, рядом с вами;
- HTTP интерфейс к БД;
- LRU/expire механизмы для хранения данных;
По Go получите следующие знания:
- Как работает concurrency;
- Поработаете с базовыми синтаксическими вещами;
- Опыт тестирования в go;
- Базовые вещи с Makefile;
Этот воркшоп разделен на несколько частей.
- Шаг 0. Постановка задачи
- Шаг 1. Что нужно знать о тестировании и написании тестов в Go.
- Шаг 2. Hello world
- Шаг 3. Проектируем HTTP API
- Шаг 4. Делаем HTTP API
- Шаг 5. Разбиваем main.go на несколько пакетов
- Шаг 6. Makefile, конфигурация и флаги
- Шаг 7. Добавляем хранилище для данных и ищем ближайших водителей наивным путем
- Шаг 8. Пишем первый бенчмарк и зачем он
- Шаг 9. Что такое R-tree и почему оно эффективнее наивной реализации
- Шаг 10. Имплементируем LRU (часть 1)
- Шаг 11. Имплементируем LRU (часть 2)
- Шаг 12. Делаем хранилище консистентным. Внедряем LRU
- Шаг 13. Внедряем хранилище в API
- Шаг 14. Вы прошли курс. Поздравляю
Есть несколько мест, где вы можете найти информацию про Go:
- golang.org
- godoc.org тут вы можете найти документацию по любому пакету
- Блог языка Go
Одно из самых замечательных качеств языка Go - это его сообщество.
- @bishkekgophers - Гоферы Бишкека
- @devkg - Программисты Кыргызстана
- @maddevsio - канал нашей компании, где мы делимся всякими интересными штуками. Очень часто говорим про Go
- golang-ru.slack.com - Рускоязычное сообщество гоферов
- gophers.slack.com - Англоязычное сообщество гоферов. Инвайт получить тут https://invite.slack.golangbridge.org/
- GolangShow - Русскоязычный подкаст о языке Go
- Gotime - Англоязычный подкаст о языке Go
- Go Форум
- @golang and #golang on Twitter.
- Go+ community on Google Plus.
- Francesc Campoy за его воркшоп Building Web Applications with Go
- Ashley McNamara за картинку в 10м шаге. Вы можете посмотреть и другие работы в репо
- Елене Граховац за ревью и фидбек