Вы просматриваете страницу как гость | все задачи | функции | войти

Настоящий сайт позволяет студентам с большей эффективностью изучать науки, а преподавателям - добавлять свои демонстации.
Для загрузки своих задач потребуется получить учётную запись (обратитесь к В. С. Черкасскому или К. В. Пугачёву).
Загрузить свои задачи можно на странице управления задачами.

Варианты демонстраций

На текущий момент можно добавить два вида демонстраций:
  1. Демонстрации Matlab (инструкция по добавлению)
  2. Демонстрации Mathematica (инструкция по добавлению)

Чтобы добавить свою задачу Matlab на сайт, требуется:

  1. Создать m-файл с реализацией задачи
  2. Скомпилировать m-файл в библиотеку для .NET не заставлять пользователя генерить dll?
  3. Создать XML-описатель задачи
  4. Запаковать файлы в архив
  5. Загрузить архив через специальную форму

Для упрощения создания демонстрации Вы можете загрузить тестовый архив с примером задачи, удовлетворяющий описанным здесь правилам.

Требования к m-файлу

Вы можете посмотреть пример m-файла (example.m в тестовом архиве), написанного по этим правилам.
Для отладки задачи достаточно создать структуру с нужными параметрами и вызвать функцию (см. example_test.m в тестовом архиве).

На сайте существует каталог полезных функций которые Вы можете использовать в своих задачах.

Подготовка Matlab к созданию задач

  1. Убедитесь, что у Вас установлен Matlab 7.11 (R2010b).
  2. Убедитесь, что установленная версия способна создать 32-битную библиотеку под MCR 7.14.
  3. Убедитесь, что у Вас установлены Matlab Compiler и Matlab NetBuilder.
  4. Если Matlab требует сторонний компилятор, установите MS Visual Studio (версии Express вполне достаточно)
  5. В первый раз в Матлабе наберите mbuild -setup и выберите компилятор (например, компилятор Visual Studio).

Создание .NET-библиотеки (*.dll) в Matlab

(Возможно, Вам будет удобнее использовать консольную утилиту mcc)
  1. В Матлабе наберите deploytool.
  2. В появившемся окне выберите тип проекта (target) ".NET Assembly" и создайте проект, имя которого будет совпадать с именем задачи, скажем, "example". Имя проекта станет именем пространства имён в библиотеке.
  3. Добавьте класс, нажав на [Add class]. Дайте ему название, скажем, ExampleClass.
  4. Добавьте файл с функцией (example.m), нажав на [Add files]. Имя функции станет именем метода в библиотеке.
  5. В настройках проекта выберите конкретную версию .NET — 3.5.
    • Нажмите на кнопку с шестерёнкой справа в Deployment Tool
    • В открывшемся меню выберите Settings...
    • В открывшемся окне Project Settings выберите вкладку .NET
    • Найдите Microsoft Framework и в выпадающем списке выберите 3.5
    (кнопка с шестерёнкой справа в Deployment Tool, Settings – откроется окно "Project Settings", вкладка .NET)
  6. Соберите проект (Build), нажав на жмём на кнопку с тремя стрелочками, указывающими на прямоугольник. Компиляция занимает некоторое время (несколько секунд).
  7. В каталоге distrib внутри проекта появится 2 библиотеки — example.dll и exampleNative.dll (Для задачи "example"). Скопируйте example.dll для отправки на сайт.
  8. Запомните имя класса и имя метода. Они понадобятся при создании 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-описателя (необязательно) файлы, используемые в описании задачи

Заметим, что

Вы можете загрузить тестовый архив с примером задачи, удовлетворяющий этим правилам.

Процедура загрузки задачи Matlab на сайт

  1. Создайте архив по всем правилам из этой инструкции
  2. Войдите в систему
  3. Убедитесь, что задачи с таким именем нет.
  4. Убедитесь, что имя задачи содержит только латинские буквы, цифры и знак '_'.
  5. Загрузите архив на сайт на странице добавления

Если добавление задачи будет успешным, список задач обновится автоматически и пользователи увидят в нём Вашу задачу.
В противном случае постарайтесь исправить возникшие ошибки и повторить операцию.
Если Вам не удаётся исправить ошибку, обратитесь к разработчикам системы.

Чтобы добавить свою задачу Mathematica на сайт, требуется:

  1. Создать cdf-файл с реализацией задачи
  2. Создать картинку *.png, изображающую задачу для тех пользователей, у кого нет CDF-плеера
  3. Создать XML-описатель задачи
  4. Запаковать файлы в архив
  5. Загрузить архив через специальную форму

Для упрощения создания демонстрации Вы можете загрузить тестовый архив создать этот архив с примером задачи, удовлетворяющий описанным здесь правилам.

Требования к 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-плеер (обязательно)

Заметим, что

Вы можете загрузить тестовый архив создать этот архив с примером задачи, удовлетворяющий этим правилам.

Процедура загрузки задачи Mathematica на сайт

  1. Создайте архив по всем правилам из этой инструкции
  2. Войдите в систему
  3. Убедитесь, что имя задачи содержит только латинские буквы, цифры и знак '_'.
  4. Загрузите архив на сайт на странице добавления

Если добавление задачи будет успешным, список задач обновится автоматически и пользователи увидят в нём Вашу задачу.
В противном случае постарайтесь исправить возникшие ошибки и повторить операцию.
Если Вам не удаётся исправить ошибку, обратитесь к разработчикам системы.