关于DenverYao

80后,IT从业者、科技数码爱好者。生于天津,居于大连。微博曾用名“@恐龙丹佛”。

为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠的创建高质量软件。

事实上,并不是这两个团队之间的协作帮助交付了更好的软件,而是“开发”和“运维”团队之间的统一导致了软件的改进,并以更快的速度交付。我们不要忘记DevOps工具在实现自动化方面所扮演的角色。

开发和运维“一体”的感觉是由开发人员和操作工程师之间的技能组合和实践的桥接以及自动化(DevOps)工具的实现引起的。世界各地的大型互联网公司都已采用DevOps方法来彻底改进其性能、安全性和团队动态。

在本篇文章中,让我们看看什么是DevOps,以及它为什么如此重要。我们将跟踪DevOps软件开发方法的演变,然后探索什么是DevOps及其生命周期,并通过评估世界顶级公司,来看看如何使用DevOps来获得益处。

继续阅读

HTTPS工作原理

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。本文我们就了解一下 HTTPS。

一、什么是 HTTPS

HTTPS,是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信。使用 HTTPS 通信时,不再用http://,而是改用https://。另外,当浏览器访问 HTTPS 通信有效的 Web 网站时,浏览器的地址栏内会出现一个带锁的标记。对 HTTPS 的显示方式会因浏览器的不同而有所改变。

继续阅读

程序员吐槽:我永远不会再为 Oracle 工作了

近日,某网友在 Hacker News 上发起了一个 “你见过的最糟糕的代码是什么?” 的问题,引起了广泛关注和讨论,评论数已接近600条。其中,一位 ID 为“oraguy”的程序员对 Oracle 数据库代码的吐槽,更是引发热议。

内容大意如下:

Oracle 数据库 12.2。它有近 2500 万行 C 代码。

这有多恐怖,简直难以想象!你无法在不破坏成千上万个现有测试的情况下更改产品中的单行代码。好几代程序员在有限的项目期限内编写了这些代码,其中充斥着大量的垃圾代码。

非常复杂的逻辑、内存管理、上下文切换等,这些都用数千个 flag 连接起来。整个代码充斥着神秘的宏命令,如果不拿出笔记本,并且手动去展开相关的宏命令,就无法理清楚这些命令。甚至可能需要一两天才能真正理解某个宏命令的作用。

有时你需要理顺 20 个不同 flag 的值和效果来预测代码在不同情况下的行为方式。有时多达数百个 flag !这一点也不夸张。

这个产品仍然存活并且仍然可用的唯一原因是数百万次的测试!

以下是 Oracle 数据库开发人员的日常:

  • 开始处理一个新的 bug 。
  • 花两周的时间试图理解 20 个不同的 flag ,这些 flag 以神秘的方式相互交互,导致这个困境。
  • 再添加一个 flag 来处理新的特殊场景。添加几行代码来检查此 flag ,并解决有问题的情况,规避该 bug 。
  • 将更改提交到包含大约100-200台服务器的测试服务器集群,这些服务器将编译代码,构建新的 Oracle 数据库,并以分布式方式运行数百万个测试。
  • 回家。第二天来上班,继续处理别的 bug 。测试可能需要20-30个小时才能完成。
  • 再回家。再来上班,检查你的集群测试结果。顺利的话,会有大约100个失败的测试。倒霉的话,将有大约1000个失败的测试。随机选择一些测试并试图搞清楚你的假设出了什么问题。或许还需要考虑10多个 flag 才能真正理解 bug 的本质。
  • 再添加一些 flag 以尝试解决问题。再次提交更改以进行测试。再等20-30个小时。
  • 来来回回重复两周,直到你得到了将这些 flag 组合起来的“神秘咒语”。
  • 终有一天,你会成功,不再出现测试失败。
  • 为你的新更改添加100多个测试,以确保下一个不幸接触这段新代码的开发人员永远不会破坏你的修复。
  • 提交最后一轮测试的成果。然后提交以供审核。审查本身可能还需要2周到2个月。所以现在继续去处理下一个 bug 。
  • 在2周到2个月之后,一切已就绪,代码将最终合并到主分支中。

