DIV_CLASS_ROW

Tech:Summary 🔗


Содержание:

    Сервер
    Mediawiki
        Публичный и редакторский режим
        Wiki-farm и interwiki
        Структуризация информации
            Инфобокс
            Пространства имен
            Категории
            Перенаправления
        Редакторский интерфейс
            Редактор страниц
            Генератор субтитров
            Сервис переводов страниц
        CatList
        Elasticsearch
        HideActions
        HideBlock
        Videogallery
    LDAP
    Backup system
    Mantis

Материал из VEDA Wiki
Перейти к: навигация, поиск

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

Ресурс базируется на вики-движке Mediawiki и состоит из комплекса различных сервисов.


Сервер

Имеется два сервера - development и production. Технически оба сервера практически одинаковы. Сервера организованы в виде виртуальных машин под управлением Fedora Linux 41. Со стороны серверов веб-хостинг организован на базе nginx. Также на серверах организованы некоторые другие сервисы, о которых ниже.

Mediawiki

Далее будет описаны технические подробности организации Mediawiki-составляющей данного ресурса.


Публичный и редакторский режим

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


Wiki-farm и interwiki

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


Структуризация информации

Инфобокс

Это основной механизм структуризации. Инфобоксы - это семейство шаблонов, принимающих некоторые исходные параметры и затем отображающие их в виде прямоугольного блока справа вверху страницы. Информация инфобокса по сути - это краткое резюме страницы. Также шаблон инфобокса осуществляет автоматическое подключение нужных категорий. В шаблон инфобокса встроены дополнительные механизмы обработки информации. Инфобоксы также определяют тип информации страницы (Персона, Организация, Местность, Артефакт, Событие, Гипотеза и др.). Для каждого типа предусмотрен свой шаблон инфобокса, который надо выбрать при создании страницы.

Пространства имен

Обычные страницы располагаются с основном пространстве имен и доступны в оглавлении ресурса. Субтитры вынесены в отдельное пространство имен Субтитры, но доступны для поиска и публичного доступа. Также имеются пространства имен для внутреннего пользования: Справка, Tech (различные технические странички) и некоторые другие. Эти пространства имен не доступны для публичного доступа и не индексируются движком.

Категории

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

Перенаправления

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


Редакторский интерфейс

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

Редактор страниц

Для создания и редактирования страниц используется штатный редактор, немного модифицированный (настроены дополнительные кнопки форматирования). Под редактором настроена специальная панель "Инструменты редактора" с дополнительными средствами редактирования. Панель оформлена в виде раскрывающегося блока, в котором имеются списки категорий и шаблонов, кликнув на которые можно вставить их в страницу. Вставка организована специальным внутренним устройством вставляемых шаблонов а также специальных расширений CatInsert и TplInsert (написаны на основе CharInsert). Данная панель призвана существенно облегчить процесс создания и редактирования страниц, который получился немного сложным.

Генератор субтитров

Специально созданный для данного ресурса сервис, интегрирован в интерфейс вики, но не является частью движка. Написан на PHP. Представляет из себя форму для ввода адреса Ютюб-ролика и кнопки, при нажатии на которую из видео скачиваются субтитры. Далее к полученному тексту применяется вики-форматирование и выводится в отдельном блоке, готовый к последующей вставке. Ниже этого блока, на основа адреса ролика генерируется ссылка на предполагаемую страницу субтитров. У сервиса есть расширенный режим (при добавлении ?form в адрес сервиса). В расширенном режиме есть возможность подключать текстовый переводчик. Это применяется к иноязычным видеороликам. Перевод осуществляется только на русский язык.

Сервис переводов страниц

Штатный i18n-сервис для Mediawiki, основани на расширении Translate. Полезность в данном проекте этого сервиса пока под вопросом.


CatList

Упоминавшееся ранее расширение CatList создано для отображения страниц в виде галереи. Исходные данные приложение получает из параметров шаблона инфобокса и затем красиво отображает в виде блока с картинкой, именем страницы и редиректами. Расширение имеет множество дополнительных параметров для настройки отображения: фильтры по инфобоксам, категориям, пространствам имен, включению разбивки по алфавиту итд. Расширение можно применять как к отдельной странице соотв.категории, так и располагать в любой другой - в этом случае галерея страниц будет отображаться как отдельная секция. Данный функционал является частью вставляемого инфобокса.

Elasticsearch

Штатный поисковый функционал движка заменен на Elasticsearch. Для этого на сервере был установлен и настроен Elasticsearch и настроена Mediawiki (расширения CirrusSearch Elastica). CyrrusSearch немного модифицирован для возможности поиска по сырому вики-тексту.

HideActions

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

HideBlock

Раширение для скрытия участка информации на странице при публичном доступе. Добавляет поддержку дополнительных тегов <hide>..</hide>, далее сокрытие осуществляется средствами CSS. Осуществляет лишь "косметическое" сокрытие и не годится для сокрытия какой-либо конфиденциальной информации.

Videogallery

Для создания галереи видеофайлов создан специальный модуль, написанный на LUA. Кроме списка видеофайлов модуль принимает опциональные параметры для настройки отображения.


LDAP

Для функционала ресурса настроена авторизация пользователей по LDAP. Создание новых пользователей происходит путем создания соотв. LDAP-аккаунта. Для самостоятельного изменения пользователем своего пароля есть сервис SSP


Backup system

Система бекапа, созданная для данного ресурса. Состоит из python- bash-частей. bash-скрипт собирает необходимую информацию со всего сервера, упаковывает в архив и разбивает его на тома по 2Гб. Затем python-часть отсылает тома в предназначенную для хранения телеграм-группу.


Mantis

Система баг трекинга, которую планируется использовать для организации рабочего процесса по редактированию и переводу страниц. Сервис также будет интегрирован с LDAP. Пока не реализовано.