Skip to content

Miroshni4enko/Domino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Domino - https://github.com/Miroshni4enko/Domino

Проект создан по следующим требованиям:

Pеализовать небольшое веб приложение - ДОМИНО Требования к функционалу. Приложение должно уметь:

  1. случайным образом доставать из "базара" (общего пула, содержащего все кости) кости домино - случайное их число или заранее заданное.
  2. выстраивать цепочку костей из предоставленного (сформированного ранее) набора. Пользователь может указывать, предоставлять ему все варианты цепочек или только один - самый длинный. Требования к интерфейсу. Интерфейс должен быть прост и ясен - не сложнее, чем пара кнопок и пара полей ввода-вывода. Не следует использовать CSS. Интерфейс должен состоять из пары страниц. Первая - для генерации наборов костей, вторая - для построения цепочек и вывода результатов. Также должна быть заглавная страница, с которой можно попасть на любую из выше описанных.

На даный момент существует ограничение по количеству доминошек. Это произошло из-за рекурсивного алгоритма нахождения всех цепочек. При больше 11 костяшек алгоритм отрабатывает несколько минут и выше в зависимости от числа. Пытался реализовать с помощью Эйлерового пути, но алгоритм получаеться слишком сложный, так как обезательными условиями есть связаность графа и максимум 2 вершины с нечетной степенью. Также пробовал сделать через ForkJoinPool, да, получилось розпаралелить и увелечить производительность, но проблема возникла с борьбой за общие ресурсы, что иногда приводило к некоректным результатам и откинуло этот вариант для текущей реализации.

#Под src/main/resources находяться:

  1. Скрипты для создания бд и таблиц, файл - ScriptsForCreateDBandTables.sql
  2. Скрипты для заполнения бд, файл - ScriptsForFillDBData.sql
  3. Проперти для логирования, файл - log4j.properties ( по дефолту логи хранять в корне проекта, для приложения в файле log4j_Domino.log и для сервера в JettyServer.log)
  4. Проперти для подключения к db, файл - db.properties
  5. Проперти для конфигурации JNDI, файл - jndi.properties

#Так как это maven проект для билда нужно запустить:

$ mvn clean package

#Для запуска org.eclipse.jetty_with_jsp.InitServer (Отдельный класс для запуска был написан для того что бы Embeded Jetty работал c JSTL, по дефолту JSTL не работают)

#$ mvn exec:java

Для работы с приложением перейдите:

http:https://localhost:8080/DispatcherServlet

#Для остановки Jetty используйте:

CTRL+C

#Само приложения по факту представляет собою три страницы:

  1. Main(index.jsp) - стартовая страница, при первом запуске загоужаеться история, которая устанавливается в сессию

image

  1. Get Chain(getChain.jsp) - страница для генерации цепочки, можно указать размер цепочки или выбрать рандомный, если количество не указан и будет выбрана кнопка выбора по определеному количеству - будет выбрано рандомное количество

image

  1. Generate Sets(generateSets.jsp) - страница для генерации сетов(наборов домино которые, генеряться на основе выбраной/полученой цепочки), также отображает историю также на случай ошибок добавлена строница errorPage.jsp

image

##TODO:

#bat и bash скрипты для инициализации и тестового запуска.

#управления БД via MAVEN, плагин уже нашел и добавил

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages