BytePower 技术周刊 - 005

# BytePower 技术周刊 - 005

# 文章

# 代码质量提升之道——代码覆盖率原理与移动端工程实践 (opens new window)(中文)

随着项目迭代的不断深入,工程逻辑与用户场景日益复杂,传统的白盒测试体系已经无法适应苛刻的工程质量要求,因此有必要针对工程质量进行精细化管理。质量评估不再单纯依赖 bug 率和性能指标,而是通过精准的数据来量化代码质量,代码覆盖率就是其中的一项重要标准。

代码覆盖率高不能说明代码质量高,但是代码覆盖率低,意味着代码质量很可能存在一些问题,因此代码覆盖率可以作为代码质量的一个重要衡量标准。

# 模糊测试:如何自动创建复杂的测试用例并发现未知错误 (opens new window)(中译)

据 Wikipedia 介绍,模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。模糊测试最早由威斯康星大学的 Barton Miller 于 1988 年提出。他们的工作不仅使用随机无结构的测试数据,还系统的利用了一系列的工具去分析不同平台上的各种软件,并对测试发现的错误进行了系统的分析。此外,他们还公开了源代码,测试流程以及原始结果数据。模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based)。模糊测试可以被用作白盒,灰盒或黑盒测试。文件格式与网络协议是最常见的测试目标,但任何程序输入都可以作为测试对象。常见的输入有环境变量,鼠标和键盘事件以及 API 调用序列。甚至一些通常不被考虑成输入的对象也可以被测试,比如数据库中的数据或共享内存。对于安全相关的测试,那些跨越可信边界的数据是最有趣的。比如,模糊测试那些处理任意用户上传的文件的代码比测试解析服务器配置文件的代码更重要。因为服务器配置文件往往只能被有一定权限的用户修改。

# Dropbox 如何用四年完成 400 万行 Python 代码检查 (opens new window)(英文)(中译)

作为 Python 的大用户之一, Dropbox 公司内部聚集了数百万行 Python 代码,动态类型的存在让代码越来越难以理解。因此,公司开始利用 mypy 逐步将代码转换为静态类型。虽然效果得到了充分验证,但整个过程充满了各种错误和失败。本文,Dropbox 公司完整输出了从项目研究到实践的 Python 静态检查全过程,以期对各位开发者有所帮助。

另提供 中文译文 (opens new window) 供参考。

# 使用 Backblaze B2 和 Cloudflare Workers 搭建免费图床 (opens new window)(英文)

开发者通常都有图片托管的需求,本文介绍一个免费的搭建个人图床的方案。

# motd 功能解释 (opens new window)(英文)

类 Unix 系统的/etc/motd服务,可以对所有用户显示登陆时的通知信息。本文介绍怎么使用这个服务。

# 工具

# transformer

这个工具可以自动生成英语文本。你输入一句话,然后按 Tab 键,就得到一整段。

我输入:以前有一个男孩。得到:他名叫杰克,还有一个女孩名叫维奥莱特。 女孩穿黄色,男孩穿蓝色。杰克说他打算买一件新衣服,搭配她的衣服。

# Unison (opens new window)

一个桌面软件,可以让 OSX、Unix 和 Windows 系统的文件同步。

# 翻译侠 (opens new window)

浏览器翻译插件,支持 Chrome 和 Firefox,鼠标点击或选择触发翻译,可以翻译多种语言,底层为 Google translate API。

# 资源

# 版本博物馆 (opens new window)

该网站收集世界主要网站和应用程序的页面变迁。

# Python 语法笔记 (opens new window)

一个比较完整的 Python 教程,主要是语法方面的笔记。

# 现代 Web 开发 (opens new window)

一个在线的 Node.js + React 的互动教程。

# 一些资讯

# Firefox (opens new window)

Firefox 宣布,发布周期从 6 周改成 4 周,每个月发一个大版本。相比之下,Chrome 现在是 6 周一个大版本。

这就是前端的速度。一年可以从 v69 变成 v81,也就是说,如果你的知识一年不更新,就会遥遥落后最新进展。

# Cascadia Code (opens new window)

微软正式宣布新的适应于终端工具和编辑器的新字体:Cascadia Code,支持编程连字特性。是一款开源字体:

从 GitHub 安装 Cascadia Code 字体:http://t.cn/AiEk9MdF (opens new window)

对比几个开源等宽字体(可能要放大图片到 100%才能看出区别):Cascadia Code,FiraCode,Inconsolata 和 Anonymous Pro。Cascadia Code 的笔划是比较粗,用于浅色背景时会显得更粗。

# 为知笔记 Docker 服务器端 (opens new window)

为知笔记近日发布了为知笔记私有部署 Docker 镜像,只需简单几步,就能将为知笔记服务端部署在自己的服务器甚至自己的电脑上面,并且使用为知笔记多平台客户端进行连接使用,拥有 VIP 权限,最重要的是,免费。

# 有趣的内容

# 自然界的二叉树 (opens new window)

下面的植物,每个节点都有两个分支。

# 《元素周期表 150 周年》 (opens new window)

人类正在充分利用元素周期表。20 世纪 80 年代的第一代手机,包含 25 到 30 种化学元素。今天的手机包含大约 75 种化学元素,几乎是周期表的四分之三,其中可能包括卢旺达的钽、白俄罗斯的钾、墨西哥的银、缅甸的锡、印度的碳和中国的锗。

上次更新: 2019/12/27 19:32:53