検索

クリアフィルター
記事
Tomoko Furuzono · 2020年11月24日

管理ポータルのライセンス使用量のページに表示される値の意味

これは、InterSystems FAQサイトの記事です。 (a) 現在使用中のライセンス数:現時点のライセンスユニット使用数です。 (b) 最大ライセンス使用:インスタンスが起動した後、現在に至るまでで最もライセンス使用の大きかった時点の            "現在使用中のライセンス数"です。 (c) 許可されたライセンス数(Cache.Key/iris.keyの値):該当システムで許可されている最大ライセンスユニット数です。 (d) 現在の接続:現時点のクライアントからの接続数です。 (e) 最大接続:インスタンスが起動した後、現在に至るまでで最も接続数の大きかった時点の"現在の接続"です。
記事
Hiroshi Sato · 2021年2月1日

スタジオでグローバルをインポート/エクスポートする方法

これは InterSystems FAQ サイトの記事です。 ドキュメント上は明確に記述されていませんが、エクスポートの追加ボタンを押した時に表示されるファイルダイアログのファイル名にグローバル名 + .GBLと入力することでグローバルをエクスポートの対象にすることができます。(例: ^aaaの場合、^aaa.gblと指定) この機能はクラス、ルーチン等と一緒にグローバルデータを一括してエクスポート/インポートする際に、便利な機能ですが、XMLで表現されるため、データ容量は実データに比較し大きくなりますので、大量データを処理する場合には必要な容量に注意が必要です。
記事
Mihoko Iijima · 2020年12月20日

データベース以外のファイルをミラーリングで同期する方法があるのかどうか

これは InterSystems FAQ サイトの記事です ミラーリングが同期の対象とするのはデータベースファイルのみです。 アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、 NASなどを導入して共有ディスク上にそれらのファイルを配置する方法 または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法 などの方法が考えられます。 また、2の方法では Windows 上では RoboCopy、Linuxの場合には rsync という同期ソフトを使った実例があります。
記事
Hiroshi Sato · 2021年12月20日

エラーの原因と対処法

これは、InterSystems FAQサイトの記事です。 CSPアプリケーションでは、リクエスト処理時間がサーバー応答タイムアウト値(CSPゲートウェイ管理ページで設定、既定値60 sec)を経過すると、CSPゲートウェイからクライアントブラウザにタイムアウトを通知し、処理を続けているデータプラットフォームサーバプロセスにエラーを発生させます。 エラーが発生している処理を確認して頂き、処理遅延の改善、例えばタイムアウトが発生しないように処理内容を見直して応答時間を短くすることや必要に応じてサーバ応答タイムアウト値を大きくすることで対処可能です。
記事
Megumi Kakechi · 2021年3月25日

Base64文字列でクラスに画像を保存・復元する方法

これは InterSystems FAQ サイト の記事です。 以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。 【使用クラス】 Class User.test Extends %Persistent { Property pics As %GlobalBinaryStream; } 【取込み時】 set x=##class(User.test).%New() // ここに保存 // 画像準備 set file=##class(%File).%New("c:\temp\Mii.png") do file.Open("RUK\BIN\") for { if file.AtEnd=1 quit // 画像を1024 byteずつ Base64形式に変換(エンコード) set cnt=file.Read(1024) set b64=$system.Encryption.Base64Encode(cnt) // b64: 1402byte do x.pics.Write(b64) } do x.%Save() do file.Close() 【上記クラスに保存したBase64から画像復元】 // 復元先ファイル set file2=##class(%FileBinaryStream).%New() do file2.LinkToFile("C:\temp\xx.png") // User.test クラス保存したデータをオープン set x=##class(User.test).%OpenId(1) for { if x.pics.AtEnd=1 quit set b64=x.pics.Read(1402) set cnt=$system.Encryption.Base64Decode(b64) do file2.Write(cnt) } do file2.SaveStream()
記事
Mihoko Iijima · 2021年3月26日

IRISTEMP / CACHETEMP 上のグローバルのみを参照する方法について

これは InterSystems FAQ サイトの記事です。 管理ポータルを使用して確認する場合は、以下の手順で参照できます。 管理ポータル > [システムエクスプローラ] > [グローバル] の画面で、ネームスペースではなく データベース を指定し、IRISTEMP / CACHETEMP データベースを選択すると参照できます。 ターミナル上で確認する場合は、znspace(省略形:zn)コマンドのパラメータとしてネームスペース名ではなく、データベースディレクトリ名を指定することで該当データベースのみに存在するグローバルを参照できます。 IRISTEMP データベース上のグローバルを参照する場合、以下例のように移動します。 USER>zn "^^../IRISTEMP" ..iris\mgr\iristemp\>
記事
Makiko Kokubun · 2021年6月1日

