??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲男人的天堂网站,日韩精品成人亚洲专区,亚洲精品乱码久久久久久按摩http://m.tkk7.com/sean/category/38.htmlRead me, read Sean.zh-cnSat, 14 Apr 2007 06:57:44 GMTSat, 14 Apr 2007 06:57:44 GMT60[愚公Ud] 团队CVS资源库从CVSNTq移到Linuxhttp://m.tkk7.com/sean/archive/2007/04/14/110640.html大胃大胃Sat, 14 Apr 2007 06:54:00 GMThttp://m.tkk7.com/sean/archive/2007/04/14/110640.htmlhttp://m.tkk7.com/sean/comments/110640.htmlhttp://m.tkk7.com/sean/archive/2007/04/14/110640.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/110640.htmlhttp://m.tkk7.com/sean/services/trackbacks/110640.html 昨天(周五)大家下班后,一个h留在公司Q把核心产品开发团队用了整整1q的CVS资源库从CVSNTUd了Linuxq_下,原本以ؓ会很单很利Q因Z前类似的ULq不是没有做q,所以预估的旉包括验证在内?~2个小Ӟ不过最l却花掉4个小时。怎么回事呢?且听我慢慢道来?br />
l过1q的U篏Q资源库?00多MQ大大小的Java目?06个之多。按照最初的计划Q移植只需要原不动的把资源库目录整个从CVSNT服务器拷贝到Linux服务器即可,所以资源库大小和项目多本来不是啥大问题,但谁料半路却杀ZE咬金:.jar文g在新的资源库checkout到本地后无法正常使用Q这q了得?

仔细一看,乖乖Q原?Binary"的文Ӟ在新的资源库下,却变成了"ASCII -kkv"Q不仅是.jarQ其他的二进制文件如.jpg, .exe之类的也是同L问题。第一反应是CVSNT和Unixl典的CVS在处理RCS文g时还是有些不同,以至于原本在CVSNT下文件类别的标记信息?Binary"在移植过E中丢失了,变成默认的文本类型。之前有朋友提醒?doc文gUL后无法打开应该也是同样问题。怎么办?一个文件一个文件的改?肯定不现实?br />
一U方案是把所有出现的二进制文件类?后缀名找出来Q然后在服务器端扚w删除(Linux下写个脚本来做这件事q不?Q客Lq边从原资源库checkout最新版本,重定向资源库URL到新的资源库Q同步,提交。这招比较狠Q但最l没有用Q因为在览现有资源库时Q发现还有不其他问题,如classes文g夹被加到版本控制中,cMq有.settings文g夹,甚至Thumbs.dbQ不一而。时间有限,与其每个Java目L一遍,整理出需要删除的文g(?清单Q然后写脚本Q然后强行资源库重定向,不如一步一个脚印把现有资源库的所有Java目捋一遍,臛_心里t实。于是一狠心、一咬牙Q有z癖的我开始了漫长?愚公Ud"Q一个项目接一个项目,遇到Binary文gQ服务器删之Q客Lcheckout后从原来的地Ҏ贝过来,必要的地方加?cvsignoreQ再d提交?

l过4个小时的努力Q终于大功告成:自动~译脚本正确q行Q构建成功,客户端IDE(Eclipse)从新的资源库checkoutQ编译通过Q没有红叉?br />
后记Q自p划得再好的事情,真正d的时候,总还是会遇到q样那样的问题和意想不到的状况,qg事也告诉我自己其实我的前期准备远不够充分Q算是自食其果吧。有没有更好的办法,我觉得肯定有Q但是在特定的情况下(旉/效率/目标)Q我怿我的Ҏq是能够让我自己满意的。还有一Ҏ醒所有CVS的用P不该提交的文Ӟ最好第一旉加到.cvsignore。子曄曰过Q“纠正错误,旉最早,代h小”?br />
* 请勿不假思烦的模仿,q样做会丢失掉这些文件的历史版本信息Q如果删除的时候不心Q同时还会把历史上存在过的同cd文g删掉。我q里之所以可以这么做Q是因ؓ我们的实际情况对q些二进制文件不需要保留历史信息?/em>




大胃 2007-04-14 14:54 发表评论
]]>
刚才见面Q就说再? 记Subversion试用心得http://m.tkk7.com/sean/archive/2007/03/14/103899.html大胃大胃Wed, 14 Mar 2007 15:07:00 GMThttp://m.tkk7.com/sean/archive/2007/03/14/103899.htmlhttp://m.tkk7.com/sean/comments/103899.htmlhttp://m.tkk7.com/sean/archive/2007/03/14/103899.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/103899.htmlhttp://m.tkk7.com/sean/services/trackbacks/103899.html ׃工作需要,最q在Linux服务器上试用SubversionQ如果一切顺利,全公司的文档都将交给Subversion理。我承认我对Subversion一直存在偏见,但ؓ了给大家一个交代,q是着头皮试了一下。结果运行数天以后,l于q是回到了CVS的老\上?br />
Subversion的优点就不在q里重复了,|上很多介绍文章Q也有很多忠实粉丝,不过没办法,我还是更喜欢CVS的简单和直接。熟悉Unix和类Unixpȝ的朋友一定有同感QCVS更加W合Unix的思维和解决问题的方式?br /> 让我们最l放弃Subversion主要有以下大大小的原因Q?br /> 1- 一个新建的几乎是空的资源库Q打包后大小x39MB上下; << l核实错怪SVN了,实测完全I白的资源库124KQ向大家道歉Q?br /> 2- 资源库几乎是以一U完全不透明的方式存储用戯源库文g;
3- 没有一个官方的、安全可靠的方式d删除一个误提交的文Ӟ一旦提交上去,你的资源库将永远背着q个包袱; << q一条实在让我无法忍受?br />
对于最后一条,官方说法是提供了一个svndumpfilter的方式,先把资源库dump出来Q然后pipe到svndumpfilterqo掉匹配的文gQ最后再load回去。这几乎是l我们判了死刑:dump文g动辄׃是好几个GQ且随着旉增长Q或者错误提交持l出现在大型文件上Q要完成q个dump和filterQ以及周期性的备䆾Q将要吃掉多资源,不敢惌Qsvndumpfilter不支持wildcastQ且q个字符串匹配由于是整个dump文gpipe到svndumpfilterQ无法保证精制|其在生产环境,敏感文g被上传、有效文件被误删或者资源库遭到破坏的后果是很严重滴?br />



大胃 2007-03-14 23:07 发表评论
]]>
[阅读] Developer Testing Masters and Brain Surgeonshttp://m.tkk7.com/sean/archive/2007/02/28/101118.html大胃大胃Wed, 28 Feb 2007 05:14:00 GMThttp://m.tkk7.com/sean/archive/2007/02/28/101118.htmlhttp://m.tkk7.com/sean/comments/101118.htmlhttp://m.tkk7.com/sean/archive/2007/02/28/101118.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/101118.htmlhttp://m.tkk7.com/sean/services/trackbacks/101118.html http://www.artima.com/forums/flat.jsp?forum=106&thread=196922

Alberto Savoia在Artima上发表了一关于所谓Developer Testing Mastersq个软g开发中的新角色的文章,把这个新的角色类比ؓ脑外U医生?br/>
不知道大家在各自的项目中是如何处理QA和开发h员单元测试之间的q呢?是让QA提高自n的技术水qI来多的参与白盒测试,q是“逼”着开发工E师们做他们不情ѝ通常也做不好的单元测试?q篇文章提供了另一U思\?br/>



