記事
· 2020年10月8日 2m read
概要 npm-iris

npm-iris とは何ですか?

N.P.Mは "No Project Mess "の略です。

N.P.M.は、InterSystems IRISとBootstrap 4を使用したプロジェクト&タスク管理アプリです。

No Project Messは、シンプルで直感的なプロジェクトとタスクの管理ソフトウェアで、開発者や中小企業が日々の複雑な問題を軽減できるように作成されています。

スプレッドシート、カンバン、カレンダー、ガントチャートなど、タスクのためのさまざまなビューを提供しています。

0 2
0 122

InterSystems 製品のキットには Apache Web サーバが含まれています。
これにより、お客様が外部Webサーバをインストールせずに Caché/IRIS 管理ポータルを動作させる為の便利な方法を提供しています。
ただし、このWebサーバを実稼働インスタンスに使用しないでください。お客様は、システムに応じたニーズとセキュリティ/リスク要件に適合するWebサーバを別途インストールする必要があります。

0 0
0 122

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

システムのパフォーマンスが低下した場合、OSやインターシステムズ製品の様々なツールを使用して情報収集を行い
  ”通常時と比較して、どこがどの程度変わっているか”
を確認することで、問題のある箇所を特定できます。
(逆に、通常時の状況が不明な場合、パフォーマンス問題点の切り分けが非常に困難となる場合もあります。)

いざ という時に備え、通常時のパフォーマンスを確認することは、大変重要な情報となります。


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

0 0
0 122

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

アプリケーションに求められる要件は日々複雑化しています。

しかし、複雑化するからといって開発のスピードおよび実行時のスピードが遅くなることは許されません。

複雑な要件を満たすために現在主流の手法ではソフトウェアスタック上の様々な部品(ミドルウェア、ライブラリ、フレームワークなど)を組み合わせる方法を取ります。

この方法は、様々なものを学習するための時間、それらを連携する方法、経年で様々なものが進化していくことに伴って各部品間の関係性が変化するためにそれらを維持管理していくための手間など様々な付帯的な作業が必要です。

結果として本来行いたいことに集中して取り組む前に付随する作業に忙殺されることになり開発生産性があがりません。
しかも実行時にも様々な部分が連携するためのオーバーヘッドを避けることができず期待する性能を確保することも困難になります。

0 0
0 121

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

現ジャーナルファイル名の取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileName()


現ジャーナルファイルの使用量bytesの取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileOffset()


実行例は以下の通りです。

0 0
0 121

インターシステムズは、InterSystems IRIS® および Caché が、Windows 上でラージ・ページが割り当てられていることを示しているにもかかわらず、その利点を利用しないことがある問題を修正しました。この問題は、システム・パフォーマンスに悪影響を及ぼす可能性があります。

0 0
0 121

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

クラス定義のプロパティの表示順は、スタジオのプロパティウィザードを利用して登録した場合は、末尾に追記されます。

また、エディタ上の任意の場所でプロパティ定義文を記述する場合は、その場所に追記され、クラス定義が登録されます。


つまり、定義者が記述した順番に登録されます。

(スタジオが並び換えを行ったりはしません。)

作成したクラス定義が、PersistentやSerialのようにデータベースに格納する属性を持ったクラス定義である場合、”初回のコンパイル”で クラス定義に対応するグローバル変数の定義情報=ストレージ定義を作成します。

初回コンパイル以降に、プロパティ定義の追加が行われれば、そのプロパティに対応するグローバル変数のスロット番号を、末尾に追加し、ストレージ定義を更新します。

以下の例は、クラス定義に対応するストレージ定義の例です。

(初回コンパイル時の状態)

0 0
0 119

前回の記事では、データの変更を簡単に記録できる方法をお見せしました。 今回は、監査ログが記録されるデータ構造と監査データを記録する「Audit Abstract クラス」を変更しました。

また、データ構造は親構造と子構造に変更し、それぞれに「トランザクション」とそのトランザクションで「その値によって変更されたフィールド」を記録するテーブルが 2 つ設けられます。

新しいデータモデルをご覧ください。

「監査クラス」から変更したコードをご覧ください。

0 0
0 118

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

ユーザ定義エラーとして使用したいエラーコードと対応するメッセージを記述したXMLを用意します。

なお、エラーコードは負の整数で設定してください。

