Indicaciones para desarrolladores sobre compatibilidad con Wolfram CDF Player Pro
Programación para CDF Player Pro
Casi todas las funciones computacionales y de programación disponibles en Mathematica pueden usarse para desarrollar aplicaciones para CDF Player Pro, con tan solo unas pocas restricciones de programación:
- Las operaciones del Protocolo de transferencia simbólica Wolfram, incluyendo .NET/Link, no son compatibles. Evite utilizar comandos como Install, LinkConnect, Links, etc. Esto incluye enlaces a kernels remotos de Mathematica tales como gridMathematica.
- InputField no aceptará programas arbitrarios de Mathematica, aunque aceptará expresiones matemáticas y cualquier otra entrada que no se asemeje a un programa de Mathematica.
- Las interfaces alternativas al kernel, como aquellas que podrían estar escritas en Java, C/C++ o .NET, no son compatibles. El único método compatible para usar un kernel es por medio de la interfaz de cuadernos de Mathematica.
- GUIKit no es compatible.
Precarga de datos
Las aplicaciones CDF Player Pro no requieren incrustar datos, ya que puede cargar datos externos cuando sea necesario. Sin embargo, si su objetivo es crear una aplicación tan autónoma como sea posible, por favor considere estas indicaciones.
Existen dos enfoques básicos para la incrustación:
Inicialización
Puede incluir pequeños bloques de código y datos en el comando Manipulate utilizando la opción Initialization. Por ejemplo:
Manipulate[myfunction[mydata,n],{n,0,1},
Initialization:>(myfunction[dat_,n_]:=...;mydata={...})];
SaveDefinitions
Para bloques de código de mayor tamaño, paquetes, o archivos de datos más grandes, puede ser conveniente definirlos antes de crear Manipulate, y luego almacenar su estado dentro de Manipulate utilizando la opción SaveDefinitions. Por ejemplo:
<<MyPackage`
mydata=Import[...];
Manipulate[myfunction[data,n],{n,0,1},SaveDefinitions->True];
Cómo utilizar archivos externos
La capacidad de CDF Player Pro para acceder a archivos externos en tiempo de ejecución proporciona numerosos beneficios.
Organización y protección de código
Para proyectos de mayor tamaño, organizar código en paquetes (incluso con Wolfram Workbench) fomenta un desarrollo sostenible. En lugar de incluir su código dentro de Manipulate mediante el comando Initialization, puede incluir una llamada a los paquetes. Todos los paquetes deben estar codificados ya sea mediante el comando Encode o utilizando DumpSave para crear un archivo binario '.mx'. Para información adicional, revise este screencast.
Ahora podrá cargar esto desde su interfaz dinámica. Por ejemplo:
Manipulate[myfunction[n],{n,0,1},Initialization:>Needs["EncodedPackage`"]]
Una ventaja adicional es que esto cifrará su código fuente.
Datos en tiempo real o especificados por usuarios
Existen algunas maneras de incorporar llamadas a datos externos en cuadernos de manera que los que posean CDF Player Pro puedan usar sus propios datos u obtener datos preespecificados en tiempo real. Ejemplos típicos:
- Inicie la aplicación con datos de una fuente remota:
Manipulate[...,Initialization:>(data=Import["http://server.domain.com/latestdata.dat"])] - Capture datos de una cámara web:
Manipulate[...,Button["Get image", data=Import["http://server.domain.com/webcam.jpg"] - Haga que el usuario seleccione un archivo local para análisis:
Manipulate[..., Button["Load data", mydatapath = SystemDialogInput["FileOpen"]]]
Cuadernos y otros archivos
Solo los cuadernos creados por Mathematica se pueden abrir. Los cuadernos que no posean cachés de estructura de archivos válidas no se pueden abrir. Los archivos que no sean de cuaderno no se pueden abrir.