大胃 2007-02-28 13:14 发表评论
]]>
[链接] 承认错误、承认失?/title><link>http://m.tkk7.com/sean/archive/2007/02/18/100184.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sun, 18 Feb 2007 10:35:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2007/02/18/100184.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/100184.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2007/02/18/100184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/100184.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/100184.html</trackback:ping><description><![CDATA[<br /> <a target="_blank">http://jroller.com/page/rolsen?entry=building_a_software_team_wrong</a><br /> <br /> xq个Russ Olsen的blog有一D|间了Q他最q的几篇blog贴子都和目理团队理有关。我觉得相比成功的经验,有时p|带给我们的收获会更多。这最新的blog中Russ Olsen和我们分享关于他的一个失败的目Q以及他如何向团队承认自qp?br /> <br /> 当一个项目失败的时候,也许承认错误、承认失败是件尴的事,但作为项目负责h的PMQ如果他的某个决定造成了整个团队的p|Q就应该拿出勇气L担?br /> <br /> "It goes against something in us, especially as we get into management jobs, to admit that we were wrong. But when you are wrong, especially when you are wrong in a way that causes the whole team to fail, you gotta own up. Not that 'mistakes were made'. Not that 'it could have been done better'. Not even 'I did the best I could'. No, it has to be 'I was wrong'."<br /> <br /><br /> <img src ="http://m.tkk7.com/sean/aggbug/100184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2007-02-18 18:35 <a href="http://m.tkk7.com/sean/archive/2007/02/18/100184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[链接] 理分布式Y件团?/title><link>http://m.tkk7.com/sean/archive/2007/02/17/100134.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sat, 17 Feb 2007 08:59:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2007/02/17/100134.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/100134.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2007/02/17/100134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/100134.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/100134.html</trackback:ping><description><![CDATA[<br /> <a target="_blank">http://www.extremeplanner.com/blog/2007/02/managing-distributed-software-teams.html</a><br /> <br /> q篇blog文章讲的是如何管理分布式的Y件开发团队。现如今许许多多的Y件开发团队都面跨办公室、跨楼层、甚x跨地域、跨时区的协同合作开发,一个完整的团队被拆散成2个或者更多的团队,如何理好这L“分布?rdquo;团队Q值得我们思考?br /> <br /> q篇blog的作者给我们开了个好头Q他整理了如下几点:<br /> 1- 让开发h员结对完成设计和~码Q让l员保持沟通;<br /> 2- 让项目的信息可以在线看到Q?br /> 3- 周期性的让组员面寚w交流Q?br /> 4- 每天都开会,会议不必很正式很长,主要目的是让所有h都对目现状、自q工作和组员们遇到的困难有所了解Q?br /> 5- 使用多种沟通和交流的工?q_Q如电话、IM、blog、Wiki?br /> <br /> 我觉得尤为重要的是:<br /> 1- 把项目信息放在一个方便的、大安能看到的地方Qƈ保持更新Q这个可以通过Wiki来做Q关键是需要专人维护,Wiki是死的h是活的,Wiki有多大h值完全在于维护它的hl它多少信息如何l织q些信息Q?br /> 2- 保持沟通的畅通,随时掌握团队其他人的现状和遇到的问题Q也让他人掌握自qq展和困难,q就体现出daily meeting的重要?br /> <br /><br /><img src ="http://m.tkk7.com/sean/aggbug/100134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2007-02-17 16:59 <a href="http://m.tkk7.com/sean/archive/2007/02/17/100134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[阅读] 丰田模式在新时代的挑?/title><link>http://m.tkk7.com/sean/archive/2007/02/16/100068.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Fri, 16 Feb 2007 09:39:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2007/02/16/100068.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/100068.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2007/02/16/100068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/100068.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/100068.html</trackback:ping><description><![CDATA[<br /> <a target="_blank">http://www.nytimes.com/2007/02/15/business/worldbusiness/15toyota.html</a><br /> <br /> 来自U约时报的文? "The ‘Toyota Way’ Is Translated for a New Generation of Foreign Managers"。在丰田全球扩张的过E中Q在全球各地都徏立了分支机构和生产工厂,雇䄦了大量当地的工h和管理h员,如何丰田多q积累的所?ldquo;丰田模式”贯彻到所有v外工厂的日常理Q成Z一wh战的工作?br /> <br /> 丰田模式Q如果我的理解没有错Q其最核心最基本的概忉|“集体思?rdquo;Q强调可视性和持箋改进。展开来说Q比较有的几点Q?br /> 1- 问题是大家共同的Q有问题大家一赯冟?br /> 2- 在出现问题的现场解决问题而不是在办公桌?br /> 3- M人都可以指手画脚Q发现质量问题,工h有权直接停掉生Uѝ?br /> 4- 持箋发现问题q解冟?br /> 5- 建立p?br /> 6- 对hQ尤其是一U工人的重?br /> 7- 危机意识?br /> <br /> “丰田模式”有很多概忉|自日本本土文化,q不能简单的复制。如今很多生产企业已l在zdzȝ丰田模式Q把适用的部分应用到日常的开发工作中。那么对于Y件开发的企业和团队,有什么可以借鉴的经验?<br /> <br /> 对于一个团队的软g产品或者项目组产出的代?文档{提交gQ首先是共同拥有Q功x大家的,出现的问题也是大家的Q其ơ是大家需要一个很方便很直接的途径看到团队的目标和当前的问题;对于发现的问题,团队M人都有权指手画脚Q甚臛_停整个开发来解决q些问题?br /> <br /> 只有共同拥有和担当,才能最大化团队所有h的责L和成感Q只有大安清楚的看到共同的目标Q看到需要面对的困难和问题,才能有目的的工作Q当有h发现团队出现问题Q遇到困难,必须有一个合理的途径报告和解冟뀂ƈ且一个团队应该有q种鼓励和包?ldquo;指手画脚”的文化,鼓励大家发现问题Q持l改q?br /> <br /> q里面可能最难被接受的一点就是Q何h都可以对发现的问题指手画脚ƈ不惜停掉整个开发。这一开始看上去有些q激Q但是细惌v来则很有深意Q叫停的权力带来的最直接的好处是最l品和提交件的质量Q可能有不少Y件质量ƈ没有那么严重Q或者觉得ؓ了一点点质量问题影响整个q度不值得Q但是叫停的权力的真正威力来自它隐含的东ѝ当所有h都明白质量的重要性,也都明白一旦停产,带来的严重后果就是整个进度的delayQ整个团队的效率和出都会受到牵q,大家׃很小心的遵守开发的规范Q大家对待自q产出也更加有责Q感,?ldquo;坏分?rdquo;?ldquo;懒惰”无处容n。一旦叫停的权力成ؓ团队文化的一部分Q团队也p然而然C了持l改q的道\?br /> <br/> <br/><img src ="http://m.tkk7.com/sean/aggbug/100068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2007-02-16 17:39 <a href="http://m.tkk7.com/sean/archive/2007/02/16/100068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[闲侃DRY] Don't Repeat Othershttp://m.tkk7.com/sean/archive/2007/01/30/96806.html大胃大胃Tue, 30 Jan 2007 15:09:00 GMThttp://m.tkk7.com/sean/archive/2007/01/30/96806.htmlhttp://m.tkk7.com/sean/comments/96806.htmlhttp://m.tkk7.com/sean/archive/2007/01/30/96806.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/96806.htmlhttp://m.tkk7.com/sean/services/trackbacks/96806.html http://www.alittlemadness.com/?p=76

今天dq篇文章Q原来和我想?/a>一?/a>Q不qDROq个提法的提法比我提炼的要更好,呵呵?br/>



