記事 Mihoko Iijima · 11月 4, 2021 6m read

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

この記事では、【GettingStarted with IRIS】シリーズの MQTT アダプタを簡単に試せるサンプルの利用方法についてご紹介します!

(MQTTブローカーはインターネット上に公開されているテスト用ブローカーを利用しています)​​

サンプルは、こちら👉https://github.com/Intersystems-jp/Samples-MQTT-EKG-Devices (コンテナで動作します)

IRIS/IRIS for Health のバージョン2020.1から、IoT の世界でよく利用される MQTT プロトコルに対応できる MQTT アダプタが追加されました。

MQTTインバウンドアダプタでは、メッセージの Subscribe が行え、MQTTアウトバンドアダプタでは、メッセージの Publish が行えます。

サンプルでは、MQTT を使った遠隔モニタリングをテーマに、患者さんに装着した心電図から心拍数(BPM)をリアルタイムに近い状態で取得し、モニタ画面に患者さん毎の心拍数を表示します(IRIS の MQTT インバウンドアダプタを利用したメッセージの Subscribe をご体験いただけます)。

 

Publish されるトピックについて

サンプルでは、演習環境毎にユニークになるようにコンテナ開始時に以下の形式でトピックを作成しています(末尾の # はワイルドカードの指定です)。

/Student_4629/acmeHospital/EKG/#

実際に Publish されるトピックは患者さんに装着した心電図のデータになるので、# の部分は、Patient-1 や Patient-2 などのように患者さんを特定できる文字列が入ります。

サンプルのシナリオは、1つの医療機関の患者情報を取得する流れにしています(本来であれば複数の医療機関の患者情報をモニタできるようにしたほうが良いのですがシンプルに試すため、1つの医療機関の患者情報を取得する流れにしています)。

 

トピックの流れ

サンプルには1つHTMLファイルが用意されています。このファイルをブラウザで開くと MQTT ブローカーに接続し、データ(心拍数)を1秒ごとにブローカーへ Publish します。

 

IRIS は、MQTTブローカーから指定のトピックを Subscribe します。

 

​​​

MQTT ブローカーを Subscribe する設定を行った IRIS のサービスは、ブローカーからトピックを取得します。

実際の設定は以下の通りです。

 

受信したトピックは IRIS の中では​​​メッセージ(EnsLib.MQTT.Message)として扱われ、次のコンポーネントであるプロセス(図では Process_MQTT_Request)に渡します。

 

プロセスでは、受信した MQTT 用メッセージからモニタ表示に利用するデータ(Solution.HeartRate)に変換するため、データ変換を呼び出します。

プロセスエディタの開き方と、中で行われているデータ変換の呼び出しの設定を確認する方法は以下の通りです。

 

患者ごとの測定値を参照する流れ

MQTT ブローカーから Subscribe した心拍数をリアルタイムに近い状態で画面表示するため、データ変換で作成された Solution.HeartRate から1秒ごとに患者ごとの心拍数を収集し、画面に表示しています。

 

この表示を行うため、1秒間隔で Solution.HeartRate に対するSELECT文が実行されています。

このクエリを実行しているのが、メトリックと呼ぶクラスです。プロダクションでは以下の場所に設定されています。

メトリックでは、指定の呼び出し間隔で Solution.HeartRate から患者ごとの BPM を収集しています。詳細はソースコードをご参照ください。

0
0 401
記事 Toshihiko Minamoto · 11月 3, 2021 12m read

この連載の最初の記事では、大きなチャンクのデータをHTTP POSTメソッドのRaw本体から読み取って、それをクラスのストリームクラスとしてデータベースに格納する方法を説明しました。 2つ目の記事では、ファイルとファイル名をJSON形式にラップして送信する方法を説明しました。 

それでは、大きなファイルを分割してサーバーに送るという構想を詳しく見ていきましょう。 これを行うために使用できるアプローチにはいくつかあるのですが、 この記事では、Transfer-Encodingヘッダーを使用してチャンク転送を指示する方法を説明します。 Transfer-EncodingヘッダーはHTTP/1.1仕様で導入されたものです。RFC 7230第4.1項では説明されているものの、HTTP/2仕様からはその説明が無くなっています。 

0
0 1363
記事 Shintaro Kaminaka · 11月 3, 2021 15m read

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

この記事は、FHIRの関連技術として、FHIRプロファイル作成ツールであるSUSHIの使い方を紹介するシリーズの第2弾です。パート2である今回まで半年の期間が経ってしまいました。

前回のパート1では、FHIRとは?FHIRプロファイルとは?FHIR Shorthandとは?そしてSUSHIとはどのようなツールなのか?どのような物を作成できるのか?について、サンプルの成果物のスクリーンショットを交えながら説明しました。

今回の記事では、SUSHIで作成したプロファイルの実際の活用例として、SUSHIを使ってPatientリソースに Extension を追加し、さらにそのExtensionの項目に対する新しい SearchParameter を定義し、IRIS for HealthのFHIR Repositoyで新しいSearchParameterが使えるようになるまで、をご紹介します。

SUSHIのアップグレード

いきなり本筋とそれて恐縮ですが、SUSHIを久しぶりに触る私のような方はSUSHIのアップグレードを行いましょう。 この半年の間もSUSHIは精力的な機能Enhancementが行われており、8月にはversion 2.0.0がリリースされています。この記事の執筆段階の最新バージョンは SUSHI 2.1.1 でした。

0
0 1153
お知らせ Mihoko Iijima · 11月 2, 2021

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

次の InterSystems オンラインプログラミングコンテストが決定しました! 

お題は・・・・   🏆 InterSystems Security Contest 🏆

応募期間は 2021年11月15日~11月28日 です!

💰 賞金総額: $9,450 💰


<--break->

0
0 148
記事 Toshihiko Minamoto · 11月 1, 2021 9m read

この連載の第1回目の記事では、「大規模な」チャンクのデータをHTTP POSTメソッドのRaw本体から読み取って、それをクラスのストリームプロパティとしてデータベースに格納する方法について説明しました。 では、そのようなデータとメタデータをJSON形式で格納する方法について見てみましょう。

残念ながら、Advanced REST Clientでは、バイナリーデータをキーの値としてJSONオブジェクトを作成することはできません(もしかすると、私がまだ知らないだけかもしれません)。そこで、サーバーにデータを送信する単純なクライアントをObjectScriptで記述することにしました。

新しいRestTransfer.Clientというクラスを作成し、私のWebサーバーを指定するServer = "localhost"パラメーターとPort = 52773パラメーターをそれに追加しました。 そしてGetLinkクラスメソッドを作成しました。この中で、クラス%Net.HttpRequestの新しいインスタンスを作成し、プロパティを前述のパラメーターに設定します。 

実際にPOSTリクエストをサーバーに送信するために、クラスメソッドSendFileDirectを作成しました。

0
0 518
InterSystems公式 Mihoko Iijima · 11月 1, 2021

InterSystems IRIS と InterSystems IRIS for Health 2021.1 CommunityEdition の組み込みライセンスが 2021年10月30日で期限切れになるよう誤って設定されていることが判明しました。大変申し訳ありません。

CommunityEdition は開発用途であるため、実稼働バージョンへの影響はありませんが、CommunityEdition のキーが期限を迎えると、ご利用中インスタンスの実行が停止する、または開始できない状況になります。

ご利用を継続いただくためには、新しいインスタンスに置き換えていただく必要があります。インスタンスの置き換えが行えない場合には、ライセンスキーのオーバーライドが行える拡張用キーをご提供しております。

ご不便おかけし、大変申し訳ありません。

 

置換対象のキット/コンテナのビルド番号について

インストールキットとコンテナは、WRC software distribution site よりダウンロードいただけます。

バージョン 2021.1 build 215.3 をご利用ください。

拡張キーが含まれる新しいコンテナを、InterSystems Container Registry にご用意いたしました。

以下コマンドで新しいイメージを pull できます。

docker pull containers.

1
0 329
記事 Megumi Kakechi · 10月 28, 2021 2m read

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

TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。

小数点以下の精度を変更したい場合は、以下の方法で設定します。

1) システムワイドに設定する

