記事 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 305
記事 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 470
記事 Hiroshi Sato · 2021年11月11日 1m read ODBCのクエリタイムアウトを回避する方法 これは InterSystems FAQ サイトの記事です。 タイムアウトを無効にするためには、DSNの設定でクエリタイムアウト無効に設定します。 Windowsコントロールパネル > [管理ツール] > [データソース(ODBC)] > [システムDSN]の構成 で クエリタイムアウト無効 にチェックを入れますと、タイムアウトは無効になります。 アプリケーション側で変更する場合は、ODBC APIレベルで設定することが可能です。 ODBCのSQLSetStmtAttr関数をコールする際に、SQL_ATTR_QUERY_TIMEOUT属性を設定してから、データソースに接続してください。 #ODBC #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 10K
記事 Hiroshi Sato · 2021年11月11日 1m read バックアップ先に共有フォルダを指定できますか? これは InterSystems FAQ サイトの記事です。 バックアップ先に、共有フォルダを指定することは可能ですが、推奨しません。 バックアップの最終フェーズのDBアクセスを禁止する箇所で万一ネットワークエラー等で、バックアップがハングアップすることがあれば、システム全体に影響が及ぶリスクがあります。 #バックアップ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 133
記事 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 452
記事 Toshihiko Minamoto · 2021年11月9日 18m read 別のIRISメッセージビューワを作成する IRISインターオペラビリティのメッセージビューワで何かを変更できるとしたら、何を変更しますか? #Docker #ObjectScript #InterSystems Package Manager (IPM) #ビジネスオペレーション #ビジネスサービス #メッセージ検索 #相互運用性 #Ensemble #InterSystems IRIS Open Exchange app 0 0 0 213
記事 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.2K
記事 Hiroshi Sato · 2021年10月27日 1m read ターミナルでSQLを実行する方法 これは、InterSystems FAQサイトの記事です。$system.SQL.Shell() を使用します。 以下にサンプルを示しますので参考にしてください。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 626
記事 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 269
記事 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 131
記事 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 212
記事 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 290
記事 Hiroshi Sato · 2021年10月18日 1m read テーブル名(クラス名)やカラム名(プロパティ名)の命名規約について これはInterSystems FAQ サイトの記事です。命名規約については、それぞれ下記のドキュメントページをご確認ください。 テーブル名(クラス名)について 識別子のルールとガイドライン - クラス カラム名(プロパティ名)について 識別子のルールとガイドライン - クラス・メンバ #コーディングのガイドライン #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 694
記事 Hiroshi Sato · 2021年10月14日 2m read 文字コードを変換するときに利用できる変換テーブル名を取得する これはInterSystems FAQ サイトの記事です。文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。 Write $$GetIONames^%SYS.NLS() 現在のロケールにおいて各デバイス(ファイル、ターミナル等)のデフォルトの変換テーブル名を取得するには、%SYS.NLS.Table クラスを使用します。 確認方法は以下の通りです。 (1) システムデフォルト設定を取得するため、%SYS.NLS.Table のインスタンスを生成します。(引数に、"System" を指定します。) #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 451
記事 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 183
記事 Hiroshi Sato · 2021年10月12日 1m read DBリストア手順 これはInterSystems FAQ サイトの記事です。^BACKUP ユーティリティを使用して、DBリストアする方法をご紹介します。 添付のドキュメントでは、オンラインバックアップ と レガシー並行外部バックアップ の2種類のバックアップからのリストア処理の方法を紹介しています。 リストア処理の詳細は、下記ドキュメントページを参照してください。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 219
記事 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 267
記事 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 718
記事 Megumi Kakechi · 2021年10月8日 1m read ターミナルでプログラム実行中にエラーが発生した際、プロンプトを元に戻す方法 これは InterSystems FAQ サイトの記事です。 ターミナルでルーチンを実行し、プログラム上でエラーが発生した時に、エラートラップを適切に設定していない場合、以下のようなデバッグモードになります。 USER>do ^error1 write A^a+2^error1 *AUSER 2d0> この状態から、ルーチン起動の前の状態に戻るにはQuitコマンドを入力します。 USER 2d0>Quit またエラーが発生したルーチン内でトランザクション処理を行なっている場合には、以下のような表示のプロンプトになります。 #ターミナル #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 386
記事 Hiroshi Sato · 2021年10月7日 3m read ジャーナルファイルの内容を管理ポータル以外で参照する方法 これは InterSystems FAQ サイトの記事です。ジャーナルファイルのサイズが大きすぎて、管理ポータルで検索やフィルタリング等できない場合、以下の2つの方法で参照することができます。 ① ^JRNDUMP ユーティリティを使用する方法② プログラムで参照する方法 ============================================================ ① ^JRNDUMP ユーティリティを使用する方法 例えば、グローバル参照 ^ABC を含むジャーナルファイルのすべてのレコードを選択する場合は、以下のようになります。 ※以下、すべてのコマンドは %SYS ネームスペースで実行してください。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 1 0 370
記事 Hiroshi Sato · 2021年10月7日 1m read ジャーナルレコード中の「時間」の値について これは InterSystems FAQ サイトの記事です。ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。 ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。 なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。 ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 147
記事 Toshihiko Minamoto · 2021年10月5日 2m read Ensembleで大量のメッセージを再送信するには メッセージビューアはメッセージを再送信できますが、大量(>100件)のメッセージを再送信するには適していません。 それを行うには、以下のようなCache Object Scriptコードを使用する必要があります。 Class Sample.Resender Extends %RegisteredObject{ #Code Snippet #Ensemble 0 0 0 93
記事 Hiroshi Sato · 2021年10月5日 2m read Webゲートウェイ/CSPゲートウェイの設定管理ページにどのクライアントからもアクセスできるようにする これは InterSystems FAQ サイトの記事です。Web/CSPゲートウェイ管理ページは、通常クライアントマシンからアクセスできないように構成されています。 クライアントからその管理ページにアクセスすると、以下の様なメッセージが返ってきます。 システム管理 このシステムを使用する権限がありません。 Not authorized to use this facility. You are not authorized to use this facility. 任意のクライアントからアクセスするためには以下の操作を行います。 Web/CSPゲートウェイ管理ページにアクセス可能なシステムからブラウザを起動し、管理ポータルにアクセスします。 管理ポータル>システム管理>構成>の所でCSPゲートウェイ管理をクリックします。 #CSP #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 419
記事 Hiroshi Sato · 2021年9月30日 1m read データベースファイルのタイムスタンプ(更新日時)の更新タイミング これは InterSystems FAQ サイトの記事です。IRIS.DAT/CACHE.DATのタイムスタンプ更新は、データベースの内容の更新後のディスマウント時 (明示的なディスマウント処理または停止処理の際、 または、 データベースファイルのサイズ拡張時に発生します。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 145
記事 Hiroshi Sato · 2021年9月29日 2m read プログラミングでタスクスケジュールを登録・参照する方法 これは InterSystems FAQ サイトの記事です。こちらでは、タスクスケジュールを登録・参照するサンプルコードをご紹介します。 ①タスクスケジュール登録のサンプル ※毎日 am1:00に do ^TEST を実行するタスクを作成します。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 302
記事 Toshihiko Minamoto · 2021年9月28日 3m read DSTIMEでデータを同期する Cachéでのデータ同期については、オブジェクトとテーブルを同期させるさまざまな方法があります。 データベースレベルでは、シャドーイングまたはミラーリングを使用できます。 これは非常によく機能し、データの一部分だけを同期する必要がある場合には、 グローバルマッピングを使用してより小さなピースにデータを分割することができます。 または、クラス/テーブルレベルで双方向の同期が必要な場合には、オブジェクト同期機能を使用することができます。 これらすべての優れた機能には次のような制限があります。Caché/IRISからCaché/IRISにしか機能しません。 #データベース #分散データ管理 #相互運用性 #Caché #Ensemble #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 211
記事 Megumi Kakechi · 2021年9月27日 1m read Windows Serverのリリースの違いは、サポートバージョンに影響しますか? これは InterSystems FAQ サイトの記事です。 インターシステムズは、特定のオペレーティングシステムのバージョンの特定リリースに対して、製品の検証は実施しておりません。 特定リリースとは、例えば、Windows Server 2003 R2やWindows Server 2008 R2などを指します。 これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。 特別な状況の詳細は、下記弊社ホームページのサポート情報に明記しています。 最新プラットフォーム情報とリリースノート 明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、特定リリースもサポート対象となります。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 193
記事 Hiroshi Sato · 2021年9月26日 3m read リストコレクションを定義したプロパティに対するSQLアクセス方法 これは InterSystems FAQ サイトの記事です。リストコレクション(Property XXX As list of %String;)で定義したプロパティは、SQL関数: $LISTBUILD() 、$LISTFROMSTRING() を使用して操作できます。 各SQL関数については、下記ドキュメントページをご参照ください。 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 227
記事 Mihoko Iijima · 2021年9月24日 3m read 任意のSQL文の実行結果をプログラムでCSVに出力する方法 これは InterSystems FAQ サイトの記事です。 システムユーティリティクラスを利用したプログラムを作成することで出力できます。 【注意1】出力データの区切り文字がカンマではなくタブで出力されます点、ご注意ください。 【注意2】エクセルでタブ区切りのファイルを開くため、エクセルの開くメニューから出力したファイルを開いてください。 処理概要は以下の通りです。 1) %SYSTEM.SQL クラス(※)の Execute() メソッドを使用します。 第1引数:SQL文を指定します。 第2引数:内部日付が格納されている場合 yyyy-mm-dd で出力されるように表示モードを切り替えます。(1:odbcモード) 詳細は下記ドキュメントページおよびクラスリファレンスをご参照ください。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 946
記事 Hiroshi Sato · 2021年9月23日 1m read レコードマップで何ができるか? これは InterSystems FAQ サイトの記事です。レコード・マップは、区切り文字付きのレコードや固定幅のレコードを含むファイルをInteroperability機能で使用するメッセージクラスへマッピングしたり、Interoperability機能のメッセージクラスからテキストファイルへマッピングする作業を効率的に行うための機能です。 レコードマップのマッピング定義は管理ポータルで作成でき、CSVファイルを読み込ませながら定義するCSVレコードウィザードも提供しています。 プロダクションでレコードマップを利用する場合は、レコードマップ用ビジネス・サービス、またはビジネス・オペレーションを追加し、作成したレコードマップ定義クラスを指定すれば完成です。 使用例は、以下から取得できます。 レコードマップサンプル #ヒントとコツ #相互運用性 #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 307