検索

クリアフィルター

#グローバル

34 投稿0 フォロワー
記事
Mihoko Iijima · 2023年2月14日

irissqlcli(IRIS SQLの高度なターミナル):InterSystemsデベロッパーツールコンテスト2023入賞作品のご紹介

開発者の皆さん、こんにちは! InterSystems デベロッパーツールコンテスト2023が開催され、21の応募作品の中から勝者が発表されました🏆 この記事では、世界のIRIS開発者の皆さんから注目を集めた作品をご紹介します。 最初は、Experts Nomination 第1位に輝いた @Dmitry Maslennikov さんの作品をご紹介します! @Dmitry Maslennikov さんが解説されている記事(Welcome irissqlcli - advanced terminal for IRIS SQL)もあります。ぜひこちらもご覧ください。 @Dmitry Maslennikov さんは、IRIS SQL用の高度なターミナル irissqlcli を開発されました。 irissqlcli を使用すると、SQL記述時にSQL構文、関数、型、IRIS内テーブル名、カラム名に対する候補が表示されるため、SQL文がとても書きやすくなります。 ヘルプも充実しています。(\n でヘルプが表示されます) 接続先のテーブル一覧を取得する場合は「.tables」で取得できました。 また、以下のように記入時に入力候補が表示されます。Pygments を利用されているようで、シンタックスがハイライトされてきれいです。 ​​irissqlcli の利用方法は3種類ありますが、この記事では、2種類をご紹介します。 その1:pipでirissqlcliをインストールして使う方法 Pythonがインストールされている環境で、以下実行します。 pip install -U irissqlcli 後は、irissqlcliコマンドを利用して、お手元のIRISに接続するだけです。 接続情報の指定は以下の通りです。 irissqlcli iris://IRISのユーザ名:パスワード@ホスト名:スーパーサーバポート/ネームスペース名 IRISのユーザ名がSuperUserで、パスワードがSYS、localhostの1972のスーパーサーバポートのIRISのUSERネームスペースに接続する方法は以下の通りです。 irissqlcli iris://SuperUser:SYS@localhost:1972 実際の画面は以下の通りです。(exitを入力すると元のプロンプトに戻りました) ​​​​ その2:irissqlcli-web用コンテナを利用する方法 Webターミナルで実行できるコンテナが提供されているので、dockerをインストールした環境で以下実行します。 docker run -d --name irissqlcli --restart always -p 7681:7681 caretdev/irissqlcli-web irissqlcli iris://_SYSTEM:SYS@host.docker.internal:1972/USER 上記実行で、caretdev/irissqlcli-web:latestのイメージがPullされます。(イメージのサイズは157MBでした。とても小さいです!) イメージのPullが完了するとコンテナが開始され、コンテナのホストにインストールされているIRISのスーパーサーバポート1972番、USERネームスペースにアクセスします。 コンテナが正常に開始されたかについては、docker ps で確認できます。 >docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40f556b8fdd8 caretdev/irissqlcli-web "/usr/bin/tini -- tt…" 3 seconds ago Up 1 second 0.0.0.0:7681->7681/tcp irissqlcli localhost:7681 にアクセスすると、以下のように irissqlcliのWebターミナル版が開きます。 コンテナを停止する場合は、以下の実行で停止できます。 docker stop irissqlcli コンテナを削除したい場合は、以下の実行で削除できます。 docker rm irissqlcli 接続するIRISのスーパーサーバポートやネームスペースを変更したい場合は、docker run で指定している末尾の引数(irissqlcli以降)の接続情報を変更するだけで切り替えができます。 以下の実行例では、スーパーサーバーポート:51778、ネームスペース:TRAININGに接続しています。 >docker run -d --name irissqlcli --restart always -p 7681:7681 caretdev/irissqlcli-web irissqlcli iris://_SYSTEM:SYS@host.docker.internal:51778/training fd5523695e10f75b0b1157cf001741fb5ddfae5f74b4f58a5a960f96f88f6006 プロンプトの右端に指定したネームスペースが表示されます。 どちらの方法も使用中IRISに追加のインストールが不要ですので、お手軽にご利用いただけると思います ぜひ皆さんのIRISでも試してみてください。また、返信欄に使った感想など、ぜひお寄せください!
記事
Mihoko Iijima · 2020年4月28日

GitLabを使用したInterSystemsソリューションの継続的デリバリー - パートV:コンテナを使用する理由

