技术雷达的安全实践

混用测试环境与产品环境、明文记录用户敏感数据、违反相关技术标准、公网暴露数据库密码。X网站的安全事故对很多企业的IT部门都是警示,它提醒我们,随着互联网的发展,软件安全和信息安全不再是安装防火墙所能保障的,它需要企业从软件开发的第一分钟就开始关注安全并积极采取行动,把软件安全内建到研发过程中。

变化驱动:正交设计

尽管理论上讲,任意复杂的系统都可以被放入同一个函数里。但随着软件越来复杂,即便是智商最为发达的程序员也发现,单一过程的复杂度已经超出他的掌控极限。这逼迫人们必须对大问题进行分解,分而治之。

时至今日,尽管超大函数,上帝类依然并不罕见,但当大到一定程度,上帝类的创造者最终也会发现自己终究没有上帝般的掌控力。因而,哪怕是软件设计素养为负值的开发者,或多或少也会对一个复杂系统进行一定程度的拆分。

为什么优秀的程序员喜欢命令行?

优秀的程序员借助命令行的特性,可以成倍(有时候是跨越数量级的)提高工作效率,从而有更多的时间进行思考、学习新的技能,或者开发新的工具帮助某项工作的自动化。这也是优秀的程序员之所以优秀的原因。而面向手工的、原始的图形界面会拖慢这个过程,很多原本可以自动化起来的工作被淹没在“简单的GUI”之中。

解读GraphQL(三):Relay—面向未来的前端框架

这篇文章是这个系列的尾声,也是我们可以一窥GraphQL、Relay生态究竟可以为我们提供怎样优势的时候了。
我们都知道,一项技术的普及,很大程度来源于旧工具解决某些新问题过于棘手的问题。我们看到前端迅猛发展的过程中,社区逐渐开始抛弃jQuery和Angular——因为当我们的场景越来越复杂时,它们就会开始失控,让我们面临越来越多的维护和性能问题。

解读GraphQL(二): 使用Apollo Data构建GraphQL应用

今天的主角是Apollo Data,它提供了一套与GraphQL相关的服务端/客户端工具,大幅简化GraphQL的开发。并且Apollo client分别有React(Native),Angular2,IOS,以及正在开发的Android版本。如果你所使用的平台不在上述范围内,Apollo client也有原生JavaScript版本可用。它内部基于Redux编写,因此你可以用非常科幻的Redux devtools检测应用状态,然而你并不需要了解Redux也可以使用Apollo。Talk is cheap,第一篇已经解释了很多主要概念,Apollo也非常简单。因此这篇将以Code为主。