動画:Python エンジニアが IRIS を使う場合の2つの方法と今後の計画

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 IRIS の ObjectScript を使えば、ビジネスロジックの記述からキーバリュー形式のデータ操作まで様々な処理が記述できます。ですが、残念ながら Python のように豊富なライブラリを利用し、機械学習をはじめとする Python が得意とすることまでは単独では行えません。「ObjectScript から Python を呼べたら?」を実現するための計画中機能も含め、IRIS がサポートする Python の利用方法をご紹介します。 この動画の講演資料(PDF)もご用意しました。動画の中でご紹介している技術資料へのURLは、こちらの資料をご活用ください。
記事
Mihoko Iijima · 2021年7月13日

管理ポータルにログインできない場合の確認項目

これは InterSystems FAQ サイトの記事です。 管理ポータル接続時に指定しているWeb サーバポートが正しい番号を指定しているかご確認ください。 Windows にクライアントツールのインストールを行っている場合は、ランチャーに登録している接続サーバの設定に問題がある場合が考えられます。 ランチャー > 優先接続サーバ > 追加/編集 で、接続先の Webサーバポートが正しく設定されているかご確認ください。 Web サーバポートが不明な場合は、インストールディレクトリにある構成ファイル(cache.cpf または iris.cpf)をテキストエディタで開き、“WebServerPort” の項目で確認できます。 例) 【IRIS2018.1~】 WebServerPort=52773 【Caché2009.x~】 WebServerPort=57772 【Caché5.1~2008.x】 WebServer=ON,57772
記事
Makiko Kokubun · 2021年7月6日

動画:Performance 101

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。 稼働後のシステムで、お客様から「パフォーマンスが思ったように出ない」と問い合わせを受けることが良くあります。漠然とした「遅い」状況をどのように解決すればいいのでしょう? パフォーマンスに困ったときにどこに着目し、どのツールで調べていくか、お客様から日々ご相談をいただくカスタマーサポートから、解決に向かうアプローチの「イロハ」をご紹介します。 この他にも、開発者コミュニティでは、パフォーマンスに役立つ技術情報を公開しています。こちらも合わせてご覧ください。
記事
Mihoko Iijima · 2021年9月5日

使用中のライセンス情報を取得する方法

これは InterSystems FAQ サイトの記事です。 %SYSTEM.License クラスのメソッド利用すると、ライセンス情報を取得できます(実行時は、$SYSTEM.License.メソッド名() と記述します)。 %SYSTEM.License クラスは、ライセンスユーティリティ用システムオブジェクトです。 ユーティリティの詳細については、添付資料をご参照ください。(クラス詳細については、クラスリファレンス内 %SYSTEM パッケージ以下 License クラスも併せてご覧ください。) また、ライセンス情報は、管理ポータルからも確認できます。 ライセンスキー情報: [システム管理] > [ライセンス] 以下 ライセンス使用状況: [システムオペレーション] > [ライセンス使用量] 以下
記事
Tomoko Furuzono · 2021年12月7日

UTF-8で保存されたHTMLファイルをリクエストすると、日本語が文字化けする

これは、InterSystems FAQサイトの記事です。 プライベートWebサーバを使用して、HTMLファイルをリクエストした際に、日本語が文字化けする場合があります。その場合には、HTMLファイルをBOM(バイト・オーダー・マーク)付で保存してください。 ※原則的に、プライベートWebサーバを使用してアプリケーションを稼働することは推奨しておりません。 アプリケーション稼働には、必ず、IISやApache等の製品版のWebサーバを使用してください。   プライベートWebサーバについては、以下のドキュメントをご参照ください。 プライベート Web サーバおよび管理ポータル【IRIS】 プロダクション Web サーバおよび Caché 付属のプライベート Web サーバ
記事
Hiroshi Sato · 2022年8月1日

ユーザーがブラウザの閉じるボタン(Xボタン)を押してCSPページを終了した時にサーバで検知する方法

これは InterSystems FAQ サイトの記事です。 残念ながら良い方法はありません。 もし処理の流れとして突然処理を中断されると不都合がある場合には、OnunloadHandler内でalertメソッドにより、Xボタンを押さないように注意を促すようなメッセージを出す方法が考えられます。 一般的には、ユーザ都合で処理中断されてもサーバ側処理内でデータの整合性等に不都合が発生しない様にアプリケーションの実装を行う必要があります。 ページのアンロード時に呼び出されるOnunloadHandler内でサーバ・メソッドを呼び出す方法は様々な問題があるため、使用することはお勧めしません。
記事
Hiroshi Sato · 2022年7月25日

ミラーリングでデータベース以外のファイルを同期する方法

これは InterSystems FAQ サイトの記事です。 ミラーリングが同期の対象とするのはデータベースファイルのみです。 アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、 NASなどを導入して共有ディスク上にそれらのファイルを配置する方法 または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法 などの方法が考えられます。 また、2の方法ではWindows上ではRoboCopy、Linuxの場合にはrsyncという同期ソフトを使った実例があります。
記事
Tomoko Furuzono · 2025年3月31日

