記事 Hiroshi Sato · 2020年11月16日 1m read メソッドのオーバロードについて これはInterSystems FAQ サイトの記事です。 InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。 InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。 ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。 従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。 Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、 ClassMethod test(args... as %String) のように引数の後ろに ... を付加します。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 134
記事 Hiroshi Sato · 2020年10月29日 1m read 起動時に、 CTELNETD startup error: bind(sock) failed エラーが出てスタートアップに失敗する場合の対処法 これはInterSystems FAQ サイトの記事です。 起動時に、 CTELNETD startup error: bind(sock) failed Telnet23ポートは別ソフトでは使用していません。というエラーが発生する場合の対処法です。 現在、InterSystems製品と以下のソフトの組み合わせで、この現象が発生することがわかっています。 #セキュリティ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 509
記事 Hiroshi Sato · 2020年10月29日 1m read SQLログイン認証の際にログを出力する方法 これはInterSystems FAQ サイトの記事です。 以下のようにユーザ名、パスワードを引数に持ち、認証が成功した場合はユーザ名、失敗したときは""(NULL)を返すルーチン(SecTest^SecTest)を作成し、標準の認証システムを書き換えることができます。 SecTest(user,pass) // user1のパスワードがuser1の場合、認証OKのログを作成 if user="user1",pass="user1" { set ^sqllog($i(^sqllog))="認証OK;"_$horolog_";"_user quit user } // 認証できなかった場合、認証NGのログを作成 set ^sqllog($i(^sqllog))="認証NG;"_$horolog_";"_user quit "" #認証 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 170
記事 Hiroshi Sato · 2020年10月29日 1m read ローカル変数の値がOREFかどうかを判定する方法 これはInterSystems FAQ サイトの記事です。 $IsObject()を使用して判別できます。 調べたい変数をvとすると、 $IsObject(v)=1 // vはOREF$IsObject(v)=0 // vはOREFではない$IsObject(v)=-1 // vはOREFだが、有効なオブジェクトを指していない となります。 vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。 UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。 $IsObject($Get(v)) #ObjectScript #Caché #InterSystems IRIS 0 0 0 323
記事 Hiroshi Sato · 2020年10月19日 3m read クラス定義に基づき作成されたデータを別システムに移行する方法 これはInterSystems FAQ サイトの記事です。 2つのステップにて作業します。 クラス定義の移行 クラス定義を別システムへ移行するため、XML形式またはUDL形式(拡張子.cls)のファイルにエクスポートします。 スタジオでのエクスポート手順は以下の通りです。 [ツール] > [エクスポート] > [追加]ボタンで移行したいクラスを複数選択 > [ローカルファイルにエクスポート]にチェック > ファイルの種類がXMLであることを確認し、ファイル名を入力し、[OK] この後、別システム上のスタジオで、エクスポートしたXML、UDLファイルをインポートします。 この手順で、クラス定義は移行できます。 スタジオでのインポート手順は以下の通りです。 [ツール] > [ローカルからインポート] > 上記手順で出力したXML、UDLファイルを指定します。 #システム管理 #Caché #Ensemble #InterSystems IRIS 0 0 0 351
記事 Hiroshi Sato · 2020年10月19日 5m read LinuxでのKernelパラメータ値の設定 これはInterSystems FAQ サイトの記事です。 一部のKernelパラメータはInterSystems製品を稼働するためには、不適切な値となっているため、調整する必要があります。 1. kernel.shmmax (共有メモリセグメントの最大値) 通常既定値で問題ありません。 設定する場合は、共有メモリにあわせたshmmaxの値は以下の a)~ f) の合計値になります。 a) データベースバッファ globals(Mbytes) x 1.075 globals b) ルーチンバッファ routines(Mbytes) x 1.02 #Red Hat Enterprise Linux (RHEL) #Ubuntu #Caché #Ensemble #InterSystems IRIS 0 1 0 4.9K
記事 Hiroshi Sato · 2020年10月15日 1m read カウンタとして時間経過を正確に計測する方法 これはInterSystems FAQ サイトの記事です。 $ZHorologを使用します。 $ZHorologシステム変数はInterSystems製品を起動してからの経過時間(秒)を保持しています。 2点間の$ZHorolog値の差を取るだけで正確な経過時間を取得する事が出来ます。 詳しくは以下、ドキュメントをご参照ください。 $ZHorologについて【IRIS】 $ZHorologについて この他、秒の小数部を含む時間の日付と時間の取得には $NOW, $ZTimeStamp が使用できます。 #ObjectScript #Caché #Ensemble #InterSystems IRIS 1 0 0 205
記事 Hiroshi Sato · 2020年10月5日 9m read Caché .Net BindingアプリケーションをIRISの.Net Native APIを利用して書き換える方法(その3) ここで紹介するサンプルは、以下のGitHubから入手可能です。 IRIS .Netサンプル jpegファイルを読んで、IRISデータベースに格納するサンプル 上記GitHub上のinsertbinary\insertbinary\binread.csというファイル名です。 処理内容は、ファイルシステム上のjpeg形式のファイルを読み込んで、BLOB形式でIRISデータベースに格納します。 Caché ではADO.NET Managed Providerを使用して実装していましたが、それをIRISのInterSystems Managed Provider for .NETを使用して書き換えました。(名前が変わっていますが、ADO.NETに関しては、機能はほとんど同じです) 従って、厳密に言うと.Net Native APIを使用していませんが、コネクションオブジェクトの使用方法は共通なので、この部分は、Native APIを使用していると言うこともできます。 #InterSystems IRIS 0 0 0 453
記事 Hiroshi Sato · 2020年9月28日 1m read ルーチン一覧をプログラミングで取得する方法 これはInterSystems FAQ サイトの記事です。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 404
記事 Hiroshi Sato · 2020年9月28日 1m read クライアントのIPやマシン名を取得する方法 これはInterSystems FAQ サイトの記事です。 言語バインディングなどのサーバクライアント型で接続した場合、クライアントのマシン名は以下の処理で取得できます。 set client=##CLASS(%SYS.ProcessQuery).Open("P"_$j).ClientNodeName クライアントのIPアドレスは以下の処理で取得できます。 set ip=##CLASS(%SYS.ProcessQuery).Open("P"_$j).ClientIPAddress * サーバーとクライアントが同一マシンの場合、上記で取得できるIPアドレスは、127.0.0.1になります。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 708
質問 Hiroshi Sato · 2020年8月26日 InterSystems製品のIsolation レベルについて教えてください。 #Caché #InterSystems IRIS 0 1 0 342
質問 Hiroshi Sato · 2020年8月26日 InterSystems IRIS Data Platformに関する本はありますか? #InterSystems IRIS 0 4 0 507
記事 Hiroshi Sato · 2020年8月26日 4m read Caché .Net BindingアプリケーションをIRISの.Net Native APIを利用して書き換える方法(その2) ここで紹介するサンプルは、以下のGitHubから入手可能です。 .NETサンプル Powershellから.NETインタフェースを呼び出すサンプル1 callclassmethod.ps1というファイル名です。 処理内容は、Caché (IRIS)のバージョン情報を表示するという非常に単純なものです。 Caché では.Net Bindingを使用していましたが、IRIS用に.Net Native APIで書き換えてみます。 以前のCaché のコードは以下の通りです。 #InterSystems IRIS 1 0 0 595
記事 Hiroshi Sato · 2020年8月18日 8m read Caché .Net BindingアプリケーションをIRISの.Net Native APIを利用して書き換える方法(その1) IRISでは.Net Bindingは非推奨機能となりました。 .Net Bindingを使ったアプリケーションは、IRISで提供されている.Net Native APIを利用して書き換えることができます。 ここでは、実際に書き換えをおこなったサンプルコードを示しながら、具体的な方法を説明していきます。 CacheDirect(VisM)エミュレーター OpenExchangeに登録しているVisMエミュレーターは、元々Cachéの.Net Bindingを使用して作成されました。 それをIRISの標準機能で動作可能にするために、.Net Native APIを使用して書き換えをおこないました。 以下にどのように書き換えを行ったかを順を追って説明します。 参照の変更 まず以前の参照を削除します。 Visual Studioのソリューションエクスプローラーの所で参照をクリックします。 #.NET #InterSystems IRIS Open Exchange app 0 0 0 634
記事 Hiroshi Sato · 2020年7月27日 13m read Cache Active X Bindingを利用したシステムをIRISに移行する方法 初めに Caché ActiveX Bindingは、Visual Basicでクライアント・サーバー型のアプリケーション開発を支援するためにInterSystemsが提供してきたツールです。 CacheActiveX.dllとCacheObject.dllの2種類のバージョンが存在します。 IRISでは、CacheActiveX.dllは動作可能です。 CacheObject.dllはサポートしていません。 いずれにしろ誕生から既に20年以上が経過した非常に古いテクノロジーでマイクロソフト社も非推奨の古い規格ですので、今後も使い続けるのは得策ではありません。 Caché ActiveX Bindingの機能はIRISに用意されている.Net Native APIと.Net Managed Providerの機能を使って書き換え可能です。 ここでは、Caché ActiveX Bindingを使って書かれていたサンプルアプリケーションをIRISで動作するように移植した作業内容について解説します。 このサンプルは、以下のgithubサイトから入手可能です。 #.NET #InterSystems IRIS 0 0 0 598
記事 Hiroshi Sato · 2020年7月2日 21m read VisM.OCX(Caché Direct)を利用したアプリケーションをIRISに移行する方法 初めに VisM.OCXはVisual Basicでクライアント・サーバー型のアプリケーション開発を支援するためにInterSystemsが提供してきたツールです。 誕生から既に20年以上が経過した非常に古いテクノロジーです。 OCX規格(ActiveXコンポーネント)は、マイクロソフト社が推進してきた規格ですが、やがてマイクロソフト社が後継となる.Net Frameworkをリリースし、その新しいフレームワークへの移行を強力に推進すると同時に、OCX規格は非推奨機能となっています。 一方で下位互換性のため、.Net Framework配下でOCXを動作可能とする仕組みが用意されており、結果としてOCXは、.Net Framework環境下で動作可能です。 従って、VisM.OCXも.Net対応のプログラミング言語C#やVB.NETからそのまま利用することができます。 しかしながら.Net Framework上で動作するとは言え、.Net Frameworkが用意する安全性の高い資源管理や強固なセキュリティ機能の恩恵を受けることができず、いわゆるマネージドコードとして動作できないという制約を抱えています。 #.NET #InterSystems IRIS #Open Exchange Open Exchange app 1 1 0 1.6K
記事 Hiroshi Sato · 2020年6月30日 17m read icmを利用してIRISクラスターを構成する方法 1. 初めに IRISでは、複数ノードでクラスターを構成し、ワークロードのスケールアウト、データボリュームのスケールアウトやトランザクション処理と分析処理を異なるノードで処理するマルチワークロードを実現しています。しかし、クラスターを構成するための設定は、ノード数が増えるにつれ煩雑になり、それらを人手の作業に全て委ねると設定ミス等を招きやすいといえます。また、クラスタの構成を処理負荷の増加に基づいて拡張する、または逆に縮小する、あるいは、データ冗長性を追加するためにミラーリングの構成を追加するなど構成変更は、想定するより多いかもしれません。しかもクラスタ毎に同様の設定を毎回行うとなると、人手による作業では、煩雑性だけでなく俊敏性に欠けると言わざるを得ません。 そこで、IRISには、クラスター構成作業を自動化する新しいツールICM(InterSystems Cloud Manager)が用意されました。 ここでは、ICMを使用したクラウド上でのIRIS構成の自動化の手順について説明します。 2. 事前に準備するもの #Artificial Intelligence (AI) #DevOps #Docker #クラウド #シャーディング #継続的インテグレーション #継続的デリバリー #InterSystems IRIS 0 0 0 319
お知らせ Hiroshi Sato · 2020年6月29日 製品サポート対応について 現時点のサポートバージョンについては、以下のドキュメントをご参照ください。 ミニマム・サポートバージョンについてこのリストに記述されていないバージョンに関しては、該当システムの保守契約があるという前提で、 メール、お電話等の通常のお問い合わせは受け付けます。 出来うる限りの対応を努力しますが、そのバージョンでの対応が出来ず、最新バージョンへのバージョンアップによる問題解決をご提案させていただく場合がございます。 インターシステムズは、以下の理由により、出来うる限り、最新バージョンへバージョンアップしていただくことをお勧めしております。 0 0 0 148
お知らせ Hiroshi Sato · 2020年6月29日 障害対応などの製品修正の提供方法について お客様のシステムで発生した障害に対処するための製品修正や社内のコードレビューで新たに発見された潜在的な問題に対応するための修正などは、問題の重要度(運用に支障をきたす、アプリケーションの動作に影響があるなど)に応じて、順次新しいメジャーバージョン、メンテナンスバージョンに取り込まれていきます。 一方で、新しいバージョンのリリースには所定の時間が必要ですので、そのリリース前に該当する修正だけを適用したいというご要望にお応えするためにInterSystemsではアドホックと呼んでいる応急パッチを提供することも可能です。 しかしながら、この対応はあくまでも個別の応急処置であり、その問題が対処されたバージョンがリリースされた後には、そのバージョンをご使用いただくことを推奨致します。 この様な個別対応を繰り返し行うと、システムの構成管理が複雑化し、管理上のコストが上昇し、思わぬシステムトラブルの遠因になることもあります。 特に複数のエンドユーザー様に同じソリューションを提供する様なケースでは、システムの提供時期等によりシステム構成が変わり、適用可能なオペレーティングシステム等が変化することに伴い、全ての適用パッチを見直す必要が出てくることも想定されます。 0 0 0 102
お知らせ Hiroshi Sato · 2020年6月29日 セキュリティ脆弱性に関する対応について InterSystemsは、新たなセキュリティの脆弱性が製品に見つかった場合、出来得る限り速やかにその脆弱性に対処するための修正を製品に行い、対応バージョンを出荷します。 また、InterSystemsは、セキュリティ脆弱性対応に関して、製品を修正して出荷するだけでは十分ではなく、InterSystemsの製品をお使いいただいている全てのお客様が、セキュリティ脆弱性に対応したバージョンをお使いいただくことによって、初めてそのセキュリティ脆弱性に起因するリスクを完全に排除できると考えています。 もちろん対処しなければ、必ずそのリスクが顕在化するというものでもありませんが、対処せずとも、問題がないということを100%保証することは極めて困難です。 また、セキュリティ脆弱性に対応したバージョンのご利用を推進するため、セキュリティ脆弱性への対策が施されていないバージョンに対する製品サポートはベストエフォートとなり、サポートバージョンと同等のサポート保証を得ることができない点、ご注意お願い致します。 以上のことをご理解いただき、新しいセキュリティ脆弱性に対応した製品バージョンがリリースされた際には、出来得る限り速やかにそのバージョンを導入することを推奨致します。 以下の関連情報もぜひご参照ください。 0 0 0 232