其他 #### * 1968-04月 梅尔 · 康威在 Datamation 杂志上发表了一篇名为“How Do Committees Invent”的论文,提出了「康威定律」 * 1992 年 Ward Cunningham 提出“技术债” * 2018-05-23 net-tools 起源于 BSD,自 2001 年起,Linux 社区已经对其停止维护,而 iproute2 旨在取代 net-tools,并提供了一些新功能。一些 Linux 发行版已经停止支持 net-tools,只支持 iproute2。 加密 ==== * 1976 年,DH 是 Diffie-Hellman 的首字母缩写,作者Whitfield Diffie 与 Martin Hellman开创了公钥密码学的先河 * 1977 年,联邦信息处理标准(FIPS)发布 DES * 1977 年,三位数学家Rivest、Shamir 和 Adleman设计了一种公钥算法RSA,可以实现非对称加密。这种算法用他们三个人的名字命名。 * Rivest设计出 md4, 128bit, RFC1186, RFC1320 * 1983 年由 David Chaum 提出 ``盲签名`` * 1985 年由 Neal Koblitz 和 Victor Miller 分别独立提出 ``ECC`` * 1990 年,MIT 的 Ronald L. Rivest 设计出MD4(RFC 1320),MD 是 Message Digest 的缩写。其输出为 128 位。MD4 已证明不够安全。 * 1991 年,Rivest 对 MD4 的改进版本MD5(RFC 1321)。它对输入仍以 512 位分组,其输出是 128 位。MD5 比 MD4 复杂,并且计算速度要慢一点,更安全一些。MD5 已被证明不具备“强抗碰撞性”。 * 1991年,程序员Phil Zimmermann为了避开政府的监视,开发了加密软件PGP。因为这个软件非常好用,迅速流传开来成为许多程序员的必备工具 * 1993 年,安全杂凑标准(Secure Hash Standard)发布第一个版本,这个版本常被称为 SHA-0,它在发布之后很快就被 NSA 撤回。 * 1995 年,NIST发布了 SHA-1,它的输出为长度 160 位的 hash 值,因此抗穷举性更好。 * 1997 年,PGP 成为一项互联网标准,称为 OpenPGP * 1997 年,GPG(GnuPG)是OpenPGP 标准多种实现中的一种,由自由软件基金会 (FSF) 所开发的的程序称 GNU Privacy Guard(GPG) * 2000 年10月2日, Rijndael(比利时: Joan Daemen, Vincent Rijmen)在美国国家技术研究所NIST(National Institute of Standards and Technology)举办的公开竞选中获胜,生成新的对称加密标准 AES * 2002 年,以官方标准发布包含SHA-1 的 FIPS PUB 180-2 * 2004 年 2 月,发布了一次 FIPS PUB 180-2 的变更通知,加入了一个额外的变种 SHA-224 * 2010 年12月17日,国家密码管理局发布的椭圆曲线公钥密码算法SM2 加密破解 ======== * 1999年,RSA-155 (512 bits)被成功分解,花了五个月时间(约8000 MIPS年)和224 CPU hours在一台有3.2G中央内存的Cray C916计算机上完成 * 2010 年,美国软件工程学会 (SEI) 就认为 MD5 算法已被破解,不再适用 * 2009年12月12日,编号为RSA-768(768 bits, 232 digits)数也被成功分解。这一事件威胁了现通行的1024-bit密钥的安全性,普遍认为用户应尽快升级到2048-bit或以上 服务端开发 ========== * 1971 年,电子邮件诞生。 * 1974 年,Internet 诞生。 * 1974 年,第一个数据库系统 IBM System R 诞生。SQL 语言诞生。 * 1989 年,万维网(WWW)诞生。 * 1993 年,世界上第一个 Web 服务器 NCSA HTTPd 诞生,它也是大名鼎鼎的 Apache 开源 Web 服务器的前身。 * 1998 年,Akamai 诞生,提供内容分发网络(CDN)服务。算是全球第一个企业云服务,当时还没有云计算这样的概念 * 2006 年,Amazon 发布弹性计算云(Elastic Compute Cloud),简称 EC2。这被看作云计算诞生的标志性事件。 * 2007 年,Amazon 发布简单存储服务(Simple Storage Service),简称 S3。这是全球第一个对象存储服务。 * 2008 年,Google 发布 GAE(Google App Engine)。 * 2009 年,Go 语言诞生。Derek Collison 曾预言 Go 语言将制霸云计算领域。 * 2013 年,Docker 诞生。 * 2013 年,CoreOS 诞生。这是第一个专门面向服务端的操作系统。 * 2014 年,Kubernetes 诞生。当前被认为是数据中心操作系统(DCOS)的事实标准。 正则表达式 ========== * 20 世纪 40 年代,有两位神经生理学家(Warren McCulloch 和 Walter Pitts),研究出了一种用数学方式来描述神经网络的方法。 * 1956 年,一位数学家(Stephen Kleene)发表了一篇标题为《神经网络事件表示法和有穷自动机》的论文。这篇论文描述了一种叫做 “正则集合(Regular Sets)” 的符号。 * 1968 年 Unix 之父 Ken Thompson 发表了文章《正则表达式搜索算法》,并且将正则引入了自己开发的编辑器 qed,以及之后的编辑器 ed 中,然后又移植到了大名鼎鼎的文本搜索工具 grep 中 * 1986 年的 POSIX 开始进行标准化的尝试。POSIX 作为一系列规范,定义了 Unix 操作系统应当支持的功能,其中也包括正则表达式的规范。因此,Unix 系统或类 Unix 系统上的大部分工具,如 grep、sed、awk 等,均遵循该标准。我们把这些遵循 POSIX 正则表达式规范的正则表达式,称为 ``POSIX 流派的正则表达式`` [注: 流派1]。 * 1987 年 12 月,Larry Wall 发布了 Perl 语言第一版,因其功能强大一票走红,所引入的正则表达式功能大放异彩。之后 Perl 语言中的正则表达式不断改进,影响越来越大。于是在此基础上,1997 年又诞生了 ``PCRE——Perl 兼容正则表达式(Perl Compatible Regular Expressions)`` [注: 流派2]。 敏捷开发 ======== * 1996 年,Steve McConnel 出版了一本著作《Rapid Development》,国内译作《快速软件开发》首次提出了解决集成问题的优秀实践:Daily Build,每日构建。 * 2000 年时,“软件行业最会总结的人” Martin Fowler 发布了一篇重量级文章“Continuous Integration” * 2011 年写成《精益创业》。最早成型的面向不确定性创造新事物的方法论是精益创业(Lean Startup),它是 Eric Ries 最早总结出来的。他在很多地方分享他的理念,不断提炼,最终在 2011 年写成一本同名的书:《精益创业》。 * 2006 年,Martin Fowler 重写了“Continuous Integration”这篇文章 测试 ==== 最早的测试框架起源是 Smalltalk。这是一门早期的面向对象程序设计语言,它有很多拥趸,很多今天流行的编程概念就来自于 Smalltalk,测试框架便是其中之一。 真正让测试框架广泛流行起来,要归功于 Kent Beck 和 Erich Gamma。Kent Beck 是极限编程的创始人,在软件工程领域大名鼎鼎,而 Erich Gamma 则是著名的《设计模式》一书的作者,很多人熟悉的 Visual Studio Code 也有他的重大贡献。 有一次,二人一起从苏黎世飞往亚特兰大参加 OOPLSA(Object-Oriented Programming, Systems, Languages & Applications)大会,在航班上两个人结对编程写出了 JUnit。从这个名字你便不难看出,它的目标是打造一个单元测试框架。 顺便说一下,如果你知道 Kent Beck 是个狂热的 Smalltalk 粉丝,写过 SUnit 测试框架,就不难理解这两个人为什么能在一次航班上就完成这样的力作。 JUnit 之后,测试框架的概念逐渐开始流行起来。如今的 “程序世界”,测试框架已经成为行业标配,每个程序设计语言都有自己的测试框架,甚至不止一种,一些语言甚至把它放到了标准库里,行业里也用 XUnit 统称这些测试框架。 * 2003 年由 Dan North 提出了来的 BDD 信息论 ====== * 1948 年,克劳德・香农(Claude Elwood Shannon)在《贝尔系统技术学报》(Bell System Technical Journal)上发表了一篇论文《通信的数学原理》(A Mathematical Theory of Communication),这是现代信息论的开端。我们程序员熟知的通信、数据压缩、密码学、自然语言处理等诸多领域都有信息论的身影。 .. figure:: https://img.zhaoweiguo.com/knowledge/images/theorys/normals/Shannon1_comunicate_model.jpeg 香农信息论中的一个通信模型:: 1. 信源(Information Source),它负责产生信息(Message)。 2. 发送器(Transmitter),它会对信息进行某些操作,也就是对信息编码,产生信号(Signal)。 3. 信道(Channel),它是信号传送的媒介。 4. 接收器(Receiver),它是对信号执行发送器的逆操作,解码信号,提取出信息。 5. 信宿(Destination),它负责接收信息。 6. 噪声(Noise) CI/CD ===== * 2009 年,Flickr 做了一个分享《每天部署 10 次》,整个行业受到了极大的冲击,从此 DevOps 运动风起云涌。Chef、Puppet、Ansible 这些工具基本上都是在那之后,兴起或广为人知的。