この連載記事では、InterSystemsの技術とGitLabを使用したソフトウェア開発に向けて実現可能な複数の手法を紹介し、議論したいと思います。 次のようなトピックについて説明します。 Git 101 Gitフロー(開発プロセス) GitLabのインストール GitLabワークフロー 継続的デリバリー GitLabのインストールと構成 GitLab CI/CD コンテナを使用する理由 コンテナを使用するGitLab CI/CD 第1回の記事では、Gitの基本、Gitの概念を高度に理解することが現代のソフトウェア開発にとって重要である理由、Gitを使用してソフトウェアを開発する方法について説明していますました。 第2回の記事では、アイデアからユーザーフィードバックまでの完全なソフトウェアライフサイクルプロセスであるGitLabワークフローについて説明しています。 第3回の記事では、GitLabのインストールと構成ならびに利用環境のGitLabへの接続について説明しています。 第4回の記事では、CDの構成を作成しています。 この記事では、コンテナとその使用方法(および使用する理由)について説明します。 この記事は、Dockerとコンテナの概念を熟知していることを前提としています。 コンテナとイメージについて知りたい場合は、@Luca Ravazzoloからの記事を確認してください。 メリット コンテナを使用することには次のような多くのメリットがあります。 移植性 効率 分離 軽量 不変性 これらについて詳しく説明しましょう。 移植性 コンテナは構成ファイルや依存関係など、アプリケーションの実行に必要なすべてのものを格納しています。 これにより、ローカルデスクトップ、物理サーバー、仮想サーバー、テスト、ステージング環境、プロダクション環境、パブリックまたはプライベートクラウドなどのさまざまな環境でアプリケーションを簡単かつ確実に実行できるようにしています。 移植性のもう1つのメリットは、いったんDockerイメージを構築して正常に動作することを確認したら、それはdockerが動作する環境(最近のWindows、Linux、MacOSサーバー)であればどこでも動作するということです。 効率 すべてのシステムソフトなどを実行する代わりに、自分のアプリケーションプロセスだけを本当に実行させる必要があります。 コンテナはまさにこの要件を満たすものです。コンテナは明示的に必要なプロセスのみを実行し、それ以外は何も実行しません。 コンテナは個別のオペレーティングシステムを必要としないため、使用するリソースが少なくなります。 VMは多くの場合数ギガバイトサイズですが、コンテナは通常数百メガバイトしかないため、単一のサーバーではVMよりも多くのコンテナを実行できます。 コンテナは基盤となるハードウェアをより高度に利用するため、必要なハードウェアが少なくなり、結果としてベアメタルのコストとデータセンターのコストが削減されます。 分離 コンテナはアプリケーションを他のすべてのものから分離します。また、同じサーバー上で複数のコンテナを実行できますが、それらは互いに完全に独立しています。 そのため、コンテナ間の通信は明示的に宣言する必要があります。 あるコンテナに障害が発生しても、それが他のコンテナには影響することはありません。障害が発生したコンテナはすぐに再起動できます。 このような分離によって、セキュリティ上のメリットも生まれます。 例えば、ベアメタルのウェブサーバーの脆弱性が悪用された場合は攻撃者がサーバー全体にアクセスできる可能性があります。しかし、コンテナの場合は攻撃者がアクセスできるのはウェブサーバーコンテナだけです。 軽量 コンテナは個別のOSを必要としないため、数秒で起動、停止、再起動できます。そのため、関連するすべての開発パイプラインと本番稼働までの時間が短縮されます。 そのため、より早く作業を開始し、設定に費やす時間をなくすことができます。 不変性 イミュータブルインフラストラクチャはインプレースで更新されるのではなく、デプロイするたびに置き換えられる不変のコンポーネントで構成されています。 これらのコンポーネントはデプロイのたびに1回作成され、テストと検証が可能な共通のイメージから起動されます。不変性によって不整合が抑制され、異なるアプリケーションの状態間で容易に複製や移動を行えるようになります。 不変性に関する詳細をお読みください。 新しい可能性 これらすべてのメリットにより、インフラストラクチャとワークフローをまったく新しい方法で管理できます。 オーケストレーション ベアメタル環境やVM環境には問題があります。これらには個別性があるため、予期できず、望ましくない多くの問題を、いずれもたらすことになります。 の問題に対する答えは、DevOpsチームがソースコードに使用するのと同じバージョン管理を使用した、記述モデルでのインフラストラクチャの管理手法であるInfrastructure as Code(コードとしてのインフラストラクチャ)です。 Infrastructure as Codeでは、デプロイコマンドは環境の起動状態に関係なく、常にターゲット環境を同じ構成に設定します。 これは、既存のターゲットを自動的に構成するか、既存のターゲットを破棄して新しい環境を再作成することによって実現されます。 したがって、チームはInfrastructure as Codeを使用して環境の記述を変更し、構成モデルにバージョンを付けます。これは、一般的にはJSONなどの適切にドキュメント化されたコード形式で記述されます。 リリースパイプラインは、モデルを実行してターゲット環境を構成します。 チームが変更を加える必要がある場合、チームはターゲットではなくソースを編集します。 これらはすべて実現可能であり、コンテナを使用する方がはるかに簡単です。 コンテナをシャットダウンして新しいコンテナを起動するには数秒かかりますが、新しいVMのプロビジョニングには数分かかります。そしてサーバーをクリーンな状態にロールバックすることさえ可能です。 スケーリング これまでの内容から、Infrastructure as Codeはそれ自体が静的であると理解されるかもしれません。 それは正しくありません。オーケストレーションツールは、現在のワークロードに基づいて水平スケーリング(さらに同じ環境をプロビジョニングすること)も提供できるためです。 現在必要なものだけを実行し、ニーズに応じてアプリケーションをスケーリングすれば良いのです。 これにより、コストを削減することもできます。 まとめ コンテナは開発パイプラインを合理化できます。 環境間の不整合が解消され、テストとデバッグが容易になります。 オーケストレーションを使用すると、スケーラブルなアプリケーションを構築できます。不変な任意の履歴ポイントへのデプロイやロールバックを簡単に実行できます。 組織は、上記のすべての問題が解決済みで、スケジューラーやオーケストレーターがより多くのことを自動処理するような高度な作業を望んでいます。 次の内容 次の記事では、コンテナを使用したプロビジョニングについて説明し、InterSystems IRIS Dockerコンテナを活用するCD構成を作成します。
記事
Mihoko Iijima · 2020年7月6日

