大家好,JavaRush 社区! 自我介绍一下:自 2016 年春季以来,我一直担任 Java 软件工程师。我喜欢来这里解决我学习期间没有解决的问题。今天我给大家介绍一下这个库——图像比较。这是一个开源库,可在GitHub上公开获取。 本文的目的是传达创建开源产品不仅仅是浪费时间,不!当你掌控整个开发过程,当你需要深入研究每一个细节时,这是从不同方面汲取的丰富经验。开源是您周围的世界。我不是开玩笑,在这个图书馆存在期间,我与来自不同国家的人们进行了交流,例如美国、印度、中国、埃及、俄罗斯、德国、乌克兰、瑞典、新西兰、挪威。也就是说,这是联合开发、寻找妥协、检查代码等等的真实经验。介绍就到这里了,现在让我们按顺序开始:
还有第二张图:
有必要找出差异并圈出它们,如下所示:
正如您所看到的,用户名字段存在差异,该字段用红色三角形圈出。更详细的任务描述。我决定不仅要从功能的角度正确地做到这一点,而且还要美观,这样就不会令人尴尬。为此,我决定将其作为项目发布在GitHub上。我一直想学习 GitHub 并获得使用它的经验。快速浏览后,我发现添加第三方服务来分析代码质量、通过测试生成代码覆盖率等会很好。添加了以下工具:
那时我还年轻,对开源社区不熟悉,而且这样的提议对我来说很疯狂,我问,他为什么要这样做?他回答说:“哈哈,哦,只是因为我喜欢为开源项目做出贡献。有点人生目标……”(问题本身就在这里)。那是我第一次感受到当不同的人通过开源项目找到你并提供如此有趣的东西是多么伟大!
测试。2017 年 8 月开始
这一切都始于我接受了其中一家公司的面试,第一步是编写测试任务。任务是编写一个代码来比较两张相同大小的图片,找出它们之间的差异,将它们分组并在它们周围绘制一个矩形。有第一张图:-
Codacy——代码质量。确实值得关注。
-
Travis CI是一个 CI(持续集成)工具,用于构建项目、运行测试并判断项目是否构建成功。例如,如果其中一项测试由于新更改而未通过,那么它会说项目构建不成功并将其标记为红色。
-
Coveralls是一个工具,可以显示测试覆盖了代码的百分比。
-
BetterCode Hub是另一个用于分析代码质量的工具。这是一个非常有用的东西,它不仅会告诉您什么是不好的,还会描述原因并提供一本书的链接,您可以在其中获得相关知识。
库路径。2018年7月
标识
有一次,我发现人们经常访问我的项目,而且这种情况每天都会发生。我对此感到惊讶,更惊讶的是大约一年后创建了一个 ISSUE,其中写到某个图形设计师邀请我为我的项目创建一个徽标。他们说他喜欢为开源产品做这件事,并且完全免费。我们开始合作。提出了几个选项,但最终我们决定这样做:第一面缺陷
我注意到来自中国的某个开发人员为我创建了一个问题,他在其中描述了他发现该库工作中的一个缺陷,即如果使用大图像,则会出现StackOverflowError。该男子决定乘虚而入,发现了一个错误。我不仅找到了它。还写了关于她的事。这是图书馆发展的新举措。而且,我确实没有解决办法。在某个时刻,一位来自俄罗斯的测试人员提出了一个解决方案。但它是生的,制作不当,我不接受。当需要在 Maven Central 中发布该库时,有必要解决这个缺陷;我不想将它与它一起发布。另外,还有一个缺陷我一直没有修复,也带来了很多不便。命令行使用。2018年秋季
开发的下一阶段是与瑞典人 (Renato Athaydes) 进行沟通,他希望通过命令行使用该库,为此有必要进行一些更改和添加。我再次对此感到惊讶和惊讶。平面设计师给我写信后,我的惊讶程度有所减轻,但仍然很高。一想到有人真的需要我的代码,我就充满了难以置信的感觉。他进行了必要的更改并准备了代码。我进行了代码审查,即查看了更改,有更改的注释以及更改已经在库中。我将这些更改指定为v2.0 版本。 下一步是将库添加到 Maven Central - 一个中央存储库,您可以从那里为任何项目下载它并将其用作依赖项。当时,我不知道如何执行此操作,即使是远程操作,所以我说我很忙,并请他执行设置该项目所需的所有步骤。但事实证明这根本不够,最有趣的是与 Maven Central 建立连接。这是一个巨大的痛苦,我第一次做不到,直到 4 月 15 日我才能够在 Maven Central 上发布该项目。这并不容易,但正如其他人喜欢说的那样,“每个想要发布 Java 代码的人都会经历这个。” 在发布该库之前,我终于找到了长期存在的缺陷是什么以及如何处理,并发布了新版本v2.0.2,其中我感谢所有帮助我的人,描述了我做了什么以及如何处理。发布到 Maven Central。2019年春季
要正确发布库,您需要充分了解版本控制以及如何正确设置版本。我将坚持这个计划:- XX.YY.BBBB,其中XX为重大版本更新,其中包含与前一版本不兼容的更改(例如更改方法的返回结果);
- YY是一个小更新 - 内部更改或扩展,不会改变BBBB 的内容- 这些是已修复的缺陷。
- 例如,版本2.0.2表示主要版本为2,没有次要更新,并且有两次缺陷更新。
GO TO FULL VERSION