开发者简报第三期

224 阅读10分钟
原文链接: mp.weixin.qq.com

摘文

据说软件“正在吞噬世界。”越来越多的领域依赖于代码。2015年夏天一天之内,离港管理系统存在问题,联合航空公司停飞; 纽约证券交易系统升级暂停交易; 华尔街日报网站的头版崩溃了;西雅图的911系统再次出现故障,这次是因为另一台路由器出现故障。

这么多软件系统的出现故障,作为软件开发者我们要有责任感。你的疏忽往小方面说影响公司营收;往大的方面有可能导致灾难。软件缺陷不仅来自程序员开发代码不严谨。也来自产品设计不合理,导致开发过于复杂。下面有两个简短事故,我们要引以为戒。

事故1:

在2014年4月10日晚,在华盛顿州的全部人无法拨打911服务热线。一名西雅图女子至少37次拨打911,一名陌生人试图闯入她的房子。当他终于从窗户爬进她的起居室时,她拿起一把菜刀。那个男人逃走了。

在这次报道中,911延机原因被追溯到科罗拉多州恩格尔伍德的服务器上运行的软件。由一个名为Intrado的提供商运营,该服务器有一个运行计数器,记录已经向全美各地的911调度员发送了多少呼叫。Intrado程序员设定了计数器阈值为百万的数字。

在4月10日午夜,超过了这个阀值,导致这次事故。而且由于程序员没有预料到这个问题,他们没有警报系统。直到早上恩格尔伍德的Intrado软件负责任人才发现,并且修复是为了改变一个数字。

事故二:

2007年9月,Jean Bookout女士在开着自己的丰田凯美瑞载着她的好朋友Barbara Schwarz 驾驶离俄克拉荷马州际69号高速公路时,她的汽车突然失去了控制。她不断地踩刹车,可是刹车踏板似乎失控了。情急之下,她拉紧手刹,汽车在减速撞击前,右后轮擦出了一条长达46米的刹车痕。 她的朋友Barbara Schwarz不幸当场去世。昏迷的Bookout女士被送到医院,她因为头部和背部的严重伤势在医院驻留了5个月。

在Bookout事故的诉讼中,软件专家团队花了18个月研究了丰田代码。Barr描述它们是“意大利面条代码”,彻检缺陷困难。

最终他们使用与事故中涉及的凯美瑞相同的模型,Barr的团队证明,实际上有超过1000万种方式可以使车载计算机导致意外加速。他们表明,只需一个位翻转 - 计算机内存中的一变为零或反之亦然 - 可能会使汽车失控。

总而言之,丰田召回了超过900万辆汽车,并支付了近30亿美元的定居费和与意外加速相关的罚款。

原文:即将来临的软件启示录[1]

新闻摘要

Microsoft Edge推出mac预览版

新的Microsoft Edge预览基于Chromium渲染引擎。现在可以在macOS使用'Canary'版本。

原文:Microsoft Edge推出mac预览版[2]

Firefox 67发布

Firefox的最新支持夜间模式以及新的渲染架构。

原文:Firefox 67发布[3]

好文推荐

为什么高级程序员写的代码都是傻瓜式的?

好的代码应该是通俗易懂的,给人一种赏心悦目好像在阅读一篇美好的散文。

原文:为什么高级程序员写的代码都是傻瓜式的?[4]

59条令人捧腹但真实的程序员编程语录

收集了很多关于软件开发者的编程语录。这些语录和软件开发维护、调试、软件bug、软件设计和文档、代码质量、测试和管理等相关。下面这59条编程语录虽然令人捧腹但也揭示了真相。只有真正的软件开发人员才能理解这些编程语录的价值。

原文:59条令人捧腹但真实的程序员编程语录[5]

SOLID原则:软件开发人员强健可维护代码框架

原文:SOLID原则:软件开发人员强健可维护代码框架[6]

Koin vs Dagger,向Koin问好

原文:Koin vs Dagger,向Koin问好[7]

什么是UX工程师?

介绍UX工程师工作职责,需要具备哪些技能。

原文:什么是UX工程师?[8]

教程

Vue.js和SEO:如何优化响应式网站

使用响应式框架创建的网站是否会被Google和其他搜索引擎索引?

原文:Vue.js和SEO:如何优化响应式网站[9]

Three.js基础知识

这是关于three.js的系列文章中的第一篇文章。 Three.js是一个3D库,试图让它尽可能容易地在网页上实现3D内容。

原文:Three.js基础知识[10]

为什么要用WebP图片

WebP是由Google在2010年开发的一种图像格式。目的是为了替代PNG和JPG等格式,它的优点是在保持相似图像质量的同时压缩文件大小。