大胃 2007-01-30 23:09 发表评论
]]>
[闲侃DRY] 自制框架 vs. 开源框?/title><link>http://m.tkk7.com/sean/archive/2007/01/26/96071.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Thu, 25 Jan 2007 16:32:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2007/01/26/96071.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/96071.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2007/01/26/96071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/96071.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/96071.html</trackback:ping><description><![CDATA[<br/> <p>接着<a href="http://m.tkk7.com/sean/archive/2007/01/22/95424.html" target="_blank">上一?/a>的思\聊。既然我们可以把开发者社看作一个整体,copy-paste别h的blog文章是在违背DRY的精,其实所?重造轮?道理也是一P既然别h都已l做了相同的事情Qƈ且把它开源了Qƈ且你看了它的代码以后Q觉得做得不错,Z么还要自p心去实现同样的功能呢Q自己来实现能给你带来什么好处呢Q?/p> <p>我可以列举一些我认ؓ可能会让我们选择自己来做的理?</p> <p> <ol> <li>我比其他人更了解我们自己的需求?/li> <li>自己实现h更容易,代码量更,也更好用?/li> <li>我是做技术的Q能够DIYQ就DIYQ这h能体现我的h倹{?/li> </ol> </p> <p>q些理由有它的道理,但是我们有必要仔l掂量掂?</p> <p> <ol> <li>我比其他人更了解我们自己的需求。这是Y件开发中很常见的一个误区,客户的需求难以把握,随着旉的推U,我们自己的技术层面的需求实际上也在不断变化Q开源的框架往往l历了更多的考虑和验证,q且有一热心的l护者帮你做bug-fix和升U,甚至我们自己可以成热心h中的一员?/li> <li>自己实现h更容易,代码量更,也更好用。一开始确实是q样的,开源的框架Z满不同的需要,往往需要比我们自己写代码要更加复杂和冗余,但是自制框架意味着我们自己定义的接口规范,q个接口规范能不能够在整个项目周期保持稳定暂且不谈,q接口实现的再单,目中其他h也需要时间去理解和消化,然后C一个定义好的调用方式,今后新加入的工程师也需要学习这个接口规范。开源框架则做得更好Q一斚w在这个项目中U篏和学习到的知识,可以直接用在其他采用同一框架的项目中Q另一斚w新加入的人如果有q该开源框架的开发经验,上手旉可以~短?/li> <li>我是做技术的Q能够DIYQ就DIYQ这h能体现我的h倹{我必须承认Q我本h׃w经历过q样的情c在卛_l束的这个项目中Q我甚至自己DIY了一个简易的.NET报表引擎Qؓ的是甩开Crystal Reports。一开始能够DIY报表引擎的想法让我兴奋得睡不着觉,最l前后花?天很满意的完成了设计和开发,q交付报表开发h员重L表。可是真正用了一D|间之后,基本的需求满了Q基本的可扩展性也具备Q但是缺可视化设计器、更灉|的公式、更丰富的报表元素,基本上就定型了,没有人有旉和精力再ȝ护它?/li> </ol> </p> <p>在很多开发团队,大家l常在一赯论具体的技术和设计Q这很有必要Q有时也不可避免。但是也许Joel Spolsky说的对,软g设计很难Q但是比设计软g更难的,是同整个team一赯计Y件。做技术的Q对于自׃解、掌握、做q、尝试过的东西,对于自己熟悉和信ȝ东西Q多多少有些偏袒,而对于新的、自׃了解、不熟悉的东西,则难免心存疑虑。这难怪很多设计讨Z最l很难达成一致。这个时候,要么由技术上的最高权威直接拍板,定下来是什么就是什么,要么分歧双Ҏ多方各自陈述Q然后由目外部的实体进行独立仲裁?/p> <p>我看好开源框Ӟ其是那些经q考验q泛被采用的框架Q因为相比自制框Ӟ它们有着更大的优ѝ?/p> <br/> <img src ="http://m.tkk7.com/sean/aggbug/96071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2007-01-26 00:32 <a href="http://m.tkk7.com/sean/archive/2007/01/26/96071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[闲侃DRY] 开?/title><link>http://m.tkk7.com/sean/archive/2007/01/22/95424.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Mon, 22 Jan 2007 15:22:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2007/01/22/95424.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/95424.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2007/01/22/95424.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/95424.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/95424.html</trackback:ping><description><![CDATA[<br/> DRYZ物?DRY是Don't Repeat Yourself的羃写,不要重复自己Q这是一Y件开发中的重要原则,或者至是一个很好的习惯。同L数据、逻辑Q我们应该尽量避免在代码、配|文件、数据库中重复,如果实在没有其他更好的办法,也应该尽可能不要手写q些重复的内宏V?br/> <br/> 既然是闲侃,我想没必要那么一本正l,索性天马行IZ把,惛_哪儿写到哪儿吧?br/> <br/> 一直不习惯用桌面版RSS阅读器,最q又从Newsgator回到了熟悉的BloglinesQ由于工作忙Q经q几周的U篏QKeep New的条目数过500。唉Q又Ơ下一堆的阅读债。几l删减,订阅的RSS Feed源还是有80个之多?br/> <br/> 一直在犹U要不要取消BlogJava的综合区RSS订阅Q一斚w舍不得,毕竟自己在BlogJava安家Q怎么说也得捧一下场Q而我也需要持l了解这个圈子的人眼下都在做些什么想些什么;另一斚wQ实在有些难以忍受无C做删减,原封不动照搬照抄其他|站内容的blog文章Q其中不我早已从其他渠道看到过Q或者没什么特别的内容Q整D|D늚代码Q这L文章看了是一句话Q头痛?br/> <br/> 当然了,别h怎么写blogQ我无权q涉Q但是我是不是可以在q里呼吁一下,引用其他|站内容Q能不能不要整篇照脓Q要么给个链接,让大家自己去看,要么适当的引用你认ؓ最有h值的D落或句子,或者适当l出自己的见解和评论Q否则很难让别h怿你的诚意和动机,q是对原文作者、你的读者、以及你自己L的尊重?br/> <br/> 换个角度来看问题Q如果我们把软g开发社区看作一个整体,而我们就是这个整体中的一员,那么原封不动的拷贝粘贴这个整体中另外一个个体的文章内容Q又何尝不是在广义上与DRY背道而驰Q既然互联网l我们大家提供了分n信息的便利,Z么我们自׃懂得ȝ护这个本该服务于我们自己的环境呢Q?br/> <br/> <br/> <img src ="http://m.tkk7.com/sean/aggbug/95424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2007-01-22 23:22 <a href="http://m.tkk7.com/sean/archive/2007/01/22/95424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好奇心、求知欲、追求完、解军_际问?- IT人必要的职业素养http://m.tkk7.com/sean/archive/2006/12/26/90186.html大胃大胃Tue, 26 Dec 2006 15:39:00 GMThttp://m.tkk7.com/sean/archive/2006/12/26/90186.htmlhttp://m.tkk7.com/sean/comments/90186.htmlhttp://m.tkk7.com/sean/archive/2006/12/26/90186.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/90186.htmlhttp://m.tkk7.com/sean/services/trackbacks/90186.html让我提醒一下各位准备进入IT行业Q或者在IT行业但是q没有真正融入的朋友QITq个领域Q不你做什么,都很有挑战,需要你的热情和勇气Q这里没有金饭碗、铁饭碗Q如果你入这行纯_ؓ了更L的工作或者更高的收入Q我只能说我个h极其不看好你的这个动机。没有合适的心态和必要的职业素养,你很难成功或者满?br />
首先需要好奇心Q从计算机如何工作,到某个Y件系l或框架是如何实现的Q到具体业务领域Z么会有某特定的需求,都需要我们的好奇心,没有好奇心,没有兴,没有兴趣Q做出来的东西就必然~少灵魂。如果你q基本的好奇心都没有了,我劝你还是早点关注一下其他更能够引v你好奇和感兴的行业Q否则要么你很失败,要么会做得很辛苦?br />
有了好奇心,接下来一定要有强烈的求知Ʋ望Q要有知甚解的精。IT业是一个瞬息万变的行业Q当下如日中天的技术,C明天、下周、下个月、明q_可能回无h问|Q对于和你的知识面,和你的公司所涉猎的行业相关的技术知识、领域知识需要我们不断学习,不断充实自己Q这个环节很难有什么捷径,如果有,也是通过一定的q度和深度来逐步辑ֈ举一反三的目的。曾l接触过不少“不求甚解”的朋友Q表面上他们能够应付相当的工作和压力Q但是很难让他们理解和掌握更深层ơ的东西。如果你观察他们_长的旉Q你会发C们ؓ了掌握不断变化或者不断发展的技术、框架、^収ͼ或者适应某些看似极度不稳定的用户需求,׃没找到谱Q其实也很篏?br />
有了必要的好奇心Q也有够的动力d习新事物之后Q我们需要有q求完美的工作态度。拿软g开发来_我们产出的是软gQ从某种意义上讲Q是我们的孩子,应该l予_的关爱和呉|Q谁不希望自q孩子是天下最的Q说到底软gq个东西从无到有Q灵zL相当大Q能够做到怎样优秀的程度,很多时候取决于我们自己?br />
最后是解决实际问题。追求完没有错Q但是需要有个度Q需要有的放矢,需要有一个更加全局的指导方针,那就是解军_际问题。不Z做的东西采用多么先进的技术,你用了多么业界认可的理ҎQ假如最后一些基本的客户需求无法达成,也是白搭。这是典型的“学院派”作风,我们在不断追求完的同时Q时刻都不能忘记我们存在的目的:解决实际问题?br />




