Щербина О.А.
Національний технічний університет України «Київський політехнічний інститут ім. Ігоря Сікорського»
Способи і засоби автоматизації процесів адміністрування платформи Moodle
Адміністрування сайтів Moodle крупних закладів
освіти нерідко потребують значних обсягів робіт. Наприклад, для переведення
студентів на наступний рік навчання, треба відрахувати студентів з курсів, які
вони вивчали минулого року, й зарахувати на курси, що вивчаються в поточному році.
Якщо кількість курсів на платформі вимірюється сотнями чи тисячами, то
виконання таких обсягів робіт традиційними засобами адміністратору сайту стає
просто не під силу.
Зазвичай, у таких випадках
адміністратор не бачить іншого виходу, як розподілити подібні роботи між
багатьма виконавцями. Наприклад, можна зобов’язати викладачів самостійно
записувати студентів на свої курси. Але для цього треба, по-перше, навчити кожного
викладача це робити, і, по-друге, організувати і проконтролювати правильність і
вчасність виконання усіма викладачами цих робіт, а все це потребує додаткового часу і зусиль.
Отже, сам по собі перерозподіл
робіт між багатьма виконавцями не зменшує їх обсягу, але збільшує сумарні
затрати праці, бо з’являються нові види робіт, пов’язані з навчанням, організацією,
контролем виконання. Крім того, на ту саму роботу некваліфікований виконавець
витрачає більше часу, ніж кваліфікований. Ну і якість виконання робіт
некваліфікованим виконавцем може бути гіршою.
Дійсно, як показує практика,
найкраще кожен виконує свою звичну роботу, – ту, з якою він має справу щодня.
Але в нашому прикладі йдеться якраз про роботу, яка виконується раз на рік чи
раз на семестр. Звісно, згодом значна частина викладів забуде способи виконання
цієї роботи, отже, через рік знову зіткнеться з труднощами.
Таким чином, на прикладі робіт з
адміністрування сайту Moodle
теж можна зробити загальновідомий висновок про доцільність правильного
розподілу праці, коли кожну роботу виконує кваліфікований виконавець, який до
того ж має змогу застосовувати ще й більш ефективні прийоми і засоби роботи,
зокрема засоби автоматизації, що розглядаються нижче. В якості такого засобу
автоматизації може бути використана утиліта Moosh [1] – програма, яка дає змогу
виконувати більшість команд адміністрування сайту Moodle через командний рядок.
Зауважимо, що Moosh – це не
плагін для Moodle, а окрема програма, яка встановлюється поза каталогами сайту Moodle,
інакше в ній будуть недоступні певні команди, в тому числі й команда завантаження
і встановлення в поточний каталог нового сайту Moodle: moosh download-moodle.
Шлях до місця встановлення Moosh треба
прописати командою ln -s $PWD/moosh.php ~/bin/moosh. Тоді під час SSH-доступу до будь-якого сайту Moodle, користувач
матиме змогу вводити в командний рядок не тільки команди операційної системи, а
й команди Moosh.
Наприклад, щоб створити в
категорії курсів з номером 41 курс з повною назвою «Теоретична механіка» і
короткою назвою «ТеорМех» можна виконати команду:
moosh -n course-create --category 41 --fullname "Теоретична
механіка" "ТеорМех"
а щоб відновити в курс з
ідентифікаційним номером 412 резервну копію, що зберігається у файлі /tmp/ zminy.mbz, можна скористатися командою
moosh -n course-restore -e /tmp/zminy.mbz 412
Як і в інших системах, що
працюють з командним рядком, клавішами переміщення курсора вгору і вниз, можна
прокручувати на консолі команди, що виконувалися напередодні, вносити в них
виправлення і натисканням клавіші Enter повторно виконувати їх вже з іншими
параметрами: назвами та ідентифікаційними номерами курсів тощо.
Уже розглянутий вище приклад дає
уявлення про те, наскільки Moosh пришвидшує виконання команд з адміністрування
сайту Moodle в порівнянні з виконанням тих самих дій через власний інтерфейс
сайту. Ще більшого пришвидшення можна досягти, якщо замість того, щоб вводити
команди одна за одною безпосередньо через консоль, запускати на виконання цілі файли,
в яких записано багато таких команд.
Але ми в цьому дослідженні
спробуємо піти ще далі, розглянувши способи автоматичної генерації таких
файлів. Це не тільки дасть змогу ще більше пришвидшити процеси адміністрування
сайту, а й покращить його якість, оскільки зменшить ймовірність помилок, що нерідко
виникають при ручному наборі команд або їх виконанні через власний інтерфейс Moodle.
Найбільш доступним, простим і
зручним засобом генерації таких файлів, на нашу думку, є процес злиття
документів у Word
або LibreOffice. Нагадаємо, що в цьому процесі бере участь основний документ – текстовий
файл, у якому записані команди Moosh, що містять поля злиття, а також
файл джерела даних – таблиці, назви стовпців якої співпадають з назвами цих
полів.
Процес злиття документів полягає
у створенні документу, в який основний документ копіюється стільки разів,
скільки рядків є у таблиці джерела даних. При цьому на місце полів злиття
щоразу підставляються значення з відповідного рядка цієї таблиці.
Отже, якщо створити, заповнити і
використати в якості джерела даних таблицю зі стовпцями: Номер категорії, Повна назва курсу, Коротка
назва курсу, а в основний
документ замість констант 41, Теоретична механіка і ТеорМех вставити відповідні поля
злиття, які (щоб відрізняти їх від звичайного тексту) тут і далі виділятимемо
напівжирним шрифтом:
moosh -n course-create --category Номер категорії --fullname "Повна назва курсу"
"Коротка назва курсу",
то результатом такого злиття документів
буде файл, що містить команди Moosh для створення всіх зазначених в цій таблиці
курсів.
Далі треба скопіювати ці команди
у текстовий файл у кодуванні UTF-8, назвавши його, наприклад, prog.sh і
додавши в перший рядок коментар #!/bin/bash, який інформує Unіx-подібну
операційну систему про те, що цей файл містить команди для виконання. Потім цей
файл треба завантажити на сервер, наприклад, у каталог /tmp, конвертувати
у формат Unіx-подібних операційних систем, виконавши команду dos2unix
/tmp/prog.sh, і запустити його на виконання командою bash /tmp/prog.sh.
Зазвичай виконання команд Moosh супроводжується
виводом відповідних повідомлень. Наприклад, після успішного виконання команди
moosh -n course-create --category 41 --fullname "Теоретична
механіка" "ТеорМех"
виводиться
ідентифікаційний номер створеного нею курсу, наприклад, 412.
Якщо ми працюємо з командним
рядком, то, побачивши цей номер, можемо зразу ж використати його у наступних
командах, наприклад, moosh -n course-restore
-e /tmp/zminy.mbz 412
Але як бути, якщо команди
виконуються у автоматичному режимі? Хто тоді прочитає цей номер і використає
його в наступних командах?
Для цього існує такий механізм.
Значення, що виводиться системою при виконанні першої команди, треба записати в
якусь змінну:
<Змінна>=`<Команда1>`
а потім підставити значення цієї
змінної в наступні команди:
<Команда2> …
$<Змінна>…
<Команда3> …
$<Змінна>…
Отже, в нашому прикладі, якщо зразу
після створення курсу треба відновити в нього резервну копію, що зберігається в
файлі /tmp/zminy.mbz, то основний документ може виглядати так:
m=`moosh -n
course-create --category Номер
категорії --fullname "Повна назва курсу" "Коротка назва курсу"`
moosh -n course-restore
-e /tmp/zminy.mbz $m
Тепер розглянемо яким чином може формуватися таблиця джерела
даних.
У багатьох випадках вона може наповнюватися вручну. Наприклад,
список курсів, які треба створити, може формуватися зовнішніми по відношенню до
сайту чинниками. Однак нас у цьому дослідженні більше цікавить формування
таблиці джерела даних за допомогою плагіну Configurable Reports [2, 3] або
Ad-hoc database queries [4, 5].
Наприклад, стоїть задача проведення
анкетування студентів щодо їхньої оцінки якості викладання розміщених на сайті
курсів. Її можна вирішити шляхом розміщення в кожному з них діяльності типу Questionnaire
[6]. Для цього створюємо і налаштовуємо цю діяльність в одному із курсів, а
потім робимо її резервну копію і відновлюємо її в усі курси, де вона потрібна. Список
ідентифікаційних кодів ID цих курсів формуємо за допомогою запиту до бази даних у Configurable
Reports. Далі робимо злиття з основним документом, що містить команду
moosh -n course-restore -e /tmp/zminy.mbz ID
Щоправда в такому простому випадку можна обійтися і без
злиття документів, сформувавши всі зазначені вище команди у таблиці Excel або
LibreOffice за допомогою функції CONCATENATE (СЦЕПИТЬ) або навіть у самому Configurable
Reports, де при написанні запитів також можна використати цю функцію. Тобто можна
написати запит до Configurable Reports, який виведе звіт, що міститиме
приблизно такий перелік команд:
moosh -n course-restore -e /tmp/zminy.mbz 123
moosh -n course-restore
-e /tmp/zminy.mbz 517
moosh -n course-restore
-e /tmp/zminy.mbz 1845
moosh -n course-restore
-e /tmp/zminy.mbz 1754 …
Його можна експортувати в
текстовий файл і запустити на виконання за допомогою Moosh. В результаті за лічені хвилини будуть
внесені зміни до тисяч курсів.
Зауважимо, що загальний підхід,
який передбачає злиття документів (в тому числі й з джерелом даних, одержаним в
результаті виведення звіту Configurable
Reports) може використовуватися не тільки для автоматичного формування
командних файлів для Moosh, а й для формування даних файлів csv, для Moodle.
Наприклад, розглянуту вище задачу
створення і наповнення курсів можна було б вирішити також за допомогою файлу csv, сформованого шляхом злиття
того самого джерела даних з таким основним документом:
Повна назва курсу;Коротка назва курсу;Номер категорії;/tmp/zminy.mbz
і додавання попереду рядку заголовків:
fullname;shortname;category;templatecourse
Як показує наш досвід, використання
файлів csv у деяких випадках має навіть переваги над використанням утиліти
Moosh, оскільки набір її команд поки що не є досконалим. Однак Moosh є
відкритою системою, яка дає змогу користувачам поповнювати набір команд Moosh
власними командами.
Зокрема, щодо задачі переведення студентів на наступний рік
навчання, про яку йшлося на початку цієї доповіді, то тут кращим рішенням поки
що є автоматичне формування файлів csv і плагіну Upload enrolment methods [7].
Отже, спільне використання утиліти Moosh, а також плагінів Configurable Reports або Ad-hoc database
queries відкриває великі перспективи щодо автоматизації процесів
адміністрування сайту Moodle. Тому, на нашу думку, вміння користуватися цими
засобами має бути в арсеналі кожного адміністратора крупного сайту.
Список використаних джерел
1. Moosh. [Електронний ресурс].
Режим доступу: https://moosh-online.com/
2. Configurable Reports. [Online]. Available: https://moodle.org/plugins/block_configurable_reports
3.
Configurable Reports. [Online]. Available: https://docs.moodle.org/311/en/Configurable_reports
4. Reports: Ad-hoc database
queries. [Online]. Available: https://moodle.org/plugins/report_customsql
5. Ad-hoc contributed reports.
[Online]. Available: https://docs.moodle.org/33/en/ad-hoc_contributed_reports
6. Questionnaire. [Електронний ресурс]. Режим доступу: https://moodle.org/plugins/mod_questionnaire
7. Upload enrolment methods. [Електронний ресурс]. Режим доступу: https://moodle.org/plugins/tool_uploadenrolmentmethods