Rechercher

Announcement
· Nov 5

【11月抽奖活动来啦】分享您对优化开发者初始体验的创意想法!

大家好!

我们很高兴地宣布一个全新的抽奖活动。 这次的主题是:

💡开发者初体验💡

我们希望听到您对于如何让使用InterSystems技术的第一步变得更加顺畅、清晰且富有启发性的见解。无论是文档编写、入门、系统设置还是教程指导,您的想法都能带来实实在在的改变!

要参加此次抽奖活动,请遵循以下简单步骤:

  • 成为Ideas Portal 的会员,只需使用您的 SSO 登录。
  • 创建一个新创意
  • 选择 "开发者初体验(Initial Developer Experience"类别。
  • 尽可能详细地描述您的建议,强调该建议将如何改善新用户的开发人员体验
  • 在下面的评论中分享您的想法的链接和标题,以便其他人也能看到。

就这样!11 月底,我们将使用随机器选出一名幸运参与者,我们将送上一份特别奖品 🎁 。

我们期待您的创意和实用想法!祝您好运 ☘️


注意事项:

  • 我们不接受重复的创意。请确保您提交的创意独一无二。
  • 欢迎 InterSystems 员工参与。
  • 我们保留对创意进行审核的权利,审核决定为最终决定。
  • 以下是如何提交创意的简短指南
  • 提示:您发布的创意越多,获得奖品的机会就越大 🤗
Discussion (0)1
Log in or sign up to continue
Article
· Nov 5 3m read

Celebrando una voz guía en la Comunidad de Desarrolladores

Toda comunidad próspera depende de miembros cuya dedicación silenciosa y profunda experiencia la hacen crecer y fortalecerse año tras año. En la Comunidad de Desarrolladores de InterSystems, uno de esos pilares es @Megumi Kakechi, una ingeniera y especialista en soporte con una larga trayectoria, cuyos 17 años en InterSystems y 9 años en la Comunidad de Desarrolladores reflejan una verdadera pasión por ayudar a otros a aprender, resolver problemas e innovar.

👏 Echemos un vistazo más de cerca al increíble recorrido de Megumi y a su impacto en el ecosistema de InterSystems.

Cuando Megumi se unió a InterSystems Japón en 2007, comenzó una carrera duradera profundamente ligada a la tecnología de InterSystems. A lo largo de los años, ha sido testigo de la evolución de los productos, desde Caché hasta InterSystems IRIS, y de la incorporación de nuevas y emocionantes capacidades como Embedded Python y Vector Search.

Como parte del equipo de soporte WRC, desempeña un papel fundamental respondiendo a una amplia variedad de consultas técnicas, desde SQL e interoperabilidad hasta desarrollo de aplicaciones y sistemas. Esta diversidad hace que cada día sea nuevo y estimulante. “Nuestro trabajo de soporte requiere un conocimiento y una experiencia amplios en todas las áreas”, comenta. “Es exigente, pero realmente disfruto trabajar con nuestros clientes tanto en las tecnologías más recientes como en los sistemas heredados.”

Entre sus momentos más memorables se encuentran aquellas investigaciones largas y complejas que terminan con éxito. “Es un trabajo desafiante, pero cada caso aporta nuevos conocimientos, descubrimientos y crecimiento.” Colaborar con ingenieros internacionales también ha ampliado su perspectiva y fortalecido su profundidad técnica.

La conexión de Megumi con la Comunidad de Desarrolladores comenzó en 2016, cuando ella y @Mihoko Iijima empezaron a compartir ejemplos de código útiles con una audiencia global. También se ha convertido en una defensora de la expansión de las iniciativas de intercambio de conocimiento en Japón, colaborando en el sitio de preguntas frecuentes de InterSystems Japón junto con @Hiroshi Sato, @Mihoko Iijima y @Tomoko Furuzono desde 2007. Además, ayuda a llevar esa gran cantidad de contenido a la comunidad global. “Me hace feliz saber que los clientes utilizan los artículos de la Comunidad para encontrar sus propias soluciones”, dice. “Es entonces cuando siento que todo el esfuerzo ha valido la pena.”

Cuando se le pide un consejo para los recién llegados, las palabras de Megumi reflejan el espíritu acogedor de la Comunidad de Desarrolladores:

Lo que te preguntas puede ser también lo que otros se preguntan. Aunque parezca una pregunta trivial, puede ser útil para muchas personas en el futuro. No dudes en hacer cualquier pregunta que tengas; nuestros miembros, amables y dispuestos a ayudar, te guiarán hacia una solución.

