検索

クリアフィルター
お知らせ
Toshihiko Minamoto · 2022年3月21日

InterSystems Kubernetes Operator 3.3 が公開されました

InterSystems Kubernetes Operation (IKO) バージョン 3.3 が WRC ダウンロードページ やInterSystems Container Registry よりダウンロード可能となりました。 IKO は、使いやすい irisClusterリソース定義を提供することにより、Kubernetesにおける InterSystems IRIS やInterSystems IRIS for Health との連携を簡素化します。 簡単なシャーディング、ミラーリング、ECP構成などの機能一覧は ドキュメント をご覧ください。 IKO 3.3の主な修正点: InterSystems IRIS 、 IRIS for Healthのバージョン 2021.2 、 2022.1 のサポート Kuberentes 1.21のサポート irisCluster の一部として共通のSystem Alerting and Monitoring (SAM) コンフィグレーションのデプロイ irisCluster の一部として InterSystems API Manager (IAM) のデプロイや管理 ミラーリングのアクティブ側の自動タグ付けにより、サービスは常にアクティブなミラーメンバーを指すことができます。
お知らせ
Maki Hashizawa · 2022年3月24日

InterSystems Japan Virtual Summit 2022 オンデマンド配信のお知らせ

開発者のみなさん、こんにちは。 "Innovation in Data - データによるデジタル変革の推進" をテーマに、DX推進に不可欠な健全なデータの提供とデータプラットフォームの最新情報をお届けしました「InterSystems Japan Virtual Summit 2022」の全てのセッションを、4月22日(金)までオンデマンドで配信しております。 見逃した方や、もう一度セッションをご覧になりたい方など、是非、この機会にご覧いただければと思います。 お申込み・視聴はこちらから ■テーマ:Innovation in Data - データによるデジタル変革の推進 ■オンデマンド配信:2022年4月22日(金)まで ■参加:無料(登録制) お申込み・視聴はこちらから 《技術セッション》   ■Embedded Python で広がる InterSystems IRISの世界   ■SQLでどこまでできる? ~データロードから機械学習まで~   ■オープンソースだけで IRIS on Kubernetesを動かそう   ■VSCode、Jenkinsを使用したCICD環境の構築   ■FHIR SQL Builder ■ストレージの節約方法について    ■ミラーリングを使用したHAおよびDR構成例 皆様のご参加をお待ちしております。
お知らせ
Mihoko Iijima · 2022年7月19日

★受賞者発表!★ InterSystems Full Stack コンテスト 2022

開発者の皆さん、こんにちは! InterSystems Full Stack コンテスト 2022 の投票結果か発表されました!この記事ではコンテスト受講者を発表します 📢​​​​​​ 受賞された開発者の皆さん、👏おめでとうございます!🎊 Experts Nomination: 🥇 1位 - $4,000 は、Kozo を開発された @Sean.Connelly さんに贈られました。 🥈 2位 - $2,000 は、 iris-climate-change を開発された @Muhammad.Waseem さんに贈られました。 🥉 3位 - $1,000 は、Carbon Footprint Counter を開発された @Yuri.Gomes さんに贈られました。 さらに! 🏅 $100 - interoperability-manager を開発された @Oliver.Wilms さんに贈られました。 🏅 $100 - Arctic sea ice viewer を開発された @Oleh.Dontsov さんに贈られました。 🏅 $100 - iris-for-money を開発された @Oliver.Wilms さんに贈られました。 Community Nomination 🥇 1位 - $1,000 は、Kozo を開発された @Sean Connelly さんに贈られました。 🥈 2位 - $750 は、iris-climate-change を開発された @Muhammad Waseem さんに贈られました。 🥉 3位 - $500 は、Carbon Footprint Counter を開発された @Yuri Marx さんに贈られました。 🎊 受賞者の皆様、おめでとうございます!👏 今回も、コンテストにご注目いただきありがとうございました! では、また、次のコンテストをお楽しみに!😎
お知らせ
Mihoko Iijima · 2023年9月26日

InterSystems Japan 開発者コミュニティ・ミートアップ in 大阪 開催のお知らせ

開発者の皆さん、こんにちは! 日本の開発者コミュニティでは初となる、ミートアップ(オフラインイベント)を大阪で開催します! 日 時:2023年11月17日(金)15時~19時 場 所:FRENCH BAGUETTE CAFE (イタリアンレストラン)   《地下鉄御堂筋線 淀屋橋駅 11番出口から徒歩3分》    ※淀屋橋駅 (大阪駅から地下鉄御堂筋線で3分)から徒歩3分 参加費:無料 定 員:50名※定員に達した際は調整をお願いすることもございます。予めご了承下さい。 (11/16更新) お申込を締め切らせていただきました。 開催概要 《15時~17時(前半)》 ・IRIS最新機能紹介 インターシステムズ社員よりご紹介します。 ・パネルディスカッション パネリストの方にご登壇いただき開発・運用のことから、製品ロードマップやインターシステムズに関するご意見などをお話いただきます。 ・技術文書ライティングコンテスト 表彰式 優勝、準優勝の表彰式を行います。 《17時~19時(後半)》※お食事(ビュッフェ形式)をしながら以下の内容を予定しています。 ・クイズ大会 InterSystems製品にちなんだクイズを出題します。クイズ勝者には5000円相当の景品が贈られます。 ・「あなたはどっち派?」究極の選択 InterSystems製品にちなんだ2択から好きな方を選択いただき2グループに分かれて討論します。 《持ち物》※クイズ大会で使用します スマートフォン(一部の席で充電できますので必要に応じて充電用ケーブルもご持参ください) 《その他》 カジュアルな服装でぜひご来場ください。 ご都合よろしければ、ぜひご参加ください。 それでは、イベント会場でお会いしましょう! 10/16より、お申込みサイトオープンしました! ぜひ、開発者コミュニティミートアップへご来場ください!
記事
Seisuke Nakahashi · 2024年1月12日

^mypButtons を利用して InterSystems IRIS パフォーマンスをチェックしてみましょう

