Pesquisar

公告
· 10 hr 前

ご参加ありがとうございました!:第3回 InterSystems Japan 開発者コミュニティ・ミートアップ

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

3回目の開催となったミートアップですが、12月3日(水)に無事、開催を終えることができました。ご参加いただきましたメンバーの皆様、ありがとうございました!

今年は初の試みとして、ゲストスピーカーをお招きしご講演いただきました。その後から17時頃まで、各自のパソコンでワークショップの内容をお試しいただいたり、メンバー同士で会話されたりで、あっという間に時間が過ぎたように感じます。

ミートアップのワークショップで使用した内容は、全て以下リポジトリに公開しております。

https://github.com/Intersystems-jp/meetup2025Workshop

IRIS の環境は 12 月中ご利用いただけます。

ワークショップ中モデルのダウンロードのところで Notebook がなかなか進まなかったりでお試しいただけなかった部分があるかと思います。もしよろしければ、再度お試しいただければと思います。

 


以下、当日の写真を添えながらワークショップとネットワーキングの様子をご紹介いたします。

第1部最初は、加川さんからのご講演で

「AI駆動開発の実践──自社サービスと個人開発での活用事例」

のテーマでお話いただきました。

AI を開発の中に取り入れる際、どのような考えをもって開発を進めて行けばよいのか、どのように AI を使うと良いか、プロジェクトの中で誰が書いても同じ品質のプロンプトが書けるようにどのような工夫ができるかなど、沢山のノウハウを加川さんから教えていただき、これから始めてみようと検討されているメンバーの皆さんに向けて、非常にためになるお話を伺うことができました。

加川さん、ありがとうございました!

続いて、ワークショップの時間です。

夏から 3 シリーズで開催していたウェビナーの内容を試すワークショップをご用意していました。

今年は、ブラウザがあれば体験できる Google Colaboratory を利用してベクトル検索や、ベクトルの見える化やちょっと変なデータ(アノマリー)を見つけてみるなど、ベクトルにまつわる各種実験を行ってみたり、IRIS に登録された情報を利用して RAG +生成 AI の動作を確認するワークショップや、🎣釣り人ビギナーサポート AI  エージェント風 を作るとしたらどうなるか?の例をご覧いただきました。

ワークショップでは、一斉に同じ場所から Colab にアクセスしたのが原因か、モデルのロードに時間がかかりなかなか進まない状況の方もいらっしゃいました。申し訳ありませんでした。

次回開催に向け、何か良い方法がないか模索していきたいと思います!

昨年のミートアップ開催後アンケートの中に、「もっと参加者の方とお話したかった!」という回答が多くありましたので、今年はワークショップ最初に自己紹介タイムを設け、テーブル毎に自己紹介を行っていただきました。

第1部を終了する前に、各テーブルの代表の方に感想を伺いました。

個人的に Gemini や ChatGPT、Claude を使用しているけれどまだ開発の場面で加川さんからのお話にあったような「AI を取り入れた開発」までは行っていない、でも、これから使う上での注意事項、考え方などを聞けてよかった

ワークショップは最後まで動かせなかったけど、また持ち帰ってやってみたい。 

などの感想をいただきました。ありがとうございました!

ワークショップを最後までできない環境も含まれていましたが、「持ち帰って試したい」の感想もあり、非常にうれしい気持ちになりました。ありがとうございます。

 

続きまして、第2部についてご紹介します。

