文章
· 一月 15, 2021 阅读大约需 6 分钟
基于InterSystems IRIS开发的RealWorld应用程序

假设您想编写一些真正的web应用程序,例如medium.com网站的简单克隆。这类应用程序可以在后端使用任何不同的语言编写,也可以使用前端的任何框架编写。编写这样一个应用程序有很多方法,你也可以看看这个项目。它为完全相同的应用程序提供了一堆前端和后端实现。您可以轻松组合它们,任何所选前端应该与任何后端搭配。

我来介绍一下这个使用后端InterSystems IRIS来实现后端的相同的应用程序。

0 0
0 148

嘿开发者,

我们想邀请您参加我们的下一场比赛,该比赛致力于创造有用的工具,让您的开发伙伴们的生活更轻松

🏆 InterSystems 开发者竞赛:Tool(工具)🏆

提交有助于加快开发速度、贡献更多定性代码并有助于使用 InterSystems IRIS 测试、部署、支持或监控您的解决方案的应用程序。

时间: 2023 年 1 月 23 日至 2 月 12 日(美国东部时间)

奖金池: 13,500 美元

0 0
1 224

嗨,开发者们!

我们决定将🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆的参赛时间延长至11月24日,请参赛者关注重要时间节点的变化。

📝 2023年9月19日-11月23日(北京时间)文章发布与点赞收集!在社区发布文章后即可开始为您的文章收集点赞。越早发布文章,就越有时间收集更多点赞(这是您获得“开发者社区奖”的关键)。

📝 2023年11月23日(北京时间),专家打分截止(专家提名奖)。

🎉 2023年11月24日(北京时间),公布获奖名单。

欢迎大家继续积极投稿,赢取大奖!

0 0
0 37

以下是 2023 年 InterSystems 开发者工具大赛的技术红利,您可以在投票中获得额外加分:

  • 嵌入式 Python的使用
  • Docker容器的使用
  • ZPM 包部署
  • 在线演示
  • 代码质量通过
  • 开发者社区文章
  • 开发者社区第二篇文章
  • 上传 YouTube 视频
  • 第一次贡献

请参阅下面的额外加分项详细信息:

嵌入式 Python的使用 - 3 分

在您的应用程序中使用嵌入式 Python,可以获得 3 分加分。您至少需要 InterSystems IRIS 2021.2及以上版本。

0 0
0 95

亲爱的社区开发者们,大家好!

欢迎积极参与新一轮InterSystems开发者竞赛!

🏆 InterSystems 编程大赛:FHIR 加速器 🏆