原文:为什么要用WebP图片[11]

权威的Node.js手册

本手册是Node.js的入门指南。

原文:权威的Node.js手册[12]

学习JavaScript设计模式

chrome浏览器一位员工编写在线版JavaScript设计模式教程。

原文:学习JavaScript设计模式[13]

前端开发人员手册2019

每个人都可以了解的前端开发实践的指南。它概括并概述了前端工程的实践:如何学习它以及在2019年实践它时使用的工具。有pdf以及epub版本。

原文:前端开发人员手册2019[14]

动画手册

动画手册制作出色的动画更加直观的数字产品界面。

原文:动画手册[15]

学习资料

Python学算法入门大全

用Python代码实现了主流的算法。

原文:Python学算法入门大全[16]

前端收集

收录前端开发相关的优秀网站、博客、以及活跃开发者。

原文:前端收集[17]

Go 夜读

这个项目每周会通过在线直播的方式,向开发者分享 Go 相关的技术话题,在Slack上沟通交流编程技术话题。

原文:Go 夜读[18]

JavaScript 编码规范

一份来自 Airbnb 团队开源的 JavaScript 编码规范指南。

原文:JavaScript 编码规范[19]

ChinaMobilePhoneNumberRegex

国内手机号码正则表达式。

原文:ChinaMobilePhoneNumberRegex[20]

F4Lab

基于Flutter开源的GitLab客户端。

原文:F4Lab[21]

Kotlin教程

一个友好Kotlin入门教程

原文:Kotlin教程[22]

js

对图片和帧的本地延迟加载的深入研究

现在的网站充斥着大量的流媒体文件,如图片和视频。图片占网站平均流量的50%左右。懒加载是一种按需加载资源来改善用户体验的好方法。

原文:对图片和帧的本地延迟加载的深入研究[23]

你想知道的关于inputmode的一切

介绍在浏览器中根据inputmode设置模式,决定键盘在浏览器显示方式。

原文:你想知道的关于inputmode的一切[24]

免费指南:JavaScript工具的演变

在本指南中,分析Angular,React和Vue,比较它们的优缺点,以帮助开发人员进行工具决策制定过程

原文:免费指南:JavaScript工具的演变[25]

折叠DOM:使用3D CSS变换来“折叠”图像

基于React、CSS创建图像折叠效果。

原文:折叠DOM[26]

CSS

网页排版

几种流畅的网页排版方法,并研究了哪种方法效果最好。

原文:网页排版[27]

调试CSS网格

一系列简短的文章深入研究网格布局常见问题,旨在更好地理解网格,以便可以预测布局问题,并在发生问题时更轻松地进行调试。

原文:调试CSS网格[28]

z-index无法工作的4个原因(以及如何解决)

Z-index是一个CSS属性,允许将图层中的元素放在彼此的顶部。了解如何在CSS中使用的一个非常重要的工具。

原文:z-index无法工作的4个原因[29]

截断多行文本的CSS功能

在Firefox实现类似微信朋友圈截断文本,限制指定的行数(1或更多),最后用省略号(...)结尾。

原文:截断多行文本的CSS功能[30]

css实现中国古代传统窗格--窗棂

应用-webkit-box-reflect属性实现中国古代传统窗格--窗棂

原文:css实现中国古代传统窗格--窗棂[31]

漂亮简单易用的标签动画

专注于流动性,简洁性和易用性。纯CSS实现。完全开源和MIT许可。

原文:漂亮简单易用的标签动画[32]

CSS3 Transform

一个2D和3D CSS Transform函数可视化工具。

原文:CSS3 Transform[33]

Organic Blending

一个美丽的有机内容滑块,带有混合渐变背景

原文:Organic Blending[34]

CSS可以做这些事

CSS可以做的事情列表

原文:CSS可以做这些事[35]

工具

GitHub JS

2019年5月,GitHub JS 43个最受欢迎的存储库