GitLabを使用したInterSystemsソリューションの継続的デリバリー - パートVII:コンテナを使用したCD

この連載記事では、InterSystemsの技術とGitLabを使用したソフトウェア開発に向けて実現可能な複数の手法を紹介し、議論したいと思います。 次のようなトピックについて説明します。 Git 101 Gitフロー(開発プロセス) GitLabのインストール GitLabワークフロー 継続的デリバリー GitLabのインストールと構成 GitLab CI/CD コンテナを使用する理由 コンテナインフラストラクチャ コンテナを使用したCD 第1回の記事では、Gitの基本、Gitの概念を高度に理解することが現代のソフトウェア開発にとって重要である理由、Gitを使用してソフトウェアを開発する方法について説明しています。 第2回の記事では、ソフトウェアのライフサイクルの完全なプロセスであるGitLabワークフローについて説明しています。 第3回の記事では、GitLabのインストールと構成ならびに利用環境のGitLabへの接続について説明しています。 第4回の記事では、CDの構成を説明しています。 第5回の記事では、コンテナとその使用方法(および使用する理由)について説明しています。 第6回の記事では、コンテナを使用して継続的デリバリーのパイプラインを実行する必要がある主なコンポーネントと、それらすべての連携の仕組みについて説明しています。 この記事では、これまでの記事で説明した継続的デリバリーの構成を構築します。 ワークフロー 継続的デリバリーの構成では、次のことを行います。 GitLabリポジトリにコードを Push する Dockerイメージをビルドする テストする Dockerレジストリにイメージを公開する 古いコンテナをレジストリの新しいバージョンと入れ替える 図解では以下の通りです: 詳細は以下の通りです。 ビルド まず、Dockerイメージをビルドする必要があります。 インターシステムズの製品内で使用するコードはいつものようにリポジトリに保存され、CD設定は gitlab-ci.yml に保存されますが、それに加えて(セキュリティを高めるために)ビルドサーバーにサーバー固有のファイルをいくつか保存します。 GitLab.xml このファイルには、CDフックコードが含まれています。 前の記事で開発したもので、 GitHubで公開されています。 これはコードをロードしたり、さまざまなフックを実行したり、コードをテストするための小さなライブラリです。 好ましい代替策として、 gitサブモジュールを使用して、このプロジェクトまたは類似のものをリポジトリに含めることができます。 サブモジュールの方が最新の状態に保つことが簡単なので良いでしょう。 もう1つの方法としては、GitLabでリリースにタグを付け、 ADD コマンドで読み込む方法があります。 iris.key IRISのライセンスキーです。 サーバーに保存するのではなく、コンテナのビルド中にダウンロードすることもできます。 リポジトリに保存するのはあまり安全ではありません。 pwd.txt デフォルトのパスワードを含むファイル。 繰り返しますが、リポジトリに保存するのは安全ではありません。 また、別のサーバーでprod環境をホストしている場合は、デフォルトのパスワードが異なる場合があります。 load_ci.script 初期スクリプトは: OS認証を有効にする GitLab.xmlをロードする GitLabユーティリティ設定を初期化する コードをロードする set sc = ##Class(Security.System).Get("SYSTEM",.Properties) write:('sc) $System.Status.GetErrorText(sc) set AutheEnabled = Properties("AutheEnabled") set AutheEnabled = $zb(+AutheEnabled,16,7) set Properties("AutheEnabled") = AutheEnabled set sc = ##Class(Security.System).Modify("SYSTEM",.Properties) write:('sc) $System.Status.GetErrorText(sc) zn "USER" do ##class(%SYSTEM.OBJ).Load(##class(%File).ManagerDirectory() _ "GitLab.xml","cdk") do ##class(isc.git.Settings).setSetting("hooks", "MyApp/Hooks/") do ##class(isc.git.Settings).setSetting("tests", "MyApp/Tests/") do ##class(isc.git.GitLab).load() halt 1行目は意図的に空欄にしてあることにご注意ください。 設定によってはサーバー固有のものもあるので、リポジトリではなく個別に保存しています。 この初期フックが常に同じである場合は、リポジトリに保存すればよいだけです。 gitlab-ci.yml 次に、継続的デリバリーの構成のを参照します: build image: stage: build tags: - test script: - cp -r /InterSystems/mount ci - cd ci - echo 'SuperUser' | cat - pwd.txt load_ci.script > temp.txt - mv temp.txt load_ci.script - cd .. - docker build --build-arg CI_PROJECT_DIR=$CI_PROJECT_DIR -t docker.domain.com/test/docker:$CI_COMMIT_REF_NAME . ここでは何が起きているのでしょうか? まず、最初にdocker build はベースのビルドディレクトリのサブディレクトリにしかアクセスできないので(この場合はリポジトリルートにのみ)、「秘密の」ディレクトリ (GitLab.xml、iris.key、pwd.txt および load_ci.scriptがあるもの)をクローンしたリポジトリにコピーする必要があります。 次に、最初のターミナルアクセスにはユーザーとパスが必要なので、load_ci.script に追加します( load_ci.script の先頭の空行はそのためのものです)。 最後に、dockerイメージをビルドして次のように適切なタグを付けます。 docker.domain.com/test/docker:$CI_COMMIT_REF_NAME ここで $CI_COMMIT_REF_NAME は、現在のブランチの名前です。 イメージタグの最初の部分は、GitLabのプロジェクト名と同じ名前でなければならないので、GitLabのレジストリタブで確認することができます(タグ付けの方法はレジストリタブで確認することができます)。 Dockerfile Dockerイメージのビルドは、次のようにDockerfile を使用します。 FROM docker.intersystems.com/intersystems/iris:2018.1.1.611.0 ENV SRC_DIR=/tmp/srcENV CI_DIR=$SRC_DIR/ciENV CI_PROJECT_DIR=$SRC_DIR COPY ./ $SRC_DIR RUN cp $CI_DIR/iris.key $ISC_PACKAGE_INSTALLDIR/mgr/ \ && cp $CI_DIR/GitLab.xml $ISC_PACKAGE_INSTALLDIR/mgr/ \ && $ISC_PACKAGE_INSTALLDIR/dev/Cloud/ICM/changePassword.sh $CI_DIR/pwd.txt \ && iris start $ISC_PACKAGE_INSTANCENAME \ && irissession $ISC_PACKAGE_INSTANCENAME -U%SYS < $CI_DIR/load_ci.script \ && iris stop $ISC_PACKAGE_INSTANCENAME quietly 基本的なIRISコンテナから開始します。 まず、コンテナ内にリポジトリ(および「秘密の」ディレクトリ)をコピーします。 次に、ライセンスキーと GitLab.xml を mgr ディレクトリにコピーします。 次に、パスワードを pwd.txt の値に変更します。この操作では、pwd.txt が削除されることに注意してください。 その後、インスタンスが起動され、load_ci.script を実行します。 最後に、IRISインスタンスを停止します。 これがジョブログです(部分的に、ロード/コンパイルをスキップしたログ): Running with gitlab-runner 10.6.0 (a3543a27) on docker 7b21e0c4Using Shell executor...Running on docker...Fetching changes...Removing ci/Removing temp.txtHEAD is now at 5ef9904 Build load_ci.scriptFrom http://gitlab.eduard.win/test/docker 5ef9904..9753a8d master -> origin/masterChecking out 9753a8db as master...Skipping Git submodules setup$ cp -r /InterSystems/mount ci$ cd ci$ echo 'SuperUser' | cat - pwd.txt load_ci.script > temp.txt$ mv temp.txt load_ci.script$ cd ..$ docker build --build-arg CI_PROJECT_DIR=$CI_PROJECT_DIR -t docker.eduard.win/test/docker:$CI_COMMIT_REF_NAME .Sending build context to Docker daemon 401.4kB Step 1/6 : FROM docker.intersystems.com/intersystems/iris:2018.1.1.611.0 ---> cd2e53e7f850Step 2/6 : ENV SRC_DIR=/tmp/src ---> Using cache ---> 68ba1cb00affStep 3/6 : ENV CI_DIR=$SRC_DIR/ci ---> Using cache ---> 6784c34a9ee6Step 4/6 : ENV CI_PROJECT_DIR=$SRC_DIR ---> Using cache ---> 3757fa88a28aStep 5/6 : COPY ./ $SRC_DIR ---> 5515e13741b0Step 6/6 : RUN cp $CI_DIR/iris.key $ISC_PACKAGE_INSTALLDIR/mgr/ && cp $CI_DIR/GitLab.xml $ISC_PACKAGE_INSTALLDIR/mgr/ && $ISC_PACKAGE_INSTALLDIR/dev/Cloud/ICM/changePassword.sh $CI_DIR/pwd.txt && iris start $ISC_PACKAGE_INSTANCENAME && irissession $ISC_PACKAGE_INSTANCENAME -U%SYS < $CI_DIR/load_ci.script && iris stop $ISC_PACKAGE_INSTANCENAME quietly ---> Running in 86526183cf7c.Waited 1 seconds for InterSystems IRIS to startThis copy of InterSystems IRIS has been licensed for use exclusively by:ISC Internal Container ShardingCopyright (c) 1986-2018 by InterSystems CorporationAny other use is a violation of your license agreement %SYS>1 %SYS>Using 'iris.cpf' configuration file This copy of InterSystems IRIS has been licensed for use exclusively by:ISC Internal Container ShardingCopyright (c) 1986-2018 by InterSystems CorporationAny other use is a violation of your license agreement 1 alert(s) during startup. See messages.log for details.Starting IRIS Node: 39702b122ab6, Instance: IRIS Username:Password: Load started on 04/06/2018 17:38:21Loading file /usr/irissys/mgr/GitLab.xml as xmlLoad finished successfully. USER> USER> [2018-04-06 17:38:22.017] Running init hooks: before [2018-04-06 17:38:22.017] Importing hooks dir /tmp/src/MyApp/Hooks/ [2018-04-06 17:38:22.374] Executing hook class: MyApp.Hooks.Global [2018-04-06 17:38:22.375] Executing hook class: MyApp.Hooks.Local [2018-04-06 17:38:22.375] Importing dir /tmp/src/ Loading file /tmp/src/MyApp/Tests/TestSuite.cls as udl Compilation started on 04/06/2018 17:38:22 with qualifiers 'c'Compilation finished successfully in 0.194s. Load finished successfully. [2018-04-06 17:38:22.876] Running init hooks: after [2018-04-06 17:38:22.878] Executing hook class: MyApp.Hooks.Local [2018-04-06 17:38:22.921] Executing hook class: MyApp.Hooks.GlobalRemoving intermediate container 39702b122ab6 ---> dea6b2123165[Warning] One or more build-args [CI_PROJECT_DIR] were not consumedSuccessfully built dea6b2123165Successfully tagged docker.domain.com/test/docker:masterJob succeeded Docker executorではなく GitLabShell executor を使用していることに注意してください。 Docker executorはイメージ内の何かが必要な場合に使用します。 例えば、Androidアプリケーションをjavaコンテナでビルドしていて、apkだけが必要な場合などです。 この場合はコンテナ全体が必要になり、そのためにShell executorが必要になります。 そのため、GitLab Shell executorを使用してDockerコマンドを実行しています。 Run イメージができたので、次は実行してみましょう。フィーチャーブランチの場合、古いコンテナを破棄して新しいコンテナを開始すればよいだけです。 この環境の場合、一時的なコンテナを実行し、テストが成功した場合に環境コンテナを置き換えることができます(これは読者の方にお任せします)。 スクリプトは以下の通りです。 destroy old: stage: destroy tags: - test script: - docker stop iris-$CI_COMMIT_REF_NAME || true - docker rm -f iris-$CI_COMMIT_REF_NAME || true このスクリプトは現在実行中のコンテナーを破棄し、常に成功します(デフォルトでは、Dockerが存在しないコンテナーを停止または削除しようとすると、失敗します)。 次に、新しいイメージを開始して環境として登録します。 Nginxコンテナは、 環境変数 VIRTUAL_HOST と(プロキシするポートを知るため)expose命令使用してリクエストを自動的にプロキシします。 run image: stage: run environment: name: $CI_COMMIT_REF_NAME url: http://$CI_COMMIT_REF_SLUG. docker.domain.com/index.html tags: - test script: - docker run -d --expose 52773 --env VIRTUAL_HOST=$CI_COMMIT_REF_SLUG.docker.eduard.win --name iris-$CI_COMMIT_REF_NAME docker.domain.com/test/docker:$CI_COMMIT_REF_NAME --log $ISC_PACKAGE_INSTALLDIR/mgr/messages.log テスト テストをいくつか実行してみましょう。 test image: stage: test tags: - test script: - docker exec iris-$CI_COMMIT_REF_NAME irissession iris -U USER "##class(isc.git.GitLab).test()" 公開 最後に、レジストリにイメージを公開しましょう。 publish image: stage: publish tags: - test script: - docker login docker.domain.com -u dev -p 123 - docker push docker.domain.com/test/docker:$CI_COMMIT_REF_NAME ユーザとパスワードはGitLabの秘密の変数を使って渡すことができます。 これで、GitLabでイメージを確認できます。 そして、他の開発者がレジストリからそれをpullすることができます。 Environmentタブでは、すべての環境を簡単に参照できます。 まとめ この連載記事では、継続的デリバリーの一般的な手法について説明しました。 これは非常に広範なトピックであり、この連載記事の内容は完成されたものではなく、レシピを集めたものとして考えてください。 アプリケーションのビルド、テスト、デリバリーを自動化したいのであれば、継続的デリバリー全般、特にGitLabが最適です。 継続的デリバリーとコンテナを使うことで、必要に応じてワークフローをカスタマイズできます。 リンク 記事のコード テストプロジェクト CDの構成を完成する 次の内容 以上です。 継続的デリバリーとコンテナの基本をすべて網羅できたと思います。 特にコンテナーに関しては、話さなかったトピックがたくさんあります(多分、また後日お話します)。 コンテナの外にデータを保存することができます。これにに関するドキュメントがあります kubernetesなどのオーケストレーション・プラットフォーム InterSystems Cloud Manager 環境管理-テスト用の一時的な環境の作成、フィーチャーブランチ合併後の旧環境の削除 マルチコンテナ展開用の Docker compose Dockerイメージのサイズとビルド時間の削減
記事
Mihoko Iijima · 2021年1月29日

