2007年10月21日星期日

Ruby和JRuby语言错误信息说明






  • 调用Ruby语言和JRuby语言软件包出现的问题(RubyGems配置问题
    错误信息:
    LoadError: no such file to load
    解决办法:
    * 在文件层面中自己增加一行下面的代码

    require 'rubygems'

    * 在irb工具和jirb工具中,或者在使用命令行irb或者jirb中调入rubygems,命令如下;或者进入了irb工具以后输入上面的命令,再调用自己的Ruby语言程序。
    Ruby语言运行环境

    irb -r rubygems

    JRuby语言运行环境

    jirb -r rubygems

    * 在运行环境基础上解决办法
    Ruby语言运行环境设置环境变量

    SET RUBYOPT=rubygems

    JRuby语言运行环境设置环境变量

    SET JRUBY_OPTS=-rubygems

  • 执行JRuby语言程序错误
    错误信息:
    输入行太长。
    此时不应有 :gotCP

    解决办法:
    关闭终端重新启动终端就可以了,这个错误可能是JRuby语言运行环境的问题。






2007年10月17日星期三

JRuby Swing中显示中文


转换编码


我们需要require 'iconv' 库, 然后执行


Iconv.conv("utf8","GBK","....") #把字符由GBK转换为UTF8


当源字符集中含有非法编码的时候,我们需要告诉iconv忽略, 否则iconv会报错停止


Iconv.conv("utf8//IGNORE","GBK//IGNORE","....")


磁盘整理软件


  1、Vopt 5.x for Windows


  2、Norton Speed Disk 2001


  3、Dsikeeper 6.0 for Windows


  4、O&O Defrag for Windows


  5、Perfect Disk 2000


Vi Quick Reference


vi

Using MySQL in Batch Mode


You can also run mysql in batch mode. To do this, put the commands you want to


In the previous sections, you used mysql interactively to enter queries and view the results. You can also run mysql in batch mode. To do this, put the commands you want to run in a file, then tell mysql to read its input from the file:



shell> mysql < batch-file

If you are running mysql under Windows and have some special characters in the file that cause problems, you can do this:



C:\> mysql -e "source batch-file"

If you need to specify connection parameters on the command line, the command might look like this:



shell> mysql -h host -u user -p < batch-file
Enter password: ********

When you use mysql this way, you are creating a script file, then executing the script.


If you want the script to continue even if some of the statements in it produce errors, you should use the --force command-line option.


The default output format is different (more concise) when you run mysql in batch mode than when you use it interactively. For example, the output of SELECT DISTINCT species FROM pet looks like this when mysql is run interactively:



+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+

In batch mode, the output looks like this instead:



species
bird
cat
dog
hamster
snake

If you want to get the interactive output format in batch mode, use mysql -t. To echo to the output the commands that are executed, use mysql -vvv.


You can also use scripts from the mysql prompt by using the source or \. command:



mysql> source filename;
mysql> \. filename

什么是鲶鱼效应?


据说,欧洲人嗜好沙丁鱼,但由于沙丁鱼主要产自非洲海域,活鱼很难回欧洲。这个问题困扰了欧洲人几十年。在一次运输中,由于工人的一个偶然失误,沙丁鱼中混进了一条鲶鱼。


细心的鱼老板发现,不爱动的沙丁鱼为避免被鲶鱼吞食,就不停地奔命逃亡。生命在于运动,危机迫使它们运动。尽管有个别沙丁鱼葬身鲶腹,但却得到了绝大多数沙丁鱼很好活下来的最佳效果。此后,每次运输沙丁鱼,他们都在水槽中放进一条鲶鱼,于是整个鱼槽都被"搞活"了。这就是"鲶鱼效应"。


Solaris's Open Source


Q: v240装好了Solaris 10,使用JDS用Xmanager远程登陆,进入后鼠标正常。但键盘不能输入。什么原因?

A: 需要安装两个patch,编号叫做119412-07和119542-06。


Soalris 10的补丁现在确实是收费的了!
Solaris 10系统免费,服务(包括补丁)收费,Sun的政策!


战争


没人愿意战争,但打起来我要赢。


--果尔达·梅厄


为何房价如此高,肉价涨得这么快

  让我来告诉大家为什么房价这么高,肉价会涨得这么厉害 本文以最浅显得道理阐述经济的原理,进而阐述经济的真相。不会有任何所谓的学 术妓
女们常用来欺骗人民的深奥的学术理论,还事实以清白,真相只有一个,让我 们擦亮眼睛,洞观今天发生的一切。
我不是经济学家,但我比经济学诚实,本文在以下几方面阐述中国经济的真相。
  
  1、什么是经济发展?
  2、什么是对外贸易?
  3、什么是通货膨胀?
  4、房价能绑架中国经济吗?
  5、房价和通货膨胀有关系吗?
  6、房价高涨的原动力是什么?
  7、房价一直涨下去,开发商会笑还是会哭?什么情况下会笑?什么情况下 会哭?
  8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的
  9、在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线   
  
  
  1、 什么是经济发展?
  
  简单的讲经济发展就是有钱,但钱从何来?钱只能印出来。那么到底是什 么使印钞机不停的运转?
  
 
 假设一个岛上有1000口人,与世隔绝,人与人之间交换物品过活,但有时
候你手里用来交换的东西不一定就是对方想要的,怎么办?于是人们就用都喜欢的
金银作为交换的东西,于是交换方便了。但金银要磨损,携带也不方便,当交换活
动频繁时,发现这个东西太繁琐,限制了交换活动,于是为了解决这个问题,想了
一个办法,就是由岛上的管理者发行一种符号,用它来代替金银,于是钞票出现了 。
  
  刚开始这种钞票可以随时得兑换金银。大家都
很放心,因为钞票就是金银 。可是岛上金银的产量太小,当人们的交换活动更加频繁时,钞票不够用了,只能
暂停交换。暂停交换的后果就是大家不生产别人想要的东西了,因为虽然别人用, 但交换不出去,套用现在的话说就是经济发展减速了。
  
  于是大家想了一个办法,成立一家钱庄,这个钱庄是大家的,由钱庄来发 行钞票,印出的钞票借给想用钱的人,然后这个人有钱了再还给钱庄。于是银行就 出现了。
  
  银行的出现,能保证交换活动更持续的进行,大家都拼命的生产,岛上的 东西越来越多,银行根据产品的生产数量,不停的印制钞票,以保证交换能更深入 的进行。
  
  后来人们的交换活动更频繁了,一家钱庄太少了,于是出现了很多钱庄, 总要有个管钱庄的吧,于是指定一家钱庄管理其他钱庄,并且钞票只能由这家钱庄 印刷,然后通过其他钱庄借给用钱的人,中央银行就这么也出现了。   
  
  2、什么是对外贸易?
  
 
 有一天岛上的人发明了船,于是就到处划船跑,发现了另一个岛屿,那上 面也有人,也有钞票,也像自己岛上这么活动。但自己岛上生产的东西多,那个岛
上生产的东西少,1元钱在自己的岛上能买1斤大米,那个岛上的一元钱只能买半斤
大米,于是另外岛上的钱来这个岛上买东西时只能2元换1元才行。于是汇率出现了
。算好汇率后,他们开始互相买卖东西到对方岛上,这就是对外贸易。对外贸易丰 富了人们的生活生产需要,使交换活动到了一个空前的高潮。
  
  
  
  3、什么是通货膨胀?
  
 
 由于岛上生产的产品太多了,以至于没法准确估计到底该发行多少钞票, 发行多了的时候,因为没有那么多产品可买,产品就开始涨价,发行少了呢就开始
降价,为了保证价格稳定,央行要求各钱庄要把一部分钱放在央行里面用来调节产 品的价格,根据价格情况多放和少放。这就是存款准备金率。
  
 
 可是有一部分聪明人开始怎么才能把钱弄到自己手上,他在海边捡了一颗
石子,说这个石子值100万快钱,把它卖给了一个人,这个人觉得整个岛上的钱加一
起也没有100万啊,怎么办,于是向钱庄借,钱庄也没有这么多钱,于是把印钞机打 开,印了这100万,借给了他买了这个石子。
  
 
 然后这个人开始卖这个石子,100万卖给了第二个人,由于第一个卖石子的
人把钱花了,所以岛上的钱多了,所以这一百万可以筹集到,多买些产品就有了。
但当把这个石子以200万转让的时候,钱庄只能又印了100万钞票,就这样钞票越印
越多,可是当这个石子不停的流动转让时,大家并不觉得岛上的钱多,产品价格还
是原来的那样。可是当这个石子不流通或流通的慢时,大家觉得钱多了,可是如果 当持有石子的人把它扔到大海里,那就等于岛上凭空多出N多个100
万来,怎么办, 央行最害怕的就是这颗石子没了。它没了岛上产品的价格就会飞涨,就会通货膨胀 。那么持有石子的人就绑架了岛上的经济。   
  
  
  
  4、房价能绑架中国经济吗?
  
  中国的房地产已经使中国央行发行了太多的人民币,如果房价下降,等于 把那颗石子投进了海里,那么多印出来的钱会使中国产品价格飞涨,会发生严重的 通货膨胀。
  
 
 看似房价与石子毫无相干,可是他们的属性是一样的,就是价格和价值严 重的背离。实际上房地产的崩盘受害最大的并不是中国的商业银行,而是整个中国
经济体系。为什么go-vern-ment迟迟没有把房价降下来,不是降不下来,如果真想降房价,
只需要一道政令,房地产价格会在一夜之间土崩瓦解。可是后果谁能承担,严重通 货膨胀谁来负责?
  
  房地产业已经绑架了中国的经济,是无可置疑的,是客观实在的,没有人 能改变。
  
  不管谁是总理,廉洁也好,贪污也好,都希望社会和谐,可这是一个棘手 的问题。
  
  
  
  5、房价和通货膨胀有关系吗?
  
  可更棘手的问题还不仅仅在这里。如果降房价,面对的是马上的通货膨胀 ,可不降房价,那么面对的就是更严重的通货膨胀,何去何从?
  
 
 所以最可靠的办法就是稳定房价,然后在社会产品增加时,减少货币的投 放量,加上其他政策如加息、增加商业银行准备金率、缩小信贷规模等辅助手段,
来使中国经济软着陆,这是最好的办法,我们看到的一切政令也是这个逻辑。不信
的话,可以查阅一下近年来go-vern-ment发布的一系列调控房地产业的措施。
  
  可是为什么房价不稳定而且更加的疯长
呢?难道是KFS与go-vern-ment在博弈吗?告 诉你在中国没有人能和party叫板,几个肚子大点的KFS 是没有这个实力的。实际上是
幕后的另一只黑手在和中国go-vern-ment博弈,这支黑手就是外资,以美国为代表的帝国主 义攫取中国人民血汗的黑手。   
  
  
  
  6、房价高涨的原动力是什么?
  
 
 使房价上涨的动力很多,房价上涨对其有利的人就是动力之一,比如:为
了GDP和个人利益的地方go-vern-ment、为了赚钱的KFS、炒房族、以至于买了房的所谓“房
奴”都是是房价上涨的动力,可是最大的原动力不是这些,是外资,是美国的以攫 取超额利润的各大财团。
  
  KFS作为商人,为了
赚取高额利润不是什么伤天害理的事情,可是各行各 业都有商人,难道想赚就有吗?那除非是神话。房地产业的开发商也一样,不是他
们想赚多少就有多少的。根据价值规律,当商品的价格和价值严重背离时,会有一
种趋向正常价格回归的力量钳制价格的上涨,可是在中国的房地产业,这种规律似
乎不起作用,一个重要的原因是忽视了一个参考范围的原因,如果以中国经济本身
而言确实打破了这个规律,可是目前的情况是有一股力量在维持着房地产业的价格 ,即托市,那么谁在托市呢?
  
  谁能在房地产业失控能得到巨额利润的人就是托市的人。
  
 
 讨论这个问题前,现看一下中国的外汇储备情况。中国的外汇储备在近几 年迅速由1、2千亿突破万亿,并且还在迅速的增长,难道是中国人民奋发图强,挣
来的吗?这个不需要证明,看中国的GDP增幅就知道,外汇储备的增长速度明显大于
GDP的增幅。显然不是挣来的,那么除了挣来的一部分,那么就是所谓的 “国际热
钱”的涌入,而国际热钱的涌入的目的只有一个,就是要取得高额的回报。
  
  国际热钱进入中国市场后,首先要兑换成人民币,那么一
下子哪有这么多 人民币呢?只有一个办法就是让印钞机没日没夜的工作,然后这笔钱用来托住已是
烫手山芋的房地产市场,就是拼命的投资房地产业,当房地产价格因背离价值而向
下波动时,通过托市再把它抬高,反复如此,给人的表象就是房产价格决没有偏离 价值。导致房价越涨越高。
  
  而KFS呢,他们一到房子将要卖不出去的时候,就有人出高价买下来,他们 怎么会降价,如果没有这部分资金在运作,别说是KFS联盟,就是全国只有一个KFS ,价格也会降下来,没有人买了,难道等房子发霉吗?
  
  那么外资持有这么多高价房产做什么?不怕砸到手里吗?
  
  不怕!为什么呢?在这个资本运作的过程中,有一个冤大头在最底下接着 呢,是谁呢?就是中国的商业银行,由于火爆的房地产市场,一流的流通性,近年 来没有看到任何萎缩的迹象,放了贷款就盈利,为什么不贷款呢?没有理由不放贷 款。
  
  加之中国老百姓买房的心情,外资可以轻易的把高价房转嫁到中国的银行 和消费者身上,连炒房的农民都能赚到一杯羹,职业的外资会赔钱吗?
  
  那么房价一直涨下去,会怎样呢?请看下一节:“7、房价一直涨下去,开 发商会笑还是会哭?什么情况下会笑?什么情况下会哭?”     
  
  
  
  7、房价一直涨下去,开发商会笑还是会哭?什么情况下会笑?什么情况下 会哭?
  
  在中国go-vern-ment近几年来密集的几十道金牌的调控下,房价还是如脱了缰的野 马一样狂奔不止。暂且不论何时能停止上涨的势头,毕竟房价在目前还是上涨的, 所以我们就看看房价上涨不止会带来什么。
  
  首先:由于GDP上涨,中国go-vern-ment为了维持上文说的“保持产品交换的继续” 要不断地投放人民币,即开动印钞机。只要房地产这个石子还没有投入到大海里去 ,还有一定的流通性,那么就不会有通货膨胀的发生。
  
  其次:开发商会在这个过程中也赚取巨大的利润。
  
  再次:能看到的是,炒房族会赚钱、所谓的买房的“房奴”会增值。
  
 
 都赚钱!可是在这个过程中到底谁亏了呢?钱从哪里来呢?如果你是有炒 股的经验就会知道,如果投资价格和价值背离的商品,你赚的钱就是别人赔的钱,
那么套用到房地产上,就是买房自住的人,现在看似增值,那是镜中月、水中花,
你不变现就不是你的。再有就是当价格完全回归真实价值的时候,有时甚至会到真 实价值一下,被高价房套住的投资者。还有一个就是开发商!
  
 
 为什么说开发商也有赔钱呢?大家知道商人的本性是赚钱,赚取利润。如 果一个商人投机一次就永远都不做这个生意了,他是赚钱了,可他不是商人,这种
商业行为没有意义。由于商人的本性,所以赚来的钱会继续扩大再生产,在能赚钱
的领域不断的加大投资。这个道理从生活中就可看出来,越是做大生意的人总喊没 钱,因为要更大的流动资金来维持其扩大再生产的需要。
  
 
 所以一旦房价回归真实的价值之时,就是有一大批开发商崩溃之日。这个 是不以任何人的意志和任何行为为转移的。如果现在有开发商逃离房地产业的角斗
场,那么跑得慢的就是最后的输家。如果都不跑,就像击鼓传花一样,最后拿到接
力棒的就是接盘者。有句话叫:“出来混迟早是要还的”。也许只不过是方式不一 样,看谁的运气好而已。
  
  可是现在却没有任何的KFS赔钱的迹象,有的是KFS不断的赚钱,老百姓送 钱都来不及。只是因为目前房价还在上涨,房产还在不断的流动。
  
  一个巨大的问题来了,这样不断上涨的房价何时是个头啊,请看下一节: “8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的”
  
  
  
  8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的
  
 
 Mao.ZD说过:“帝国主义没有睡大觉,而是天天在蠢蠢欲动,在图谋不轨,
想达到他们的罪恶目的。诚然他们的气焰的确没有以前那么嚣张,但他们确实在活动
着。”是不是冷战结束就代表着人类的和平得以实现呢?“一句上帝面前人人平等
”就能掩盖帝国主义噬血的本质吗?人人平等的理念是对的,但它只不过是帝国主 义用来欺骗人们的伎俩罢了,说到和做到永远是两码事。
  
  国际财团通过国际热钱涌入中国,使人民币加大发行量,然后通过房地产 炒作,把中国的国内价格水平无限制的提高,GDP的增长又一次使人民币的发行量被 迫提高。国际财团心黑手狠,双管齐下,目的就是使中国经济热到烫手,热到让每 个中国人为之疯狂。
  
  我们暂不去关心这个过程,我们放眼未来,看看这一过程的结果是什么样 呢?换句话说财团的目的是什么呢?
  
 
 很明显,中国人最不愿意看到的事情,就是财团们最乐见的结果。先做个 假设,比如国际热钱在投资的中国房地产领域里上演最后的疯狂后,然后把房产成
功解套全部变现,如果此时人民币兑美元的汇率达到美国预期最高时,汇率是热钱
逃离时需要相乘的那个倍数,会发生什么谁都能想到,所有热钱会一夜之间全部兑
换美元逃离。财团们会赚得沟满壕平,中国市场上除了钱就是钱,能遮住天的大把 人民币将成为中国人民的噩梦。
  
  这是中国人最不
愿意看到的事情,也是财团最乐见的结果。近期美国不断
的通过政治、贸易等手段逼迫人民币升值,而中国go-vern-ment迟迟不升值或小范围的升值
,远远没有达到美国go-vern-ment的预期,这是在出口处的中美之间的博弈。美国逼迫人民 币升值的狼子野心昭然若揭!
  
  顺便提一句,如果真的这个升值预期达到了,中国楼市将重演日本上世纪 90年代崩盘的历史。只是那时中国经济也会像日本一样进入一个连续低迷不振的不 归路。
  
  在这种攸关民族生存的问题上,go-vern-ment会坐视不管吗?就算是退一步来讲, 一个完全不负责任的go-vern-ment遇到这种情况,因为这个资本运作同时也极大侵犯了go-vern-ment 的利益,也会拼命反搏的。
  
  那么中国go-vern-ment会以什么样的方式来化解这一“经济危机”呢?请看下一节 :“在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线”。
  
  
  
  9、在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线
  
  我一直相信:物极必反,中庸,是老祖宗留给后人解决棘手问题的杀手锏 !
  
  既然是中国房地产“绑架”了中国的经济,那么我们就从“绑架”说起。 何为“绑架”,应该是相对弱的一方,拿着相对强的一方的“要害”,使相对强的 一方即便有能力对付弱的一方,但碍于投鼠忌器,无力可施。
  
 
 我们先来看看绑架双方的阵容和各自手上的筹码。房地产业的主体是KFS,
所以KFS算一方,它绑架的要害是中国经济,那中国经济是谁的要害呢?是中国人民
的要害,代表中国人民的,目前只能是中国go-vern-ment。中国go-vern-ment算一方。外资呢?它是
煽风点火者,划到KFS一方。中国go-vern-ment一方有公权力,可以通过税收、财政、经济政
策、行政手段对KFS阵营施力,KFS阵营通过源源不断的后备资金来绑架中国经济, 且不断的提高赎金。
  
  问题已经摆在这里,
怎么办呢?冲上去一枪击毙,那歹徒非撕票不可,太 极端不可行。所以有为go-vern-ment开出药方,只要实现了某某一条既可降低房价的主意,
就犹如这一枪击毙一样是不可行的。我们想象如何解救绑架事件的,首先要稳定住
对方的情绪,再一步步地靠近,但这种靠近虽会引起歹徒的敌意,但不会导致他撕
票,然后再进一步稳定情绪,再靠近,然后条件成熟时,再稳准狠,即保证人质的 安全,又要保证歹徒一举拿下。这才是真正的营救。
  
  所以中庸才是解决棘手问题的杀手锏。极端、盲目、冒进是要不得的。
  
  针对如何解决中国房地产市场的绑架问题,就要围绕问题的关键部分一步 步地施加反作用力,然后一举成功,才是正道。
  
 
 第一个关键的部分就是汇率,中国go-vern-ment会严把汇率关,我们可以预期的是
,人民币兑灭元的汇率决不会过快升值,但会小幅升值,就是要稳定对方的情绪,
如果一点不升,对方会狗急跳墙,如果升的过快,是给自己掘墓,所以为什么中国 汇率升幅总是犹抱琵琶半遮面,看看美国go-vern-
ment的态度跟一个绑匪是多么的 贴切,我要一瓶果汁,为什么拿来半瓶水。可又说不出什么来,毕竟还能暂时解渴 。
  
  第二个
关键是限制资产流动性,既然房地产能绑架中国经济,说明它举足 轻重,限制房产的流通性,就可以限制资产的流动性,注意这里是两个概念,“资
产流动性”和“房产流通性”。两者完全不同,但又息息相关。房产流通性减弱,
资产流动性减弱,那么需要印刷的人民币就减少。就像那个石子,不流通马上通胀
,不涨价流通没问题,可是行不通,外资也不同意。既然是不断的上涨价格,只能
一步步地限制房产流通,只要房产流通性少一点,通胀就会显现一点,然后再通过
上调准备金率和加息等柔性政策来调整一点,用柳叶棉丝掌来化解泰森的一记重拳
,以绵柔克强刚、化千钧于无形,这就是中国go-vern-ment的策略(这好像是中国人最擅长
的事情)。我们从官方媒体就能看到相关的消息,楼市签约率在下降,即流通性在
下降,然后物价开始有所涨幅,如猪肉等副食产品,但央行马上上调准备金率和加
息,来稳定物价。不知各位看官是否也看出些端倪。可预期的是,到完全化解危机
之前,会不断地加息和调高准备金率,同时房产流通性会越来越弱,这个预言是否
准确可在以后的央行政策上验证。等完全消除了由于经济过热导致的通货膨胀预期 ,那么就是房地产价格回归真实价值之时。
  
  不管你看到没看到,这已是最后的疯狂,我们从两方面来分析:
  
 
 第一,如果这场博弈以外资胜利而告终,那么中国经济将步日本90年代持 续下滑的深渊,由于外资撤走,房市赖以生存的支柱坍塌,房价会一落千丈,可到
时候不管是KFS还是老百姓都将承受经济下滑之苦,持有的货币迅速贬值,即便房价
落下,也不一定买的起。这是中国go-vern-ment和中国人民不可接受的,也是无法接受的。
  
  第二,如果外资以失败而告
终,即在汇率上把住出口,让房价回归真实价 值,把外资同样套在中国,这才是胜利的前提。那么以美国财团为首的帝国主义噬
血者必将疯狂报复,会在投资、出口等各方面对中国施加压力。我们今天人民币升
值没有达到美国预期,已经导致中国出口到美国的产品受打压,进而引起了众多的
贸易摩擦,由此可见一斑。我们知道,经济发展的三套马车是,投资、出口和消费
,在投资、出口领域遭到报复会影响中国经济的发展,但我相信不会影响我们的发
展速度,别忘了还有一套马车是“消费”,房价下降后,如果你是爱国者,请现在
保护好你的钱包,到时千万别羞羞答答,要果断地出手买房,中国经济会在消费领 域异军突起,继续独占世界经济引擎的鳌头。

Powered by ScribeFire.

注重实效的程序员之快速参考指南








1.关心你的技艺
Care About Your Craft

如果你不在湖能否漂亮的开发出软件,你又为何要耗费生命去开发软件呢?


2.思考!你的工作
Think! About Your Work

关掉自动驾驶仪,接管操作。不断地批评和评估你的工作。


3.提供各种选择,不要找蹩脚的借口
Provide Options, Don't Make Lame Excuses

要提供各种选择,而不是找借口。不要说事情做不到;说明能够做什么。


4.不要容忍破窗户
Don't Live with Broken Windows

当你看到糟糕的设计、错误的决策和糟糕的代码时,修正它们。


5.做变化的催化剂
Be a Catalyst for Change

你不能强迫人们改变。相反,要向他们展示未来可能会怎样,并帮助他们参与对未来的创造。


6.记住大图景
Remember the Big Picture

不要太过专注于细节,以至忘了查看你周围正在发生什么。


7.使质量成为需求问题
Make Quality a Requirements lssue

让你的用户参与确定项目真正的质量需求。


8.定期为你的知识资产投资
Invest Regularly in Your Knowledge Portfolio

让学习成为习惯。


9.批判地分析你读到的和听到的
Critically Analyze What You Read and Hear

不要被供应商、媒体炒作、或教条左右。要依照你自己的看法和你的项目的情况去对信息进行
分析。


10.你说什么和你怎么说同样重要
It's both What You Say and the Way You Say it

如果你不能有效地向他人传达你的了不起的想法,这些想法就毫无用处。


11.不要重复你自己
DRY - Don't Repeat Yourself

系统中的每一项知识都必须具有单一、无歧义、权威的表示。


12.让复用变得容易
Make It Easy to Reuse

如果复用很容易,人们就会去复用。创造一个支持复用的环境。


13.消除无关事物之间的影响
Eliminate Effects Between Unrelated Things

设计自足、独立、并具有单一、良好定义的目的的组件。


14.不存在最终决策
There Are No Final Decisions

没有决策是浇铸在石头上的。相反,要把每项决策都视为是写在沙滩上的,并为变化做好
计划。


15.用曳光弹找到目标
Use Tracer Bullets to Find the Target

曳光弹能通过试验各种事物并检查它们离目标有多远来让你追踪目标。


16.为了学习而制作原型
Prototype to Learn

原型制作是一种学习经验。其价值并不在于所产生的代码,而在于所学到的经验教训。


17.靠近问题领域编程
Program Close to the Problem domain

用你的用户的语言进行设计和编码。


18.估算,以避免发生意外
Estimate to Avoid Surprises
在着手之前先进行估算。你将提前发现潜在的问题。


19.通过代码对进度表进行迭代
Iterate the Schedule with the Code
用你在进行实现时获得的经验提炼项目的时间标度。


20.用纯文本保存知识
Keep Knowledge in Plain Text

纯文本不会过时。它能够帮助你有效利用你的工作。并简化掉时和测试。


21.利用命令shell的力量
Use the Power of Command Shells

当图形用户界面无能为力时使用shell。


22.用好一种编辑器
Use a Single Editor Well

编辑器应该是你的手的延伸;确保你的编辑器是可配置、科扩展和可编程的。


23.总是使用源码控制
Always Use Source Code Control

源码控制是你的工作的时间机器--你能够回到过去。


24.要修正问题,而不是发出指责
Fix the Problem, Not the Blame

bug是你的过错还是别人的过错,并不是真的很有关系--它仍然是你的问题,它仍然需要
修正。


25.调试时不要恐慌
Don't Panic When Debuging

做一次深呼吸,思考什么可能是bug的原因。


26."Select"没有问题
"Select" Isn't Broken

在OS或编译器、甚或是第三方产品或库中很少发现bug。bug很可能在应用中。


27.不要假定,要证明
Don't Assume It - Prove It

在实际环境中--使用真正的数据和辩解条件--证明你的假定。


28.学习一种文本操纵语言
Learn a Text Manipulation Language

你用每天的很大一部分时间处理文本,为什么不让计算机替你完成部分工作呢?


29.编写能编写代码的代码
Write Code That Writes Code

代码生成器能提高你的生产率,并有助于避免重复。


30.你不可能写出完美的软件
You Can't Write Perfect Software

软件不可能完美。保护你的代码和用户,使它(他)们免于能够预见的错误。


31.通过合约进行设计
Design with Contracts

使用合约建立文档,并检验代码所做的事情正好是它声明要做的。


32.早崩溃
Crash Early

死程序造成的危害通常比有问题的程序要小得多。


33.用断言避免不可能发生的事情
Use Assertions to Prevent the Impossible

断言验证你的各种假定。在一个不确定的世界里,用断言保护你的代码。


34.将异常用于异常的问题
Use Exceptinos for Exceptional Problems

异常可能会遭受经典的意大利面条式代码的所有可读性和可维护性问题的折磨。将异常保留给
异常的事物。


35.要有始有终
Finish What You Start

只要可能,分配某资源的例程或对象也应该负责解除其分配。


36.使模块之间的耦合减至最少
Minimize Coupling Between Modules

通过编写"羞怯的"代码并应用得墨忒耳法则来避免耦合。


37.要配置,不要集成
Configure, Don't Integrate

要将应用的各种技术选择实现为配置选项,而不是通过集成或工程方法实现。


38.将抽象放进代码,细节放进元数据
Put Abstractions in Code, Details in Metadata

为一般情况编程,将细节放在被编译的代码库之外。


39.分析工作流,以改善并发性
Analyze Workflow to Imporve Concurrency

利用你的用户的工作流中的并发性。


40.用服务进行设计
Design Using Services

根据服务--独立的、在良好定义、一致的接口之后的兵法对象--进行设计。


41.总是为并发进行设计
Always Design for Concurrency
容许并发,你将会设计出更整洁、具有更少假定的接口。


42.使视图与模型分离
Separate Views from Models
要根据模型和视图设计你的应用,从而以低廉的代码获取灵活性。


43.用黑板协调工作流
Use Blackboards to Coordinate Workflow
用黑板协调完全不同的事实和因素,同时又使各参与方保持独立和隔离。


44.不要靠巧合编程
Don't Program by Coincidence
只依靠可靠的事物。注意偶发的复杂性,不要把幸运的巧合与有目的的计划混为一谈。


45.估算你的算法的阶
Estimate the Order of Your Algorithms
在你编写代码之前,先大致估算事情需要多长时间。


46.测试你的估算
Test Your Estimates
对算法的数学分析并不会告诉你每一件事情。在你的代码的目标环境中测定它的速度。


47.早重构,常重构
Refactor Early, Refactor Often
就和你会在华园里除草、并重新布置一样,在需要时对代码进行重写、重做和重新架构。要
铲除问题的根源。


48.为测试而设计
Design to Test
在你还没有编写代码时就开始思考测试问题。


49.测试你的软件,否则你的用户就得测试
Test Your Software, or Your Users Will
无情地测试。不要让你的用户为你查找bug。


50.不要使用你不理解的向导代码
Don't Use Wizard Code You Don't Understand
想到可以生成大量代码。在你把它们合并进你的项目之前,确保你理解全部这些代码。


51不要搜集需求--挖掘它们
Don't Gather Requirements - Dig for Them
需求很少存在于表面上。它们深深地埋藏在层层假定、误解和政治手段的下面。


52.与用户一同工作,以像用户一样思考
Work with a User to Think Like a User
要了解系统实际上将如何被使用,这是最好的方法。


53.抽象比细节活得更长久
Abstractions Live Longer than Details
"投资"于抽象,而不是实现。


54.使用项目词汇表
Use a Project Glossary
创建并维护项目中使用的专用术语和词汇的单一信息源。


55.不要在盒子外面思考--要找到盒子
Don't Think Outside the Box - Find the Box
在遇到不可能解决的问题时,要确定真正的约束。问问你自己:"它必须以这种方式完成吗?
它真的必须完成吗?"


56.等你准备好再开始
Start When You're Ready
你的一生都在积累经验。不要忽视反复出现的疑惑。


57.对有些事情"做"胜于"描述"
Some Things Are Better Done than Described
不要掉进规范的螺旋


58.不要做形式方法的奴隶
Don't Be a Slave to Formal Methods
如果你没有把某项技术放进你的开发时间和能力的语境中,不要盲目地采用它。


59.昂贵的工具不一定能制作出更好的设计
Costly Tools Don't Produce Better Disigns
小心供应商的炒作,行业教条,以及价格标签的诱惑。要根据工具的价值判断它们。


60.围绕功能组织团队
Organize Teams Around Fucntionality
不要把设计师与编码员分开,也不要把测试员与数据建模员分开。按照你构建代码的方式构建
团队。


61.不要使用手工流程
Don't Use Manual Procedures
shell脚本或批文件会一次次地以同一顺序执行同样的指令。


62.早测试,常测试,自动测试。
Test Early. Test Often. Test Automatically
与呆在书架上的测试计划相比,每次构建试运行的测试要有效得多。


63.要到通过全部测试,编码才算完成。
Coding Ain't Done 'Til All the Tests Run
就是这样。


64.通过"蓄意破坏"测试你的测试。
Use Saboteurs to Test Your Testing
在单独的软件副本上故意引入bug,以检验测试能够抓住它们。


65.测试状态覆盖,而不是代码覆盖
Test State Coverage, Not Code Coverage
确定并测试重要的程序状态。只是测试代码行是不够的。


66.一个bug只抓一次
Find Bugs Once

一旦测试员找到一个bug,这应该是测试员最后一次找到它。此后自动测试应该对其进行
检查。


67.英语就是一种编程语言
English is Just a Programming Language

像你编写代码一样编写文档:遵守DRY原则、使用元数据、MVC、自动生成、等等。


68.把文档建在里面,不要栓在外面
Build Documentation In, Don't Bolt It On

与代码分离的文档不太可能被修正和更新。


69.温和地超出用户的期望
Gently Exceed Your Users' Expectations

要理解你的用户的期望,然后给他们的东西要多那么一点。


70.在你的作品上签名
Sign Your Work

过去时代的手艺人为能在他们作品上签名而自豪。你也应该如此。





检查清单
---------------------------


71.要学习的语言
厌倦了C、C++和JAVA?试试CLOS、Dylan、Eiffel、Objectve C、Prolog、Smailltalk或TOM。它们每一种都有不同的能力和不同的"风味"。用其中的一种或多种语言在家里开发一个小项目。


72.WISDOM离合诗
What do you want them to learn? 你想让他们学到什么?
What is their interest in what you've got to say? 他们对你讲的什么感兴趣?
How sophisticated are they? 他们有多富有经验?
How much detail do they want? 他们想要多少细节?
Whom do you want to own the information? 你想要让谁拥有这些信息?
How can you motivate them to listen to you? 你如何促使他们听你说话?


73.怎样维持正交性
·设计独立、良好定义的组件。
·使你的代码保持解耦。
·避免使用全局数据。
·重构相似的函数。


74.应制作原型的事物
·架构
·已有系统中的新功能
·外部数据的结构或内容
·第三方工具或组件
·性能问题
·用户界面设计


75.架构问题
·责任是否得到了良好定义?
·写作是否得到了良好定义?
·耦合是否得以最小化?
·你能否确定潜在的重复?
·接口定义和各项约束是否可接受?
·模块能否在需要时访问所需数据?


76.调试检查清单
·正在报告的问题是底层bug的直接结果,还是只是症状?
·bug真的在编译器里?在OS里?或者是在你的代码里?
·如果你向同事详细解释这个问题,你会说什么?
·如果可疑代码通过了单元测试,测试是否足够完整?如果你用该数据运行单元测试,会发生什么?
·造成这个bug的条件是否存在于系统中的其它任何地方?


77.函数的得墨忒耳法则
某个对象的方法应该只调用属于以下情况的方法:
·它自身
·传入的任何参数
·它创建的对象
·组件对象


78.怎样深思熟虑地编程
·总是意识到你在做什么。
·不要盲目地编程。
·按照计划行事。
·依靠可靠的事物。
·为你的假定建立文档。
·不要只是测试你的代码,还要测试你的假定。
·维尼的工作划分优先级。
·不要做历史的奴隶。


79.何时进行重构
·你发现了对DRY原则的违反。
·你发现事物可以更为正交。
·你的知识扩展了。
·需求演变了。
·你需要改善性能。


80.劈开戈尔迪斯结
在解决不可能解决的问题时,问问你自己:
·有更容易的方法吗?
·我是在解决正确的问题吗?
·这件事情为什么是一个问题?
·是什么使它如此难以解决?
·它必须以这种方式完成吗?
·它真的必须完成吗?


81.测试的各个方面
·单元测试
·集成测试
·炎症和校验
·资源耗尽、错误及恢复
·性能测试
·可用性测试
·对测试自身进行测试





以上内容摘自《程序员修炼之道》