管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] 
GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。

設定内容の詳細については、下記のドキュメントページをご参照ください。
追加構成設定~ - 一般SQL設定 - SQL タブ


2) SQLの関数で指定する

CURRENT_TIMESTAMP()の引数を利用して、小数点以下の精度を 0~9 の範囲で桁数を指定できます。
※CURRENT_TIMESTAMP()で返される値は、実行環境のタイムゾーンの現在の日付時刻を返します。

USER>do $SYSTEM.SQL.
0
0 1547
記事 Toshihiko Minamoto · 10月 28, 2021 8m read

InterSystems開発者コミュニティにおいて、CachéアプリケーションへのTWAINインターフェースの作成の可能性に関する質問が上がりました。 Webクライアントの撮像装置からサーバーにデータを取得し、そのデータをデータベースに保管する方法について、素晴らしい提案がいくつかなされました。 

しかし、こういった提案を実装するには、Webクライアントからデータベースサーバーにデータを転送し、受信データをクラスプロパティ(または質問のケースで言えばテーブルのセル)に格納できなければなりません。 この方法は、TWAINデバイスから受信した撮像データを転送するためだけでなく、ファイルアーカイブや画像共有などの整理といったほかのタスクにも役立つ可能性があります。 

そこで、この記事では主に、HTTP POSTコマンドの本体から、raw状態またはJSON構造にラップしてデータを取得するRESTfulサービスを記述する方法を説明することにします。

