What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?¿Qué debe hacer cuando algo sale mal con su secuencia de comandos? ¡Bienvenido de nuevo!
Si recién se une a nosotros, se encuentra justo en medio de una serie que tiene como objetivo que las personas comiencen a usar el lenguaje de secuencias de comandos JMP. A diferencia de las entradas anteriores en las series Probablemente no necesites leer los demás para que este tenga sentido, pero si quieres seguir el juego y hacer la tarea de las otras entradas, aquí tienes los enlaces.
Además, muchas gracias a Christian Stopp ( @cristianstopp ) por sugerir esta entrada en la serie.
Esta parte de la serie es en gran medida una entrada independiente. Pero, en el curso de las cosas, este es probablemente el punto en el que has empezado a jugar con algún código y es posible que hayas visto uno o dos mensajes de error. Entonces, antes de comenzar con cualquier disputa seria sobre el código, veamos qué hacer cuando las cosas van mal.
Los errores más comunes en JSL
Justin Chilton ( @Justin_Chilton ) y Wendy Murphrey ( @Wendy_Murphrey ) se encuentran entre los mejores guionistas de JMP . En la Cumbre de Descubrimiento JMP de las Américas de 2020, presentaron (virtualmente) un artículo titulado "Los errores JSL más comunes y cómo evitarlos". El archivo de PowerPoint para esa presentación se puede encontrar aquí sobre la Comunidad.
Para el nuevo guionista, son 14 páginas de oro macizo. En el contexto de lo que estamos haciendo en esta serie, parte de esto está un poco fuera de alcance, pero será invaluable para los próximos pasos en su viaje con las secuencias de comandos. Simplemente haga un esfuerzo, descargue el pdf, colóquelo en algún lugar donde no lo olvide y apruebe el documento en la página de la Comunidad.
Los errores JSL más comunes de Mike
Como un pequeño riff del trabajo de Justin y Wendy, quiero agregar un par de cosas a su lista. Estos son bastante básicos y generalmente causarán que un script falle incluso antes de ejecutarse (razón por la cual no aparecen en el documento de Discovery Summit).
Pegamento
Los operadores de pegamento faltantes son probablemente el error JSL más común que existe. Como mencioné antes, el operador Glue es el punto y coma (“;”) que se ve al final de cada instrucción en JSL. Si está guardando scripts en una ventana de script usando el menú del triángulo rojo (consulte la publicación anterior ), JMP agregará el pegamento donde sea necesario. Si estás escribiendo código manualmente, hay un truco que puedes usar para asegurarte de no haber olvidado uno en alguna parte. Haga clic derecho en el Editor de secuencias de comandos y seleccione Reformatear secuencia de comandos .

Este truco detectará muchos errores básicos relacionados con la sintaxis en el script. También hay un método abreviado de teclado cuando estás en el Editor de secuencias de comandos (aunque no funciona en los "cuadros del editor de secuencias de comandos"). Yo prefiero el atajo de teclado. Para Windows, es CTRL+M . Para MacOS, es CMD+M .
Ahora, antes de mostrarte cómo descomprimir lo que Reformat Script te dice cuando hay un error, déjame mostrarte el otro error que me vuelve loco. Dado que ambos utilizan un flujo de trabajo de depuración similar, esto tendrá sentido en un segundo, lo prometo.
Paréntesis
Hacer que los paréntesis (corchetes, llaves, etc.) estén fuera de lugar (o falten) es probablemente el error más insidioso que se puede rastrear. Y quiero decir que es un especial algo frustrante. Hay una herramienta que tiene disponible en JMP para ayudarle a localizar pares de paréntesis que no coinciden. Cuando coloca el cursor fuera de un paréntesis, el Editor de secuencias de comandos lo resaltará (y lo que cree que coincide) en azul.

Si el Editor de secuencias de comandos está confundido o no puede encontrar una coincidencia, resaltará el paréntesis en rojo.

Por lo tanto, si la coincidencia azul de un paréntesis no está donde esperaba que estuviera, o si el paréntesis está resaltado en rojo, probablemente tenga un problema.
Cuando recibe errores por paréntesis faltantes, es posible que tenga la tentación de seguir agregándolos hasta el final hasta que el error desaparezca. Permítanme decirles que es una mala idea y pasar a algunas estrategias mejores para este problema y para el problema de la falta de pegamento. Y ambos giran en torno a la configuración del editor de secuencias de comandos de JMP.
Configurar (y usar) el Editor de secuencias de comandos para tener éxito
El JMP Script Editor (lo vimos en la publicación anterior ) tiene una serie de características que facilitan el trabajo con código y la depuración. Los tengo activados de forma predeterminada en mis preferencias y te sugiero que hagas lo mismo. Para acceder al cuadro de diálogo Preferencias de JMP, seleccione Preferencias desde el menú JMP (MacOS) o el menú Archivo (PC).

He resaltado las opciones que encuentro realmente útiles en la captura de pantalla. El plegado de código resulta útil para scripts más grandes. Los números de línea y las opciones de autocompletar son más importantes para nuestra discusión actual.
Cómo utilizar el registro
Ahora que tenemos nuestro Editor de secuencias de comandos configurado, aprendamos cómo usar el registro. Primero, para abrir el registro, vaya a Ver > Registro ( Ventana > Registro en una Mac). Esto abrirá una ventana similar a un editor de secuencias de comandos. Se diferencia del Editor de secuencias de comandos en que muestra el producción y los resultados de los comandos ejecutados en el Editor de secuencias de comandos. Si prefiere mantener su entrada y salida en la misma ventana, puede activar el registro integrado en el editor de secuencias de comandos haciendo clic derecho en el editor de secuencias de comandos y seleccionando Mostrar registro incrustado .