大胃 2006-12-26 23:39 发表评论
]]>
[阅读] Agile Methods as a Replacement for Fossil Fuelshttp://m.tkk7.com/sean/archive/2006/12/23/89645.html大胃大胃Sat, 23 Dec 2006 03:33:00 GMThttp://m.tkk7.com/sean/archive/2006/12/23/89645.htmlhttp://m.tkk7.com/sean/comments/89645.htmlhttp://m.tkk7.com/sean/archive/2006/12/23/89645.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/89645.htmlhttp://m.tkk7.com/sean/services/trackbacks/89645.html http://leadinganswers.typepad.com/leading_answers/2006/11/agile_methods_a.html

关于如何使用敏捷Ҏ理知识型员工和团队Q推荐阅诅R其中两q插囑־形象的表C出Q?br />
Command-and-Control的管理模式如何压制团队和个h的创造力、A献的热情和生产效率,而适当的敏h法和实践如何推动和提高团队及个h的创造力、A献的热情和生产效率?br />
一个典型的Command-and-Control模式的特征:
- One way communications
- Lack of local control
- Compliance activities
- Bureaucracy
- Lack of recognition

一个典型的敏捷理模式的特征:
- Self organizing team
- Empowered to make decisions
- Focus on business value
- No blame culture
- Team recognition + development




大胃 2006-12-23 11:33 发表评论
]]>
[阅读] Technical Debt: the Threshold of Acceptable Painhttp://m.tkk7.com/sean/archive/2006/12/23/89639.html大胃大胃Sat, 23 Dec 2006 02:40:00 GMThttp://m.tkk7.com/sean/archive/2006/12/23/89639.htmlhttp://m.tkk7.com/sean/comments/89639.htmlhttp://m.tkk7.com/sean/archive/2006/12/23/89639.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/89639.htmlhttp://m.tkk7.com/sean/services/trackbacks/89639.html看到一好文,和大家共享之Q?br />http://blog.technoetic.com/2006/09/19/threshold-of-pain/

大意是探讨ؓ什么有些team的“技术债”(我们在IT目q展中犯下的哪怕是小的一炚w误或者不作ؓQ都会媄响到整个目产出的质量,影响到该目未来的发展、维护,甚至验收Q得成本和预算无法被有效管理)会慢慢堆U,而另一些team能够及时发现q纠正这些潜在的问题。是team的技能水q_Qƈ不完全是。我们可以从不同team对painQ项目进展和产出上出现的瑕疵Q的敏感E度的不同来考量Q而非单的技能差异?br />
对pain的容忍度q高Q项目中的“技术债”就会日益堆U,到最后项目变得无法收拾;对pain的容忍度q低Q会让项目组变得Ҏ求疵Q得不偿失。当Ӟq个容忍度不可能也没必要定死在一个固定g。有时候,我们也不得不临时调高q个容忍度,比如Z赶进度(如果错过某个deadline整个目都可能会变得一文不值或者失L义那U进度)Q问题的关键是,当我们有意识的提高宽容度Q达到我们某个目标之后,能不能及时回q头来I补这部分~失的出,避免今后带来更大的问题。今天你看来需?周时_你觉得不|2周之后,同样q些Ơ下的“技术债”可能会“吃掉”你2个月Q这不是在危a耸听?br />
如何扑ֈ一个^衡点Q如何根据项目实际情况调整这个^衡点的位|?q是摆在每个目理者面前的现实问题Q也是项目管理者的责Q和义务?br />



大胃 2006-12-23 10:40 发表评论
]]>
[Tips] 在Ubuntu Linux 6.06 LTS (Dapper Drake)上安装CVS服务http://m.tkk7.com/sean/archive/2006/09/17/70145.html大胃大胃Sun, 17 Sep 2006 09:10:00 GMThttp://m.tkk7.com/sean/archive/2006/09/17/70145.htmlhttp://m.tkk7.com/sean/comments/70145.htmlhttp://m.tkk7.com/sean/archive/2006/09/17/70145.html#Feedback7http://m.tkk7.com/sean/comments/commentRss/70145.htmlhttp://m.tkk7.com/sean/services/trackbacks/70145.html之前目一直用Win32环境的CVSNT做源代码版本理Q终于有一天受不了Windows下面跑CVS的性能Q一斚wCVS很慢Q另一斚w做CVS服务器的机子也被拖篏了)Q下定决心把CVS搬到Linux环境下?br />
以下单记录一下在Dapper Drake上安装和配置CVS的步骤,供大家参考(׃服务器在内网Q无法用Debianpȝ下方便而强大的apt-getQ只能手动下载了Q:

1- 下蝲和Dapper Drake匚w的CVS版本cvs_1.12.9-17_i386.debQ徏议从国内比较快的ubuntu.cn99.com的源上拿Q\径是/pool/main/c/cvs/cvs_1.12.9-17_i386.debQ?br />
2- 下蝲xinetd包,同上/pool/main/x/xinetd/xinetd_2.3.14-0ubuntu1_i386.debQ?br />
3- sudo -s转成rootQ?br />
4- dpkg -i cvs_1.12.9-17_i386.debQ?br />
5- dpkg -i xinetd_2.3.14-0ubuntu1_i386.debQ?br />
6- Z的CVS资源库选择一个目录,比如mkdir /MyCVSQ?br />
7- cvs -d /MyCVS init 初始化该CVS资源库;

8- vi /etc/xinetd.d/cvspserverQ添?br />service cvspserver
{
     port = 2401
     socket_type = stream
     protocol = tcp
     user = root
     wait = no
     type = UNLISTED
     server = /usr/bin/cvs
     server_args = -f --allow-root /MyCVS pserver
     disable = no
}

9- /etc/init.d/xinetd startQ?br />
10- 开始配|CVS用户Q最单的方式是采用Linux自己的用?文gpȝ权限理机制Q我的做法是d一个专门的用户ldevQ然后往里面加用P最后修改CVS资源目录的权限:
# addgroup dev
# adduser username
# adduser username dev
# chown -R username:dev /MyCVS
# chmod -R 775 /MyCVS
暂时?75Q今后可以根据需要再l化每个文g/文g夹的l节权限Q?br />
11- exit 退出sudo -s模式Q?br />
12- 打开你熟悉的CVS客户端开始n用新的CVS服务器吧Q相信它的性能相比较Win32下的CVSNTQ一定会l你带来惊喜:D?br />



大胃 2006-09-17 17:10 发表评论
]]>
[阅读] 2010qIT职场势预测 - 业务领域知识比专业技术知识更重要http://m.tkk7.com/sean/archive/2006/07/15/58304.html大胃大胃Sat, 15 Jul 2006 04:20:00 GMThttp://m.tkk7.com/sean/archive/2006/07/15/58304.htmlhttp://m.tkk7.com/sean/comments/58304.htmlhttp://m.tkk7.com/sean/archive/2006/07/15/58304.html#Feedback2http://m.tkk7.com/sean/comments/commentRss/58304.htmlhttp://m.tkk7.com/sean/services/trackbacks/58304.htmlFor your leisure reading.

http://www.computerworld.com/action/article.do?command=viewArticleTOC&specialReportId=9000100&articleId=112360
http://www.computerworld.com/action/article.do?command=viewArticleTOC&specialReportId=9000100&articleId=112368





