Настоящий сайт позволяет студентам с большей эффективностью изучать науки, а преподавателям - добавлять свои демонстации.
Для загрузки своих задач потребуется получить учётную запись (обратитесь к В. С. Черкасскому или К. В. Пугачёву).
Загрузить свои задачи можно на странице управления задачами.
Варианты демонстраций
На текущий момент можно добавить два вида демонстраций:
- Демонстрации Matlab (инструкция по добавлению)
- Демонстрации Mathematica (инструкция по добавлению)
Чтобы добавить свою задачу Matlab на сайт, требуется:
- Создать m-файл с реализацией задачи
- Скомпилировать m-файл в библиотеку для .NET не заставлять пользователя генерить dll?
- Создать XML-описатель задачи
- Запаковать файлы в архив
- Загрузить архив через специальную форму
Для упрощения создания демонстрации Вы можете загрузить тестовый архив с примером задачи, удовлетворяющий описанным здесь правилам.
Требования к m-файлу
- Файл содержит одну функцию, имя которой совпадает с именем файла.
- Функция имеет ровно один аргумент - структуру с параметрами задачи. В структуре имееются постоянные поля - filename и format.
- Функция и создаёт файл с решением задачи.
- Функция принимает один параметр - структуру с параметрами задачи, именами файлов и параметрами запуска.
- Параметры задачи - физические величины, описанные в секции <panel> XML-описателя.
- Имена файлов - имена файлов, описанные в секции <files> XML-описателя.
- Параметры запуска - абсолютный путь до файла картинки, которую следует создать - filename
(Например, C:\Server\Problems\MyProblem\temp\XA5B785CA6D90E3F.gif) и формат файла - format (gif)
- Функция не должна менять текущий каталог, переменные среды; создавать другие файлы, кроме указанного и т.п.
- Функция возвращает (текст ошибки) или пустую строку, если ошибки не было и файл с картинкой создан.
- Функция может полагать, что все параметры находятся в указаных в XML-описателе пределах и имеют тип,
указанный в XML-описателе (валидация исходных значений осуществляется автоматически сгенерированным кодом).
- Функция не будет вызвана, если существует картинка с результатом для указанных параметров.
- Если в имени параметра есть символ '_', его значение не влияет на кэширование.
Вы можете посмотреть пример m-файла (example.m в тестовом архиве), написанного по этим правилам.
Для отладки задачи достаточно создать структуру с нужными параметрами и вызвать функцию (см. example_test.m в тестовом архиве).
На сайте существует каталог полезных функций которые Вы можете использовать в своих задачах.
Подготовка Matlab к созданию задач
- Убедитесь, что у Вас установлен Matlab 7.11 (R2010b).
- Убедитесь, что установленная версия способна создать 32-битную библиотеку под MCR 7.14.
- Убедитесь, что у Вас установлены Matlab Compiler и Matlab NetBuilder.
- Если Matlab требует сторонний компилятор, установите MS Visual Studio (версии Express вполне достаточно)
- В первый раз в Матлабе наберите mbuild -setup и выберите компилятор (например, компилятор Visual Studio).
Создание .NET-библиотеки (*.dll) в Matlab
(Возможно, Вам будет удобнее использовать консольную утилиту
mcc)
- В Матлабе наберите deploytool.
- В появившемся окне выберите тип проекта (target) ".NET Assembly" и создайте проект,
имя которого будет совпадать с именем задачи, скажем, "example". Имя проекта станет именем пространства имён в библиотеке.
- Добавьте класс, нажав на [Add class]. Дайте ему название, скажем, ExampleClass.
- Добавьте файл с функцией (example.m), нажав на [Add files]. Имя функции станет именем метода в библиотеке.
- В настройках проекта выберите конкретную версию .NET — 3.5.
- Нажмите на кнопку с шестерёнкой справа в Deployment Tool
- В открывшемся меню выберите Settings...
- В открывшемся окне Project Settings выберите вкладку .NET
- Найдите Microsoft Framework и в выпадающем списке выберите 3.5
(кнопка с шестерёнкой справа в Deployment Tool, Settings – откроется окно "Project Settings", вкладка .NET)
- Соберите проект (Build), нажав на жмём на кнопку с тремя стрелочками, указывающими на прямоугольник.
Компиляция занимает некоторое время (несколько секунд).
- В каталоге distrib внутри проекта появится 2 библиотеки —
example.dll и exampleNative.dll (Для задачи "example"). Скопируйте example.dll для отправки на сайт.
- Запомните имя класса и имя метода. Они понадобятся при создании XML-описателя.
Создание .NET-библиотеки (*.dll) с помощью MCC
(Возможно, Вам будет удобнее использовать
графический интерфейс)
После установки Matlab становится доступной команда mcc, которая запускает компилятор Matlab в C/C++.
С помощью mcc можно создавать и .NET-сборки.
Откройте командную строку и выполните команду:
mcc -W "dotnet:%namespace%,%class%,3.5,private" -T link:lib ^
-w enable:specified_file_mismatch -w enable:repeated_file ^
-w enable:switch_ignored -w enable:missing_lib_sentinel ^
-v class{%class%:%file%} -d _tmp_dir_
Здесь
%namespace% следует заменить на имя пространства имён (должно совпадать с именем задачи),
%class% - на имя класса,
%file% - на имя m-файла с задачей.
Запомните имя класса и имя метода (имя метода совпадает с именем функции в m-файле) – они понадобятся при создании XML-описателя.
Указанная команда создаст в текущем каталоге каталог _tmp_dir_ со сгенерированными файлами. Вам нужен %namespace%.dll.
Создание библиотеки с помощью скрипта
Вы можете воспользоваться скриптом (проверен на Windows 7), который находится в этом архиве.
Вам достаточно лишь перетащить на него m-файл с задачей, чтобы через некоторое время получить в том же каталоге готовую библиотеку.
Подробности использования Вы можете найти в файле со скриптом.
Требования к XML-описателю для задачи Matlab
XML-описатель - файл с информацией о задаче, которая требуется для генерации web-страницы с задачей и скрипта её вызова.
В XML-описателе указываются основные данные о задаче - название, описание, ключевые слова, автор задачи;
параметры библиотеки - пространство имён, имя класса, имя метода - для генерации запускающего скрипта;
параметры формы - набор полей, пределы значений поля и т.п.;
развёрнутая информация о задаче, которую будет видеть пользователь, открыв страницу с задачей;
текст, который увидит пользователь, ожидая загрузки результатов задачи.
XML-описатель представляет иерархическую структуру:
<problem> - корневой элемент, имеет необязательные параметры
locale - локаль (значение по умолчанию - ru) и
group - группа, в которую входит задача (Например, для задачи, отображающей график синуса, это будет "Тригонометрия").
Это значение учитывается при отнесении задачи к определённой группе на странице со списком всех задач.
Если установить group="invisible", задача не будет видна на странице со списком задач!
Это можно использовать, если Вы загружаете задачу только для её отладки.
<head> - общая информация о задаче. Будет размещена в <head> HTML-страниц с задачей.
<title> - название задачи. Будет отображаться в заголовке HTML-страниц и на странице со списком задач.
<description> - описание задачи. Будет отображаться на странице со списком задач,
а также содержаться в <head> HTML-страниц с задачей.
<keywords>, <author>, <docauthor>
будут содержаться в <head> HTML-страниц с задачей.
<library> - информация о библиотеке, которая решает задачу. Может содержать параметры
namespace - имя пространства имён (по умолчанию - имя задачи (имя задачи - это имя xml-файла))
class - имя класса (по умолчанию - имя задачи плюс слова 'class' в нижнем регистре)
method - имя метода (по умолчанию - имя задачи)
Эти параметрв Вы получили, создавая проект в Matlab.
<files> - информация о файлах, которые требуются m-файлу для его работы. Содержит набор тэгов <files>
<file name="имя_параметра" path="files/путь_к_файлу" /> - описание файла.
Полный путь до файла будет передан в функцию как поле имя_параметра во входной структуре.
Нужные для работы файлы следует положить в каталог files при создании архива.
<panel> - описание формы, содержащие нужные Вам поля - параметры Вашей задачи.
Основные принципы:
- Несколько параметров объединяются в <FIELDSET>.
- Каждый параметр описывается тэгом <parameter> с атрибутами name (имя параметра)
и type (тип данных для параметра).
- Имя параметра совпадает с тем именем, который будет содержаться в структуре, которую принимает Ваша функция на Matlab.
- Можно использовать обычные HTML-тэги (<INPUT>, <SELECT>, ...) для задания поля ввода.
- Тэг <slider> обозначает ползунок, в текущей реализации он преобразуется в <INPUT TYPE="range" />
из HTML5, который на момент создания этого текста работает в современных версиях популярных браузеров,
кроме Firefox, где отображается как текстовое поле.
- Тэг <RequiredFieldValidator> описывает валидатор, требующий наличия поля.
Имеет параметр ErrorMessage, который должен содержать сообщение об ошибке, которое увидит пользователь, если поле не заполнено.
При этом, пользователю будет предложено ввести верное значение, а функция из m-файла не будет вызвана.
- Тэг <RangeValidator> описывает диапазон значений, который будет принимать поле.
Имеет обязательный параметр ErrorMessage (аналогично с <RequiredFieldValidator>)
и параметры MaximumValue (максимальное значение) и MinimumValue (минимальное значение),
хотя бы один из которых должен присутствовать.
Пользователь увидит ErrorMessage, если:
- поле не будет заполнено, его значение не является числом
- имеется MinimumValue и значение поля меньше, чем MinimumValue
- имеется MinimumValue и значение поля больше, чем MaximumValue
- Допустимы следующие варианты типов данных поля:
- real для действительных чисел
- integer для целых чисел
- boolean для булевых значений (преобразует "on", "true", "1" в число 1 и остальное в число 0)
- text для текстовых значений
- Если тип параметра не указан, он будет интерпретирован
- как real для всех полей, не содержащих <input type="checkbox" />
- как boolean для всех полей, содержащих <input type="checkbox" />
В MatLab-функцию попадут параметры, преобразованные к указанному типу.
- Отсутствующий параметр или незаполненное поле воспринимается как 0 (ноль) для
real, integer и boolean и пустая строка для text.
<info> - развёрнутая информация о задаче, которую увидит пользователь, открыв страницу с задачей.
Здесь может находиться отрывок HTML-страницы с теоремами, формулами, картинками - всё то, что должен понять пользователь о задаче,
чему Вы хотите научить его и т.п.
Здесь можно использовать файлы из каталога files. Например, <img src="files/sin.png" />.
Не забудьте включить каталог files со всеми требующимися файлами в архив для отправки на сайт!
Вы можете посмотреть пример xml-файла (example.xml в тестовом архиве), написанного по этим правилам.
Создание архива c задачей Matlab для отправки на сайт
Соберите требуемые файлы и запакуйте их в ZIP-архив.
Структура архива должна быть следующей:
сам архив example.zip
файл example.m - m-файл с задачей (обязательно)
файл *.m - другие m-файлы, которые использует examle.m (необязательно)
файл example.xml - XML-описатель задачи (обязательно)
файл example.dll - .NET-библиотека, собранная Вами в Matlab (обязательно) А вдруг не надо *.dll?
каталог files - набор файлов (картинки и т.п.), который будет использоваться в описании задачи
или передан m-файлу, если указано в секции <files> XML-описателя (необязательно)
файлы, используемые в описании задачи
Заметим, что
- Имена *.m, *.xml и *.dll-файла должны быть одинаковыми и совпадать с именем задачи
- Имя задачи должно содержать только латинские буквы, цифры или знак подчёркивания
- Имя files — фиксированное
- Расширения файлов должны быть в нижнем регистре (m, xml, dll, а не
M, XML, DLL)
- Имя архива значения не имеет
- В архиве должен быть только указанный набор файлов
Вы можете загрузить тестовый архив с примером задачи, удовлетворяющий этим правилам.
Процедура загрузки задачи Matlab на сайт
- Создайте архив по всем правилам из этой инструкции
- Войдите в систему
- Убедитесь, что задачи с таким именем нет.
- Убедитесь, что имя задачи содержит только латинские буквы, цифры и знак '_'.
- Загрузите архив на сайт на странице добавления
Если добавление задачи будет успешным, список задач обновится автоматически и пользователи увидят в нём Вашу задачу.
В противном случае постарайтесь исправить возникшие ошибки и повторить операцию.
Если Вам не удаётся исправить ошибку, обратитесь к разработчикам системы.
Чтобы добавить свою задачу Mathematica на сайт, требуется:
- Создать cdf-файл с реализацией задачи
- Создать картинку *.png, изображающую задачу для тех пользователей, у кого нет CDF-плеера
- Создать XML-описатель задачи
- Запаковать файлы в архив
- Загрузить архив через специальную форму
Для упрощения создания демонстрации Вы можете загрузить тестовый архив создать этот архив с примером задачи, удовлетворяющий описанным здесь правилам.
Требования к XML-описателю для задачи Mathematica
XML-описатель - файл с информацией о задаче, которая требуется для генерации web-страницы с задачей.
В XML-описателе указываются основные данные о задаче - название, описание, ключевые слова, автор задачи;
размеры окна с задачей.
XML-описатель представляет иерархическую структуру:
<problem> - корневой элемент, имеет необязательные параметры
locale - локаль (значение по умолчанию - ru) и
group - группа, в которую входит задача (Например, для задачи, отображающей график синуса, это будет "Тригонометрия").
Это значение учитывается при отнесении задачи к определённой группе на странице со списком всех задач.
Если установить group="invisible", задача не будет видна на странице со списком задач!
Это можно использовать, если Вы загружаете задачу только для её отладки.
<head> - общая информация о задаче. Будет размещена в <head> HTML-страниц с задачей.
<title> - название задачи. Будет отображаться в заголовке HTML-страниц и на странице со списком задач.
<description> - описание задачи. Будет отображаться на странице со списком задач,
а также содержаться в <head> HTML-страниц с задачей.
<keywords>, <author>, <docauthor>
будут содержаться в <head> HTML-страниц с задачей.
<panel> - описание окна с задачей.
Имеет параметры width и height - длина и ширина области, в которой отображается задача.
Если опустить один или все параметры, длина и ширина будут выбраны автоматиески.
Вы можете посмотреть пример xml-файла (example.xml в тестовом архиве), написанного по этим правилам.
Создание архива c задачей Mathematica для отправки на сайт
Соберите требуемые файлы и запакуйте их в ZIP-архив.
Структура архива должна быть следующей:
сам архив example.zip
файл example.cdf - cdf-файл с задачей (обязательно)
файл example.xml - XML-описатель задачи (обязательно)
файл example.png - картинка с видом задачи для тех, у кого не установлен CDF-плеер (обязательно)
Заметим, что
- Имена *.cdf, *.xml и *.png-файла должны быть одинаковыми и совпадать с именем задачи
- Имя задачи должно содержать только латинские буквы, цифры или знак подчёркивания
- Расширения файлов должны быть в нижнем регистре (m, xml, dll, а не
M, XML, DLL)
- Имя архива значения не имеет
- В архиве должен быть только указанный набор файлов
Вы можете загрузить тестовый архив создать этот архив с примером задачи, удовлетворяющий этим правилам.
Процедура загрузки задачи Mathematica на сайт
- Создайте архив по всем правилам из этой инструкции
- Войдите в систему
- Убедитесь, что имя задачи содержит только латинские буквы, цифры и знак '_'.
- Загрузите архив на сайт на странице добавления
Если добавление задачи будет успешным, список задач обновится автоматически и пользователи увидят в нём Вашу задачу.
В противном случае постарайтесь исправить возникшие ошибки и повторить операцию.
Если Вам не удаётся исправить ошибку, обратитесь к разработчикам системы.