RESTの基本

具体的な話に入る前に、まずREST全般と、IRISでRESTfulサービスがどのように作成されるかについて簡単に説明しましょう。

Representational state transfer(REST)は、分散ハイパーメディアシステムのためのアーキテクチャスタイルです。

0
0 1304
記事 Hiroshi Sato · 10月 27, 2021 1m read

これは、InterSystems FAQサイトの記事です。
$system.SQL.Shell() を使用します。

以下にサンプルを示しますので参考にしてください。

 

SAMPLES>do $System.SQL.Shell()
SQL Command Line Shell
---------------------------------------------------- The command prefix is currently set to: <>.
Enter q to quit, ? for help.
SAMPLES>>select * from Sample.Vendor
1. select * from Sample.Vendor Vendor Balance Contact DaysClear DiscDays DiscRate LastInvDate LastPayDate MinPayment Name NetDays PayFlag TaxReportingAddress_City Address_State Address_Street Address_Zip
: ※最初の行で何も入力せずにEnterを押すと、複数行入力モードに切り替わります。
USER>d $SYSTEM.SQL.
0
0 782
お知らせ Mihoko Iijima · 10月 26, 2021

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

InterSystems Interoperability コンテスト 2021 の投票結果が発表されました!

今回も、コーディングコンテストにご興味おもちいただきありがとうございました!

この記事では、コンテスト受賞者を発表します!

受賞された開発者の皆さん、👏おめでとうございます!🎊

0
0 118
記事 Toshihiko Minamoto · 10月 26, 2021 10m read

InterSystems IRISを初めて使用し始める際には、最低限のセキュリティレベルでのみシステムをインストールするのが通例です。 パスワードを入力する回数が少なくて済むため、初めて作業を始めるときに、開発サービスやWebアプリケーションの操作がより簡単になるからです。 また、開発済みのプロジェクトまたはソリューションをデプロイする際には、最小限のセキュリティを適用している方が便利な場合があります。 それでも、プロジェクトを開発環境から非常に敵対的な可能性のあるインターネット環境に移行する時が来れば、本番環境にデプロイされる前に、最大限のセキュリティ設定(つまり、完全なロックダウン状態)でテストしなければなりません。 これがこの記事の論点です。 InterSystems Caché、Ensemble、およびIRISにおけるDBMSセキュリティ問題をさらに包括的に説明した記事については、私の別の記事、「Recommendations on installing the InterSystems Caché DBMS for a production environment」(本番環境向けにInterSystems Caché DBMS をインストールするための推奨事項)をご覧ください。 InterSystems IRISのセキュリティシステムは、さまざまなカテゴリ(ユーザー、サービス、リソース、特権、およびアプリケーション)に異なるセキュリティ設定を適用する概念に基づいています。 ユーザーにはロールを割り当てることができます。 ユーザーとロールには、データベース、サービス、およびアプリケーションといったリソースに対し、さまざまな読み取り、書き込み、および使用の権限を付与することができます。 ユーザーとロールには、データベースのSQLテーブルに対するSQL特権も与えられます。

0
0 416
記事 Hiroshi Sato · 10月 26, 2021 1m read

これは、InterSystems FAQサイトの記事です。
InterSystems 製品の管理ツールやWebページのセキュリティ強化のため、%付きのWebページ(例:管理ポータル上のユニットテストポータル、Webサービスクラスのテスト画面)に対するアクセスがより効率的に制御できるよう、新しいルールが追加されました。

 

