Настоящий блог поставляется на условиях "как есть". Автор не принимает на себя никаких гарантийных обязательств и не несет ответственности за любые убытки читателя, полученные при применении знаний, почерпнутых из этого блога.
Страницы
Ярлыки
moodle
затачивание пилы
автоматизированная обучающая система
php
python
yii
байесовские сети
вспомнить-все
красивый код
модель обучаемого
git
linux
интеллектуальная обучающая система
проверка решений
.tex and HTML
Automatic Assessment In Math Education
CSS
Django
Front-end
HTML
ImageJ
PyDev
South
Sublime
Ubuntu
VirtualBox
ajax
haskell
jQuery
javascript
mathjax
maxima
ООП
вычислительная сложность алгоритмов
зарубежные конференции
интернет-технологии
логистическая регрессия
машинное обучение
методы классификации
пятница, 20 января 2012 г.
Maxima и Moodle интеграция
В продолжение темы интеграции maxima и moodle. Сегодня нашла статью "Реализация сервис-ориентированных распределенных систем на основе технологии Ice". В ней пишут, что апробация описанного подхода на практике велась в том числе сервиса доступа к системе компьютерной алгебры Maxima, при этом использовалась реализация контейнера сервисов на языке C++, аналогичная описанной в статье. И еще нашла такую статью: "Разработка Grid-сервиса для системы компьютерной алгебры Maxima на основе промежуточного программного обеспечения Ice". Аннотация статьи многообещающая: "Изложены результаты работы по созданию Grid-сервиса компьютерной алгебры на основе системы Maxima (с открытым исходным кодом) средствами промежуточного программного обеспечения Ice (Internet Communications Engine). Данный сервис предоставляет пользователю простой механизм удалѐнного вызова операций Maxima, а также возможности создания/удаления исполняемых процессов Maxima на удалѐнном хосте. Статья содержит описание основных
способов программного взаимодействия с системой Maxima и принципов реализации сервиса." Попробую скачать эту статью в понедельник.
среда, 11 января 2012 г.
Создание модуля в Moodle 2.x типа activity (часть 8)
Цель: поставить в gradebook оценку, введенную студентом с помощью submit_form.php. Этого можно достичь, добавив в файл view.php следующие строки:
и
Также пришлось подправить код функции itask_grade_item_update в файле <...>itask/lib.php следующим образом:
И заработало:
вторник, 10 января 2012 г.
Создание модуля в Moodle 2.x типа activity (часть 7)
Следующий шаг - сделать так, чтобы при нажатии на кнопку "Сохранить" пользователю записывалась в gradebook та оценка, которую он выбрал. Попробую для начала получить данные, введенные пользователем в форму. Посмотрела на файл <...>/moodle/mod/glossary/import.php и написала следующие строки в файл <...>/itask/view.php: Функцию get_data() нашла в файле formslib.php. Тут написано, что get_data() - "Получить данные формы после всех проверок на стороне клиента и сервера. Данные получаются в виде объекта, именами полей которого являются имена заданных в функции definition() объектов, а значениями - значения полей в форме (по умолчанию или введенные)." Так что дописала еще такие строки:
Кстати, вывод footer'а тут нужен для того, чтобы сбоку на новой странице после нажатия кнопки "Сохранить" в окне activity типа itask оставалось стандартное меню Moodle.
Теперь при открытии конкретного activity типа itask Moodle стал выдавать следующую ошибку: "You must specify a course_module ID or an instance ID". Далее я заметила, что в файле <...>/moodle/lib/formslib.php конструктору класса moodleform на самом деле подается несколько параметров со значениями по умолчанию, в их числе параметр $customdata, про который в комментариях написано, что "param array $customdata if your form defintion method needs access to data such as $course $cm, etc. to construct the form definition then pass it in this array. You can use globals for somethings".Если в файле view.php закомментировать все, что связано с submit_form, и написать
То при открытии одного activity типа itask каждый раз будет выводиться "n=0, id=8", а для другого - "n=0, id=9". Если попробовать вывести course->id, то будет выводиться "2", непонятно почему, ведь в настройках курса в поле "идентификатор курса" я ставила значение 1. Правда, в справке Moodle к полю "идентификатор курса" написано, что "Идентификационный номер курса необходим только при использовании его во внешних системах." Так как это поле можно оставить пустым, видимо, этот идентификатор и "системный" - две разные вещи. Тогда создала экземпляр класса mod_itask_submit_form так:
И заработало, теперь при нажатии кнопки "Сохранить" на новой странице браузера вместо элементов управления submit_form выводится выбранная оценка.
Создание модуля в Moodle 2.x типа activity (часть 6)
Следующий шаг - видоизменение формы, отображающейся на экране, когда открывается некий activity типа itask. В книге написано, что "the two main functions to add form elements to your form are addElement и createElement. These are essentially the same function, except that createElement returns the created form element object without adding it to the form<...>You should typically use addElement, unless you need to perform extra processing on the element before adding it to a form."Я хочу на этой форме сделать выпадающий список с заголовком "Какую оценку вы хотите за это задание?". Элементами выпадающего списка должны быть цифры от 1 до 5. Закомментировала строки, соответствующие старым элементам управления, т.е. текстовому полю с названием "itask name", и дописала в файл <...>/itask/submit_form.php следующие строки:
При открытии activity Moodle стал ругаться на функцию get_string(). Похоже, настала пора разобраться с русификацией. Вот тут написано, что синтаксис у функции get_string другой. Должен быть еще один параметр - имя модуля, т.е. в данном случае надо писать "get_string('left_label', 'itask')". Далее, в каталоге <...>/itask/lang создала папку с названием "ru". Скопировала туда из папки <...>/itask/lang/en файл itask.php. В конец файла <...>/itask/lang/en/itask.php дописала такую строку: "$string['left_label'] = 'left label';", а в конец файла <...>/itask/lang/en/itask.php - такую - "$string['left_label'] = 'Выберите себе оценку';". Первый раз при запуске activity типа itask показались какие-то кракозябры. Я пересохранила файл <...>/itask/lang/en/itask.php в кодировке UTF8, потом открыла его в программе Notepad++, увидела там кракозябры, переправила, нажала "сохранить как", в открывшемся окне нажала "сохранить". Потом обновила модуль (изменив файл version.php, Администрирование->Уведомления в самом Moodle) и увидела, что русификация заработала:
Создание модуля в Moodle 2.x типа activity (часть 5)
В этом посте была описана попытка видоизменения формы, которая отображается на экране, когда открываешь некий activity типа itask. Застряла на том, что параметры $id и $n получают только значения по умолчанию. Немного потыкав то-се, выяснила, что правильнее использовать следующий код:
В этом случае начинает создаваться экземпляр класса "mod_itask_submit_form", запускается function moodleform_mod($current, $section, $cm, $course), но затем эта функция выводит следующее сообщение об ошибке: "Use $modname parameter or rename form to mod_xx_mod_form, where xx is name of your module". Поскольку эта функция ожидает, что имя вызвавшего ее класса должно иметь вид "mod_itask_mod_form", а я не могу переименовать этот класс (такой уже есть), надо как-то понять, как можно использовать параметр $modname. Я не поняла, и начала искать другой путь.Следующей идеей было посмотреть, а как же вызываются в других модулях формы с именами, отличными от "стандартных". Наугад зашла в модуль "glossary" и увидела там файл import_form.php. В этом файле определен класс "mod_glossary_import_form", являющийся расширением класса "moodleform". Поэтому я решила попробовать также сделать класс "mod_itask_submit_form" расширением класса "moodleform". В файле <...>/itask/submit_form.php поменяла соответствующую строку, также закомментировала строку
(Moodle на нее ругался при отладке). Затем в файле view.php оставила следующие строки после строки с add_to_log:
И вот что стало показываться при открытии activity типа itask:
Ура!Заработало:)А строки эти с $id и $n лучше вернуть к первоначальному виду, а то когда открываешь то одно activity типа itask, то другое, выскакивает ошибка - что-то связанное с базой данных.
воскресенье, 8 января 2012 г.
Создание модуля в Moodle 2.x типа activity (часть 2)
К сожалению, при попытке сохранения activity типа itask (см. предыдущий пост) выдается ошибка: "moodle_database::insert_record_raw() no fields found". Поизучала исходники moodle и обнаружила, что в папке шаблона модуля в файле lib.php есть такие строки:
В результате заполнения пользовательской формы в базу данных должна добавляться запись. По-видимому, нужно явным образом описать заполнение всех полей при добавлении этой записи (поскольку в таблице itask есть куча полей, и среди них наверняка есть обязательные к заполнению без значений по умолчанию). Добавила соответствующие строки:
Не помогло. Также заметила, что в XMLDB editor'е перед редактированием таблиц отображается странное значение поля Path: "mod/newmodule/db" (наверное все-таки должно быть "mod/itask/db". Зашла в /db/install.xml и поменяла значение тега "XMLDB PATH". Тоже не помогло. Потом тут вычитала, что человеку удалось соединить Moodle 2.0 и вот этот вот шаблон модуля. Отмечу, что для локального тестирования лучше скачивать Moodle for Windows.
Ура! Для вышеуказанного шаблона модуля и релиза Moodle 2.0.7 for Windows эта ошибка не выдается:)
Создание модуля в Moodle 2.x типа activity (часть 1)
Модули типа activity в Moodle позволяют вовлечь студентов в некоторую "образовательную деятельность": интерактивное решение тренировочных задач, видеочат с учителем и группой других студентов, и т.д. По результатам участия в такой деятельности студенты могут получать оценки.
Насколько мне известно, информация по созданию таких модулей пока доступна только по Moodle 1.9. В данном посте будут изложены результаты по адаптации этой информации к Moodle 2.2. Для начала необходимо скачать шаблон нового модуля. Я назвала свой модуль itask (поскольку в дальнейшем его планируется переделать в модуль для интерактивного решения задач). Далее во всех файлах с расширением php скачанного шаблона необходимо поменять слова newmodule и NEWMODULE на itask и ITASK соответственно. Я это сделала с помощью программы TextCrawler. Также в папке <...>/lang/en необходимо поменять имя файла с newmodule.php на itask.php. Затем переименовываем скачанную папку шаблона модуля в itask и копируем ее в корень папки /moodle/mod (в этой папке содержатся все модули). Согласно туториалу, редактируем базу данных с помощью XMLDB editor, обновляем файл version.php, и т.п. В общем, выполняем п. 6 и 7 туториала. Далее, согласно книге "Moodle 1.9 Extension Development", мы должны отредактировать в папке нового модуля файл mod_form.php. В результате ее редактирования мы должны получить форму вот такого вида:
Эта форма появляется на экране, после того, как к некоторой теме (или неделе курса, смотря как у кого в настройках) добавляется activity типа itask:
Пока шаблонный код не отредактирован, эта форма выглядит вот так:
Попробуем видоизменить эту форму так, чтобы на ней осталось только единственное обязательное поле "itask name". Для этого закомментируем некоторые строки, обновим файл version.php, далее в меню Moodle зайдем в Администрирование->Уведомления и нажмем там кнопку "Обновить".
Ниже приведен код, оставшийся незакомментированным в теле функции definition (файл mod_form.php):
Этот код генерирует вот такую форму:
Насколько мне известно, информация по созданию таких модулей пока доступна только по Moodle 1.9. В данном посте будут изложены результаты по адаптации этой информации к Moodle 2.2. Для начала необходимо скачать шаблон нового модуля. Я назвала свой модуль itask (поскольку в дальнейшем его планируется переделать в модуль для интерактивного решения задач). Далее во всех файлах с расширением php скачанного шаблона необходимо поменять слова newmodule и NEWMODULE на itask и ITASK соответственно. Я это сделала с помощью программы TextCrawler. Также в папке <...>/lang/en необходимо поменять имя файла с newmodule.php на itask.php. Затем переименовываем скачанную папку шаблона модуля в itask и копируем ее в корень папки /moodle/mod (в этой папке содержатся все модули). Согласно туториалу, редактируем базу данных с помощью XMLDB editor, обновляем файл version.php, и т.п. В общем, выполняем п. 6 и 7 туториала. Далее, согласно книге "Moodle 1.9 Extension Development", мы должны отредактировать в папке нового модуля файл mod_form.php. В результате ее редактирования мы должны получить форму вот такого вида:
Подписаться на:
Сообщения (Atom)
Архив блога
-
▼
2012
(16)
-
▼
января
(7)
- Maxima и Moodle интеграция
- Создание модуля в Moodle 2.x типа activity (часть 8)
- Создание модуля в Moodle 2.x типа activity (часть 7)
- Создание модуля в Moodle 2.x типа activity (часть 6)
- Создание модуля в Moodle 2.x типа activity (часть 5)
- Создание модуля в Moodle 2.x типа activity (часть 2)
- Создание модуля в Moodle 2.x типа activity (часть 1)
-
▼
января
(7)