Дипломная работа: Разработка двухстороннего конвертера Markdown-Google Documents

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Введение

Один из лучших инструментов, существующих на сегодняшний день, позволяющих грамотно, удобно и быстро организовывать справочную информацию в сети, - это вики-движок. Данная система управления содержимым предоставляет пользователям возможность совместно организовывать рабочую среду для создания, редактирования и управления создаваемым контентом. Стандартные инструменты, позволяющие обрабатывать содержимое вики-страниц, к сожалению, не отвечают всем запросам пользователя в 2019 году.

Основной целью данной работы является реализация инструмента, который создает связанный документ в известной многим рабочей среде Google Documents и осуществляет прямую и обратную конвертацию содержимого документа. Для ее достижения были исследованы особенности работы с веб-страницами, а также принципы передачи информации.

Для реализации поставленной цели были выбраны некоторые языки программирования. Главными средствами являются PHP и JavaScript, на которых и будет создан исходный код программы. В качестве примера реализации, разрабатываемый конвертер будет работать на базе вики-движка MediaWiki версии 1.32.х.

Многие организации нуждаются в сервисах, которые предоставляют возможность хранить и управлять  контентом, обеспечивают комфортное обслуживание рабочей среды, имеют функциональность, хранящую историю версий данных и могут масштабироваться. Одним из таких сервисов можно назвать вики-движок. У сервиса множество достоинств, пользователям даётся возможность отслеживать все совершаемые изменения над той или иной вики-страницей, учитывать версии страницы, формировать какого-либо типа контент совместно с другими авторами, настраивать и добавлять новые инструменты, позволяющие взаимодействовать как с вики, так и с контентом. Именно благодаря тому, что программное обеспечение Вики имеет открытый исходный код есть возможность решить одну из основных недостатков вики-движка - редактирование вики-страниц. Для редактирования контента на вики-страницах необходимо знать синтаксис вики-разметки, которая используется для оформления текста на веб-сайтах. Язык разметки основан на правилах языка HTML и поддерживает схожие инструменты разметки. В большинстве случаев, ответственными за заполнение вики-проектов содержимым назначают специалистов по написанию документации, что не всегда подразумевает владение навыками вики-разметки, основанной на HTML. Даже среди пользователей, которые разбираются в синтаксисе, существующий способ редактирования вики-страниц не считается удобным.

Google Documents является одним из самых лучших аналогов всемирно популярного текстового редактора от корпорации Microsoft Word. Из-за схожести интерфейсов и инструментов редактирования документов Google Documents и Word любые правки, которые будет необходимо внести в документ могут быть быстро и легко обработаны в Google Documents. Все способы редактирования интуитивно понятны каждому пользователю, имеющему базовые навыки обработки контента.

Именно поэтому для того, чтобы облегчить процесс редактирования контента в вики-пространстве обозначена цель разработать конвертер, позволяющий транспортировать содержимое вики-страницы в удобный для пользователя текстовый документ в среде Google Documents. Таким образом при помощи разработанного конвертера получится сократить время работы пользователя и облегчить задачу, исключив необходимость изучения синтаксиса вики-разметки.

В настоящее время существуют расширения для вики, позволяющие установить в рабочую среду текстовые редакторы от сторонних разработчиков. Данные редакторы умеют преобразовывать графическую разметку в синтаксическую и имеют удобный интерфейс. Но, к сожалению, эти редакторы не решают проблему совместного редактирования документа в режиме реал-тайм и не обладают настолько обширным инструментарием, каким обладает Google Documents.

Всё вышеуказанное подтверждает актуальность и необходимость создания инструмента, позволяющего транспортировать данные в обе стороны между такими средами как MediaWiki и Google Documents.

1.Степень разработанности

На данный момент продукт разработан и установлен на облачном сервисе vscale.io. На сервере развернута MediaWiki версии 1.32 и доступна по адресу wikiwork.site. Планируется использование вики для создания справочной документации по разрабатываемым студентами проектам и для сопровождения проектов внутри университета. На данный момент Вики настроена таким образом, что доступ к ней есть у любого пользователя, но возможность редактирования и создания новых статей предоставлена только авторизованным в вики пользователям, у которых адрес электронной почты содержит домен «miem.hse.ru». Для переадресации из вики в Google Documents необходимо первоначально создать страницу в вики и записать изменения. Вместе с первичной записью изменений создается связанный документ в Google Documents. Каждый клик авторизованного пользователя по кнопке «Edit in Google Docs» приравнивается к клику по ссылке, которая даёт пользователю доступ на просмотр и редактирование документа в Google Documents.

2.Цели и задачи

Одним из основных аргументов в пользу выбора темы проекта стало развитие в нашем университете проектной деятельности. Для каждого проекта, создаваемого в рамках какой-либо образовательной программы необходимо вести сопроводительную документацию. Для этих целей была выбрана MediaWiki. К сожалению, редактирование контента для конечных пользователей при помощи стандартных инструментов MediaWiki из коробочной версии трудозатратно и не практично. В связи с этим было принято решение разработать конвертер, способный достичь установленные цели.

Основной целью данной работы является разработка нового инструментального средства, способного упростить рабочий процесс пользователя. Иными словами, минимизировать потраченное время для достижения поставленного результата.

Чтобы достичь поставленную цель, также необходимо реализовать некоторые подзадачи:

1. Изучить и проанализировать соответствующие литературные сведения, которые помогут в последующем осуществлении функционального программного средства и понимании реализуемых процессов. Реализуемый инструмент, должен будет включать в себя весь необходимый функционал. А точнее: автоматическое создание нового документа в Google Documents при записи новой страницы в mediawiki и добавление ссылки на документ при создании новой страницы, замена содержимого документа при сохранении новой или существующей страницы, публикации содержимого документа на страницу, а также наличие простого и комфортного пользовательского интерфейса.

2. Оценка программных средств со схожим принципом работы. Цель текущей подзадачи носит аналитический характер. Проанализировав несколько подобных инструментов, будут выявлены теоретические и практические недостатки того или иного программного средства, для нахождения возможных решений и их последующем устранении.

3. Применение полученных знаний при создании программного кода, реализуемого через такие языки программирования, как JavaScript и PHP. Вдобавок будет изучен и применен язык редактирования веб-страниц (вики-разметка), используемый при придании структуры и виду тексту, расположенному на веб-странице.

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

Главным результатом данной работы будет являться программа, представляющая собой расширение для MediaWiki, которая будет предназначена для применения в целях редактирования вики-страниц и дополнение для Google Documents, которое будет предназначено для публикации в среду MediaWiki внесенных в документ правок. Конечными пользователями являются редакторы Вики-страниц.

Функциональным назначением разработки является предоставление пользователю возможности изменения контента вики-страниц посредствам синхронизации с содержимым документов в Google Documents.

3.Теоретическая и практическая значимость

Основная практическая значимость разрабатываемого конвертера заключается в упрощении рабочего процесса для пользователя и сокращении времени, затраченного на обработку контента. Помимо основного практического преимущества доработки существуют и дополнительные особенности, которые значимы для рабочего процесса между средами. Благодаря конвертеру, который по сути выполняет роль интеграционного моста между двумя средами MediaWiki и Google Documents расширяются существующие базовые функциональность сервиса MediaWiki, такие как контроль версий и возможность редактирования одной вики-статьи несколькими авторами.

Существующие стандартные инструменты редактирования страниц в MediaWiki не позволяют редактировать одну и ту же страницу нескольким авторам в режиме реального времени, в связи с тем, что для каждого пользователя, желающего внести правки открывается только крайняя опубликованная версия страницы и доступа к правкам, которые в это же время вносит другой автор нет. В связи с этим при единовременном редактировании одной и той же страницы несколькими пользователями могут возникнуть конфликты при публикации. Благодаря интеграции с Google Documents конфликты при редактировании в реальном времени исключаются стандартными инструментами среды Google Documents и каждому автору видны все действия других авторов вплоть до местоположения курсора.

Стандартный функционал контроля версий расширен следующим образом:

Допустим, создана первая версия страницы в вики, далее наполнение и редактирование страницы перешло в среду Google Documents, несколько авторов в режиме реального времени внесли свои правки и в итоге страницу с изменениями опубликовали в вики. Итого помимо стандартных двух версий, хранимых внутри самой вики есть возможность отследить историю изменений в связанном документе Google Documents, где более детально логируются все изменения каждого автора и способ отображения изменений более дружелюбный для пользователя, чем в вики.

4.Положения, выносимые на защиту

В ходе функционального тестирования разработки возникли следующие трудности. Необходимо было решить, каким образом определять, какие связанные документы каким пользователям будут доступны. В первой версии реализация была следующая: при создании учетной записи в вики создавался массив с уникальными идентификаторами существующих связанных документов в Google Documents и для каждого элемента массива выполнялся REST-запрос на получение доступа на редактирование конкретного документа для нового созданного пользователя с конкретным почтовым адресом.

Было принято решение изменить метод установки доступов на редактирование в связи с рисками, которые нельзя было избежать. А именно: процесс создания пользователя мог затянуться на неопределенное время в зависимости от длины массива и скорости работы API. Было реализовано следующее решение:

Теперь всем пользователям доступна переадресация в Google Documents по кнопке “Open in Google Docs”. Клик по кнопке приравнивается к клику по ссылке, которая дает права только на чтение документа. Для того, чтобы авторизованному пользователю с почтой привязанной к аккаунту, домен которой miem.hse.ru, отредактировать страницу необходимо сначала открыть страницу в вики на редактирование и уже оттуда нажать на кнопку “Edit in Google Documents”, клик по которой приравнивается к клику по ссылке с выдачей прав на чтение и редактирование.

5.Постановка задачи

Основная цель данного исследования - упростить взаимодействия конечного пользователя в вики-проектах по редактированию контента. Учитывая это, в результате исследования будет разработано программное обеспечение, позволяющее передавать данные из Вики в Google Documents и обратно. Для достижения этой цели представляется целесообразным разделить всю проектную работу на несколько частей:

1. Провести теоретический анализ возможных решений и методов для реализации;

2. Создать расширение для MediaWiki;

3. Cоздать дополнение для Google Documents;

4. Провести тестирование работоспособности, с целью выявления недостатков для дальнейшей доработки;

5. Развернуть и настроить произведенное ПО;

6. Создать сопроводительную документацию.

Достичь наиболее эффективного и простого в реализации результата можно путем решения следующих задач:

1. Произвести анализ существующих аналогов;

2. Спроектировать возможность связи api google documents и wiki разметки;

2. Разработать основной модуль транзита google documents - media wiki;