IRISのSQLでサポートされているSQLウィンドウ関数について

これは、InterSystems FAQ サイトの記事です。 ウィンドウ関数は、結果セットを部分的に切り出した領域に集約関数を適用できるもので、WHERE GROUP BY および HAVING 節が適用された後、SELECT クエリで選択された行に対して作用します。IRIS/IRIS for Health 2021.1からサポートしています。サポートされるウィンドウ関数は以下の通りです。 FIRST_VALUE(field) PERCENT_RANK() RANK() ROW_NUMBER() SUM(field) 詳細については、下記ドキュメントページをご確認ください。ウィンドウ関数の概要関連記事:IRIS SQLでは OFFSET/LIMIT句のような機能をサポートしてますか? IRIS SQLクエリで取得した結果セットのランキング(順位)を算出する方法
記事
Mihoko Iijima · 2025年7月3日

文字コードが不明なファイルや文字列を正しく処理する方法

これは InterSystems FAQ サイトの記事です。 InterSystems 製品では、ファイルオープン時に文字コードを指定すれば指定の文字コードで正しくファイルの中身を処理できます。 文字コードを指定しない場合、InterSystems 製品をインストールした OS に合わせて設定されたファイル I/O 用文字コードを利用してファイルをオープンします(Linux 系は UTF8、Windows は SJIS)。 また、文字列については文字コードが判明していれば $ZCONVERT() 関数を使用して指定文字コードで文字列を処理することができます。  例)$ZCONVERT(文字列,"I","IRIS内文字コード") 文字コードが不明な場合、残念ながら InterSystems 製品だけでそのコードを判別することができないため、例えば Embedded Python で Python の chardet パッケージを使用して文字コード判別し、IRIS 内文字コードを取得しファイルオープン、文字列の文字コード変換をすることができます。 chardetパッケージについては、外部サイトですが参考となります。ぜひご参照ください。 参考ページ:[解決!Python]テキストファイルのエンコーディングを調べて、その内容を読み込むには(chardetパッケージ) 以下、具体的な処理内容です。文字コードが不明なファイルに対する処理例として記載しています(文字列に対する処理例は末尾にあります)。 IRIS のクラス定義に以下のように language=python を設定したクラスメソッドを用意します。 /// ファイルのエンコードを確認して返す /// 第1引数:ファイル名(フルパス) /// 戻り値:エンコード /// 事前準備:Pythonのchardetパッケージをインストールしておく必要があります /// 参考URL:https://atmarkit.itmedia.co.jp/ait/articles/2105/11/news015.html ClassMethod GetEncode(filename As %String) As %String [ Language = python ] { import iris from chardet import detect # chardetパッケージからdetect関数をインポート with open(filename, 'rb') as f: # バイナリファイルとして読み込みオープン b = f.read() # ファイルから全データを読み込み enc = detect(b) # 読み込んだデータdetect関数に渡して判定する #print(enc) return enc["encoding"] } ターミナルで単体テストを行った結果は以下の通りです。 例:ECU-JPで保存されているファイルを確認した場合 この後、IRIS 内ユーティリティメソッドを利用して IRIS 用文字コードを入手しファイルオープン時の文字コードに指定します。 set TranslateTable=##class(%Net.Charset).GetTranslateTable(ここにPythonで確認したエンコード) コード詳細は以下の通りです。 ClassMethod test(filename As %String) { if $Get(filename)="" { write "第1引数にファイル名をフルパスで指定してください",! return } // Pythonのchardetパッケージを利用したエンコード調査を実行します set encode=..GetEncode(filename) if $get(encode)="" { write filename," のエンコードが入手できませんでした",! return } // エンコードが返った来た場合、IRIS内の文字コードを調査 set TranslateTable=##class(%Net.Charset).GetTranslateTable(encode) write "IRISの文字コードは:",TranslateTable,! write "ファイルの中身は以下==",! set fs=##class(%Stream.FileCharacter).%New() set fs.TranslateTable=TranslateTable do fs.LinkToFile(filename) while fs.AtEnd=0 { write fs.ReadLine(),! } kill fs } 実行例は以下の通りです。 USER>do ##class(FAQ.Utils).test("/data/sample1.txt") IRISの文字コードは:EUC ファイルの中身は以下== あいうえお かきくけこ さしすせそ USER> ファイルではなく文字列に対して操作する場合は、以下の手順で実行します。 1、Python の chardetパッケージを利用してエンコードを入手 set encode=##class(FAQ.Utils).GetEncode("/data/sample1.txt") 2、IRIS 用文字コードを入手 USER>set TranslateTable=##class(%Net.Charset).GetTranslateTable(encode) USER>write TranslateTable EUC USER> 3、$ZCONVERT()関数を使用してコードを変換 USER>write $ZCONVERT(reco,"I",TranslateTable) // recoに対象文字列が含まれているとします あいうえお USER>