コマンドでジャーナルファイルにある特定のグローバル変数を検索する方法

これは InterSystems FAQ サイトの記事です。 %SYS.Journal.File クラスの ByTimeReverseOrder クエリ と %SYS.Journal.Record クラスの List クエリを使用して検索することができます。 それぞれのクエリの役割は以下の通りです。 A) %SYS.Journal.File クラスの ByTimeReverseOrder クエリ ジャーナルファイル名を取得できます。ジャーナルファイル名の降順で結果が返ります。​​ USER>set rs=##class(%ResultSet).%New("%SYS.Journal.File:ByTimeReverseOrder") USER>do rs.Execute() USER>while rs.Next() { write rs.Name,! } c:\intersystems\cache\mgr\journal\20190620.003 c:\intersystems\cache\mgr\journal\20190620.002 c:\intersystems\cache\mgr\journal\20190620.001 c:\intersystems\cache\mgr\journal\20190610.001 B) %SYS.Journal.Record クラスの List クエリ 特定のジャーナルファイルのジャーナルレコードを取得できます。 USER>set rs2=##class(%ResultSet).%New("%SYS.Journal.Record:List") USER>do rs2.Execute("c:\intersystems\cache\mgr\journal\20190620.003") USER>while rs2.Next() { if rs2.Get("GlobalReference")["TEST" write rs2.Get("GlobalReference"),!} ^["^^c:\intersystems\cache\mgr\user\"]TEST(1) ・・・ 省略 ・・・ ^["^^c:\intersystems\cache\mgr\user\"]TEST(9) ^["^^c:\intersystems\cache\mgr\user\"]TEST(10) メモ: A) で取得したジャーナルファイル名を B)のクエリ実行時の引数として指定します。 B)のクエリで取得できる内容については、クラスリファレンスをご参照ください。%SYS.Journal:Listクエリの取得内容について A)と B)を組み合わせたメソッド例は以下の通りです /// 第1引数: グローバル名の指定(^を除くグローバル名を指定) /// 第2引数: ファイル名の指定(ディレクトリは含まず) ClassMethod SearchJournal(name As %String, filename As %String = "") { if $get(name)="" { write "グローバル名を指定してください",! quit } //現在有効なジャーナルファイルから指定のグローバルを探す set rs1=##class(%ResultSet).%New() set rs1.ClassName="%SYS.Journal.File" set rs1.QueryName="ByTimeReverseOrder" do rs1.%Execute() while rs1.%Next() { set jrnfile=rs1.%Get("Name") set size=rs1.%Get("Size") write "ジャーナルファイル:",jrnfile,!," ファイルサイズ:",size/1024/1024," MB",! do ..SearchGlo(name,jrnfile) } do rs1.Close() } ClassMethod SearchGlo(name As %String, jrnfile As %String) { set rs1=##class(%ResultSet).%New() set rs1.ClassName="%SYS.Journal.Record" set rs1.QueryName="List" //ここからジャーナルファイルをオープンして指定のグローバルを探す do rs1.%Execute(jrnfile, "GlobalReference,NewValue",,,$lb("GlobalReference","[",name)) while rs1.%Next() { set glo=rs1.%Get("GlobalReference") write " ",glo," = ",rs1.%Get("NewValue"),! } do rs1.Close() }
お知らせ
Toshihiko Minamoto · 2023年4月18日

