Problema
Así que este es el trato, hago muchas presentaciones sobre muchos temas de JMP para audiencias generales y específicas. No solo audiencias diferentes, sino que también uso una máquina virtual Mac y una PC en la misma computadora portátil.
Mi gran problema es con enlaces a archivos en JMP Journals. Si la revista es para PC, entonces mi ruta podría parecer "y: \ Byron \ Example \ .." pero si está en Mac, entonces se parecería más a "/ Users / Byron / examples / .." Esto significa que yo tampoco codifique cada enlace de archivo para que sea específico del sistema operativo, o compilo dos versiones de la revista para PC y Mac.
Solución
He estado escribiendo JSL durante años y esto no funcionó hasta una conversación de almuerzo con Joseph Morgan y Jeff Polzin. (en realidad, fue su conversación, solo estaba escuchando, en un buen día, el JMP pesa un poco fuera de mi liga).
En JSL podemos establecer una variable de ruta. He estado usando "$ Sample_Data \ Big Class.jmp" para siempre y la parte "$ Sample_Data" es una variable de ruta que dirige a JMP para obtener el archivo del directorio de datos de muestra. Establecer una variable de ruta es realmente simple, solo proporcione el nombre y la ruta de esta manera:
Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" )
Así que ahora puedo usar el nombre de archivo "$ Ejemplos \ eraseme.jmp" o algo como esto:
open("$Examples\eraseme.jmp")
para llegar a este archivo.
Esto es muy conveniente cuando muevo un diario general a una carpeta específica del cliente. Dado que los archivos de datos específicos de la revista y del cliente están en el mismo directorio, no tengo que usar una ruta para obtenerlos, y si uso "$ Ejemplos \ ..." para vincular a los archivos generales, el enlace funciona. Pero esto es sólo una pequeña solución. El mayor problema es cambiar entre PC y Mac.
Para lidiar con diferentes sistemas operativos, uso JSL para definir la ruta de los Ejemplos en función de un sistema operativo como este: (¡Esta es la mejor parte!)
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
Si ejecuto un poco de JSL al comienzo de mi sesión JMP (o desde un botón en mi diario), entonces "$ Ejemplo" se evaluará correctamente en el sistema operativo host. Esto significa que el enlace del archivo "$ Ejemplos \ eraseme.jmp" abre "eraseme.jmp" independientemente del sistema operativo en el que se abra el Diario.
Discusión
Lo más rápido y sencillo para los scripts existentes es agregar esta JSL en un botón de script para solucionar los problemas.
Names Default To Here( 1 );
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
pvex = Get Path Variable( "Examples" );
Dialog(
Title( "PATH VARIABLE SET!" ),
vlist(pvextb1 = Text Box( "Path variable $Examples set to:" ),
pvextb2 = Text Box( pvex ),
Button( "OK" ))
);
Esto me da un mensaje de cuadro de texto rápido para avisarme que la ruta está establecida.
Estoy seguro de que hay al menos una docena de formas de resolver este problema / Este enfoque es fácil de usar en revistas existentes con enlaces que se comparten entre diferentes personas. Si tiene métodos similares o mejores, publíquelos, tengo curiosidad por ver cómo otras personas están resolviendo este problema.