IRIS で REST サーバを作成する際に準備する REST ディスパッチクラスを手動で作成する方法を解説します。

関連ビデオで、OpenAPI 2.0 で定義したアプリケーションの仕様を利用する手順を使った API ファーストで作成するディスパッチクラスの解説ビデオもあります。

https://www.youtube.com/embed/q3XVT98_05I
[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

このビデオには、以下の関連ビデオがあります。

0 1
0 540

これは InterSystems FAQ サイトの記事です。

管理ポータル接続時に指定しているWeb サーバポートが正しい番号を指定しているかご確認ください。

Windows にクライアントツールのインストールを行っている場合は、ランチャーに登録している接続サーバの設定に問題がある場合が考えられます。

ランチャー > 優先接続サーバ > 追加/編集 で、接続先の Webサーバポートが正しく設定されているかご確認ください。

0 0
0 539

これはInterSystems FAQ サイトの記事です。

文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。

 Write $$GetIONames^%SYS.NLS()

現在のロケールにおいて各デバイス(ファイル、ターミナル等)のデフォルトの変換テーブル名を取得するには、%SYS.NLS.Table クラスを使用します。

確認方法は以下の通りです。

(1) システムデフォルト設定を取得するため、%SYS.NLS.Table のインスタンスを生成します。(引数に、"System" を指定します。)

0 0
0 539

IRISリリース2022.1のご紹介

本稿は、「InterSystems IRIS、IRIS for Health、HealthShare Health Connect 2022.1がリリースされました!」でご案内している内容を、補足解説する内容となります。

紹介ビデオ

米国本社プロダクトマネージャーによる本リリースのハイライトのご紹介ビデオ(英語)です。
https://www.intersystems.com/resources/whats-new-in-intersystems-iris-20...

リリース内容

年一度のEMリリースです。
- メンテナンスアップデート提供:リリース日から2年間
- セキュリティアップデート提供:リリース日から4年間

2 0
0 537

キーワード: ディープラーニング、Grad-CAM、X線、COVID-19、HealthShare、IRIS

目的

イースターウィークエンド中に、Covid-19に感染した胸部X線画像分類とCT検出デモを実行するを触ってみました。 デモの結果は上出来で、このトピックに関するその頃の学術研究出版物に一致しているようでした。 でも、本当に「上出来」と言えるのでしょうか。

最近、「機械学習における説明可能性」に関するオンラインランチウェビナーを聴くことがあったのですが、たまたまその講演の最後でDonがこの分類結果について話していました。

0 0
0 536

前回のつづきとして、いよいよIRISのインターオペラビリティ機能を使ってMQTTブローカーからメッセージを受信し、データベースに格納する方法について解説したいと思います。IRISのインターオペラビリティ機能につきましてはこちらをご参照ください。

ネームスペース作成

インストール時に作成されているUSERネームスペースはInteroperabilityに必要なライブラリを参照するためのマッピングができていません。
そのため、新たにネームスペースを作成する必要があります。
作成方法は、以下の通りです。

0 0
0 535

これは InterSystems FAQ サイトの記事です。

InterSystems Data Platformは、データベースキャッシュやルーチンキャッシュなどの共有メモリを、起動時に割り当てます。

バージョン2007.1以降をWindows上で動作させる際、Windows特有の共有メモリに関する問題が生じることが判明しています。

詳細については、以下の技術資料をご参照ください。

Windows上での共有メモリの割り当てについて

また、以下の記事もあわせてご覧ください。

0 0
0 534

これは InterSystems FAQ サイトの記事です。

※ IRIS Data Platformのサーバーライセンス(プロセッサーコア単位の課金)では以下の内容は適用されませんので、ご注意お願いします。

2012.1以降のバージョンより、ライセンス管理が厳格化されたために、管理ポータルでもライセンスを消費するようになりました。


デフォルトでは、管理ポータルは独立したID(CSPセッション)単位でライセンスを消費するために同一ユーザが複数ライセンスを消費するようになります。

スタジオ、ターミナル、管理ポータル全ての消費ライセンスをに同一ユーザにまとめる方法は以下になります。

(1) スタジオ、ターミナル、管理ポータルに共通ユーザでログイン

管理ポータル: [システム管理] > [セキュリティ] > [サービス]

以下3つを「パスワード」認証のみに変更

1 0
1 533

Postgres から IRIS にデータとデータスキーマを転送または移行する必要がある場合があります。 これを現時点で実行するにはいくつかのオプションがありますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。この記事では、DBeaver を使った移行の実行方法を説明します。

0 0
0 533

本記事は、あくまで執筆者の見解であり、インターシステムズの公式なドキュメントではありません。

IRISのoAuth2機能関連の情報発信は既に多数ありますが、本稿では
- 手順(ほぼ)ゼロでひとまず動作させてみる
- 設定の見通しを良くするために、役割ごとにサーバを分ける
- 目に見えない動作を確認する
- クライアント実装(PythonやAngular,CSPアプリケーション等)と合わせて理解する
- シングルサインオン/シングルログアウトを実現する

ということを主眼においています。

コミュニティ版で動作しますので、「とりあえず動かす」の手順に従って、どなたでもお試しいただけます。

現状、使用IRISバージョンはIRIS 2023.1のプレビュー版になっていますが、ソースコードは適宜変更します。

手順に沿ってコンテナを起動すると下記の環境が用意されます。この環境を使用して動作を確認します。

ユーザエージェント(ブラウザ)やPython/curlからのアクセスは、全てApache (https://webgw.localdomain/) 経由になります。青枠の中のirisclient等の文字はコンテナ名(ホスト名)です。

例えば、irisclientホストの/csp/user/MyApp.Login.clsにアクセスする場合、URLとして

 https://webgw.localdomain/irisclient/csp/user/MyApp.Login.cls

と指定します。

つまり、各エンドポイントは同一のorigin (https://webgw.localdomain) を持ちます。そのため、クロスサイト固有の課題は存在しません(カバーされません)が、仮に各サーバが別のドメインに存在しても基本的には動作するはずです。

oAuth2/OIDC(OpenID Connect)の利用シーンは多種多様です。

本例は、認証・認可サーバ,クライアントアプリケーション,リソースサーバの全てがIRISで実行されるクローズドな環境(社内や組織内での使用)を想定して、認可コードフロー(Authorization Code Flow)を実現します。分かりやすい解説が、ネットにたくさんありますので、コードフロー自身の説明は本稿では行いません。

認証・認可サーバの候補はIRIS, WindowsAD, Azure AD, AWS Cognito, Google Workspace, keycloak, OpenAMなどがあり得ます。個別に動作検証が必要です。

クライアントアプリケーション(RP)は、昨今はSPAが第一候補となると思いますが、利用環境によっては、SPA固有のセキュリティ課題に直面します。

IRISには、Confidential Clientである、従来型のWebアプリケーション(フォームをSubmitして、画面を都度再描画するタイプのWebアプリケーション)用のoAuth2関連のAPI群が用意されています。

そこで、Webアプリケーション(CSP)を選択することも考えられますが、クライアント編では、よりセキュアとされるSPA+BFF(Backend For Frontend)の構成を実現するにあたり、Webアプリケーション用APIをそのまま活用する方法をご紹介する予定です。

以下、サーバ編の動作確認には、CSPアプリケーションを使用しています。これは、新規開発にCSP(サーバページ)を使用しましょう、という事ではなく、BFF実現のために必要となる機能を理解するためです。BFFについては、クライアント編で触れます。BFFについては、こちらの説明がわかりやすかったです。

リソースサーバの役割はデータプラットフォームであるIRISは最適な選択肢です。医療系用のサーバ機能ですがFHIRリポジトリはその良い例です。本例では、至極簡単な情報を返すAPIを使用しています。

少しの努力でFHIRリポジトリを組み込むことも可能です。

サーバ編とクライアント編に分けて記載します。今回はサーバ編です。

とはいえ、クライアントとサーバが協調動作する仕組みですので、境界は少しあいまいです

0 0
1 532

Windowsクライアント環境に、スタンドアロンの IRIS ODBC ドライバをインストールする際、

 Error 1918. Error installing ODBC driver InterSystems
 IRIS ODBC.35, ODBC error 13: システム エラーコード
 126: 指定されたモジュールが見つかりません。

のエラーとなりインストールに失敗する場合の対処法をご案内します。

※インストール時に以下のようなエラーが出る場合です。


***

こちらのエラーは、Windowsクライアント環境に必要なバージョンの Microsoft VC++ ランタイム ライブラリがインストールされていない場合に出力されます。

1 0
0 530

これは InterSystems FAQ サイトの記事です。

コミュニティ版は1インスタンスでの利用を想定しているため、2インスタンス以上で設定する構成は利用できません。

製品版と異なる点は以下の通りです。

0 0
0 529
記事
· 2020年11月6日 4m read
外れ値について

これはInterSystems FAQ サイトの記事です。

テーブルチューニングを行った際に、フィールドに値がほとんど登録されていない(Null)場合や、特定の値がほとんどを占める場合、その値を [外れ値] として除外して選択性計算を行います。 また、外れ値が全レコードの何 % を占めているかの値[外れ値の選択性] として記録されます。

InterSystems 製品のクエリオプティマイザは、選択性数値とエクステントサイズを使用してクエリの経路を決定しますが、クラスクエリ、埋め込み SQL に使用しているクエリに外れ値が含まれる場合は、外れ値の選択性が自動的に考慮され、インデックスの使用有無を決定しています。

0 0
0 525

これは InterSystems FAQ サイトの記事です。

バージョン2015.2以降から、Windows上のインストール環境では、サービス・アカウントを
 「Windowsコントロールパネル > 管理ツール > サービス > InterSystems IRIS/Cache Controller for XX」
の「ローカル・システムアカウント」から Windows の任意の管理者アカウントに変更した場合に <NOTOPEN> エラー または -1 が返ります。

この状況を回復するためには、以下2つの設定をする必要があります。

0 0
0 521

これはInterSystems FAQ サイトの記事です。

この記事では「グローバルを誤って削除してしまった!」という場合の対処方法をご紹介します。

誤って削除してしまった特定のグローバルを復旧するためには、バックアップファイルとジャーナルを使用します。
復旧は、^ZJRNFILTユーティリティによるジャーナルリストアで条件を指定してジャーナルレコードをリストアする方法で行います。
この方法で、ある時点のデータベースのバックアップに対して、削除が含まれるジャーナルレコードについて特定グローバルを削除するまでのものを適用することができます。

^ZJRNFILTユーティリティの詳細については、以下のドキュメントをご参照ください。

1 0
0 519

InterSystemsのテクノロジースタックを使用して独自のアプリを開発し、顧客側で複数のデプロイを実行したいとします。 開発プロセスでは、クラスをインポートするだけでなく、必要に応じて環境を微調整する必要があるため、アプリケーションの詳細なインストールガイドを作成しました。この特定のタスクに対処するために、インターシステムズは、%Installer(Caché/Ensemble)という特別なツールを作成しました 。 続きを読んでその使用方法を学んでください。

%Installer

このツールを使用すると、インストール手順ではなく、目的のCaché構成を記述するインストールマニフェストを定義できます。作成したい Caché 構成を記述します。必要な内容を記述するだけで、環境を変更するために必要なコードが自動的に生成されます。
したがって、マニフェストのみを配布する必要がありますが、インストール・コードはすべてコンパイル時に特定の Caché サーバ用に生成されます。

0 0
0 519

これは InterSystems FAQ サイトの記事です。
※記事後半に、「2>&1」で 標準エラー出力(2) を 標準出力(1) にリダイレクトする方法を追記しました。

$ZF(-100) では実行したコマンドの出力を取得することはできませんが、代わりにコマンド・パイプ デバイスを使用する方法があります。

詳細は、以下ドキュメントをご参照ください。

コマンド・パイプ デバイスを使用する方法について

こちらを %File クラスで使用した例が以下になります。

0 1
0 518
記事
· 2021年2月24日 3m read
ECPはどのように使うのが正しい?

以下のドキュメントでご紹介しています通り、ECPは分散キャッシュ用のアプリケーションサーバーを並列に増設することで、処理量に応じてスケールアウトすることを主目的として設計されています。

ECP機能紹介

従ってインターシステムズデータプラットフォーム上で稼働する複数のアプリケーション間の簡便なデータ交換手段としてECPをご使用いただくことは推奨していません。

以下その理由についてご説明します。

データ量の増加、処理量の増加に伴いスケーラビリティに関する要件も今後益々厳しくなる中、将来にわたってより良いスケーラビリティ性能を得られるようインターシステムズの開発部門は、より良いアルゴリズムの開発や処理のチューニングをECPに対して継続的に行っております。


その成果は順次最新バージョンに反映していきます。

0 0
0 518

これは InterSystems FAQ サイトの記事です。


^%GSIZE ユーティリティでは、グローバルのサイズを算出することができます。

このユーティリティで出力される各項目の意味について説明します。

例えば、USERネームスペースのグローバルについて do ^%GSIZE を実行し、以下のように出力結果を得られたとします。

2 0
0 514

これは InterSystems FAQ サイトの記事です。

ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。

コード例は以下の通りです。

USER>set temp=##class(%Stream.TmpCharacter).%New()

USER>set jsonobj={}

USER>set jsonobj.pro1=["a","b","c","d"]

USER>set jsonobj.pro2=["あ","い","う","え"]

USER>do jsonobj.%ToJSON(temp)

USER>write temp.Size
51
USER>write temp.Read()
{"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]}

詳細はドキュメントもご参照下さい。

1 3
0 511

皆さん
こんにちは。

最近ではVSCodeでIRISのプログラミングを行っている方も多いと思います。
クラスメソッドなんかをコーディングし、実行してエラーとなった場合に、以下のようなエラーメッセージが取得できると思います。

> <UNDEFINED> zNewMethod+32^ClassName.1

これは、NewMethodというメソッド内の32行目でUNDEFINEDが発生した事を指していますが、これは実際にはClassName.clsのNewMethod内の32行目ではなく、ClassName.1というルーチン(int)のzNewMethodでの32行目を示しています。
.clsから生成されるintは空行が削られたり、複数ルーチンに分割されたりしますので、実際のClassName.clsを開いてNewMethodの32行目を見ても実際のエラー箇所では無い場合があります。
VSCodeで開発をしていると、これが結構面倒なのですが、エラーメッセージに出力される行番号を .clsや、.mac 上での行番号に変える方法があれば教えて頂きたく、よろしくお願い致します。

2 2
0 509

こんにちは、皆さま

IRISとVSCODE環境を日頃から愛用しています。

普段は使用しませんが、実験的にCSPファイル(*.CSP)をVSCODEで編集してみようと思い試みましたが上手く行きませんでした。

VSCODEの拡張は、「InterSystems ObjectScript Extension Pack」を使用しています。

具体的は2つの方法を試しました。

1.DBからworkspaceにExportして編集+Import&Compile

ObjectScriptのソースTree-コンテキストメニューにExportが無いため動作を確認できず。

clsのExprot

cspのExportが…ない

0 4
0 507

これは InterSystems FAQ サイトの記事です。

データベースキャッシュおよびルーチンキャッシュをモニターし、最適値を調べる方法をご紹介します。

(1) データベースキャッシュ

現状の設定値で問題ないかは、^GLOSTAT ユーティリティ のCache Efficency値(キャッシュ効率)でモニターします。

Cache Efficiency 値は大きければ大きいほど良いですが、目安として100 以上であれば、設定サイズは問題ありません。

実行例)

0 0
0 505

この連載記事では、InterSystemsの技術とGitLabを使用したソフトウェア開発に向けていくつかの可能性のあるアプローチをを紹介し、議論したいと思います。 今回は以下のようなトピックを取り上げます。

0 0
0 504

これはInterSystems FAQ サイトの記事です。

起動時に、 CTELNETD startup error: bind(sock) failed Telnet23ポートは別ソフトでは使用していません。というエラーが発生する場合の対処法です。

現在、InterSystems製品と以下のソフトの組み合わせで、この現象が発生することがわかっています。

0 0
0 503

これはInterSystems FAQ サイトの記事です

インデックスが複数定義されているクラス/テーブルへ csv 形式等のシーケンシャルファイルから大量データをデータベースに登録する際、推奨される登録方法として、データ登録時インデックスを生成させず、登録完了後に一括でインデックスを生成する 方法があります。

この方法は、新規に大量のレコードを一括登録する際に最も有効な手段となります。

<メモ>
大量のデータを追加登録する際には、既存のデータ量と新規データ量のバランスにより、この手法が有効でないケースもあります。その場合は、インデックスの再構築を範囲指定で行うこともできます。

説明に使用するクラス定義例は以下の通りです。

1 0
0 502