2023/04/04 - アラート: 誤ったクエリ結果を返す

インターシステムズは、SQL クエリによって不正な結果が返される可能性がある不具合を修正しました。 この不具合は、以下の製品およびそれらをベースとしたインターシステムズの提供する製品に存在します。 影響を受けるバージョン: 2021.2, 2022.1.x, 2022.2, 2022.3 InterSystems IRIS® InterSystems IRIS for Health™ HealthShare® Health Connect 影響を受けるバージョン: 2022.2 InterSystems HealthShare® この問題は、SQL Runtime Plan Choice (RTPC) が有効(デフォルト設定)で、クエリに「真理値」である WHERE ? = ? が含まれている場合、発生することがあります。この問題が発生すると、一部の述語が正しく評価されない可能性があり、これが不正なクエリ結果につながります。 注意: SQL を確認することで、クエリの脆弱性を完全に評価することは不可能です。これは、InterSystems SQL のクエリ最適化により、クエリの内部表現に真理値が追加されるためです。 お使いの環境で InterSystems SQL が使用されている場合は、RTPC 機能を無効にすることで、この問題を直ちに修正することができます 注意:InterSystems HealthShare® の軽減策に関する追加情報は、まもなくリリースされる予定です。 この不具合の修正は YCL227 で、InterSystems IRIS®、InterSystems IRIS for Health™、および HealthShare® Health Connect の将来のすべてのバージョン、およびそれらをベースとするインターシステムズ製品に含まれる予定です。 また、この修正は、アドホック配布でも入手可能です。 このアラートに関するご質問、または修正版のアドホック配布が必要な場合は、ワールドワイド・レスポンス・センターまでご連絡ください。
記事
Hiroshi Sato · 2021年8月24日

