gocodelabru icon indicating copy to clipboard operation
gocodelabru copied to clipboard

Coding simple database for geospatial data using Go programming language workshop in Russian language

Делаем простую базу для гео данных

Привет, гофер. Ну если ты не гофер и хочешь им стать, тоже привет. Я предлагаю в этой кодлабе совместить две вещи. Изучить как язык Go и может быть освоить для себя пару новых вешей.

Аудитория

Codelab расчитана на людей, у которых есть опыт в программировании и которые хотят попробовать Go. Это может быть люди, пишушие на PHP/Python/Ruby. Для пишуших на C/C++ Codelab будет врятли полезен

Поднимаем окружение

Тебе понадобится следующее:

  1. Установленный язык Go
  2. Настроенный GOPATH :trollface: (Для 1.8 не актуально)
  3. Ты знаком с базовыми вещами в Go. Тур по Go может хорошо в этом помочь

Цель лабораторной

У этой лабораторной работы две цели:

  1. Получить опыт в Go
  2. Научиться понимать как примерно работают key-value хранилища(redis, memcached)
  3. Как работают некоторые индексы.

По итогу БД будет уметь следующие вещи:

  • Быстрый поиск по ключу;
  • Поиск мест, рядом с вами;
  • 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:

Одно из самых замечательных качеств языка Go - это его сообщество.

Сообщества и каналы в телеграм

  1. @bishkekgophers - Гоферы Бишкека
  2. @devkg - Программисты Кыргызстана
  3. @maddevsio - канал нашей компании, где мы делимся всякими интересными штуками. Очень часто говорим про Go

Сообщества в Slack

  1. golang-ru.slack.com - Рускоязычное сообщество гоферов
  2. gophers.slack.com - Англоязычное сообщество гоферов. Инвайт получить тут https://invite.slack.golangbridge.org/

Подкасты

  1. GolangShow - Русскоязычный подкаст о языке Go
  2. Gotime - Англоязычный подкаст о языке Go

Остальное

Благодарности

  1. Francesc Campoy за его воркшоп Building Web Applications with Go
  2. Ashley McNamara за картинку в 10м шаге. Вы можете посмотреть и другие работы в репо
  3. Елене Граховац за ревью и фидбек