Pesquisar

Artigo
· Out. 7 6min de leitura

La espera ha terminado: damos la bienvenida al soporte de GoLang para InterSystems IRIS

Introducción

La plataforma de datos InterSystems IRIS ha sido conocida durante mucho tiempo por su rendimiento, interoperabilidad y flexibilidad entre distintos lenguajes de programación. Durante años, los desarrolladores pudieron usar IRIS con Python, Java, JavaScript y .NET, pero los desarrolladores de Go (o Golang) tuvieron que esperar.

Golang Logo

Esa espera finalmente ha terminado.

El nuevo controlador go-irisnative incorpora soporte para GoLang en InterSystems IRIS, implementando la API estándar database/sql. Esto significa que los desarrolladores de Go ahora pueden utilizar herramientas de base de datos conocidas, agrupación de conexiones e interfaces de consulta para crear aplicaciones impulsadas por IRIS.


Por qué es importante el soporte para GoLang

GoLang es un lenguaje diseñado para la simplicidad, la concurrencia y el rendimiento, ideal para arquitecturas nativas en la nube y basadas en microservicios. Impulsa algunos de los sistemas más escalables del mundo, como Kubernetes, Docker y Terraform.

Integrar IRIS en el ecosistema de Go permite:

  • Servicios ligeros y de alto rendimiento utilizando IRIS como backend.
  • Concurrencia nativa para la ejecución paralela de consultas o el procesamiento en segundo plano.
  • Integración fluida con sistemas distribuidos y en contenedores.
  • Acceso a bases de datos de forma idiomática mediante la interfaz database/sql de Go.

Esta integración convierte a IRIS en la opción perfecta para aplicaciones modernas y preparadas para la nube desarrolladas en Go.


Cómo empezar

1. Instalación

go get github.com/caretdev/go-irisnative

2. Conectar a IRIS

Así es como se realiza la conexión utilizando la API estándar database/sql:

import (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/caretdev/go-irisnative"
)

func main() {
    db, err := sql.Open("iris", "iris://_SYSTEM:SYS@localhost:1972/USER")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Simple ping to test connection
    if err := db.Ping(); err != nil {
        log.Fatal("Failed to connect:", err)
    }

    fmt.Println("Connected to InterSystems IRIS!")
}

3. Creación de una tabla

Vamos a crear una tabla de demostración sencilla:

_, err = db.Exec(`CREATE TABLE IF NOT EXISTS demo (
    id INT PRIMARY KEY,
    name VARCHAR(50)
)`)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Table created.")

4. Inserción de datos

Por el momento, no se admiten inserciones de varias filas; se debe insertar una fila por cada llamada:

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 1, "Alice")
if err != nil {
    log.Fatal(err)
}

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 2, "Bob")
if err != nil {
    log.Fatal(err)
}

fmt.Println("Data inserted.")

5. Consulta de datos

La consulta es sencilla utilizando la interfaz database/sql

rows, err := db.Query(`SELECT id, name FROM demo`)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID: %d, Name: %s\n", id, name)
}

That’s all you need to perform basic SQL operations from Go.


Cómo funciona

Bajo el capó, el controlador go-irisnativeutiliza la API nativa de IRIS para una comunicación eficiente y de bajo nivel con la base de datos. El controlador implementa las interfaces estándar database/sql/driver de Go, lo que lo hace compatible con herramientas existentes de Go como:

  • sqlx
  • gorm (con un dialecto personalizado)
  • Herramientas estándar de migración en Go

Esto ofrece a los desarrolladores una API familiar con la potencia y el rendimiento del acceso nativo a IRIS.


Ejemplos de casos de uso

  • Microservicios — servicios ligeros en Go conectados directamente a IRIS.
  • APIs de datos — exposición de endpoints REST o gRPC respaldados por IRIS.
  • Herramientas de integración — conexión de los datos de IRIS con otros sistemas en flujos desarrollados en Go.
  • Aplicaciones IRIS nativas en la nube — despliegue de aplicaciones en Go respaldadas por IRIS en Kubernetes o Docker.

