Vocero
|
Transcripción
|
| mike anderson |
Está bien, ahora se inició la grabación. Comprende que esto se está grabando para su uso en la conferencia de descubrimiento de JMP y estará disponible públicamente en la comunidad de usuarios de JMP. ¿Otorga permiso para esta grabación y uso? |
| |
Sí. |
| |
Hola, mi nombre es Kevin Doran y soy ingeniero de sistemas para el segmento de computadoras portátiles convencionales de Intel Corporation. |
| |
Y hoy me gustaría compartir con ustedes mi viaje que dio como resultado un panel filtrable con múltiples pestañas que ha cambiado la forma en que me comunico con mi organización y cómo JMP fue una parte increíblemente importante de ese viaje. |
| |
Entonces, para empezar, si puedo dejarlo con un mensaje que se lleva de hoy, y ese es un tablero JMP filtrable de múltiples pestañas. |
| |
es una excelente manera de comunicar una increíble cantidad de información |
| |
de una manera clara y eficiente. Entonces, a medida que trabaje en sus proyectos en el futuro, realmente quiero alentarlo a que piense en usar un tablero de múltiples pestañas. Para empezar, al principio, al principio de tu proyecto, |
| |
en lugar de que a menudo la gente piense en el tablero y lo use al final del proyecto, o tal vez como última opción. Esto es algo que realmente creo que realmente puede afectar la forma en que te comunicas y hacerlo mucho más efectivo. |
| |
Muchos de nosotros tenemos el trabajo de arquitecto en el futuro, ya sea definiendo o diseñando productos y servicios. |
| |
para satisfacer las necesidades y deseos percibidos de los futuros clientes. ¿Sabes qué progreso está tratando de lograr mi cliente y cómo puedo lograrlo? Y muchas veces, cuando diseñamos el futuro, queremos mirar hacia el futuro. Estamos mirando hacia el futuro. |
| |
El desafío con el futuro es que aún no ha sucedido y no hay datos allí para respaldar cualquier tipo de decisión que desee tomar. |
| |
Entonces, dado que no tenemos esa información y nos encanta mirar los datos como ingenieros y científicos, entonces miramos al pasado. |
| |
El desafío con el pasado es que mientras tiene datos, significa que en realidad ya sucedió y se acabó. Así, en muchos y diversos medios tratamos de construir puentes entre el pasado |
| |
hacia el futuro, porque creo que es muy importante para nosotros entender el pasado para poder desarrollar un futuro mejor. |
| |
Creo que probablemente la mayoría de la gente estaría de acuerdo en que no todos los puentes se construyen de la misma manera. Esta es una foto del puente Tacoma Narrows en 1940. |
| |
Llega a un final muy dramático. Entonces, si desea buscar el puente Tacoma Narrows en 1940 en YouTube, puede ver el final de cómo termina todo esto. Pero, |
| |
la razón por la que menciono la analogía del puente y la aplico hacia JMP es el hecho de que este puente tenía una base sólida. |
| |
Y creo que la base de un puente como su tabla de datos JMP. Debe tener datos sólidos que puedan completar los datos allí para establecer su base. Si no tienes eso, no tienes un puente fuerte para empezar. |
| |
No pensé en la estructura del puente en sí como la interfaz de usuario de JMP que creas. En este caso el puente se veía hermoso, |
| |
hasta que el viento empezó a soplar. Y así, a medida que crea su interfaz de usuario, puede tener una cierta forma de querer tener eso |
| |
interfaz de usuario que se utiliza o manipula, puede que no siempre suceda de esa manera. Puede haber personas que tengan diferentes modelos de uso y desee probar y construir algo robusto, no como Tacoma Narrows. Todo fue genial hasta que el viento empezó a soplar y luego pasaron cosas malas. |
| |
Y luego, finalmente, el tránsito a través del puente hacia mí es cuántas personas y qué tan fácil es para las personas usar su interfaz. |
| |
Entonces, esto no funcionó muy bien para ellos, pero lo que quería hacer con mi organización era construir un puente como este, algo que tuviera una base sólida. |
| |
Algo que tuviera una interfaz de usuario muy robusta y algo que fuera muy fácil de atravesar. Entonces, anteriormente en mi organización, usábamos, |
| |
ya sabes, los métodos más conocidos. Intentaríamos mirar diferentes archivos de la placa de la computadora. Trataríamos de hacer nuestras mejores suposiciones basadas en la experiencia. |
| |
Lo que realmente quería hacer es traer una interfaz de usuario, que podamos tomar decisiones estadísticamente significativas, |
| |
y haga que esa información se pueda buscar en múltiples segmentos y se pueda filtrar por métricas importantes. Entonces, eso significaría no solo tener una base de datos firme, sino también un puente sólido y algo que fuera fácil de usar, así que este era el objetivo de mi viaje. |
| |
Entonces, quería comenzar con el puente de base de datos anterior. Ahora, este fue un puente que fue construido hace varios años. Cumplía con las necesidades de la época. |
| |
Pero, después de varias reorganizaciones, ya no satisfacía las necesidades de mi organización. Lo importante aquí es que, aunque la interfaz ya no era muy útil. |
| |
Los datos reales, la base, la tabla de datos que estaba detrás de esto fue muy útil y fue muy importante. Y así, tenía una base sólida con la que trabajar. Entonces, mi objetivo era, ¿cómo construyo ese nuevo puente, esa nueva interfaz de usuario en mi organización y la hago útil para ellos? |
| |
Así que me gustaría llevarlo un poco en ese viaje y darle una idea del camino que tomé para asegurarme de que las personas puedan consumir mi información de manera fácil y precisa. |
| |
Así que tenía esta base de datos. Tenía una base sólida y luego comencé a informar a las personas de mi organización que tenían esta información. |
| |
Como los principales ingenieros de sistemas o de cualquier manera, puedo ayudarlos y establecer algunas visiones año tras año. |
| |
Entonces, en ese momento, comencé a recibir algunas preguntas y entré en JMP. Creé algunas tablas o gráficos o diferentes tipos de informes. |
| |
Y respondería a sus preguntas. Y luego, lo que sucedería es que esas personas regresarían con más preguntas y las nuevas personas me harían preguntas. |
| |
Y el desafío con el que me encontré es el hecho de que tenía tantos recortes que estaba enviando, sentí que era un chico de recortes la mitad del día y entro y respondo todas estas preguntas y envío información. Más entraría. Y simplemente fue |
| |
una situación insostenible para mí, así que tuve que encontrar una forma diferente de comunicar esta información. |
| |
La respuesta a eso para mí fue aprender tableros. |
| |
Creo que los tableros en general, en mi opinión, parecen ser una plataforma infrautilizada dentro de JMP. Por lo tanto, de nuevo, si no ha leído sobre el tablero, infórmese. |
| |
Pero lo que pude hacer fue aprender tableros y poner todas estas imágenes en una interfaz que puedo proporcionar a las personas. Entonces, estaba recibiendo preguntas... Daré un ejemplo de una pantalla. |
| |
Oye, Kevin, ¿puedes decirme los tamaños de pantalla y las resoluciones de pantalla en tu segmento principal desde una perspectiva anual? |
| |
Y así, eventualmente, lo que comenzó como recortes se convirtió en un tablero. Entonces, pude dar información sobre la pantalla y responder las preguntas de la gente de esa manera. |
| |
Pero, |
| |
el desafío con el tablero como lo había creado es que no permitía más manipulación. Entonces, fue una exhibición estática y luego la gente comenzó a regresar diciendo qué pasa con este caso y qué pasa con esta situación. |
| |
Y lo que realmente necesitaba hacer en ese momento era proporcionar una sensación un poco más interactiva para mi tablero. |
| |
Y esto en realidad fue algo que fue muy crítico en mi viaje que realmente quiero compartir con ustedes, y eso es |
| |
Sabes, lo primero que hice fue agregar un filtro de datos local. Entonces, creo que la mayoría de las personas están muy familiarizadas con eso y luego pude hacer que las personas manipularan el tablero. |
| |
Pero aquí sucedió algo más realmente crítico y realmente quería impresionar esta idea, y ese es el hecho de que la tabla de datos que tenía, esa base, |
| |
tenía más que solo mi información en él. Tenía información sobre portátiles básicos, portátiles de alto rendimiento, portátiles premium y cosas por el estilo. |
| |
Y de lo que me di cuenta en ese momento es que no solo puedo proporcionar este tablero, |
| |
no solo para mi segmento principal, sino que también puedo aumentar mi alcance o mi ámbito, |
| |
aumentaría mi influencia y mi red de contactos, si también proporcionara esta información para todos esos otros segmentos informáticos. Entonces, en este punto hay una pieza realmente importante que |
| |
Tomé un subconjunto en todos los demás segmentos, y luego lo agregué como una opción filtrable en mi tablero. Entonces, esta fue una pieza realmente importante cuando estás pasando por esto. Si hay algo en su tabla de datos |
| |
que le permite expandir su influencia, realmente quiero que le eche un vistazo y tal vez use el tablero y ayude a comunicar esa función ampliada. |
| |
Ahora, yo tenía eso y eso estaba yendo muy bien. El desafío, en ese momento, era que todavía estaba confinado a un tablero, un tema. Todo esto fue básicamente en torno al atributo de la plataforma de visualización que yo estaba abordando. |
| |
Entonces, comencé a recibir preguntas sobre hey Kevin, ¿puedes hablarme sobre la RAM o los gráficos o las métricas mecánicas de la plataforma? |
| |
Entonces pensé, bueno, puedo seguir adelante y tomar este panel de visualización y luego crear la misma infraestructura para todas las otras métricas de mi plataforma sobre las que me preguntaron. |
| |
En ese momento, había creado múltiples tableros para que cuando las personas quisieran una actualización de la información, |
| |
Terminaría enviándoles de cuatro a cinco archivos JMP y les diría que toda la información está aquí. Solo necesita abrir cuatro o cinco archivos diferentes. |
| |
Debe ingresar y filtrar cada uno y buena suerte con ese tipo de cosas y eso creó otro problema, porque no lo estaba haciendo fácil. |
| |
para mi cliente en absoluto. Estaba enviando todos estos archivos, tenía que entrar y salir y eso no era muy fácil. |
| |
Entonces, en ese momento, estaba al final de mi conocimiento de JMP, así que contacté al soporte de JMP y les di la idea de lo que quería hacer. Tenía muchas ganas de tomar todos estos tableros múltiples que estaban en mi pantalla |
| |
y realmente reunirlos en un panel de múltiples pestañas y, que yo sepa, esto no se ha hecho antes. Y, afortunadamente a través |
| |
con la ayuda de JMP pude seguir adelante y recibir un script de JMP que realmente me dio esa capacidad. Y, ahora puedo, a través de todo esto, tratar de enviar un archivo |
| |
que le da a la gente todas las respuestas o, con suerte, les da toda la información que necesitan. |
| |
Así que esa fue realmente la pieza de esto. Y la razón por la que quería compartir este viaje es para ahorrarle meses de tiempo en los que puede ir inmediatamente a ese estado final que es muy efectivo y eficiente. |
| |
Entonces, quiero mostrarles cómo se ve el script JMP. Seré el primero en admitir que soy un hacker de scripts. [risa autocrítica] No soy programador. |
| |
Pero puedo hacer un buen trabajo haciendo tablas y gráficos y luego guardo el script en la tabla de datos o lo guardo en una ventana de script y los agrego todos juntos. |
| |
Entonces, en este punto, realmente quiero agradecer a Nick Holmes en el soporte de JMP, él es quien le di la declaración de mi problema, trabajamos en varias iteraciones de esto. |
| |
Y se le ocurrió este guión que ha hecho un trabajo increíble para mí. Entonces, lo que quiero hacer para ponértelo fácil a ti también y ayudarte en tu papel, |
| |
no es solo cargar mi presentación, sino que también voy a cargar este script para ti, siempre y cuando no tengas ninguna palabra variable que conozcas |
| |
conflictos o cualquier otra cosa, por ejemplo, debe tener múltiples scripts o múltiples paneles en su mesa |
| |
abierto y debería poder ejecutar el script y lo combinará todo por usted, sin necesidad de hacer nada sin necesidad de cambiar nada de este código. Así que espero que pueda ser muy útil para usted. |
| |
Entonces, quería mostrarles ahora que tenía el script, quiero mostrarles al menos una captura de pantalla de mi tablero. |
| |
Esto fue capaz de transformar nuevamente una gran cantidad de información detallada detrás de él. Y, lo que pude hacer aquí en esta base de datos muy simple o una interfaz simple |
| |
se podía segregar por segmentos. Entonces, arriba a la izquierda fue el aumento de mi alcance y mi influencia. Por lo tanto, puede seguir adelante y filtrar por la corriente principal o las entradas son sistemas de alto rendimiento. |
| |
Luego tuve un montón de métricas de nivel de filtro que eran importantes para mi organización. |
| |
Y luego, el valor real de esto está en la parte superior, tengo una pestaña por atributo. Tengo cinco pestañas aquí arriba en este momento que mostraban información de RAM, gráficos, CPU y plataforma. Y todo lo que el usuario tiene que hacer es desplazarse por las pestañas o desplazarse por el |
| |
filtros y obtenga una increíble cantidad de personalización y datos muy detallados, todo desde esta interfaz. |
| |
Y creo que hay una verdadera belleza en la simplicidad aquí. Porque algo que parece yo diría relativamente así de simple, |
| |
en realidad, tiene más de 1 millón de filas de datos detrás. Entonces, creo nuevamente que parte de la belleza aquí es que puedo tomar algo que creo que se creó, se creó de manera bastante sólida, |
| |
y poder proporcionar una gran variedad de escenarios e información a mi usuario a través de algo que parece muy simple de usar. Y creo que eso es algo realmente importante: hacerlo fácil de usar, para su cliente y su organización. |
| |
Entonces, paso suficiente tiempo en PowerPoint, es hora de ir al tablero. Creo que es muy valioso observar a las personas en estos seminarios web para manipular realmente parte de la interfaz de JMP. |
| |
y pasar por pulsadores. Veo mucho valor en eso. Entonces, quiero pasar el resto de mi tiempo en JMP y mostrarles lo que hice. |
| |
Quiero comenzar con las personas que no han utilizado tableros antes. Hay muchos videos que realmente te muestran cómo pasar por eso. al menos quiero mostrarte |
| |
un ejemplo muy breve de cómo lo hice y al menos te da una idea si no lo has hecho antes. Entonces, |
| |
Tengo aquí cuatro informes abiertos. Una tabla y tres constructores de gráficos. Y lo que quiero hacer ahora es simplemente poner eso en un tablero. Entonces, todo lo que tienes que hacer es ir a tu tabla de datos, |
| |
y diga Archivo, Nuevo, Tablero. Y, se le ocurrirá una serie de plantillas diferentes. La mayoría de mis cosas que he hecho hasta ahora son solo una plantilla de dos por dos. |
| |
Puede elegir cualquier plantilla o puede elegir una plantilla y modificarla. Entonces, lo que voy a hacer es elegir mi tablero de dos por dos. |
| |
Y verá que tengo mis cuatro informes y es literalmente solo arrastrar y soltar. Voy a seguir adelante y presentar mis diferentes informes. |
| |
Sólo en esas cajas. |
| |
Y ahora tengo básicamente la plantilla de mi panel de control ensamblada. Ahora mencioné anteriormente que también tengo un filtro de datos local asociado con esto. Entonces, verá que hay estas pequeñas líneas delgadas alrededor de estos diferentes cuadros aquí, y puede arrastrar y soltar diferentes |
| |
casillas aquí, y lo que voy a hacer es dejar caer el filtro de datos locales lo más a la izquierda que pueda. Lo que significa que afectará a la |
| |
las cuatro de estas cajas. Entonces, puede ver que este filtro de datos locales ahora se aplicará a los cuatro. |
| |
Y simplemente tengo que ir al punto de acceso o al triángulo rojo y decir ejecutar panel. |
| |
Y tomará solo unos segundos, pero lo que verá finalmente es un tablero con todas esas características juntas. |
| |
A continuación, puede continuar y cambiar las alturas y las relaciones de aspecto y diferentes cosas por el estilo. |
| |
Tienes que hacerlo manualmente en ese punto, y tus filtros de datos locales y cuando esté listo para continuar y ponerlo en un script, |
| |
todo lo que tiene que hacer es ir a este punto de acceso, Guardar secuencia de comandos y lo guardaré en una ventana de secuencia de comandos. Y luego obtienes un muy largo |
| |
y script detallado que luego puede simplemente cortar y pegar en sus scripts existentes. Entonces, eso es realmente todo lo que hice, crearía un tablero. |
| |
Yo diría que guarde el script en la ventana del script. Y luego, lo que haría es seleccionar todo, copiarlo y luego pegarlo en un archivo existente. |
| |
un script existente que estaba agregando. Así es como vas a crear un tablero. Permítame dedicarle un minuto y mostrarle cómo creé un tablero de JMP con un tablero de múltiples pestañas. Entonces, voy a seguir adelante y cerrar todo esto. |
| |
Entonces, dame solo un segundo para hacer todo eso. |
| |
La bandeja del sistema no está visible en este momento, así que no puedo cerrar todo |
| |
todo a la vez, pero déjame seguir adelante y hacer todo esto manualmente aquí. |
| |
Bien, entonces voy a abrir mi tablero ahora. |
| |
Y mientras eso se carga, quiero asegurarme de que mientras comunico esto, esa parte de esa orientación al cliente que creo que es muy valiosa |
| |
es realmente pasar y hacer que sea muy fácil para su cliente crear el tablero en sí. Entonces, lo que verá aquí en mi tablero es que tengo un script |
| |
llamado Create CSA Dashboard y literalmente se lo digo a mis clientes. |
| |
Abra esto, abra este archivo JMP, todo lo que tiene que hacer es presionar el pequeño triángulo verde. No te preocupes por nada más. Todo se creará automáticamente para usted. Entonces, eso es algo que puede hacerlo muy fácil. No se lo compliques a tu cliente. |
| |
Esto toma alrededor de dos minutos para crearlo, así que lo que pensé que sería valioso en realidad es ir a mi guión que creé y guiarlo a través de eso. Al menos mostrarte algunas cosas que me parecieron muy útiles. |
| |
Este guión es bastante largo pero está dividido básicamente en seis partes. Tengo una parte para cada uno de mis cinco tableros diferentes. |
| |
Y luego, mi sexta parte de esto es la base del código que compartí con ustedes del soporte de JMP y lo envuelve todo en un tablero. |
| |
Entonces, lo que elegí hacer aquí es, nuevamente, tengo cuatro informes con cada tablero y necesito salir y crear cada uno de esos informes. Entonces, lo que hice aquí fue nombrar cada informe. |
| |
Este es el panel de visualización del que les estoy dando un ejemplo, por lo que lo llamé Pantalla y era una función de tabulación. |
| |
Y luego verás mi código que creó la tabla JMP. Y nuevamente, todo lo que hice aquí fue seguir adelante y crear la tabla. Guardé el script en la ventana del script. Y lo copié aquí. Eso es todo lo que hice. |
| |
Otra cosa que hice también que me ha sido útil es guardar este informe final en mi tabla de datos. |
| |
Y realmente hice esto por dos razones. La primera es que todavía me sale |
| |
Preguntas únicas que necesito para manipular un informe específico y luego enviarles esa información personalizada. Entonces, |
| |
al crear o guardar el script en la tabla de datos, esto me permite ir rápidamente a ese script, presionar el botón muy rápidamente, obtener mi información, manipularla y enviarla de vuelta. |
| |
La otra razón por la que hago esto es en realidad para mi cliente. Ocasionalmente recibo algunas preguntas sobre hey Kevin, ¿puedes cambiar el título de esto en esta pantalla o este informe? ¿Puedes cambiar el color de esto? Y, si lo son. |
| |
usted sabe lo suficientemente avanzado dentro de JMP para saber cómo hacer eso, todo lo que tienen que hacer es seguir adelante y manipularlo ellos mismos. Obtienen la información sin siquiera contactarme. Entonces, es como enseñarle a esa persona a pescar. |
| |
Pueden seguir adelante y cambiar esas cosas por sí mismos. Así que he tratado de habilitarlos para eso también. |
| |
Así que este es el informe. Luego, lo que hago es crear mi segundo informe y hacer lo mismo. |
| |
Construyo mis terceros informes y hago lo mismo aquí. |
| |
Cree el cuarto informe. Haga eso para que ahora tenga los cuatro informes juntos. |
| |
Y luego, tal como les mostré anteriormente con la creación del panel, simplemente copié y pegué toda la información del script en este script aquí para crear el panel. |
| |
Y luego, lo que hice fue ponerle un nombre para asegurarme de que sabía que todos los nombres eran diferentes en cada uno de los tableros. |
| |
Entonces, y luego en la parte inferior después de haber hecho eso cinco veces, les mostraré abajo, aquí abajo, |
| |
cree el tablero de pestañas, y este es literalmente el código que le mostré en la presentación y el código que también se cargará en el sitio web. Entonces, tendrás toda esta información aquí. |
| |
Ahora invariablemente vas a necesitar cambiar algo. Vas a olvidar el título de algo que quieres cambiar de color. |
| |
Hay dos maneras de ir y hacer eso. Una es que tiene que volver a crear el informe en sí mismo de la forma que desee. |
| |
Y luego podría ingresar manualmente y recrear todo el tablero, porque la codificación aquí en realidad tiene ese informe incrustado. Por lo tanto, puede crearlo manualmente. O lo que he elegido hacer que ha sido más |
| |
eficiente para mí es realmente ir a crear el nuevo informe y luego cambiarlo en áreas dentro del script y luego está listo para comenzar. De esa manera, mantiene todo el formato de su tamaño de ventana y todo lo mismo que le gustaría. |
| |
Entonces, digamos, por ejemplo, volveré a esta función de tabla; digamos que quería irme y crear una tabla diferente o modificar esa tabla. Todo lo que haría sería regenerar ese informe. |
| |
Lo copiaría en esta área nuevamente para asegurarme de que el informe se regenere. Pero entonces lo que también tengo que hacer es tomar el mismo código |
| |
y luego reemplácelo en los scripts de tablero de JMP. Entonces, les mostraré que existe el pequeño truco, es decir, deben salir y buscar, Ctrl-F, y deben buscar un |
| |
código llamado plataforma abierta paren. Entonces, si ven los datos de la tabla aquí, lo que haré es buscar el paréntesis abierto de la plataforma. |
| |
Y luego verá aquí dentro del tablero de la pantalla el mismo código que está aquí. Y así, simplemente tienes que reemplazarlo allí también. Entonces, |
| |
solo recuerde que si está modificando algo que ya existe, desea cambiarlo en la sección de su informe, entonces también querrá cambiarlo en la sección de su tablero. Bien, ahora tengo mi panel combinado de pestañas múltiples. |
| |
Puedes ver que es un segregado o tengo un filtro en los segmentos. Una vez más, puedo elegir la corriente principal, la entrada o el alto rendimiento. |
| |
Tengo todos mis filtros que son muy importantes para mí y mi organización y, de nuevo, hubo algo que es el valor real con esto |
| |
son las diferentes pestañas que hay aquí. Tengo una pestaña en Pantalla y, en este caso, tengo una tabla aquí. |
| |
Tengo información sobre la RAM, así que obtengo un mapa de árbol. Esa es una manera diferente de mostrar esto. Hay muchas variaciones diferentes de cosas que puedes poner aquí, y estos son solo algunos de mis ejemplos. |
| |
Puedo mirar la información gráfica. Hay información de la CPU y luego algo que me gusta dentro de la plataforma es que soy un verdadero fanático de la trama paralela. |
| |
Eso le permite ver las variaciones, o al menos las relaciones entre diferentes variables X y luego verá algunos diagramas de caja aquí. |
| |
Entonces, este es un ejemplo de un tablero nuevamente, hay un millón de filas o más de un millón de filas de datos detrás de esto y creo que es una plataforma bastante sólida. Realmente se puede manipular muy fácilmente. |
| |
Una cosa que quería hacer aquí para las personas que quieren dedicarse a esto es la plataforma Decision Tree. Me encantaría poder crear árboles de decisión aquí que realmente puedan manipularse a través de los filtros de datos. |
| |
Eso es algo que ahora se admite en JMP 16. Todavía no tengo JMP 16, así que no puedo probarlo. Pero de todos modos esa plataforma ahora se agrega. |
| |
Creo que sería increíblemente valioso algún tipo de plataforma de árbol de decisiones para venir aquí y realmente verse afectado por sus filtros de datos locales. |
| |
Así que ese es el, es decir, el tablero y realmente y tratando de terminar aquí, nuevamente solo un recordatorio, que esto es algo que realmente espero que pueda ser muy poderoso, |
| |
ser una forma muy eficaz y eficiente de comunicarse en su organización. Y espero que esta presentación y el guión de JMP asociado realmente puedan ayudarlo y avanzar en su carrera. Así que te agradezco mucho tu tiempo. |
| |
Y eso es todo. |