Fuera del trabajo, las pasiones de Megumi revelan su personalidad vibrante y entregada. Es una gran aficionada al deporte, especialmente al fútbol, al sumo y al baseball. Fiel seguidora del equipo de fútbol de su ciudad natal, el Montedio Yamagata, anima desde las gradas siempre que juegan cerca. Además, en cuanto al sumo, rara vez se pierde una temporada en el Kokugikan Sumo Arena de Tokio. También encuentra equilibrio y renovación a través del ejercicio regular. Este hábito saludable le ha ayudado a sentirse más fuerte, mantenerse activa e incluso evitar resfriarse con frecuencia. Pero lo más importante es que el ejercicio le aporta una mente clara y un ritmo constante en su vida diaria, una forma refrescante de cuidar tanto el cuerpo como el espíritu.

Gracias a su experiencia técnica, su generosidad al compartir conocimiento y su genuina atención tanto hacia los clientes como hacia sus compañeros, Megumi representa el espíritu colaborativo que define a la Comunidad de Desarrolladores de InterSystems. Su compromiso nos recuerda que detrás de cada ecosistema sólido hay personas que, en silencio, marcan una diferencia duradera.

🙏 ¡Celebremos a @Megumi Kakechi por su dedicación, talento y valiosas contribuciones a la Comunidad de Desarrolladores!

Discussion (0)1
Log in or sign up to continue
Article
· Nov 4 3m read

Celebrating a Guiding Voice in the Developer Community

Every thriving community relies on members whose quiet dedication and deep expertise keep it growing stronger year after year. In the InterSystems Developer Community, one such pillar is @Megumi Kakechi, a long-time engineer and support specialist whose 17 years with InterSystems and 9 years on the Developer Community reflect a true passion for helping others learn, solve problems, and innovate.

👏 Let’s take a closer look at Megumi's remarkable journey and her impact on the InterSystems ecosystem.

When Megumi joined InterSystems Japan in 2007, it marked the beginning of an enduring career deeply connected to InterSystems technology. Over the years, she has witnessed the evolution of products from Caché to InterSystems IRIS, and the introduction of exciting new capabilities like Embedded Python and Vector Search.

As part of WRC Support, she plays a crucial role in responding to a wide range of technical inquiries, from SQL and interoperability to application development and systems. This variety keeps each day fresh and challenging. “Our support requires broad knowledge and experience across all areas,” she shares. “It’s demanding, but I truly enjoy working with our customers on both the latest technologies and legacy systems alike.”

Among her most memorable moments are those long, complex investigations that end in success. “It’s challenging work, but every case brings new knowledge, discoveries, and growth.” Collaborating with international engineers has also expanded her perspective and strengthened his technical depth.

Megumi's connection to the Developer Community began in 2016 when she and @Mihoko Iijima started sharing useful sample code with a global audience. She has also become an advocate for expanding knowledge-sharing initiatives in Japan, contributing to the InterSystems Japan FAQ site with @Hiroshi Sato, @Mihoko Iijima, and @Tomoko Furuzono since 2007. She also helps bring that wealth of content to the broader global community. “It makes me happy to know that customers use DC articles to find their own solutions,” she says. “That’s when I feel all the effort was worthwhile.”

When asked for advice to newcomers, Megumi’s words reflect the welcoming spirit of the Developer Community:

What you wonder about may be what others wonder about. Even if it is a trivial question, it can be useful to many people in the future. Don't hesitate to ask any questions you may have, and our friendly and helpful members will guide you to a solution!

Outside of work, Megumi’s passions reveal her vibrant and dedicated personality. She’s an avid sports fan, especially of football, sumo, and baseball. A loyal supporter of her hometown football team, Montedio Yamagata, she cheers from the stands whenever they play nearby. In addition, regarding Sumo, she rarely misses a season at Tokyo’s Kokugikan Sumo Arena. Moreover, she finds balance and renewal through regular exercise. This healthy habit has helped her feel stronger, stay active, and even avoid catching colds as often. More importantly, exercise provides her with a clear mind and steady rhythm in her daily life - a refreshing way to care for both body and spirit.

Through her technical expertise, generosity in sharing knowledge, and genuine care for both customers and colleagues, Megumi exemplifies the collaborative spirit that defines the InterSystems Developer Community. Her commitment reminds us that behind every strong ecosystem are individuals who quietly make a lasting difference.

🙏 Join us in celebrating @Megumi Kakechi for her dedication, skill, and enduring contributions to the Developer Community!

7 new Comments
Discussion (7)3
Log in or sign up to continue
Article
· Nov 4 11m read

IKO Plus: Database Management, Migration, or Day 1 Seeding your Mirrored IrisCluster

Mirror Your Database Across the Galaxy with Seeding