[背景] InterSystems IRIS 製品には、便利なツール ^SystemPerformance (Caché / Ensemble 時代は ^pButtons と呼ばれていました) があり、データベースのパフォーマンス情報を HTML 形式で出力してくれます。 IRIS for Windows で ^SystemPerformance を実行すると、 InterSystems 独自のパフォーマンスログ mgstat と Windows パフォーマンスログの両方を含んだ HTML が生成されます。 ^SystemPeformance は良いレポートを出力してくれるのですが、たとえば、それを元にパフォーマンスグラフを作ろうとすると、HTMLファイルから手動でコピーし、それをExcelなどに貼り付ける必要があります。これに関連して、すでに、多くの開発者が この開発者コミュニティ記事 にあるように便利なツールを作成しています(記事原文の作成者 @Murray.Oldfield さん、ありがとうございます) 本日は、これに関連した新しいツール ^mypButtons をご紹介します! [^mypButtons が他のツールに比べて新しい点] mypButtons.mac は、ページ右上の OpenExchange ボタンからダウンロードいただけます。 ^mypButtons は、mgstat と Windows パフォーマンスログ を同じ行に出力します。これにより、"PhyWrs" (mgstat) と "Disk Writes/sec" (Win perfmon) を同じグラフで比較するなども可能です。 ^mypButtons は複数の HTML ファイルを一気に読み、1つの CSV にまとめて生成できます。 ^mypButtons は CSV ファイルを実行するお客様のマシン上に生成するため、グラフの作成がより簡単になっています。 ^mypButtons は パフォーマンスを把握するためにおすすめのカラムをピックアップして CSV に出力しています。そのため、どなたでも簡単にパフォーマンス関連グラフを作ることができます! 注意! 生成される mypButtons.csv をお使いいただくには, "every 1 second" プロファイルによる SystemPerformance のHTMLをご利用ください。 [ルーチン呼び出し概要] do readone^mypButtons("C:\temp\dir\myserver_IRIS_20230522_130000_8hours.html","^||naka") readone ラベルは、指定された1つの SystemPerformance HTML ファイルを読みこみ、指定グローバルに情報を格納します。上記の例では myserver_IRIS_20230522_130000_8hours.html を読みこみ、^||naka にデータを格納します。 do readdir^mypButtons("C:\temp\dir","^||naka") readdir ラベルは、指定されたフォルダ以下にある SystemPerformance HTML ファイルすべてを読みこみ、指定グローバルに情報を格納します。上記の例では C:\temp\dir 以下にある複数の HTML ファイルを読みこみ、^||naka にデータを格納します。 do writecsv^mypButtons("C:\temp\csv","^||naka") writecsv ラベルは、指定グローバルの情報をもとに、以下 3つの CSV ファイルを、指定フォルダ直下に生成します。 mgstat.csv perfmon.csv mypButtons.csv ここで mypButtons.csv にはデフォルトで以下のカラム情報が含まれます。これは私がお勧めする「パフォーマンス計測時に、最初にチェックすべき項目」たちになります。 mgstat: Glorefs, PhyRds, Gloupds, PhyWrs, WDQsz, WDphase perfmon: Available MBytes, Disk Reads/sec, Disk Writes/sec, % Processor Time 本ユーティリティは、InterSystems IRIS, InterSystems IRIS for Health, Caché, Ensemble for Windows で動作します。 [^mypButtons を利用してパフォーマンスグラフを生成するまでの具体的な手順例] (1) まず ^SystemPerformance を実行し、InterSystems 独自のパフォーマンス統計 mgstat と Windows パフォーマンスモニタ統計 perfmon を取得します。InterSystems IRIS にはいくつかのプロファイルが最初から用意されているため、すぐ実行できます。IRIS ターミナルを起動し、以下を実行します。 %SYS> do ^SystemPerformance Current log directory: c:\intersystems\iris\mgr\ Windows Perfmon data will be left in raw format. Available profiles:   1 12hours - 12-hour run sampling every 10 seconds   2 24hours - 24-hour run sampling every 10 seconds   3 30mins - 30-minute run sampling every 1 second   4 4hours - 4-hour run sampling every 5 seconds   5 8hours - 8-hour run sampling every 10 seconds   6 test - 5-minute TEST run sampling every 30 seconds select profile number to run: 3 注意! mypButtons.csv をお使いいただくには、 "every 1 second" =「1秒間隔で情報を取得する」プロファイルをご利用ください。製品には最初から、1秒間隔に情報を取得する "30 mins" =「30分間情報を取得する」プロファイルが用意されていますので、上記例でもこれを利用しています。もし別のプロファイルを作成したい場合は ドキュメント をご参照ください。 (2) パフォーマンス取得が終わると、irisdir\mgr 直下に、JP7320NAKAHASH_IRIS_20231115_100708_30mins.html といった名前のHTMLファイルが出力されます。ブラウザで開き、以下のように mgstat と perfmon セクションをクリックすると、カンマ区切りの生データを見ることが出来ます。 (3) この生成 HTML を ^mypButtons を使って、以下のようにロードします。 USER> do readone^mypButtons("C:\InterSystems\IRIS\mgr\JP7320NAKAHASH_IRIS_20231115_100708_30mins.html","^||naka") 第1引数の HTML ファイルをよみ、第2引数で指定したグローバルに HTML ファイル内のパフォーマンスデータを格納します。 (4) ^mypButtons を使って CSV を出力します。 USER> do writecsv^mypButtons("C:\temp","^||naka") 第1引数で指定したフォルダ以下に、第2引数で指定したグローバルに格納されたパフォーマンスデータから、3つの CSV ファイルが出力されます。mypButtons.csv をエクセルで開くと、以下の図のように、mgstat と perfmon ログが1行にまとめて記録されているのがわかります。黄色カラムが mgstat、青色カラムが perfmon です。 (5) この CSV から簡単なグラフを作ってみましょう。カラムB Time とカラムC Glorefs を同時に選択し、以下のように 挿入 メニューから 2-D 折れ線グラフ を選択します。 すると以下のように、"1秒ごとのグローバル参照数" のグラフが出力されます。このログを取得した IRIS インスタンスではほとんど処理が行われていなかったので、つまらないグラフになってしまいましたが、本番環境のサーバで実行すると、とても興味深い情報が得られると思います! (6) mypButtons.csv には上記だけでなく、私がお勧めする「パフォーマンス確認必須項目」が出力されるようになっています。なぜこれらのカラムが必須なのかご興味をお持ちの方は、ぜひ Murray コミュニティ記事シリーズ をご覧くださいませ。 [出力カラムを変更するために ^mypButtons を編集する] mypButtons.csv に出力されるカラムを変更したい場合は、writecsv ラベルを編集してください。ルーチンの以下の場所で出力カラムを調整いただけます。 この記事と ^mypButtons が、みなさんの大切な InterSystems IRIS のパフォーマンスを、みなさんご自身で確認いただくきっかけになれば幸いです。Happy SystemPeformance 😆
記事
Toshihiko Minamoto · 2023年9月1日

InterSystems IRIS で使用する新しいデータベース、ネームスペース、Web アプリケーションをプログラムで作成する方法

