Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 3.23 KB

README.md

File metadata and controls

63 lines (47 loc) · 3.23 KB

Шаг 0. Постановка задачи и предварительные шаги

Задача

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

Формат данных

type (
    Location struct {
        Latitude float64 `json:"lat"`
        Longitude float64 `json:"lon"`
    }

    Payload struct {
      Timestamp int64 `json:"timestamp"`
      DriverID int `json:"driver_id"`
      Location Location `json:"location"`
    }
)

Требования к хранению

  1. Данные должны добавляться без дублирования.
  2. По каждому водителю нужно хранить N последних точек

Добавления данных будет через HTTP API

Требования к HTTP API

  1. Добавить данные в хралищие
  2. Получить информацию по водителю
  3. Получить ближайших водителей по местоположению

Разбор задачи

Решать задачу будем эволюционно. В процессе реализации мы начнем с простых и примитивных решений, которые не всегда эффективны по скорости, но в ходе решения задачи будем вводить те или иные примитивы, объясняя их. Процесс будет примерно такой:

  1. Решаем задачу простым и тупым методом
  2. Думаем как это можно оптимизировать
  3. Изучаем новую структуру данных и понимаем ее
  4. Проектируем решение с новой структурой
  5. Делаем ее
  6. Пишем тесты

Как работать с проектом

Проект нужно склонировать себе.

cd $GOPATH
mkdir -p src/github.com/maddevsio
cd src/github.com/maddevsio
git clone [email protected]:maddevsio/gocodelabru.git
cd gocodelab

О структуре проекта

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

Поздравляю!

Мы узнали какую задачу будем решать и как ее решать. Приступим к реализации задачи в следующем шаге