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

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

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

На текущий момент можно добавить два вида демонстраций:
  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. Загрузите архив на сайт на странице добавления

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