提交在AWS上使用InterSystems的IRIS FHIR-as-a-service的应用程序,或帮助使用InterSystems IRIS FHIR加速器开发的解决方案。点击这篇文章,了解如何在AWS上申请应用InterSystems IRIS FHIR 加速器服务 (FHIRaaS) 。

    时间:2021年5月10日-6月6日

    奖金总额: $8,750

    👉 点击登录活动页面 👈

    0 0
    0 121
    文章
    · 五月 13, 2021 阅读大约需 2 分钟
    使用 IRIS 跟踪全球疫苗接种情况

    2020 年席卷全球的新冠疫情使每个人都在关注与 COVID-19 有关的新闻和数字。

    为什么不趁这个机会去创造一些简单直观的东西,来帮助关注全球的疫苗接种数量呢?

    为了应对这一挑战,我使用了 Our World in Data 提供的数据,他们的使命是提供解决全球最大问题所需的研究和数据。

    他们在 Github 上有一个专门的 COVID-19 数据仓库,我采用了疫苗接种数据来完善我的跟踪器。

    如果你不了解他们,去调查一下吧,这值得你花上一些时间。 Github 仓库

    应用程序 iris-vaccine-tracker 有三个不同页面。

    1. 主仪表板
    2. 数据表,其中包含仪表板中呈现的数据的详细信息。
    3. 热图

    仪表板

    主仪表板提供全球疫苗接种情况的快速概览。

    第一个小组件提供以下信息:

    0 0
    0 160
    文章
    · 四月 13, 2022 阅读大约需 7 分钟
    用Globals 作为图数据库来存储和抽取图结构数据

    image

    这篇文章是对我的  iris-globals-graphDB 应用的介绍。
    在这篇文章中,我将演示如何在Python Flask Web 框架和PYVIS交互式网络可视化库的帮助下,将图形数据保存和抽取到InterSystems Globals中。

    建议

     

    第一步 : 通过使用Python 原生SDK建立与IRIS Globals的链接

     #create and establish connection
      if not self.iris_connection:
             self.iris_connection = irisnative.createConnection("localhost", 1972, "USER", "superuser", "SYS")
                                         
      # Create an iris object
      self.iris_native = irisnative.createIris(self.iris_connection)
      return self.iris_native

     

    第二步 : 使用 iris_native.set( ) 功能把数据保存到Globals 里     

    #import nodes data from csv file
    isdefined = self.iris_native.isDefined("^g1nodes")
    if isdefined == 0:
        with open("/opt/irisapp/misc/g1nodes.csv", newline='') as csvfile:
    
     reader = csv.DictReader(csvfile)
     for row in reader:
        self.iris_native.set(row["name"], "^g1nodes", row["id"])
    
     #import edges data from csv file
     isdefined = self.iris_native.isDefined("^g1edges")
     if isdefined == 0:
        with open("/opt/irisapp/misc/g1edges.csv", newline='') as csvfile:
     reader = csv.DictReader(csvfile)
     counter = 0                
     for row in reader:
        counter = counter + 1
        #Save data to globals
        self.iris_native.set(row["source"]+'-'+row["target"], "^g1edges", counter)  

     

    第三步: 使用iris_native.get() 功能把节点和边缘数据从Globals传递给PYVIS

     #Get nodes data for basic graph    
      def get_g1nodes(self):
            iris = self.get_iris_native()
            leverl1_subscript_iter = iris.iterator("^g1nodes")
            result = []
            # Iterate over all nodes forwards
            for level1_subscript, level1_value in leverl1_subscript_iter:
                #Get data from globals
                val = iris.get("^g1nodes",level1_subscript)
                element = {"id": level1_subscript, "label": val, "shape":"circle"}
                result.append(element)            
            return result
    
        #Get edges data for basic graph  
        def get_g1edges(self):
            iris = self.get_iris_native()
            leverl1_subscript_iter = iris.iterator("^g1edges")
            result = []
            # Iterate over all nodes forwards
            for level1_subscript, level1_value in leverl1_subscript_iter:
                #Get data from globals
                val = iris.get("^g1edges",level1_subscript)
                element = {"from": int(val.rpartition('-')[0]), "to": int(val.rpartition('-')[2])}
                result.append(element)            
            return result

     

    Step4: Use PYVIS Javascript to generate graph data

    <script type="text/javascript">
        // initialize global variables.
        var edges;
        var nodes;
        var network;
        var container;
        var options, data;
      
        // This method is responsible for drawing the graph, returns the drawn network
        function drawGraph() {
            var container = document.getElementById('mynetwork');
            let node = JSON.parse('{{ nodes | tojson }}');
            let edge = JSON.parse('{{ edges | tojson }}');
         
            // parsing and collecting nodes and edges from the python
            nodes = new vis.DataSet(node);
            edges = new vis.DataSet(edge);
    
            // adding nodes and edges to the graph
            data = {nodes: nodes, edges: edges};
    
            var options = {
                "configure": {
                    "enabled": true,
                    "filter": [
                    "physics","nodes"
                ]
                },
                "nodes": {
                    "color": {
                      "border": "rgba(233,180,56,1)",
                      "background": "rgba(252,175,41,1)",
                      "highlight": {
                        "border": "rgba(38,137,233,1)",
                        "background": "rgba(40,138,255,1)"
                      },
                      "hover": {
                        "border": "rgba(42,127,233,1)",
                        "background": "rgba(42,126,255,1)"
                     }
                    },
    
                    "font": {
                      "color": "rgba(255,255,255,1)"
                    }
                  },
                "edges": {
                    "color": {
                        "inherit": true
                    },
                    "smooth": {
                        "enabled": false,
                        "type": "continuous"
                    }
                },
                "interaction": {
                    "dragNodes": true,
                    "hideEdgesOnDrag": false,
                    "hideNodesOnDrag": false,
                    "navigationButtons": true,
                    "hover": true
                },
    
                "physics": {
                    "barnesHut": {
                        "avoidOverlap": 0,
                        "centralGravity": 0.3,
                        "damping": 0.09,
                        "gravitationalConstant": -80000,
                        "springConstant": 0.001,
                        "springLength": 250
                    },
    
                    "enabled": true,
                    "stabilization": {
                        "enabled": true,
                        "fit": true,
                        "iterations": 1000,
                        "onlyDynamicEdges": false,
                        "updateInterval": 50
                    }
                }
            }
            // if this network requires displaying the configure window,
            // put it in its div
            options.configure["container"] = document.getElementById("config");
            network = new vis.Network(container, data, options);
            return network;
        }
        drawGraph();
    </script>

     

    第五步: 从app.py 主文件调用上面的代码

    #Mian route. (index)
    @app.route("/")
    def index():
        #Establish connection and import data to globals
        irisglobal = IRISGLOBAL()
        irisglobal.import_g1_nodes_edges()
        irisglobal.import_g2_nodes_edges()
    
        #getting nodes data from globals
        nodes = irisglobal.get_g1nodes()
        #getting edges data from globals
        edges = irisglobal.get_g1edges()
    
        #To display graph with configuration
        pyvis = True
        return render_template('index.html', nodes = nodes,edges=edges,pyvis=pyvis)    

    下面是关于此项目的 介绍视频:

    0 0
    0 159

    Hi 开发者们,

    我们带来一些令人兴奋的消息!新一届 InterSystems 技术文章写作比赛到了!

    ✍️技术征文大赛:InterSystems IRIS 教程✍️

    不论您是什么级别的程序员(初级/中级/高级),我们都欢迎您于2月19日~3月24日(美国东部时间)期间撰写一篇可以被当作 InterSystems IRIS 教程的文章。

    🎁 人人有奖:每位参赛作者可获得一份特别奖品!

    2 0
    0 55

    嗨,开发者们,

    你准备好迎接新的挑战了吗? 我们很高兴地宣布第一届InterSystems技术文章写作比赛:

    🏆 InterSystems技术文章写作大赛 🏆

    从2021年7月15日至8月15日,写一篇与InterSystems技术有关的任何主题的文章!

    每个人都有奖品: 在此期间,每个在DC上发表文章的人都将获得一个特别的奖品包!

    大奖: Apple iPad

    参加我们的新比赛,你的内容将被超过55K的月度读者看到! 详情如下。

    0 0
    0 180

    我的团队在在红帽OpenShift容器平台上运行IRIS互操作性解决方案。我想在数据被存储在Mirror的数据pods中的情况下,测试运行中的webgateway pods和计算节点 pods能处理多少消息。

    为了增加测试难度,我部署了多个feeder容器,并在每个feeder上安排了任务,以在同一时间发送大量的消息。为了进入下一阶段的测试,我希望有多种类型的测试文件可以按需使用。我创建了test-data应用程序,能够请求生成大量的多种类型的文件。

    我早期的一些测试依赖于复制一个样本文件和处理它。这在一次只复制一份的情况下效果不错。为了获得同一样本文件的许多副本,MakeFile函数获取一个样本文件、保存其副本、并以唯一的时间戳进行重命名。MakeFiles函数有一个参数,用于确定要制作的文件数量。

    我找到了一个样本文件,它的输入和输出都是带分隔符和固定符的。我把它包含在我的应用程序中,并添加了一个转换来操作测试数据文件。在这种情况下,我把测试文件中的识别ID号替换成在一个类方法中生成的识别ID号,并且是随着文件而递增的。

    我想在处理后审查测试文件中的数据,我喜欢看到一系列有顺序的数字,而不是一系列随机数字。

    0 0
    0 64
    文章
    · 三月 14 阅读大约需 6 分钟
    教程:将 OpenAI 添加到互操作性生产中

    人工智能(AI)最近受到广泛关注,因为它可以改变我们生活的许多领域。更好的计算机能力和更多数据帮助人工智能完成了许多惊人的事情,例如改进医学测试和制造自动驾驶汽车。人工智能还可以帮助企业做出更好的决策,提高工作效率,这也是人工智能越来越流行和广泛应用的原因。如何将 OpenAI API 调用集成到现有的 IRIS 互操作性应用程序中?

    0 0
    0 28

    InterSystems Production 监控是管理门户中的一个页面,用于显示当前运行的Production监控信息。我喜欢这个页面的样子,但这并不适合所有人。

    2022年5月13日,我在开发者社区上看到这个帖子。

    https://community.intersystems.com/post/creating-custom-monitoring-page

    我同意马克的观点,Production监控很复杂。我想创建一个更漂亮干净的监控页面。

    我开始着手制作一个利用类方法提供Production数据的 CSP(Cache Server Page)页面。

    我与马克分享了我的第一次尝试。他根据自己的想法定制了这个页面。我喜欢他对页面的布局,使其在视觉上更有吸引力。我把他的设计整合到我的应用程序Production监控中。

    我看到马克对业务服务的显示进行了过滤,只显示需要注意的服务。他在页面的底部添加了服务器的名称和它的镜像状态。

    0 0
    0 84

    大家好!

    InterSystems Grand Prix 2023 结合了 InterSystems IRIS 数据平台的所有主要功能!

    因此,我们邀请您使用以下功能并收集额外的技术奖励,以帮助您赢得奖品!

    如下:

    • LLM AI 或 LangChain 用法:Chat GPT、Bard 等 - 6
    • InterSystems FHIR SQL Builder- 5
    • InterSystems FHIR-3
    • IntegratedML - 4
    • Native API - 3
    • 嵌入式 Python - 4
    • 互操作性 - 3
    • 生产扩展(PEX)- 2
    • 自适应分析 (AtScale) Cube的使用 - 3
    • Tableau、PowerBI、Logi 的使用 - 3
    • InterSystems IRIS BI - 3
    • 列索引使用 - 1
    • Docker 容器使用 - 2
    • ZPM 包部署 - 2
    • 在线演示 - 2
    • 单元测试 - 2
    • 实施 InterSystems Community Idea中的创意 - 4
    • 在开发者社区发布的第一篇文章 - 2
    • 在开发者社区发布的第二篇文章 - 1
    • 代码质量通过 - 1
    • 第一次贡献 - 3
    • YouTube 上的视频 - 3

    1 0
    1 101

    Hi 开发者们,

    我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,此次编程大赛关注生成式AI(GenAI), 矢量搜索(Vector Search )与机器学习(Machine Learning)!

    🏆 InterSystems 编程大赛:Vector Search, GenAI 与 ML 🏆

    时间:2024年4月22日 - 5月19日 (美国东部时间)

    奖金池: $14,000

    0 0
    0 67

    亲爱的社区开发者们,大家好!

    我们真诚邀请您参加 Online Meetup:InterSystems 开发者竞赛(人工智能与机器学习)!

    时间: 2021年7月30日(周五) 11:00 AM (美东时间)23:00 (北京时间)

    在这场在线Meetup,您将了解到:

    • 此次优胜者的个人履历;
    • 获奖Application的简短Demo;
    • 有关应用技术的开放探讨、问答,以及下次竞赛的一些计划。

    0 0
    0 88

    IRIS Interoperability互操作性/HealthConnect(前身是Ensemble)有许多内置的适配器。但是没有一个接收邮件的服务或适配器。我洗的了一个电子邮件服务,通过SMTP接收邮件,这些邮件可以被传递到电子邮件操作。

    现在我想对一个使用电子邮件操作向外部邮件服务器发送邮件的Production进行负载测试。邮件服务器团队不希望我向他们发送成千上万的信息。

    我创建了iris-mail应用程序来替代邮件服务器。我更新了电子邮件操作中的服务器和端口设置。外发的邮件被发送到替代的邮件服务器,我能够计算出iris-mail中收到的邮件数量,并将其与邮件操作发送的邮件数量进行比较。

    应用程序的源代码:https://openexchange.intersystems.com/package/iris-mail

    0 0
    0 90