<?xml version="1.0" encoding="UTF-8" ?> 
<MsgFile Language="ja">
  <MsgDomain Domain="UserErrors">
    <Message Id="-111" Name="MyError">エラーが発生しました</Message> 
    <Message Id="-222" Name="MyError2">エラーが発生しました2</Message> 
  </MsgDomain>
</MsgFile>

XML ファイルが作成できたら使用したいネームスペースにロードします。

1 0
0 117

数年ほど前、Caché Foundationsの講座(現「Developing Using InterSystems Objects and SQL」)において、%UnitTestフレームワークの基礎を講義していたことがあります。 その時、ある受講者から、ユニットテストを実行している間に、パフォーマンス統計を収集できるかどうかを尋ねられました。 それから数週間後、この質問に答えるために、%UnitTestの例にコードを追加したのですが、 ようやく、このコミュニティでも共有することにしました。

0 0
0 117

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

バックアップ先に、共有フォルダを指定することは可能ですが、推奨しません。

バックアップの最終フェーズのDBアクセスを禁止する箇所で万一ネットワークエラー等で、バックアップがハングアップすることがあれば、システム全体に影響が及ぶリスクがあります。

1 0
0 115

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

ミラーリングが同期の対象とするのはデータベースファイルのみです。

アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、

  1. NASなどを導入して共有ディスク上にそれらのファイルを配置する方法
  2. または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法

などの方法が考えられます。

また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。

0 0
0 114
記事
· 2021年7月1日 5m read
便利な自動生成メソッド

クラスのコンパイル時に、定義済みのプロパティ、クエリ、またはインデックスごとに対応する複数のメソッドが自動的に生成されます。 これらのメソッドは非常に便利です。 この記事では、その一部について説明します。

0 0
0 114

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

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

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


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

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

0 0
0 114

Caché と InterSystems IRIS データベースの整合性は、システム障害から完全に保護されてはいますが、物理ストレージデバイスが保管しているデータは、デバイスの障害によって破損してしまいます。 そのため、多くのサイトでは、データベースの整合性チェックを定期的に実行するように選択しており、特に特定のバックアップが災害時に信頼できるかどうかを検証するためにバックアップが行われています。 システム管理者がストレージの破損を伴う災害に対応するために、整合性チェックも緊急に必要となる場合もあります。 整合性チェックはチェックされているグローバルの各ブロック(すでにバッファーにない場合)を、グローバル構造で指示された順序で読み取る必要があります。 これには膨大な時間がかかりますが、整合性チェックは、ストレージサブシステムが維持できる限り高速に読み取ることができます

1 0
0 114

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

バージョンアップ後、ルーチンを再コンパイルする必要はありませんが、バージョンアップで %SYS が上書きされるため、%SYS 内のユーザ作成 INT 形式および OBJ 形式ルーチン(*.INT,*.OBJ)が削除されますので、注意が必要です。

MAC形式(.MAC)と以下の名前の INT 形式および OBJ 形式ルーチンについては削除されません。

  • %Z*.INT, %z*.INT, Z*.INT,z*.INT
  • %Z*.OBJ, %z*.OBJ, Z*.OBJ,z*.OBJ

なお、クラス/CSP はアップグレード後にコンパイルが必要となります。

ただし、メンテナンスリリースへのアップグレードの場合は、コンパイルは不要です。詳細は、以下ドキュメントをご参照ください。

0 0
0 114

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

デフォルトではテーブルのカラムの順番はシステムが自動的に決定します。

順番を変更するにはクラス定義を行う際にプロパティ・キーワード SqlColumnNumber でプロパティ毎に明示的に順番を設定してください。

例:

Property Name As %String [SqlColumnNumber = 2];


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

0 0
0 113

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

InterSystems IRIS Business Intelligence 用メニューの Analytics(または DeepSee)を使用するためには、使用するネームスペース用ウェブアプリケーションパスを Analytics(またはDeepSee)に対応するように設定変更する必要があります。

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

【IRIS】
InterSystems IRIS Business Intelligence の Web アプリケーション設定について

【2015.1~2018.1】
DeepSee の Web アプリケーション設定について

【~2014.1】
%CSPページへのアプリケーション・アクセスの制御について/特殊なケース: DeepSee

0 0
0 113

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

答え:必要ありません。

InterSystems 製品では、クライアント機能用に特別なライセンスを設けておりません。

