Рекомендации для разработчиков по достижению совместимости с Wolfram Player Pro

Программирование для Player Pro

Почти все программные и вычислительные функции, существующие в системе Mathematica, могут быть использованы для создания приложений для Player Pro, лишь только с несколькими программными ограничениями:

  • MathLink операции, включая .NET/Link, не поддерживаются. Избегайте использования таких команд, как Install, LinkConnect, Links и т.п. Сюда входят соединения с удалёнными вычислительными ядрами системы Mathematica, такими, как gridMathematica.
  • Команда InputField не будет допускать ввода произвольных программ системы Mathematica, однако будет принимать математические выражения и другую вводимую информацию, которая не похожа на программу системы Mathematica.
  • Альтернативные интерфейсы к вычислительному ядру, которые можно написать на Java, C/C++ или .NET тоже не поддерживаются. Единственный поддерживаемый метод использования вычислительного ядра — это через интерфейс блокнота системы Mathematica.
  • GUIKit тоже не поддерживается.

Предварительная загрузка данных

Приложения для Player Pro не требуют встраивания в них данных, так как внешние данные всегда можно загрузить по мере необходимости. Однако, если вы ставите себе задачей сделать приложение в максимальной мере самодостаточным, примите к сведению следующие руководящие принципы.

Существует два основных подхода к встраиванию:

Initialization
Небольшие фрагменты кода и данных можно встроить в команду Manipulate, используя опцию Initialization . Например:
Manipulate[myfunction[mydata,n],{n,0,1},
    Initialization:>(myfunction[dat_,n_]:=...;mydata={...})];

SaveDefinitions
Для больших фрагментов кода, пакетов или файловых данных большего размера, может быть более удобным определить их до создания команды Manipulate, и потом сохранить их состояние в команде Manipulate, используя опцию SaveDefinitions. Например:
<<MyPackage`
mydata=Import[...];
Manipulate[myfunction[data,n],{n,0,1},SaveDefinitions->True];

Использование внешних файлов

Возможность Player Pro обращаться к внешним файлам во время выполнения имеет несколько преимуществ.

Организация кода и его защита
Для более крупных проектов, организация кода в пакеты (в том числе и с использованием Wolfram Workbench) способствует удобной в сопровождении разработке. Вместо того, чтобы включать ваш код в команду Manipulate с использованием опции Initialization, вы можете включить вызов этих пакетов. Все пакеты кодированы либо с помощью команды Encode, либо, используя команду DumpSave для того, чтобы создать двоичный .mx файл. Для получения более подробной информации просмотрите этот скринкаст.

Вы потом можете загрузить его из создаваемого динамического интерфейса. Например:
Manipulate[myfunction[n],{n,0,1},Initialization:>Needs["EncodedPackage`"]]

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

Данные в реальном времени или пользовательские данные
Существует множество способов включения обращений к внешним данным в блокноты таким образом, чтобы пользователи Player Pro могли использовать свои собственные данные или заранее указанные каналы данных в реальном времени. Типовые примеры:

  • Инициализация приложения с использованием данных из удалённого источника:
    Manipulate[...,Initialization:>(data=Import["http://server.domain.com/latestdata.dat"])]
  • Захват данных с веб-камеры:
    Manipulate[...,Button["Get image", data=Import["http://server.domain.com/webcam.jpg"]
  • Обработка локального файла, указанного пользователем:
    Manipulate[..., Button["Load data", mydatapath = SystemDialogInput["FileOpen"]]]

Блокноты системы Mathematica и другие файлы

Открыть можно только блокноты, созданные системой Mathematica—блокноты без корректного кэша иерархической структуры файла не могут быть открыты, также как и файлы, которые не являются блокнотами системы Mathematica.



Select Language: enjaespt-brzh