原文:[GitHub JS](https://dev.to/iriskatastic/43-most-popular-github-js-repositories-in-may-2019-dhn?utm_source=digest_mailer&utm_medium=email&utm_campaign=digest_email "GitHub JS

Tornis介绍

一个JavaScript库,用于跟踪鼠标位置,窗口大小,滚动位置等

原文:Tornis介绍[36]

Rough.js

Rough.js是一个小型(约8.5kB gzip)粗略的手绘风格图形库。该库定义了绘制直线,曲线,圆弧,多边形,圆和椭圆的基元。支持绘制SVG路径。

原文:Rough.js[37]

reveal.js

使用HTML轻松创建精美PPT效果的框架

原文:reveal.js[38]

embetty

在博客嵌入推文以及视频

原文:embetty[39]

参考资料

[1]

即将来临的软件启示录: https://medium.com/the-atlantic/the-coming-software-apocalypse-4ffb43f3b288

[2]

Microsoft Edge推出mac预览版: https://blogs.windows.com/msedgedev/2019/05/20/microsoft-edge-macos-canary-preview/

[3]

Firefox 67发布: https://hacks.mozilla.org/2019/05/firefox-67-dark-mode-css-webrender/

[4]

为什么高级程序员写的代码都是傻瓜式的?: https://www.infoq.cn/article/gu0HigYOJ-Wf20HayH69

[5]

59条令人捧腹但真实的程序员编程语录: http://www.cocoachina.com/programmer/20160704/16918.html

[6]

SOLID原则:软件开发人员强健可维护代码框架: https://khalilstemmler.com/articles/solid-principles/solid-typescript/

[7]

Koin vs Dagger,向Koin问好: https://medium.com/@farshidabazari/android-koin-with-mvvm-and-retrofit-e040e4e15f9d

[8]

什么是UX工程师?: https://dev.to/emmawedekind/ux-engineering-3hem

[9]

Vue.js和SEO:如何优化响应式网站: https://www.smashingmagazine.com/2019/05/vue-js-seo-reactive-websites-search-engines-bots/

[10]

Three.js基础知识: https://threejsfundamentals.org/threejs/lessons/threejs-fundamentals.html

[11]

为什么要用WebP图片: https://bitsofco.de/why-and-how-to-use-webp-images-today/

[12]

权威的Node.js手册: https://medium.freecodecamp.org/the-definitive-node-js-handbook-6912378afc6e

[13]

学习JavaScript设计模式: https://addyosmani.com/resources/essentialjsdesignpatterns/book/

[14]

前端开发人员手册2019: https://frontendmasters.com/books/front-end-handbook/2019/

[15]

动画手册: https://www.designbetter.co/animation-handbook/purpose

[16]

Python学算法入门大全: https://github.com/TheAlgorithms/Python

[17]

前端收集: https://github.com/foru17/front-end-collect

[18]

Go 夜读: https://github.com/developer-learning/reading-go

[19]

JavaScript 编码规范: https://github.com/airbnb/javascript

[20]

ChinaMobilePhoneNumberRegex: https://github.com/VincentSit/ChinaMobilePhoneNumberRegex

[21]

F4Lab: https://github.com/stefanJi/Flutter4GitLab

[22]

Kotlin教程: http://lixiaojun.xin/static/courses/kotlin/

[23]

对图片和帧的本地延迟加载的深入研究: https://css-tricks.com/a-deep-dive-into-native-lazy-loading-for-images-and-frames/

[24]

你想知道的关于inputmode的一切: https://css-tricks.com/everything-you-ever-wanted-to-know-about-inputmode/

[25]

免费指南:JavaScript工具的演变: https://www.sencha.com/resources/whitepaper/the-evolution-of-javascript-tooling/?utm_source=cooperpress&utm_medium=advertising&utm_campaign=sncextjs&utm_content=052219-sncextjs-ad-fef

[26]

折叠DOM: https://www.joshwcomeau.com/posts/folding-the-dom/

[27]

网页排版: https://betterwebtype.com/articles/2019/05/14/the-state-of-fluid-web-typography/?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[28]

调试CSS网格: https://css-irl.info/debugging-css-grid-part-1-understanding-implicit-tracks/

[29]

z-index无法工作的4个原因: https://medium.freecodecamp.org/4-reasons-your-z-index-isnt-working-and-how-to-fix-it-coder-coder-6bc05f103e6c

[30]

截断多行文本的CSS功能: https://webplatform.news/issues/2019-05-17?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[31]

css实现中国古代传统窗格--窗棂: https://yuanchuan.dev/2019/05/15/window-lattice-and-css.html?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[32]

漂亮简单易用的标签动画: https://cssfx.dev/?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[33]

CSS3 Transform: https://css-transform.moro.es/?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[34]

Organic Blending: https://codepen.io/team/keyframers/pen/RmLjzQ?utm_source=CSS-Weekly&utm_campaign=Issue-364&utm_medium=web

[35]

CSS可以做这些事: https://dev.to/ananyaneogi/css-can-do-that-18g7

[36]

Tornis介绍: https://tornis.robbowen.digital/

[37]

Rough.js: https://roughjs.com/

[38]

reveal.js: https://github.com/hakimel/reveal.js

[39]

embetty: https://github.com/heiseonline/embetty