Rechercher

記事
· 2025年9月24日 3m read

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.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年9月23日 4m read

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 位の作品には素敵な🎁賞品🎁を予定しております。

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

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

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年9月23日 4m read

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
 

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
質問
· 2025年9月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
ディスカッション (8)3
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年9月23日

Technology Bonuses for InterSystems .Net, Java, Python, and JavaScript Contest

Hi Developers!

Here are the technology bonuses for the InterSystems .Net, Java, Python, and JavaScript Contest that will give you extra points in the voting:

  • XEP API for Java, .NET - 2
  • Native SDK for Java, .NET, Python, node.js  - 2
  • PEX Interoperability for Java, .NET, Python - 3
  • Java persister - 2
  • ADONET and .NET Entity Framework -2 
  • Docker container usage - 2 
  • Online Demo - 2
  • Implement InterSystems Community Idea - 4
  • Find a bug in InterSystems IRIS External Language Development Offerings - 2
  • New First Article on Developer Community - 2
  • New Second Article on Developer Community - 1
  • First Time Contribution - 3
  • Video on YouTube - 3

See the details below.<--break-><--break->

XEP API for Java, .NET - 2

XEP is an InterSystems library that introduces high-performance persistence technology for Java or .NET object hierarchies. Use it and collect 2 more bonus points for Java or/and .NET (4 points max). Learn more on JAVA XEP.,  and .NET XEP.

Native SDK for Java, .NET, Python, node.js - 2 points

The InterSystems IRIS Native SDKs are lightweight interfaces that allow PythonJava.NET, and Node.js applications to access powerful InterSystems IRIS resources. Use it and collect 2 extra bonus points for every language(Python, Java, .Net, Node.js) implemented (8 at max). Documentation.

Pex Interoperability for Java, .NET, Python - 3 points

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. Here is a pex-demo application.

Java Persister -2 points

The InterSystems IRIS Persister for Java is designed to ingest data streams and persist them to a database at extremely high speed. Get 2 bonus points for implementing it in your solution. Documentation

ADONET and .NET Entity Framework - 2 points

InterSystems provides to access persistent classes data via ADONET. Implement it in your app to collect 2 bonus points. Documentation

Same you can get 2 bonus points for leveraging .NET Entity Framework with IRIS. Here is the Documentation.

Docker container usage - 2 points

The application gets a 'Docker container' bonus if it uses InterSystems IRIS  running in a docker container. Here is the simplest template to start from.

Online Demo of your project - 2 points
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

Implement any idea from the InterSystems Community Ideas portal which has the "Community Opportunity" status. This will give you 4 additional bonus points.

Find a bug in InterSystems IRIS External Languages Offerings - 2 points
We want the broader adoption of InterSystems Java, .NET, Python API and node.js offerings so we encourage you to report the bugs you will face during the development of your external languages applications with IRIS in order to fix it. Please submit java, python, .NET and node.js bugs and how to reproduce it. You can collect 2 bonus points for the first reproducible bug one per language (java, .NET, node.js, Python) - so you can collect 8 points max.

New First Article on Developer Community - 2 points

Write a brand new article on Developer Community that describes the features of your project and how to work with it. Collect 2 points for the article.

New Second Article on Developer Community - 1 point

You can collect one more bonus point for the second new article or the translation regarding the application. The 3rd and more will not bring more points but the attention will all be yours.

First-Time Contribution - 3 points

Collect 3 bonus points if you participate in InterSystems Open Exchange contests for the first time!

Video on YouTube - 3 points

Make new YouTube videos that demonstrate your product in action and collect 3 bonus points per each.

The list of bonuses is subject to change. Stay tuned!

Good luck in the competition!

2 Comments
ディスカッション (2)2
続けるにはログインするか新規登録を行ってください