Code Monkey home page Code Monkey logo

banner's Introduction

Ход решения

Сразу хотелось бы отметить, что все вопросы, связанные с поставленным ТЗ, на работе я бы сразу уточнил необходимую мне информацию у человека отвественного за это ТЗ. Как говорится, семь раз отмерь - один раз отрежь.

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

В поставленном ТЗ, на мой взгляд, были некоторые противоречия, к примеру:

  • Фича и тег однозначно определяют баннер, но баннер может иметь одну фичу и несколько тегов. Что это может значить? Предположим, что множество тегов одного баннера не пересекается со множеством тегов другого. Тогда утверждение, что "фича и тег" однозначно определяют баннер" имеет смысл. С другой стороны, если обратится к представленному файлу api и внимательно его прочитать, то при обращении get user_banner передается только один тег. Что опять же намекает нам на непересекающиеся множества тегов. НО! В условии сказано: "При этом один тег, как и одна фича, могут принадлежать разным баннерам одновременно", то есть имеется некоторое противоречие. К тому же, с логической точки зрения, тег и должен быть неуникальным, к примеру: тег "спорт" или тег "программирование". Логично представить, что эти теги могут принадлежать разным банерам. Поэтому подытожу, что я решил при решении: "фича и теги однозначно определяют баннер".
  • Так как не успел доделать, хотелось бы упомянуть, что для решения условия, связанного с use_last_revision, нужно использовать допольнительное БД, к примеру Redis. Возможно допишу уже после дедлайна
  • Для решения задачи, нужно было очень правильно подойти к вопросу проектирования БД и придерживатся хороших практик. К примеру, вместо вписывания в таблицу banner поле feature_id, нужно создать отдельное БД feature и связать БД, отдельной таблицей banner_feature. При этом не нарушаются основы построения БД.
  • По поводу авторизации и аутентификации я думаю должен существовать другой сервис, в котором должна проходить регистрация пользователя, а также настройка админских прав. Так как не успел дописать, напишу, что возможным вариантом, можно было использовать сервис единого входа SSO. У меня есть такой сервис, вот он, там был выбран поход RBAC.
  • Последнее что хотелось бы отметить, что задание довольно таки хорошее, оно подтолкнуло меня узнать новые вещи о разработке, его было интересно решать, так как условие было написано близко к производственному. Хоть все задания тестового задания в дедлайн я не решил, точно допишу все задания после для прокачки навыков. Также хотелось бы увидеть эталонное решение от крутых Авито разработчиков

Команды

make up   //миграции up
make down //миграции down
make run  //запуск приложения

banner's People

Contributors

dedmouze avatar

Watchers

 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.