Echemos un vistazo a cómo funciona usando este script:

El guión es bastante simple. Aparte de la línea 2 y los comentarios, se creó usando Guardar secuencia de comandos... en la ventana de secuencia de comandos . si corro Reformatear secuencia de comandos (también se encuentra al hacer clic derecho en la ventana Script), aparece el siguiente mensaje de error:

En el registro, obtienes algo similar:

En el área gris, puede ver lo que se ingresó. Debajo, verá un mensaje sobre algo inesperado y una sugerencia sobre cuál podría ser el problema. En este caso, JMP cree que falta pegamento (;). También le indica dónde vino la entrada inesperada en el script con un número de línea. Dado que JSL se ejecuta secuencialmente (de arriba a abajo), esto significa que el error está en algún lugar por encima de la línea 5. Debido a que tenemos los números de línea activados, podemos ver que a la línea 2 le falta el operador de pegamento, lo que significa que JMP no espera que un nuevo comando comience en la línea 5 y lo toma por sorpresa. Después de agregar el punto y coma al final de la línea 2, ejecute Reformatear secuencia de comandos no debería devolver ningún error.
De manera similar, si nos falta parte de un par de corchetes (por ejemplo, paréntesis), así (observe la línea 7):

obtendríamos este mensaje de error:

con un mensaje de registro:

Estos mensajes de JMP son un poco menos claros, pero aquí se explica cómo interpretarlos. Primero, por el mensaje de error, sabemos que el problema está en la Distribución. Entre el registro y el mensaje de error, lo más probable es que falte un paréntesis en alguna parte. El registro dice que algo inesperado sucedió en la línea 11 (la “Columna…” a veces puede ser útil, pero hay que contar caracteres para usarla). El color que resalta el paréntesis muestra que al primero le falta su par (observe el color rojo en el paréntesis junto a Distribución en la línea 5 después de colocar el cursor a su izquierda).

Continúe usando el resaltado para descubrir dónde debe ir el que falta (línea 7 en este caso). En su mayor parte, el registro es una ventana realmente útil a lo que JMP cree que está sucediendo. Sin embargo, si desea verificar su JSL en busca de errores o trabajar con el código paso a paso, existe otra herramienta para eso.
Cómo utilizar el depurador JSL
El depurador JSL es una bestia un poco extraña. Si accidentalmente presionaste el botón del depurador:

Probablemente ya sepas que bloquea la interfaz principal en JMP mientras se ejecuta. Cuando comencé a escribir scripts, realmente no lo usé mucho. Ahora que he tenido algunas charlas con el equipo de desarrollo al respecto, puedo decir que estoy empezando a hacerlo. Hablemos un poco sobre ello y lo que puede hacer.
Primero, eso de bloquear a JMP. Es un poco confuso, pero lo que realmente hace es crear una segunda instancia de JMP para ejecutar la depuración. La instancia principal de JMP no responderá mientras el depurador JSL esté activo. Si cierra el depurador JSL, recuperará el control.
Cuando inicia JSL Debugger, además de otra instancia de JMP, obtiene la ventana JSL Debugger. Esta ventana contiene su código, listas de las diferentes variables, un registro y otra información. Se parece a esto:

Cuando estás depurando, esta ventana es tu vista y tus oídos para ver lo que tu script está haciendo en JMP. Si tienes una segunda pantalla, muévela allí para poder verla siempre (a veces puede quedar enterrada detrás de otras ventanas).
Ahora, podría volverme loco al describir todo lo que puedes hacer con el depurador JSL, pero la documentación tiene un gran capítulo (¡con ejemplos!) que puedes encontrar. aquí .
También hay una buena entrada de blog de Melanie Drake ( @Melanie_J_Drake ) que cubre algunas de las cosas interesantes que puedes hacer con el depurador JSL. Entonces, si quieres profundizar un poco en la maleza, échales un vistazo. Para nuestros propósitos, quiero que prestes atención a estos botones:

Los dos primeros ejecutan el script. El primero ejecuta el script hasta el final o hasta donde encuentra un punto de interrupción (un punto en el que desea detener la evaluación si no desea ejecutar el script completo). Puede establecer un punto de interrupción en su código haciendo clic derecho junto al número de línea en el depurador JSL. Aparecerá un punto rojo junto a esa línea (¡el punto de interrupción debe estar en una línea de código, no en un comentario!).

Si tuviera que ejecutar este script usando el primero Correr botón, correría hasta la línea 10 y luego se detendría. Una segunda pulsación del Correr El botón luego terminaría el guión. El segundo Correr El botón ejecuta todo el script sin prestar atención a los puntos de interrupción. El rojo Botón Detener sale del depurador, lo cual es útil si lo abrió por accidente o si finalizó su sesión de depuración. El Repetir El botón restablece todo para ejecutar el script nuevamente (por ejemplo, si desea cambiar dónde está un punto de interrupción y luego volver a ejecutar el código).
Tarea
La tarea de esta semana es bastante ligera. Quiero que configure el editor de secuencias de comandos, busque el registro y comience a jugar con el depurador JSL utilizando algunos de los scripts de ejemplo de la documentación. Eche un vistazo a las variables que aparecen en las pestañas en la parte inferior izquierda de la ventana del depurador. Además, encuentre el Registro pestaña en la parte inferior derecha (para que sepas dónde está).
La próxima semana, entraremos en la última parte de la "codificación" que cubriremos en estas series .