Създайте приложение за удобно съхранение и организиране на линкове (bookmarks).
Предоставя следните функционалности на клиента:
- регистриране и вход с потребителско име и парола
- добавяне на нови bookmarks
- премахване на bookmarks
- групиране на bookmarks
- търсене на bookmarks по заглавие или ключова дума
💡 Bookmark-ите на потребителите трябва да се съхраняват във файлове на сървъра.
💡 Всеки добавен bookmark трябва да има заглавие. То трябва да отговаря на съдържанието на <title> таг-а от html
-а на страницата.
💡 При добавяне на нов bookmark, сървърът трябва да extract
-не ключовите думи от страницата, за да могат потребителите да търсят по тях.
- Ключовите думи са най-използваните думи в страницата. Погрижете се предварително да премахнете пунктуационни знаци, специални символи,
stopwords
и т.н. - Опитайте се да сведете думите до техните корени, използвайки някой
stemming
алгоритъм. Най-простият от тях, който можете да използвате, еSuffix-stripping algorithm
:
- if the word ends in 'ed', remove the 'ed'
- if the word ends in 'ing', remove the 'ing'
- if the word ends in 'ly', remove the 'ly'
- За лесно
parse
-ване наhtml
, може да използвате библиотеката JSoup.
Клиентът трябва да има command line interface
със следните команди:
register <username> <password>
Регистрира нов потребител в приложението с име и парола
login <username> <password>
new-group <group-name>
add-to <group-name> <bookmark> {--shorten}
Добавя bookmark в конкретна група. Aко опцията --shorten
е налична, сървърът трябва да съкрати оригиналния bookmark, използвайки API-то на Bitly, документирано тук.
remove-from <group-name> <bookmark>
list - извежда списък с всички линкове на потребителя
list --group-name <group-name> - извежда списък с всички линкове от дадената група
search --tags <tag> [<tag> ...]
search --title <title> - връща всички линкове, в чиито заглавия се среща <title>
cleanup - премахва всички bookmarks, чиито линкове вече не са валидни (т.е при /GET на bookmark-a се връща статус код 404 Not Found)
import-from-chrome - добавя всички bookmarks от Google Chrome
Google Chrome
съхранява вашите bookmarks
на файловата система в json
формат. Файлът с bookmarks
се намира в различни директории в зависимост от операционната система:
- Windows -
AppData\Local\Google\Chrome\User Data\Default
- Linux -
~/.config/google-chrome/Default/
- MacOS -
/Users/<Your UserName>/Library/Application\ Support/Google/Chrome
При неправилно използване на програмата, на потребителя да се извеждат подходящи съобщения за грешка.
При възникване програмна грешка, на потребителя да се извежда само уместна за него информация. Техническа информация за самата грешка и stackтraces да се записват във файл на файловата система - няма определен формат за записване на грешката.
Например, нерелевантно е при команда на потребител и възникнал проблем с мрежовата комуникация, да се изписва грешка от вида на "IO exception occurred: connection reset", по-подходящо би било "Unable to connect to the server. Try again later or contact administrator by providing the logs in <path_to_logs_file>".
При възникване на програмна грешка от страна на сървъра, подходящо съобщение се изписва на конзолата и във файл, като освен това, във файла се записва допълнителна информация (например, при заявка на кой потребител е възникнала грешката, ако въобще е обвързана с потребителско взаимодействие) и stacktraces.
Качете в грейдъра .zip
архив на познатите директории src
и test
. Ако пакетирате допълнителни файлове (които не са .java), те трябва да са в корена на архива, на нивото на src
и test
.
В грейдъра няма да има автоматизирани референтни тестове.
Проектът ви трябва да е качен в грейдъра не по-късно от 18:00 в деня преди датата на защитата.
Успех!