Domino - https://github.com/Miroshni4enko/Domino
Проект создан по следующим требованиям:
Pеализовать небольшое веб приложение - ДОМИНО Требования к функционалу. Приложение должно уметь:
- случайным образом доставать из "базара" (общего пула, содержащего все кости) кости домино - случайное их число или заранее заданное.
- выстраивать цепочку костей из предоставленного (сформированного ранее) набора. Пользователь может указывать, предоставлять ему все варианты цепочек или только один - самый длинный. Требования к интерфейсу. Интерфейс должен быть прост и ясен - не сложнее, чем пара кнопок и пара полей ввода-вывода. Не следует использовать CSS. Интерфейс должен состоять из пары страниц. Первая - для генерации наборов костей, вторая - для построения цепочек и вывода результатов. Также должна быть заглавная страница, с которой можно попасть на любую из выше описанных.
На даный момент существует ограничение по количеству доминошек. Это произошло из-за рекурсивного алгоритма нахождения всех цепочек. При больше 11 костяшек алгоритм отрабатывает несколько минут и выше в зависимости от числа. Пытался реализовать с помощью Эйлерового пути, но алгоритм получаеться слишком сложный, так как обезательными условиями есть связаность графа и максимум 2 вершины с нечетной степенью. Также пробовал сделать через ForkJoinPool, да, получилось розпаралелить и увелечить производительность, но проблема возникла с борьбой за общие ресурсы, что иногда приводило к некоректным результатам и откинуло этот вариант для текущей реализации.
#Под src/main/resources находяться:
- Скрипты для создания бд и таблиц, файл - ScriptsForCreateDBandTables.sql
- Скрипты для заполнения бд, файл - ScriptsForFillDBData.sql
- Проперти для логирования, файл - log4j.properties ( по дефолту логи хранять в корне проекта, для приложения в файле log4j_Domino.log и для сервера в JettyServer.log)
- Проперти для подключения к db, файл - db.properties
- Проперти для конфигурации JNDI, файл - jndi.properties
#Так как это maven проект для билда нужно запустить:
$ mvn clean package
#Для запуска org.eclipse.jetty_with_jsp.InitServer (Отдельный класс для запуска был написан для того что бы Embeded Jetty работал c JSTL, по дефолту JSTL не работают)
#$ mvn exec:java
Для работы с приложением перейдите:
http://localhost:8080/DispatcherServlet
#Для остановки Jetty используйте:
CTRL+C
#Само приложения по факту представляет собою три страницы:
- Main(index.jsp) - стартовая страница, при первом запуске загоужаеться история, которая устанавливается в сессию
- Get Chain(getChain.jsp) - страница для генерации цепочки, можно указать размер цепочки или выбрать рандомный, если количество не указан и будет выбрана кнопка выбора по определеному количеству - будет выбрано рандомное количество
- Generate Sets(generateSets.jsp) - страница для генерации сетов(наборов домино которые, генеряться на основе выбраной/полученой цепочки), также отображает историю также на случай ошибок добавлена строница errorPage.jsp
##TODO:
#bat и bash скрипты для инициализации и тестового запуска.
#управления БД via MAVEN, плагин уже нашел и добавил