扬声器 | 成绩单 |
| 韦恩·莱文 | 欢迎来到这里,讨论有关扩展JSL应用程序的Hamcrest自动化测试以进行持续改进的会议。 |
| 我们将在这里向您展示,对您的承诺,是我们将向您展示如何也可以建立具有成本效益的生产 |
| 高品质保证,高度可靠和可支持的基于JMP的关键任务集成分析系统。 是的,有很多话要说,但这是 |
| 这就是我们在这种环境下正在做的事情。 我们对此感到非常满意。 我们很荣幸能够与您分享。 |
| 这就是我们将遵循的议程。 简要介绍一下,我的自我,我会在稍后介绍一下,仅介绍Predictum,因为您可能对我们不太了解, |
| 我们的背景,JSL开发的背景,基础架构以及与此有关的一些历史。 |
| 然后,我们一直在进行的更改的结果将在这里与您分享。 然后,我们将进行演示,并讨论下一步,计划要进行的工作,然后最终将其打开,以解决您可能遇到的任何问题。 |
| 我是Wayne Levin,那是我在右边的那边。 我是Predictum的总裁,我也加入了 |
| 与文斯·法勒(Vince Faller)在一起。 Vince是我们的首席软件工程师,他一直在领导这一非常重要的计划。 所以,关于我们,就在那儿。 我们是JMP合作伙伴。 |
| 我们成立于1992年,已有29年的历史了。 |
| 我们使用JMP进行统计方法方面的培训,等等,在这些领域进行咨询,并且我们花费了大量时间来建立和 |
| 部署集成的分析应用程序和系统,因此为什么这项工作对我们非常重要。 我们首先交付了JMP应用程序, |
| 是的,确实在20多年前,是2000年的JMP 4.0,我们一直在构建更大的系统。 当然,从那时起,它就是很小的小工具,但是我认为我们是围绕JMP 8或9构建大型系统而开始的。 |
| 因此,我们在这方面已有相当多的历史,轻松超过了10年。 所以只有一点点背景...直到2019年下半年,我们的开发环境真的是完全不同的,它是零碎的。 |
| 项目管理 |
| 在那里,但同样,一切都破裂了。 我们有不同的应用程序用于版本控制和管理时间(您知道,我们的开发人员时间等等),以及一般的项目管理。 |
| 开发人员很容易花钱,我们将讨论这一点, |
| 他们大约有一半的时间只从事常规的机械工作,例如加密和打包JMP加载项。 您知道,维护配置包,并且 |
| 您知道,并针对加密和未加密的脚本分离存储库或我们通常称为存储库的内容。 那是...我们不得不考虑很多事情,这并不是真正的开发工作。 那真的是工作 |
| 开发人员的才华被浪费了。 就像我说的那样,我们已经做了很长时间了,即使到了2019年,我们也已经轻松了10年,所以超过10年的遗留框架一直追溯到JMP 5,您知道,您知道,它变得肿且缓慢。 |
| 我们知道,JMP多年来已经走了很长一段路。 我的意思是在JMP 9中,我们有了名称空间,并且JMP 14引入了类,那时Hamcrest |
| 开始。正是汉克雷斯特(Hamcrest)才真正使我们得以……通过这项重大举措。 因此,我们于2019年8月开始了这项重大计划。 |
| 这就是我们获得第一个Gitlab许可的时间,这就是我们新的开发的过程……您开发的新开发体系结构的开发开始形成,并且此后一直在不断改进。 |
| 基本上,每个月,我们都会不断增加并增强我们的能力,以随着工作的进行而变得越来越有生产力。 |
| 而且,这种情况还在继续,因此,如果您愿意,我们实际上会考虑采用精益类型的工作。 它确实遵循精益原则,并加速了我们的发展。 |
| 借助此系统,我们已经进行了自动化测试,Vince将向我们展示这一点。 我们这里有这个小模型,请尽早测试并经常测试 |
| 这就是我们要做的。 它支持重用代码,并且我们已经重新开发了Predictum系统框架。 现在是2.0。 我们从先前的努力中学到了很多东西。 所有的东西都消失了,几乎所有的东西都消失了,并且它已经被替换和扩展了。 |
| 文斯将告诉我们更多有关此的信息。 轻松而轻松地,我们的生产率提高了50%以上,我只是想说开发人员要快乐得多。 他们不那么沮丧。 |
| 他们更加专注于他们的工作,我的意思是开发人员应该做的真正的工作,而不是乏味的工作。 |
| 我要说的是仍有改进的空间,所以我们还没有完成,Vince会告诉我们更多有关此的信息。 |
| 您可能会说,我们现在有开发标准,因此我们有功能的样式指南,并且我们所有的开发都基于功能。 |
| 每个功能至少需要一个Hamcrest测试,并且有代码回顾,开发人员正在彼此共享 |
| 以确保我们遵守我们的标准。 这就提出了有关如何提高这些标准,使其变得更好的问题。 |
| 我们还举办了一些有趣的会议,鼓励开发人员破坏代码, |
| 是的,所以我们称它们为这些突破代码挑战或您所拥有的。 因此,它已成为我们工作方式的一部分,并且完全适合此开发环境。 例如,它导致进一步的测试,需要添加更多的Hamcrest测试。 我们有一个很小的项目 |
| 我们一年多以前所做的。 我们正在进入一个新阶段。 一切都结束了... |
| 内置了100多个Hamcrest测试,它们在开发过程中一遍又一遍地运行。 |
| 因此,还有其他一些好处,那就是它允许我们分配和跟踪资源分配,例如开发人员在做什么。 每个人都知道其他人在做什么, |
| 持续集成,持续部署等), |
| 有...代码冲突是较早发现的,所以如果我们有...而且有,我们有多个人在从事某些项目,那么,您知道,有人在这里更改函数,并且将与其他人发生冲突是在做。 我们将早日发现。 |
| 它还使我们能够提高多名员工的支持能力。 我们不能有依赖于特定开发人员的代码。我们必须拥有任何开发人员或支持人员都可以支持的代码 |
| 向前迈进。 因此,这也是我们的重要目标。 确实确实可以推动整个质量保证领域的发展, |
| 包括支持FDA要求,有关QA的知识,例如验证,IQ OQ PQ。 所以...我们正在自动化或半自动化 |
| 这些任务也可以通过此基础架构来完成。 我们确实在内部和外部使用它,所以您可能知道,我们有 |
| 那里有一些产品(???)神户腰带实验室,但新产品很好,垃圾邮件神户发送垃圾邮件(???)在其他地方也有讨论 |
| 在2021年的JMP发现欧洲会议上。 您可能想去检查一下,但是它们很大 |
| 代码库,它们都是经过开发的,换句话说,如果您知道该表达式,我们就吃我们自己的狗粮,但我们也会与所有客户一起使用它 |
| 开发,所以这对我们的客户来说很重要,因此,因为我们正在构建他们将依赖的应用程序。 |
| 因此,我们需要……我们需要拥有使我们可靠的基础架构,无论如何,这是其中很大的一部分。 |
| 我提到了Predictum系统框架。 您可以在此处看到一些摘要。 它就在脚本编制索引中,而且您知道,我们看到了参数和 |
| 例子等等。 我们内置了所有这些功能,其中95%,其中95%以上具有与之相关的Hamcrest测试。 当然,我们的目标是确保所有人都能做到,而且我们正在实现目标。 |
| 我们到了那里。 拥有...这些框架...此框架实际上是我们此处基础结构的一部分。 这是它的重要元素之一。 另一个就是... Hamcrest ... |
| 进行单元测试的能力。 最后,我将要有……幻灯片,这将为您提供到社区的链接,您可以在其中了解有关Hamcrest的更多信息。 这是一个 |
| 正如我在几分钟前提到的,由JMP为我们带来的开发是在JMP 14中。 Gitlab是其中的重要部分。这为我们提供了项目管理存储库,CI / CD管道等。 |
| 还有一个针对我们创建的JSL的visual ... visual studio代码扩展,您会看到...那里有五颗星,因为在 |
| 在视觉工作室上。 我不知道我们怎么称呼它。 文斯,也许你可以告诉我们,商店,你有什么。 它已被下载了数百次,我们已经 |
| 定期更新。 所以这也是您可以去寻找的东西。 我认为我们在最后的资源幻灯片中也有相应的链接。 |
| 因此,我现在要做的是将其传递给文斯·法勒(Vince Faller)。 文斯再次是我们的首席软件工程师。 正如我所说的那样,文斯(Vince)从2019年8月开始领导这项倡议。 这是很多艰苦的工作, |
| 艰苦的工作仍在继续。 在公司中,我们所有人都非常感激文斯和他在这里的领导。 所以说,文斯,你为什么不从这里拿走它呢? 我要... |
| 我是... |
| 文斯·法尔(Vince Faller) | 分享。 |
| 因此,韦恩多次说Hamcrest。 对于不知道Hamcrest是什么的人,它是由 |
| JMP。 |
| 贾斯汀·奇尔顿(Justin Chilton)和埃文·麦考克(Evan McCorkle)领衔了这一进程。 它只是一个单元测试库,可让您以自动化方式运行,测试并获取其结果。 |
| 它真的开始使我们能够做到这一点,这就是为什么称其为扩展。 |
| 我要展示一些东西 |
| 与我的屏幕。 我几乎专门在我们构建的VSCode扩展中工作。 这是VSCode。 |
| 我们这样做是因为它具有很多内置功能或可扩展功能,这些功能我们无需编写,例如获得集成,获得实验室集成。 |
| 在这里,您可以看到这是一个JSL脚本,它可以很好地读取它。 |
| 如果您想得到它,如果您...如果您熟悉VSCode,它只是一个轻量级的文本编辑器。 您只需输入JMP |
| 然后您会看到它。 这是唯一的。 |
| 但是,我们将继续做下去。 |
| 所以。 |
| 对于我们进行的任何代码更改, |
| 有一条管道在运行。 |
| 我们将只是展示它的作用。 因此,如果我将README文件更改为“ Discovery”的演示, |
| 2021。 |
| 我只是要承诺这一点。 如果您不知道得到,只需提交即可 |
| 说我想知道我们目前的确切位置的快照,然后将其推送到存储库中并将其保存在服务器上。 |
| 愉快的一天。 |
| 提交消息。 更多自述信息。 |
| 而且我可以推一下,因为VSCode很棒。 |
| 管道演示。 |
| 所以现在我推了它。 将会有一条正在运行的管道。 我可以在这里单击并单击它,这将给我我的合并请求。 所以现在 |
| 管道开始运行。 |
| 我可以检查管道的状态。 |
| 现在它正在做的是检查并确保它具有所需的Hamcrest文件。 我们有一些要求 |
| 我们强制执行,以便可以... |
| 我们可以确保我们 |
| 做好我们的工作。 |
| 然后完成。 我要按加密。 |
| 现在,加密将采用整个程序包并将其加密。 |
| 如果我们过去 |
| 这只是某个地方的虚拟机。 它应该 |
| 开始跑步 |
| 一秒钟。 |
| 因此,它只是遍历所有代码。 |
| 编写所有加密的密码,依次单击所有内容。 如果您曾经尝试同时加密多个脚本, |
| 您可能会知道这很痛苦,所以我们将其自动化,因此我们不必这样做,因为正如Wayne所说的那样,我们花了很多时间来做这些。 |
| 就像,如果我们每次要发布任何版本时都要经过100个脚本并对每个脚本进行加密,那就太糟糕了。 |
| 因为我们必须拥有我们的 |
| 加密的代码,是的,对不起,意见,我可以停止分享了。 |
| 啊。 |
| 这样就可以了。 |
| 它应该很快完成。 |
| 然后它将逐步进行并进行分阶段,然后分阶段基本上采用了我们想要的所有信息源,就像我们的文档中一样 |
| 我们编写的所有其他内容,都会将它们呈现为插件中所需的形式,因为与github,gitlab的其余部分一样,我们的大多数文档都是使用markdown编写的,然后将其呈现为任何内容。 |
| 我不需要显示其余内容,是的。 所以它过去了。 快要走了。 |
| 我们将回到VSCode。 |
| 所以。 |
| 如果我们要进行更改,那么这只是一个功能。 |
| 如果我像这样进入这里,如果我要运行这个... |
| JSL,运行当前选择。 |
| 所以。 |
| 您可以看到它回来了...它要做的所有事情就是打开Big Class,运行拟合线,并获得等式。 它正在返回方程式。 |
| 实际上,您也可以看到它在这里运行。 |
| 但。 |
| 因此,这可能会使用更多文档。 |
| 而且,我们就像,哦,我们实际上不希望打开此数据表。 |
| 但是,让我们让它运行起来很快。 |
| 然后说 |
| 不。这不是一个很好的回报,它显然改变了所有大写的等式。 |
| 所以,如果我登台。 |
| 更好的文档。 |
| 推。 |
| 再次回到这里。 |
| 因此,它再次在推动。 这是另一条管道。 |
| 它只是按顺序运行一堆Power Shell脚本,具体取决于我们是否对其进行了设置。 |
| 但是您会注意到该管道具有更多的阶段。 |
| 所以当我们 |
| 为了帮助扩展规模,我们仅测试JSL |
| 起初最少,然后通过,我们允许进行进一步测试。 |
| 而且,我们仅测试了是否已更改了JSL文件。 |
| 但是我们可以解决这个问题。 |
| 它会运行并告诉我们测试中的位置,以防万一测试冻结。 您知道,如果您有一个不会关闭的模式对话框,那么JMP显然不会在那之后继续做任何事情。 但您可以看到,它做了很多事情,是的,太棒了。 我受够了。 |
| 令人兴奋。 |
| 刷新。 获得一个绿色的选中标记。 |
| 我们可以走了,好吧,现在运行所有内容。 它会经历,测试所有内容,然后将其加密,然后测试加密的内容,基本上是我们将要添加到附件中的实际东西,然后再次上载它,为我们打包,创建实际的附件。因为我们会给客户。 |
| 我不会很快地做那件事,因为它需要一分钟。 |
| 但 |
| 假设我们进入这里,我们就像,哦, |
| 好吧,我真的很想关闭此数据表。 我不知道为什么我首先要注释掉。 我不认为它应该是开放的,因为我不再使用它,我们不……我们不想要那个。 |
| 我们会说好的。 |
| 关闭dt。 |
| 再次推。 现在,可以使用Hamcrest在我的计算机上手动完成所有操作。 |
| 但您知道,有时开发人员会推送内容,而不是在计算机上运行所有Hamcrest程序,这就是...的全部目的是抓住它。 它迫使我们把工作做得更好。 |
| 和 |
| 是的。 |
| 继续单击此按钮。 我可以打开它,但是很好。 |
| 因此,现在您将看到它再次在运行管道。 转到管道。 |
| 我只是继续说这个以便重复。 我们只是在进行测试,加密,然后进行测试 |
| 因为有时加密会进入自己的阶段 |
| 问题的世界,如果有人曾经加密过的话。 |
| 运行,运行,运行,运行,运行。 |
| 然后,哦,我们抛出了。 你会看看吗? |
| 我不是想呆呆,但你知道。 |
| 因此,如果我们将其标记为就绪并说,是的,我们已经完成了,我们会看到, |
| 哦,那个测试没有通过。 |
| 现在 |
| 我们可以下载 |
| 为什么测试没有通过工件。 |
| 这将打开一个J单元 |
| 我将要在这里拉出的文件。 |
| 它还将在getlab中呈现它,这可能会更容易,但是现在我们只要做它。 |
| 最终。 最小化一切。 |
| 现在加油。 |
| 因此,我们可以看到R平方发生了一些事情,但失败了。 |
| 里面 |
| 蓝色。 |
| 这样我们就可以来这里。 |
| 说,为什么在boo中会导致失败呢? |
| 我们看到,哦,有人叫我们的方程式 |
| 然后他们只是假设数据表在那里。 因此,因为我更改的内容破坏了别人的代码,好像那会发生。 |
| 所以我们遇到了这个问题。 |
| 你去哪儿? 开始了。 |
| 因此,这是我们在此所做的所有工作的主要目的,是能够了解我更改了某些东西并且弄坏了别人的东西的事实。 |
| 这样我就可以通过。 |
| 看看嘘。 |
| 说,哦,好吧,也许我应该开大班 |
| 我。 |
| 是的,很酷。 好吧,如果我保存下来, |
| 我可能应该做得更好。 |
| 自己打开大类。 |
| 我会上演的。 |
| 打开Big Class.Push |
| 再说一遍 |
| 旧的管道。 |
| 现在这应该 |
| 不...不要太长。 |
| 所以我们要去这里。 我们...我们只测试... |
| JMP版本,但您可以看到 |
| 自动,我们只测试一个。 |
| 然后它等待开发人员说,是的,我完成了,一切看起来都很好。 继续。 我们这样做是出于资源方面的考虑, |
| 因为它们运行在自动运行的虚拟机上,所以我们有多个开发人员,他们都在使用这些系统。 |
| 也是... |
| 您可以看到,这实际上是一个docker系统,我们正在对它们进行容器化。 |
| 好吧,我们正在对它们进行容器化。 我们正在使用它们,但是还没有所有版本。 |
| 但是我们运行14.3,至少为此项目运行14.3、15、15.1, |
| 那应该起作用。 |
| 让我们恢复一下。 |
| 因为您知道有效。 |
| 大概应该做一个经典的...但是很好。 |
| 嗯是的。 |
| 我们要测试。 |
| 我觉得我一直在反复说这句话。 我们将测试所有内容。 |
| 实际上,我们将让这一过程向您展示我们所得到的最终结果。 |
| 它应该只。 |
| 一点点。 |
| 因此,我们将对其进行测试,确保它正在进行,您可以看到日志。 我们从正在发生的事情,发生的位置中获取了不错的信息,就像它将告诉您跑步者正在运行。 |
| 我现在仅在Windows上运行。 再次,这是一个演示,除了 |
| 我们应该能够运行 |
| 更多的。 |
| 在运行的同时,我将进一步讨论VSCode。 |
| 在VSCode中,我们还...还有摘要和其他内容,因此,如果您想创建一个函数, |
| 它将创建您遍及所有的功能信息。 我们使用自然文档 |
| 再次,这是从Hamcrest团队偷来的, |
| 作为我们的 |
| 开发文档。 |
| 因此,它将一切以自然文档形式放置。 因此,它的想法再次是在帮助我们完成工作并强迫我们完成工作 |
| 好一点,有更多的兴趣。 |
| 韦恩·莱文 | 对于文档? |
| 文斯·法尔(Vince Faller) | 是的,这是用于文档的,是的。 |
| 韦恩·莱文 | 在开发过程中,我们正在同时进行记录。 |
| 文斯·法尔(Vince Faller) | 是的。 绝对地。 |
| 您知道,它还具有for循环,while循环。 |
| 对于关联行,类似这样的东西。 |
| 我们...这是...完成了吗? 是的,可能已经完成了。 |
| 这样我们就得到了绿色的选中标记。 现在它将在所有系统上运行。 |
| 如果我们可以回到这里,您将看到它。 |
| 打开JMP。 它将进行一些测试, |
| 可能会开设大类。 |
| 然后关闭所有...全部关闭。 |
| 韦恩·莱文 | 所以我们这样做,主要是因为 |
| 我们的许多客户都部署了不同版本的JMP,他们想要一个特定的加载项,但他们 |
| 运行它,您知道他们在现场只有不同的版本。 我们还针对JMP的早期采用者版本进行了测试,该版本是JMP的一项服务,因为我们会报告错误。 |
| 而且对于客户来说,这很有用,因为他们知道他们可以...他们可以升级到JMP的新版本。 他们知道我们为他们构建的应用程序已经过测试。 |
| 这只是我们的日常工作。 |
| 好的。 |
| 文斯·法尔(Vince Faller) | 你完成了。 你完成了。 你完成了。 |
| 改成... |
| 我可以说说... |
| 这将要运行,我们可以 |
| 电影魔术,如果你想的话,梅格。 |
| 只是为了使其运行更快。 |
| 基本上,我只想开始上演,但需要一秒钟。 |
| 韦恩,您还有其他要说的吗? |
| 凉爽的。 |
| 我把那个... |
| 我可以说些什么 |
| 当我们上演时 |
| 我们在mk docs中也有我们的文档。因此,它实际上将运行mk doc的版本,进行渲染,将帮助放入帮助文件中,并且基本上能够为我们创建发行版,因此我们不必 |
| 处理它。 |
| 因为创建发行版只是很多工作。 |
| 加密。 快完成了。 |
| 可能应该已经预装了一个。 |
| 现场演示,您打算做什么。 |
| 一些。 |
| 跑。 |
| 哦,我绝对想做一件事。 |
| 因此,管道实际要做的最后一件事是检查我们是否实际花费了时间,因为,如果 |
| 我们实际上没有记录我们所花费的时间,我们没有得到报酬,因此迫使我们去做。 |
| 美好的时光。 |
| 文德·法尔(Vinde Faller) | 所以 |
| 文斯·法尔(Vince Faller) | 没有那个工作本来会失败的。 |
| 我可以显示一些工作。 试。 |
| 那就是码头工人之一。 我们不想要那个。 |
| 所以 |
| 您可以看到这给我们带来了成功。 |
| 没有失败。 没有意外的抛出。 这就是Hamcrest的全部内容。 |
| 快点。 多一个。 |
| 好了,要上演。 |
| 它做的一件事就是创建存储库。 |
| 每次都会使它们新鲜。 |
| 就像,它试图将其保持在某种无状态状态 |
| 道路。好的,我们现在可以下载工件。 |
| 现在我们应该有这个管道演示。 |
| 我真的希望它会在那里。 |
| 什么。 |
| 为什么要启动Internet Explorer? 所以现在您将看到管道演示 |
| 是一个JMP加载项。 |
| 如果我们解压缩它。 |
| 如果您不知道,JMP加载项只是一个zip文件。 |
| 如果我们现在来看 |
| 您会看到其中包含我们所有的脚本,其中包含我们的foo,它具有我们的bar。 如果我们打开那些 |
| 打开, |
| 您会看到它是一个加密文件。 |
| 因此,这基本上就是我们能够提供给客户的东西 |
| 而且没有太多的机械工作。 韦恩提到 |
| 开发人员不会因此感到沮丧,就我个人而言,我认为这是一种轻描淡写的说法,因为一遍又一遍地执行此操作非常令人沮丧,而这在一定程度上有所帮助。 |
| 那。 |
| 韦恩·莱文 | 现在,关于加密,当您交付外接程序时 |
| 供公司内的用户使用,出于安全性原因等原因,您通常不希望它们被任何人使用,并且 |
| 处理代码。 您知道这种事情,因此我们可能会为您提供未加密的代码,因为您知道客户端已将其代码加密,但是要交付给最终用户,您通常希望所有内容都经过加密,因此无法被篡改。 这些只是其中之一。 |
| 文斯·法尔(Vince Faller) | 是的,这就是我的演示的结尾。 韦恩,如果您想把它拿回来做个总结。 |
| 韦恩·莱文 | 是的,太棒了。 |
| 当然,非常感谢,文斯。 因此,整个系统中有很多活动部件,因此,基本上,要确保我们有 |
| 您知道,代码是由多个彼此不冲突的用户开发的。 我们同时在文档中进行构建。 实际上,文档是随应用程序一起部署的,我们不必进行编织。 它的... |
| 我们设置了基础架构,以便可以自动处理它。 我们可以同时全面更新代码和代码, |
| 如果可以的话。 正在进行的Hamcrest测试,所编写的每个函数, |
| 如果可以的话,会有预期的结果。 这样就可以对它们进行比较,因此我们简要地看到了那里的方程式存在一些问题。 R平方或其他带有不同值的东西, |
| 因此换句话说,嘿,这里不对劲。我期待该功能的输出 |
| 用于一个用例。 这就是我们从客户那里得到的东西之一,所以,您知道,我们建立了一个用例池,这些用例被转化为Hamcrest测试,然后就消失了。 这里还有其他一些幻灯片 |
| 您可以随时随地下载幻灯片。 因此,我将其留给您使用,这是管道的小图片 |
| 我们正在使用的内容以及有关开发人员的代码审查活动的一些信息。 如果您想与它来回走动。 文斯,您是否想在此处添加任何有关代码审查和批准方式的信息? |
| 文斯·法尔(Vince Faller) | 是的,所以在合并请求中 |
| 它将在代码的差异上包含JSL代码。 再说一次 |
| 谢谢至 |
| 也是从事Hamcrest的人,因为他们还为GitHub和GitLab启动了lexer(?)以便能够读取JSL,所以实际上这是在getlab中。 |
| 他们还可以阅读JSL。 它不执行它,但是格式很好。 它不仅是白色文字,而且那里很漂亮。 我们就进去 |
| 就像在此屏幕截图中一样,单击一行,然后添加所需的注释,这将成为可复审的任务。 因此,我们尝试在GitLab内做尽可能多的事情 |
| 出于透明原因,以及 |
| 一旦一切都结束了,可以说是的,我的合并请求已经准备就绪。 让我们将其放入master分支main分支中。 |
| 韦恩·莱文 | 好厉害 所以,您的确在……它在帮助您,我们确实在定义编码标准,如果您愿意的话,以及 |
| 我不喜欢“强制执行”一词,但这就是它的含义。 而且它减少了变化。 如果愿意,它可以使多个开发人员更容易理解 |
| 其他人做了什么。 随着我们吸引新的开发人员加入,他们开始了解标准,他们知道该寻找什么,他们知道该怎么做。 |
| 因此,它...使上手更加容易,并且再次处理...这里的所有内容都与之相关,因此您知道可支持性等。 |
| 这是我之前提到的幻灯片,仅用于一些资源,因此我们正在使用GitLab。 我想通常将相同的原理应用于所有git,例如GitHub或您拥有的东西。 这是Hamcrest的社区链接。 有一个演讲 |
| 在图森(Tucson),那是在2019年,那是我们过去经常旅行和聚会的日子。 那很有趣。 这是视觉效果...视觉代码工作室的市场链接。 |
| Visual Studio代码,你有什么。 |
| 因此,正如文斯所说,是的,我们大量使用了该编辑器,而不是仅使用内置的JMP编辑器,因为它们都已集成。 它的... |
| 它只是一个大型应用程序开发环境的全部。 借此,我和文斯和我(代表文斯和我本人)感谢您对此的关注,并再次希望我们真的要感谢JMP团队。 贾斯汀·奇尔顿(Justin Chilton)和公司, |
| 我会打电话给你。 如果不是Hamcrest,我们就不会这样做。 那是 |
| 缺失的部分或真正使我们能够进行JSL开发的使能部分, |
| 基本上,这是您通常在工业中在代码开发中期望的各种标准。 所以我们真的很感激,我知道我们... |
| 您知道,这些都会随着我们部署的每个应用程序传播出去。 在这一点上,Vince和我很高兴提出任何疑问... |
| info@predictum.com,它将被转发给我们,我们将尽快与您联系。 但是在这一点上,我们将对它进行问答。 |