Общий принцип работы конвертера представлен на рис. 4.
Рис. 4. Общий принцип работы конвертера
10.Схема решения и поток данных
Схема разрабатываемого решения представлена на рис.5.
Для удобной авторизации в вики добавлено расширение GoogleLogin. При создании страницы в вики совершаются два действия: запись в БД о новой странице и обращение к Docs to Wiki API для создания нового связанного документа. В приложении 2 приведен фрагмент программного кода по созданию связанной страницы. Далее при попытке редактирования страницы происходит проверка на домен пользователя через взаимодействие с БД, в случае, если проверка выполнена успешно происходит запрос к Docs to Wiki API на получение ссылки на редактирование Google Документа. В приложении 3 приведен фрагмент программного кода по запросу ссылки на редактирование. В случае неуспешной проверки на домен пользователя выдается ссылка с доступом только на чтение.
В обратную сторону при помощи дополнения Docs To Wiki Add-On Private в первую очередь происходит авторизация в MediaWiki при помощи установленного расширения OAuth, после авторизации по нажатии на кнопку «Публикация» на стороне Google scripts происходит конвертация текста в необходимую wiki-разметку и посредствам обращения к MediaWiki API происходит публикация созданного текста. В приложении 4 приведена логика соблюдения разметки в программном коде.
Рис. 5. Схема работы конвертера.
11.Авторизация wiki
Поскольку в проекте важно отслеживать изменения, вносимые каждым участником, сам собой встает вопрос авторизации этих участников. И если для первоначального эскизного проекта было достаточно импровизированной системы авторизации, то в реальных условиях с потенциальными тысячами пользователей необходимо тщательно подойти к этому вопросу. Изначально регистрация производилась по email с дальнейшей привязкой к учетной записи. Но даже если предположить, что изначально все имеющиеся пользователи(студенты и преподаватели) будут внесены в базу, стоит вопрос их дальнейшего добавления в больших количествах. Система авторизации может базироваться либо на библиотеках wiki-движка, либо на нативном модуле от GoogleOAuth. В качестве наиболее оптимального был выбран OAuth. Все пользователи имеют домен miem.hse.ru. Пользователь проходит первичную регистрацию, затем после добавления его данных в базу можно производить вход либо по своему логину, либо через почту.
Доработка выдачи прав на чтение и редактирование в Google Documents.
В начальной версии права на редактирование всех google-документов и связанных с ними вики-страниц выдавались единоразово. В программе формировался массив с idgoogle-документов и по каждому уходил запрос через googleapi. Происходило это на этапе регистрации. Теперь же кнопка «Открыть» на странице google-документа выдает пользователю ссылку только на чтение. А лишь при переходе в «Edit» отправляется запрос по конкретному документу на выдачу прав на редактирование.
12.Развёртывание проекта
Для развертывания разработки в самом простом случае подойдет связка ssh + git pull + docker-compose на сервере. В этом случае на сервер будут доставлены патчи коммитов, которые есть в репозитории, но еще не появились на сервере, т.е. «только обновления файлов, которые сейчас существуют». Этот метод используется довольно часто.
Далее необходимо при помощи docker-compose собрать контейнеры и поднять используемые сервисы. После этого необходимо при помощи браузера и обращения к домену wiki.auditory.ru настроить развернутую вики, подключить базу данных и добавить необходимые расширения. После проведения настройки будет сформирован файл LocalSettings.php, который необходимо разместить в корневой директории проекта на сервере. Далее требуется для администратора вики-проекта подтвердить адрес электронной почты. После этого необходимо заполнить настройки клиентского подключения для OAuth и получить необходимые токены для обращения скриптов, используемых дополнением на стороне Google Documents, к вики. После внесения токенов в scripts.google.com в main.gs для проекта «Docs2Wiki Add-On Private». Остаётся только с учетной записи администратора вики одобрить подключение OAuth и можно начинать работу внутри вики с возможностью использования разработанного конвертера.
Инструменты достаточно просты, переход на них -- дело одного выходного дня, и может быть сопряжен со сложностями только в связи с новизной проводимых работ для пользователя.
Более детальную и технически точную инструкцию можно найти по ссылке в приложении 5.
13.Тестирование
Сначала необходимо определиться с методикой тестирования (Test Driven Development, Behavior Driven Development, Лень-Driven Development). Скорее всего, тесты будут выполняться на локальной машине, в процессе написания. Используя RSpecов связке с Guard. Guard отслеживает изменения в коде и запускает набор юнит-тестов, которые покрывают измененный код. Весь процесс занимает не больше минуты-двух, на затрудняя работу системы. Как только тест проходит неудачно, меняем код до тех пор, пока он не станет зеленым. Пока тестов мало (это не самый лучший знак), локального запуска перед деплоем достаточно -- например, чтобы проверить релиз на доступность критического функционала.
В какой-то момент речь может зайти о Continious Integration. Это возможность иметь стабильный билд в любой отрезок времени, а также принимать решение о годности каждого отдельного коммита. Сопряжено с деплоем кода на integration-сервер и запуском на нем тестов.
Результаты
В процессе выполнения дипломной работы были изучены такие языки программирования, как JavaScript и PHP, требующиеся для создания веб-страниц. Приобретены навыки, необходимые для разработки. Более того, было разработано программное средство, реализующее двухстороннюю передачу данных, а также минимизирующее рабочий процесс пользователя. Более того, разработанный продукт помимо поставленных целей решает проблему не только транспортировки данных и сокращения время работы пользователя над конкретными задачами, но и является интеграционным мостом между двумя рабочими средами MediaWiki и Google Documents.
Изначально проект начинался как групповой, работа была начата в октябре 2018 года. Первые версии приложения были созданы еще в феврале 2019 года. С тех пор некоторые студенты вышли из проекта по разным причинам, в связи с этим довольно трудно посчитать трудозатраты и человекочасы. Объем работы измеряется в 17726 строках кода, более подробная статистика на рисунке 6.
Рис. 6. Анализ репозитория github при помощи cloc.
Программный код продукта расположен в академическом репозитории, ссылка в приложении 1. Необходимая сопроводительная документация по правилам установки разработки доступна по ссылке в приложении 5. По ссылке в приложении 6 доступно подробное видео с инструкцией по установке (User Manual).
Итоговый результат проекта соответствует всем поставленным требованиям и критериям.
конвертер редактирование проект