Giter VIP home page Giter VIP logo

interview's Introduction

Небольшое тестовое задание для собеседования.

В описании задачи не сказано какие ошибки насколько критичны. Данная реализация в угоду скорости заточена под конкретный вид поступающих данных. Код полагается на то, что формат данных обговорен заранее - речь про парсинг строк из "сломаного" JSON. В данной реализации ошибки лишь логируются в консоль.

Как потестить

В директории config есть пример конфигурационного файла. Но его создавать необязательно. В коде предусмотрены дефолт-значения. Более того последующие команды Makefile полагаются именно на дефолты (для упрощения).

Есть несколько команд Makefile. Все команды проверялись на MacOS.

Для начала можно потестировать производительность с помощью написанных Benchmark:

  • make bench - запустит бенчи на самые важные элементы, а именно:
    • Parse - парсинг из строки в структуру (входящие строковые JSON с разделителем)
    • Process - полный процессинг одного запроса (то есть парсинг + передача на сохранение)
  • make test - тест только важных мест;

Если docker не установлен, можно запустить код без базы данных:

  • make run_fake - эта команда запустит приложение с fake-репозиторием. будет только логировать количество сохраненных событий

Для запуска приложения команды подразумевают, что локально установлен docker:

  1. make dep - разберется с зависимостями
  2. make docker_prepare - стянет image'ы, создаст контейнер с нестандартными для CH портами (9001 / 8124) и прогонит в нем миграции;
    • имя базы данных - interview;
    • имя таблицы - events;
  3. make docker_start, make docker_stop - для старта и остановки контейнера
  4. make run - запустит приложение
  5. make request - сделает запрос на сервер с помощью curl
  6. make events_count - выведет количество записей в таблице events

Для чистки докера:

  1. make docker_cleanup - удалит созданный контейнер
  2. make docker_rmi - удалит скачанные image'ы

Если есть свой хост с clickhouse сервером - миграции хранятся в storage/clickhouse/migrations;

interview's People

Watchers

Aleksandr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.