【IRIS】JavaからInterSystemsIRISにアクセスするサンプル

これは InterSystems FAQ サイトの記事です。インターシステムズでは、お客様のペースで学ぶことができる柔軟でユーザセントリックな教育サービスを提供しています。ラーン&プレイ InterSystems オンラインラーニングにご登録いただくと、Java から InterSystems IRISにアクセスする様々なサンプルをご利用いただけます。 Java のサンプルは、オンラインラーニングの以下のページでご紹介しています(英語のみ)。Welcome to the Java QuickStart! オンラインラーニングサービスアカウントのない方のために、簡単に手順をご紹介します。※詳細については、上記オンラインラーニングサービスページをご覧ください。 InterSystems IRIS をインストールし、JavaをサポートするIDEを用意します(Eclipse など)。 サンプルのJavaコードを入手するには、次のリポジトリをIDEにダウンロードまたは複製してください。: http://github.com/intersystems/quickstarts-java Eclipse を使用する場合: File > Import > Git > Projects from Git を選択し、 Next をクリックします。 URI: https://github.com/intersystems/quickstarts-java を入力します。 master ブランチを選択し、Next をクリックします。 既存プロジェクトにインポート(import existing project)を選択し、Next をクリックします。 Finish をクリックします。 Solutions package に含まれる config.txt を開き、InterSystems IRISインスタンスのIPアドレス、ポート、ユーザ名、パスワードを設定します。 サンプルコードをIDEに保存します。 これでJDBC、XEP、ネイティブAPI、そしてマルチモデル用のクラスが使用できるようになります。
お知らせ
Toshihiko Minamoto · 2021年12月14日