以上就是对在 Oracle 修复 bug 的程序员日常生活的描述,一点也不夸张。现在想象一下开发新功能会有多么恐怖。开发一个小功能需要6个月到1年的时间(如果是添加一种新的身份验证模式,比如支持 AD 身份验证,可能需要2年)。

这款产品本身就是一个奇迹! 继续阅读

徐小平:关于那些最终将影响人生格局的问题清单

11点原则,助你改变人生格局

1. 选择决定命运,认知决定选择。在离开学校以前,就应该清楚地意识到,世界很大,变化很快。你在大学里学到的知识,绝对不足以帮助你建立一个广阔的视野。你必须养成随时随地跨界学习的习惯和能力,不断探索那些与自己的专业貌似无关的知识新边疆。

2. 在人生大事上学会运用经济学思考模型。人的价值高低取决于稀缺性,即不可替代性。所以,无论做什么工作或者选择和谁一起生活,都要把事情做到别人无法替代的程度,这是对自我价值最好的保护和经营。 继续阅读

自动化来势汹汹,未来的程序员该何去何从?

特色

编者按:AI、自动化,这些技术进步不仅威胁到到了其他行业的工作,甚至有声音认为,连开发这些技术的程序员其自嘲的“码农”地位都将不保。比方说,OpenAI前研究科学家Andrej Karpathy就认为,在AI引领的软件2.0趋势下,传统程序员真的有可能要失业了。不过,跟Tyler Elliot Bettilyon相比,这些都是对程序员未来的片面看法,相对而言,他对程序员未来的工作前景分析更加全面客观,值得从业者好好看看,思考未来作何选择。

我的一位朋友最近提出了一个问题,这样的问题我在不同场合都听说过,只是形式各不相同:

你是否认为IT和一些低端的编程工作会重蹈渡渡鸟的覆辙?看起来一场大规模的就业泡沫似乎就要破裂了。在我看来,技术和低端计算机科学相关工作之所以还“久负盛名”并且拿到不菲的报酬的其中一个原因,是那些荒谬的行话以及公众对计算机的无知,但这两个在未来10年都会消失……

这个问题同时指向了两点,一是技术工作的未来,二是对软件工程领域的普遍误解。虽说有大量“荒谬的行话”没错,但是还有同样多的困难问题等着那帮有着合适技能组合的人去解决也是事实。一些软件工作绝对是要消失的,但在很多年的时间里有着合适经验和知识的一些程序员仍然会继续享有声望并且拿到可观的报酬;作为例子可以看看最近AI研究人员薪水的爆发以及可用人才的相应短缺就知道了。

在不断变化的技术业能够保持与时俱进是个挑战。通过审视取代现在哪些程序员的技术可以预测出市场的那些岗位会消失。此外,要想预测特定技能薪酬和需求变化我们应该考虑学习编程群体的壮大情况。就像Hannah指出“公众对计算机的无知”导致了那些会编程的人工资高企一样,大众对计算机的认知正在逐年变得更加娴熟。 继续阅读

如何在一周内摸清一个行业

在和咨询、投行、投资、猎头这些行业的人聊天的时候,我反复听到“一周”这个时间,于是我也开始好奇:你们是在什么情况下需要在一个星期之内了解一个行业?你们都是如何做到在一个星期之内摸清一个行业的?
 
在一周之内“摸清”一个行业依然不可能成为这个行业的顶尖专家,也不可能成为这个行业的一个高管。但是,你能了解一个行业的全局,现今状况、过去、未来一段时间内可能的发展趋势,熟悉那个行业的行话,拿捏这个行业的基本信息。

这有什么用?
 
