Rechercher

Annonce
· Sept 24

Bonus tecnológicos para el Concurso de .Net, Java, Python, y JavaScript de InterSystems

¡Hola, desarrolladores!

Aquí tenéis los bonus tecnológicos para el Concurso de .Net, Java, Python, y JavaScript de InterSystems, que os darán puntos extra en la votación:

  • XEP API para Java, .NET – 2
  • SDK Nativo para Java, .NET, Python, node.js – 2
  • PEX Interoperability para Java, .NET, Python – 3
  • Java persister – 2
  • ADONET y .NET Entity Framework – 2
  • Uso de contenedores Docker – 2
  • Demo online – 2
  • Implementar una Idea de la Comunidad InterSystems – 4
  • Encontrar un bug en las Ofertas de Lenguajes .Net, Java, Python, y JavaScript con InterSystems InterSystems IRIS – 2
  • Primer artículo nuevo en la Comunidad de Desarrolladores – 2
  • Segundo artículo nuevo en la Comunidad de Desarrolladores – 1
  • Primera participación – 3
  • Vídeo en YouTube – 3

Ved los detalles a continuación.

XEP API para Java, .NET – 2

XEP es una librería de InterSystems que introduce tecnología de persistencia de alto rendimiento para jerarquías de objetos en Java o .NET. Usadla y conseguid 2 puntos extra por Java y/o .NET (máx. 4 puntos). Leed más sobre JAVA ZEPNET XEP.

SDK Nativo para Java, .NET, Python, node.js – 2 puntos

Los SDK Nativos de InterSystems IRIS son interfaces ligeras que permiten a aplicaciones en PythonJava.NET, y Node.js acceder a potentes recursos de InterSystems IRIS. Usadlos y conseguid 2 puntos extra por cada lenguaje implementado (máx. 8 puntos). Documentación.

PEX Interoperability para Java, .NET, Python – 3 puntos

El framework Production EXtension (PEX) ofrece la posibilidad de usar lenguajes Java, .NET y Python para desarrollar producciones de interoperabilidad. Usadlo y conseguid 3 puntos extra por cada lenguaje implementado (máx. 9 puntos). Documentación. Here is a pex-demo application.

The Production EXtension (PEX) framework provides a choice of external languages Java, .NET and Python that you can use to develop interoperability productions. Use it and collect 3 extra points for for every language(Python, Java, .Net) implemented (9 max). Documentation. Aquí tenéis una demo de aplicación de pex

Java Persister -2 points

El Persister de InterSystems IRIS para Java está diseñado para ingerir flujos de datos y persistirlos en una base de datos a gran velocidad. Conseguís 2 puntos extra al implementarlo en vuestra solución. Aquí está la Documentación.

ADONET y .NET Entity Framework – 2 puntos

InterSystems permite acceder a los datos de clases persistentes a través de ADONET. Implementadlo en vuestra aplicación para conseguir 2 puntos extra. Documentación.
Lo mismo podéis lograr con .NET Entity Framework en IRIS (2 puntos). Documentación.

Uso de contenedores Docker – 2 puntos

La aplicación consigue la bonificación “Docker container” si utiliza InterSystems IRIS ejecutándose en un contenedor Docker. Aquí está la plantilla más sencilla con la que empezar.

Demo online de vuestro proyecto – 2 puntos
Collect 2 more bonus points if you provision your project to the cloud as an online demo at any public hosting.  

Implement Community Opportunity Idea - 4 points

Implementad cualquier idea del portal de Ideas de la Comunidad de InterSystems que tenga el estado «Community Opportunity». Esto os dará 4 puntos adicionales de bonificación.

Encontrad un bug en las ofertas de lenguajes .Net, Java, Python, y JavaScript con InterSystems InterSystems IRIS – 2 puntos

Queremos una adopción más amplia de las ofertas de java, python, .NET y node.js de InterSystems, así que os animamos a informar de los bugs que encontréis durante el desarrollo de vuestras aplicaciones de lenguajes externos con IRIS para poder corregirlos. Por favor, enviad los bugs de Java, Python, .NET y Node.js e indicad cómo reproducirlos. Podéis conseguir 2 puntos de bonificación por el primer bug reproducible en cada lenguaje (Java, .NET, Node.js, Python), hasta un máximo de 8 puntos.