第2部はネットワーキングを中心に、技術文書ライティングコンテスト表彰式、クイズ大会を行いました!
(ライティングコンテストの全作品はこちらのページでご覧いただけます👉https://jp.community.intersystems.com/contests/3

今年は、3名の方による素晴らしい作品の投稿がありました🔥!

初めて投稿いただいた方、毎回投稿くださる方🔥 コンテストにご応募いただきありがとうございました!

いつも使っているあの方法、これは便利だ!と思える方法、またよく見るエラーだけどこんな意味があるんだ!などなど、コミュニティメンバーに共有したい内容はコンテストに限らずいつでも投稿いただけますので、ぜひお気軽に投稿してみてください。

コンテスト表彰式の次はクイズ大会でした。練習問題含めて14問の出題で、今年は🎣魚🐟や AI にちなんだ問題を出題しました。ヒラメはどっち?から始まり、生成AIが作った画像と本物比較、IRIS に格納できるベクトル要素数など様々な種類の出題がありました。

今年は全て早押し問題+最後3問はポイント3倍!!順位が沢山入れ替わる中、見事1位に輝いた方に Amazon ギフト券を贈呈いたしました。🎁

さて、今年の参加記念グッズですが、ガジェットポーチにしてみました。ぜひ、通勤のお供に使っていただければと思います。

 

また、もしよろしければ、ミートアップの感想記事を投稿いただいたり、この記事の返信欄でコメントいただいたり、コミュニティに投稿いただけるとうれしいです!

ミートアップへご参加いただいた皆様、ありがとうございました。

今年参加されなかった皆様も、ぜひ来年、ミートアップでお会いしましょう!

讨论 (0)1
登录或注册以继续
文章
· 13 hr 前 阅读大约需 6 分钟

Sub-Table Security

InterSystems IRIS provides extensive configurable security options, yet many developers primarily use roles and resources to secure entire tables or routines. Today, we will delve deeper. We can also secure individual columns and rows separately, but these two mechanisms operate very differently. Let's begin with the columns.

Column Security

For testing and demonstration, we will keep our table structure concise and straightforward. We have a table called "Person" in the USER namespace that contains an ID column, a date of birth column (DOB), first name, and last name. 

Class User.Person Extends %Persistent
{
    Property FirstName As %String;
    Property LastName As %String;
    Property DOB As %Date;
    Property User As %String;
}

We will create a role called limited_access which will implement some column security, but the first thing we must remember to do is make sure to add the %DB_User resource to this role so that the user has access to the database. Once we’ve done that, we can begin to think about columns. We will go to the SQL Tables tab in the role setup and ensure that the USER namespace is selected. Then we will click the Add Columns button, which is to the right of the Add Tables button. This will open the dialog where we will control column permissions.

This interface closely resembles the screen used for adding permissions for tables. The notable exclusion is the DELETE option, which cannot be controlled at the column level. It makes sense since we cannot delete individual columns from a record in a table. However, we retain control over the SELECT, INSERT, UPDATE, and REFERENCES privileges. We can also use the Grant Admin checkboxes to permit users with this role to delegate the same privilege to other users or roles. For today's example, we will grant the role all permissions for the ID, FirstName, and LastName columns. Yet, we will assign only the SELECT privilege for the DOB column. After making these changes, we will save the role. You will then observe that the entry for this table in the role configuration displays a hyphen (-) under the privileges column. Yet, it includes an Edit Column option.

If we click the Edit Columns link on the right, we can review the exact permissions defined for each column individually.

This is where we can modify or revoke specific column permissions. If we check the Add Columns box, the initial configuration form for adding columns will reappear below, allowing us to make further additions. If you ever encounter a table listed in a role that appears to lack defined privileges, you should click the Edit Columns link to check for column-specific permissions.

Io test this configuration, we need to set up a user with this role. We will name this user testuser. It will possess our limited_access role, and we will also grant it the %Developer role to access the SQL portion of the Management Portal and execute some queries. For example, consider the following SQL query.

INSERT INTO Person(DOB,FirstName,LastName) VALUES(%ODBCIN('1900-09-03'),'David','Hockenbroch')

If we execute this query while logged in as a superuser with %All privileges, the query will be successful. However, if we log out of the Management Portal and sign back in as our test user, an error will occur.

The query has failed because the user lacks permission to insert into the DOB column. If we adjust the query to omit the restricted column, it will succeed. The following query will still work for this user:

INSERT INTO Person(FirstName,LastName) VALUES('David','Hockenbroch')

Similarly, if the user did not have permission to update or select a column, any query violating those restrictions would fail. For instance, if I removed the DOB column entirely from the column privileges, I would be unable to execute the SELECT * FROM Person command. Instead, I would be required to use SELECT ID, FirstName, LastName FROM Person. Note that if there are computed columns that a user lacks access to, the calculations will still be executed appropriately.

If we slightly modify our class definition, we can introduce a whole new issue. Suppose we decided to change our class definition to include the Required keyword in the DOB property. If we then attempt to run the query stated above, it will cause an error instead of succeeding.

You must keep this in mind when establishing column privileges: if you deny a user INSERT permission for a certain column that is not automatically assigned via compute code, an initial expression, or a similar method, the user will be unable to insert any rows at all!

Row-Level Security

Now we will explore row-level security. Our objective will be to ensure that only the user who created a row can access it.

Row-level security functions very differently from column security. We cannot configure it through the Management Portal. Instead, we must modify our class definition. First, we should add a property:

Property Creator As %String [ SqlComputeCode = {set {*} = $USERNAME}, SqlComputed, SqlComputeOnChange = %%INSERT];

This is an SQL computed property that automatically sets its value to the current username when a row is inserted. We will insert one row per user. Then we should observe the following records:

Next, we will need to override the ROWLEVELSECURITY parameter in the class definition. Setting it to 1 will automatically direct IRIS to store the reader list in a property named %READERLIST. However, in our case, since we created a property to store the username that should have access to the row, we will override this parameter with the name of that column (Creator). Remember that since row-level security can be handled by role or username, we could use a column containing a role name instead if desired.

If we attempt to select any data from this table at this point, the query will return empty. This happens because we have added row-level security to an existing table, and row-level security relies on building an index on the field being used for security. We must now rebuild the table’s indices. We will accomplish this through the Management Portal. In the SQL area, we will select the table on the left, then click Actions, and finally click Rebuild Table’s Indices.

Now that the appropriate index is present, when users select from the table, they will see only their own rows. It is essential to recognize that this restriction applies even to superusers! In most security contexts within IRIS, having the %All role grants access to virtually everything, but row-level security is a notable exception. Even if we run a DELETE * FROM Person query as a superuser, it will only eliminate the rows that the superuser is authorized to access.

We could achieve the same outcome in an alternative way. This time, let’s set the ROWLEVELSECURITY parameter to 1, but add a %SecurityPolicy method to our class.

ClassMethod %SecurityPolicy(Creator) As %String [ SqlProc ]
{
    return Creator
}

This method is defined as a class method that returns a string and uses the SqlProc keyword. It can accept any number of arguments, but they must be column names from the class itself, and the names of the arguments must precisely match the column names. In this case, since we are working with a column called "Creator", the method argument must also be named "Creator". We simply return that column's value to fulfill our goal here. This method can be as intricate as your needs demand, provided it ultimately returns a username or role name. It can also return a comma-separated list of names if necessary.

When the ROWLEVELSECURITY parameter is set to 1, the property %READERLIST is utilized to store who is authorized to access the row. If you wish to view this list in a query, you can execute something similar to the following.

SELECT %READERLIST, * FROM Person

Row-level security is enforced in addition to table security. A user cannot access, update, or delete a row unless they have permission to do so for both the table and the row. Importantly, row-level security is only applied when using SQL, not when employing object access or directly manipulating globals. Be extremely cautious if you access your data in a way that bypasses this security layer!

With the careful implementation of these two powerful tools, you can substantially elevate your data security!

讨论 (0)1
登录或注册以继续
问题
· 14 hr 前

Single- and multi-user development environments and source control

We are a group of interface analysts in a healthcare setting, running IRIS for Health 2024, having upgraded over time from an old ENSEMBLE environment.  We have been working on a wish list of development goals, but are having trouble finding the correct, best practice method/path for getting to what we envision.

Current state:  We run IRIS for Health on a Redhat 8 virtual machine.  We run Interoperability productions (IE.cls) out of 6 namespaces.  We have a dev/test box and a production box.  This is a multi-user dev environment by default:  Studio (and later VSCode) and the GUI dev tools (DFT Editor, etc.) were the default dev tools, so each analyst edits code on the dev box.  Edits are captured by embedded-git and sent to namespace-specific repositories in Azure.

Issues:  The main issues we'd like to address now are source control.  Currently, only one branch can be worked on in each namespace, which means we cannot easily have multiple developers working on different branches/projects within one namespace.

Is multi-user development the norm with IRIS?  Does it make sense for us to have source control at the local level, where each dev could make their own branches for specific projects, and only send them to the dev server then?  Would we have both local and server source control then?  How would local development work if the dev wanted to use one of the UI tools (like DFT Editor)?  I've seen demos of devs using local IRIS containers, but I guess I just don't understand how our situation would work with these tools, especially cross-platform.

Apologies if I seem lost, but I really don't know how other places with multiple namespace productions are handling multi-user development with source control.

2 条新评论
讨论 (2)3
登录或注册以继续
文章
· 16 hr 前 阅读大约需 5 分钟

Tenis On Cloud: The 2025 Footwear Trend Transforming Comfort, Style, and Performance

As the footwear industry continues to evolve, one brand consistently stands out for innovation, comfort, and design: On Cloud. What began as a performance running shoe company in Switzerland has expanded into one of the fastest-growing global footwear brands—and at the center of this growth is the massive rise in demand for tenis on cloud.

Whether you’re a dedicated runner, a frequent traveler, or someone who simply values premium comfort in daily life, tenis On Cloud have become a go-to option in 2025. The shoes are more than just stylish—they incorporate cutting-edge engineering that elevates performance while maintaining a lightweight feel. In a world where consumers expect more from their footwear, oncloud shoes deliver a unique blend of technology and everyday usability.

This post dives deep into what makes tenis on cloud one of the top footwear choices this year, why they’ve become a global sensation, and which models stand out in 2025.


What Makes Tenis On Cloud so Popular in 2025?

1. The CloudTec® Cushioning That Started a Movement

The most recognizable feature of On Cloud shoes is the CloudTec® system—an array of hollow pods on the midsole that compress and rebound with each step. Unlike traditional foam cushioning, CloudTec® offers:

  • Soft landings
  • Firm, springy takeoffs
  • Efficient energy return
  • Lightweight impact absorption

This technology is the reason many users describe their first experience with tenis on cloud as “walking on clouds.” Whether running, walking, or standing for long periods, the cushioning helps reduce fatigue, making it ideal for active and everyday lifestyles.


2. The Speedboard®: Forward Momentum You Can Feel

Inside every pair of oncloud shoes lies the Speedboard®—a flexible propulsion plate that enhances natural movement. As the foot strikes the ground, the Speedboard® stores energy and releases it as you push off, helping you move forward with a smooth, consistent glide.

This makes tenis on cloud especially beneficial for:

  • Runners who want improved stride efficiency
  • Gym users performing agility or HIIT workouts
  • Walkers who prioritize comfort with momentum
  • Professionals on their feet all day

In 2025, the Speedboard® remains one of the defining features that set On Cloud apart from traditional athletic shoe brands.


3. Lightweight Design for Every Occasion

One of the biggest reasons people love tenis On Cloud is their lightweight feel. These shoes use breathable mesh, minimalistic overlays, and high-performance foam to keep the weight extremely low without sacrificing support.

This makes them perfect for:

  • Long runs and everyday workouts
  • Air travel and exploring cities
  • Long shifts at work
  • Commuting and casual wear

The light construction reduces pressure on the feet and legs, helping users stay active longer.


4. Aesthetic Appeal Aligned With Modern Style

Beyond performance, On Cloud shoes stand out for their clean, sleek, and modern look. With neutral tones, minimalist lines, and streamlined design, tenis on cloud transition effortlessly from athletic apparel to casual wardrobes.

Their fashion-forward aesthetic has made them popular with:

  • Influencers
  • Urban walkers
  • Travelers
  • Professionals wanting comfort without compromising style

In 2025, oncloud shoes represent the perfect blend of sporty and stylish—ideal for today’s active lifestyle.


Why Tenis On Cloud Fit Every Lifestyle

For Runners

Tenis on cloud deliver exceptional impact absorption, energy return, and overall performance. Whether you're training for a marathon or running recreationally, there’s a model designed for your needs.

For Travelers

Frequent travelers love On Cloud for their comfort during long walks, airport sprints, and sightseeing. They also pack light, making them ideal for minimalistic travelers.

For Work

Nurses, teachers, warehouse workers, and retail employees frequently choose tenis On Cloud for the all-day support they provide.

For Casual Use

Even if you’re not an athlete, oncloud shoes offer unmatched comfort for everyday activities like shopping, walking the dog, or navigating busy city streets.


Top Tenis On Cloud Models to Explore in 2025

If you're considering your first (or next) pair of tenis On Cloud, here are the standout models for this year:

1. On Cloud X 4

A cross-training favorite, designed for stability and multi-directional movement. Ideal for gym workouts, agility training, and mixed fitness routines.

2. On Cloudrunner 2

Perfect for beginners and intermediate runners who want a stable, cushioned ride. Great for long walks and low-impact workouts.

3. On Cloudmonster Hyper

Packed with maximum cushioning, this model is built for runners who want the softest, most responsive feel possible.

4. On Cloud 5

A lifestyle essential and one of the most popular oncloud models globally. Known for its slip-on convenience, lightweight build, and everyday versatility.

5. On Cloudboom Echo 3

A high-performance racing shoe with carbon-infused propulsion, ideal for competitive runners seeking speed and rebound.


Health and Comfort Benefits of Tenis On Cloud

Beyond style and performance, tenis on cloud support overall foot health in several ways:

  • Reduces joint stress: CloudTec® cushioning protects knees, ankles, and hips.
  • Improves posture and stride alignment: Thanks to the Speedboard® and stable heel design.
  • Minimizes fatigue: Lightweight materials reduce strain during long periods of wear.
  • Enhances airflow: Breathable mesh helps keep feet cool and dry.
  • Provides versatility: Suitable for both athletic and casual environments.

These benefits make On Cloud shoes a top choice for people prioritizing long-term comfort and performance.


Are Tenis On Cloud Worth Buying in 2025?

Absolutely. In 2025, tenis On Cloud continue to dominate the footwear market not just because of trendy aesthetics but because of genuine value. They combine innovative engineering, durable materials, and modern style in a way few brands can match.

For people who want shoes that can do it all—run, train, travel, walk, and elevate everyday outfits—oncloud footwear offers some of the best versatility in the industry.


Final Thoughts

As the demand for hybrid footwear grows, tenis on cloud remain at the forefront of comfort and performance innovation. Their signature CloudTec® cushioning, dynamic Speedboard®, lightweight structure, and stylish minimalism make them one of the most desirable shoe options of 2025.

讨论 (0)1
登录或注册以继续
问题
· 16 hr 前

WebTerminal and the $PRINCIPAL System Variable

Access IRIS Terminal Session using WebTerminal. I noticed that the $P or $PRINCIPAL system variable is defined as //./nul

When logging into Terminal via Management Portal, $P = |TRM||$J

Because of this, we cannot get into Programmers Mode via ^%SYS.PMODE

Any ideas?

2 条新评论
讨论 (2)2
登录或注册以继续