﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Vikings-文章分类-程序哲学</title><link>http://www.blogjava.net/vikings/category/1407.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:51:01 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:51:01 GMT</pubDate><ttl>60</ttl><item><title>李维-我的回忆和有趣的故事</title><link>http://www.blogjava.net/Vikings/articles/80317.html</link><dc:creator>Vikings</dc:creator><author>Vikings</author><pubDate>Fri, 10 Nov 2006 02:12:00 GMT</pubDate><guid>http://www.blogjava.net/Vikings/articles/80317.html</guid><wfw:comment>http://www.blogjava.net/Vikings/comments/80317.html</wfw:comment><comments>http://www.blogjava.net/Vikings/articles/80317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vikings/comments/commentRss/80317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vikings/services/trackbacks/80317.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 文章出处：台湾“深度历险”BBS论坛		                               《我的回忆和有趣的故事》　　　　　　　                    　　　　　　　                      李维（台湾）						   聲明     以下的這篇文章內容是我個人的回憶以及看法，沒有任何特別的偏見，許多的事情是根據我的記憶以及從許多人的訴說中...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vikings/articles/80317.html'>阅读全文</a><img src ="http://www.blogjava.net/Vikings/aggbug/80317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vikings/" target="_blank">Vikings</a> 2006-11-10 10:12 <a href="http://www.blogjava.net/Vikings/articles/80317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笑谈Web -- 转自J's blog</title><link>http://www.blogjava.net/Vikings/articles/19745.html</link><dc:creator>Vikings</dc:creator><author>Vikings</author><pubDate>Mon, 14 Nov 2005 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/Vikings/articles/19745.html</guid><wfw:comment>http://www.blogjava.net/Vikings/comments/19745.html</wfw:comment><comments>http://www.blogjava.net/Vikings/articles/19745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vikings/comments/commentRss/19745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vikings/services/trackbacks/19745.html</trackback:ping><description><![CDATA[<DIV class=entity>
<H2 class=diaryTitle>笑谈Web -- 转自J's blog- -</H2>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<P>
<DIV>
<P>最近看了一些帖子，是关于taglib的，大家纷纷口诛笔伐，欲除之而后快……。这场争论本身没引起我多大的兴趣，倒是勾起了我的一些回忆，要是不怕罗嗦的，就让我这个“老人家”给你讲一个故事吧。 <BR>咳咳…… </P>
<P>在很久很久以前，那时，web还是新鲜事物，dreamweaver没有被发明出来，那时的所见即所得的工具是frontpage，但是非常的不好用，所以，程序员们大多都用文本编辑器来写html，大家用netscape浏览着为数不多的网页，觉得很快乐。 <BR>然后，某天一觉醒来，cgi就横空出世了。大家纷纷啧啧称奇，你瞧，页面内容会动态变化耶，好cool哦。。。都来学习吧!!把html放在perl代码中用引号扩起来，这样你就能"动态"加入一些东西，你看，多简单呀。一阵短暂的骚动之后，大家使着cgi，又恢复了很快乐的幸福生活。 <BR>当时的delphi有一个写isapi的模块，只要在一个文本文件中使'#xxx'的标注，程序中可以做一个替换，运行时，就能看到替换过的页面，非常cool。可惜，用delphi写isapi是一件比较费脑子的事情，所以这东西似乎也没有流行多久。 <BR>后来asp就出现了。哇塞，可以直接在asp的html之间插入代码！那岂不是想怎么变化就怎么变化了么？简直是划时代。于是纷纷来学，一时之间，摩肩接踵，满大街跑的都是'asp工程师'了，可谓盛况空前呀～～。 <BR>即便是有了asp这样的神兵利器，桶子们的快乐日子也没有能持续多久。因为php马上就出现了。这个东西不仅象asp一样cool，而且它还免费，还开源，还跨平台……。开源的！想一想，可以自己写代码加进php去扩展它的功能呢。所有追求上进的web开发者都不能抗拒这样的诱惑。于是纷纷加入开发军团，而且一有功夫就跑到asp那边去踢馆闹事。。。罪过罪过。 <BR>Sun从来都是最无耻的，无耻就无耻在桶子们刚刚满足的抱着php欢天喜地的时候，它竟然推出了jsp！你想想，这东西不仅象php一样跨平台、开源、免费，而且还是编译为java的。我考，每个请求都是启动一个线程，而不是fork的，那该多快？一边搬着脚指头算性能，可怜的桶子们一边又要忙不迭的开学了。 <BR><BR>桶子在欢天喜地的庆祝jsp的诞生，可是他们并不知道，可怜的他们已经进入sun布下的最阴险的陷阱: 恐怖的爪哇丛林。江湖流传着一种关于爪哇丛林的传说:'从来没有人见过有人能活着从里面出来，丛林深处偶尔还会传来另人毛骨悚然怪叫，有人说那听起来很恐怖，有人说那听起来很兴奋'。 <BR><BR>jsp和php还有asp实际上都是一码事。无非就是'把代码塞进html中'，比起之前cgi的'把html塞进代码中'，在'写出让人更恶心的代码'上并没有太大的长进。而爪哇丛林中也有delphi精神的继承人，那时似乎是叫webmacro的，主要是名字叫得太恶心，所以一直也混得比较惨。不过据说后来它洗心革面改了个唬人的名号叫velocity，又加入了丛林第一大帮apache，混了很久，总算捞到了一点脸熟的名声。 <BR>说起apache帮，那可是名声显赫，龙蛇混杂，其中有个误人不浅的struts不得不提。那个家伙号称MVC2，其实就是'把简单的事情弄复杂'那套坑蒙拐骗的小伎俩。做一个很简单的东东，都要动用action，form，啃完一大本的taglib，还要折腾n个巨复杂无比的配置文件。唉，不知葬送了多少无知桶子的宝贵青春。那阵子，如果你见到一个面色苍白眼窝深陷的桶子，可以走上去问"struts？"，那人要是扑通一声跪下，抱住你的腿就开始痛哭流涕的，那一定就是刚到struts连锁店抽过的了。唉～～，悲惨世界呀。 <BR>apache帮据说还有一个Tapestry，在struts被搞臭之后，这个家伙又开始火了。老人家我没什么功夫来仔细看了，不过，用html加入标签，再用dom解析替换的方式，怎么着都让人想起delphi，webmacro，velocity这些影子呢。。。 <BR>咳咳…… <BR>唉～，江湖…… </P></DIV>
<P></P>
<P class=diaryFoot>- 作者： <A title=liuke onclick="window.open('/control/postMessage.b?receiverName=liuke&amp;receiver=69412','发送短消息','width=310,height=265')" href="javascript:void(0);">liuke</A> 2004年11月3日, 星期三 13:10 <BR><BR><A href="http://www.blogdriver.com/pretender/389132.html">http://www.blogdriver.com/pretender/389132.html</A></P></DIV><img src ="http://www.blogjava.net/Vikings/aggbug/19745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vikings/" target="_blank">Vikings</a> 2005-11-14 17:51 <a href="http://www.blogjava.net/Vikings/articles/19745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全世界都在IoC！</title><link>http://www.blogjava.net/Vikings/articles/19746.html</link><dc:creator>Vikings</dc:creator><author>Vikings</author><pubDate>Mon, 14 Nov 2005 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/Vikings/articles/19746.html</guid><wfw:comment>http://www.blogjava.net/Vikings/comments/19746.html</wfw:comment><comments>http://www.blogjava.net/Vikings/articles/19746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vikings/comments/commentRss/19746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vikings/services/trackbacks/19746.html</trackback:ping><description><![CDATA[<H3 class=post-title>全世界都在IoC！ </H3>
<DIV class=post-body>
<DIV>
<DIV style="CLEAR: both"></DIV>两年前用tapestry＋spring的时候，IoC还是很新奇的东西，现在有点泛滥成灾了。不过与tapestry4搭配，hivemind的确比spring要好，可惜的是hivemind与hibernate结合需要自己写interceptor，spring的transaction支持各种transaction，如JDBC、JDO、JTA等等。不过没关系，hivemind可以调用spring的bean，一个小小的BBS，可以用到如此多的opensource界顶级装备，狂晕啊。<BR><BR>现在的JAVA初学者真的是郁闷，你要是说我刚刚理解了Thinking in JAVA，还真不好找工作，谁面试不问问你struts会吗？spring用过吗？hibernate知道吗？回忆起几年前我在sh一家公司被人面试，我说jsp上学时玩过，不过现在不写了，struts会用，不过没兴趣写，tapestry还不错……被人投来不知所云的迷惘眼神，只能感叹这个世界变得太快了。<BR><BR>如果不是一个天才，那写程序是个辛苦活，学无止境，而且没有捷径。初学者们如果不修练到一定道行就开始工作，沦为蓝领工人从前是从被逼着写jsp,现在是从被逼着用spring开始的。从来就不曾领会interface的精神，IoC又从何谈起呢。视framework们如浮云，领会OO的本质，才是程序员的立足之道。C＋＋程序员似乎更容易做到一些，他们的世界比较清净，没有这么多framework，JAVA的世界太吵，太容易迷失方向了。<BR><BR>——两年没做web有感<BR><BR><A href="http://project.ashtime.com/2005/10/ioc.html">http://project.ashtime.com/2005/10/ioc.html</A></DIV></DIV><img src ="http://www.blogjava.net/Vikings/aggbug/19746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vikings/" target="_blank">Vikings</a> 2005-11-14 17:51 <a href="http://www.blogjava.net/Vikings/articles/19746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>王森 - 程序设计师真情忏悔录(修正完整版)</title><link>http://www.blogjava.net/Vikings/articles/5061.html</link><dc:creator>Vikings</dc:creator><author>Vikings</author><pubDate>Sun, 22 May 2005 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/Vikings/articles/5061.html</guid><wfw:comment>http://www.blogjava.net/Vikings/comments/5061.html</wfw:comment><comments>http://www.blogjava.net/Vikings/articles/5061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vikings/comments/commentRss/5061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vikings/services/trackbacks/5061.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 不卖鸡排也可以 - 程序设计师真情忏悔录(修正完整版)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vikings/articles/5061.html'>阅读全文</a><img src ="http://www.blogjava.net/Vikings/aggbug/5061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vikings/" target="_blank">Vikings</a> 2005-05-22 20:33 <a href="http://www.blogjava.net/Vikings/articles/5061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个程序员的一生(ZT)</title><link>http://www.blogjava.net/Vikings/articles/4011.html</link><dc:creator>Vikings</dc:creator><author>Vikings</author><pubDate>Tue, 03 May 2005 18:07:00 GMT</pubDate><guid>http://www.blogjava.net/Vikings/articles/4011.html</guid><wfw:comment>http://www.blogjava.net/Vikings/comments/4011.html</wfw:comment><comments>http://www.blogjava.net/Vikings/articles/4011.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vikings/comments/commentRss/4011.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vikings/services/trackbacks/4011.html</trackback:ping><description><![CDATA[<P class=content style="MARGIN: 4px 2px 0px">google了一下<BR>已经被广泛ZT了:)<BR><BR>一个程序员的一生 <BR>---------------------------------------------------- <BR><BR>作者:佚名 <BR><BR>我在程序员的时候，我一开始追逐这个API怎么用，数据库SQL怎么写更优化，Dcom技术的细节，然后我发现我写出来的产品为了符合客户需求必须要大量修改，但是我的代码却粘在了一起， <BR>第一个感觉就是一个函数太长，一看就头痛，而且一个函数干了好多事。这些事本来可以一段一段的，每段写上注释，然后有意义命名，自己管理错误和内存，然后把这些函数连在一起， <BR>然后我作了这些： <BR><BR>1、小函数； <BR>2、写上注释； <BR>3、有意义命名； <BR>4、自己管理错误和内存； <BR>5、流程函数； <BR><BR>最后我发现我这些函数可以组合成各种各样的流程，我的程序终于好修改了，我很高兴。但是我又发现，我的界面和我的流程混在了一起，另一个程序也想使用我的函数，但是我的函数中有对我的特定界面关联的代码，我不能连界面一起都给他，因为他有他的界面，但作的事我已经实现了，于是我把功能函数和界面控制分开了 <BR><BR>我就作了这些，我的代码很容易理解，即使新员工，只要他看完业务手册和数据结构，他就明白我代码为什么这么写。而且我的函数由于都是自己负责输入参数和输出参数的校验，有明确和统一的报错信息，所以很容易找到错误进行BUG修复。由于我的程序都是小函数组成的，都有明确报错，所以错误很容易找到，经过测试组的专业测试后，我的代码很稳定，即使出错，也扩散不大，都是小bug，对系统整体没有大影响 <BR><BR>虽然我在前进的过程中也经历过困惑，一心钻在OOP和设计模式中。但是有可能是功力不够，不得其解。看着Delphi的源码,应用了很多的OOP和模式，并且他的类库多年发展也没有多大的改变，所以深信OO和模式的威力，而对自己的能力很灰心。但是代码还得继续写，还想进一步提高，于是才摸索出现在的一套做法。既实用又简单应用，每个人都能办到。 <BR><BR>我认为我的代码方法已经可以满足现在的产品制造，并且在软件性能调整上也积累了一些珍贵的经验。我发现性能最容易提高也效果最明显的就是用SQL profilter，优化SQL。优化代码，因为涉及到业务，很不好着手。优化数据库结构，由于代码都是构建在特定数据表之上，所以这是最难改的地方，但是我高兴了没多久，我又遇到问题了。因为我的程序即使再好改，但是客户的需求真是千奇百怪，我每天在接听用户的电话，并且修改用户千奇百怪的问题。我很烦。于是我作了实施员。我想真正看看客户到底怎么回事。于是我理解了很多。我明白了很多的事情不是技术和软件所能解决的，而是现实环境的弊病。但是这个弊病还不是一个工程就能解决的，这是一个复杂的网。所以这些问题我就说服用户不要用软件来处理，因为软件是死的，而人的做法是灵活的。而且我发现用户虽然提了很多需求，但是有的需求他一个月用不了一次，但是修改起来却不容易。有的需求修改完，在实际应用中却发现不可行，那个需求只是客户想解决过去的问题而想的一个办法根本没有经过实际的校验。有的需求修改来修改去都是表面问题，在实际应用中才发现重点问题没有提需求所以上线又搁下了，我作了总结： <BR><BR>1、软件擅长大数据量计算和查询，还有数据联网共享，如果需求不能发挥软件特点，就不让软件实现。这样我少修改了一些； <BR>2、有的需求都是表面需求，修改了也用处不大，反而耽误了重点需求的提出和修改，所以告诉用户只修改核心功能。但是用户提了很多需求，不修改完不上线。后来发现，由于他们没有深刻理解我们系统的整体思想，所以没有上线实际用，根本不知道新改的功能是否好用。用户只是脱离了整体，单独思考想怎么就怎么，没上线根本他不知道后果，怎么说也不行，就得让他看见教训他才反悔，但是已经修改了。往往出现这样的情况。最后得出一个结论：一次只提三个需求，并且用书面提出，免的说了不算算了不说。核心功能的需求修改可以满足80％的日常使用就上线。这样我少修改了很多； <BR>3、并且我在实际做工程中，积累了大量的经验，写成FAQ，各种成功案例，让用户在没有提需求之前先看看自己到底有多少老软件实在不能解决而才买新软件帮助的事。新软件就是解决你过去解决不了的事。如果你没有解决不了的事，提什么需求； <BR><BR>我的产品终于可以很快完成上线，所以可以大规模推广市场了，但是我们的产品制造又出问题了。因为客户越来越多，客户的需求越来越多。我们需要开发更多的系统，但是我们的时间有限，我们的人手有限，而且我们的人手大多是新手。怎么办。我们遇到了灾难。我们的代码质量因人而异。我们的版本管理混乱。我们的文档没有人编写，大家都被分配到用户处去上线。怎么准备数据字典，怎么切换系统，怎么记录客户需求，怎么管理系统，怎么修改代码，我们没有任何记录。现场不能离开程序员一步，一离开用户出事了就不知怎么办，没有任何可查的资料。于是我又做了项目管理，我们缺少很多规范。事有千万，先从紧处来。写文档费时间，就开会给大家讲做事的经验。实施和代码修改需要什么必要规范就制定什么规范。在这期间最容易犯的错就是中央集权，什么事都必须自己做主。下属不管大事小事都请示你。我被搞的什么都干不了，都成了救火队员。我的团队陷入了混乱之中，因为我烦乱之中作了很多饮鸩止渴的决定。我于是又犯了一个错误，我说你们能决定的事尽量自己决定，不要问我，我权利下放。结果是：各自作各自的事，互相不通知。有的事没人管，有的事多人修改，各有一套。 <BR><BR>我终于明白了，我作了以下总结： <BR>1、项目经理是找到得力的人，指导他们做事的方向。如果下属不知如何作时，及时提供给下属做事方法； <BR>2、制定规范，其实也就是做事方法； <BR>3、制定计划，分配人力去作。检查结果； <BR>4、有紧急事务立刻做出果断解决，继续前进； <BR><BR>我的团队终于平静了下来，但是大家都很疲惫。大家干的很累，但是由于实施和修改消耗了大量的钱，我们没有赚钱，大家什么都没有得到。团队很灰心，也很失望。我下了计划，我自己都很灰心，大家认为再努力也不会再有结果，所以拖拖拉拉，进度和成本已成不可再提的事情。人，缺少了精气神，就什么都没有了。我们就是缺少了这些。我就开始重新建立团队的精神。我发现有人为了跳槽开始学习新的技术，而这种技术是公司现有产品不需要的，但是他们却在上班时间作。我先从此下手。我讲了技术的方向，让他们认清他们现在所学将会很快淘汰。我又讲了现在市场的实况，让他们认清外面公司也不好过。我还讲了我们所从事的行业多有潜力，我们公司将有新的举措。人心又开始一点一点收回了。 <BR><BR>但是我们仍然需要完成那些未收尾的工作，仍然需要去奔赴新的客户市场。虽然员工很疲惫，虽然我们刚从飘摇中过来，但是我们不能止步，因为我们为盈利而存在，我们别无选择。我能够将代码写的很好，性能很高，产品制造很有计划和成本控制，团队很有战斗力。但是我发现了一个问题，我们的产品市场不再扩大了。市场份额大规模开拓已很艰难，因为新产品的新鲜感已经过去了。我们在动荡的日子作的项目给公司带来了阴影，公司一直没有大赚钱，投资方很生气。我明白了。公司毕竟是为利润而存在的。公司不是为产品制造而存在，不是为了解决别人的问题而存在。赚钱是第一位。不赚钱即使你在媒体上作的很风光也一文不值。有人靠手赚钱，有人靠嘴赚钱，有人靠脑子赚钱，有人靠身体赚钱，不管黑猫白猫，只要抓住老鼠就是好猫。成在营销，败在管理。我开始关注资本运作，联盟伙伴建设，市场营销，客户关系营运。 <BR><BR>我知道，生活才刚刚开始。 </P><img src ="http://www.blogjava.net/Vikings/aggbug/4011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vikings/" target="_blank">Vikings</a> 2005-05-04 02:07 <a href="http://www.blogjava.net/Vikings/articles/4011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>