ZPM介绍(2)

发布您自己的软件

首先:要发布您的软件,您要支持这个”命名规范。其中和zmp最相关的是包名和l类名的设计,你要定义成这样:

company.project.subpackage.TheClass.cls

如果您的Package Name定义是: Company.Project, 有大写字母,对不起,是无法用zpm打包的。

这个链接给了最简单的例子,但还不详细,我来总结一下:

发布您的软件前,有几件事情要了解:

  1. zpm的注册中心并不存代码,存的只是一个到您代码的链接。因此,您得找地方放您的代码。当前最常用的是github。

  2. 文件目录的结构

    举例:有一个class定义是 com.tony.Test1.cls, 你的目录应该这么组织,假设您要放在 /myDemo, 那么class应该在/myDemo/src/com/tony/Test1.cls。这是使用VSCode组织代码的默认方式,只有保证这样的目录结构,您才可能用zpm加载代码到iris.

让我来做个简单的例子。

首先,有这样的class:

Class com.tony.Test1
{   Property p1;
}

我的文件目录设置

$ ls -l /external/myDemo/src
total 4
-rw-r--r-- 1 irisowner irisowner 40 Nov 12 10:00 Test1.cls
$

这时候我来使用zpm打包测试

module.xml的生成和加载

第一步,生成module.xml

我们看看最简单的用zpm generate命令生成module的例子:

zpm:USER>generate /external/myDemo/project1

Enter module name: project1
Enter module version: 1.0.0 =>
Enter module description:
Enter module keywords:
Enter module source folder: src =>

Existing Web Applications:
    /csp/user
    /terminal
    /terminalsocket
    Enter a comma separated list of web applications or * for all:
Dependencies:
    Enter module:version or empty string to continue:
zpm:USER>

zpm generate会把/external/myDemo/project1目录下的文件打包,在这个目录下创建一个module.xml文件, 是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
  <Document name="project1.ZPM">
    <Module>
      <Name>project1</Name>
      <Version>1.0.0</Version>
      <Packaging>module</Packaging>
      <Resource Name="com.PKG" />
      <SourcesRoot>src</SourcesRoot>
    </Module>
  </Document>
</Export>

先等等解释这个xml, 让我们先执行第2步。

第2步: 把文件load到iris

zpm:USER>load /external/myDemo/
[USER|firstdemo]    Reload START (/external/myDemo/)
[USER|firstdemo]    Reload SUCCESS
[firstdemo] Module object refreshed.
[USER|firstdemo]    Validate START
[USER|firstdemo]    Validate SUCCESS
[USER|firstdemo]    Compile START
[USER|firstdemo]    Compile SUCCESS
[USER|firstdemo]    Activate START
[USER|firstdemo]    Configure START
[USER|firstdemo]    Configure SUCCESS
[USER|firstdemo]    Activate SUCCESS
zpm:USER>

您去iris里看看, 确认class已经被loaded

第3步: 删除(optional, 但你可能会用到这个命令)

zpm:USER>uninstall firstdemo

[USER|firstdemo]    Clean START
[USER|firstdemo]    Unconfigure START
[USER|firstdemo]    Unconfigure SUCCESS
Deleting class com.tony.Test1
[USER|firstdemo]    Clean SUCCESS
zpm:USER>

这时候您应该可以发现com.tong.Test1类已经从Iris删除了。

对上面的例子总结一下:

  1. 打包是对一个文件夹打包

  2. 使用zpm把软件包加载进iris是先找包里面的module.xml文件。通过module.xml里定义的信息来知道包的名字,版本,打包的内容等等。 这个module.xml是在打包的时候用zpm generate创建的, 但您也可以自己手工创建,比如copy其他包的module.xml改改, 有时候会更快捷,尤其是您对zpm命令不是很熟悉的时候, 对很多打包的需求,比如后面会提到的定义依赖等等,直接改module.xml比zpm generate容易多了。

  3. 让我来说说可能的问题:

    module.xml中<Resource Name="com.PKG"/>定义了包名com.PKG, 加载数据包到iris很成功。但是,如果您还记得,刚刚例子里打包的是class是com.tony.Test1,那么如果你再定义一个新的类,叫com.tiedan.Test1, 用zpm generate一个新module, 名字叫project2(注意第一个打包的module名字是project1), project2的"Resource Name"也还是"com.PKG, 它能正确加载吗?

    不会, 你会被告知:"ERROR! Resource 'com.PKG' is already defined as part of module 'project1'; cannot also be listed in module 'project2'"