2021年12月13日 - 勧告: Apache Log4j2ライブラリの脆弱性がインターシステムズ製品に与える影響

2021年12月13日 - 勧告: Apache Log4j2ライブラリの脆弱性がインターシステムズ製品に与える影響 インターシステムズは現在、Apache Log4j2に関するセキュリティ脆弱性の影響を調査しています。 この脆弱性は少なくともApache Log4j2 (バージョン2.0から2.14.1)に影響を与えるもので、最近Apacheから発表され、米国国家脆弱性データベース (NVD) ではCVE-2021-44228 として報告されており、深刻度は最も高い10.0となっています。 脆弱性に関する詳細ならびにインターシステムズ製品に影響を与えるかどうかの最新情報は こちら をご参照ください。 12/16現在、各製品の調査状況は以下の通りです。詳細はこちらをご確認ください。 以下の製品につきましては、Log4j2による脆弱性があることが確認されました。 Data Platforms Add-ons • InterSystems Reports Server • InterSystems Reports Designer TrakCare • TrakCare Core 以下の製品はLog4j2を使用していますが、信頼できないソースからのデータ処理には使用されていません。 Data Platforms Add-ons • InterSystems Cloud Manager HealthShare • HealthShare Clinical Viewer (2019.2 ~ 2021.2) 以下の製品につきましてはLog4j2による脆弱性が無いことが確認されています。 Data Platforms• InterSystems IRIS• Caché• InterSystems IRIS for Health• Ensemble Data Platforms Add-ons• Atelier Integration• CSP Gateway for CE• IRIS Studio• InterSystems API Manager• InterSystems Kubernetes Operator (IKO)• ISC Agent• Legacy .Net bindings• Legacy node JS binding• ODBC Driver• System Alerting and Monitoring (SAM)• VS Code Integration• Web Gateway for IRIS• Zen Mojo HealthShare• HealthShare Clinical Viewer (2019.1以前 )• Unified Care Record• Care Community• Personal Community• Provider Directoryi• Health Insight• Patient Index• Health Connect