Primer artículo nuevo en la Comunidad de Desarrolladores – 2 puntos

Escribid un artículo completamente nuevo en la Comunidad de Desarrolladores que describa las características de vuestro proyecto y cómo trabajar con él. Conseguiréis 2 puntos por el artículo.

Segundo artículo nuevo en la Comunidad de Desarrolladores – 1 punto

Podéis conseguir 1 punto extra por el segundo artículo nuevo o por una traducción relacionada con la aplicación. El tercero y siguientes no darán más puntos, pero sí atraerán la atención hacia vuestro proyecto.

Primera participación – 3 puntos

Conseguid 3 puntos de bonificación si participáis por primera vez en los concursos de InterSystems Open Exchange.

Vídeo en YouTube – 3 puntos

Haced nuevos vídeos en YouTube que muestren vuestro producto en acción y conseguid 3 puntos de bonificación por cada uno.

La lista de bonificaciones puede cambiar. ¡Permaneced atentos!

¡Mucha suerte en la competición!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Sept 24 3m de lecture

Celebrando una Fuerza Creativa en la Comunidad de Desarrolladores

Toda comunidad próspera tiene miembros cuya energía, creatividad y compromiso ayudan a convertirla en algo extraordinario. En la Comunidad de Desarrolladores de InterSystems, uno de esos miembros es @Henry Pereira — desarrollador, colaborador de código abierto, ganador de concursos y un verdadero creyente en el poder de la colaboración.

👏 Vamos a echar un vistazo más de cerca al increíble recorrido de Henry y a su legado continuo en el ecosistema de InterSystems.

La historia de Henry con los productos de InterSystems comenzó hace más de 20 años, cuando, siendo un joven becario, trabajó por primera vez con InterSystems Caché (versión 4, nada menos) y escribió bastante código en MUMPS. La vida lo llevó en otras direcciones durante un tiempo, pero en 2016, el destino —y la tecnología— lo trajeron de vuelta. Al unirse a BPlus Tech el 2 de febrero de ese año, Henry redescubrió rápidamente las tecnologías de InterSystems y quedó impresionado con lo mucho que habían evolucionado. Solo tres días después, mientras buscaba proyectos de código abierto, descubrió la Comunidad de Desarrolladores y encontró inspiración en el trabajo de @Dmitry Maslennikov, cuyo código ayudó a moldear su enfoque hacia Caché ObjectScript.

La primera contribución de Henry al Ecosistema de Desarrolladores fue CosFaker, un proyecto inicialmente inspirado en una librería de JavaScript pero que pronto evolucionó hacia algo único. También fue el tema de su primer artículo en la comunidad. A partir de ahí, Henry se fue involucrando cada vez más en concursos, colaboraciones y proyectos de código abierto.

Un hito destacado fue su participación en el proyecto RestForms junto a @Eduard Lebedyuk y @Alberto Fuentes, que resultó especialmente significativo en un momento difícil de su vida personal. Otro momento memorable llegó en 2021, cuando Henry participó en solitario en el Concurso de Seguridad de InterSystems con su proyecto iris-disguise.

En los últimos años, Henry ha competido como parte del equipo Musketeers junto a @José Pereira (“el cerebro”) y @Henrique Dias (“el corazón”), mientras él mismo se apodaba con humor “el picor en la nariz”. Su proyecto iris-medicopilot obtuvo el segundo puesto en el Concurso de Vector Search, GenAI y ML, lo que le dio visibilidad profesional y despertó el interés real de clientes en la tecnología de vector search.

Henry valora profundamente la calidez, la capacidad de respuesta y la profesionalidad de la Comunidad de Desarrolladores, destacando la ausencia de hostilidad y el alto nivel de organización. Es fan del programa de gamificación Global Masters y siempre se siente impresionado por las brillantes ideas e innovaciones que surgen en los concursos de la Comunidad.