これによりデフォルトで参照可能なページ以外については、明示的に参照許可を設定する必要があり、設定しない場合参照エラーとなります。 以下のドキュメントをご参照いただき、必要に応じて参照許可を設定するようにしてください。


%CSP ページへのアプリケーション・アクセスの制御について

 

Webサービスクラスのテスト画面の場合は、以下をご覧ください。


Webサービスのカタログおよびテストページについて【IRIS】
Webサービスのカタログおよびテストページについて

0
0 177
記事 Hiroshi Sato · 10月 21, 2021 2m read

これは、InterSystems FAQサイトの記事です。
システム日付の変更をすると、InterSystems Data Platform(以下IRIS)が正常に開始しなくなる場合があります。

IRISは開始時にジャーナルファイル削除処理を行いますが、システム日付を変更すると不正な日付のジャーナルファイルが作成されます。

ジャーナルファイル削除処理では、ジャーナルファイル内部に記録された前後のファイルの情報も参照し処理を進めます。

システム日付けの変更によりジャーナルファイルの繋がりに矛盾が生じると、削除処理でループ状態となり、IRISの開始処理が完了しなくなることがありますので、ご注意ください。

システム日付を変更することはIRISに限らず、OSやミドルウェア、その上で動作するアプリケーションの依存性など様々な影響の可能性が考えられます。

テスト・検証などの関係で、どうしてもシステム日付を変更しなければならない場合には、IRISのアンインストールや再インストールが自由に行える環境(仮想環境など)でテストされることを推奨致します。

テストの基本的な流れは、以下のようになります。

0
0 1010
記事 Toshihiko Minamoto · 10月 20, 2021 4m read

インターネットを使うようになってから (1990年代後半)、PythonとIRIS グローバルを使ってブログを書いていますが、常にCMS (コンテンツ管理システム) でブログ、ソーシャルメディア、さらには企業ページに情報を簡単に投稿できるようにしていました。 数年後、自分がマークダウンファイルに収めて使ってきたすべてのコードをgithubに入れました。 ネイティブAPIでデータをIntersystems IRISに入れて永続化するのはとても簡単だったので、このアプリケーションを作成して少しSQLを忘れ、キー・バリュー・データベースモデルを受け入れることにしました! picture

ブログとは?

これはWEB LOGの略名で、基本的にはユーザーが書いてページに投稿、公開できるプラットフォームです。

マークダウンフォーマットとは?

マークダウンとは、フォーマットしたテキストを作成するマークアップ言語であり、HTMLより簡単で、多くのCMSプラットフォームで人気があります。

例:

# Header 1
## Header 2
### Header 3

結果:

Header 1

Header 2

Header 3


IRISで作成するメリットとは?

IRIS Globalsを使用して各投稿のデータを永続化しながら、各データコンサルタントはキー・バリュー・データベースとして動作するIRISのスピードというメリットを得ます。

0
0 252
記事 Hiroshi Sato · 10月 20, 2021 1m read

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


InterSystems IRIS Data Platformにはシステム接続に良く使われる一般的な電子メール、ファイル、FTP、HTTP、ウェブサービス、REST、SQL、TCPアダプタなどが標準で含まれています。

特定アプリケーション向けに IBM WebSphere MQ アダプタや SAP Java Connector アダプタも提供します。

そしてJavaアプリケーションを呼び出すためや .Net アプリケーションを呼び出すための PEX(Production EXtension)というフレームワーク もあります。

そのほか、IRIS for HealthにはHL7 FHIR、HL7 V2、HL7 V3、CDA、DICOM、X12、ASTM,EDIFACT などのアダプタもあります。

さらに標準で用意していないカスタムアプリケーション用にはカスタムアダプタを作成することもできます。

0
0 337
記事 Tomoko Furuzono · 10月 19, 2021 1m read

これは、InterSystems FAQサイトの記事です。
システムをアップグレードした後、管理ポータルを開こうとすると、下記のエラーが表示される場合があります。

ERROR #5001: Server version of object does not match version sent from the client: %ZEN.Component.vgroup

このエラーは、ブラウザのキャシュに古い情報が残っているために発生しています。

ブラウザのキャッシュをクリアすることでエラーを解消することができます。

0
0 318
記事 Hiroshi Sato · 10月 19, 2021 2m read

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

