最新文章
被误解的MVC和被神化的MVVM 手机开发
MVC 的历史 MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。 MVC 的概念最早出现在二十世纪八十年代的施乐帕克实验室中(对,就是那个发明图形用户界面...
再谈设计和编码 软件设计
这篇文章谈下编码中的一些细节问题,在谈之前首先还是要继续推荐下《代码大全》这本书,该书在很多公司都会被推荐为新人入职后的必读书,即使在互联网和敏捷开发环境下,该书对于新人仍然有仔细阅读和体会的必要,要明白架构和设计思维的基础仍然是编码思维,面向对象思维的基础仍然是代码本身的逻辑和结构,如果不能写...
什么时候应该避免写代码注释? 程序人生
英文原文:When Should You Avoid Commenting Your Code? 看到标题,我知道你可能会想:“我为什么要避免代码注释,这难道不是一件好事吗?”。是的,写注释在大多数情况下是有用的。但是,请注意,我说的是“在大多数情况下”,因为有一些情况下,你不应该写注释。 ...
持续集成是什么? 软件工程
互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI)。 本文简要介绍持续集成的概念和做法。 一、概念 持续集成指的是,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个。1、快速发现错误。每完成一点...
人,技术与流程 程序人生
我先做一下自我介绍,我是 2007 年加入的 Google,在 Moutain View 总部任 Google SRE,今年年初回国加入 Coding。 在 Google 我参与了两个 Project,第一个就是 Youtube,其中包括 Video transcoding, streamin...
HTTPS背后的加密算法 互联网
当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信。InfoQ的这篇文章对此有非常详细的描述。这些复杂的步骤的第一步,就是浏览器与服务器之间协商一个在后续通信中使用的密钥算法。这个过程简单来说是这样的:浏览器把自身支持的一系列Cipher S...
下一代云计算模式:Docker正掀起个性化商业革命 云计算
文/ITValue 记者吴宁川 从 2008 年开始进入公众视野,到亚马逊与微软于近期获得 1 亿美元的美国联邦管理局云计算合同,云计算整整走过了 7 年。7 年间,以第一代云计算技术为基础的移动计算、社交网络、大数据等新信息技术在全球商业领域掀起了一场新商业运动,这场商业运动创造出以消费者和...
野生程序员的故事 程序人生
本文摘自:《Web 全栈工程师的自我修养》 野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人。野生程序员有很强大的单兵作战能力,但是在编入“正规军”之后,可能会不适应新的做事方法。 遭遇“野生程序员” 腾讯公司内部的团队很多,在团队管理上有项...
状态机的两种写法 编程基础
有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着...
状态机思路在程序设计中的应用 编程基础
状态机的概念 状态机是软件编程中的一个重要概念,比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态,再触发另一个键后切换到C状态,或者返回到A状态。这就是最...
技术系列之“状态机” 编程基础
一、状态机描述 状态机理论最初的发展在数字电路设计领域。在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为Mealy型和Moore型状态机;根据输出是否与输入信号同步,状态机可以划分为异步和同步状态机。而在软件设计领域,状态机设计的理论俨然已经自成一体。Moore型状态机的输出只和当...
如何建设全功能团队 软件工程
简介 团队的开发人员撇开需求沉浸在想象中的“完美”程序中;测试人员迷茫的点击着按钮试图搞明白这到底是个什么功能;设计师造出了没有尽头的楼梯,更糟的是,客户爱上了这个设计;团队领导四处救火,力有不逮。种种迹象表明,我们得打破分工带来的壁垒,建设全功能团队——大多数人能完成大多数种类工作的团队。 ...
软件设计杂谈 软件设计
disclaimer: 本文所讲的设计,非UI/UE的设计,单单指软件代码/功能本身在技术上的设计。UI/UE的主题请出门右转找特赞(Tezign)。 在如今这个Lean/Agile横扫一切的年代,设计似乎有了被边缘化的倾向,做事的周期如此之快,似乎已容不下人们更多的思考。MVP(Minima...
打破定式,突破屏障,走出自己的创意舒适区 程序人生
周日傍晚,天色早早的暗了下来,楼下某只狗子一直叫着;有种让人出神的宁静。 我觉得我究其一生最终所要追求的恐怕就是这种宁静。亦或是说心里早已老去了。btw,有谁听过Guns N' Roses某张知名Bootleg拼盘没?也就是所谓的不插电专辑。我在2001年冬天差不多这个时候和Allen、祥子在...
关于软件开发,你老板不知道的7件事 软件工程
英文原文:7 Things Your Boss Doesn’t Understand About Software Development 你的老板是否不理解你的工作?本文将有助于你更好地理解为什么你的老板不理解软件开发。 你的老板可能真的很棒。我在我自己的编程生涯中就遇到过几个真心棒的老板...
关于烂代码的那些事(中) 程序人生
1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣。 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao)了各自代码中这样或者那样的问题。 最近部门在组织bootcamp,正好我负责培训代码质量...
关于烂代码的那些事(上) 程序人生
相关文章:关于烂代码的那些事(中) 1. 摘要 最近写了不少代码,review了不少代码,也做了不少重构,总之是对着烂代码工作了几周。为了抒发一下这几周里好几次到达崩溃边缘的情绪,我决定写一篇文章谈一谈烂代码的那些事。这里是上篇,谈一谈烂代码产生的原因和现象。 2. 写烂代码很容易 刚...
作为码农,我们为什么要写作 程序人生
在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除了借口没有时间外,大多没有意识到写作带来的收益。在他们看来,将自己学到的知识简单记录下来就足够自己需要的时候回顾了。而技术写作通常需要花更多时间,因为需要将技术的细节以及来龙去脉讲清楚。 不得不承认,这的确是一个...
今天你写了自动化测试吗 软件工程
一艘货轮满载着货物从港口启航,向浩瀚的大海深处破水而去。海面平静,微微皱起波浪,从容而显得宽容。然而,货轮的步履却有些蹒跚,发动机“轰轰轰”地嘶吼着,不堪重负,却无法让船只游得更快,倒像是海水咬住了船底往下在拖曳。 “嘟——嘟——嘟”,突然警报声响起,甲板上变得喧闹起来,一个水手模样的年轻人声...
数学和编程 程序人生
好些人来信问我,要成为一个好的程序员,数学基础要达到什么样的程度?十八年前,当我成为大学计算机系新生的时候,也为同样的问题所困扰。面对学数学,物理等学科的同学,我感到自卑。经常有人说那些专业的知识更加精华一些,难度更高一些,那些专业的人毕业之后如果做编程工作,水平其实比计算机系毕业的还要高。直到...