Artículo
· 11 mar, 2021 Lectura de 6 min
Cómo gestionar el espacio en disco en Docker

Quería escribirlo como comentario al artículo de @Evgeny Shvarov. Pero resultó demasiado largo, así que decidí publicarlo por separado.

Imagen que resulta de Docker cuando se limpian todas las imágenes

Me gustaría añadir una pequeña aclaración sobre cómo utiliza Docker el espacio en disco y como limpiarlo. Yo uso macOS, por lo tanto todo lo que explico aplica principalmente a macOS, pero los comandos de Docker se adaptan a cualquier plataforma.

1 1
0 3.5K
Artículo
· 18 mar, 2023 Lectura de 4 min
Procedimientos Almacenados, la navaja suiza de SQL

Una de las razones por las que me encantan Cache e IRIS es que no solo puedes hacer cualquier cosa que puedas imaginar, sino que también puedes hacerlas de un montón de maneras diferentes!!

Imagina que tienes una integración con IRIS (o Cache) funcionando conectada por ODBC. Probablemente solo uses consultas SQL, pero puedes usar también procedimientos almacenados y dentro de su código puedes hacer cualquier cosa que puedas imaginar.

Voy a darte algunos ejemplos, pero el límite está en tu imaginación!

Quizás te estés diciendo... ¡espera!! Yo no sé como crear un procedimiento almacenado en IRIS... Pero eso no es cierto, sabes crearlo! Lo que pasa que todavía no lo sabes...

1 0
0 133
Artículo
· 5 feb, 2023 Lectura de 2 min
COS Url Shortener - Acortador de URL's

Hola Comunidad!

Quiero compartir con vosotros mi primera aplicación del Open Exchange.

Es una herramienta para hacernos los desarrollos mas fáciles. Es un microservicio con IRIS en un docker que nos ayuda en los desarrollos de campañas de SMS, Mail y en los links para las tiendas de nuestras apps brindándonos un acortador de Url's.

Es muy fácil de usar.

Simplemente clona este repo:

https://github.com/daniel-aguilar-garcia/cos-url-shortener.git

1 2
0 160

Todos los desarrolladores hemos cometido alguna vez el error de accidentalmente dejar código temporal de depuración en lugar de eliminarlo al finalizar lo que estamos investigando.

Lo interesante de escribir en ObjectScript es que hay una forma de hacer que el código provisional sea realmente provisional y se auto-destruya automáticamente! Incluso puede hacerse de manera que el código no aparezca en tu sistema de control de código fuente, lo que puede ser útil igualmente.

El secreto radica en utilizar el "intermediate code" (.INT), que se genera cuando se compilan clases (.CLS), código de rutina (.MAC) o páginas CSP (.CSP). El código INT se utiliza entonces para crear el código OBJ, que es el que finalmente se ejecuta.

1 1
0 94

Hola desarrolladores!,

Ya se lo que estáis pensando. " Una mejora para ZEN.proxyObject...??? ¿Ahora...????

Bueno en España tenemos el dicho de mas vale tarde que nunca. ;-)

¿Alguna vez has necesitado enviar un atributo numérico de un JSON en formato String?

¿Te volviste loco casteando objetos de clases con propiedades fijas y tipadas?

Pues estás de enhorabuena!! porque ahora podrás hacerlo fácilmente!!.

1 1
0 85

Durante una actualización a una versión principal (major) es aconsejable recompilar las clases y rutinas de todos tus namespaces (ver Tareas tras la instalación de una versión major).

do $system.OBJ.CompileAllNamespaces("u")
do ##Class(%Routine).CompileAllNamespaces()

Para automatizar esta tarea de administración y mantener un registro de cualquier error, os muestro un ejemplo de una clase para importar y compilar en el namespace USER, que puedes usar después de cada actualización: admin.utils.cls

1 1
0 139
Artículo
· 3 mayo, 2022 Lectura de 14 min
Depuración tradicional en ObjectScript

Encontrar errores en tu código o examinar un comportamiento inesperado es el principal objetivo de la depuración.

Trataré de actualizar las herramientas tradicionales aparte de las ayudas que tienen Studio, VScode, Serenji... Las herramientas básicas que han estado ahí antes de que tu EDI preferido lo utilizara en segundo plano.

1 0
2 141

Hola a todos.

Estoy intentando crear una regla de enrutamiento para llamar a un web service según el valor de un parámetro de un mensaje.

Mi primer intento es el siguiente:

Tengo una clase común con toda la información, BuscarHuecoRequest, y comprubea cual es el valor de la propiedad "CodigoProveedor".

1 1
0 75
Artículo
· 21 feb, 2022 Lectura de 2 min
Resolución exitosa de problemas

Durante las últimas semanas, estuve trabajando en varias cuestiones y problemas relacionadas con el desarrollo de software. Me di cuenta de que con frecuencia el análisis de los problemas consistía en perseguir los problemas solo a nivel superficial, pero sin atacar realmente las razones más profundas del problema y sin seguir las consecuencias. Es como el médico que detiene la hemorragia de una pierna pero no ve que en realidad está rota.

1 0
0 132

Hola a todos,

Tengo una regla para lanzar un mensaje cuando hay un error. Quiero evitar enviar el correo si el origen del error es la API para enviar el correo