Hello cpf fans!  This distraction I used the "seed" capability in IRIS to provision an entire IrisCluster mirror, 4 maps wide with compute starting from an IRIS.DAT in a galaxy far far away.  This is pretty powerful if you have had a great deal of success with a solution running on a monolithic implementation and want it to scale to the outer rim with Kubernetes and the InterSystems Kubernetes Operator.  Even though my midichlorian count is admittely low, I have seen some hardcore CACHE hackers shovel around DATS, compact and shrink and update their ZROUTINES, so this same approach could also be helpful shrinking and securing your containerized workload too.  If you squint and feel all living things around you,  you can see a glimpse of in place (logical) mirroring in the future as a function of the operator and a migration path to a fully operational mirrored Death Star as the workload matures.


Mission

Ill show you how I built an IrisCluster that pulls an IRIS.DAT file from an arbitrary location via an initContainer and uses it to "seed" a mirrored database throughout its topology. 

I used a repo that I visit at least annually @Guillaume Rongier 's repo InstallSamples which features a committed IRIS.DAT, there is also another one that appropriately puts ENSDEMO back on your systems too, but I kept it simple adhering to my prescription of Focusyn.

https://media.githubusercontent.com/media/grongierisc/InstallSamples/ref...

🌱 This will be the seed for the IrisCluster, and I expect it to be production grade mirrored and like deployable on a Friday if you know what I mean.

Kubernetes Cluster (Kind)

So I provision a quick kind cluster, give it 5 worker nodes, install Cilium as the default CNI and install the InterSystems Kubernetes Operator.  Waited for it to complete, then when it did, I labelled the nodes, one per Star Wars planet, including one from the Outer Rim.

 
ikoseedcluster.sh

I now have a happy Kubernetes cluster, nodes are ready and labelled as planets=(tatooine coruscant hoth naboo endor)... warp speed.

And an InterSystems Kubernetes Operator  parked in orbit around the forest moon of Endor.



Then I had R2 declare the IrisCluster topology...

IrisCluster

Here is is in its entirety, but we will break it down, starting with the init container.

 
iriscluster.yaml

init-container


Our init-container has one job, and is going to retrieve our seed database from github, and appropriate it with a mount and hand it off to our IRIS pods so it can be referenced from a POSIX path.

...
          initContainers:
            - name: init-grongierisc-samples
              image: debian:bookworm-slim
              command:
                - sh
                - -c
                - |
                  echo "Installing getting Samples from @grongierisc's repository https://github.com/grongierisc/InstallSamples/tree/master ..."
                  #set -euo pipefail
                  apt-get update
                  DEBIAN_FRONTEND=noninteractive apt-get install -y curl
                  cd /airgapdir
                  curl -L https://media.githubusercontent.com/media/grongierisc/InstallSamples/refs/heads/master/samples/IRIS.DAT --output IRIS.DAT
                  #curl -L http://192.168.1.231:8080/IRIS.DAT --output IRIS.DAT
                  chmod -R 777 /airgapdir
                  chown -R 51773:51773 /airgapdir
              volumeMounts:
                - name: airgapdir
                  mountPath: /airgapdir
...

The database will show up at /airgapdir/IRIS.DAT in the IRIS pods.

Data

💫The seeding comes in at this block in the specification, this is telling the operator to weild the force

      irisDatabases:
        - name: SAMPLES
          directory: /irissys/data/IRIS/mgr/SAMPLES
          mirrored: true
          ecp: true
          seed: /airgapdir/
          logicalOnly: false
      irisNamespaces:
        - name: ENSDEMO
          routines: SAMPLES
          globals: SAMPLES
          interop: true

I enabled mirroring, turned ecp to true as we will be including a compute node, and pointed it at our seed directory of the database.  Under the hood, IKO is generating a cpf for merge in the Actions directive, which is really accountable for the heavy seeding capability.

[Actions]
ModifyService:Name=%service_ecp,Enabled=0
CreateDatabase:Name=iriscluster,Directory=/irissys/data/IRIS/mgr/iriscluster
CreateNamespace:Name=IRISCLUSTER,Globals=iriscluster,Routines=iriscluster
CreateDatabase:Name=SAMPLES,Directory=/irissys/data/IRIS/mgr,Seed=/airgapdir
CreateNamespace:Name=ENSDEMO,Globals=SAMPLES,Routines=SAMPLES,Interop=1

Compute

I added a single replica of an ecp node to the equation, a clone if you will.

    compute:
      image: containers.intersystems.com/intersystems/irishealth:2025.1
      ephemeral: true
      replicas: 1
      preferredZones:
        - endor

mirrorMap

The mirrormap includes the following roles:

mirrorMap: primary,backup,drasync,rwrasync
mirrored: true

Zones

To stay in step with the Star Wars theme Ill lock our mirror topolology to the labelled nodes.

      preferredZones:
        - tatooine
        - coruscant
        - hoth
        - naboo

Note that we already set a zone for the compute node on Endor.

Apply

