写点什么

ARTS|Week 2 PlantUML 的学习和分享

用户头像
Puran
关注
发布于: 2020 年 06 月 06 日
ARTS|Week 2 PlantUML 的学习和分享

ARTS是极客时间推出的一个打卡活动,通过100天的关于Algorithm、Review、Tip和Share的刻意训练,来实现进阶。

1. Algorithm

每周至少做一个LeetCode算法题,为了编程训练和学习。

实际时间:90分钟

算法题目

算法题链接:7. Reverse Integer

给定一个32位的整数,反转其数字。

题目分析

该题有两种解决思路:转换为字符串 + 借用堆栈的 Pop/Push

  1. 转换为字符串:这个思路是我一开始看到该问题,就自然想到的一个方法。将整数转化为字符串,再通过字符串的反转来求解。

  2. 借用堆栈的 Pop/Push:该方法是看到官方提供的 Solution 才知道的,即类似于采用堆栈的先进先出的概念,对整数本身进行处理,对原始数值依次进行弹出(Pop)操作,在反转的数值中将之前弹出的数值进行推入(Push)操作。



我觉得 Pop/Push 的方法2应该是要第一时间就想到的,因为是个算法题嘛,可见我自己在算法这方面的「无知」。

代码

整型转字符串的实现:

class Solution:
def reverse(self, x: int) -> int:
maxint = 2**31 - 1
minint = -2**31
flag = 1
if x < 0:
flag = -1
x = x * flag
x_str = str(x)
reverse = int(x_str[::-1]) * flag
if (reverse > maxint or reverse < minint):
return 0
return reverse



Pop/Push 方法实现:

class Solution:
def reverse(self, x: int) -> int:
reverse = 0
maxint = 2**31 - 1
minint = -2**31
if x > 0:
while (x != 0):
pop = x % 10
x = int(x/10)
if (reverse > maxint/10 or (reverse == maxint/10 and pop > 7)):
return 0
reverse = reverse * 10 + pop
elif x < 0:
while(x != 0):
pop = -(-x % 10)
x = int(x/10)
if (reverse < minint/10 or (reverse == minint/10 and pop < -8)):
return 0
reverse = reverse * 10 + pop
return reverse



完整的分享记录在了 LeetCode | 2. Reverse Integer 整数反转

2. Review

阅读并点评至少一篇技术文章,通过英文技术文章来学习英文。

实际时间:40分钟

在 Buggy 的 iOS 13后,苹果的开发和策略变化

原文链接:https://www.bloomberg.com/news/articles/2019-11-21/apple-ios-14-features-changes-testing-after-ios-13-bugs

原文现已不能访问,这是Google Web Cache:Apple iOS 14: Features, Changes, Testing After iOS 13 Bugs - Bloomberg

我的点评

上一篇文章的 Review 是关于为何 iOS 13 如此Buggy的几个原因,这篇文章主要是来讲讲 Apple 在 iOS 13 后的一些在开发和测试上的策略变化。



本文把 iOS 13 的一些问题做了一个汇总,以头两个月的系统更新次数,与以前的版本做了个对比。



Apple在开发和测试方面采用的新方法要求苹果的开发团队确保未来软件更新的测试版本,「默认禁用」未完成或有bug的功能。然后,测试人员可以选择通过Flags的设置菜单,选择性地启用这些功能,以使他们能够隔离每个单独的新增功能。



本文也把Apple内部使用的一些代号及分类方法做了个总结:

  • iOS 13的内部代号为"Yukon"

  • iOS 14的内部代号为"Azul"

  • iOS 15的内部代号为"Azul + 1",因为 iOS 14 的一些新功能要延期到 iOS 15

  • Apple 内部的测试被称为 "white glove",是将软件的质量划分为1 至 100 进行评估

  • 在开发阶段,通过绿、黄、红三色来指代正在开发的功能的质量

  • 在 issue 的优先级中,使用0 至 5的优先级分类

  • 在 iOS 12时,内部组建了 "Tiger Teams" 来统一解决一些性能问题

3. Tip

学习至少一个技术技巧,为了总结和归纳日常工作中遇到的知识点。

实际时间:90分钟

PlantUML

在工作中,要经常绘制类图、流程图等,由于需要团队协作,最终选定了 PlantUML。这一周,我也花了些时间来学习和使用 PlantUML。通过 PlantUML,我能更好的去梳理思路,并且对 UML 的理解会更加的好。

4. Share

分享一篇有观点和思考的技术文章,为了建立影响力、输出价值观。

实际时间:90分钟



这周的分享主要是关于 PlantUML 的使用,以及《大话设计模式》的学习。

PlantUML

PlantUML是开源的以纯文本的方式来编写和绘制UML图的工具,能很好的进行版本管理,适用于团队合作;支持自动排版,能让你更好的聚焦在部件及其之间的关系上;有丰富的语法且与各编辑器有较好的集成;通过PlantUML Server,能很好的进行分享。

具体内容分享在了 PlantUML 的介绍和使用

简单工厂模式

简单工厂模式可以理解为负责生产对象的一个类,称为「工厂」类。主要是为解决将「类实例化的操作」与「使用对象的操作」分开,让使用者不需要知道具体参数就可以实例化出所需要的「产品」类。

大话设计模式 | 1 简单工厂模式 主要是从简单工厂模式的定义、组成和使用步骤等方面进行了学习。



发布于: 2020 年 06 月 06 日阅读数: 56
用户头像

Puran

关注

GIS从业者,正在往开发的路上小跑。 2018.03.29 加入

从业4年的GIS开发小白,work@esri。

评论

发布
暂无评论
ARTS|Week 2 PlantUML 的学习和分享