Pruebas con Testcontainers

Si deseas ejecutar pruebas automatizadas sin tener que gestionar una instancia activa de IRIS, puedes usar testcontainers-iris-go.
Este lanza un contenedor temporal de IRIS para realizar pruebas de integración.

Ejemplo de configuración de prueba:

import (
    "context"
    "database/sql"
    "flag"
    "log"
    "os"
    "testing"
    iriscontainer "github.com/caretdev/testcontainers-iris-go"
    "github.com/stretchr/testify/require"
    "github.com/testcontainers/testcontainers-go"
)

var connectionString string = "iris://_SYSTEM:SYS@localhost:1972/USER"
var container *iriscontainer.IRISContainer = nil
func TestMain(m *testing.M) {
    var (
        useContainer   bool
        containerImage string
    )
    flag.BoolVar(&useContainer, "container", true, "Use container image.")
    flag.StringVar(&containerImage, "container-image", "", "Container image.")
    flag.Parse()
    var err error
    ctx := context.Background()
    if useContainer || containerImage != "" {
        options := []testcontainers.ContainerCustomizer{
            iriscontainer.WithNamespace("TEST"),
            iriscontainer.WithUsername("testuser"),
            iriscontainer.WithPassword("testpassword"),
        }
        if containerImage != "" {
            container, err = iriscontainer.Run(ctx, containerImage, options...)
        } else {
            // or use default docker image
            container, err = iriscontainer.RunContainer(ctx, options...)
        }
        if err != nil {
            log.Println("Failed to start container:", err)
            os.Exit(1)
        }
        defer container.Terminate(ctx)
        connectionString = container.MustConnectionString(ctx)
        log.Println("Container started successfully", connectionString)
    }

    var exitCode int = 0
    exitCode = m.Run()

    if container != nil {
        container.Terminate(ctx)
    }
    os.Exit(exitCode)
}

func openDbWrapper[T require.TestingT](t T, dsn string) *sql.DB {
    db, err := sql.Open(`intersystems`, dsn)
    require.NoError(t, err)
    require.NoError(t, db.Ping())
    return db
}

func closeDbWrapper[T require.TestingT](t T, db *sql.DB) {
    if db == nil {
        return
    }
    require.NoError(t, db.Close())
}

func TestConnect(t *testing.T) {
    db := openDbWrapper(t, connectionString)
    defer closeDbWrapper(t, db)

    var (
        namespace string
        username  string
    )
    res := db.QueryRow(`SELECT $namespace, $username`)
    require.NoError(t, res.Scan(&namespace, &username))
    require.Equal(t, "TEST", namespace)
    require.Equal(t, "testuser", username)
}

Esto es ideal para pipelines de CI/CD o pruebas unitarias, garantizando que tu aplicación en Go funcione perfectamente con IRIS de forma aislada.


Conclusión

El soporte de GoLang para InterSystems IRIS ya está aquí, y marca un antes y un después.
Con go-irisnative, ahora puedes crear aplicaciones escalables, concurrentes y nativas en la nube que aprovechen directamente la potencia de IRIS.

Tanto si estás desarrollando microservicios, APIs o herramientas de integración, Go te ofrece simplicidad y rendimiento, mientras que IRIS te brinda fiabilidad y amplias capacidades de gestión de datos.

👉 Probadlo:

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 7 5min de leitura

The Secret World of Locket Rings: A History of Hidden Keepsakes

Locket rings are special pieces of jewelry that hold a secret inside. They look like a normal ring from outside, but inside there is a tiny compartment to keep a small keepsake. That secret space might hold a photo, hair, or a small token. In this article, we’ll explore how locket rings came to exist, how they were used over time, and how they are seen in today’s jewelry world.

What Is a Locket Ring?  

A locket ring is a ring with a built-in compartment. This hidden space allows the wearer to carry tiny mementos close to their finger. Because the keepsake is hidden, locket rings combine beauty, mystery, and personal meaning.

