/Java

Primary LanguageJava

Университет Итмо. Кафедра КТ

Markdown to HTML

  1. Разработайте конвертер из Markdown-разметки в HTML.
  2. Конвертер должен поддерживать следующие возможности:
    1. Абзацы текста разделяются пустыми строками.
    2. Элементы строчной разметки: выделение (* или _), сильное выделение (** или __), зачеркивание (--), код (`)
    3. Заголовки (# * уровень заголовка)
  3. Конвертер должен называться Md2Html и принимать два аргумента: название входного файла с Markdown-разметкой и название выходного файла c HTML-разметкой. Оба файла должны иметь кодировку UTF-8.

Web Crawler

  1. Напишите Web Crawler, обходящий HTML-страницы на заданную глубину и вытаскивающий из них картинки.
  2. Информация о HTML странице (класс Page:
    • String url – URL страницы (идентификатор);
    • String title – заголовок страницы (содержимое элемента title);
    • List<Page> links – ссылки (атрибут href элемента a), в порядке появления на странице;
    • List<Page> backLinks – ссылки, ведущие на страницу;
    • List<Image> images – Картинки на странице (элемент img), в порядке появления на странице.
  3. Информация о картинке (класс Image):
    • String url – URL картинки (идентификатор);
    • String file – имя файла, в котором сохранена картинка;
    • List<String> pages – страницы, на которых встречается картинка.
  4. Интерфес Web Crawler:
    public interface WebCrawler {
        Page crawl(String url, int depth);
    }
                
  5. При загрузке на глубину два, должны быть загружены и проанализированы переданная страница и страницы, на которые она ссылается.
  6. Для загрузки страниц и картинок можно использовать метод openStream класса URL.
  7. Вы можете считать, что все страницы имеют кодировку UTF-8.

Offline Browser

  1. Напишите Offline Browser, обходящий HTML-страницы на заданную глубину и сохраняющий их для offline-просмотра.
  2. Вместе с HTML-страницами должны быть загружены сопутствующие ресурсы: картинки, скрипты и css-файлы. При сохранении не должны создаваться лишние копии ресурсов.
  3. Ссылки на сохраненные страницы должны быть изменены так, чтобы работать без подключения к Интернету. Ссылки на другие страницы должны остаться без изменений.
  4. Вы можете считать, что все страницы имеют кодировку UTF-8.
  5. Примечание. В результате работы наивного offline-браузера, некоторые страницы (например, использующие динамическую загрузку скриптов и CSS) могут отображаться некорректно. Правильная загрузка таких сайтов не входит в данное домашнее задание.

Очереди

  1. Определите интерфейс очереди Queue и опишите его контракт.
  2. Реализуйте класс LinkedQueue — очередь на связном списке.
  3. Выделите общие части классов LinkedQueue и ArrayQueue в базовый класс AbstractQueue.