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

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

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

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

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

Приложения CDF 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];

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

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

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

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

Еще одно преимущество заключается в том, что это шифрует ваш исходный код.

Данные в реальном времени или указанные пользователем
Существует несколько способов включения вызовов внешних данных в блокноты, чтобы пользователи CDF 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—блокноты без действительных кэшей структуры файлов открывать нельзя. Файлы, не являющиеся блокнотами, не могут быть открыты.

en es ja pt-br zh