Ánimo "hispano-desarrollantes" :-) .... ya no hay excusas para no sacarle todo el potencial a nuestra tecnología, que es ¡la vuestra! ¡A estrujar IRIS DP al máximo!
¡¡Vamoooossss!! |
- Inicie sesión para enviar comentarios
Ánimo "hispano-desarrollantes" :-) .... ya no hay excusas para no sacarle todo el potencial a nuestra tecnología, que es ¡la vuestra! ¡A estrujar IRIS DP al máximo!
¡¡Vamoooossss!! |
Puedes hacerlo. Por defecto, en la primera compilación, se genera automáticamente un mapa de exportación/importación, pero se puede generar un nuevo mapa en el que hayamos quitado una o más propiedades y utilizar ese... o ir cambiando según necesitemos.
Este tema ha sido reportado a nuestro centro de soporte. Como solución temporal, eliminar los mapeos de global previo a la conversión, permite seguir adelante (tras la conversión pueden volver a añadirse).
Hola Yunier,
otra posibilidad a lo que comenta Francisco caso que no puedas utilizar un adaptador, es utilizar la clase %Net.HttpRequest En la documents tienes ejemplos de uso ( https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl… )
Saludos
Hola Bernabé, eres la prueba viviente de la resiliencia de una buena tecnología! Lo cierto es que han pasado varias "eras" tecnológicas desde los tiempos que comentas... pero a ver quien es el milenial que se enfrenta a un dinosaurio a pecho descubierto!
Te aconsejaría "empaquetar" la lógica que tienes en tus rutinas en clases... y dejar Caché a un lado, con todos los honores que se merece, para empezar con InterSystems IRIS... A partir de ahí, depende de lo que tengas, te resultará más o menos fácil, pero en la mayoría de los casos tendría que ser bastante directo.
Una vez que te manejes con las clases, tus opciones son muchas... puedes desarrollar APIs REST, o Web Services,... que te sirvan para publicar funcionalidad que luego puedan utilizarse desde una aplicación en Angular, React, Vue..si te inclinas por aplicaciones web, o en .Net, Java,... Por supuesto siempre puedes ejecutar comandos en modo terminal para funciones atómicas, pero si quieres un interfaz más moderno, el terminal queda descartado.
No te libras de tener que familiarizarte con alguna tecnología de front-end... las que te comento u otras... cuando lo hagas, siguiendo algún tutorial, verás que todo absolutamente todo lo que te planteen en temas de intercomunicación con un motor de BD, lo puedes hacer con IRIS.
Pero bueno, hay camino que recorrer... aparte de este foro, tienes el Open Exchange, con muchas aplicaciones open source que te pueden ser muy útiles y dar ideas. También tienes cursos gratuitos en la sección de Learning...
En el Try InterSystems IRIS puedes probar en una máquina virtual durante un mes... o también puedes bajarte una versión gratuita de InterSystems IRIS Community aquí.
Para ir haciéndote una idea... puedes empezar por los Quick Start.
Ponerse al día puede ser lento al principio... en cuanto le cojas el hilo a los objetos, empezarás a correr. En todo caso, por seguir tu analogía... desde cuando los obstáculos de unos mamíferos bípedos insignificantes han parado a un T-Rex??!! ![]()
Bueno, espero haberte ayudado... o encaminado al menos.
¡Hola Robert!
Me alegro de que te haya servido!!
Ahora toca probar con el soporte nativo a Linux que incorpora la última versión de Windows... veremos que tal el WSL2.
Un fuerte abrazo.
Hola Robert,
lamentablemente no hay mucho material de introducción a la tecnología en español. Evoluciona e incorpora novedades con tanta velocidad que se hace difícil estar al día si no es inglés. Te aconsejo utilizar las opciones de traducción automática de tu navegador cuando sea posible o veas que te resulta complicado seguir en inglés.
Por otro lado, en esta Comunidad puedes plantear tus dudas concretas en español y seguro que obtendrás ayuda.
También te puede interesar... en los últimos años se han ido incorporando webinars en español que tratan temas variados. Los puedes consultar aquí :
Como punto de entrada a la tecnología yo empezaría por:
Respecto al IDE, te recomiendo también mirar lo último que está apareciendo sobre programación en Objectscript con VSCode. Existen algunas extensiones OpenSource para este IDE que permiten trabajar con Objectscript y que serán oficialmente soportadas por InterSystems a partir de su versión 1.0 prevista para finales de Octubre de este año. Esta previsto que las funcionalidades de VS Code como IDE para desarrollo en Objectscript superen a Atelier en muy poco tiempo.
Sí. Aparte del Studio, que es el IDE propietario de InterSystems, la mejor opción hoy en día, cara al futuro, es el VS Code.
Aquí puedes encontrar información : https://intersystems-community.github.io/vscode-objectscript/
Hola Robert,
comprueba si _SYSTEM es un usuario habilitado en tu instancia de IRIS. Según como instales, es posible que esté deshabilitado por defecto. Prueba también con el usuario superuser.
Para cuando en formato póster?? :-)
Hola Mathew,
ese método no devuelve ninguna información ni en caso de error ni de éxito... como bien dices, siempre retorna "".
Una opción perfectamente válida para verificar (sugerida por Anderson Negrelli) sería usar:
##class(%Library.SQLCatalog).GetCachedQueryTableCount("table_name")
Este comando devuelve el número de consultas cacheadas de una tabla y te permite comprobar si todas las consultas cacheadas se han purgado.
Hola Mathew,
Sí. Si hay un error interno en alguna de las llamadas que hace para localizar la tabla y hacer el purgado, el error podría aparecer en $ZERROR. No obstante, hay varias llamadas a métodos internos... no me ha parecido, pero alguno de ellos podría poner a "" el $ZERROR si gestiona el error y considera que debe ponerlo a null. He seguido la cadena de llamadas hasta 3 o 4 niveles y no he visto ningún set $ZE="" explícito... o sea que en principio, si hay algún error interno tras la llamada, $ZE o %objlasterror deberían tener algún valor....
Gracias a ti por estas contribuciones. Me gustó mucho tu idea.
Hola!
¡El período de registro ya ha comenzado! Sigue nuestro Tablón del concurso y estate atento.
Aguardando esos proyectos increibles! :-)
Creo que esto va a ser muy útil para los usuarios actuales de ZEN que quieren evolucionar sus front-end!! 👍
@Julius Kavay ha dado una muy buena alternativa.
En lugar de insertar debug_macros, prueba la utilidad TRACE de Intersystems.
write $$DIR^TRACE("c:\Temp\") ; to set an output directory
write $$ON^TRACE(jobnr) ; the pid of the process you want to trace
; zn "appNamespace"
; do ^yourProgram
; zn "%SYS"
write $$OFF^TRACE(jobnr) ; to stopp the trace
do ^TRACE ; to display the trace resultTRACE muestras las llamadas a métodos/funciones con argumentos.
Para hacer uso de ella, debéis de estar en el namespace %SYS... o podéis mapearla al namespace %ALL y así la podréis utilizar desde cualquier sitio. No aparece actualmente en la documentación oficial, pero podéis encontrar información de uso ejecutando do ^TRACE y en la propia rutina ^TRACE.int (podéis ver el código fuente completo desde el portal, el Studio, VS Code,...)
La sentencia tiene un error sintáctico, constraint debe ir precedido por una coma.
Por otro lado, si lo que se quiere es tener un identificador de fila autoincremental creciente, basta con no indicar la columna ID (y por tanto eliminar la constraint por innecesaria), ya que IRIS creará por defecto una columna ID que mantendrá un valor único numérico creciente por cada nueva fila. Quedaría:
En este caso no tendríamos Primary Key, tendríamos sólo un IDKEY, proyectado en SQL como la columna ID, cuyos valores identifican unívocamente cada fila.
Si lo que queremos es tener una primary key que podamos insertar explícitamente nosotros, pues esa sentencia valdría, añadiendo la coma que falta claro:
En ese caso, al existir ya una columna con nombre ID, IRIS generaría una columna de nombre ID1 donde igualmente nos daría un valor numérico creciente único por fila. Este ID1 sería el IDKEY (no confundir con Primary Key) e ID la Primary Key.
Si quisiéramos tener una Primary Key que coincidiera con el IDKEY, haríamos:
Una de las opciones - No usar el namespace USER.
Por qué preocuparnos de lidiar con USER? Una opción más productiva y limpia es crear tu propia base y namespace desde cero.
Eso es por lo que creamos una nueva base de datos y namespace IRISAPP en cada plantailla, por ejemplo: las plantillas objectscript, rest o ZPM package.
Con esta aproximación del tipo infrastructure-as-a-code, sabes con seguridad que namespaces, mapeos, seguridad, bases de datos, usuarios, ... utilizas y cómo se configuran, porque son los que creas tu.
En todo caso, en instalaciones iniciales de InterSystems IRIS, al menos desde la versión 2020.1, el namespace USER no viene configurado por defecto con la opción de interoperabilidad activada.
EXPLAIN es también un comando SQL soportado por InterSystems IRIS. Se puede llamar desde la shell como cualquier otro comando.
Igualmente, para el ver el plan tambien se puede hacer en el Explorador SQL, pulsando el botón "Mostrar Plan" con la sentencia SQL en cuestión.
.png)
Hola,
habría varias opciones. Quizá la más habitual:
1. Instalar un servidor web público (Windows, Linux).
2. Conectarlo a InterSystems IRIS.
2. Habilitar HTTPS en el servidor web. LA forma más sencilla es Let's Encrypt.
Otra opción sería utilizar un proxy server en docker. Como Guillaume Rongier hace en este ejemplo publicado en GitHub: https://github.com/grongierisc/Https-Proxy-IRIS-Docker o este de Lorenzo Scalese: https://github.com/lscalese/isc-webgateway-letsencrypt
En IRIS puedes decidir cual es el nombre con que se proyecta una propiedad en SQL utilizando el cualificador SqlFieldName al definir la propiedad en la clase:
https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=RO...
Igualmente, podrías utilizar directamente el nombre en su formato digamos SQL, fist_name en la propia definición de la clase... simplemente inclúyelo entre comillas:
Property "first_name" as %String
De este modo, tanto la propiedad en Objetos, como la columna en SQL se llamarían igual... A mí esta segunda opción me gusta menos, porque obliga a utilizar esa propiedad entre comillas en nuestro código cuando la manipulemos como propiedad de un objeto ... Si sólo atacas IRIS desde el punto de vista relacional, te da más igual.
Hola, la mayoría de los componentes de interoperabilidad son clases, así que se puede utilizar ZPM sin problemas.
Hay otros componentes relacionados con la interoperabilidad que no son clases y que ZPM también soporta:
Si utilizas esos componentes, lo tendrás ubicados por defecto en el directorio i14y de tu proyecto.
Aquí tienes una plantailla que puedes usar: interoperability-sample.
Efectivamente se trata de un bug que ya fué corregido. Aparecerá próximamente en la versión 2021.3 de IRIS. Si alguien más se lo encuentra y necesita resolverlo antes, contactad con soporte y os ayudarán.
Bueno, ha tardado más de 3 semanas en salir del horno pero aquí lo tienes, calentito, calentito, el Capítulo 5 - Objetos, penúltimo de este tutorial de ObjectScript. En él nos introducimos ya en la parte de Orientación a Objetos. Me ha quedado un pelín largo para mi gusto, algo más de 2 horas, así que tómatelo con tranquilidad, trocealo a tu gusto,...o ¡qué narices!, ¡dale caña y ponle el turbo al video!
Espero que lo disfrutes y te sirva de ayuda. Ah... recien metido en el horno el Capítulo 6, en el que te contaré un poquito qué pasa con SQL y como también ObjectScript lo incorpora de forma nativa... con él cerraré ya este tutorial. A ver lo que tarda en hacerse. ¡Hasta un rato!
Hola Kurro... estos links concretos te funcionan a ti? Creo que los asistentes asociados al New... en el Studio sólo generan el código fuente y lo entregan al editor del Studio... Pero el VSCode no recoge bien esa salida y la muestra tal que así:
De aquí sí que podríamos extraer el fuente generado... desde el ##Include hasta "MyManifest")}}... pero es un poco engorroso.
En el caso de los Complementos (Add-ins) que automatizan la generación de clases, sí que funcionan prácticamente igual que en el Studio...
Ya están disponibles las nuevas imágenes con la clave extendida en el InterSystems Container Registry. Puedes descargarte las imágenes nuevas ejecutando:
docker pull containers.intersystems.com/intersystems/iris-community:2021.1.0.215.3
docker pull containers.intersystems.com/intersystems/iris-community-arm64:2021.1.0.215.3
docker pull containers.intersystems.com/intersystems/irishealth-community:2021.1.0.215.3
docker pull containers.intersystems.com/intersystems/irishealth-community-arm64:2021.1.0.215.3
Parecía que no, pero finalmente llega el momento de cerrar este tutorial de ObjectScript... Publico hoy el Capítulo 6 - ¿Qué pasa con SQL?, dedicado al acceso SQL a IRIS Data Plataform y cierre de este tutorial. Lo he centrado particularmente en los 2 mecanismos básicos de tratar SQL en ObjectScript, de forma estática, embebiendo SQL en el código ObjectScript, o dinámica, a través de las clases del paquete %SQL.
Por supuesto, hay muuuucho más que contar y aprender... os invito a navegar por esta comunidad, por la sección de formación de InterSystems, por los cursos online gratuitos, por la sección del desarrollador, a visualizar los webinars que periodicamente realizamos y, si tenéis la opción, complementar vuestra formación con un curso oficial. Ah.. y no olvidéis que la documentación es vuestra amiga! Ahí encontraréis explicaciones en detalle y multitud de ejemplos que os ayudarán a avanzar.
En fin... poco más que decir. Para mí ha sido toda una experiencia.... sobre todo la post-producción 😰😉... Espero que os haya sido útil... Con haber ayudado a unos pocos, habrá valido la pena. Happy coding!!
![]()
No damos la importancia que debemos a las copias de seguridad. Creo que esto va a ahorrar más de un quebradero de cabeza!
Muy interesante para tener una visión general de estas soluciones que ofrece IRIS. Para quien no lo haya visto, @Alberto Fuentes lo muestra en vivo en este Webinar.
Como ya extiendes de %XML.Adaptor, directamente pueden utilizarse las funcionalidades de esa clase para obtener el XML, por ejemplo:
do objectTest.XMLExportToString(.xml)
write xmlque ya te generará:
<Test><Person><name>John</name><age>22</age></Person><Address><location>New York NY 10036</location></Address></Test>