​ 解决方法:手工将module.xml里面的Resource Name改成“com.tony.PKG"和"com.tiedan.PKG", 这样两个包都能成功加载了。

还有个小问题,Mac用户可能会看到这样的提示:

zpm:USER>load /external/myDemo/project1

[USER|project1] Reload START (/external/myDemo/project1/)
[project1] Reload FAILURE
ERROR! Unable to import file '/external/myDemo/project1/src/com/.DS_Store' as this is not a supported type.
zpm:USER>

这是说打包的文件夹下面有.DS_Store文件,而zpm不认识。zpm会把里面认识的文件, 比如.cls文件成功加载, 然后告诉你"Roload FAILURE"

好吧, 到这里我们知道怎么打包和把包加载到iris里, 接着看看什么文件可以被打包。

Package可以包含的文件类型

这时候要好好了解module.xml的内容的细节了, 请阅读技术文档的module.xml部分。

其中的resource部分,阐明了您可以打包的内容:

第一部分:可以被加载到iris的文件类型。

Use the following suffixes for different types of resources:

.PKG - Package
.CLS - Class
.INC - Include
.MAC - Routine
.LOC - LocalizedErrorMessages
.GBL - Global
.DFI - DeepSee Item

第二部分:jar包

<FileCopy Name="lib/" Target="${libdir}my-lib/"/>               Copies content of lib folder to Target
<FileCopy Name="somefile.jar" Target="${libdir}my-lib/"/>       Copies just desired file to Target

第三部分:UnitTest

module.xml的例子里给出的UnitTest部分是这个样子

<UnitTest Name="/tests/unit_tests/" Package="Test.Unit" Phase="test"/>

说实话,我还没研究怎么使用zpm generate可以做到这一点,能想到的就是手工去修改module.xml文件。

第四部分:Web Application

执行zpm generate的时候, 会列出当前命名空间可以使用的Web Application列表。让我重新执行一下打包的第一步,看看结果是什么样子

zpm:USER>generate /external/myDemo/project1

Enter module name: project11
Enter module version: 1.0.0 =>
Enter module description:
Enter module keywords:
Enter module source folder: src =>

Existing Web Applications:
    /csp/user
    /terminal
    /terminalsocket
    Enter a comma separated list of web applications or * for all: /csp/user
    Enter path to csp files for /csp/user: 
Dependencies:
    Enter module:version or empty string to continue:
zpm:USER>

得出的module.xml里多了如下内容:

<CSPApplication CookiePath="/csp/user/" DefaultTimeout="900" DeployPath="${cspdir}user/" Description="User Namespace applications" GroupById="%ISCMgtPortal" MatchRoles=":{$dbrole}" PasswordAuthEnabled="1" Recurse="1" ServeFiles="2" ServeFilesTimeout="3600" UnauthenticatedEnabled="1" Url="/csp/user" UseSessionCookie="2"/>
      <SourcesRoot>src</SourcesRoot>