¿El consejo de Henry para los recién llegados? Involucraos. Contribuid, participad y tratad cada proyecto como una experiencia de aprendizaje y también como una carta de presentación personal.

Fuera del código, Henry pasa los fines de semana tocando la guitarra eléctrica en una banda, disfruta del tiempo con sus hijos y colabora activamente con su comunidad local, especialmente con los jóvenes. Cada año, se reta a sí mismo a aprender un nuevo lenguaje de programación, lo que demuestra su insaciable curiosidad. Su familia y su fe lo mantienen con los pies en la tierra, recordándole la importancia de descansar junto al crecimiento.

El recorrido de Henry, desde su primer código en MUMPS hasta concursos internacionales, desde la reinvención personal hasta el liderazgo comunitario, encarna el espíritu de la Comunidad de Desarrolladores de InterSystems. A través de sus contribuciones técnicas, su espíritu colaborador y su presencia cercana, se ha convertido en una fuerza creativa e inspiración para todos los que tienen el privilegio de trabajar a su lado.

🙏 Celebremos la dedicación, ingenio y calidez que aporta Henry a la Comunidad de Desarrolladores.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Sept 23 4m de lecture

2024年の応募作品紹介:第 2 回 InterSystems Japan 技術文書ライティングコンテスト

開発者の皆さん、こんにちは!

10月1日(水)から今年の「技術文書ライティングコンテスト」が始まります!💨みなさま、応募の準備は進んでいますか??👀

この記事では、昨年開催したコンテストにご応募いただいた素晴らしい作品を審査員コメントを添えてご紹介します。

(審査員コメントは昨年 11 月に開催したミートアップ内で行ったコンテスト表彰式で紹介した内容です)

 

@Akio Hashimoto さんが投稿された「Embedded Python を利用する時の注意点 

審査員コメント:

Embedded Pythonをこれから操作される人が同様の問題に遭遇したときの解決策が提示されているありがたい記事だと感じました。

昨年もコンテストに投稿いただき、今年同様に、これから体験される方向けの道標となるような素晴らしい記事を投稿いただいています。

 

@Yusuke Kojima さんが投稿された「FHIR Object Modelを使ったInteroperability開発

審査員コメント:

2024.1 から新しく導入された FHIR Object Model にいち早く取り組まれてそれをユーザ視点からみたメリット、デメリットを含め、実際のソースを GitHub で公開しながらコミュニティメンバーに紹介されている素晴らしい記事です。新機能への探求心、精度の高い技術力、いずれも兼ね備えたコンテストのお手本のような内容でした。

IRIS の機能を使用した具体的なコードの開発という点を評価しました。コミュニティに参加している人々にもっと色々なコードを投稿いただき、それを共有してもらうことに一番の意義がある、と感じています。

 

@Kosaku Ikeda さんが投稿された「UnitTest(ユニットテスト)の自動化について考察

審査員コメント:

インターオペラビリティで CD オートメーションを作成、その発想力と技術力に脱帽しました。実際の開発で使用開始されましたら是非また記事を書いて下さい。

CI/CD を IRIS に含まれる機能だけで実装することができることを示していただいたのは興味深いです。

 

@Kawasaki Kazuhito さんが投稿された「SourceControlを用いた自動ソースチェックツールについて

審査員コメント:

目視確認になりがちなソースチェック、自動化することでレビュー時間の短縮だけでなくチェック漏れも無くなり開発全体の効率も上がることと思います。

プロジェクトに参加したての場合、方針に慣れるまでは自分流の書き方が出てしまいがちかと思いますが、その部分をシステム的にチェックすることで、メンバー全員にとって統制のとれた読みやすいコードを維持できる素晴らしい取り組みだと感じました。

 

@So Ochi さんが投稿された「IRIS開発における生成AIの活用について

審査員コメント:

「なんとなく知っている」だけで終わることも多いコード生成での AI 活用を、実際に IRIS を使って動かし、さらに精度向上まで記事内で紹介されており、コミュニティメンバーへの現実的な情報共有として、非常に素晴らしいと感じました。実業務への展開だけでなく、単純に技術的な興味としても、とても感銘を受けた記事でした。