2つのシステムをつなぐだけだったら、わざわざInterSystems IRIS Data Platform(以下IRISと表記)のようなものを仲介させるのは無駄に思えるかもしれません。 

ですが、システムの接続は複数システム間に跨るのが一般的です。 

そしてシステムの数が増えるにつれ、その接続は複雑になっていき、接続のタイミング、接続プロジェクトの進行管理などが重荷になっていきます。 

また各接続は時が経つにつれ変化するのが一般的で、そういうことが起こると双方のシステムにその都度修正が必要になります。 

相互依存性が高まるわけです。 

また時が経つにつれ各システムが本来持っている機能と接続に関わる処理が混在するケースが多く、変更の影響範囲が多岐に渡ってしまい、 ちょっとした修正でも影響範囲の特定が困難となり、修正作業が膨大になるケースがあります。 

IRISを使ってシステム接続を中継させることにより、接続に関する様々な雑用をIRISが担うようになれば、やがて接続の標準化が促進され、各システムには全く変更を加えることなく接続が可能になり、何か変更があった場合にも影響範囲が限定され、その変更作業に必要な工数を最小化できます。

0
0 185
記事 Toshihiko Minamoto · 10月 19, 2021 9m read

はじめに

ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。

0
1 431
記事 Shintaro Kaminaka · 10月 18, 2021 14m read

特報!!

この記事の中でご紹介している、FHIRオペレーションのデモを含め、FHIR PathやFHIRプロファイル対応などの2021.1のFHIR関連新機能をご紹介するウェビナーが、2021年10月21日 12:30~13:00 に開催されます!!ご興味ある方はこちらからご登録ください!!

InterSystems IRIS 開発者向けウェビナーシリーズ

開発者の皆さん、こんにちは。 今日は前回のFHIRリポジトリをカスタマイズしよう!パート1の記事に続き、パート2として、カスタムオペレーションの実装方法をご紹介したいと思います。この記事で紹介している内容のFHIRリポジトリカスタムオペレーションに関するドキュメントマニュアルはこちらになります。 この記事はIRIS for Health 2021.1 をベースに記載しています。バージョンによって実装方法が異なるケースも考えられますので、該当のバージョンのドキュメントをご参照ください。場合によっては新しいバージョンへアップグレードもご検討ください。

FHIRのOperation(オペレーション)とは?

まず、FHIRのOperationについて、簡単にご紹介したいと思います。 HL7 FHIR公式ページのOperationのページには以下のように記載されてい

0
0 583
お知らせ Mihoko Iijima · 10月 18, 2021

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

今週から、InterSystems Interoperability コンテスト 2021の投票が始まりました!InterSystems IRIS を使い開発されたベストソリューションにぜひ、投票をお願いします!

🔥 投票はこちらから! 🔥

投票方法については、以下ご参照ください。

1
0 174
記事 Hiroshi Sato · 10月 18, 2021 1m read

これはInterSystems FAQ サイトの記事です。
命名規約については、それぞれ下記のドキュメントページをご確認ください。

 

テーブル名(クラス名)について


識別子のルールとガイドライン - クラス

カラム名(プロパティ名)について


識別子のルールとガイドライン - クラス・メンバ


こちらに記載しておりますように、カラム名(プロパティ名)には英数文字およびASCII 128 よりUnicodeコードポイントの大きな文字のみ使用可能です。

  • 名前は、英字、ASCII 128 よりUnicodeコードポイントの大きな文字かパーセント記号 (%) で始まる必要があります。
  • 残りの文字は、英字、ASCII 128 よりUnicodeコードポイントの大きな文字または数字にする必要があります。

また、「リリース2012.2以降〜」の部分にありますように、

Property "My Property" As %String;

のように " で囲むことで、使用できない記号等も使用できるようになります。

これとは別に、プロパティ名は英数字のみを使用して、SQLフィールド名のみ、別途指定することもできます。

Property iscname As %String [ SqlFieldName = isc_name ];
0
0 866
記事 Hiroshi Sato · 10月 14, 2021 2m read

これはInterSystems FAQ サイトの記事です。
文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。 

 

 Write $$GetIONames^%SYS.NLS()

 

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

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

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

 

 set obj=##class(%SYS.NLS.Table).%New("System")

 

(2) GetIOTable() メソッドを使用して、確認したいデバイスの現在の変換テーブル名を取得します。