Some features of locket rings include:

  • A hinged top or sliding cover
  • A small cavity deep enough to hold something tiny
  • Decorative exterior so the ring still looks elegant
  • Secure closure so the secret inside is protecte

Early Roots: Hidden Jewelry and Keepsakes

Humans have long loved secret jewelry. Even before locket rings, people used jewelry to carry memories. Lockets (pendants with a hidden compartment) have been around for centuries, carrying miniature portraits or locks of hair.

The idea of hiding something in jewelry goes back to the Renaissance and earlier, when miniatures, locks of hair, or small relics were precious. Over time, those concepts evolved into rings with secret chambers.

One famous example is the Chequers Ring, worn by Queen Elizabeth I. It includes a locket compartment that holds two portraits, one of Elizabeth and one traditionally thought as Anne Boleyn.

That shows how even monarchs used hidden keepsakes in their rings, blending symbolism, memory, and status.

Victorian Era and Mourning Jewelry

In the 19th century, the Victorian era saw strong interest in sentimental and mourning jewelry. When someone died, loved ones would keep a lock of hair or a miniature portrait in jewelry as a memory. Rings became another way to carry those precious tokens.

Often called mourning rings, these were sometimes created with hidden compartments, effectively functioning like locket rings. The ring might hide something personal, so the outward appearance remained dignified and discreet.

If you’re interested in such personalized or sentimental jewelry today, brands like Wear Felicity specialize in custom-made rings, necklaces, and keepsakes that let you carry memories in a stylish way. They are known for unique projection jewelry, where you can hide a photo inside a pendant or ring, and engraved designs that capture special dates or names. Shopping through Wear Felicity Discount Codes on AttractiveBloggers can help you save money on these meaningful pieces. With a valid coupon code, you still get artisan-level craftsmanship but at a lower cost—making it easier to own jewelry that feels both historic and modern.

From projection necklaces to custom rings, Wear Felicity gives today’s buyers a chance to enjoy jewelry that carries hidden meaning, much like mourning or keepsake jewelry of the past, but in a way that feels fashionable and personal for modern life.

20th Century: Decline and Revival

As photography, cameras, and printed photos became widespread, pendant lockets dominated sentimental jewelry again. Locket rings became rarer because they were more technically challenging to make, and because necklaces were easier for displaying a photo.

But over time, as vintage and artisan jewelry regained popularity, locket rings saw revival. Collectors and jewelry makers rediscovered the charm of hidden keepsakes.

Today, artisan jewelers use modern tools to create locket rings with better precision. Micro hinges, laser-cut interiors, and fine metalwork help make the hidden spaces smaller but more secure.

Modern Locket Rings: Style, Trends & Innovation

In recent years, locket rings have seen renewed interest. Here’s how they appear in the modern world:

Personalization & Storytelling

Nowadays, people look for jewelry that tells their story. A locket ring allows you to carry something meaningful, maybe a tiny photo, a date mark, or even a micro-inscription. Because the compartment is hidden, the ring remains elegant and not overly bulky.

Mixed Materials and Craftsmanship

Modern locket rings are made from gold, silver, rose gold, mixed metals, enamel accents, and sometimes gemstones on the outside. The interior might be lined with a small frame, glass cover, or satin cushion to safely hold the token. The craftsmanship is crucial so the hidden compartment works flawlessly.

Micro Technology?

Though not yet widely common, there is potential for combining locket rings with micro-technology. For example, embedding a micro-chip or a tiny NFC (Near Field Communication) tag inside a ring could allow the wearer to carry a digital keepsake or link to a message. (While I found nothing mainstream yet about “smart locket rings,” the idea aligns with how jewelry and tech are merging.)

How People Use Them Today

People use locket rings for:

  • Secret keepsakes (hair strand, micro-photo)
  • Tiny charms or tokens
  • Hidden initials or engravings
  • Commemorating loved ones or events