你能和那个行业内的人自如对话,你能站在局外人的角度结合你自己的知识和经验看到新的机遇,你能在你的客户面前让他刮目相看,你还能拿到一份好工作,了解你的上司在做决策的时候会考虑什么…
 
所以我们微信公共账号“改变自己”邀请了三个嘉宾来和我们说,他们是如何做到在一周之内摸清一个行业的。

继续阅读

思维工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则

一、SWOT分析法:

Strengths:优势
Weaknesses:劣势
Opportunities:机会
Threats:威胁

意义:帮您清晰地把握全局,分析自己在资源方面的优势与劣势,把握环境提供的机会,防范可能存在的风险与威胁,对我们的成功有非常重要的意义。

二、PDCA循环规则

Plan:制定目标与计划;
Do:任务展开,组织实施;
Check:对过程中的关键点和最终结果进行检查;
Action:纠正偏差,对成果进行标准化,并确定新的目标,制定下一轮计划。

意义:每一项工作,都是一个pdca循环,都需要计划、实施、检查结果,并进一步进行改进,同时进入下一个循环,只有在日积月累的渐进改善中,才可能会有质的飞跃,才可能取得完善每一项工作,完善自己的人生。

继续阅读

浅谈人工智能:现状、任务、构架与统一

特色

作者:朱松纯
加州大学洛杉矶分校UCLA
统计学和计算机科学教授
视觉、认知、学习与自主机器人中心主任

来源:2017年11月02日 刊登于 《视觉求索》微信公众号


继续阅读

谁抢走了你的工作:机器人还是全球化?

谁抢走了你的工作:机器人还是全球化?

桑德布:面对制造业岗位不可逆转地流失,到底该怪机器人还是贸易?对于这两者,我们又该怪些什么?

更新于2017年4月17日 06:16
英国《金融时报》经济社评撰稿人 马丁•桑德布

在这几篇迷你系列文章的第一部分,我调查了现今机器人、自动化以及其他提高生产率的技术是如何影响经济核心产业以及一些更奇特的科幻小说例子。在第二部分,我考察了“索洛悖论”(Solow paradox)——令人喘不过气的创新与停滞不前的劳动生产率的奇怪组合(不过当你意识到并没有那么多体现新技术的投资时,这就没那么奇怪了)。

现在,我们把重点放在这带来的最大的政治影响上。谁偷走了工作——是机器人还是外国人?或者不那么带有倾向性地来看,富裕国家制造业就业数量不断下滑,是由贸易自由化或自动化和其他提高生产率的技术变革造成的吗?

我们主要讨论制造业就业。美国的特殊之处在于,自从进入21世纪以来,总体就业率(所有工作都算在一起)一直下滑,并且下滑时间长于男性就业率下滑的时间。正如杰森•福尔曼(Jason Furman)及其同事记录的大量文档所表明的那样,美国正面临着一个比较普遍的问题的严重版——制造业岗位不仅消失了,而且没有得到任何替代。

那么到底该怪机器人还是贸易?一个简单而大致上正确的回答是:两者都怪。但现在还存在另一个问题——两者相对的重要性、以及它们到底罪在哪里。
继续阅读

被一台台灯惊艳到,是怎样的一种体验?

不用诧异,本文要说的,不是数码产品,而是一台,台灯。作为一名典型中年IT技术男,本人使用台灯的场景原本非常之少:半夜刷微博、Twitter、朋友圈、Facebook、知乎、今日头条,全是摸黑;深夜被老板(美国时区)Call起来排查系统故障、敲代码、更新文档,一般也是摸黑面对显示器……必须开灯的时候,往往直接开房间大灯,而此时一般会有老婆孩子扔过来的拖鞋若干双……

上述情况之下,眼部肌肉酸涩、短时间视线模糊等用眼过度现象,时有发生。

“还是弄个台灯吧……”

有了想法之后,首先想到的是皮克斯动画片头里的那台小跳灯。

继续阅读