Esta es mi regla:

Ahora, si hay algún error en algún proceso, funciona, pero si hay un error en MyProduct.BO.SendEmail está intentando enviar el error nuevamente, y es un bucle infinito.

¿Hay alguna forma para verificar cuál es el origen y no procesar si el origen es MyProduct.BO.SendEmail?

1 5
0 175

Buenas a todos.

Tengo un servicio creado por el wizard de WebServices para la invocación a un proveedor de citas.

Para valicar la petición, tengo que revisar si en el nodo de mensajes viene algún texto porque eso significa que ha habido algún problema con las citas solicitadas.

Mi clase de respuesta del proveedor es algo como esta (por motivos de confidencialidad, no puedo mostrar la clase real, pero si el valor exacto del nodo que estoy preguntando):

1 1
0 200
Artículo
· 12 nov, 2021 Lectura de 21 min
Curso de formación sobre Ensemble / Interoperabilidad

Este curso de formación está dirigido a todas las personas interesadas en conocer el framework de Interoperabilidad de IRIS. Utilizaremos Docker y VSCode.

GitHub: https://github.com/grongierisc/formation-template

1. Formación en Ensemble/Interoperabilidad

El objetivo de esta formación es aprender el framework de interoperabilidad de InterSystems, y en particular el uso de:
* Producciones
* Mensajes
* Business Operations
* Adaptadores
* Business Processes
* Business Services
* Operaciones y servicios REST

1 0
0 229

Hola a todos,

tengo un proceso que recibe una fecha en formato ISO 8601 (YYYY-MM-DDThh:mm:ss+001) a un valor %timestamp.

Ejemplo: set myDatetime = "2021-11-04T11:10:00+0100"

He intentado usar $SYSTEM.SQL.CONVERT(myDatetime,"SQL_TIMESTAMP") pero no funciona.

¿Alguna idea?

Saludos,
Kurro Lopez

1 1
0 268

Hola comunidad,

Tengo una clase cliente SOAP que conecta con un WS Service. Esta estructura y configuracion es la misma para varios proveedores que están integerados con mi solución.

Si llamo a un proveedor, devuelve el XML esperado. Pero hay un proveedor que lanza un error:

ERROR #6243: HTTP request to SOAP WebService returned response with unexpected CONTENT-TYPE: application/wsdl+xml

1 7
0 421
Artículo
· 12 ago, 2021 Lectura de 3 min
Escaneo y división de globals
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.      
Y NO cuenta con el servicio de soporte de InterSystems.

En la mayoría de los casos, un global que se utiliza como almacenamiento predeterminado tiene solo 1 nivel de subíndice que representa el IDKEY.
Para un índice de globals podemos ver 2 o más niveles de subíndices.
Las matrices, las relaciones de herencia padre hijo o las clases persistentes que extienden una clase base, son ejemplos en los que vemos más niveles. Aunque todos estos globals son bastante uniformes.

1 0
0 135

¡Hola desarroladores!

¿Os parece que las consultas sobre el rango de fechas son demasiado lentas? ¿Os parece que el rendimiento de SQL es bajo? ¡Tengo un curioso truco que podría ayudaros a solucionar estos problemas! (¡Los desarrolladores de SQL odian que sepáis estas cosas!)*

Si tenéis una clase que guarda los registros de hora cuando se añaden datos, entonces esos datos se ordenarán con vuestros valores IDKEY, es decir, TimeStamp1 < TimeStamp2 si y solo si la condición ID1 < ID2 se cumple para todos los valores ID y TimeStamp en la tabla - entonces podéis utilizar esta información para aumentar el rendimiento de las consultas en relación con los rangos de TimeStamp. Echad un vistazo a la siguiente tabla:

1 1
0 1K

En Studio, podías abrir una clase directamente usando su nombre, sin tener que recorrer completamente el árbol de paquetes con un montón de clics hasta llegar a la clase deseada.

Con Ctrl + O o (File -> Open) podías escribir el nombre de la clase de forma sencilla, por ejemplo:

Pulsabas Enter y voilà!, la clase se abría.

¿Cómo se logra esto en VSCode?

1 0
0 675

Hola a todos,

Tengo un error muy extraño cuando llamo a un servicio web SOAP como cliente.

He creado todos los objetos para invocar a este SOAP usando el complemento "Asistente SOAP" en Eclipse, ha creado todos los objetos (Response, Request, Clase WS de Business Operation, etc.).

Cuando llamo a este servicio, devuelve el siguiente mensaje de error:

ERROR #6243: La solicitud HTTP a SOAP WebService ha devuelto una respuesta con CONTENT-TYPE inesperado: text/html.

1 2
0 2.1K
Artículo
· 25 nov, 2020 Lectura de 17 min
Objetos de proxy remoto mediante despacho dinámico

Este artículo fue creado como efecto secundario de las preparaciones para un conjunto más extendido de artículos sobre la simple, pero útil, implementación de MapReduce en Caché. Estaba buscando una forma relativamente fácil de pasar argumentos a (potencialmente) múltiples objetivos mediante mecanismos de invocación remota. Y tras varios intentos, me di cuenta de que en el ObjectScript de Caché contamos con mecanismos muy potentes que podrían ser de utilidad para esto: dynamix dispatching para métodos y propiedades.

1 0
1 119