Because the ring is worn hand, it keeps the memory very close.

How to Choose a Locket Ring That Works for You

If you consider getting a locket ring, here are tips to help:

  • Check the strength of the hinge or closure  you don’t want it to open unintentionally.
  • See how deep the compartment is; it must safely contain your keepsake.
  • Think about materials  precious metals will last longer and resist wear.
  • Look at craftsmanship, small misalignments can ruin the secret function.
  • Consider how his or her hand movement might affect the ring; the opening should be secure.
  • Ask whether the interior has protection (e.g. glass or frame) so the item inside is safe.

A well-made locket ring should look normal from the outside, yet guard its secret securely.

Why Locket Rings Still Captivate

What makes locket rings intriguing now?

  • Privacy with meaning: You carry something close but hidden.
  • Symbolic value: The secret token often holds deeper emotion.
  • Uniqueness: They stand out from regular rings and show personal style.
  • Connection to history: Wearing them connects you to a tradition of hidden keepsakes.
  • Gift appeal: Giving someone a locket ring is giving them trust  the secret inside is meaningful.

Also, because of the craftsmanship required, artisan makers often highlight locket rings as special, limited edition pieces, which adds to their allure.

FAQs

What kind of keepsake fits a locket ring?
Very small items: a tiny photo, a slim lock of hair, a micro-engraving, or a small charm token.

Are locket rings comfortable to wear daily?
If well designed, yes. The secret compartment should be flush so it doesn’t catch on clothes or feel bulky. Good workmanship is essential.

Do locket rings still exist in 2025?
Yes artisan jewelers and bespoke jewelry brands make locket rings for those interested in hidden keepsakes and personalized jewelry.

Can the hidden compartment be opened easily?
It varies. Some have micro hinges and snaps that require a fingernail or tool; others are more secure. Always check how strong the mechanism is before trusting a valuable keepsake inside.

Where is a notable example of a historic locket ring?
The Chequers Ring is a famed example. It belonged to Queen Elizabeth I and holds two portraits inside its hinged bezel

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 7 3min de leitura

Custom Army AGSU Name Plate Cost: What to Know Before You Buy

 

The Custom army agsu name plate cost — often referred to as the modern “pinks and greens” — represents a return to the classic World War II–era look that symbolizes professionalism, heritage, and pride. As part of this updated uniform, each soldier is required to wear a custom name plate that meets specific Army regulations for size, style, and appearance.

Whether you’re a new soldier getting fitted for the first time or replacing worn components, understanding the cost and options for your AGSU name plate can help you choose the right supplier and ensure compliance with uniform standards.


What Is the AGSU Name Plate?

The AGSU name plate is a small but essential element of the uniform. It displays the soldier’s last name in uppercase block letters and is worn on the right side of the coat above the pocket flap.

Unlike older black name plates from the Army Service Uniform (ASU), the AGSU version features a matte dark brown finish with engraved brass lettering, designed to match the uniform’s earthy tones and vintage style. The name plate adds a personal touch while maintaining the Army’s polished, professional appearance.


Typical Cost of a Custom AGSU Name Plate

The cost of a custom Army AGSU name plate typically ranges from $6 to $15, depending on the vendor, material quality, and engraving options. Here’s a quick breakdown of price ranges:

  • Basic Plastic Engraved Plate: $6–$8
    Made from lightweight plastic with a brown matte finish and gold or brass lettering. Affordable and regulation-compliant.
  • Premium Metal Plate (Brass or Aluminum): $10–$15
    More durable and refined, often preferred by soldiers who want a longer-lasting option with crisp engraving.
  • Custom Bulk Orders: $4–$6 per plate
    Units or supply offices ordering in bulk can often get discounts from uniform suppliers.

These name plates are available at on-base military clothing sales stores (MCSS), online uniform shops, and authorized engravers.


Where to Buy AGSU Name Plates