コード生成の生産性向上の取り組みとして興味深いと思いました。多くの人の関心が高い部分だと思う点を評価しました。

 

@Saori Murata さんが投稿された「IRIS環境設定の自動化について~インストールマニフェストの利用~

審査員コメント:

環境設定の自動化に興味を持たれるコミュニティメンバーは多いと思いますが、IRIS の自動展開の具体的なサンプルをふんだんに掲載された記事で、IRIS をお使いの方であれば誰もが興味をもって読める内容に仕上がっていると思います。「いちど試してみよう」と自然に感じられる良記事でした。

文章から面倒で間違いの起こりえる管理ポータルでの作業から解放された喜びを感じられました。

 

昨年開催のコンテストの順位や贈られた賞品について詳しくは👉 ★受賞者発表!★ 第2回 InterSystems Japan 技術文書ライティングコンテスト をご参照ください。

第 3 回開催も投稿いただいた方全員に参加賞、そして、1 位~ 3 位の作品には素敵な🎁賞品🎁を予定しております。

皆様が日頃お使いの良い方法、便利な使い方、試して面白かった機能や使用時の注意点などありましたら、ぜひコミュニティメンバーに共有いただければと思います。

🔥ご応募お待ちしております!🔥

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Sept 23 4m de lecture

La puissance graphique d'IRIS

La situation de départ

Une "Class Query" dans l'espace de noms %SYS fournissant des valeurs système réelles.

L' objectif à atteindre

Présentation des données dans le navigateur, accompagnée de
quelques visualisations graphiques, par exemple un graphique à barres.
L’ objectif est d’obtenir les valeurs réelles en un seul clic ou en actualisant.
La solution doit être indépendante de Windows, Linux, OSX, AIX, ...

Il existe suffisamment de collections de bibliothèques graphiques
dans différents langages, comme JavaScript, Python, ... 
Mais ils ont tous besoin d'un code à ajouter en dehors d'IRIS. 
Cela peut entraîner une dépendance au système d'exploitation du serveur.

À ce moment-là, je me suis retourné vers IRIS. Je me suis rappelé que DeepSee
possède toutes les options requises et s'adapte toujours à l'environnement.
Et comme il s'agit d'une approche interne d'IRIS, je pourrais tout faire en utilisant
InterSystems ObjectScript et appliquer toutes les astuces que j'ai utilisées et
développées moi-même dans le passé.

Maintenant le développement étape par étape

Les valeurs système ne peuvent être collectées que dans l'espace de noms %SYS
Le transport de valeurs vers un autre espace de noms est réalisé par une table temporaire
Class Parameter DEFAULTGLOBAL = "^mtemp.ZX";  est l'approche la plus simple.
Il est situé dans la database IRISTEMP et évite la journalisation. C'est vite.
Après un effacement total, le SystemClassQuery insère ses résultats et
ajoute la date et l'heure. La collection de valeurs est complète.

Dans mon espace de noms opérationnel, j'ai la même définition de classe.
Class Parameter DEFAULTGLOBAL = "^mtemp.ZX";  pointe vers le même stockage.
Et  Class Parameter MANAGEDEXTENT As INTEGER = 0; permet cela.
À ce stade, nous pouvons déjà voir le résultat numérique avec n'importe quelle
vue de table dans SystemManagementPortal. Il n'y a simplement aucun graphique.

Prochaine étape :

DeepSee crée des cubes basés sur des classes persistantes (des tables)
Utiliser DeepSee Architect n'est qu'une question de minutes pour construire un cube adapté
Et il dispose également de l'outil pour remplir le cube avec du contenu.

Prochaine étape :

DeepSeeAnalyzer nous permet de composer une belle vue de tableau et propose
une collection de présentations graphiques. Formidable !
Mais les valeurs de 2000 et d'autres de 33 ne semblent pas si bien dans un
graphique commun. Je n'ai pas trouvé d'option pour un axe logarithmique.
Alors, j'ai ajouté des propriétés calculées à ma table pour renvoyer $ZLOG(val).

Et un deuxième cube est alimenté avec des valeurs logarithmiques.
Le graphique est désormais plus pratique. Le tableau est moins impressionnant.