大胃 2006-07-15 12:20 发表评论
]]>
[Tips] Eclipse下CVS同步?Add to .cvsignore..."弹出菜单灰掉的真正原因http://m.tkk7.com/sean/archive/2006/06/27/55292.html大胃大胃Tue, 27 Jun 2006 03:36:00 GMThttp://m.tkk7.com/sean/archive/2006/06/27/55292.htmlhttp://m.tkk7.com/sean/comments/55292.htmlhttp://m.tkk7.com/sean/archive/2006/06/27/55292.html#Feedback4http://m.tkk7.com/sean/comments/commentRss/55292.htmlhttp://m.tkk7.com/sean/services/trackbacks/55292.html开发过E中把Eclipse当作CVS客户端来用的时候,可能会遇到这L情况Q发现某些文件其实不需要CVS来管理,比如很多中间文g和可以通过其他源代码自动生成的东东Q时间长了,一斚w影响CVS性能Q另一斚w也是增加了同步时的额外工作,和真正需要上传的源代码؜在一P看上d是不爽。这个时候你惌v来可以把q些文g加入.cvsignoreQ但是这个时候无Z怎么弄,"Add to .cvsignore"菜单ҎL灰掉的?br />
Z么会q样呢?{案是这?Add to .cvsignore"只能对还没有加入版本控制的文件v作用Q所以对于那些已l加入的文gQ这个菜单就被disable掉了?br />
一个彻底但是相寚w蛮的的解军_法是把项目从CVS断开Q删掉所有的CVS目录Q删掉CVS服务器上的这个项目的目录Q在本地所有需要的地方新徏.cvsignore文gQWindows用户注意Q在Explorer中无法创L文gQ只能走命o行或者用~程的方式创建)Q和CVS目录一P每个目录一个,打开.cvsignore文g以文本方式加入希望被CVS忽略的条目,如:"*.exe"?bin"{等。然后再和CVS同步Q这个时候被忽略的条目(文g或者整个子目录Q就不再出现在同步的文g列表中了?br />



大胃 2006-06-27 11:36 发表评论
]]>
[阅读] Are You Following the Instructions on the Paint Can?http://m.tkk7.com/sean/archive/2006/04/23/42723.html大胃大胃Sun, 23 Apr 2006 13:53:00 GMThttp://m.tkk7.com/sean/archive/2006/04/23/42723.htmlhttp://m.tkk7.com/sean/comments/42723.htmlhttp://m.tkk7.com/sean/archive/2006/04/23/42723.html#Feedback0http://m.tkk7.com/sean/comments/commentRss/42723.htmlhttp://m.tkk7.com/sean/services/trackbacks/42723.html http://www.codinghorror.com/blog/archives/000568.html
http://www.codinghorror.com/blog/archives/000283.html

你会늅Ҏ桶上的说明来涂漆吗?Ҏ桶上的说明,如果你仔l去看,会发现很多条目都是你觉得理所应当的,没什么了不vQ甚x有什么技术含量,但正是这些看似简单甚?弱智"的用说明保证了最la漆涂出来的质量。{忉|想现如今做Y件何不是如此,你技术再先进Q个人的水^再高Q如果忽略了好的习惯和基本的U律Q最l的l果未必好看?br />