通常のサーバーライセンス(サブスクリプションを含む)を保有していれば、そのサーバーライセンスで許容しているキャパシティに応じて、複数のクライアントシステムにクライアント機能をインストールして利用することができます。

0 0
0 111
記事
· 2020年11月16日 1m read
メソッドのオーバロードについて

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

InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。

InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。

ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。

従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。

Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、

ClassMethod test(args... as %String)

のように引数の後ろに ... を付加します。

0 0
0 111

最初の記事では、RESTForms(永続クラス用のREST API)について説明をしました。 基本的な機能についてはすでに説明しましたが、ここではクエリ機能を中心とする高度な機能について説明します。

  • 基本クエリ
  • クエリ引数
  • カスタムクエリ

クエリ

クエリを使用すると、任意の条件に基づいてデータの一部を取得できます。 RESTFormsには、2種類のクエリがあります。

0 0
0 111

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

ミラー構成削除時に、ミラー・データベースのミラー属性を削除するオプションを指定しないと、通常データベースに戻すことができず、次回マウント時に読み取り専用でデータベースがマウントされます。 読み書き可能なデータベースに戻すためには、システムルーチン ^MIRROR を使用してミラー属性を削除する必要があります。
手順は以下のとおりです。(%SYSネームスペースで実行します。)

0 0
0 111

IRISアップグレードやインストールがうまくいかない場合、初めに以下の4点をご確認ください。

  1. インストーラーに問題はないか?
  2. 対象バージョンの最新インストーラー(キット)を使用しているか?
  3. サポート対象プラットフォームへのインストールを行っているか?
  4. インストールディレクトリパスに日本語を含んでいないか?

★1について
インストーラーのダウンロードに問題があったなどで、インストーラー自体に問題があり、インストールできないというケースがあります。
その場合は、インストーラーのハッシュ値(md5 checksum)を比較してファイルの同一性を確認するか、再ダウンロードしてインストールをお試しください。

2 0
0 110

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

ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。

ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。

なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。

ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。

0 0
0 106

以下の2つの方法でセキュリティ設定をエクスポートおよびインポートできます。

- コマンドラインで行う場合は、^SECURITYユーティリティを使用します。
- プログラムで行う場合は、SecurityパッケージのExportおよびImportメソッドを使用します。

設定をエクスポートする方法:

◆コマンドラインで設定をエクスポートする方法(^SECURITY)

セキュリティの全ての設定、または個々のセクションをエクスポートできます。


^SECURITYを使用して、すべてをエクスポートする場合:

^SECURITYを使用すると、インスタンスのすべてのセキュリティ設定を簡単にエクスポートまたはインポートできます。
ターミナルで %SYS ネームスペースに移動し、^SECURITYを開始します。

1 0
0 106

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

マップされたクラス・ルーチンも含めてコンパイルする場合は、コンパイラ修飾子に "/mapped=1" もしくは "/mapped" を指定します。 例えば、以下のように行います。

【例1】クラスリストを取得してコンパイル

do $System.OBJ.GetClassList(.list,"/mapped")
// build your list starting from .list
do $System.OBJ.Compile(.list)

【例2】全てのクラスをコンパイル

0 0
0 104

これまでに何度もコードカバレッジとコードのパフォーマンス最適化について説明してきたため、ほとんどの方はすでにSYS.MONLBLユーティリティについてご存知かと思います。 コードを視覚的に見る方が通常は、純粋な数値を見るよりもはるかに直感的に理解できます。これが、このシリーズの記事の大きなポイントです。 今回は、Pythonとそのツールから少し離れて、^%SYS.MONLBLレポートからヒートマップを生成する方法を探りたいと思います。

簡単に言うと、ヒートマップは特定の値を色で表現してデータの要約を得ることに特化した視覚化ツールです。 このケースでは、データはコード行であり、コード行に掛けられた時間が色にマッピングされます。

1 0
0 102

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

残念ながら良い方法はありません。

もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。

一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。

ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。

0 0
0 101

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

グローバル単位でジャーナルのON/OFF設定を行いたい場合は、グローバルマッピング設定で、
 ・ジャーナルしたいグローバル ⇒ ジャーナルON(「はい」)のデータベースにマッピング
 ・ジャーナルしたくないグローバル ⇒ ジャーナルOFF(「いいえ」)のデータベースにマッピング
と、分けることで可能です。 但し、通常のデータベースは、ジャーナルOFF設定であっても、トランザクション中の更新についてはジャーナルファイルに記録されます。

1 0
0 100