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

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

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

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

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

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

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

Инициализация
Небольшие фрагменты кода и данных можно встроить в команду 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 с использованием опции 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.

en es ja pt-br zh