| Vocero |
Transcripción |
| Michael Akerman |
Christie. |
| Christy España |
Buenos días, ¿cómo estás Michael? |
| Michael Akerman |
Cómo estás. |
| Christy España |
Genial, déjame cerrar mi correo para que no me entiendan. |
| Michael Akerman |
Sí, estoy optimizando la configuración de mi computadora para que nada, nada suene. |
| Christy España |
¿Sabes lo que he golpeado en mi barra de herramientas? ¿Soy yo? |
| |
Creo que lo tengo todo. |
| |
¿Cómo va tu fin de semana? |
| Michael Akerman |
Estuvo bien, ¿cómo estás?, ¿cómo va tu fin de semana? |
| |
Bien. |
| Christy España |
Entonces, ¿vives en la oscuridad? |
| Michael Akerman |
Helen espéranos. |
| |
Bueno, sí, muy cerca de la sede central, iba a asistir a la cumbre de descubrimiento real. |
| |
presente en persona en el. |
| |
Eso también fue decepcionante, pero. |
| |
Sí, yo, hola. |
| Christy España |
Hola buenos días, ¿cómo estás? |
| John |
haciendo el bien |
| Michael Akerman |
Necesito levantar un muro erudito detrás de mí como el que tienes ahí, Johan. |
| John |
Lo hice, hice clic. |
| |
Éste y los libros de Danny están ahí, por lo que no podrás reconocerlos. |
| Christy España |
se ve bien |
| |
Pido disculpas por la confusión de la semana pasada, pero... |
| |
Me alegro de poder conocerlos a ambos virtualmente. |
| |
Dado que soy parte del equipo principal que apoya las zonas Nova, no creo que deberían haberme asignado a ustedes de todos modos. |
| |
Veamos, tengo algunas cosas que necesito revisar. ¿Ambos tienen la pantalla configurada en 19 2010? |
| |
Sí. |
| John |
Déjame comprobarlo dos veces. |
| Christy España |
impresionante. |
| |
y |
| |
Si tu sonido es bueno, yo diría que nadie lleva logotipos. |
| |
Asegúrese de que no haya elementos a la vista que puedan causar una infracción de los derechos de autor. No sé si sus libros allí atrás serían un problema. |
| |
Sí, hagámoslo, por si acaso. |
| Michael Akerman |
Uno de ellos está formado por un antiguo ponente principal de la cumbre de descubrimiento JMP. |
| John |
Quién es. |
| Michael Akerman |
Oh, no, él vino y habló sobre esa cosa explicativa. |
| Christy España |
Oh sí, tengo ese libro. |
| Michael Akerman |
Sí, sí. |
| John |
No lo he hecho. |
| |
Guardé alguno de los del correo electrónico, pero puedo seguir adelante y sacarlo del correo electrónico. |
| Michael Akerman |
Tengo mi cámara web en un brazo, donde puedo moverla hacia mí, hacia atrás, hacia arriba y hacia abajo, hacia la izquierda y hacia la derecha; es como jugar con ella eternamente porque es como si pudiera moverla. |
| Christy España |
Oh, esa es una buena idea. |
| |
Nunca, nunca me viste en el lugar correcto sí. |
| |
Y luego todo el mundo está accediendo a todas sus aplicaciones de Outlook y yo soy un equipo. |
| |
Así. |
| Michael Akerman |
Los equipos cercanos no deberían recibir ninguna notificación. |
| Christy España |
Y tienes 30 minutos ¿es correcto? |
| Michael Akerman |
Eso es lo que entiendo, sí. |
| Christy España |
¿Y vosotros lo seréis? |
| |
Lo ideal sería poder empezar y seguir directamente. |
| |
¿Quieres hacer una prueba de compartir tu pantalla cada vez que hagas la transición? |
| Michael Akerman |
Tu porque vamos a alternar entre mi pantalla y tú estás en la pantalla en un momento, así que déjame compartir mi pantalla primero. |
| |
No es necesario compartir el sonido. |
| |
Entonces. |
| Michael Akerman |
Retrocedamos para comenzar aquí. |
| Christy España |
Hola Alex, tienes razón. |
| |
Bueno. |
| Michael Akerman |
Así que estás en lo que hicimos, lo hicimos, lo hicimos, lo hicimos, hicimos eso y luego nos pasaron a ti. |
| John |
Sí, ¿controlaremos la pantalla compartida nosotros mismos? Podemos usar al productor para nosotros. |
| Christy España |
Deberías hacerlo, sí. |
| |
Oh, tu fondo se ve genial. |
| John |
Gracias. |
| Christy España |
Debería tener eso. |
| Michael Akerman |
Que puedo ser más, podemos ser más uniformes, supongo. |
| John |
No, deberíamos tener nuestro propio individuo. No lo hice. |
| |
Sí. |
| Christy España |
Sí, vayamos con Michael. |
| John |
sí. |
| |
Supongo que no habrá mucho enlace en pantalla que harás, la mayor parte de la conversación y luego compartiremos la pantalla y luego. |
| Michael Akerman |
No estoy seguro de qué seremos visibles mientras las pantallas estén compartidas. |
| Christy España |
Bueno, entonces cuando recupere las grabaciones. |
| |
Recibo cuatro diferentes. |
| |
versiones hay una que te incluye cuando no lo hace y no estoy seguro de que Jeff Perkinson vaya a editar todo, así que no sé qué colina elegirá. |
| |
Yo creo que eso es lo que quiere demostrarle al orador. |
| Michael Akerman |
Lo veo en la pantalla, creo. |
| |
Por cierto, puedes desactivar los íconos si haces clic derecho. |
| John |
En la ventana se logra confundir, parece que... |
| Christy España |
Bueno, ¿es realmente tan difícil hacerlo? |
| John |
Oh sí. |
| |
Entonces, ¿qué hago? Haga clic derecho y vea y. |
| Michael Akerman |
Sí, le pareció genial. |
| |
Porque no recuerdo exactamente dónde a. |
| |
Amigo, nunca dejo que mis íconos se activen en mi escritorio, solo dejo que se instalen cosas en él, así que si alguna vez lo activo es como... |
| John |
sí. |
| Christy España |
Entonces, Michael, cuando hayas terminado, simplemente dirás "está bien, te lo paso en la pantalla compartida" y luego continuaremos desde allí, realmente no vamos a... no vamos a tomar un descanso, en otras palabras, sí. |
| Michael Akerman |
Y consigues un filtro amarillo en mi habitación. |
| Christy España |
Oh, tienes una luz roja que te encanta. |
| Michael Akerman |
Me pone triste, sí. |
| Christy España |
No he invertido en uno de esos porque mi escritorio es muy pequeño y tengo mucho espacio aquí. |
| Michael Akerman |
Sí, terminé siendo independiente temprano, pero mi jefe seguía quejándose de la calidad de mi micrófono y de mi cámara, así que pensé: "Está bien, hombre, me vas a comprar una nueva cámara con micrófono". |
| Christy España |
Bien por ti, no conseguí estos nuevos auriculares. |
| Michael Akerman |
Déjame cerrar mi puerta muy rápido. |
| Christy España |
Ah, está bien, sí, eso es importante si tienes amigos peludos o niños corriendo por ahí. |
| John |
si, bueno tampoco tan bien si pondré la puerta cerrada. |
| Christy España |
y Johan donde estas ubicado. |
| John |
En la empresa. |
| Christy España |
que el mío oh qué bien. |
| |
ser plenamente. |
| John |
Oh, has estado. |
| Christy España |
Tengo un amigo que se casó con. |
| |
Un chico de Copenhague es de Dinamarca, así que fuimos allí a visitarlo. |
| |
Oh sí, hermoso. |
| Christy España |
Bien, entonces, si puedo lograr que ustedes digan el nombre de su empresa y el título del resumen, sería fantástico. |
| |
Y esto no es para la grabación. Esto es solo para los propósitos de Jeff, para identificar cuál es tu... |
| Michael Akerman |
el nombre es seguro seguro, mi nombre es Michael incremente estoy con novozymes el titulo abstracto es tan fácil como subir una foto. |
| |
Algo sobre el embalaje y la factura. No recuerdo exactamente. |
| Christy España |
Está bien. |
| Michael Akerman |
Hola a todos. |
| John |
Y mi nombre es ONU. |
| |
Además, no tiene sentido. |
| Christy España |
Y grabaremos esto y lo publicaremos en la Conferencia Cumbre de Discovery, y estará disponible para que el público lo vea. ¿Obtiene permiso para esta grabación en ese uso? |
| Michael Akerman |
Nosotros lo hacemos, yo lo hago. |
| |
Cuando vayas a. |
| John |
Oh sí, lo siento, lo siento, solo estaba pensando. |
| Christy España |
Bueno, entonces. |
| |
Déjame apagar mi cámara antes de que puedas hacerlo. |
| |
Nadie quiere verme. |
| Christy España |
Y creo que estamos listos, ¿están listos? |
| Michael Akerman |
Supongo que comenzaremos con mi pantalla. |
| Christy España |
Nunca estás listo, veamos cuando es el momento. |
| |
909 así que técnicamente tienes hasta 939 pero. |
| |
dar o tomar un fusible está bien, así que cuando estés listo. |
| Michael Akerman |
Hola a todos y bienvenidos a nuestra charla de hoy en "Y'All". Este es un gestor de paquetes de complementos que hemos desarrollado en Novozymes para automatizar el uso compartido, la actualización y el mantenimiento de scripts de complementos JMP en toda nuestra empresa global. Soy Michael Akerman y mi copresentador es Johan Olsen. |
| |
Hoy quiero hablaros sobre Y'All y presentaros también este kit de herramientas, para que cualquiera de vosotros que esté interesado en él pueda... |
| |
Quienes deseen usarlo para uso personal o para su organización saben cómo obtener este kit de herramientas, cómo empezar a usarlo y qué es. Empecemos hablando de quiénes somos y por qué creamos Y'All... |
| |
...las características clave de Y'All, así como la experiencia del usuario. Johan explicará qué ve un usuario al usar este kit de herramientas. |
| |
Iremos detrás de escena para ver qué sucede detrás del kit de herramientas Y'All cuando un usuario interactúa con él y luego haremos un resumen y una recapitulación, y tendremos algunos consejos sobre cómo adoptar Y'All en su organización, si lo encuentra interesante para sus propósitos. |
| |
Somos científicos de datos en Novozymes. Mi copresentador es Johan Olsen, científico de datos especializado en investigación de aplicaciones de biosoluciones agrícolas e industriales. |
| |
Soy científico de datos sénior en el mismo grupo de Novozymes. Hemos incluido nuestra información de contacto aquí si desea contactarnos para hablar sobre Y'All o cualquier otra cosa. No dude en contactarnos. |
| |
La dirección de correo electrónico de Johan es jpko@novozymes.com y es JPKO en la Comunidad de Usuarios de JMP. Yo soy mxak@novozymes.com. |
| |
Michael Akerman Michael mxak en la Comunidad de usuarios de JMP, así que no dudes en comunicarte con nosotros si tienes alguna pregunta, seguimiento o comentario de cualquier tipo sobre Y'All o formas de mejorar lo que hemos creado y con lo que estamos trabajando. |
| |
Trabajamos para Novozymes. Novozymes es una empresa biotecnológica global. Desarrollamos soluciones biológicas para la sostenibilidad... |
| |
...y mejorar el rendimiento y reducir costos para todo tipo de industrias en todo el mundo. Por ello, apoyamos la agricultura y los biocombustibles, el cuidado del hogar, la alimentación y las bebidas, la salud animal y muchas otras industrias... |
| |
...con estas soluciones biológicas. Contamos con más de 6000 empleados en todo el mundo, y entre ellos, cientos de usuarios de JMP. |
| |
Y menciono esto porque tenemos un grupo muy grande de usuarios de JMP a los que apoyamos y con los que trabajamos, quienes están trabajando con JMP y creando cosas en JMP, y esa es realmente la inspiración para Y'All. |
| |
Nuestro propósito como empresa es "Juntos encontramos respuestas biológicas para una vida mejor en un mundo en crecimiento: repensemos el mañana". |
| |
Como mencioné, tenemos una cohorte muy grande de usuarios de JMP en Novozymes. |
| |
Queríamos facilitarles el trabajo con scripts y complementos JMP y hacer que su código fuera más reutilizable y fácil de descubrir. |
| |
En primer lugar, queríamos facilitar la actualización. Habíamos observado que en Novozymes la gente intercambiaba recetas por correo electrónico. |
| |
Se enviaban archivos JSL a unidades de red personales. Algunos los guardaban en memorias USB y los distribuían. Queríamos que la distribución de scripts JMP nuevos y actualizados fuera lo más sencilla posible. |
| |
Queríamos crear un archivo que protegiera el código. Tenemos muchos usuarios de JMP, y todo este trabajo representa un gran valor para la organización. |
| |
Por lo tanto, existe un repositorio central donde se almacena, se respalda y se archiva todo ese código valioso. |
| |
Y queríamos hacer un seguimiento de las versiones a lo largo del tiempo, de modo que a medida que los scripts cambian, a medida que se mejoran, queríamos poder ver esos cambios y hacer un seguimiento de esos cambios a lo largo del tiempo. |
| |
Y queríamos que fuera fácil descubrir y reutilizar scripts, así que si eres un desarrollador de JMP... |
| |
...si eres un desarrollador que trabaja escribiendo scripts JSL, puedes encontrar scripts relevantes escritos por otros desarrolladores y mejorarlos o... |
| |
Desarrolle a partir de ellos para cualquier necesidad. Así que facilite la creación de scripts a partir de ellos, así como el intercambio, la importación y la reutilización de funciones en JSL que otros miembros de la organización encuentren útiles. |
| |
Para hacerlo realidad, reunimos tres componentes: un script de compilación en Python, una interfaz de GitLab y un script de carga y actualización de JSL, todos funcionando en conjunto en este kit de herramientas. |
| |
El script de compilación de Python es un script automatizado que se ejecutará en Python 3 o superior y que analiza y estructura automáticamente archivos JSL en estructuras de menú de complementos. |
| |
También escribe los archivos de definición de complementos. Genera un script de funciones personalizadas importadas que añade todas estas funciones de utilidad reutilizables al índice de scripts de JMP y al IDE de JMP, y lo comprime en un archivo .jmpaddin para que lo usen los usuarios. |
| |
GitLab es nuestra interfaz para que los usuarios interactúen con los scripts de complementos y trabajen con el propio generador de complementos. GitLab es la alternativa o competidor de código abierto de GitHub. |
| |
Lo hemos publicado internamente en Novozymes y proporciona una interfaz de usuario muy sencilla de apuntar y hacer clic para cargar scripts en este repositorio central... |
| |
...donde se almacenan todos estos scripts y realmente se realiza la compilación. |
| |
Y esa canalización CICD, que significa integración continua e implementación continua, ejecuta automáticamente ese script de compilación de Python y distribuye el complemento a través de los canales de versión de lanzamiento y versión beta para que los usuarios puedan tener... |
| |
...lanzamientos constantes y con control de calidad, o si son desarrolladores, pueden obtener lanzamientos rápidos y frecuentes con las últimas versiones de cada script utilizado en este kit de herramientas. |
| |
Y finalmente, tenemos los scripts de carga y actualización de JSL. Cuando se abre JMP y se carga este complemento... |
| |
...pueden comprobarlo; se buscarán nuevas versiones en el canal seleccionado (los canales beta o de lanzamiento) y se ofrecerá descargar y actualizar el paquete del complemento. Esto también importa las funciones personalizadas al índice de scripts. |
| |
En Y'All, cualquier usuario de JMP puede contribuir a su guion de forma muy sencilla. Es tan fácil como subir una foto a las redes sociales. |
| |
Ingresas a la interfaz de usuario, haces clic en el botón de carga y en segundos estará disponible en el canal beta de Y'All. |
| |
Tenemos control de versiones automático y almacenamiento de estos scripts, una actualización automática o manual del complemento JMP, por lo que cuando se abre JMP, Y'All ofrecerá actualizar... |
| |
...o un usuario puede elegir actualizar Y'All manualmente a través del menú Y'All. |
| |
Contamos con un canal de versiones beta para compilaciones y pruebas rápidas si eres desarrollador y escribes scripts para obtener la última versión del complemento a medida que actualizas tu script y realizas cambios. También contamos con un canal de lanzamiento para una implementación controlada y control de calidad. |
| |
Esto nos proporciona archivos JSL reutilizables y descubribles, de modo que las personas puedan buscar en esta estructura de archivos de scripts enviados por los usuarios de Novozymes, los usuarios de Y'All, y ver... |
| |
...encontrar scripts que cumplan un propósito cercano a lo que quieren y modificarlos para sus propios fines. |
| |
También agregamos funciones de utilidad de conveniencia al índice de scripts; puedes ver una pequeña captura de pantalla de eso... |
| |
...a la izquierda y en el editor JSL, por lo que el script de compilación agrega automáticamente funciones que se pueden importar y reutilizar en el índice de scripts JMP con una pequeña cadena de documentación si está disponible para describir cómo funciona esta función y cómo usarla. |
| |
Quería tomarme un momento para mencionar parte del código que incluimos en Y'All con fines demostrativos. Gran parte del código utilizado en Novozymes es específico de sus sistemas y no se podría usar fuera de la empresa. |
| |
He recopilado algunos scripts que ya estaban en la Comunidad de Usuarios de JMP y los he incluido solo como demostración. Pueden conservarlos o eliminarlos de Y'All... |
| |
...como se desea. Tenemos un script de análisis JSON de Xan Gregg y Craige Hales. Tenemos un asistente de script de limpieza de datos presentado en la Cumbre de Descubrimiento JMP 2020... |
| |
...por Jordan Hiller y Mia Stephens. Presentamos herramientas de tablas de imágenes de Heidi Hardner y Serkay Olmez en Discovery Summit 2020. |
| |
Selección de filas de color.jsl de Nick Holmes. Gráfico de ejes Y múltiples de Byron Wingerd y configuración de autovalidación, creo, también presentado en la Cumbre de Descubrimiento de JMP. |
| |
...el año pasado por Mike Anderson, y tenemos un conjunto de funciones importables para el software de captura de datos Riffyn, Riffyn Nexus... |
| |
...para trabajar con su API, escrita por Riffyn, incorporada y extraída del complemento JMP de sus herramientas Riffyn con permiso. Es una herramienta que usamos mucho en Novozymes. La incluimos porque si otros usuarios de Riffyn también pueden usar este código. |
| |
Dicho esto, queríamos realizar demostraciones en vivo, empezando por la experiencia del usuario y lo que ve y hace al trabajar con el kit de herramientas Y'All. Para ello, cederé la palabra a mi copresentador, Johan. |
| |
Johan, estás silenciado. |
| John |
Gracias, Michael. |
| |
Disculpen. Les comparto mi pantalla. |
| |
¿Estas viendo esto? |
| Miguel |
Sí. |
| John |
Está bien. |
| |
Entonces, como dijo Michael, los guiaré a través de la experiencia del usuario al utilizar Y'All. |
| |
Ser usuario de Y'All es realmente un proceso de tres niveles. La gran mayoría de nuestros usuarios lo usan básicamente como si fuera una plataforma JMP integrada. Ellos... |
| |
...señalar y hacer clic en los scripts y ejecutarlos para los fines previstos. Contamos con un grupo de usuarios bastante grande que también contribuye con scripts para explicar cómo... |
| |
Puedes contribuir con scripts sencillos. Contamos con un pequeño grupo de desarrolladores y mantenedores que se encargan de tareas más avanzadas, e intentaremos aprovechar al máximo ese potencial. |
| |
Pero primero, el uso realmente sencillo de Y'All. Instalarlo es tan sencillo como hacer clic en este enlace al artefacto de compilación (??) creado en nuestro repositorio de GitLab, descargar el archivo de edición de JMP y ejecutarlo con JMP. |
| |
Ahora bien, esto me impulsó a realizar una actualización. Esta vez voy a cancelarla, pero puedes ver aquí que en mi barra de menú tengo el menú Y'All... |
| |
...Con algunos de estos scripts de demostración que mencionó Michael. No entraré en detalles sobre ninguno de ellos, ya que no forman parte del paquete Y'All, sino que se incluyen solo con fines demostrativos. Pero lo que haré es intentar entrar y... |
| |
...oops, habilitar, perdón esto ya estaba, habilitado parece. habilitar pruebas beta, para que ahora que empezamos a crear algunas cosas podamos verlas de inmediato. |
| |
La mayoría de los usuarios tendrán las pruebas beta deshabilitadas y recibirán una actualización al abrir JMP después de un lanzamiento importante, lo que ocurre cada pocas semanas. Sin embargo, para los usuarios con las pruebas beta habilitadas, la actualización de la rama beta podría ocurrir desde varias veces al día hasta un par de veces por semana. |
| |
Así que eso es básicamente lo que hay para un usuario normal. |
| |
Si quieres contribuir con scripts, hay un par de maneras de hacerlo. Una es a través de la interfaz de GitLab. Ahora, la estructura del menú que acabamos de ver se refleja en... |
| |
...estructura de directorios en el... |
| |
...repositorio. Así que crear uno nuevo... |
| |
...menú o submenú es tan fácil como crear un nuevo directorio. Aquí, llamémoslo... |
| |
..."población" |
| John |
y agregarlo. |
| John |
Y si quisiéramos agregar un script, simplemente podemos crearlo en el IDE de JMP, así que queremos hacerlo muy simple. |
| |
Hola Mundo. |
| |
Esto será suficiente. De hecho, hay un pequeño detalle adicional: nombrar los elementos del menú de forma atractiva para que aparezca una descripción emergente. Implementamos [???] o la magia del código; es decir, si empiezas escribiendo "comentado", ¡ups! |
| |
Y tú. |
| |
Nombre del menú. |
| Michael Akerman |
Hola a todos. |
| |
Nombre del menú. |
| John |
Nombre del menú Y'All |
| Michael Akerman |
Vieja costumbre. |
| John |
Digamos "hola". Y luego, "Y'all tooltip". |
| |
Muy bien, sigamos adelante y guardemos esto. |
| |
A donde sea, supongo, a ver, al escritorio. Y luego súbelo aquí. |
| |
¿Fue una prueba? |
| Michael Akerman |
Era un guión pero debería estar bien. |
| John |
Ahora... |
| |
Una vez que hemos cargado este archivo, hemos activado un flujo de trabajo en este [inaudible] automatizado. |
| |
[inaudible] sistema, que es una clonación del repositorio primero y luego... |
| |
...luego de crear el complemento, y esto debería aparecer al reiniciar JMP, |
| John |
y actualización de toda la edición. |
| John |
Y una vez que hemos elegido actualizar, ahora aparece el menú de demostraciones, con el script de prueba. |
| |
Esta es la forma más sencilla de contribuir con scripts a JMP. Si ya conoces Git, también puedes usar un flujo de trabajo de Git más clásico. Voy a abrir una ventana de procesamiento por lotes. Permítanme... |
| |
Y podemos clonar el repositorio. Volvamos a... Algunas de las cosas que mostramos aquí son específicas del uso de GitLab, que usamos aquí. |
| |
Pero será similar en otros sistemas de codificación y alojamiento de código de repositorios remotos. |
| |
Ahora clonamos el repositorio y tendremos un espejo completo en nuestro sistema local. Al igual que antes, podemos ver la estructura de directorios reflejada aquí. Veamos si podemos crear un... |
| |
Otro guión. |
| |
Para esto. Se mejoró el nombre del menú Y'All. |
| |
Hola. |
| |
Digamos que nos gustaría, quizás esta vez... |
| |
...abre un mensaje en su lugar. |
| |
Dice hola mundo. |
| |
Ahora, en esta ocasión, podemos usar una de las funciones integradas de JMP. Vayamos al índice de scripts; podemos... |
| |
...buscar Y'All utils. |
| |
Y busque la función errorModal, y viene aquí con una pequeña cadena de documentación sobre cómo usarla. |
| |
Y ya fue importado así que... |
| |
Y'All utils errorModal |
| John |
Y podemos simplemente decir hola mundo. |
| John |
Veamos esto. |
| |
...en nuestro repositorio... |
| |
...en demostraciones. Y envía el código. |
| |
Ahora, el código se envía al repositorio remoto, lo que activa la canalización CICD y, en cuestión de... |
| |
...segundos, debería poder ver la tubería ejecutándose y... |
| |
...muy pronto. |
| |
Aún no ha comenzado. |
| |
Quizás me estoy volviendo un poco... |
| |
...impaciente. Allá vamos. |
| |
Así que, efectivamente, si revisamos las actualizaciones de Y'All, veremos una nueva. ¿Eso es todo? |
| |
Elegiremos actualizar... |
| |
...el complemento, y ahora las demostraciones tendrán nuestro hola mundo mejorado. |
| |
Muy bien, creo que eso fue lo que tenía para la demostración de usuario. |
| Michael Akerman |
Gracias, Johan. Entonces me encargaré de compartir la pantalla, si te parece bien. |
| John |
Sí. |
| Michael Akerman |
Quería profundizar un poco en lo que sucede tras bambalinas, cuando se desarrolla esta experiencia de usuario. Así que voy a analizar este código en Visual Studio Code. |
| |
Puedes verlo donde quieras una vez que descargues el archivo Zip. Voy a entrar rápidamente en modo Zen para que sea más fácil de ver. ¡Aquí vamos! |
| |
Aquí está la canalización CICD de GitLab que se ejecuta cada vez que Johan carga el script. Así que entró al repositorio de Git... |
| |
...y presionó el botón "+", cargó un script que activó la canalización CICD. Este es un pequeño script que define cómo debe reaccionar el servidor ante esa situación. |
| |
un paso previo y un paso de construcción... |
| |
...donde clonó el repositorio Git y todos los archivos que contenía, incluido el nuevo script de Johan en un directorio de trabajo donde esto... |
| |
...este módulo de procesamiento, llamado ejecutor, puede trabajar en ese código. Y luego lo construyó, por lo que ejecuta esta etapa de compilación donde... |
| |
Los CDs cambian de directorio a ese directorio de compilación y ejecutan el script de compilación de Python. Así de fácil. Se trata de clonar todos estos archivos nuevos en una carpeta de trabajo, moverlos a esa carpeta y ejecutar el script de compilación de Python en Python 3. |
| |
Veamos el script de compilación de Python. Voy a pasarlo con la tecla Control Tab. Es build_yall.py. |
| |
Esto es mucho código, pero si lo estás viendo y quieres una guía sobre cómo navegar por él, desplázate hasta la función de proceso. Dice "def process". |
| |
Este es el código principal que construye Y'All y lo explicamos paso a paso. Así que lo revisaremos paso a paso. |
| |
Lo primero que ocurre es que el script de Python crea una jerarquía de menús. Analicémosla. Lo que hace es crear un diccionario de Python anidado donde revisa la estructura de carpetas bajo src/scripts... |
| |
...y extrae todos los archivos JSL que encuentra en un diccionario que contiene el nombre, la descripción emergente y la ubicación de ese archivo JSL. Básicamente, construye ese diccionario anidado carpeta por carpeta y lo explora. |
| |
Luego, verificamos los nombres de los comandos de cada uno de esos archivos JSL. Intentamos analizarlos y buscamos el nombre del menú Y'All y la descripción emergente de Y'All que Johan incluyó al principio del script para... |
| |
...define el nombre del botón y la descripción emergente en el menú del complemento en JMP. Al instalar Y'All, se muestra el menú de Y'All, su nombre y el contenido de la descripción emergente al pasar el cursor sobre él. |
| |
Si no encuentra el nombre del menú de Y'All ni el comando mágico de descripción emergente de Y'All, simplemente recurrirá al nombre del script sin descripción emergente. Así, test.jsl se convertiría en test, como viste de Johan. |
| |
Ese diccionario de comandos en los menús está ordenado alfabéticamente para que sea más fácil encontrar las cosas, a excepción del menú de ayuda y configuración, que aparece en la parte superior para que siempre esté en la parte superior del menú. |
| |
Porque la ayuda y la configuración son importantes. Y toda esa información se escribe en un archivo JMPcust. |
| |
Por lo tanto, un archivo .jmpcust es esencialmente un tipo de documento de lenguaje de marcado que define para JMP cómo... |
| |
Qué botones del menú deberían estar, dónde debería estar el menú en sí, cuáles deberían ser las informaciones sobre herramientas, todo está definido en este archivo .jmpcust. |
| |
Voy a pasar la pestaña de control a Y'All para que vean cómo se ve. Es literalmente un montón de definiciones sobre los menús... |
| |
...y cómo se llaman los menús y qué contienen. Así, podemos ver que el menú de ayuda y configuración incluye buscar actualizaciones de Y'All, activar y desactivar el modo de prueba beta, etc. |
| |
Entonces, el script de Python escribirá eso automáticamente con esta función de escritura de archivo jmpcust. |
| |
Y luego escribiremos los archivos de definición de nuestros complementos. Es decir, addin.def y version.txt. Addin.def (voy a pasar a un ejemplo) es un poco... |
| |
...fragmento de descripción que JMP utiliza para identificar el complemento y encontrar el número de versión, así como la versión mínima de JMP compatible. |
| |
Decimos 12. Es una decisión un tanto arbitraria por nuestra parte, simplemente para no tener que preocuparnos por las cosas anteriores a 12. Puedes cambiar esto en el código Python si empiezas a trabajar con él tú mismo. La versión del complemento también se define aquí, como puedes ver. |
| |
Y escribimos esto en un archivo llamado version.txt para que el mismo número entero que acabas de ver en addin.def termine también en version.txt. |
| |
La razón es que es un archivo pequeño y fácil de leer remotamente. Podemos abrirlo en JMP mediante HTTP en el servidor... |
| |
...y revisa rápidamente el número de versión en el archivo version.txt para compararlo con nuestra versión actual. Así que, si la versión instalada no coincide con el archivo version.txt... |
| |
Eso significa que necesitamos actualizar, o al menos podemos hacerlo. El número de versión que usamos es la fecha y hora de su ejecución en la zona horaria UTC. |
| |
Y lo convertimos básicamente a segundos desde 1970. Por lo tanto, es un número entero que se puede convertir nuevamente a un formato de fecha y hora. |
| |
Así que podemos comparar los dos números enteros, lo cual es muy útil. Podemos ver fácilmente si son mayores o menores, y además podemos convertirlos a una fecha. Es una forma muy eficiente de almacenar ese número de versión en JMP. |
| |
Finalmente. |
| |
Lo siguiente que hacemos, después de haber escrito esos archivos de complementos en profundidad, es crear un script de funciones personalizado. Esto es un poco extraño y difícil de explicar. Haré todo lo posible por hacerlo de forma rápida y concisa. |
| |
JMP tiene dos formas de definir funciones personalizadas. Una es mediante una función llamada función en el lenguaje de scripting JMP, y lo que hace... Voy a pasar a utils.jsl y al subdirectorio "importables" de Y'All. |
| |
Función define una función personalizada que puede usarse e invocarse desde otras ubicaciones. Se puede definir con un espacio de nombres. En este caso, tenemos el espacio de nombres "Y'All utils...". |
| |
...con la función "recode if". Toma estos argumentos, y tenemos esta cadena de documentación y este código de función escrito aquí. |
| |
La segunda forma de escribir una función personalizada en JSL es con la nueva función personalizada, que no es lo mismo que función. Creo que se añadió en JMP 14. |
| |
Lo que hace la nueva función personalizada es agregar la función al índice de scripts JMP y al IDE JSL para que sea muy fácil trabajar con esa función y reutilizarla en otros lugares con documentación. |
| |
Entonces, la ventaja de esta función es que funciona incluso antes de... ni siquiera sé qué versión de JMP... |
| |
...antes de usar JMP. La ventaja de la nueva función personalizada es que es un poco más robusta, incluye la documentación, el índice de scripts de JMP y la posibilidad de colorearla en el IDE de JSL. |
| |
...consejos sobre cómo escribir código. Nos gusta la nueva función personalizada, pero queremos compatibilidad con JMP anterior a JMP 14. Por lo tanto, los scripts de compilación... |
| |
...aquí, esencialmente analizará el directorio de importables, buscando definiciones de funciones que coincidan con esa función función función función... |
| |
...en JSL con una cadena de documentación. Intentará analizar esa cadena entre las barras y asteriscos y la incorporará a una nueva función personalizada. Puedes ver un ejemplo aquí. |
| |
Tomamos esa función de recode if y ahora la reescribimos automáticamente en una nueva función personalizada en el espacio de nombres Y'All utils llamada recode if. |
| |
Tenemos un prototipo, una descripción y una categoría de índice de scripts donde se muestra todo esto. Todo esto está disponible automáticamente para los desarrolladores de JMP. Así, se pueden escribir cosas usando la función antigua en JSL y seguir obteniendo este índice de scripts de JMP. |
| |
...capacidad, usando automáticamente el script de compilación de Y'All. Desplácese hacia abajo hasta mi código de proceso aquí. |
| |
Una vez escrito todo esto, compilamos el complemento. Los complementos JMP usan un formato Zip modificado. Lo comprimimos con Python 3, le cambiamos el nombre a YALL.jmpaddin y ya está disponible en nuestro directorio de trabajo donde trabaja el ejecutor CICD. |
| |
Entonces, el paso final de este flujo de trabajo CICD después de que se completa este script de compilación es moverse a ese directorio de trabajo y cargar artefactos. |
| |
Los artefactos de compilación son un concepto CICD de GitLab, donde tomamos estos dos archivos YALL.jmpaddin y version.txt y los cargamos en el servidor y los ponemos a disposición con una URL específica. |
| |
De modo que esa URL siempre es consistente y está vinculada a la rama en la que la estamos ejecutando en GitLab, así que si estamos en la versión beta en lugar de en la versión de lanzamiento principal. |
| |
Ahora, en JMP... ¡voy a saltar, ja!... |
| |
...a autoUpgrade.jsl. Aquí es donde comprobamos si hay nuevas versiones del complemento. Cuando se carga JMP, Y'All ejecutará este script de actualización automática... |
| |
...que busca esas nuevas versiones en el repositorio de GitLab. Aquí puedes ver que cargamos nuestra bandera beta, ya sea en modo beta o en modo principal. |
| |
Buscamos ese modo en el canal específico. Así que... |
| |
...desde una URL específica según la selección del canal. Por lo tanto, si estamos en modo beta, se buscará el canal beta. Si estamos en modo principal, se buscará el canal principal. Buscamos el archivo YALL.jmpaddin y el archivo version.txt. |
| Michael Akerman |
Ahora compararemos ese número de versión con el número de versión instalada. Si es diferente, solicitaremos una actualización al usuario. Aparecerá el cuadro de diálogo que viste en la pantalla de Johan... |
| Michael Akerman |
...que les pregunta si desean la actualización y les indica el número de versión. Pueden elegir si la desean o no. |
| |
Entonces. |
| |
Eso es todo. Todo sucede entre bastidores, para el usuario. Suben un script a través de la interfaz de GitLab usando el botón "+" para subir un archivo y compilar ese nuevo... |
| |
...complemento JMP, ese complemento JMP de Y'All, y ponerlo a disposición de otros usuarios que estén conectados al mismo repositorio. |
| |
Todo esto ocurre entre bastidores. Es tan sencillo para el usuario como guardar un script JMP desde el punto de acceso en JMP y subirlo al repositorio de GitLab. |
| |
Así que quería recapitular las características de Y'All. |
| |
Contribuir con scripts es muy sencillo. Como has visto, tienes una interfaz de usuario intuitiva para subir archivos, scripts JSL y publicarlos. |
| |
Y con ello, se incluye el control automático de versiones y el archivado de código. Dado que todo esto se realiza a través de un repositorio central de GitLab, almacenado en los servidores de Novozymes, todo se rastrea y almacena... |
| |
...a perpetuidad. Actualizaciones automáticas para que los desarrolladores puedan publicar scripts fácilmente y siempre tengan la versión más reciente. |
| |
...de esos scripts que funcionan correctamente y cuentan con control de calidad. Y tenemos canales de beta y lanzamiento. |
| |
El canal beta se creará prácticamente al instante, estará disponible en cuestión de segundos tras la llegada de un nuevo script y se actualizará con frecuencia. El canal de lanzamiento tendrá una estructura de lanzamiento más lenta y controlada. Quería explicar cómo lo hacemos. |
| |
Aquí puedes ver la estructura de ramas en nuestro repositorio de GitLab. Tenemos una rama beta con muchas actualizaciones, una rama de lanzamiento y una rama principal. Lo que hacemos en Novozymes depende totalmente de la decisión del usuario. |
| Michael Akerman |
...tomamos esta rama beta cuando está en un estado en el que queremos publicarla. Abrimos una solicitud de fusión entre la beta y la versión y la movemos a la rama de lanzamiento. Esto básicamente congelará la rama de lanzamiento de pantalla... |
| Michael Akerman |
...en la versión del código, donde hicimos eso, y eso bloquea el código en esta rama de lanzamiento. |
| |
La beta aún puede cambiar. Se pueden añadir y modificar scripts en la beta. Pero el lanzamiento está congelado. Realizamos comprobaciones de calidad y, cuando estamos preparados y satisfechos con el estado... |
| |
...lo lanzamos a la rama principal y lo fusionamos allí, y ahora está disponible para los usuarios de la rama principal de Y'All. |
| |
Tenemos código detectable. Todo está disponible en una estructura de archivos en un repositorio central. Los desarrolladores pueden revisar los scripts y... |
| |
...encontrar otros similares para desarrollar y mejorar. Además, contamos con funciones de utilidad añadidas automáticamente al índice de scripts, disponibles automáticamente para los desarrolladores, para que puedan reutilizar bloques de código como ese y recodificarlos si... |
| |
...o algunas consultas de bases de datos y cosas así que también hemos incluido como demostraciones. Así que, si revisan Y'All... |
| |
...espacio de nombres en el índice de scripts de JMP con Y'All instalado. Verá que incluimos algunas consultas y herramientas de base de datos de Postgres para demostrar cómo las usamos. |
| |
Todo esto sucede al iniciar en JMP un script JSL creado por el usuario que desea compartir con otra persona en la base de usuarios de Y'All. |
| |
Acceden a GitLab y, en la interfaz de usuario, suben el archivo a un subdirectorio que coincida con la ubicación del menú donde lo quieren en Y'All. Por ejemplo, si lo quieren en demos, demos, test... |
| |
...lo colocarían en el subdirectorio src barra scripts barra demos barra demos. Una vez hecho esto, se activa una canalización de compilación automática que inicia el script de compilación de Python, que analiza las estructuras y compila el complemento... |
| |
...el complemento y lo vuelve a subir al servidor de GitLab. JMP encuentra la nueva actualización y ofrece automáticamente descargarla y actualizar el complemento Y'All en JMP. El script está disponible en tan solo un par de segundos para los usuarios del canal beta. |
| |
Esperamos que estés entusiasmado con Y'All. Esperamos que te interese usarlo tú mismo o en tu organización. Si es así, queríamos darte algunos consejos para empezar. |
| |
El archivo Zip publicado en la Comunidad de Usuarios de JMP (si estás viendo este video en la Comunidad de Usuarios de JMP, debería estar en la misma página) contiene todos los elementos necesarios para comenzar. Algunos requieren modificaciones. Otros son código de demostración para que puedas experimentar con ellos. |
| |
Pero no dudes en descargarlo y echarle un vistazo. El script de compilación de Python en ese archivo Zip se basa en bibliotecas nativas de Python 3. No hay nada instalado excepto Python en nuestro sistema de compilación. Y debería funcionar en cualquier instalación estándar de Python 3. |
| |
El almacenamiento y la automatización del repositorio central que realizamos con GitLab para CICD para la integración y la implementación continuas están disponibles a través de otros proveedores. GitLab, GitHub, Azure y AWS tienen implementaciones similares. |
| |
Existe un enorme ecosistema de opciones disponibles, por lo que los detalles de implementación serán específicos de su organización. |
| |
El desafortunado efecto secundario es que el archivo gitlab-ci.yml de la canalización CICD requerirá una modificación si desea ejecutarlo de forma automatizada en sus propios sistemas. No funcionará tal como está en sus sistemas, a menos que, por supuesto, sea empleado de Novozymes. |
| |
Todas las cadenas de conexión en nuestras funciones de utilidad que reflejaban nuestra base de datos beta interna han sido reemplazadas con mi cadena de subrayado de conexión ODBC. |
| |
Si desea utilizar alguna de esas funciones, tendrá que ingresar al código en los directorios de trabajo y cambiar esas cadenas para reflejar su base de datos. |
| |
Así que, una vez más, esperamos que estén entusiasmados con Y'All. Esperamos que estén interesados en Y'All. Si tienen alguna sugerencia, pregunta o comentario, no duden en contactarme a mí o a Johan... |
| |
...con ellos. Nos encantaría recibir cualquier contribución, ya sea que tomen este código y lo mejoren o usen este kit de herramientas de forma interesante. Gracias. |
| Christy España |
Bueno, eso estuvo genial. |
| Michael Akerman |
Tiempo. |
| Christy España |
Razonable perfecto sí, sí. |
| Michael Akerman |
¿Lo hace? |
| |
No importa que Johan haya dicho que no quiere JMP. |
| Christy España |
Sabes. |
| Michael Akerman |
Siento que la mayoría de la gente probablemente no lo entenderá. |
| Christy España |
Como palabra nueva me gusta. |
| John |
Entonces nos dijeron que no usáramos eso, así que tuvimos que cambiar el nombre de la cosa y me confundí por no haber eliminado la versión que tenía. |
| |
Previamente instalado. |
| |
Entonces, cuando me di cuenta de que ya estaba en la versión beta, me sentí un poco desconcertado y luego simplemente... |
| |
de todos modos. |
| Christy España |
Sí, creo que está bien, pero eso fue genial, muy interesante. Creo que a la gente le encantará ver esto, así que realmente apreciamos que participen. |
| |
Como dije, voy a subir los videos para que Jeff los edite. No estoy seguro de cuándo estará terminado, pero. |
| |
De todos modos, ya verán todo eso en octubre, pero si surge algo, sin duda se lo haré saber. |
| |
gracias de nuevo y si. |
| John |
Tienes una nueva generación de JMP normal. |
| Michael Akerman |
Sobre lo de que estás en otro lugar, es solo eso. |
| |
sí. |
| John |
Directorio Y'All. |
| Christy España |
Sí, muchas gracias, lo sé. |
| |
Es mucho trabajo luchar contra la enfermedad y lo agradecemos. |
| Michael Akerman |
Un placer para nosotros. |
| |
Gracias por. |
| Michael Akerman |
moviéndose rápidamente después del siguiente. |
| Christy España |
Sí, hombre, por supuesto que fue genial conoceros a ambos. |
| |
Ojalá la próxima vez. |
| |
Al menos con Michael será en persona, Johan me gustaría ir allá, conocerte también, pero. |
| |
sí. |
| Michael Akerman |
Siempre sabes si él está, especialmente si está presentando y en cada cumbre, o algo que sucedió en el pasado en persona, ha sido la misma semana que todas las cosas están abiertas en Raleigh, así que puedes hacer como una semana entera de. |
| |
conferencia computacional. |
| |
y ver un montón de empleados locales. |
| John |
Tal vez sea más fácil discutir el presupuesto de viaje, entonces sí. |
| Christy España |
Dos por uno, ¿verdad? |
| |
sí. |
| John |
Está bien. |
| Christy España |
Bueno, chicos, que tengáis un excelente resto de lunes, una gran semana, gracias. |
| |
Tú también podrás hablar contigo pronto. |
| John |
adiós. |
| |
adiós. |