記事 Tomoko Furuzono · 2022年3月1日 2m read オブジェクトのプロパティやメソッドに動的にアクセスする方法 これは、InterSystems FAQサイトの記事です。 オブジェクトに対する一般的な処理をサポートする各種関数を提供しています。詳細は以下ドキュメントをご参照ください。オブジェクトへの動的アクセス【IRIS】オブジェクトへの動的アクセス サンプルクラス(Sample.Person)を使用して、利用例をご紹介します。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 336
記事 Tomoko Furuzono · 2022年3月1日 1m read マッピングされたクラス・ルーチンをコンパイルする方法 これは、InterSystems FAQサイトの記事です。 マップされたクラス・ルーチンも含めてコンパイルする場合は、コンパイラ修飾子に "/mapped=1" もしくは "/mapped" を指定します。 例えば、以下のように行います。 【例1】クラスリストを取得してコンパイル do $System.OBJ.GetClassList(.list,"/mapped") // build your list starting from .list do $System.OBJ.Compile(.list) 【例2】全てのクラスをコンパイル #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 104
記事 Tomoko Furuzono · 2022年3月1日 2m read ミラー・データベースがミラー構成削除後に読み取り専用でマウントされる これは、InterSystems FAQサイトの記事です。 ミラー構成削除時に、ミラー・データベースのミラー属性を削除するオプションを指定しないと、通常データベースに戻すことができず、次回マウント時に読み取り専用でデータベースがマウントされます。 読み書き可能なデータベースに戻すためには、システムルーチン ^MIRROR を使用してミラー属性を削除する必要があります。手順は以下のとおりです。(%SYSネームスペースで実行します。) #Mirroring #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 116
記事 Megumi Kakechi · 2022年2月23日 1m read ジャーナルファイルの使用量をチェックする方法 これは、InterSystems FAQサイトの記事です。現ジャーナルファイル名の取得は、ジャーナリング API を利用します。 ##class(%SYS.Journal.System).GetCurrentFileName() 現ジャーナルファイルの使用量bytesの取得は、ジャーナリング API を利用します。 ##class(%SYS.Journal.System).GetCurrentFileOffset() 実行例は以下の通りです。 #ジャーナリング #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 124
記事 Megumi Kakechi · 2022年2月13日 2m read IRISが使用するワーキングセット(メモリ)について これは、InterSystems FAQサイトの記事です。各プロセスが消費しているメモリの内容は、Windowsリソースモニタの項目のワーキングセット、共有可能、プライベートで確認できます。 これらの内容は以下になります。 ワーキングセット プロセスが使用する物理メモリです。 ワーキングセット(プライベート)とワーキングセット(共有可能)との合計です。 共有可能 プロセスが使用する物理メモリ内で他のプロセスと共有可能なメモリです。 プライベート プロセスが使用する物理メモリ内で他のプロセスと共有不可能なメモリです。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 207
記事 Toshihiko Minamoto · 2022年1月18日 3m read データジャングルの視覚化 -- パート4: YapeをDockerイメージで実行する この短い記事では、マシンにPythonをセットアップしなくて済むように、dockerコンテナでYapeを実行する方法について説明します。 このシリーズの前回の記事からしばらく時間が経っているため、簡単に振り返ってみましょう。 まず、matplotlibで基本的なグラフを作成する方法について話しました。 そして、bokehを使った動的グラフについて紹介しました。 最後にパート3では、monlblデータを使ったヒートマップの生成について説明しました。 #Docker #Python #ツール #パフォーマンス #視覚化 #Caché 0 0 0 86
記事 Toshihiko Minamoto · 2021年12月21日 7m read データジャングルの視覚化 -- パート2 より多くのソースでより優れた出力を! 先週のディスカッションでは、1つのファイルのデータ入力に基づく単純なグラフを作成しました。 ご存知のように、解析して相関付けるデータファイルが複数あることがあります。 そこで今週は、perfmonデータを追加して読み込み、それを同じグラフにプロットする方法について学習しましょう。 生成したグラフをレポートやWebページで使用する可能性があるため、生成したグラフのエクスポート方法についても説明します。 Windowsのperfmonデータを読み込む 標準のpButtonsレポートから抽出されたperfmonデータは、少し独特なデータ形式です。 一見すると、かなり単純なCSVファイルで、 最初の行には列のヘッダーがあり、それ以降の行にはデータポイントが含まれています。 ただし、ここでの目的のために、値エントリーを囲む引用符をどうにかする必要があります。 標準的なアプローチを使用してファイルをPythonに解析すると、文字列オブジェクトの列ができてしまい、うまくグラフ化できません。 #Python #ツール #パフォーマンス #視覚化 #Caché 0 0 0 130
質問 Yuji Ohata · 2021年12月6日 SQL実行時にバインドパラメータを255個以上渡したい場合について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 私はIRISでSQLアクセスを行うプログラムをを作成しており、テーブルアクセスには%ScrollableResultSetクラスのAPIを用いて処理を実現しています。作成するSQLはインジェクション対策のため、?パラメータを用いておりますが、この度、大量のパラメータ(600項目)を用いるSQLを作成する必要が出てきました。 https://irisdocs.intersystems.com/iris20191/csp/docbookj/DocBook.UI.Page...こちらによりますと、可変長引数を用いても引数の上限値は255個となっており、実際に600個のパラメータを引数に与えてSQLアクセスしようとすると、<STACK>エラーが発生する状況です。 #Caché #InterSystems IRIS 0 2 0 284
InterSystems公式 Yoichi Miyashita · 2021年12月1日 勧告: InterSystems キットで提供される Apache Web サーバ InterSystems 製品のキットには Apache Web サーバが含まれています。これにより、お客様が外部Webサーバをインストールせずに Caché/IRIS 管理ポータルを動作させる為の便利な方法を提供しています。ただし、このWebサーバを実稼働インスタンスに使用しないでください。お客様は、システムに応じたニーズとセキュリティ/リスク要件に適合するWebサーバを別途インストールする必要があります。 #CSP #Web Gateway #セキュリティ #管理ポータル #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health #InterSystems公式 0 0 0 127
記事 Hiroshi Sato · 2021年11月29日 2m read イメージファイルをFTPサーバからアップロード/ダウンロードする方法 これは、InterSystems FAQサイトの記事です。 FTPサーバから、アップロード/ダウンロードする方法は以下の通りです。 1. FTPサーバにイメージファイルをアップロードする #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 140
記事 Tomoko Furuzono · 2021年11月28日 5m read データサイズを調べる方法 これは、InterSystems FAQサイトの記事です。InterSystems製品のデータ(テーブルの行データ、オブジェクトのインスタンスデータ)は、グローバル変数に格納されています。各グローバルのデータサイズは、管理ポータル>システム>構成>ローカルデータベース>グローバルのページから参照したいグローバルのプロパティをクリックし、表示されるグローバル属性ページ上のサイズ計算ボタンをクリックすることで個別のグローバルのサイズを取得することができます。ネームスペース上のグローバルのデータサイズをまとめて表示するには、ターミナル上で^%GSIZEユーティリティを起動することで取得することができます。実行方法は以下の通りです。 #データベース #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 257
記事 Hiroshi Sato · 2021年11月24日 1m read InterSystems製品開始時に特定の処理を実行する方法 これは InterSystems FAQ サイトの記事です。 InterSystems製品開始時に、OSの実行ファイルやコマンド、InterSystems製品内に作成したプログラムを実行したい場合は SYSTEM^%ZSTART ルーチンに処理を記述します。 (%ZSTARTルーチンは%SYSネームスペースで作成します) SYSTEM^%ZSTART に記述する処理は、事前にあらゆる条件下でうまく動作することを確認してください。 ^%ZSTART ルーチンの記述ミスや、記述は正しくとも起動時にコマンドが応答を返さなかったり処理でエラーが起こった場合、InterSystems製品が起動できなくなることがあります。 詳しくは、以下ドキュメントをご参照ください。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 178
記事 Megumi Kakechi · 2021年11月15日 1m read Webゲートウェイ/CSPゲートウェイの設定についての注意点(Apache) これは InterSystems FAQ サイトの記事です。 SELinuxの機能が有効になっているとファイルアクセス時にセキュリティコンテキストのチェックで permission エラーになります。 CSP のページについても同様に permission エラーになっているため、Apache にて 403 Forbidden エラーになります。 以下の設定でSELinuxの機能を無効にすることで回避できます。 設定ファイル /etc/selinux/config の SELINUX=disableに設定し、OS の再起動を行います。 例: #セキュリティ #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 265
記事 Hiroshi Sato · 2021年11月11日 3m read InterSystems 製品の設定内容をインポート/エクスポートする方法 これは InterSystems FAQ サイトの記事です。 設定内容によって、方法が異なります。 システム構成について管理ポータルの [システム管理] > [構成] 以下の設定については(※1)、パラメータファイル(InterSystems IRISは iris.cpf、Caché/Ensemble/HealthShareは cache.cpf) に格納されます。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 400
記事 Megumi Kakechi · 2021年11月10日 4m read InterSystems製品のプロセスが使用するメモリ量について これは InterSystems FAQ サイトの記事です。 InterSystems製品のプロセスが消費するメモリ領域は以下の6つの領域になります。 プロセスのプライベートな領域 1. プロセスパーティション(ローカル変数テーブル等、プロセスごとに使用するメモリ) 2. 長い文字列(LongString)使用メモリ 3. 文字列スタック...等 プロセス間共有領域 4. データベースキャッシュ 5. ルーチンキャッシュ 6. 一般ヒープメモリ(プロセステーブル、ロックテーブル等) #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 388
記事 Megumi Kakechi · 2021年10月28日 2m read TIMESTAMP型のフォーマットについて これは InterSystems FAQ サイトの記事です。 TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。 小数点以下の精度を変更したい場合は、以下の方法で設定します。 1) システムワイドに設定する 管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。 #ObjectScript #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.1K
記事 Hiroshi Sato · 2021年10月27日 1m read ターミナルでSQLを実行する方法 これは、InterSystems FAQサイトの記事です。$system.SQL.Shell() を使用します。 以下にサンプルを示しますので参考にしてください。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 536
記事 Toshihiko Minamoto · 2021年10月26日 10m read InterSystems IRIS DBMSのセキュリティ強化 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特権も与えられます。 #システム管理 #セキュリティ #初心者 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 212
記事 Hiroshi Sato · 2021年10月26日 1m read %付きWebページを開くとエラーになる場合の対処法。 これは、InterSystems FAQサイトの記事です。InterSystems 製品の管理ツールやWebページのセキュリティ強化のため、%付きのWebページ(例:管理ポータル上のユニットテストポータル、Webサービスクラスのテスト画面)に対するアクセスがより効率的に制御できるよう、新しいルールが追加されました。 これによりデフォルトで参照可能なページ以外については、明示的に参照許可を設定する必要があり、設定しない場合参照エラーとなります。 以下のドキュメントをご参照いただき、必要に応じて参照許可を設定するようにしてください。 %CSP ページへのアプリケーション・アクセスの制御について Webサービスクラスのテスト画面の場合は、以下をご覧ください。 #CSP #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 117
記事 Tomoko Furuzono · 2021年10月19日 1m read アップグレード後、管理ポータルを開こうとするとERROR #5001となり、開くことができません。 これは、InterSystems FAQサイトの記事です。システムをアップグレードした後、管理ポータルを開こうとすると、下記のエラーが表示される場合があります。 ERROR #5001: Server version of object does not match version sent from the client: %ZEN.Component.vgroup このエラーは、ブラウザのキャシュに古い情報が残っているために発生しています。 ブラウザのキャッシュをクリアすることでエラーを解消することができます。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 184
記事 Toshihiko Minamoto · 2021年10月19日 9m read %Statusを使ったデバッグのヒント はじめに ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。 #エラーハンドリング #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 1 243
記事 Hiroshi Sato · 2021年10月14日 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() メソッドを使用して、確認したいデバイスの現在の変換テーブル名を取得します。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 363
記事 Hiroshi Sato · 2021年10月13日 3m read System routine buffer (# KB) shortage is detected.... のメッセージの意味と対処方法 これは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 バッファの不足が検出されています。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 167
記事 Hiroshi Sato · 2021年10月12日 2m read %Net.FtpSession クラスを使用してファイルサイズを取得する方法 これはInterSystems FAQ サイトの記事です。ファイルサイズを取得する専用メソッドはありませんが、%Net.FtpSession クラスの sendCommand() メソッドを通してFTPのSIZEコマンドを呼び出し、サイズを取得できます。 簡単な利用例をご紹介します。 まず、以下の様なクラスを定義します。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 227
記事 Toshihiko Minamoto · 2021年10月12日 11m read InterSystems IRISでマクロを使用したロギングシステム 前の記事では、マクロの潜在的なユースケースををレビューしました。そこで、マクロの使用方法についてより包括的な例を見てみることにしましょう。 この記事では、ロギングシステムを設計して構築します。 ロギングシステム ロギングシステムは、アプリケーションの作業を監視するための便利なツールで、デバッグや監視にかける時間を大幅に節約してくれます。 これから構築するシステムは2つの部分で構成されます。 ストレージクラス(レコードをログ記録するためのクラス) 新しいレコードをログに自動的に追加する一連のマクロ #オブジェクトデータモデル #コンパイラ #Caché #InterSystems IRIS 0 0 0 231
記事 Mihoko Iijima · 2021年10月12日 6m read いつも使用しているユーザで IRIS や Caché にアクセスできなくなった時の原因の探り方(監査の使い方) 開発者の皆さん、こんにちは。 いつも使用しているユーザでアプリケーションや InterSystems 製品(IRIS/Caché/Ensemble/HealthShare) にアクセスしたとき、セキュリティ設定変更などの影響で急にアクセスできなくなった!という場合に、調査に便利な監査ログの参照方法をご紹介します。 ここでは、%Allロールを持つシステム管理ユーザ( _system や SuperUser )で管理ポータルにアクセスできる状態での確認方法をご紹介します。 監査ログですが、まずはシステムで監査が取られる設定になっているかご確認ください(通常無効化されている場合は、調査の時だけ有効に変更してください)。 管理ポータル > システム管理 > セキュリティ > 監査 > 監査を有効に 次に、アクセスできなくなった原因を探るため、以下のシステムイベントの監査を取得できるように変更します。 #システム管理 #セキュリティ #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 594
記事 Hiroshi Sato · 2021年10月7日 2m read ジャーナルファイルの内容を管理ポータル以外で参照する方法 これは InterSystems FAQ サイトの記事です。ジャーナルファイルのサイズが大きすぎて、管理ポータルで検索やフィルタリング等できない場合、以下の2つの方法で参照することができます。 ① ^JRNDUMP ユーティリティを使用する方法② プログラムで参照する方法 ============================================================ ① ^JRNDUMP ユーティリティを使用する方法 例えば、グローバル参照 ^ABC を含むジャーナルファイルのすべてのレコードを選択する場合は、以下のようになります。 ※以下、すべてのコマンドは %SYS ネームスペースで実行してください。 DO SELECT^JRNDUMP("C:\MyCache\mgr\journal\YYYYMMDD.001","","","^ABC",1) #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 282
記事 Hiroshi Sato · 2021年10月7日 1m read ジャーナルレコード中の「時間」の値について これは InterSystems FAQ サイトの記事です。ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。 ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。 なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。 ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 110
記事 Toshihiko Minamoto · 2021年10月7日 5m read ローカル変数スコープの概要 これは、オンラインドキュメントのさまざまな場所に表示される主題に関する概要であり、主に注釈として表示され、専用の章として表示されることはありません。 むかしむかし、ある所に... おっと、おとぎ話ではありません。 Cachéの初めの頃(それからその前にも)、自分のコードを実行するためのパーティションを用意していたことがあるでしょう。 そのパーティションの一部は、すべてのローカル変数が%、A~Z、a~zでうまくソートされていた領域でした。 また、ローカルに保存する値や情報が何であれ、すべてはそこに保存されており、パーティションでどんなコードを実行する場合でも、可視状態であり、利用することができました。 完全なドキュメントと優良な規律をもって共同作業できている開発者チームであれば、問題はありません。 [残念ながら、これをおとぎ話にしてはいけません]。 #初心者 #Caché #InterSystems IRIS 0 0 0 194
記事 Hiroshi Sato · 2021年10月5日 2m read Webゲートウェイ/CSPゲートウェイの設定管理ページにどのクライアントからもアクセスできるようにする これは InterSystems FAQ サイトの記事です。Web/CSPゲートウェイ管理ページは、通常クライアントマシンからアクセスできないように構成されています。 任意のクライアントからアクセスするためには以下の操作を行います。 Web/CSPゲートウェイ管理ページにアクセス可能なシステムからブラウザを起動し、管理ポータルにアクセスします。管理ポータル>システム管理>構成>の所でCSPゲートウェイ管理をクリックします。表示されるページの左ペインに表示されるデフォルトパラメータをクリックします。 システム管理マシンの所に*.*.*.*と入力し、設定を保存ボタンを押下げます。 しかしながら任意のクライアントから管理ページにアクセスできるようにするのはセキュリティの観点からはあまりお勧めできません。アクセスできるクライアントはなるべく限定することをお勧めします。クライアントアドレスの指定方法としては、以下のような指定形式があります。 #CSP #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 292