記事 Hiroshi Sato · 2024年3月18日 1m read $ZF(-100) で呼び出した外部プロセスがハングしてしまった場合のIRISプロセスの終了方法 これは InterSystems FAQ サイトの記事です。 $ZF(-100)で外部コマンドを実行する場合、その外部コマンドの子プロセスからの応答が返らない限り、$ZF(100)コマンドを発行したIRISプロセスはその応答を待って残り続けます。 従ってIRISプロセスを終了させるためにはその応答がない子プロセスを強制終了させる必要があります。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 77
記事 Hiroshi Sato · 2024年3月18日 1m read SQLベンチマークプログラム InterSystems IRISのSQLの性能を評価する簡単なベンチマークテストを公開します。 また、このベンチマークプログラムで測定した過去の様々なハードウェアでのベンチマーク結果も公開します。 ハードウェアの進歩、インターシステムズの新しいテクノロジーの追加や性能改善によって、性能が劇的に変化しています。 現在のハードウェアの性能を考慮すると、少し物足りない感じが否めないですが、過去との結果の公正な比較という意味であえて、データの規模に関しては過去と同一条件でベンチマーク実施した結果となっています。 データの規模に関してはデータ件数を増やすことで変更できるようになっています。(現時点では500万件) またこのベンチマークプログラムはインターシステムズ製品用に実装されていますが、使用しているテーブル構造は比較的シンプルなもので、また使用しているSQL文も標準的なものなので、他データベースシステムでも同じベンチマークを実施することはそんなに困難ではありません。 ベンチマークプログラムのリポジトリ #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 72
記事 Hiroshi Sato · 2024年1月9日 1m read CSPアプリケーションをReactを使って書き換えるその5 最後にCSP機能の中でReactでうまく置き換えできなかった処理について紹介します。 該当する処理は、サーバー上の商品データに含まれるその商品の画像データ(GIF形式)を取得して、ブラウザにイメージとして描画させるものです。 CSPにはStreamServer.clsというサーバー側で動作する機能が用意されています。 この機能を使ってデータベース上に格納されているストリームデータをHTML IMGタグで処理できる形式に変換してくれます。 StreamServer機能を使って画像を表示する処理 Reactで同様の機能を実現する方法が見つからなかったため(そもそもReactはサーバーサイドではなくクライアント上の技術なので)、データベース内に格納されているイメージを取得するのではなく、静的なイメージファイルをウェブサーバーが参照可能な場所に置くことで解決しました。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 99
記事 Hiroshi Sato · 2024年1月5日 1m read インストール時に指定する初期セキュリティ設定について これは InterSystems FAQ サイトの記事です。 インストール時に選択できる初期セキュリティ設定のレベルには以下の3つがあります。※バージョンにより、表記(日本語/英語)が違う場合があります。 最小 (Minimal) 通常 (Normal) ロック・ダウン (Locked Down) 各レベルの違いの詳細は以下の資料をご確認ください。 セキュリティの説明資料 #セキュリティ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 74
記事 Hiroshi Sato · 2023年12月26日 3m read CSPアプリケーションをReactを使って書き換えるその4 IRIS側の処理は、IRISでREST APIを実装する方法を理解していれば、簡単です。 前回のログイン処理でユーザー認証をIRIS側でどのように実装されているか確認して見ましょう。 まずはディスパッチクラスの定義です。 Shop.Brokerというクラスの中で定義されています。 checkpasswordというメソッドが最後に定義されていて、最終的にShop.Rest.Customer:checkPasswordという(クラス)メソッドが呼ばれているのがわかると思います。 ここで定義しているパラメータは、とりあえずおまじない的に含めておくことをお勧めします。 (説明し出すと少し長くなるので) #CSP #React #REST API #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 121
記事 Hiroshi Sato · 2023年12月26日 7m read CSPアプリケーションをReactを使って書き換えるその3 それでは、今回はより具体的にReact開発方法について解説します。ショップデモのリポジトリの配下にreactというディレクトリがあります。 この下にReactのコードがあります。 ここのreact-setup.mdに記載されている通り、前準備としてreactのテンプレートを作ります。 npx create-react-app shopdemo --template typescript あとはこのReactプロジェクトを動かすためのライブラリのインストールを行います。 詳細は、react-setup.mdに書いてあります。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 226
記事 Hiroshi Sato · 2023年12月26日 4m read CSPアプリケーションをReactを使って書き換えるその2 CSPを使って作成したアプリケーションをReactを使用して書き換える2回目の記事です。 前回の記事で紹介したショップデモの書き換えについてもう少し詳しく説明します。 まずReactについて、インターネット上に様々な情報が提供されていますので、それらを利用しながら学習するということも可能だとは思いますが、一方で学習時間を短縮するには、やはりReactについて説明した本を一通り読む方が速いのではないかと思います。 実際Reactに関する本はたくさんあるので、その中から自分に合いそうなものを選ぶのが良いかと思います。 ちなみに参考までに私が学習に使ったものは、以下です。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 160
記事 Hiroshi Sato · 2023年11月13日 2m read CSPアプリケーションをReactを使って書き換えるその1 CSPは非推奨機能となり、今後の新規アプリケーションの開発には使用しないことが推奨されています。 代わりに昨今のウェブアプリケーション開発に広く利用されているモダンなフレームワークの使用が推奨されています。 Webアプリケーション開発用のJava scriptフレームワークはたくさんあり、そのどれを選択するかは開発者の好みの問題です。 その中で比較的人気の高いReactを使って、CSPアプリケーションを書き換えた例について紹介します。ちなみにCSPは機能的には2つの側面があり、今回非推奨となったのは、HTMLをサーバー側で生成するための拡張機能を使ったプログラミングに関連する部分です(.cspファイルを使用したHTMLとサーバーサイドプログラミング、Javascriptプログラミングによる開発)。 HTTP通信のインフラの部分(リクエストオブジェクトやセッション管理など)は引き続きIRISの根幹を支える機能として残ります。 実際、現在のIRISのREST関連機能は、このインフラ上で実装されています。 #CSP #React #InterSystems IRIS #InterSystems IRIS for Health 5 1 1 276
記事 Hiroshi Sato · 2022年10月14日 2m read CachéでCache Directエミュレータを使っているアプリケーションをIRISのCache Directエミュレータに書き換える方法 IRISでは.Net Binding機能が非推奨になったため、VisM.OCXの置き換えのために用意していたCaché版Cache Directエミュレータ(.Net Binding機能を使用していたため)の使用も非推奨となりました。そこでIRISのNative API機能を使用して書き換えたものを作成し、OpenExchange(以下のFAQトピックを参照してください)に登録しています。 FAQのトピック Caché版Cache Directエミュレータを使っているアプリケーションをIRISに移行するためには、IRIS用のCache Directエミュレータに置き換えて、アプリケーションのコードをいくつか書き換える必要があります。 内容は、それぞれのプロジェクトに含まれるコンソールアプリケーションサンプル(consoleApp.cs)を比較することで大体理解できると思いますが、以下にその手順について説明します。 #.NET #ヒントとコツ #Caché #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 1 0 0 294
記事 Hiroshi Sato · 2022年8月28日 1m read 特定のテーブルデータのみをロールバックしないようにする これは InterSystems FAQ サイトの記事です。 実行ログデータなどトランザクション中にロールバックが発生しても前の状態に戻ってほしくないデータがあります。 それらのデータをロールバックされないデータベースIRISTEMPに配置することで上記の要件に対応できます。 一時グローバルと IRISTEMP データベース ロールバックさせたくないテーブルの実体をこのデータベースにマッピングすることでロールバック後に情報を残すことができます。 ただし、このデータベースはIRIS再起動で内容がクリアされますので、永続的に保持したい場合には、いずれかのタイミング(ロールバック後等)で永続テーブルにコピーを行う必要があります。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 238
記事 Hiroshi Sato · 2022年8月22日 1m read 正規表現を使ってパターンに一致した部分文字列を取得する方法 これは InterSystems FAQ サイトの記事です。 正規表現を使用する$Locate()関数がご使用いただけます。 正規表現の使用方法 使用方法の例は以下の様になります。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 201
記事 Hiroshi Sato · 2022年8月8日 1m read TCP アダプタの StayConnected の設定に関する注意点 これは InterSystems FAQ サイトの記事です。 TCP アダプタを使用するビジネスホストの [接続中を維持(StayConnected)]と[プールサイズ(PoolSize)]のデフォルト設定値は以下の通りです。 StayConnected = -1(常時接続タイムアウト無し)PoolSize = 1 ネットワークの問題でビジネスホストへの接続が切断された場合に、プロダクション側では切断されたことを検知できないため新しい接続を受け付けません。 またこの状況の時、イベントログにも記録されません。 StayConnected が デフォルト値(-1)の場合、接続がタイムアウトしないため新しい接続を受け付けるためには、ビジネスホストを再起動する必要があります。 #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 149
記事 Hiroshi Sato · 2022年8月8日 1m read コンソールログにメッセージを書く方法 これは InterSystems FAQ サイトの記事です。 コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。 以下に例を示します。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 131
記事 Hiroshi Sato · 2022年8月1日 1m read ユーザーがブラウザの閉じるボタン(Xボタン)を押してCSPページを終了した時にサーバで検知する方法 これは InterSystems FAQ サイトの記事です。 残念ながら良い方法はありません。 もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。 一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。 ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 156
記事 Hiroshi Sato · 2022年7月25日 1m read InterSystems ObjectScriptの型キャストサポートについて これは InterSystems FAQ サイトの記事です。 ObjectScript言語は、Java言語等がサポートしている型キャストをサポートしていません。 ただし、メソッドのキャストはサポートしています。 詳細は以下ドキュメントページをご参照ください。 メソッドのキャスト【IRIS】メソッドのキャスト #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 180
記事 Hiroshi Sato · 2022年7月25日 1m read ミラーリングでデータベース以外のファイルを同期する方法 これは InterSystems FAQ サイトの記事です。 ミラーリングが同期の対象とするのはデータベースファイルのみです。 アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、 NASなどを導入して共有ディスク上にそれらのファイルを配置する方法 または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法 などの方法が考えられます。 また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 159
記事 Hiroshi Sato · 2022年7月20日 2m read IRISの開始/停止の状態をファイルに出力する方法 irisコマンドのqlistまたはlistを使用して出力先をファイルにして出力することができます。 qlistの結果は、^を区切り文字としたテキスト形式で出力されます。 ^で区切られた3番目の部分に稼働状況のデータがあります。 $ iris qlist IRIS > iris.log $ cat iris.log IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris listの場合には、先頭にstatus:と表示された行に稼働状況のデータがあります。 Unix系のOSの場合 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 124
記事 Hiroshi Sato · 2022年7月20日 2m read タスクの起動でエラーが発生した時にメールで通知する方法 タスク成功時・失敗時、それぞれ通知メールを送信することができます。 そのためには事前にターミナルからTASKMGRルーチン を実行して、メールサーバを登録する必要があります。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 553
記事 Hiroshi Sato · 2022年7月11日 2m read ルーチンやクラスメソッドをWindowsのコマンドプロンプトから呼び出す方法 iris コマンドを使用することで実行できます。iris コマンド(iris.exe)は、<インストールディレクトリ>\bin にインストールされています。 書式: iris run インスタンス名 tag^routine([parameter-list]) ネームスペース名 iris run インスタンス名 ##CLASS(package.class).method([parameter-list]) ネームスペース名 インスタンス名は、管理ポータル(システム管理ポータル)の右上にある [インスタンス:] に表示されている文字列です。 #システム管理 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 549
記事 Hiroshi Sato · 2022年7月11日 3m read InterSystems IRISをインストールする場合の最低システム要件 CPU:サポート対象OSが問題なく動作するもの以下のページをご参考ください。 サポート対象プラットフォーム ディスク容量:アプリケーションの要件を除外した場合、 IRISをインストールするためには、最低1.5GB以上の空き容量が必要です。 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 555