kubectl apply -f iriscluster.yaml --kubeconfig ikoseed.kubeconfig
iriscluster.intersystems.com/ikoplus-seed-sweenx12 created
secret/license-key-secret unchanged
secret/webgateway-secret unchanged
secret/containers-pull-secret unchanged
secret/cert-secret configured
configmap/seed-before-script unchanged
secret/webgateway-secret unchanged
configmap/seed-after-script unchanged

I waited a few minutes and it the IrisCluster came to life...

The IrisCluster role view...



And a view from Hubble...



I pulled up Mirroring Monitor, to see if our seeded database "SAMPLES" in Namespace "ENSDEMO" made it to the mirror party

🎉 It DID!

Then I inspected the result of the clone operation on the pod itself to make sure the DAT is in all the right places (podspec, filesystem, DATADIR).



🎉 They ARE!

And just to check the topology, lets see if the single replica ECP client is connected...

🎉 Totally IS!

Attestation

I am a little weirded out by these force powers and hand waving, back in the day I seemed to have to square dance mounting/shuffling around the DAT with PVC swings, SFTP, ssh, whatever, and even wrote sscp with @Eduard Lebedyuk to do the task over the superserver.

So I write a global out in the on the Primary mirror on the IrisCluster...

Then loop over the topology to see if it it got mirrored appropriately across the galaxy.

 
seedmirrorcheck.sh

Its a little sloppy, Wado did not give me the day off today, but the results are good...

The force seems to be with us on:

✅ primary (persisted)

✅ backup (persisted)

✅ drasync (persisted)

✅ rwrasync (persisted)

✅ compute (accessible)

🎉

Set ^iFind="Your Lack of Faith Disturbing"
Discussion (0)1
Log in or sign up to continue
Article
· Nov 4 2m read

EnsLib.SQL.Snapshot no se limpia durante la depuración de mensajes cuando se utiliza en el mensaje de respuesta

Hola a todos,

Primero quiero reconocer a @Theo Stolker y @Rupert Young, porque me ayudaron con la solución.

Cuando usáis EnsLib.SQL.Snapshot como una propiedad en el mensaje de respuesta para devolver datos de Snapshot (por ejemplo, desde una Business Operation a un Business Process), los datos del Snapshot no se limpian con la tarea/servicio de depuración de mensajes.

Class ResponseMessage Extends Ens.Response

{

    Property SnapshotProp As EnsLib.SQL.Snapshot;

}

Los datos quedarán atascados en el global: ^Ens.AppData. Podéis encontrarlos con esta consulta en System>Globals: ^Ens.AppData("EnsLib.SQL.Snapshot",

La referencia se registra en la clase: EnsLib.SQL.Snapshot. Podéis consultarla con SQL: SELECT * FROM EnsLib_SQL.Snapshot ORDER BY ID asc

Estos datos no se eliminarán durante la tarea de depuración. Por lo tanto, los datos irán creciendo con el tiempo. Cuando tengáis este problema, podéis limpiar todos los datos manualmente con el siguiente método:

  • Limpiar el Global: ^Ens.AppData:
    • Detened la producción
    • Ejecutad en el terminal (aseguraos de estar en el NameSpace correcto): do ##class(Ens.Adapter).ClearStaticAppData("EnsLib.SQL.Snapshot"
    • Iniciad de nuevo la producción
  • Limpiar EnsLib_SQL.Snapshot:
    • Eliminad los datos con SQL: TRUNCATE TABLE EnsLib_SQL.Snapshot

Pero esto no es lo ideal, especialmente en el entorno de producción (PRD).

Solución:

Este problema solo ocurre cuando se devuelven datos desde una BO a una BP, o quizá desde una BP a una BS, ya que la idea es la misma.

Una solución es no usar EnsLib_SQL.Snapshot como propiedad en el mensaje de retorno, sino mapear los datos a otro tipo de objeto (por ejemplo: JSON como cadena, u otros tipos de clase).

Otra solución es hacer que la tarea de depuración elimine los datos del Snapshot mediante el método %OnDelete:

https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GOBJ_callbacks#GOBJ_cb_ondelete

Así:

Class ResponseMessage Extends Ens.Response
{

    Property SnapshotProp As EnsLib.SQL.Snapshot;

   ClassMethod %OnDelete(oid As %ObjectIdentity) As %Status [ Private, ServerOnly = 1 ]
   {
      set id = $$$oidPrimary(oid)
      set obj = ..%OpenId(id)
    
      return ##class(EnsLib.SQL.Snapshot).%DeleteId(obj.SnapshotProp.%Id())
   }

}

¡Espero que os ayude tanto como me ha ayudado a mí!

PD: Publicación relacionada: https://community.intersystems.com/post/setting-enslibsqlsnapshot-vs-enslibsqlsnapshotclean

Discussion (0)1
Log in or sign up to continue