以下は、InterSystems IRIS で使用するデータベース、ネームスペース、および Web アプリケーションを作成できる ObjectScript スニペットです。 ``` set currentNS = $namespace zn "%SYS" write "Create DB ...",! set dbName="testDB" set dbProperties("Directory") = "/InterSystems/IRIS/mgr/testDB" set status=##Class(Config.Databases).Create(dbName,.dbProperties) write:'status $system.Status.DisplayError(status) write "DB """_dbName_""" was created!",!! write "Create namespace ...",! set nsName="testNS" //グローバルの DB set nsProperties("Globals") = dbName //ルーチンの DB set nsProperties("Routines") = dbName set status=##Class(Config.Namespaces).Create(nsName,.nsProperties) write:'status $system.Status.DisplayError(status) write "Namespace """_nsName_""" was created!",!! write "Create web application ...",! set webName = "/csp/testApplication" set webProperties("NameSpace") = nsName set webProperties("Enabled") = $$$YES set webProperties("IsNameSpaceDefault") = $$$YES set webProperties("CSPZENEnabled") = $$$YES set webProperties("DeepSeeEnabled") = $$$YES set webProperties("AutheEnabled") = $$$AutheCache set status = ##class(Security.Applications).Create(webName, .webProperties) write:'status $system.Status.DisplayError(status) write "Web application """webName""" was created!",! zn currentNS ``` 以下のマニュアルもご覧ください。 - [データベースの作成](https://irisdocs.intersystems.com/iris20181/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Config.Databases) - [ネームスペース](https://irisdocs.intersystems.com/iris20181/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Config.Namespaces) - [CSP アプリケーション](https://irisdocs.intersystems.com/iris20181/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=Security.Applications)
記事
Toshihiko Minamoto · 2020年12月25日

Docker for Windows で InterSystems IRIS コンテナを使用する

InterSystems は自社が提供する InterSystems IRIS の Dockerイメージについて、Linux 環境での使用のみをサポートしています。 Docker for Windows は Linux プラットフォームのようにコンテナをネイティブプロセスとして実行するのではなく、Windows の仮想化機能である Hyper-V で実行される Linux VM を作成してコンテナをホストします。 このような追加レイヤーによって複雑度が増しているため、InterSystems は現時点で Docker for Windows をサポートすることができません。 ただし、テストやその他の特殊な目的のために InterSystems の IRIS ベースのコンテナを Docker for Windows 環境で実行する必要があることは私たちも理解しています。 この記事では、InterSystems が提供するコンテナイメージの使用に関して InterSystems が認識している Docker for Windows と Docker for Linux の違いについて説明します。 その他にも予期しない問題が発生する可能性はあります。 Windows プラットフォームで InterSystems IRIS のイメージとコンテナを使用する場合は、参考のために [Docker ドキュメント](https://docs.docker.com/)(特に「[Getting started with Docker for Windows](https://docs.docker.com/docker-for-windows/)」)にアクセスできることを確認してください。 Docker for Windows 環境のコンテナで外部永続ストレージを操作する場合は、Windows および Linux のファイルシステムとファイル操作の両方が関係してくるため、ここでは主にストレージに関係する違いを説明しています。 InterSystems が提供するイメージを使用して InterSystems IRIS を Docker コンテナで実行する場合の一般的な情報については、「[Running InterSystems IRIS in Docker Containers](http://docs.intersystems.com/iris201811/csp/docbook/DocBook.UI.Page.cls?KEY=ADOCK)」と「[First Look: InterSystems IRIS in Docker Containers](http://docs.intersystems.com/iris201811/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_containers)」を参照してください。 ### ディスクドライブを共有する Windows では Docker が存在するディスクドライブを共有し、Docker に操作対象となるすべてのストレージへのアクセスを許可する必要があります。 1 台以上のドライブを共有するには、次の手順に従ってください(この手順は前の項目の手順と組み合わせることができます)。 1. システムトレイの Docker アイコンを右クリックし、[**Settings ...**] を選択します。 2. [**Shared Drives**] タブを選択し、ストレージが配置されているドライブを選択してから [**Apply**] をクリックします。 ドライブがすでに選択されている場合は(デフォルトでは C ドライブが選択されています)、チェックボックスをオフにして [**Apply**] をクリックし、ドライブを選択してから [**Apply**] をもう一度クリックします。 3. プロンプトが表示されたら、ログイン資格情報を入力します。 4. 変更を適用すると、Docker が自動的に再起動します。再起動しなかった場合はシステムトレイの Docker アイコンを右クリックし、[**Restart**] を選択します。 ### コンテナ内で外部ファイルをコピーする Docker を使用する場合は、一般的には外部ファイルシステム内のディレクトリをコンテナ内のボリュームとしてマウントし、それをコンテナ内のソフトウェアが必要とするすべての外部ファイル用の場所として使用するのが便利です。 例えば、あるボリュームをマウントし、**iris-main** プログラムの **--key** オプションとパスワード変更スクリプトがそれぞれアクセスする外部ディレクトリにある InterSystems IRIS のライセンスキー(**iris.key**)や所定の InterSystems IRIS のパスワードを含むファイルを配置できます(「_Running InterSystems IRIS in Containers_」の「[The iris-main Program](docs.intersystems.com/iris201811/csp/docbook/DocBook.UI.Page.cls?KEY=ADOCK#ADOCK_iris_iscmain)」と「[Changing the InterSystems IRIS Password](docs.intersystems.com/iris201811/csp/docbook/DocBook.UI.Page.cls?KEY=ADOCK#ADOCK_iris_images_password)」を参照してください)。 ただし、Docker for Windowsではファイル操作とアクセス許可の違いにより、マウントされた外部ボリューム上のファイルがコンテナ内のプログラムによって適切に使用されない場合があります。 多くの場合はプログラムでコンテナ内のファイルをコピーしてからそのコピーを使用することで、アクセス許可の問題を解決できます。 例えば、**iris-main --before **オプションはコンテナ内の InterSystems IRIS インスタンスのパスワードを変更するためによく使用されます。以下に例を示します。 --before "changePassword.sh /external/password.txt" この方法を使っても Windows で意図したとおりにパスワードを変更できない場合は、以下を試してください。 --before "cp /external/password.txt /external/password_copied.txt &&  \changePassword.sh /external/password_copied.txt" ### 名前付きボリュームを使用する 動的に変更されるファイルが多数存在する場合、個別にマウントしてすべてのファイルをコピーできたとしても、コンテナ内に Windows ファイルシステムを直接マウントすると問題が発生する可能性があります。 InterSystems IRIS の場合、これは特にインスタンス固有データを永続的に保管するための Durable %SYS 機能(「Running InterSystems IRIS in Containers」の「Durable %SYS for Persistent Instance Data」を参照してください)とジャーナルファイルの保管の両方に当てはまります。 この問題は名前付きボリュームをマウントすることで解決できます。名前付きボリュームは、システム上のコンテナをホストしている Linux VM のファイルシステムにマウントポイントを持つストレージボリュームです。 VM はファイルシステムベースであるため、このようなボリュームの内容は Docker やシステムがダウンした場合でも VM の他の部分と一緒に Windows ディスクに保存されます。 例えば InterSystems IRIS コンテナを実行中に Durable %SYS を有効化する場合、一般的には外部ボリュームをマウントし、**--env** オプションを使用して **ISC\_DATA\_DIRECTORY** 環境変数をそのボリュームの場所に設定します。以下に例を示します。 docker run ... \--volume /nethome/pmartinez/iris_external:/external  \--env ISC_DATA_DIRECTORY=/external/durable/ この方法は Docker for Windows では使えません。代わりに、docker volume create コマンドで名前付きボリュームを作成し、Durable %SYS ディレクトリをそこに配置する必要があります。 また、Linux とは異なり、ISC_DATA_DIRECTORY には最上位の Durable %SYS ディレクトリである /irissys を指定する必要があります。 したがって、Windows では次のようなオプションになります。 docker volume create durabledocker run ... \--volume durable:/durable \--env ISC_DATA_DIRECTORY=/durable/irissys/ インスタンスのジャーナルファイルにこの方法を使用するには、上記の Durable %SYS の例と同じように名前付きボリュームを作成してマウントし、任意の構成方法(**^JOURNAL** ルーチン、管理ポータルの [Journal Settings] ページ、または **iris.cpf** ファイル)を使用して現在および代替のジャーナルディレクトリを名前付きボリュームの場所に設定します。 現在のジャーナルディレクトリと代替のジャーナルディレクトリを分離するには、それぞれに対応する名前付きボリュームを作成してマウントする必要があります (この方法は_**十分に検証されておらず**_、ジャーナルファイルが危険にさらされる可能性がありますのでご注意ください)。 VM 内の名前付きボリュームにある Linux ファイルシステムのマウントポイントを検出するには、次のように **docker volume inspect** コマンドを使用します。 docker volume inspect durable_data[    {        "CreatedAt": "2018-05-04T12:11:54Z",        "Driver": "local",        "Labels": null,        "Mountpoint": "/var/lib/docker/volumes/durable_data/_data",        "Name": "durable_data",        "Options": null,        "Scope": "local"    }] ### コマンドの比較 上記の内容をすべて考慮し、「_First Look: InterSystems IRIS in Docker Containers_」の「[Run and Investigate the InterSystems IRIS-based Container](docs.intersystems.com/iris201811/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_containers#AFL_containers_deploy_run2)」に記載されている Linux プラットフォームでの実行を想定した最終的な **docker run** コマンドと Docker for Windows を使用した同等の **docker run** コマンドを比較すると次のようになります。 #### Linux $ docker run --name iris3 --detach --publish 52773:52773 \  --volume /nethome/pmartinez/iris_external:/external \  --env ISC_DATA_DIRECTORY=/external/durable \  --env ICM_SENTINEL_DIR=/external iris3:test --key /external/iris.key \  --before "changePassword.sh /external/password.txt" #### Windows C:\Users\pmartinez>docker volume create durableC:\Users\pmartinez>docker volume create journalsC:\Users\pmartinez>docker run --name iris3 --detach --publish 52773:52773 \--volume durable:/durable\--volume journals:/journals--env ISC_DATA_DIRECTORY=/durable/irissys \--env ICM_SENTINEL_DIR=/durable iris3:test --key /external/iris.key \--before "cp /external/password.txt /external/password_copied.txt && \changePassword.sh /durable/password_copied.txt" Docker for Windows での InterSystems 提供コンテナの使用に関する情報をご提供可能な方は、こちらにコメントを追加するか、記事の投稿をお願いします!
記事
Toshihiko Minamoto · 2020年11月16日

InterSystems API Management を使用して API の負荷を分散する

InterSystems API Management(IAM)は、IT インフラストラクチャ内の Web ベースの API との間のトラフィックを監視、制御、および管理できる InterSystems IRIS Data Platform の新機能です。 アナウンスを見逃した方は、[こちらのリンク](https://community.intersystems.com/post/announcing-release-intersystems-api-manager)を参照してください。 また、[IAM](https://community.intersystems.com/post/introducing-intersystems-api-manager) の使い方を説明した記事もあります。 この記事では、InterSystems API Management を使用して API の負荷を分散します。 この例では、2 つの InterSystems IRIS インスタンスを使用し、クライアントに `/api/atelier` REST API を公開したいと思います。 そのようにしたいと思う理由は、次のようにさまざまです。 * 負荷分散により、サーバー間でワークロードを分散する。 * ブルーグリーンデプロイの実践。片方を「本番用」、もう片方を「開発用」とする 2 台のサーバーを用意し、それらを切り替えられるようにする。 * カナリアデプロイの実践。1 台のサーバーでのみ新しいバージョンを公開し、クライアントの 1 %をそこに移動する。 * 高可用性構成の実現。 * その他。 しかし、いずれの場合も実行する必要のある手順は同じようなものです。 ### **前提条件** * 2 つの InterSystems IRIS インスタンス * InterSystems API Management インスタンス   ### **作業開始** 必要な作業を以下に掲載します。 **1. アップストリームの作成** アップストリームは仮想ホスト名を表し、複数のサービス(ターゲット)で着信リクエストの負荷を分散するために使用されます。 例えば、`service.v1.xyz` という名前のアップストリームはホストが `service.v1.xyz` であるサービスのリクエストを受け付けます。 このサービスのリクエストは、アップストリーム内で定義されたターゲットにプロキシされます。 アップストリームには、リクエストを処理する能力の有無に基づいてターゲットを有効または無効にできるヘルスチェッカーも含まれています。 はじめに、次の手順を実行します。 * IAM 管理ポータルを開く * ワークスペースに移動する * ワークスペースを選択する * アップストリームを開く * [New Upstream] ボタンをクリックする [New Upstream] ボタンをクリックすると、アップストリームに関する基本情報を入力できるフォームが表示されます(他にも多くのプロパティがあります)。 _name_ にサービスが使用する仮想ホスト名を入力します。 この値は DNS レコードとは無関係です。 混乱を避けるために、存在しない値に設定することをお勧めします。 残りのプロパティについて確認したい場合は、[ドキュメントを参照してください](https://docs.intersystems.com/irislatest/csp/docbook/apimgr/1.0.x/admin-api.html#upstream-object)。 スクリーンショットでは、新しいアップストリームに `myupstream` という仮の名前を付けています。   **2. ターゲットの作成** ターゲットは、リクエストを実行して結果をクライアントに送り返すバックエンドサーバーです。 アップストリームに移動し、作成したアップストリーム名をクリックします([Update] ボタンではありません)。 既存のすべてのターゲット(現時点では存在しません)と [New Target] ボタンが表示されます。 このボタンを押します。 そして、新しいフォームでターゲットを定義します。 ここで使用できるパラメーターは次の 2 つだけです。 * target - バックエンドサーバーのホストとポート * weight - このサーバーに与えられた相対的な優先度(wight の値が大きいほど、より多くのリクエストがこのターゲットに送信されます) ここでは次のように 2 つのターゲットを追加しました。     **3. サービスの作成** アップストリームを作成しましたので、今度はそのアップストリームにリクエストを送信する必要があります。 そのためにはサービスを使用します。 サービスエンティティは、その名前が示すように各アップストリームサービスを抽象化したものです。 サービスの例としては、データ変換、 マイクロサービス、課金 API などがあります。 IRIS インスタンスをターゲットとするサービスを作成してみましょう。[Service] に移動し、[New Service] ボタンを押します。 次の値を設定します。 | フィールド | 値 | 説明 | | -------- | ------------ | ------------ | | name | myservice | このサービスの論理名 | | host | myupstream | アップストリーム名 | | path | /api/atelier | 提供したいルートパス | | protocol | http | サポートしたいプロトコル |   上記以外はデフォルト値のままにしてください(port: 80 を含みます)。 作成したサービスは、サービスのリストに表示されます。 サービスの id をどこかにコピーしておいてください。後で必要になります。   **4. ルートの作成** ルートは、クライアントのリクエストに一致するルールを定義します。 各ルートはサービスに関連付けられ、サービスには複数のルートを関連付けることができます。 特定のルートに一致するすべてのリクエストは、関連するサービスにプロキシされます。 ルートとサービスを組み合わせる(およびそれらの関係を分離する)ことで強力なルーティング機構を実現し、インフラストラクチャのさまざまなアップストリームサービスにつながる IAM できめ細かなエントリポイントを定義することができます。 それでは、ルートを作成しましょう。 [Routes] に移動し、[New Route] ボタンを押します。 ルートの作成フォームで次の値を設定します。 | フィールド | 値 | 説明 | | -------- | ------------ | ------------ | | path | /api/atelier | 提供したいルートパス | | protocol | http | サポートしたいプロトコル | | service.id | 3のguid | サービス id の値(前のステップの guid) | 以上です! `http://localhost:8000/api/atelier/`(最後のスラッシュに注意)に送信されたリクエストは、2 つのバックエンドのいずれかによって処理されます。   ### **まとめ** IAM は詳細にカスタマイズ可能な API 管理インフラストラクチャを提供し、開発者と管理者が API を制御できるようにします。   ### **リンク** * [ドキュメント](https://docs.intersystems.com/irislatest/csp/docbook/apimgr/index.html) * [IAM のアナウンス](https://community.intersystems.com/post/announcing-release-intersystems-api-manager)  * [IAM を取り扱った記事](https://community.intersystems.com/post/introducing-intersystems-api-manager)   ### **質問** IAM を使用してどのような機能を実現してほしいですか?
お知らせ
Mihoko Iijima · 2021年8月23日

★受賞者発表!★第1回 InterSystems 技術文書ライティングコンテスト

開発者の皆さん、こんにちは! 第1回 InterSystems 技術文書ライティングコンテスト が終了し、23 の素晴らしい記事🔥が掲載されました! 初開催の技術文書ライティングコンテストへご参加いただいた皆様、ありがとうございました! この記事では、受賞作品をご紹介します! 第1回 InterSystems 技術文書ライティングコンテストの受賞者と記事は以下の通りです! ⭐️ エキスパートアワード – InterSystems のエキスパートが選出した記事: 🥇 1位: @sween さんが投稿した BILLIONS - Monetizing the InterSystems FHIR® Accelerator Service with Google Cloud's Apigee Edge 🥈 2位: @Yuri.Gomes さんが投稿した Learning Path for beginners 🥉 3位: @Yuri.Gomes さんが投稿した InterSystems IRIS REST Application Patterns ⭐️ コミュニティアワード – 開発者コミュニティメンバーからの「いいね!」が最も多かった記事: 🎉 Winner: @henry さんが投稿した Let's fight against the machines! ⭐️ 今回のコンテストに多くの記事を投稿してくださった開発者の皆さんをご紹介します! @Nigel Salm: 3 articles 🤩 @Kurro Lopez: 3 articles 🤩 @Oliver Wilms: 3 articles 🤩 @Robert Cemper: 2 articles 🤩 @YURI MARX GOMES: 2 articles 🤩 WOW!この偉大な貢献をされた方々に 🎁 Nike Utility Speed Backpack 🎁をプレゼントいたします! ⭐️ 投稿してくださった開発者の皆さん、ありがとうございました! community.intersystems.com/contests/1: @Robert Cemper @Nigel Salm @Henrique Dias @Dmitry Maslennikov @Kurro Lopez @Herman Slagman @Sergei Mihaylenko @Iryna Mykhailova @Oliver Wilms @Julian Matthews @Muhammad Waseem @Crys 開発者コミュニティに素晴らしい記事を投稿いただき、ありがとうございました。 P.S. 賞品は現在制作中です。賞品の発送準備が整い次第、参加者の皆様にご連絡いたします。 第1回 技術文書ライティングコンテストは、開発者の皆様からの多くの記事の投稿により、素晴らしいコンテストになりました! 参加された皆様、記事の作成にご尽力いただきありがとうございました! さて、次回開催は.....? 次の InterSystems 技術文書ライティングコンテストもご期待ください! 😉
記事
Toshihiko Minamoto · 2022年3月15日

InterSystems IRIS で Python を使って IMAPクライアントを実装する

これまでの記事では、メールサーバーのメールボックスからのメッセージを処理する IMAP プロトコルの基本的な使用方法を学習しました。 とても興味深いものではありましたが、他の人が作成してすぐに利用できるようにライブラリに提供されている実装を利用することも可能です。 IRIS データプラットフォームの改善の 1 つに、同じ IRIS プロセスで ObjectScript に並行して Python コードを記述できる機能があります。 この新機能は、[組み込み Python](https://community.intersystems.com/post/start-learning-about-embedded-python) と呼ばれます。 組み込み Python を使用すると、ObjectScript コードに巨大な [Python エコシステムのライブラリ](https://pypi.org/)の力を取り込むことができます。 この記事では、[imaplib](https://docs.python.org/3/library/imaplib.html) というライブラリを使用して IMAP クライアントを実装し、それを [IRIS Email フレームワーク](hhttps://jp.community.intersystems.com/node/512306) に統合することにします。 また、Python エコシステムの力を借りて、組み込み Python を使用して、IRIS プラットフォームでの実際の課題を解決する方法を示す実用的な例も確認します。 ここで実装されているすべてのコードは、こちらの GitHub [リポジトリ](https://github.com/jrpereirajr/iris-imap-inbound-adapter-demo)の [python ディレクトリ](https://github.com/jrpereirajr/iris-imap-inbound-adapter-demo/tree/main/src/dc/demo/imap/python)にあります。 Python コードは最近の IRIS バージョンでのみ機能することに注意してください。 この例で使用されているバージョンは、2021.1.0.215.3-zpm です。 組み込み Python に関する最新情報は、[こちら](https://jp.community.intersystems.com/tags/python)でフォローできます。 ## 組み込み Python の使用 組み込み Python を使用するための鍵は、%SYS.Python クラスにあります。 このクラスを使用すると、次のことを行えます。 * Python ライブラリのインポート: `##class(%SYS.Python).Import(“package-name”)` * ローカルシステムへの利用可能なカスタム Python モジュール(*.py ファイル)のインポート: `##class(%SYS.Python).Import(“module-file.py”)` * 次のような、割り当てまたはパラメーターでの Python の組み込み型の使用: * Python None オブジェクト: `##class(%SYS.Python).None()` * Python True オブジェクト: `##class(%SYS.Python).True()` * Python False オブジェクト: `##class(%SYS.Python).False()` * ObjectScript 文字列から Python Bytes オブジェクト(8 ビット文字列)への変換: `##class(%SYS.Python).Bytes(“ObjectScript string”)` これらのメソッドは、Python オブジェクトを作成し、ObjectScript オブジェクトを返すため、 その Python オブジェクトのプロパティとメソッドを直接 ObejctScript コードで使用することができます。 たとえば、secrets ライブラリを使ってパスワードを生成するために、この Python [レシピ](https://docs.python.org/ja/3/library/secrets.html#recipes-and-best-practices)をどのように実装できるか見てみましょう。 USER>Set string = ##class(%SYS.Python).Import("string") USER>Set secrets = ##class(%SYS.Python).Import("secrets") USER>ZWrite secrets // let's check what this object is... secrets=1@%SYS.Python ; ; USER>ZWrite string // same for this one... string=2@%SYS.Python ; ; USER>Set alphabet = string."ascii_letters" _ string.digits // here we are accessing Python properties from string object USER>Set pwd = "" USER>For i=1:1:8 { Set pwd = pwd _ secrets.choice(alphabet) } USER>Write pwd Qv7HuOPV 上記のコードでは、Python オブジェクトからいくつかのプロパティとメソッドを使用して、ObjectScript 変数を設定しています。 ObjectScript 変数は、Python オブジェクトメソッドのパラメーターとして使用します。 埋め込み Python を使用する上でのもう 1 つの重要なポイントは、魔法のメソッドと呼ばれることもある特有の属性とメソッドです。 [Python データモデル](https://docs.python.org/3/reference/datamodel.html)のすべてはオブジェクトであるため、これらの属性とメソッドは、Python インタープリターのインターフェースを提供します。 たとえば、次のように、[\_\_getitem\_\_](https://docs.python.org/ja/3/reference/datamodel.html#object.\_\_getitem\_\_) という特殊メソッドを使用し、アイテムのインデックスを使ってリストからアイテムを取得することができます。 USER>Set b = ##class(%SYS.Python).Import("builtins") USER>Set list = b.list() // creates a Python list USER>Do list.append(1) USER>Do list.append(2) USER>Do list.append(3) USER>ZWrite list list=4@%SYS.Python ; [1, 2, 3] ; USER>w list."__getitem__"(0) // in Python, indexes are 0-based 1 USER>w list."__getitem__"(2) 3 同様に、リストの長さについても、\_\_len\_\_ 特殊メソッドを使用して取得することができます。 USER>Set listLen = list."__len__"() USER>ZWrite listLen listLen=3 これらを組み合わせて、ObjectScript を使用してリストを反復処理することができます。 USER>For i=0:1:(listLen - 1) { Write list."__getitem__"(i), ! } 1 2 3 None、True、False のような定数値を使用する必要がある場合は、%SYS.Python クラスから次のメソッドを使用することができます。 USER>Set none = ##class(%SYS.Python).None() USER>Set true = ##class(%SYS.Python).True() USER>Set false = ##class(%SYS.Python).False() USER>ZWrite none, true, false none=5@%SYS.Python ; None ; true=6@%SYS.Python ; True ; false=7@%SYS.Python ; False ; 同様に、ObjectScript 文字列を Python Bytes オブジェクトに変換することができます。 USER>Set bytes = ##class(%SYS.Python).Bytes("This is a string") USER>ZWrite bytes bytes=8@%SYS.Python ; b'This is a string' ; 最後に、カスタム Python モジュールを定義して、ObjectScript コンテキストにインポートします。 組み込み Python の使用方法に関するその他の便利なリソースは、[こちら](https://jp.community.intersystems.com/tags/python)をご覧ください。 たとえば、[Robert Cemper](https://community.intersystems.com/user/robert-cemper-0) の[例](https://community.intersystems.com/post/websocket-client-embedded-python)はお勧めです。 ## 代替 IMAP クライアントの作成 imaplib を使用して IMAP クライアントを実装するには、通常の [ObjectScript](https://community.intersystems.com/post/implementing-imap-client-intersystems-iris-part-i) を使用します。 最初から IMAP プロトコルを実装する代わりに、メソッドを impalib メソッドでオーバーライドします。 まず、dc.demo.imap.python.IMAPPy という新しいクラスを作成します。 このクラスは、2 つのプロパティを使用して Python オブジェクトへの参照を格納します。 Class dc.demo.imap.python.IMAPPy Extends dc.demo.imap.IMAP { /// Stores the imaplib object reference Property imaplib As %SYS.Python; /// Stores the imaplib client instance Property client As %SYS.Python; ... 次に、imaplib ライブラリを ObjectScript コンテキストのクラスコンストラクタにインポートします。 Method %OnNew() As %Status [ Private ] { Set ..imaplib = ##class(%SYS.Python).Import("imaplib") Return $$$OK } これで、imaplib クラスプロパティを使用して、すべての impalib プロパティとメソッドにアクセスできるようになりました。 最初にオーバーライドするメソッドは、Connect メソッドです。 このメソッドは imaplib の IMAP4_SSL メソッドを使用して、IMAP サーバーへの接続を行います。 imaplib クライアントインスタンスをクライアントプロパティとして格納します。 imapilb クライアントの login メソッドは、次のようにしてログインリクエストを認証します。 Method Connect(pServer As %String, pUserName As %String, pPassword As %String) As %Status { If ..Connected Return $$$ERROR($$$ConnectedError) Set sc = $$$OK Try { Set ..Server = pServer Set ..UserName = pUserName Set ..client = ..imaplib."IMAP4_SSL"(..Server) Set resp = ..client.login(..UserName, pPassword) Set ..Connected = 1 } Catch ex { Set sc = ex.AsStatus() } Return sc } 次にオーバーライドするメソッドは Disconnect メソッドです。 このメソッドは、imaplib クライアントから logout メソッドを呼び出すようになります。 Method Disconnect() As %Status { Set sc = $$$OK Try { If ..Connected { Set tuple = ..client.logout() Set ..Connected = 0 } } Catch ex { Set sc=ex.AsStatus() } Return sc } GetMailBoxStatus メソッドは、imaplib から select メソッドを使用してアクセスするメールボックスを指定するようにオーバーライドされています。 Method GetMailBoxStatus(ByRef NumberOfMessages As %Integer, ByRef NumberOfBytes As %Integer) As %Status { Set sc = $$$OK Try { Do ..CheckConnection() Set resp = ..client.select(..MailboxName) Set ackToken = resp."__getitem__"(0) Set dataArray = resp."__getitem__"(1) Set NumberOfMessages = dataArray."__getitem__"(0) Set NumberOfBytes = -1 } Catch ex { Set sc=ex.AsStatus() } Return sc } このメソッドはタプルを返すため、特殊な \_\_getitem\_\_ メソッドによって、情報を取得することができることに注意してください。 また、タプルは別のタプルを格納することができるため、再帰的に \_\_getitem\_\_ を使用できることを忘れないでください。 次にオーバーライドするメソッドは、GetSizeOfMessages です。 このメソッドは、select メソッドを使用して現在のメールボックスを選択し、fetch メソッドを使用して MessageNumber パラメーターに格納されたメッセージのサイズを取得するようになります。 Method GetSizeOfMessages(MessageNumber As %String = "", ByRef ListOfSizes As %ArrayOfDataTypes) As %Status { Set sc = $$$OK Try { Do ..CheckConnection() // select the mailbox Set resp = ..client.select(..MailboxName) // hack to ensure that MessageNumber is of type %String Set MessageNumber = MessageNumber_"" Set resp = ..client.fetch(MessageNumber, "(RFC822.SIZE)") Set ackToken = resp."__getitem__"(0) Set dataArray = resp."__getitem__"(1) Set:('$ISOBJECT($Get(ListOfSizes))) ListOfSizes = ##class(%ArrayOfDataTypes).%New() Set data = dataArray."__getitem__"(0) Set msgIdx = +$Piece(data, " ", 1) Set size = +$Piece(data, " ", 3) Do ListOfSizes.SetAt(size, msgIdx) } Catch ex { Set sc=ex.AsStatus() } Return sc } 同様に、GetMessageUIDArray メソッドも fetch メソッドを使用するようにオーバーライドしますが、これは、UID コードを取得するために使用します。 Method GetMessageUIDArray(MessageNumber As %String = "", ByRef ListOfUniqueIDs As %ArrayOfDataTypes) As %Status { Set sc = $$$OK Try { Do ..CheckConnection() // select the mailbox Set resp = ..client.select(..MailboxName) Set mailboxSize = resp."__getitem__"(1)."__getitem__"(0) If (mailboxSize > 0) { // hack to ensure that MessageNumber is of type %String Set MessageNumber = MessageNumber_"" // then get the mailbox UIDs Set param = $CASE(MessageNumber, "":"1:*", :MessageNumber) Set resp = ..client.fetch(param, "UID") Set ackToken = resp."__getitem__"(0) Set dataArray = resp."__getitem__"(1) Set len = dataArray."__len__"() } Else { Set len = 0 } Set:('$ISOBJECT($Get(ListOfUniqueIDs))) ListOfUniqueIDs = ##class(%ArrayOfDataTypes).%New(len) For i = 1:1:len { Set data = dataArray."__getitem__"(i - 1) Set msgIdx = +$Piece(data, " ", 1) Set size = +$Piece(data, " ", 3) Do ListOfUniqueIDs.SetAt(size, msgIdx) } } Catch ex { Set sc=ex.AsStatus() } Return sc } dataArray 変数のタプルを反復処理するために、 \_\_getitem\_\_ メソッドと \_\_len\_\_ メソッドを使用しているところに注意してください。 … Set len = dataArray."__len__"() … For i = 1:1:len { Set data = dataArray."__getitem__"(i - 1) Set msgIdx = +$Piece(data, " ", 1) Set size = +$Piece(data, " ", 3) Do ListOfUniqueIDs.SetAt(size, msgIdx) } 次に、Fetch メソッドをオーバーライドします。これは、メッセージ本文全体を取得するために使用します。 Method Fetch(MessageNumber As %Integer, ByRef Msg As %Net.MailMessage, Delete As %Boolean, messageStream As %BinaryStream) As %Status { Set sc = $$$OK Try { Do ..CheckConnection() // select the mailbox Set resp = ..client.select(..MailboxName) // hack to ensure that MessageNumber is of type %String Set MessageNumber = MessageNumber_"" // get the whole message Set resp = ..client.fetch(MessageNumber, "BODY.PEEK[]") Set rawMsg = ..TransversePythonArray(resp."__getitem__"(1)) ... } Catch ex { Set sc=ex.AsStatus() } Return sc } TransversePythonArray メソッドが存在することに注意してください。 fetch メソッドで返されるメッセージ本文は複合コレクションであるため、このコレクションを再帰的に横断して単一の文字列にフラット化するために、このメソッドを作成しています。 ClassMethod TransversePythonArray(pArray As %SYS.Python) As %String { Set acc = "" If ($IsObject(pArray)) { Set len = pArray."__len__"() For i = 1:1:len { Set item = pArray."__getitem__"(i - 1) If ($IsObject(item)) { Set acc = acc_..TransversePythonArray(item) } Else { Set acc = acc_item } Set acc = acc_$Char(13, 10) } } Else { Set acc = pArray_$Char(13, 10) } Return acc } また、imaplib noop メソッドを使用するように Ping メソッドをオーバーライドします。 Method Ping() As %Status { Set sc = $$$OK Try { Do ..CheckConnection() Set resp = ..client.noop() } Catch ex { Set sc=ex.AsStatus() } Return sc } オーバーライドする最後のメソッドは CommitMarkedAsDeleted メソッドです。 store メソッドと expunge メソッドを使用して、メッセージに削除マークを付けてその操作をコミットするようになります。 Method CommitMarkedAsDeleted() As %Status [ Internal, Private ] { Set sc = $$$OK Try { Do ..CheckConnection() // select the mailbox Set resp = ..client.select(..MailboxName) // transverse array in inverse order to keep numbers integrity, // that is, ensures that when the number is deleted no other // message can assume such number Set messageNumber = $Order(..MarkedAsDeleted(""), -1) While (messageNumber '= "") { // hack to ensure that messageNumber is of type %String Set messageNumber = messageNumber_"" Set resp = ..client.store(messageNumber, "+FLAGS", "\Deleted") Set messageNumber = $Order(..MarkedAsDeleted(messageNumber), -1) } Kill ..MarkedAsDeleted Set resp = ..client.expunge() } Catch ex { Set sc=ex.AsStatus() } Return sc } ## まとめ この方法は、IRIS TCP コマンドを使用して各 IMAP コマンドを手動で実装する必要のある元の方法に比べ、はるかに簡単に実装できます。 機能性豊かな Python ライブラリエコシステムを実際の問題に使用する優れた方法の例を確認できたので、あなたの ObjectScript アプリケーションをパワーアップし始めましょう! ## 参考情報 * [imaplib — IMAP4 プロトコルクライアント](https://docs.python.org/3/library/imaplib.html) * [動画: Embedded Python in InterSystems IRIS: Sneak Peek](https://community.intersystems.com/post/new-video-embedded-python-intersystems-iris-sneak-peek) * [Embedded Python: Bring the Python Ecosystem to Your ObjectScript App](https://learning.intersystems.com/course/view.php?id=1572) * [Learn Python Network Programming: Python - IMAP](https://www.tutorialspoint.com/python_network_programming/python_imap.htm) * [Python ドキュメント: レシピとベストプラクティス](https://docs.python.org/3/library/secrets.html#recipes-and-best-practices) * [Python ドキュメント: データモデル](https://docs.python.org/3/reference/datamodel.html) * [WebSocket Client with Embedded Python](https://community.intersystems.com/post/websocket-client-embedded-python) * [Intersystems 開発者コミュニティ: #Python](https://jp.community.intersystems.com/tags/python)
お知らせ
Yoichi Miyashita · 2021年12月1日

勧告: InterSystems キットで提供される Apache Web サーバ

InterSystems 製品のキットには Apache Web サーバが含まれています。これにより、お客様が外部Webサーバをインストールせずに Caché/IRIS 管理ポータルを動作させる為の便利な方法を提供しています。ただし、このWebサーバを実稼働インスタンスに使用しないでください。お客様は、システムに応じたニーズとセキュリティ/リスク要件に適合するWebサーバを別途インストールする必要があります。 最近のテストでは、現在含まれている Apache Web サーバにいくつかのセキュリティ問題があることがわかっていますが InterSystems が管理していないテクノロジである為、InterSystems は、Apache または別のサードパーティから直接取得した Web サーババージョンをインストールし、付属の Apache Webサーバ を無効にすることをお勧めします。InterSystems は、今後のリリースに Apache Web サーバの新しいバージョンを含める予定です。現在のバージョンと同様に、そのバージョンも本番インスタンスには使用できません。当社の製品の将来のリリースでは、InterSystems はWeb サーバを同梱またはインストールしません。計画の詳細については、今後、更新情報を提供する予定です。
お知らせ
Mihoko Iijima · 2021年12月27日

★受賞者発表★第2回 InterSystems 技術文書ライティングコンテスト

開発者の皆さん、こんにちは! 第2回 InterSystems 技術文書ライティングコンテストが終了し、多くの記事が掲載されました! 🌟 25 AMAZING ARTICLES 🌟 この記事では、受賞作品をご紹介します!​​​​​​ ⭐️エキスパートアワード – InterSystems のエキスパートが選出した記事: 🥇 1位: Data anonymization, introducing iris-Disguise by @henry 🥈 2位: IntegratedML hands-on lab by @José.Pereira 🥉 3位は2名が受賞されました。 VSCode-ObjectScript on GitHub by @Dmitry.Maslennikov Invite the FHIR® Accelerator Service to your Kubernetes Microservice Party by @sween ⭐️ コミュニティアワード – 開発者コミュニティメンバーからの「いいね!」が最も多かった記事: 🏆 Data anonymization, introducing iris-Disguise by @henry この当選が、当選者の皆様への素敵なクリスマスプレゼント🎁になることを願っています! ⭐️ 今回のコンテストに多くの記事を投稿してくださった開発者の皆さんをご紹介します! @Yuri.Gomes: 4 記事を投稿されました! @MikhailenkoSergey: 3 記事を投稿されました! お二人には、Apple AirPods Pro または Amazon Kindle 8G Paperwhite または InterSystems IRIS Community Edition ARM がインストールされた Raspberry Pi 4 8GB がプレゼントされます! 投稿してくださった開発者の皆さん、ありがとうございました!👉 https://community.intersystems.com/contests/2 @Robert.Cemper1003 @Henrique @Muhammad.Waseem @Rob.Tweed @John.Murray @alex.kosinets @Iryna.Mykhailova @Oliver.Wilms @Rizmaan.Marikar2583 開発者コミュニティに素晴らしい記事を投稿いただき、ありがとうございました。 素敵な年末年始休暇をお過ごしください!🎅 なお、賞品は現在制作中です。発送の準備ができ次第、参加者の皆様にご連絡させていただきます。
お知らせ
Mihoko Iijima · 2024年7月8日

★受賞者発表!★第3回 InterSystems アイデアコンテスト

開発者の皆さん、こんにちは! 💡 第3回 InterSystems アイデアコンテスト が終了しました。今回、🔥 30 もの新しいアイデアが投稿されました! いずれも InterSystems IRIS および関連製品やサービスの改善に焦点が当てられていて、アイデアが実装された場合、開発者にとってより具体的なメリットとなることでしょう。 この記事では、アイデアコンテストの勝者の皆さんをご紹介します。 Experts Nomination 🥇 1位 Add a debugger for Embedded Python in Visual Studio Code を投稿された @Pietro.DiLeo さんに、🎁 JBL Tour Pro wireless Noise Cancelling earbuds が贈られます。 🥈 2位 Distributed Work Manager を投稿された @Alexey.Maslov さんに、🎁 Patagonia Unisex Nano Puff® Vest が贈られます。 🥉 3rd位 IPM (ZPM) extension for VS Code を投稿された @John.Murray さんに、 🎁 LEGO Vespa 125 / Corvette / NASA Mars Rover Perseverance / Kawasaki Ninja H2R Motorcycle が贈られます。 Community Nomination 投票数では、以下の2つのアイデアが他を大きく引き離しており、2つ目のアイデアはトップとわずか1票差でした。参加者の皆さんに感謝の意を表するため、コミュニティ推薦を拡大し、投票数トップ2つのアイデアを表彰することにしました! 🌟 Add a debugger for Embedded Python in Visual Studio Code を投稿された @Pietro.DiLeo さんへ、以下の賞品が贈られます。🎁 LEGO Vespa 125 / Corvette / NASA Mars Rover Perseverance / Kawasaki Ninja H2R Motorcycle. そして 🌟 IPM (ZPM) extension for VS Code を投稿された @John.Murray さんには、以下の賞品が贈られます。 🎁 LEGO Vespa 125 / Corvette / NASA Mars Rover Perseverance / Kawasaki Ninja H2R Motorcycle. 🔥 さらに、第3回アイデアコンテストの参加者全員に、インターシステムズのロゴ入りブランドTシャツ(男女兼用)を特別にプレゼントいたします! 参加された方の素晴らしいアイデアはこちら! Idea Author Add a debugger for Embedded Python in Visual Studio Code @Pietro.DiLeo IPM (ZPM) extension for VS Code @John.Murray Add link to DTL Editor For Subtransforms @Julian.Matthews7786 Add shorthand options like "N" & "T-2" to represent date/timestamps in Message Viewer Search fields. @Victoria.Castillo2990 Pull in all classes and tables called in a resource at export. @Victoria.Castillo2990 Having multiple WIJ @Yaron.Munz8173 Distributed Work Manager @Alexey.Maslov In Visual Trace group response acknowledge messages under the message sent out of the operation. @Victoria.Castillo2990 Access Saved MessageViewer Searches across namespaces @Stella.Tickler Automated Schema Comparison and Synchronization @Veerarajan.Karunanithi9493 iristerminal connect securely with IRIS running on Linux hosts via SSH @Phillip.Wu2039 Built in Test data Generator @Veerarajan.Karunanithi9493 Automatic API documentation @Veerarajan.Karunanithi9493 Open delegate ruleset @Lewis.Houlden New Session for Resend @Michael.Wood9482 Update Message Viewer Search to automatically set the end time to current time at search initiation. @Victoria.Castillo2990 Querying from multiple IRIS instances @Veerarajan.Karunanithi9493 Data cleansing tool kit @Veerarajan.Karunanithi9493 Time zone conversion @Veerarajan.Karunanithi9493 Option when purging messages also include child objects @Lewis.Houlden VSCode Delete Server Version of Source Code @Cristiano.Silva Drag and drop web &mobile UI @Veerarajan.Karunanithi9493 Ability to configure namespace settings and settings outside of CPF merge file capabilities @Kari.Vatjus-Anttila5072 Improve support for client-side editing in VS Code @Robert.Barbiaux Run rules chain by using Rule Editor without DTL @William.Liu Add history and aliases to the VS Code WebSocket Terminal @Brett.Saviano allow easier consumption of structured Non-CDA documents @Daniel.Kutac Introduce YML support for IPM/ZPM module description @Evgeny.Shvarov Integrate Cloud Document DB UI into InterSystems IRIS @LuisAngel.PérezRamos Introduce YAML or JSON support for CPF Merge files @Evgeny.Shvarov 受賞者、参加者の皆さん、おめでとうございます! アイデアコンテストにご興味お持ちいただきありがとうございます。またインターシステムズの公式フィードバックポータルへの投稿ありがとうございます!💥 重要:賞品は現在製作中です。 発送準備が整い次第、参加者の皆様にご連絡いたします。
お知らせ
Mihoko Iijima · 2024年7月29日

★投票開始!★ InterSystems Python プログラミングコンテスト 2024(USコミュニティ)

開発者の皆さん、こんにちは。 Pythonプログラミングコンテストの投票が始まりました! 🔥 ベストアプリケーションはこれだ! 🔥と思う作品に是非投票をお願します! 投票方法は以下の通りです。 Experts nomination: インターシステムズの経験豊富な審査員がベストアプリを選び、Expert Nominationで賞品をノミネートします。 Community nomination: 開発者コミュニティのメンバーは、お好みのアプリケーションに対して1位~3位を指定しながら投票できます。 あなたの状況 順位 1位 2位 3位 開発者コミュニティに記事を掲載したり、OpenExchange(OEX)にアプリをアップロードしたことがある方 9点 6点 3点 開発者コミュニティに1つの記事を掲載した、または 1アプリケーションを OEX にアップロードしたことがある方 6点 4点 2点 開発者コミュニティへコメントや質問を投稿したことがある方 3点 2点 1点 エキスパートレベル 順位 1位 2位 3位 グローバルマスターズの VIP レベル または、InterSystems Product Managers 15点 10点 5点 グローバルマスターズの Ambassador レベル 12点 8点 4点 グローバルマスターズの Expert レベル または DC モデレーター 9点 6点 3点 グローバルマスターズの Specialist レベル 6点 4点 2点 グローバルマスターズの Advocate レベル または インターシステムズの従業員 3点 2点 1点 「ブラインド投票」とします 各応募作品への投票数は、誰にも分らないようになっています。1日1回、この記事のコメント欄に投票数を公開する予定です。 コンテストページの表示順は、コンテストに応募した時期が早ければ早いほど、上位に表示されます。 メモ:新しいコメントの通知を受けるために、この投稿を購読することをお忘れなく!(記事末尾の ベルのアイコンをクリックするだけ!) 投票に参加するには Open Exchange へのサインインします(開発者コミュニティのアカウントを使用してください)。 投票ボタンは、開発者コミュニティ内で、質問/回答/記事の掲載/投稿に対するコメント など 記載いただいた方に対して有効になります。 ボタンが押せない場合は、コミュニティへのコメントやオリジナルの記事など、書き込みお願いします!詳細は、こちらの記事をご参照ください。 気が変わった場合は? - 選択をキャンセルして別のアプリケーションに投票できます。 ぜひ🔥これだ🔥と思う作品に投票お願いします! メモ:コンテストへ応募された作品は、投票週間中にバグを修正したり、アプリケーションを改良したりすることができますので、アプリケーションのリリースを見逃さずに購読してください
お知らせ
Seisuke Nakahashi · 2024年8月1日

InterSystems 製品 2024.1.1 リリースのご案内

インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect のメンテナンスバージョン 2024.1.1 をリリースしました。2024.1.1 は 2024.1.0 に対するバグフィックスを提供しています。詳細な情報は、以下のページをご参照ください(すべて英語版です) InterSystems IRISInterSystems IRIS for HealthHealthShare Health Connect 【キットのご案内】本製品は、従来からのインストーラパッケージ形式と、コンテナイメージ形式をご用意しています。その一覧は、サポートプラットフォームページをご覧ください。 インストーラパッケージは WRC Direct から入手できます。InterSystems IRIS、IRIS for Health は IRIS ダウンロードページから、HealthShare Health Connect は HealthShare ダウンロードページから、それぞれ入手してください。 コンテナイメージは InterSystems Container Registry から入手できます。コンテナイメージには 2024.1 のタグが付けられています。 このリリースには、コミュニティ・エディションのインストーラパッケージやコンテナイメージはありません。 各製品のバージョン番号は 2024.1.1.347.0 です。AIX キットの場合のみ、ビルド番号は 2024.1.1.347.1 です。