其中,打包时提问`Enter path to csp files for /csp/user:。 这里,您需要填入的是当前要load的csp文件。比如:您有一个tony.csp要加载,那么您可以在要打包的目录下创建一个子目录“cspfiles", 把tony.csp放在cspfiles目录里, 回答提问的使用这样

Enter path to csp files for /csp/user:/cspfiles

这里用的是相对路径,但格式是绝对路径的格式,我把它看成一个bug。

module.xml中还有其他很多配置的内容,我在后面会介绍包的依赖的部分。

软件包的Package

用package命令,在iris里将软件打包。打包的结果是得倒一个project1-1.0.0.tgz的文件。 package -v显示verbose信息,您可以清楚的看到project1-1.0.0.tgz和module.xml的存放位置。

zpm:USER>project1 package -v

[USER|project1] Reload START (/external/myDemo/project1/)
Skipping preload - directory does not exist.
Load of directory started on 11/20/2022 13:15:17 '*'

Loading file /external/myDemo/project1/src/com/tony/Test1.cls as udl
Load finished successfully.

[USER|project1] Reload SUCCESS
[project1]  Module object refreshed.
[USER|project1] Validate START
[USER|project1] Validate SUCCESS
[USER|project1] Compile START
Compilation started on 11/20/2022 13:15:17 with qualifiers 'd-lck'
Compiling class com.tony.Test1
Compiling routine com.tony.Test1.1
Compilation finished successfully in 0.008s.

[USER|project1] Compile SUCCESS
[USER|project1] Activate START
[USER|project1] Configure START
[USER|project1] Configure SUCCESS
Studio project created/updated: project1.PRJ
[USER|project1] Activate SUCCESS
[USER|project1] Package START
Exporting 'com.tony.Test1.cls' to '/usr/irissys/mgr/Temp/dirKBwoaM/project1-1.0.0/src/com/tony/Test1.cls'
Exported to /usr/irissys/mgr/Temp/dirKBwoaM/project1-1.0.0/module.xml
Module exported to:
    /usr/irissys/mgr/Temp/dirKBwoaM/project1-1.0.0/

Module package generated:
    /usr/irissys/mgr/Temp/dirKBwoaM/project1-1.0.0.tgz
[USER|project1] Package SUCCESS
zpm:USER>

软件包的Publish

我们并没有权限把软件包直接发布到官方的registry去。您需要去InterSystems的OpenExchange页面,提交您的软件包。如下图填入软件包的信息,Github URL, 注意勾选右下角的"Publish in Package Manager" 。

image

后面, 我会介绍怎么创建自己team的私服, 用zpm publish可以简单的把iris的软件包发布到私服上去,这对一个开发团队共享软件包并方便部署应该是更有吸引力些。

相关推荐

参赛通道开启!欢迎参加InterSystems编程大奖赛

继2月1日,InterSystems多模型数据库竞赛优胜者决出后,又一场赛事正式启动!2月8日InterSystems编程大奖赛正式开启 奖项设置 此次大奖赛时间为2021年2月8日-3月8日,我们提升了现金奖励力度,奖金总额高达16000美元!除内部员工外,任何开发者社区的成员均可参加。新用户扫码建账号此次竞赛设置两类奖项:专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出第一名,奖金6,000美元第二名,奖金3,000美元第三

InterSystems的博客 743

InterSystems开发者社区中文版第二届技术征文大赛正式启动!

InterSystems开发者社区中文版第二届技术征文大赛正式启动!时间从2023年9月19日至2023年10月24日,欢迎参加!

InterSystems的博客 373

为社区成员提供的全新在线分析仪表板(Analytics Dashboard)!

开发者们大家好!我们非常激动地与您分享我们为每个社区成员提供的在线分析仪表板(Online Analytics Dashboard)这一全新的强大功能????从现在开始,您可以看到您自己的当周、月和所有时间的详细统计数据,包括:浏览量,点赞量,评论量,关注量时间轴图——针对浏览量、点赞、关于您的帖子的行动、评论包含关于您的每个帖子的浏览量、评论和点赞信息的表此外,现在您可以很容易地看到您...

InterSystems的博客 543

荣誉!InterSystems被独立研究机构Forrester评为“事务分析型数据平台领导者”

2022 年 12 月 1 日,中国,北京——致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商InterSystems今天宣布,在Forrester日前公布的《The Forrester Wave™:事务分析型数据平台(2022年第4季度)》报告中,InterSystems IRIS® 数据平台被评为领导者。2022 年 12 月 1 日,中国,北京——致力于帮助...

InterSystems的博客 561

ZPM介绍(3)

建立私服(Porxy-Registry)这张图解释了您的私服是怎么工作的, 整篇文章在这里: Proxy-Registry搭建私服您需要有一台自己的的服务器, 在上面安装IRIS, zpm, 然后用zpm去下载另一个软件包“zpm-registry"。象这样zpm:DEMO>search -r zpm-registryregistry https://pm.community....

InterSystems的博客 966

ObjectScript的命名规范

命名规范,英文叫"name convention", 是对写代码取名字的一些”共识“。也就是说, 你可以不遵守,但大家都选择了遵守,照者一个规范来。为什么呢?因为有社区,大家要共享代码, 你不照着规矩来, 别人会鄙视你, 懒的用你的代码。ObjectScript以前没什么社区,大家各写各的, 使用ObjectScript的大公司也没谁把自己的代码拿出来共享。因此,个人开发者基本就是参考官方In...

InterSystems的博客 440

创意社区新闻摘要 | InterSystems Ideas News!

Hi 开发者社区的成员们,大家好!欢迎关注我们第一期InterSystems Ideas News!最重要的消息是我们第一次非常成功的创意马拉松。我们收到了75个有趣的新想法。以下是创意社区(Ideas Portal)一些数据:✓ 上月,我们收到了42条新创意✓ 上月,我们迎来了147位新用户✓ 迄今为止,我们共收到142 条新创意✓ 迄今为止,共有 273 位用户加入我们以下...

InterSystems的博客 356

ZPM介绍(1)

ZPM介绍有Developer听闻了InterSystems的包管理器ZPM, 希望我能介绍一下。正好刚刚看到一个开发者论坛的新闻: Open Exchange ZPM is now InterSystems Package Manager , 觉得更有必要了。zpm是什么简单说:zpm, 全称InterSystems ObjectScript Package Manager, 是一个包管...

InterSystems的博客 2251

欢迎第500名社区会员!

Hi!大家好!我们迎来了第500名开发者社区会员!欢迎@Min Lu!请关注站内私信,领取你的幸运礼品哟(^U^)ノ~YO

InterSystems的博客 354

InterSystems开发者关系主管Dean:集成FHIR,改变游戏规则

作为开发者社区的一员,多年来我亲眼目睹了访问和共享数据的障碍是如何阻碍创新的。在与医疗科技领域的初创公司和大企业合作时,我看到了封闭的数据是如何阻碍了我们的合作,那种我们都意识到的对提供高质量医疗服务至关重要的合作。随着我对FHIR®(快速医疗互操作性资源)标准的了解,我开始相信这是医疗创新的前进之路。我希望全世界的开发人员——包括我们全球InterSystems开发社区的1.1万余名开发人员...

InterSystems的博客 1030

广而告之!寻找第500名InterSystems开发者社区(中文版)会员!

Hi!大家好!截至11月3日中午,我们的开发者社区会员共495人!我们准备了一份惊喜礼品,准备送给第500名开发者社区会员!那么,谁是第500名幸运的开发者社区成员呢?我们拭目以待!(*^▽^*)...

InterSystems的博客 371

礼品全部寄出,大赛落下帷幕!一起期待下一次InterSystems开发者社区精彩活动!...

各位开发者社区的同学们,大家好!在各位社区同学的大力支持下,我们的“首届技术征文大赛”圆满完赛!在过去一周多的时间里,我们整理了各类奖项及礼品,目前已经全部寄出!最新寄出的是开发者征文大赛获奖者的奖品,请以下同学留意查收,如未收到快递信息,请及时与我们联系:@Zhe Wang@姚 鑫@聆严 周@John Pan@he hf@sun yao@Meng Cao@lizw ...

InterSystems的博客 354

【动画视频】要想运维功夫硬,日常应该怎么做?

构建系统夯基础,日常运维是保障。运维工作杂又细,业务连续是关键。等保评级都看它,日常练兵保安全。日常运维很重要,想要干好不容易。要想运维功夫硬,日常应该怎么做?...

InterSystems的博客 362

【动画视频】医院需要什么样的互联互通平台?

医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级,其中,五乙用户占全国30%以上。...

InterSystems的博客 400

【重要】恭喜1024活动中奖者!请获奖者及时提交信息,以便我们及时与您沟通奖品领取...

各位开发者社区的同学们,大家好!10月24日晚,我们成功举办了“首届技术征文大赛线上分享会”,我们在这次活动中邀请了多位征文大赛的参赛同学分享技术心得,同期举办了多轮抽奖,以下是各个奖品的获奖名单,我们恭喜这些获奖者,同时提醒获奖者请务必通过二维码登记奖品领取信息(如已登记请忽视)。各类奖品将于近日陆续寄出,感谢大家对社区活动的支持与积极参与!期待下一个1024!...

InterSystems的博客 430

获奖名单公布!一起来关注InterSystems开发者社区中文版首届技术征文大赛

各位开发者社区的同学们,大家好!我们的????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)已经结束,此次大赛收到了来自20名参赛者的30篇参赛文章,感谢大家的积极参与!????????(←点击链接进入参赛页面,浏览所有参赛文章)已经结束,此次大赛收到了来自20名参赛者的30篇参赛文章,感谢大家的积极参与!以下是获奖名单!1. 专家提名奖:活动期间发...

InterSystems的博客 428

Happy 1024!欢迎参加“首届技术征文大赛线上分享会”

开发者社区的同学们,1024快乐!今晚19:30,我们将通过“InterSystems首届技术征文大赛线上分享会”发布获奖名单、进行征文作品分享&点评、探讨热门话题,同期还将举办多轮抽奖!欢迎参会,锁定#腾讯会议会议主题:InterSystems首届技术征文大赛线上分享会会议时间:2022/10/24 19:30-21:00 (GMT+08:00) 中国标准时间 - 北京点击链接...

InterSystems的博客 419

12小时后投票截止!获奖名单将于10月24日晚发布(附腾讯会议邀请)

各位开发者社区的同学们,大家好!经过一个多月的赛期,我们举办的????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)即将步入尾声!????????(←点击链接进入参赛页面,浏览所有参赛文章)即将步入尾声!InterSystems开发者社区(中文版)首届技术征文大赛的“征文&投票”环节将于12小时后结束(截至10月23日24:00)!抓住最后的时间...

InterSystems的博客 434

【最新排名(按点赞)】投票倒计时三天:继续为你喜欢的征文作品投票吧!...

2022年9月5日-10月24日(北京时间),我们正在举办????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)!投票截止至10月23日,你的支持与喜爱,是优秀作品获得“开发者社区奖”的关键!我们先来看看目前作品排名情况吧!距离投票截止还有三天(截止至10月23日),我们暂时无法获得专家评审分数,以下根据作品“点赞”进行排名(排名截至10月21日...

InterSystems的博客 375

【目前点赞排名】投票倒计时五天:继续为你喜欢的征文作品投票吧!

2022年9月5日-10月24日(北京时间),我们正在举办????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)!投票截止至10月23日,你的支持与喜爱,是优秀作品获得“开发者社区奖”的关键!我们先来看看目前作品排名情况吧!距离投票截止还有五天(截止至10月23日),我们暂时无法获得专家评审分数,以下根据作品“点赞”进行排名。2022年9月5日-...

InterSystems的博客 296

技能帖:更好地利用开发者社区的发帖功能!

各位开发者社区的同学们,大家好!您想更好地获得帮助、讨论有趣的功能、发布公告或分享您的知识吗?在这篇文章中,我们将告诉你如何做到这一切。我们将通过以下几部分来分享“如何做”:一般发帖步骤问题文章或公告讨论一般发帖步骤一般发帖步骤首先,你需要点击开发者社区网站顶部菜单中的“发布新帖”按钮:之后,您将看到编辑器中显示创建一个问题、一则公告、一篇文章或一个讨论。不同类型的帖子有自己...

InterSystems的博客 576

四则优秀案例分享:医疗数据大规模集成

在美国各地,当需要实现大规模的应用集成时,医疗行业的领导者会使用InterSystems HealthShare Health Connect®。无论是为了连接电子病历,还是为了提升床边护理决策能力,无论是为了创新远程医疗和远程护理,还是为了业务增长,亦或是为未来做准备,InterSystems和Health Connect随时准备好帮助您和您的组织实现目标。我们在此提供几个InterSyste...

InterSystems的博客 1060

IRIS镜像状态监控

在生产环境中IRIS通常以故障转移集群的形态被部署,而集群中各故障转移成员的镜像状态将决定该集群在故障发生时是否能够顺利切换保障业务不中断。因此,成员状态通常也是运维团队需要巡检或监控的目标。尽管IRIS内部API提供了丰富的集群配置、成员状态等一系列接口,但除Portal上的镜像监视器外,并没有特定的接口便于外部系统访问(如进行企业级监控集成时),也没有整合好的监控接口可用,但在IRIS上开...

InterSystems的博客 447

如何为你喜欢的征文投票?来帮助你喜欢的作者赢得“开发者社区奖”!

2022年9月5日-10月24日(北京时间),我们正在举办????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)!投票截止至10月23日,你的支持与喜爱,是作者获得“开发者社区奖”的关键!如何为你喜欢的作品投票呢?2022年9月5日-10月24日(北京时间),我们正在举办????????(←点击链接进入参赛页面,浏览所有参赛文章)!投票截止至10月23日,你...

InterSystems的博客 194

首届InterSystems Idea创意马拉松

社区成员们,大家好!我们开心地宣布一种全新类型的比赛——寻找最聪明的创意比赛!欢迎了解:????InterSystems Idea 创意马拉松????在9月26日至10月16日期间提出一个与InterSystems产品和服务相关的想法,即可获得达成奖。最重要的是,此次赛事InterSystems的员工和社区成员都可以参与!>>点击提交你的想法吧!<<规则In...

InterSystems的博客 281

【腾讯会议邀请】InterSystems开发者社区中文版首届技术征文大赛线上见面会

亲爱的社区同学们!2022年9月5日-10月24日,我们正在举办InterSystems开发者社区中文版首届技术征文大赛!????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)!????????(←点击链接进入参赛页面,浏览所有参赛文章)!2022年9月27日(下周二)11:00-11:30,我们将进行一次针对此次征文大赛的线上宣讲,欢迎您通过腾讯会议...

InterSystems的博客 190

InterSystems开发者社区中文版首届技术征文大赛专家评审团亮相!

中文社区的同学们大家好!如你所知,从2022年9月5日-10月24日(北京时间),我们正在举办????InterSystems开发者社区中文版首届技术征文大赛????(←点击链接进入参赛页面,浏览所有参赛文章)!从2022年9月5日-10月24日(北京时间),我们正在举办????????(←点击链接进入参赛页面,浏览所有参赛文章)!截至目前,我们已收获了20余篇佳作作为此次大赛重要奖项“专家提名奖”评比的重要部分...

InterSystems的博客 169

Production 中调用 web service 组件时有关超时参数的设置

我在这里和大家分享下在 Interoperability 的接口开发中,调用Web Service接口的几个超时参数的设置经验。赶时间的同学可以直接拉到文章最下面看结论就好。1.实验过程首先我设计了一个Web service的服务器端,强制在接收到请求后 8s 返回结果。在客户端我设置了响应超时7s, 重试间隔5s, 故障超时23s,如图:在客户端、服务器端均设置了SOAP Lo...

InterSystems的博客 270

轻而易举!来InterSystems Ideas为你的想法分类吧!

开发者社区的同学们,大家好!在之前的公告中,我们向大家介绍了InterSystems官方反馈门户InterSystems Ideas! 今天想给大家介绍更多,尤其是涉及到的主题。InterSystems Ideas! 今天想给大家介绍更多,尤其是涉及到的主题。你可以按以下主题类别提交你的想法:????InterSystems Products(InterSystems产品)在这里,您...

InterSystems的博客 203

欢迎来了解一下 InterSystems Ideas ——我们的官方反馈门户

开发者社区的同学们,大家好!我们一直以来都有一个想法——改进收集、分析和回应开发者社区成员们的产品改进请求的过程。我们知道,我们需要一个良好的用户体验,甚至更好的内部流程,来确保收集、听取和响应最好的想法。现在,这个想法终于实现了!我们在此向您介绍InterSystems官方反馈门户????>> InterSystems Ideas <<????InterSystem...

InterSystems的博客 187
上一篇: 创意社区新闻摘要 | InterSystems Ideas News!
下一篇: ObjectScript的命名规范
InterSystems
博客等级 码龄7年 272粉丝 430原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值