¡Hola Comunidad!
Os traemos un nuevo vídeo, disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés:
InterSystems ObjectScript es un lenguaje de programación para operar con datos mediante cualquier modelo de datos que se encuentre en InterSystems Data Platform (Objetos, relacionales, valores clave, documentos, globales) y desarrollar lógica empresarial para aplicaciones del lado del servidor en InterSystems Data Platform.
¡Hola Comunidad!
Os traemos un nuevo vídeo, disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés:
¡Hola Desarrolladores!
El primer Concurso de Programación con InterSystems IRIS ya ha terminado. ¡Gracias a todos los participantes!
Recibimos 20 apps excelentes y ya podemos anunciar los ganadores.
¡Hola Comunidad!
En este artículo describiré e incluiré un ejemplo de cómo incrustar un archivo PDF externo en un segmento HL7, concretamente en el segmento OBX() de un mensaje ADT_A01 versión 2.3.1 . Esto puede ser útil para insertar imágenes u otros datos externos en un mensaje HL7. En este ejemplo, el nombre del archivo PDF a incrustar nos llega en el mensaje HL7 entrante en el campo OBX(1):ObservationValue.
Los requisitos básicos para este ejemplo son los siguientes:
¡Hola Comunidad!
El plazo para participar en el Primer Concurso para Desarrolladores de InterSystems terminó ayer y empieza la fase de votación.
Hemos recibido 20 aplicaciones hasta ahora - así que ya hay suficientes para elegir la mejor!
¿Cómo puedes votar?
Es muy fácil: tienes un voto, y tu voto irá en la Nominación de los Expertos o en la Nominación de la Comunidad.
¡Hola Desarrolladores!
Os dejamos un nuevo video en formato "coding talk" ("Charlas sobre programación"), especialmente realizado por @Evgeny.Shvarovpara el Concurso para Desarrolladores de InterSystems:
⏯ Cómo crear y enviar una aplicación al Concurso para Desarrolladores de InterSystems
¡Hola Comunidad!
Esta publicación es para presentarles uno de los primeros proyectos en COS de @Henry Pereira . Lo creó cuando empezó a aprender el lenguaje y lo sigue mejorando hasta hoy.
El CosFaker (aquí en Github) es una biblioteca de COS pura, para generar datos falsos.
cosFaker vs Utils de populación
¿Por qué usar cosFaker si Caché tiene la utilidad de popular datos?
¡Hola desarrolladores!
Este mes de marzo lanzamos nuestro primer Concurso de Programación con InterSystems IRIS! El objetivo del concurso es crear soluciones de código abierto utilizando InterSystems IRIS Data Platform.
El tema del primer concurso es InterSystems IRIS, Docker y ObjectScript.
El concurso estará activo durante tres semanas, del 9 al 31 de marzo de 2020.
Premios:
Habrá una Nominación de los Expertos, en la que los ganadores serán elegidos por un jurado especialmente formado para el concurso. Los premios serán:
🥇 1er puesto - $2,000
🥈 2º puesto - $1,000
🥉 3er puesto - $500
(La guía definitiva sobre $zv para la galaxia ISC en palabras sencillas y entendibles).
No pretendo decir que esto sea una guía de "buenas prácticas", pero estoy en una situación particular en la que necesito impedir que los usuarios inicien una producción de Ensemble “retirada” en un namespace renombrado. Sigue siendo un namespace activo, por lo que debemos mantenerlo disponible para acceder al visor de mensajes... afortunadamente, solo por un tiempo.
Es un truco …
Abrimos la clase de la Producción en el estudio y añadimos el siguiente ClassMethod:
ClassMethod OnStart() As %Status
{
Return $system.Status.Error(5001,"THIS PRODUCTION IS DISABLED.")
}
El tema del rendimiento de los bucles for/while en Caché ObjectScript surgió recientemente en una discusión, y me gustaría compartir algunas ideas/prácticas recomendadas con el resto de la comunidad. Aunque este es un tema básico por sí mismo, es útil conocer con cuales se obtiene un mayor rendimiento.
En resumen, las opciones más rápidas son los bucles que se iteran por $ListBuild, las listas que se forman con $ListNext o sobre un conjunto local mediante $Order.
Por ejemplo, consideraremos iterar un bucle por cada elemento de una cadena delimitada por comas.
Esta publicación es el resultado directo de trabajar con un cliente de InterSystems que acudió a mí con el siguiente problema:
SELECT COUNT(*) FROM MyCustomTableEsto tarda 0.005 segundos, con 2300 filas en total. Sin embargo:
SELECT * FROM MyCustomTableEn este artículo vamos a comparar las funciones $Increment y $Sequence.
Para aquellos expertos que no pueden parar después del concurso "Advent of Code" (AoC2019), he publicado un código bastante antiguo en estilo tradicional para mejorarlo.
Fue escrito en base a una prueba previa en .XLS. Está lejos de ser perfecto. Es más bien un desafío para mejora en todas las direcciones (código, interfaz, ...). Así que cualquiera está invitado a mejorarlo.
¡Hola Comunidad!
La mayor parte de las comunicaciones servidor-cliente en la web se basan en una estructura de solicitud y respuesta. El cliente envía una solicitud al servidor y el servidor responde a esta solicitud. El protocolo WebSocket ofrece un canal bidireccional de comunicación entre un servidor y un cliente, lo que permite a los servidores enviar mensajes a los clientes sin antes haber recibido una solicitud. Por más información sobre el protocolo WebSocket y su implementación en InterSystems IRIS, vea los siguientes enlaces:
¡Hola desarrolladores!
Siempre que desarrollamos una biblioteca, herramienta, paquete o lo que sea en InterSystems ObjectScript, nos surge una pregunta: ¿cómo desplegar este paquete en la máquina destino?
Adicionalmente, en muchas ocasiones se supone que debe haber otras bibliotecas instaladas de las que depende nuestro código y a menudo de una versión particular de las mismas.
Cuando uno programa en javascript, python, etc., el rol de despliegue de paquetes con gestión de dependencias se realiza por el package manager o gestor de paquetes.
¡Hola!
Creo que lo más sencillo es (trabajando con un csv delimitado por ";"):
set file = ##class(%File).%New( "data.csv" )
set sc = file.Open( "R" )
if $$$ISERR(sc) quit ; or do smth
while 'file.AtEnd {
set str=file.ReadLine()
for i=1:1:$length( str, ";" ) {
set id=$piece( str, ";" ,i )
write !, id // or do smth
}
}
do file.Close()
Opciones posibles:
Distintas variantes de manejo de errores con código sc.
Introducir un bucle while dentro de un bloque try/catch.
¿Cuál es la tuya?
¡Hola a tod@s!
Como sabéis, durante el Global Summit de este año en Boston celebramos una Reunión de Desarrolladores de InterSystems. ¡Y ya podéis descubrir qué desarrollos sobre InterSystems IRIS se discutieron!
El vídeo de la reunión está disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés:
⏯ Reunión de Desarrolladores de InterSystems - Global Summit 2019
¡Hola Comunidad!
Tengo una pregunta para todos: en ObjectScript tenemos la variable cls para las clases y mac para el código, y ambas se compilan dentro de int en el código. ¿Hay alguna razón para utilizar mac en lugar de cls para las clases no-persistentes?
En mi opinión, los beneficios de utilizar cls son:
1. Herencia y otras funciones de la Programación Orientada a Objetos (POO)
2. Código auto-documentado
En el caso de mac, una ventaja visible es que es más sencillo llamar al terminal:
do method^Utils(p1,p2)
frente a
do ##class(Package.Utils).method(p1,p2)
¿Tú cuál prefieres utilizar y por qué?
¡Hola a tod@s!
En este artículo me gustaría destacar la importancia de utilizar el Tiempo Universal Coordinado (UTC) para el registro del horario en todos los sistemas y aplicaciones. Especialmente si está desarrollando aplicaciones con un alcance mundial.
¡Hola Comunidad!
Tenemos un nuevo vídeo en el canal de YouTube de la Comunidad de Desarrolladores en inglés, grabado por @Stefan Wittmann:
La funcionalidad de Sincronización de Objetos no es nueva, estaba presente en Caché, pero quería explorar un poco más en profundidad cómo funciona. Siempre he pensado que la sincronización automática de una base de datos es compleja en sí misma pero, para algunos escenarios muy particulares quizá no sea tan difícil. Así que he considerado un caso de uso muy simple (OK, quizá el caso típico, no descubro nada... pero si es común y funciona, es bueno ). Puedes bajar el código de GitHub y compilarlo en tu sistema, generar automáticamente datos de ejemplo y jugar un poco con ello. Está hecho para
¡Hola a tod@s!
Este artículo es una pequeña descripción general de una herramienta que permitirá entender las clases y su estructura, dentro de los productos de InterSystems: desde IRIS hasta Caché, Ensemble y HealthShare.
En resumen, con esta herramienta se visualiza una clase o un paquete completo, se muestran las relaciones que existen entre las clases y proporciona toda la información que se encuentra disponible para los desarrolladores y líderes de equipos sin necesidad examinar el código, utilizando el Studio.
Las clases de consulta en InterSystems Caché son una herramienta muy útil que separa las consultas SQL del código Object Script de Caché. Básicamente funciona de la siguiente manera: supongamos que quiere utilizar la misma consulta SQL con distintos argumentos en varios lugares diferentes. En este caso, puede evitar la duplicación del código si declara el contenido de la consulta como una clase de consulta y después llama a esta consulta por su nombre. Este método también es conveniente para las consultas personalizadas, donde el desarrollador define con cuál de las tareas obtendrá la
¡Hola a tod@s!
¿Han probado $Translate para la conversión de fecha?
USER>write $Translate("Dd.Mm.WwYy","WwYy-Mm-Dd","2015-08-02")
02.08.2015
Robado del Foro Ruso y Alexander Koblov.
¡Hola! Me gustaría revisitar hoy con vosotros un artículo muy útil de Amir Samary donde se detalla cómo ejecutar un comando del sistema operativo desde IRIS / Caché / Ensemble de forma interactiva.
Con frecuencia es necesario ejecutar algún comando externo, como por ejemplo un programa Python o un script de bash desde Caché/Ensemble. Existen dos formas principales:
¡Hola chicos!
Como saben, hay dos (al menos) formas de obtener el valor almacenado de una propiedad de una clase InterSystems IRIS si se conoce el ID de una instancia (o un registro).
1. Obtenerlo mediante la propiedad de una instancia con "Acceso a objetos":
ClassMethod GetPropertyForID(stId As %Integer) As %String
{
set obj=..%OpenId(stId)
return obj.StringData
} +++ ++
2. Obtenerlo mediante una columna del registro con "acceso SQL":
ClassMethod GetColumnForID(stId As %Integer) As %String
{
&sql(select StringData into :sd from Ideal.StoredData where id = :stId)
return sd
}¡Hola Comunidad!
En este artículo encontrarán algunosejemplos de conversiones y operaciones que les pueden resultar útiles. También incluyo enlaces a la documentación donde se puede obtener másinformación.
Cuando escribíesto, la hora del Este "Eastern Daylight Time" estaba activa en el Caché de mi sistema.
Hola a todos,
Nuestro compañero en la Comunidad @Dmitry Maslennikov liberó la última versión de la extensión VSCode para ObjectScript hace ya un tiempo, y es momento de hacer alguna revisión de lo que aporta esta versión.
¡Hola a tod@s! Hoy traigo buenas noticias para la Comunidad:
Hace unos días, GitHub se actualizó con la última versión del proyecto linguist, que se utiliza para reconocer los tipos de código fuente en los repositorios. Ayuda a determinar qué lenguaje de programación se ha utilizado en cada archivo del repositorio. La sección de estadísticas del repositorio muestra los resultados del trabajo de este módulo.

Además, se puede buscar en todos los repositorios disponibles de GitHub para cualquier idioma elegido.