??xml version="1.0" encoding="utf-8" standalone="yes"?>老司机亚洲精品影视www,亚洲国产精品久久久久久,无码亚洲成a人在线观看http://www.tkk7.com/killme2008/category/30223.html生活、程序、未?/description>zh-cnSun, 22 May 2011 03:33:07 GMTSun, 22 May 2011 03:33:07 GMT60- 做基产品的体?/title>http://www.tkk7.com/killme2008/archive/2011/05/22/350752.htmldennisdennisSun, 22 May 2011 02:30:00 GMThttp://www.tkk7.com/killme2008/archive/2011/05/22/350752.htmlhttp://www.tkk7.com/killme2008/comments/350752.htmlhttp://www.tkk7.com/killme2008/archive/2011/05/22/350752.html#Feedback0http://www.tkk7.com/killme2008/comments/commentRss/350752.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/350752.html 一个公司大了,L部分d一些通用的东西给大家用,我这里说的基产品是q类通用性质的东西,不一定高U技Q但是一定很多h依赖你的东西来完成各U各L(fng)功能。做q样的东西,有些体会(x)可以说下?br />
首先Q能集中存储的,׃要分布存储,数据集中存储有单点的危险Q但是比之分布式存储带来的复杂度不可同日而语。况且集中式的存储也可以利用各种机制做备份,所谓单炚w险远没有惌中那么大?br />
其次Q能利用开源框架的Q就不要重复造轮子。程序员都喜Ƣ造轮子,但是造轮子的周期长,q且不一定造的更好。在开发效率的互联|时代,如果能直接利用现有框架组装出你想要的东西Q迅速占领市场,比你造的高性能、高可用、高U技的轮子更实用。这个跟做新产品开发有点类|q速组装,高效开发,然后再想办法改进?br />
W三Q要文本Q不要二q制。协议要文本化,配置要文本化。不要担心性能Q在可见的时间里Q你基本不会(x)因ؓ(f)文本化的问题遇到性能瓉?br />
W四Q要透明Q不要黑盒。基产品其需要对用户透明Q你的用户不是小白用P他们也是E序员,而程序员天生寚w盒性质的东西充满厌Ӟ他们L知道你的东西背后在做什么,q对于查N题分析问题也很重要。怎么做到透明呢?设计Q统计,监控Q日志等{?br />
W五Q要拥抱标准Q不要另搞一套。已l有了久l考验的HTTP协议Q你׃要再搞个STTPQ有了AMQP协议Q你׃要再搞个BMQP。被q泛认可的标准是一些业界的尖专家制定出来的,他们早就你没有考虑到的问题都考虑q去了。你自己搞的那一套,随着旉推移你会(x)发现跟业界标准越来越像,因ؓ(f)面对的问题是一L(fng)。用标准的额外好处是,你有一大堆可用的代码或者类库可以直接用,特别是在面对跨语a的时候?br />
W六Q能Share nothingQ就不要搞状态复制。无状态的东西是最可爱的,天然的无副作用。水qx展不要太Ҏ(gu)?br />
W七Q要你的系l做的越?#8220;重要”好Q如果太多的产品依赖你的pȝQ那么当你的pȝ故障的时候,整个应用完蛋了。我们不要担q个责QQ我们要系l做的越来越“不重?#8221;Q别Z一没了你也能重启,也能一定时间内支撑正常的工作?br />
W八Q要专注眼前Q适当x未来。有q见是好事,但是太多q见容易好高骛q。ؓ(f)很小可能性设计的东西Q没有机?x)经历实际检验,当故障真的发生的时候,你也不可能完全信赖它。更好的办法是将pȝ设计得可介入Q可在紧急情况下人工M入处理,可介入是不够的,q要Ҏ(gu)介入?br />
W九(ji)Q不要对用户有假设,假设你的用户都是smart programmerQ假设你的用户不需要位q算Q假设你的用戯同步不要异步。除非你对这个领域非常熟(zhn)ƈ实际使用q类似的东西Q否则还是不要假设?br />
W十Q咳咻Ig没有W十了,一大早憋了q么无头无脑的BlogQ大伙将q看?br />

]]> - 高质量YӞ从点Ҏ(gu)滴做?/title>http://www.tkk7.com/killme2008/archive/2010/12/30/341964.htmldennisdennisThu, 30 Dec 2010 03:01:00 GMThttp://www.tkk7.com/killme2008/archive/2010/12/30/341964.htmlhttp://www.tkk7.com/killme2008/comments/341964.htmlhttp://www.tkk7.com/killme2008/archive/2010/12/30/341964.html#Feedback9http://www.tkk7.com/killme2008/comments/commentRss/341964.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/341964.html
写这文章的x产生在昨天晚上读《面向对象分析与设计》的时候,我渐渐发现我们这个小l不知不觉地贯彻了很多非常有价值的实践l验Q这些点Ҏ(gu)滴都Ҏ(gu)们的最l的产品质量产生了或大或的影响Q保证我们的pȝ不会(x)出现重大的故障。我x必要这?#8220;隐性知?#8221;E微ȝ一下,以供参考和记录?br />
从过E的q箋光谱来看Q我们大概处于中间位|偏左的位置Q更偏向一个轻量团队的敏捯E,但是也包含计划驱动过E中的因素。我们的组是自理的,没有专门的QA和SAQ我们自己去惛_最好的工作Ҏ(gu)Q但是在执行中我们的计划q是相对定的,每个季度做什么都?x)有一个比较明的计划和里E碑Qƈ且对问题领域都相对熟(zhn);我们的过E是q代式,一般一个季度至会(x)交付一个稳定可执行的新版本Q我们在文档上做的不是特别好Q很多都依赖于团队成员之间的“隐性知?#8221;Q同时我们对问题的改q基本还是有一个流E和机制Q会(x)持箋的跟t问题ƈ改进?br />
下面分阶D|ȝ下我们的一些实늻验?br />
一、分析和设计阶段
1、在q个阶段Q我们会(x)明确准备做什么,界定问题的边界,对功能进行一个取舍。一般在一个版本完成之后会(x)马上开始这个过E。大安想一x下来做什么,l过几轮PK后确?strong>重要紧急的事情优先做,定义下一个版本的功能列表?br />
2、功能列表出来之后,我们?x)针?gu)个功能提出各U方案做比较Q在此期_(d)我们?strong>邀h大团队范围内的专家参与方案和设计的评?/strong>Q剔除不切实际以?qing)明显有~陷的方案,针对一些风险点提出改进和防范措施?br />
3、在设计Ҏ(gu)出来之后Q我们会(x)分配功能的开发Q务,Ҏ(gu)每个开发h员熟(zhn)的领域Q?strong>自主领取或者被动分配Q?/strong>。这个过E不是一成不变的Q考虑到团队内部知识交的必要性,也可能让不熟(zhn)某个领域的人去做他不熟(zhn)的事情?br />
二、构造阶D?br />
1、整个系l已l有一?strong>关键的抽象机?/strong>Q针Ҏ(gu)们的服务器有一个核心的pipeline机制Q针Ҏ(gu)们的客户端,有一个核心的发送消息流E。将所有的功能模块l织在这个关键机制周_(d)形成一个强有力的整体?br />
2、开发完成不仅仅意味着功能代码的完成,q包括测试代?/strong>Q单元测试和集成试。如果你没办法做到全面的覆盖Q那p求必覆盖运行的关键路径和极端场景?br />
3、单元测试我们用JUnitQ适当使用Mock可以化测试。但是Mock对象如果太多Q也怼(x)失去试的h(hun)|q里有一个权衡?br />
4、在整个构造过E中Q我们诏L日构建、持l集成的原则。用hudson做持l集成,时刻x试状况Q有问题?qing)时反馈l开发者?br />
5、有一个功能强大的集成试框架Q模拟实际环境做各种试Q它的目的是量在接q真实状况下L行系lƈ早暴露问题?br />
6、每个功能完成之后,立即发vreviewQ请同事和你一起复审代码。复审代码的作用不仅是发现bugQ改良设计,也是一个知识交的最佳途径。我们经常能通过代码审查发现一些设计上的缺P以及(qing)功能实现上的BUG。我们团队应该说是非常看重代码审查的作用?br />
7?strong>使用findbugs和clover{工?/strong>Q分析代码质量ƈ改进?br />
8、在发布之前Q做一?strong>集中的代码reviewQ每个h介绍下自q功能实现代码和设计,一般我们会(x)甌一个会(x)议室和投׃?ni)AQƈ邀请团队之外的人加入review?br />
9、在发布之前Q有一个系l的压测程Q针Ҏ(gu)个版本更新压方案,q留一C周的旉做性能压测。压不仅能早暴露性能隐?zhn)Q还可以发现pȝ在特D情况下的一些BUG。压除了关注系l的吞吐量、GC情况之外Q还应该xg的性能指标?br />
三、发布和ȝ
1、发布之前,最好让使用我们pȝ的用户用新版本做一?strong>回归试Q一斚w是测试兼Ҏ(gu),一斚w也可以及(qing)早发现BUG?br />
2、我们的发布程Q线下、beta、线上。每个阶D通常都持l一C周,才会(x)q行C一阶段。ƈ且是从相对不重要的系l,到关键系l的序q行发布?br />
3、发布之后,通过日志、运行时监控、用户反馈等方式攉pȝq行状况Q发现BUGQ修正BUGQ补充测试,试通过Q重新发布?br />
4、每个版本发布后Q需要ȝ下本ơ发布过E中遇到的所有BUG以及(qing)l验教训Qƈ提出可能的改q徏议?br />
5、需要一个跟t线上问题的BUG跟踪pȝQ可以用JIRA之类的trace软g。跟t不仅是记录Q最好列决的旉点,在哪个版本确定解冻I甚至定交给谁去解决Qƈ持箋跟进?br />

]]> - 代码自我审查的一些体?/title>http://www.tkk7.com/killme2008/archive/2010/05/18/321219.htmldennisdennisMon, 17 May 2010 16:28:00 GMThttp://www.tkk7.com/killme2008/archive/2010/05/18/321219.htmlhttp://www.tkk7.com/killme2008/comments/321219.htmlhttp://www.tkk7.com/killme2008/archive/2010/05/18/321219.html#Feedback3http://www.tkk7.com/killme2008/comments/commentRss/321219.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/321219.html
1、首先态度需要端正,做代码的自我审查q不是否定自己,而是l自己将工作做得更好的一ơ机?x)。在审查q程中要量自׃Z个旁观者的心态去审查自己的代码,管q比较困难?br />
2、代码审查离不开重构Q在审查q程中发CQ何坏味道都请使用重构L善,发现~Z试的地方要?qing)时补充试Q不要让BUG遗漏?br />
3、代码的自我审查可能不是早好Q隔一D|间之后回ȝ自己写的东西Q对一些设计上的选择能有更客观的评h(hun)Q在审查的过E中可能需要重新去理解代码Q在此过E中可以查自׃码的可读性,q思考如何改善可L,切记代码首先是给?/strong>?br />
4、审查过E中需要记录下一些犯下的错误Q以?qing)当时?f)什么会(x)犯下q样的错误,建立自己的bug数据库,q时常reviewQ在以后的工作中避免同样的错误?br />
5、代码的自我审查应该是一个持l性的q程Q而非特定旉的特定行动,时常审查自己的代码,不仅能L析自q得失Q还能够q一步提高自己在未来工作中的设计能力和预见能力?br />
6、代码的自我审查跟团队成员之间的怺reviewq不矛盾Q在怺review之前做一个自我审查,有助于提高review的效率,包括可读性的提高和一些一般错误的避免?br />
7、代码自我审查的一些常见注意点Q?br />
Q?Q自认ؓ(f)l不?x)出错,q且从来没有审查q的代码?br />
Q?Q注意else语句Qif条g下的子语句通常可能是个正常的流E,而else意味着异常的情冉|者特D的场景Q你可能特别注意怎么处理正常的情况,却忽略了else子句的实现细节,如该释放的锁没释放,该递减的计数没有递减Q该赋予Ҏ(gu)值却没有赋予{等?br />
Q?Q注意空的方法,没有Ҏ(gu)体的Ҏ(gu)Q是不需要实玎ͼq是忘了实现Q?br />
Q?Q注意switch语句Q有没有忘了breakQ这U错误通过findbugs之类的静态代码检查工具都能避免?br />
Q?Q注意大块的注释Qؓ(f)什么这么多注释Q是代码写的很糟p?q是遗留的注释?遗留的注释会(x)误导人,要及(qing)时删除?br />
Q?Q注意一些看h“不合常理”的代码,q样的代码很多都是基于所谓性能考虑而优化过的代码,q样的优化是否还需要?是否能去除这?#8220;奇?#8221;的代码也能实现正常的需求?
Q?Q对客户端的使用有假讄代码Q假讄户只?x)这么用Q假讄户只?x)用到返回对象中的某些属性,其他属性一定不?x)用刎ͼ不要对客户代码做假设Q这个客户代码包括外部用户和调用q个模块的内部代码?br />
Q?Q标注了FIXME、TODO之类task标签的代码,是否忘了修复BUGQ实现功能?
Q?QQ何超q?5行以上的Ҏ(gu)Q这些方法是否能拆分成更l粒度的Ҏ(gu)Qƈ保持在同一个抽象层ơ上Q?br />
Q?QQ何在代码中出现的帔R|是否应该提取出来成ؓ(f)单独的常量,帔R的默认D|是否合理?
Q?0) M持有容器的代码,提供了放入容器的Ҏ(gu)Q是否提供了从容器中U除对象的方法?保没有内存泄漏的隐(zhn)?br />
Q?1Q重构中提到的其他坏味道Q别放过它们Q但是也不要q求完美QOO不是圣杯Q如果能单的实现一个算法,你不要引?个对象和4个接口?br />
Q?2Q在review最后能列出一张清单,开列下该项目面临的风险点,q提军_法,然后按照q张清单去review关键代码Q着重检查异常情况下的处理。风险点的reviewQ我可以攑֜后面Q在一般性错误解决之后进行,此时你对代码也将再度变的熟?zhn)?br />
]]> - 从NT开发过E中看到的东?/title>http://www.tkk7.com/killme2008/archive/2009/08/13/290969.htmldennisdennisThu, 13 Aug 2009 04:44:00 GMThttp://www.tkk7.com/killme2008/archive/2009/08/13/290969.htmlhttp://www.tkk7.com/killme2008/comments/290969.htmlhttp://www.tkk7.com/killme2008/archive/2009/08/13/290969.html#Feedback2http://www.tkk7.com/killme2008/comments/commentRss/290969.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/290969.html
单纯从Y件构建的角度ȝq本书,可以说说我看到的东西,q些是我今天早上走在上班路上的时候想的,咛_?br />
1、开发OS是烧q事情QNT开发接q?q_(d)每年的花Ҏ(gu)说在5000万美刀Q那可是?0q代初期Q换成现在更是天文数字。从另一个侧面也说明了linuxpȝ的伟大。开发一个这么烧q玩意Q如果没有管理层的强力支持,那么不是被砍掉,是遭遇的命q,q运的是NT团队得到了盖茨的鼎力支持Q大概也只有他能q么烧钱了。Dave Culter从DEC辞职的原因也是因为管理层砍掉了他的团队。盖茨另一个做法是不干涉NT团队的开发工作,他只提出目标和期望,然后偶?dng)过来看看,不对不知道的东西指手画脚Q这点可不容易?br />
2、每日构建非帔R要,NT团队的构建实验室一开始是每周构徏Q后来做C每日构徏。只有每日构建,持箋集成Q才能帮你掌控品质量,?qing)时发现潜在的问题。我们现在的目使用了hudsonQ比CCҎ(gu)配置一点,效果q不错?br />
3、测试极光要,专业的测试团队对于大型项目来说尤光要。除了测试h员之外,开发h员需要做自测Q需要对自己check-in的代码负责,如果你签入的代码D构徏p|Q那么Dave culter可能冲破墙壁q来Q拍着桌子冲你咆哮。对check in必须做严格控制和跟踪Q如果在目的最后冲击阶D,除了showstopperU别的修正代码允许签入之外,其他的修攚w不被接受。开发者和试人员很容易存在对立,讨自己,我对试人员也存在偏见和某种E度上的轻视和厌烦,如果从就事论事和都是Z个目标努力的角度来说Q测试和开发ƈ不对立,两者是相辅相成Q甚至于试人员更ؓ(f)臛_重要?br />
4、在一个长期而复杂的目中,如何保持团队成员的士气也是个难事ѝY件开发归根到底是的因素是人,而非工具或者其他,x人,其实是在关注你的Y件。鼓励士气的常见做法是讑֮里程,在这个里E碑上发布一个重要版本,让大家看到希望,但是对于OSq样的巨型项目来_(d)里程不是那么容易设定,q从书中目的不断g期可以看到。另外就是宽杄工作环境和假期,微Y的工作环境有目共睹,能做到每个员工独立一个办公室的国内企业还没有吧。国外的开发者似乎很?x)玩Q赛车、滑雪、空手道Q其实不是我们不?x)玩Q是我们玩不P国内的待遇和生活压力让你想玩也玩不v?br />
可是q是再好的物质待遇Q其实也换不来美好生z,书中充斥着开发者对家庭和婚ȝ困惑和痛苦,ZNT,他们也失M很多Q对工作q度投入的后果就是失d^衡的家庭生活Q再ơ验证上帝是公^的,有得必有失,q你看重的是什么?br />
5、开发者的效率差异是惊人的Q在《h月神话》里已经说明了这一点,开发者之间的效率差异可以辑ֈ惊h?0倍,在NTq样的团队里也再ơ验证了q一l论?br />
6、投入越多的人力Qƈ不能带来效率的提升,当NTFS文gpȝ的进度拖慢的时候,微Y的经理们考虑d人手Q但是经q慎重的考虑q是没有加hQ因为文件系l是技术活Q新人很N上投入开发,而需要老手的带领和培训Q引入了更多的沟通成本和培训成本?br />
7、优U的代码无法通过行数来衡量,软g某种E度上还真是法的物?br />
8、NT的一个教训是Q应该及(qing)早设定你的性能目标Qƈ在适当时候开始关注ƈ优化pȝ。NT团队后期的很大部分工作都是在优化pȝ性能Qƈ~小寸?br />
9、设定Deadline常常是不靠谱的事情,对Y件开发的旉估计也常常是不靠q事情Q这一点从NT的一ơ又一ơ的延期可以看出。g期失望的不仅仅是客户Q也?x)打M的团队成员,遥遥无期的开发过E容易让人崩溃?br />
10、NT的开发诏I了对市场的需求的考虑Q有个牛X的品经理还是相当重要的。当Ӟ没有开发者喜Ƣ添加新功能Q特别是在已l完成一个新功能的情况下Q以臛_展到NT的开发者看C品经理就不由得拿L(fng)击墙的地步Q)
q本书花了我两个晚上看完Q还是看故事有趣呀Q上面所说只是我的印象,书中q有许多八卦故事老少咸宜Q如果有出入Q请看原著:(x)Q?有空q得重读下?br />

]]> - 说说q代中的需求变_(d)更正Q?/title>http://www.tkk7.com/killme2008/archive/2008/04/28/196940.htmldennisdennisMon, 28 Apr 2008 13:04:00 GMThttp://www.tkk7.com/killme2008/archive/2008/04/28/196940.htmlhttp://www.tkk7.com/killme2008/comments/196940.htmlhttp://www.tkk7.com/killme2008/archive/2008/04/28/196940.html#Feedback4http://www.tkk7.com/killme2008/comments/commentRss/196940.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/196940.html

]]> - 代码详查的几个要?/title>http://www.tkk7.com/killme2008/archive/2008/03/20/187420.htmldennisdennisThu, 20 Mar 2008 02:27:00 GMThttp://www.tkk7.com/killme2008/archive/2008/03/20/187420.htmlhttp://www.tkk7.com/killme2008/comments/187420.htmlhttp://www.tkk7.com/killme2008/archive/2008/03/20/187420.html#Feedback1http://www.tkk7.com/killme2008/comments/commentRss/187420.htmlhttp://www.tkk7.com/killme2008/services/trackbacks/187420.html
2、详查应当专注于错误,而非修正
3、详查的角色包括Q?br />
1Q主持hQ负责分配复查Q务,报告详查l果Q主持详查回忆,他需要能够理解被详查代码的相x术细节,整体上控制详查进?br />
2Q作者:(x)代码的作者,负责陈述目的概况,解释设计和代码中不清晰的部分
3Q复查者(reviewerQ《代码大?》称论员Q感觉不是很恰当Q:(x)负责实际复查的工作的执行Q负责找出缺陗?br />
4Q记录员Q记录发现的错误Q记录Q务的指派情况Q记录会(x)?br />
5Q管理h员:(x)详查是一个纯技术性的复查Q应当避免管理h员的介入。如果管理h员介入了详查Q那么参与的人可能会(x)觉的在被评h(hun)Q而不是去复查材料Q导致焦点从技术问题{Ud行政问题。按国情Q这U情늛当常见?br />
4、明详查的目的是发现设计或者代码的~陷Q而不是探索替代方案,或者争对谁错,其目的绝不应该是批评作者的设计和代码。如果出现复查者做Z恰当的评价和发言Q主持h应该制止Q引D查的zd的健庯行。这一Ҏ(gu)觉的相当重要Q对事而不对h?br />
5、详查会(x)议后Q主持h撰写详查报告Q最好能提交l管理h员一份,q且应当?qing)时q入q工环节Q将~陷分配l某人去修复Q往往是原作者)Qƈ?qing)时跟进监督~陷的修复情c(din)?br />

]]>
վ֩ģ壺
aɻ߹ۿ|
˾Ʒձר61
|
Ǻϳͼۺ|
97߹ۿƵ|
Ůʮ·츾|
þùƷ|
ɫ͵С˵|
ɫƵ|
ձvaĻþ|
ձһ|
պͼƬר1ҳ|
2019Ļ6|
avþDz|
ҹƵѳ|
ۺɫ|
ҹľƷ|
ͺˬӲƵ|
VA߹ۿ|
91Ʒֻ|
avһ|
ֻѸۿ|
ŮƵƵaѹۿ|
㽶AVվ߹ۿ|
99ƷƵƵѹۿ|
ƷĻ鶹|
ѹۿһëƬa
|
18ֹۿ˽ӰԺ|
ۺɫ߹ۿ|
XX00Ƶ|
δʮ18ֹվ|
þվ|
Ʒ˾þ|
þþƷ˳|
Ʒ|
һAVվ|
Ƶ|
Ƶ߹ۿ
|
èѹۿ˳վ|
Ʒһ|
˾Ʒҹapp|
aƬ߹ۿ|