大胃 2006-04-23 21:53 发表评论
]]>
[VS2005h]一些实用的工具和配|指?/title><link>http://m.tkk7.com/sean/archive/2006/04/01/38624.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sat, 01 Apr 2006 09:04:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2006/04/01/38624.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/38624.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2006/04/01/38624.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/38624.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/38624.html</trackback:ping><description><![CDATA[ <br />新的目要求使用C#Q对于习惯了Java开发模式和环境的朋友来_一开始M有些不适应?br /><br />拿我自己的体验来_VS2005跟Eclipse SDK相比Q当然画GUI和调试的直观性方面给我留下的印象很深Q不q也有些我认为缺了的东西:增量~译Q很多时候只有F6以后Q编译错误提C才会消失,有些引用和IntelliSense才生效,不像EclipseQ保存后自动增量~译Q、代码排版(很怀念Ctrl-Shift-FQ、引用整理(很怀念Ctrl-Shift-OQ、很多有用的重构Q可以说VS里面代码U的重构相比很多Java IDE差远了)、单元测试的集成QNUnit理论上应该可以很好的集成到VS2005Q不q还是花了我一些功夫)、CVS客户端(很怀念Eclipse SDKQ。当Ӟ一些IDE当中相对的差异一开始也很难适应Q不q这些也可以理解Q属于正常范畴?br /><br />最qؓ了把目的一些基调和开发模式定下来Q做了一些尝试,我想也许对大家还有些用,整理一下放在这里?br /><br />一个好?NET目Q我怿有些东西事先定义好,寚w目整个过E是有很大好处的Q这些东西至应该包括:开发工具选择和配|、代码模ѝ单元测试、代码自动化review工具、自动编译和试、缺陯t、文档管理等。当然如果不计成本,那么有很多重量的SDLC框架可以用,如VSTS(MSF)、Rational(RUP)和Borland的集成工P以上q些环节的问题相应的框架也大都给Z很好的解x案,但是毕竟不是所有的目都会购买和采用那??的方法和q程Q很多时候就有那个预算Q对于特定的目Q实施v来也不见得就会收到好的效果。于是我们接触到的很多项目,其实都还是需要自己去L适合的工h把整个周期串h。以下是我在试扑ֈ一套合适方案时遇到的一些特定问题以及解军_法:<br /><br />首先是单元测试工具以及和IDE的集成。在Eclipse SDK中,我们不必太过兛_q个问题Q因为Eclipse已经很好的集成了JUnit。但是在.NET的世界,Z是怎么做的呢?{案是NUnitQ一个跟JUnit非常cM的东ѝ和JUnit一PNUnit也提供了命o行版本和GUI版本Q但是VS里面q没有直接提供集成,你更多的时候需要从外部q行NUnitQ当然这样很不爽啦。VSL是自׃提供了单元测试工P但是那仅仅在高端VSTS中才有。如何解册个集成的问题呢?可以?a >http://www.testdriven.net/</a> 上下载一个TestDriven.NET的VS add-in。安装以后,可以在VS中调用我们可能经帔R要调用的NUnit来跑自己的单元测试了?br /><br />其次是代码模ѝ一个项目,不管大小QM涉及到相当数量的源代码文Ӟ我们希望q些源代码都包括一些共有的东西和特定的注释Q怎么办?在Eclipse里面有code template的概念,那么在VS里呢Q答案是Project Template和Item Template。一开始我Ҏ怸着头脑Q只看到MSDN上正在说Code SnippetQ于是我实现?.0版代码模板就是基于Code Snippet的,用v来很不方便,有关Code SnippetQ我{下q会提到Q这里先看Templates。我Google了一下相关的Project Template和Item Template的说明,基本都是VS 2003的,不过它们l了我很好的提示Q至可以知道VS在生成默认的代码时是怎样一个思\。所有的VS 2005代码模板都可以在%VS_2005_INSTALL_PATH%\Common7\IDE\ProjectTemplates?VS_2005_INSTALL_PATH%\Common7\IDE\ItemTemplates目录下面扑ֈQProject Template和Item Template不同的是Project Templates是在你新Z个项目时使用的模板,而Item Templates是在你往一个现有项目中ditemQ如Form、Class{的时候用。这里需要注意两点:一是VS 2005跟VS 2003不同Qtemplates不再是直接的.cs文g{,而是打包在了.zip中,需要修改的话,需要把新的文g重新压到.zip中;二是除了template目录Q还有一个TemplateCache目录Qؓ了立即看到模板的效果Q这里面的相?cs文g{也需要修攏V模板改h相当直接Q一看便知,比如新徏Form的模板:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.Collections.Generic;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.ComponentModel;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.Data;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.Drawing;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.Text;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> System.Windows.Forms;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> $rootnamespace$<br /><img id="Codehighlighter1_192_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_192_311_Open_Text.style.display='none'; Codehighlighter1_192_311_Closed_Image.style.display='inline'; Codehighlighter1_192_311_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_192_311_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_192_311_Closed_Text.style.display='none'; Codehighlighter1_192_311_Open_Image.style.display='inline'; Codehighlighter1_192_311_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_192_311_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_192_311_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> partial </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> $safeitemrootname$: Form<br /><img id="Codehighlighter1_242_309_Open_Image" onclick="this.style.display='none'; Codehighlighter1_242_309_Open_Text.style.display='none'; Codehighlighter1_242_309_Closed_Image.style.display='inline'; Codehighlighter1_242_309_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_242_309_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_242_309_Closed_Text.style.display='none'; Codehighlighter1_242_309_Open_Image.style.display='inline'; Codehighlighter1_242_309_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_242_309_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_242_309_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> $safeitemrootname$()<br /><img id="Codehighlighter1_276_306_Open_Image" onclick="this.style.display='none'; Codehighlighter1_276_306_Open_Text.style.display='none'; Codehighlighter1_276_306_Closed_Image.style.display='inline'; Codehighlighter1_276_306_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_276_306_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_276_306_Closed_Text.style.display='none'; Codehighlighter1_276_306_Open_Image.style.display='inline'; Codehighlighter1_276_306_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_276_306_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_276_306_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            InitializeComponent();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br /><br />接下来说说Code SnippetQ这个东东被MSDN吹得有点大,不过用v来实在有些不手Q你虽然可以定义一大块代码片断Q然后填一些参敎ͼp得到一个定制的代码D,但是毕竟你还是需要自己写很多东西Q然后用的话需要在代码~辑器里面点很多下才出来Q又没有很好的快h式。不客气地说我觉得用Code Snippet来模拟Eclipse的很多现成的重构功能实在不能够体现出优势。退一万步Ԍ有L没有强,臛_你还是可以做一些东西的。用现成的Code Snippet很简单,只要把VS指向你存放Code Snippets的目录即可,新的Code Snippets会被自动扫描到。方法是QTools -> Code Snippets Manager或者Ctrl-K Ctrl-B然后d目录名。所有的Code Snippets文g都以.snippet后缀l尾Q其实内部是个XMLQ像q个样子Q?br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="utf-8" </span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">CodeSnippets </span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">CodeSnippet </span><span style="COLOR: #ff0000">Format</span><span style="COLOR: #0000ff">="1.0.0"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Header</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Title</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Insert a simple set of getter and setter pair</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Title</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Author</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Sean GAO</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Author</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Description</span><span style="COLOR: #0000ff">></</span><span style="COLOR: #800000">Description</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Shortcut</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">simplisticGetterSetter</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Shortcut</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">SnippetTypes</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">SnippetType</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Expansion</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">SnippetType</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">SnippetTypes</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Header</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Snippet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Declarations</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">AccessLevel</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">public</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">PropertyType</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">string</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">PropertyName</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">name</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">LocalVarName</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">ID</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></</span><span style="COLOR: #800000">ToolTip</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">localVar</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Default</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Literal</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Declarations</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">Code </span><span style="COLOR: #ff0000">Language</span><span style="COLOR: #0000ff">="csharp"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"><![CDATA[</span><span style="COLOR: #808080">        $AccessLevel$ $PropertyType$ $PropertyName$<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        {<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            get { return $LocalVarName$; }<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            set { $LocalVarName$ = value; }<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        }<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">]]></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Code</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">Snippet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">CodeSnippet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">CodeSnippets</span><span style="COLOR: #0000ff">></span></div><br />我们可以看到Q首先在.snippet中我定义了一些变量,然后?lt;Code/>D加入了<![CDATA[...]]>Q就q么单?br /><br />最后,q剩一些具体的工具Q选择面比较广Q我只列举一下我都选了哪些Q?br />- 代码review和分析工PFxCopQ可以在GotDotNet|站上下载:<a >http://www.gotdotnet.com/team/fxcop/</a> ?br />- 自动~译理QNANT和CruiseControl.NETQ?a >http://nant.sourceforge.net/</a> ?<a >http://ccnet.thoughtworks.com/</a> ?br />- ~陷跟踪QmantisQ?a >http://www.mantisbt.org/</a> ?br />- 文档理Q?jLibraryQ?a >http://jlibrary.sourceforge.net/</a> ?br />- 版本控制QCVSNT和Eclipse SDKQ?a >http://www.cvsnt.org/</a> ?<a >http://eclipse.org/</a> ?br /><br />暂时是q么多,如果你和我一样从Java转向.NETQ然后正在犯愁如何做一?NET目的前期准备,希望能给你一些参考?br /><br /><img src ="http://m.tkk7.com/sean/aggbug/38624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2006-04-01 17:04 <a href="http://m.tkk7.com/sean/archive/2006/04/01/38624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[阅读]关于Offshore - d外包的两好?/title><link>http://m.tkk7.com/sean/archive/2006/02/08/29960.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Wed, 08 Feb 2006 10:35:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2006/02/08/29960.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/29960.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2006/02/08/29960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/29960.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/29960.html</trackback:ping><description><![CDATA[<br> "Why offshoring fails":<br> <a > http://management.itmanagersjournal.com/article.pl?sid=06/02/02/2135206</a><br> <br> "Five reasons why offshore deals go bust":<br> <a href="" http://www.computerworld.com/managementtopics/outsourcing/story/0,10801,102677,00.html=""> http://www.computerworld.com/managementtopics/outsourcing/story/0,10801,102677,00.html</a><br> <br> <br><img src ="http://m.tkk7.com/sean/aggbug/29960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2006-02-08 18:35 <a href="http://m.tkk7.com/sean/archive/2006/02/08/29960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java开发者~Java架构师:包办婚姻Q?/title><link>http://m.tkk7.com/sean/archive/2005/11/18/20391.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Fri, 18 Nov 2005 02:54:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2005/11/18/20391.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/20391.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2005/11/18/20391.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/20391.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/20391.html</trackback:ping><description><![CDATA[<br> 今天在JDJ上看到这个很有意思的文章Q?br> <a target="_blank">http://java.sys-con.com/read/152251.htm</a><br> <br> 大意是讲Q在很多大的IT企业内部Q经常能够看见一l独立的Java架构师,和另外很多个Java开发团队。架构师们往往忙于奔L在不同的目Q他们也? 自己的进度和d要完成,有很多公用的模块要维护,很多新的框架或者模块要开发,他们开始怀疑自׃为架构师Q到底应该做些什么;而开发者们往往被硬性规 定只能用架构师l指定的Ҏ和类库、框Ӟ随着旉推移Q这些原本的金科玉律开始不再光鲜,开发h员开始抱怨架构师l做的东西很不合理,而修改徏议和? 求迟q不能得到响应,旉长了很可能自己寻求其他途径Q如开源的框架。但最l,q些都是团队内部矛盾Q该怎么办还得怎么办,x开架构师组单干Q没q个? Vؓ什么会q样Q这U情形是如何形成的?Java架构师和普通开发h员之间的工作关系l常是由他h指派Q各自的工作内容和指标也都是来自不同的部门,? 不是Z双方自n的意ѝ如果把上面q句话的“工作”换成“生zZ,q不正像是包办婚MQ?br> <br> 我想Q有很多Java的项目,当它做到一定规模的时候,自然而然׃产生定义框架和类库的xQ一开始,q种Ҏ很有效,无论做框架的q是用框架的Q? 都很happy。但是时间长了,q样的模式就会带来各式各L问题。这个时候,架构师和开发h员就需要坐下来Q开诚布公的好好谈一谈,架构师要多多理解开 发h员的苦恼Q因为毕竟他们的薪水来自目预算Q开发h员也需要多多理解架构师Q也许是你没有把握好框架的正用,那个框架q一无是处。还是把自己? 内该做的事情Q做做好Q毕竟,作ؓ夫妻Q作Z个家庭单元,有它的责d义务Q那是养育出“孩子”,即品或目。就像夫dӞ吵归吵,但是W二天, q去的不愉快Q应该抛在脑后了?br> <br> 不知道各位所在的公司和项目有没有cM的情况出玎ͼ大家有有些什么好的办法去解决它所带来的麻烦呢Q可以分享一下你的经验么Q?br> <br> <br><img src ="http://m.tkk7.com/sean/aggbug/20391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2005-11-18 10:54 <a href="http://m.tkk7.com/sean/archive/2005/11/18/20391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[PMO]?/title><link>http://m.tkk7.com/sean/archive/2005/08/28/11346.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sat, 27 Aug 2005 16:15:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2005/08/28/11346.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/11346.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2005/08/28/11346.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/11346.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/11346.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">是什么?它可以是很多不同单词的组合,在这里,我要说的?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">Project Management Office</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">。请原谅我的孤陋寡闻Q?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">的概念其实在两年以前已l是业界?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">buzzword</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">了,而我直到最q才因ؓ工作的原因接触到q个概念?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">在这随W里面,让我们初步的探讨一下,Z么我们需?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">Q或者说Q?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">应该具备怎样的职能呢Q?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">可以说是随着</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">IT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">产业的潮应q而生的物,最初的目的是节U成本,提高目成功率,以及实施标准程Q以应对来多的项目管理Q务。虽然它在节U成本和提升目理质量上目前还很难有一个可量化的指标,但是来多的公司和企事业单位在它们?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">IT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">部门讄集中?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">Q统所?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">IT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">目?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">按照比较公认的说法,</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">的核心职能包括:</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">1- </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">定义q推行可重用的项目管理流E;</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">2- </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">集中控制目q展和资源调配?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">仔细想一惻I也许我们有两U不同侧重点?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">Q一U是N型的Qؓ目l理提供培训、指导和最佛_践;另一U是集中式管理型Q将目l理集中?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">Q然后派往不同的项目,最l由</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">l一控制所有项目和资源?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">我相信国内很多公司应该是更們֐于后者,一斚wQ项目管理或者说软g工程本来是一门艺术,很难有一个定式,q有再多的“最佛_践”,Ҏ目具体情况的不同,也很难保证它们就一定适用Q现实中要找到真正管理经验丰富,可以向别人提供理论指导的人才Qƈ非那么容易;另一斚wQ后者能够更加直接的体现?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">存在的h|不光是直接的具体的项目管理,也有利于定不同目的类型和轻重~急,合理分配资源?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">当然Q如果一?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">最l做成一个完全意义上的行攉K门的话,它也不应该同公司的企业文化相冲突Q它起到的作用也应该更多的体现在如何d目的失败和公司的亏损减到最低限度,如何提高公司的项目管理水qI而不是一味的、机械的通过所谓的“标准流E”处理项目的实际问题Q或者仅仅是一个跟t项目进度,通常以一U管理者的姿态去命o各个目l的部门。它应该同公司的各个相关部门Q如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">CIO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">CAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">QAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">Q以及具体的目l、公司胦务和高层理部门共同协作Q促q公司各个项目的利实施?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">一个比较常见的、直观的说法是,</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">需要保证所有其属下?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PM</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">具备理当前目的能力。而从长远来看Q最理想?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">PMO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">能够l公司的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'">IT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">部门带来持箋不断的业l提升?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Trebuchet MS'; mso-ascii-font-family: 'Trebuchet MS'">先说到这Q关于本话题Q今后也怼有更多后l文章。同时欢q大家参与讨论!</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS'"><o:p> </o:p></SPAN></P><img src ="http://m.tkk7.com/sean/aggbug/11346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2005-08-28 00:15 <a href="http://m.tkk7.com/sean/archive/2005/08/28/11346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你真的认真考虑q周期性的构徏工作的对于项目成功重要性吗Q?/title><link>http://m.tkk7.com/sean/archive/2005/03/30/2610.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Wed, 30 Mar 2005 07:16:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2005/03/30/2610.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/2610.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2005/03/30/2610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/2610.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/2610.html</trackback:ping><description><![CDATA[ <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: "Trebuchet MS";" lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: 宋体;">今天偶然?/span><span style="font-family: "Trebuchet MS";" lang="EN-US">TheServerSide.com</span><span style="font-family: 宋体;">上发C挺有意思的文章Q大意是讲在软g开发项目中cM日构L工作Z么重要,通过它我们要辑ֈ的目的是什么。虽然文章的背景是讲一个叫?/span><span style="font-family: "Trebuchet MS";" lang="EN-US">BuildMonkey</span><span style="font-family: 宋体;">的东东,但是很大的篇q实在是我们日常很容易忽略的问题。如果你在公司做目l理或者负责配|管理,你看一看这文章,说不定会有启发?/span><span style="font-family: "Trebuchet MS";" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: "Trebuchet MS";" lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: 宋体;">原文见:</span><span style="font-family: "Trebuchet MS";" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: "Trebuchet MS";" lang="EN-US"><a >http://www.theserverside.com/articles/article.tss?l=BuildManagement</a> <o:p></o:p></span></p> <p class="MsoNormal" style="margin: 6pt 0cm;"><span style="font-family: "Trebuchet MS";" lang="EN-US"><o:p> </o:p></span></p> <img src ="http://m.tkk7.com/sean/aggbug/2610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2005-03-30 15:16 <a href="http://m.tkk7.com/sean/archive/2005/03/30/2610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不同的J2EE目开发流E?/title><link>http://m.tkk7.com/sean/archive/2005/01/16/365.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sun, 16 Jan 2005 15:18:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2005/01/16/365.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/365.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2005/01/16/365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/365.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/365.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">一个典型的</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">J2EE</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">目通常应该使用哪一U开发流E呢Q流行开发流E有很多U,应用比较q泛的有Q瀑布式、P代式、以?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP (Rational Unified Process)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">。每一U都有其优点和不I所以通常我们应该把它们结合v来而不是认定其中一个然?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">100%</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">按着它的规范走?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">首先来看看每一U大致是什么意思:</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">[</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">瀑布?/span></b><b style="mso-bidi-font-weight: normal"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">]<o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">q种模式的流E强调在开始编码和试之前完成所有的需求分析和设计Q这U模式历史相当久q,也很成熟Q甚臛_了今天,q种模式q是被广泛的采用到绝大多数公司和目中。采用这U模式开发的目通常很大Qƈ且需要较长时间交付。正因ؓ如此Q这些项目通常会有更多的风险:在业务需求不断变化的今天Q如果待开发的pȝ不能及时反应些需求的变化Q最l开发出来的产品可能已经不是客户真正需要的了?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">[</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">q代?/span></b><b style="mso-bidi-font-weight: normal"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">]<o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">Z应对传统瀑布式的开发在处理需求变更上的不Iq些q出C一U全新的极限~程的概c极限编E(</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">XP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">Q的核心思想在于Q从长远看,早期发现错误以及降低复杂度可以节U成本。极限编E强调我们将d</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">pȝl分为可以在较短周期解决的一个个子Q?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">模块Qƈ且强调测试、代码质量和及早发现问题。通常Q通过一个个短小的P代周期,我们可以获得一个个阶段性的q展Qƈ且可以及时Ş成一个版本供用户参考,以便及时对用户可能的需求变更作出响应?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">[RUP]<o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">的全U是</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">Rational Unified Process</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">Q是一套定义得很完整的软g工程模型。它~码前的需求分析和设计Q以及短q代周期的开发和发布。它鼓励团队首先开发项目中风险最高的模块Q用更多的时间发现和应对问题Q当设计需要变化时Q它也能够在一定程度上减轻一些重复工作。不q,因ؓ</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">十分严}Q也比较具体Q通常要完全跟着q个程C不是</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">100%</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">必要?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">下面我们来看看实际上我们应该采取什么样的流E或者策略:</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">实际?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">J2EE</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">目中,</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">的应用呈逐年上升的趋势,不过也ƈ非所有这些采用了</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">的项目也是完完全?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">式的。我们可以考虑一U综合上面三U流E的优点的方式,Ҏ具体的项目量体裁衣。需要对q几U的优点来一个ȝQ瀑布式由于比较成熟,通常很好的强调了先需求后设计再编码的重要性,也比较适合大公司先预算后执行的方式Q极限编E强调测试先行和单是,q样有利于及早发现问题以及更好的应对变化Q?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">的集中化的分析和设计也有其不可替代的优越性?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">要做Z个结论性的{案q不ҎQ如果贵公司相对较大q且愿意支付一定的理成本来推一套成熟且完整的开发流Eƈ在公司内部所有项目或者是大多数项目严格执行,我想</span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">RUP</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Palatino Linotype'; mso-hansi-font-family: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt">应该是首选;如果贵公司希望有更大的灵zL,可以考虑一些折LҎQ根据具体的目Q从上面三种程提取有h值的部分Q来定具体的流E?/span><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-FAMILY: 'Palatino Linotype'; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p><img src ="http://m.tkk7.com/sean/aggbug/365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2005-01-16 23:18 <a href="http://m.tkk7.com/sean/archive/2005/01/16/365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单说说对J2EE目l的人员l构的看?/title><link>http://m.tkk7.com/sean/archive/2005/01/16/363.html</link><dc:creator>大胃</dc:creator><author>大胃</author><pubDate>Sun, 16 Jan 2005 14:11:00 GMT</pubDate><guid>http://m.tkk7.com/sean/archive/2005/01/16/363.html</guid><wfw:comment>http://m.tkk7.com/sean/comments/363.html</wfw:comment><comments>http://m.tkk7.com/sean/archive/2005/01/16/363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sean/comments/commentRss/363.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sean/services/trackbacks/363.html</trackback:ping><description><![CDATA[<p> </p> <p>有h做了一个ȝQ一个J2EE目l通常会有怎样的h员结构,或者说Q一个J2EE目通常需要怎样一l代表不同的工作性质及内容的角色。实际情况中Q一个h可能同时承担多个不同的角Ԍ一个角色也可以有很多不同的人来分担。这些角色包括:</p> <ul> <li>目l理</li> <li>架构?/li> <li>领域专家</li> <li>工</li> <li>前端开发h?/li> <li>后端开发h?/li> <li>数据库设计师</li> <li>数据库管理员</li> <li>数据UL专员</li> <li>pȝ理?/li> <li>试人员</li></ul> <p>其中Q项目经理负责安排和协调整个开发小l的d和进度,向决{层和用户代表反馈项目进展和状态,以及负责保证目l或者其成员所需的所有资源够完成项目开发ƈ及时CQ架构师负责目的M技术选择、系l设计和指定具体的技术标准和l节Q通常也需要跟整个组紧密协调Q领域专家负责采集和分析用户需求,在整个项目开发过E中了解和确保品能够符合最l用L要求Q美工设计用L面;前端开发h员按照美工的蓝图增加具体的前端处理逻辑Q后端开发h员实现具体的业务逻辑Q通常包括持久层的操作Q数据库设计师负责通过领域专家提供的需求设计数据库的表l构和表关系Q如ER图;数据库管理员ҎER囄成实际的数据表,q对数据库进行维护,以及协助优化数据库和SQL查询语句性能{;数据UL专员负责~写UL脚本Q帮助客户将原有pȝ数据导入新的pȝQ系l管理员负责l护开发工作中需要的所有开发、测试、品环境,以及q行产品发布Q测试h员负责测试,保证开发出来的产品满需求文档ƈ没有bugQ测试h员应该具备一定的领域知识?/p> <p>拿一个具体的目l来_</p> <p>q是一个J2EE外包目的开发组Q共有h?0名,1个项目经理?个领域专家?2个开发h员开发h员?个数据库理员、以?个测试h员。由于设计部分是q方做好,目l没有专职的架构师和数据库设计师。项目采用EJB+Struts的Ml构?/p> <p>目l理负责同甲方的目l理认d安排和进度,以及协调目l内部各成员的工作进展,q提供必要的行政和Yg支持Q同时执行项目经理的其他日常工作Q如配置理{?个领域专家参与同甲方领域专家的沟通,保拿到的需求文档和设计文档充且合理,q参与SITQ确保最l的产品W合文档的需求。数据库理员负责维护ƈ同步甲方提供的数据库Q同时协助开发h员优化SQL。测试h员负责在不同模块完成后进行功能测试以及最后的SIT。开发h员按照不同的模块分成5个组Q每个组又进一步细分ؓ1个后端开发h员和多个前端开发h员,后端开发h员同时是该组l长。所有组长统一向项目经理汇报?/p> <p>由此可见Q上面ȝ出的那个J2EE目l成员角色清单还是相当有说服力。M上,在这个项目组中,目l理是其协调和沟通作用的单点Q项目组的主体由开发h员构成(q不奇怪,本n是要开发品嘛Q,领域专家和数据库理员主要还是配合开发h员的工作Q而测试h员则除了一般意义上的测试和配合之外Q因为相对独立于开发,也vC定的寚w目开发流E的监督作用?/p> <p>J2EEq个东东Q可以理解ؓ一l规范)本n强调角色分工,当这些分工不同的角色都尽心尽力做好自q工作Q文档齐备,q且各个不同的角色之间保持够的沟通,加上定的流E,面向企业的Java目׃更們֐于朝着健康可控的方向发展?/p> <p> </p><img src ="http://m.tkk7.com/sean/aggbug/363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sean/" target="_blank">大胃</a> 2005-01-16 22:11 <a href="http://m.tkk7.com/sean/archive/2005/01/16/363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://pgyadv.com" target="_blank">þݺҹҹѹۿ</a>| <a href="http://khushkhush.com" target="_blank">һëƬ޶</a>| <a href="http://ymiwang.com" target="_blank">Ʒ鶹ѹۿ</a>| <a href="http://1178767.com" target="_blank">AVպƷþþþ</a>| <a href="http://074g8.com" target="_blank">Ʒһ3p</a>| <a href="http://wo93xyz.com" target="_blank">AV뾫ƷˮţӰ</a>| <a href="http://0330196.com" target="_blank">һ</a>| <a href="http://doctor5470.com" target="_blank">һ߹ۿ </a>| <a href="http://0453wcbyy.com" target="_blank">˳ɵӰ߲</a>| <a href="http://cz655.com" target="_blank">ůůƵƵ</a>| <a href="http://a8g8.com" target="_blank">Դ߹ۿ</a>| <a href="http://szclinic.com" target="_blank">Ӱɫۺ</a>| <a href="http://56ms.com" target="_blank">޸Ļ</a>| <a href="http://lyczyb.com" target="_blank">߹ۿѲ</a>| <a href="http://sxhengshan.com" target="_blank">vƬ߹ۿ</a>| <a href="http://bznys.com" target="_blank">޳˵Ӱվwww</a>| <a href="http://888xxss.com" target="_blank">ѿŮճˮ</a>| <a href="http://www-533999.com" target="_blank">޾Һ </a>| <a href="http://yeyaweiban.com" target="_blank">޾Ʒa߹ۿ</a>| <a href="http://wua72.com" target="_blank">aƬ߹ۿ</a>| <a href="http://zfzz008.com" target="_blank">ŷУ԰Ķ</a>| <a href="http://xianliwang.com" target="_blank">ĻmvƵ8</a>| <a href="http://cnpc1002.com" target="_blank">һۺ </a>| <a href="http://93qsgy.com" target="_blank">av</a>| <a href="http://whyandroid.com" target="_blank">ʹA18Ƭ</a>| <a href="http://rr433.com" target="_blank">һƵ</a>| <a href="http://zzhjnmzp.com" target="_blank">޳ߵӰ</a>| <a href="http://8hnbuk14.com" target="_blank">߹ۿվ</a>| <a href="http://eeussdd.com" target="_blank">ŷһ</a>| <a href="http://www-44334.com" target="_blank">þ޾ƷAV</a>| <a href="http://am33318.com" target="_blank">鶹Ʒѹۿ</a>| <a href="http://bohaolg.com" target="_blank">Ƶַѹۿ</a>| <a href="http://youkabaitiao.com" target="_blank">׾ƷͼƬ</a>| <a href="http://xamxx.com" target="_blank">Av߲</a>| <a href="http://tyfinland.com" target="_blank">ϼ˳߹ۿƵ</a>| <a href="http://3bmmatv.com" target="_blank">Ļ9</a>| <a href="http://51708695.com" target="_blank">ҹAVëƬþ</a>| <a href="http://c4665.com" target="_blank">պϵ</a>| <a href="http://szmazida.com" target="_blank">ڳ˾Ʒձ</a>| <a href="http://tltcn.com" target="_blank">ҹAVպAVȫ</a>| <a href="http://beijinzhongliuyiyuan.com" target="_blank">69Ƶר</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>