メソッドの引数には、デバイス名に対応した番号を指定します。(詳細はクラスリファレンスをご参照ください。)

【ご参考】クラスリファレンスは、ドキュメントトップ > クラスリファレンス または、スタジオ→表示→クラスドキュメント から参照できます。

 

// ファイル入出力に使用する変換テーブル名を取得
 write obj.GetIOTable(3)

 

【ご参考】

以下のドキュメントもご参照ください。


%SYS.NLS.Tableについて【IRIS】
%SYS.NLS.

0
0 581
記事 Hiroshi Sato · 10月 13, 2021 3m read

これはInterSystems FAQ サイトの記事です。
コンソールログファイル (※1) に、以下のメッセージが表示されることがあります。

05/14/19-09:32:14:056 (6888) 0 System routine buffer (64 KB) shortage is detected, 430 routine buffers configured, adjusted per process cached rtn to 71

(※1)
コンソールログファイルは、[管理ポータル] > [システムオペレーション] > [システムログ] > [コンソール・ログ] から参照できます。
または、以下ファイルを直接参照することもできます。


 

<インストールディレクトリ>\mgr\cconsole.log 

 

上記メッセージでは、ルーチンバッファサイズのうちの 64KB バッファの不足が検出されています。


弊社製品インストール時点のルーチンキャッシュ用メモリのデフォルト値は 35MB に設定されていて、各バッファ(4KB/16KB/64KB)にそれぞれに 430 バッファを割り当てた合計値で設定されています(※補足)。

「adjusted per process cached rtn to 71」については、1プロセスあたりに参照できるルーチン個数が 71個に調整されています。

0
0 246
記事 Toshihiko Minamoto · 10月 13, 2021 6m read

@Evgeny.Shvarovの記事へのコメントとして書こうとしていましたが、 コメントが長すぎたため、別に投稿することにしました。

dockerがすべてのイメージをクリーンアップした結果の画像

dockerがどのようにディスクスペースを使用し、クリーンアップするかについて、少し説明を加えたいと思います。  私はmacOSを使用しているため、以下に示すものは主にmacOSを対象としていますが、dockerコマンドはすべてのプラットフォームでも使用できます。

0
0 7409
記事 Hiroshi Sato · 10月 12, 2021 1m read

これはInterSystems FAQ サイトの記事です。
^BACKUP ユーティリティを使用して、DBリストアする方法をご紹介します。

添付のドキュメントでは、オンラインバックアップ と レガシー並行外部バックアップ の2種類のバックアップからのリストア処理の方法を紹介しています。

リストア処理の詳細は、下記ドキュメントページを参照してください。


オンライン・バックアップ・リストア・ユーティリティ【IRIS】
Caché オンライン・バックアップ・リストア・ユーティリティについて
 

0
0 274
記事 Hiroshi Sato · 10月 12, 2021 2m read

これはInterSystems FAQ サイトの記事です。
ファイルサイズを取得する専用メソッドはありませんが、%Net.FtpSession クラスの sendCommand() メソッドを通してFTPのSIZEコマンドを呼び出し、サイズを取得できます。

簡単な利用例をご紹介します。

まず、以下の様なクラスを定義します。

Class MyNet.FtpSession Extends %Net.FtpSession
{ Method getSize(fname As %String, ByRef size As %Integer)
{
set type=..Type  // 現Typeを保存しておく
do ..Binary()
set st=..sendCommand("SIZE "_fname) //SIZE <file name>
set size=..ReturnMessage
if type="Ascii" {
do ..Ascii()
}
quit
} }

上記で作成したクラスを使用したサンプルコードです。 

 set ftp=##class(MyNet.FtpSession).%New()
 write ftp.Connect(ftpsrv,user,pass)  // FTPサイトへ接続ができると1が返ります。
 do
0
0 375
記事 Toshihiko Minamoto · 10月 12, 2021 11m read

前の記事では、マクロの潜在的なユースケースををレビューしました。そこで、マクロの使用方法についてより包括的な例を見てみることにしましょう。 この記事では、ロギングシステムを設計して構築します。

ロギングシステム

ロギングシステムは、アプリケーションの作業を監視するための便利なツールで、デバッグや監視にかける時間を大幅に節約してくれます。 これから構築するシステムは2つの部分で構成されます。

  • ストレージクラス(レコードをログ記録するためのクラス)
  • 新しいレコードをログに自動的に追加する一連のマクロ
0
0 433