You can purchase AGSU name plates from several reliable sources:

  1. AAFES (Army & Air Force Exchange Service):
    Most on-base clothing stores offer same-day engraving for AGSU name plates, ensuring they meet Army specifications.
  2. Online Military Uniform Retailers:
    Websites like Marlow White, USAMM, and Vanguard Industries provide easy customization tools where you can enter your name and preview the design.
  3. Local Engraving Shops:
    Some off-base shops specialize in military insignia and can produce compliant AGSU plates at competitive prices.

Always verify that your name plate matches official Army standards — correct color, font, size (typically 3 inches by 1 inch), and finish.


Tips Before Ordering

  • Double-check spelling: Engraving errors can’t be corrected once printed.
  • Match regulation colors: Brown background with gold lettering only — not black or white.
  • Consider durability: Metal plates resist wear better during frequent use or field assignments.
  • Order extras: It’s smart to have a backup name plate in case one gets lost or damaged.

Final Thoughts

The Custom army agsu name plate cost
may be small, but it carries significant meaning — representing your identity, service, and commitment to Army tradition.

With prices averaging $6–$15, it’s a simple but important investment in maintaining a sharp and regulation-ready appearance. Whether you choose plastic or metal, make sure your name plate meets Army standards, looks professional, and honors the proud history of the uniform it adorns.

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 7 9min de leitura

Iris-AgenticAI: インテリジェントなマルチエージェントワークフロー向けの OpenAI Agentic SDK を使ったエンタープライズオートメーション

コミュニティの皆さん、こんにちは。

この記事では、私のアプリケーションである iris-AgenticAI をご紹介します。

エージェンティック AI の登場により、人工知能が世界とやりとりする方法に変革的な飛躍をもたらし、静的なレスポンスが動的な目標主導の問題解決にシフトしています。 OpenAI の Agentic SDK を搭載した OpenAI Agents SDK を使用すると、抽象化をほとんど行わずに軽量で使いやすいパッケージでエージェンティック AI アプリを構築できます。 これは Swarm という前回のエージェントの実験を本番対応にアップグレードしたものです。
このアプリケーションは、人間のような適応性で複雑なタスクの推論、コラボレーション、実行を行える次世代の自律 AI システムを紹介しています。

アプリケーションの機能

  • エージェントループ  🔄 ツールの実行を自律的に管理し、結果を LLM に送信して、タスクが完了するまで反復処理するビルトインのループ。
  • Python-First 🐍 ネイティブの Python 構文(デコレーター、ジェネレーターなど)を利用して、外部の DSL を使用せずにエージェントのおケースとレーションとチェーンを行います。
  • ハンドオフ 🤝 専門化されたエージェント間でタスクを委任することで、マルチエージェントワークフローをシームレスに調整します。
  • 関数ツール ⚒️ @tool で Python 関数をデコレートすることで、エージェントのツールキットに即座に統合させます。
  • ベクトル検索(RAG) 🧠 RAG 検索のためのベクトルストアのネイティブ統合。
  • トレース 🔍 リアルタイムでエージェントワークフローの可視化、デバッグ、監視を行うためのビルトインのトレース機能(LangSmith の代替サービスとして考えられます)。
  • MCP サーバー 🌐 stdio と HTTP によるモデルコンテキストプロトコル(MCP)で、クロスプロセスエージェント通信を可能にします。
  • Chainlit UI 🖥️ 最小限のコードで対話型チャットインターフェースを構築するための統合 Chainlit フレームワーク。
  • ステートフルメモリ 🧠 継続性を実現し、長時間実行するタスクに対応するために、セッション間でチャット履歴、コンテキスト、およびエージェントの状態を保持します。

Discussão (0)0
Entre ou crie uma conta para continuar
Pergunta
· Out. 6

MQTT IRIS Broker

Hi Guys,

I'm looking to setup an MQTT adapter that also acts as broker to connect directly to an MQTT clients, is there an IRIS adapter or client that can be used as Broker as well?

 

Thanks

1 Comment
Discussão (1)2
Entre ou crie uma conta para continuar