#求職情報

0 投稿1 フォロワー
記事
Minoru Horita · 2020年7月24日

Python Gateway パート IV:相互運用アダプタ

この連載記事では、InterSystemsデータプラットフォーム用の[Python Gateway](https://openexchange.intersystems.com/package/PythonGateway)について説明します。 また、InterSystems IRISからPythonコードなどを実行します。 このプロジェクトは、InterSystems IRIS環境にPythonの力を与えます。 - 任意のPythonコードを実行する - InterSystems IRISからPythonへのシームレスなデータ転送 - Python相互運用アダプタでインテリジェントな相互運用ビジネスプロセスを構築する - InterSystems IRISからのPythonコンテキストの保存、調査、変更、復元 # その他の記事 現時点での連載計画です(変更される可能性があります)。 - [パート I:概要、展望、紹介](https://jp.community.intersystems.com/post/python%C2%A0gateway%C2%A0%E3%83%91%E3%83%BC%E3%83%88%C2%A0i%EF%BC%9A%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB) - [パート II:インストールとトラブルシューティング](https://jp.community.intersystems.com/post/python%C2%A0gateway%C2%A0%E3%83%91%E3%83%BC%E3%83%88%C2%A0ii%EF%BC%9A%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%C2%A0) - [パート III:基本機能](https://jp.community.intersystems.com/post/python-gateway-%E3%83%91%E3%83%BC%E3%83%88iii%EF%BC%9A%E5%9F%BA%E6%9C%AC%E6%A9%9F%E8%83%BD) - パート IV:相互運用アダプタ

#アラート

9 投稿0 フォロワー

#Global Summit 2024

0 投稿0 フォロワー
記事
Megumi Kakechi · 2021年6月7日

 IRISは医療に特化したシステム統合製品ですか? 

これは InterSystems FAQ サイトの記事です。Question: IRISは医療に特化したシステム統合製品ですか? Answer: InterSystems IRIS Data Platform(以下IRISと表記)は、金融、物流など様々な業種でお使いいただいています。 また、IRISから派生して医療分野に特化したInterSystems IRIS for Health(以下IRIS4Hと表記)という製品があります。 IRIS4Hでは医療分野で良く使われる情報交換規格 HL7(FHIR,V2,V3,CDA)、DICOM、X12 などへの対応に力を入れています。 医療分野のお客様には、IRIS4Hをご利用いただくようお願いしております。
お知らせ
Yoichi Miyashita · 2021年8月5日

一時的なオンラインドキュメント・サーバを用意しました

開発者の皆様、 InterSystems IRIS for Health のオンラインドキュメントを一時的に用意しました。 こちらをご覧ください。英語版 2021.1 のみですが、ご容赦ください。 InterSystems IRIS for Health のドキュメントはInterSystems IRIS のドキュメントを包含しています。 ※2021年8月13日追記ドキュメントサーバが復活したため、通常のドキュメントページをご確認くださいませ。長時間ご迷惑をおかけし、申し訳ございませんでした。インターシステムズ製品 ドキュメント一覧

#Virtual Summit 2021

0 投稿0 フォロワー