Prochaine étape :

Dans DeepSeeUserPortal, vous pouvez composer un Dashboard qui est une
page Web indépendante. Ici, vous organisez les vues de tableau et les graphiques
comme vous le souhaitez. 
Et voici ma seule exception à l'utilisation exclusive d'InterSystems ObjectScript:
Un Portlet est un petit morceau de code HTML que j'ai utilisé pour afficher
la date et l'heure des valeurs collectées.

Dernière étape furieuse :

Comment cela marche-t-il?
Notre joli Dashboard est démarré par une page CSP. La page elle-même est vide.
Mais chaque page CSP possède une
ClassMethod OnPreHTTP(). Ça commence

  • Premiere étape - Collecter les valeurs de %SYS
  • Prochaine étape - Reconstruiser les deux cubes
  • Redirection vers l'URL de notre joli Dashboard.

Alors on danse !

Quelques morceaux de code :

Class ZX.timestamp Extends %DeepSee.Component.Portlet.abstractPortlet
{
Method %DrawHTML()
{
	&html<<div style="font-size: 25px;" height=50 class="portletDiv">#(^mtemp.ZXD)#</div>>
}
}
Class ZX.dbdash Extends %CSP.Page [ Not ProcedureBlock ]
{
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
    do ##class(%ZX.dbfree).Load()
    set sc=##class(%DeepSee.Utils).%BuildCube("ZX.DBdata",,0)
    set sc=##class(%DeepSee.Utils).%BuildCube("ZX.DBlog",,0)
    Set %response.ServerSideRedirect="/csp/user/_DeepSee.UserPortal.DashboardViewer.zen?DASHBOARD=ZXfree.dashboard"
    quit $$$OK
}
ClassMethod OnPage() As %Status
{
    quit $$$OK
}
}
Class ZX.dbfree Extends %Persistent [ Final, SqlRowIdPrivate ]
{
Parameter MANAGEDEXTENT As INTEGER [ Constraint = "0,1", Flags = ENUM ] = 0;
Parameter DEFAULTGLOBAL = "^mtemp.ZX";
Property DatabaseName As %String;
Property mbSize As %Integer;
Property logSize As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({mbSize}<1:0,1:$ZLOG({mbSize}))}, SqlComputed ];
Property mbAvail As %Decimal(SCALE = 1);
Property logAvail As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({mbAvail}<1:0,1:$ZLOG({mbAvail}))}, SqlComputed ];
Property FreePrz As %Decimal(SCALE = 2);
Property logFreePrz As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({FreePrz}<1:0,1:$ZLOG({FreePrz}))}, SqlComputed ];
Property Timestamp As %String [ Calculated, SqlComputeCode = {set {*}=^mtemp.ZXD}, SqlComputed ];
Index idx On DatabaseName [ IdKey ];

Il-y-a une nouvelle version 1.0.0

En raison des commentaires très positifs, j'ai ajouté une nouvelle fonctionnalité
Il est désormais possible de prendre également un instantané à partir d'un système distant.
Il est implémenté à l'aide de Native-API-For-ObjectScript
Il vous suffit d'ajouter un paramètre URL Comme ça:

?SERVER=IP-Address[:SuperServerPort[:Username[:Password]]]

defaults: port=1972 user=_SYSTEM pw=SYS

Exemple de conteneur Docker
http://localhost:42773/csp/user/ZX.dbdash.cls?SERVER=192.168.0.11:11972:SuperUser:SYS​​​​​

Il-y- a aussi :

GitHub     Open Exchange Package
 

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Question
· Sept 23

Is there any kind of garbage collector?

Some languages ​​have the concept of a garbage collector for automatic memory management. I'd like to know if something like this exists in InterSystems Caché in the context of routines, %CSP.REST, or %CSP.Page.

The question arises from the %Close() method of the %RegisteredObject class. This indicates that I need to manually clear the object from memory if it's no longer in use, or in the web context, if the request has completed. Is this correct? Or am I completely wrong?

Thank you!

8 Comments
Discussion (8)3
Connectez-vous ou inscrivez-vous pour continuer