Feeling

    三人行,必有我师焉

   ::  :: 新随笔 :: 联系 ::  :: 管理 ::
  185 随笔 :: 0 文章 :: 392 评论 :: 0 Trackbacks

#

最近一段时间真是生逢不幸,屋漏偏逢连夜雨,老天爷处处和我作对,每天只能长吁短谈,至于怨天尤人,那还不至于成为我的作风,学习的动力也因此而来。人嘛,总是在安逸中堕落,逆境中求生。从大学毕业到现在,除了头年的奋斗,后面的几年基本上就是在堕落中度过,而且愈演愈烈。

工作的几年,经验长了不少,大公司,小公司,国内的,国外的,甚至连皮包公司都呆过,还是现在的这个最爽。不过Manager因为移民澳大利亚马上就要离开公司了,我的好日子也要到头了。这几年时间,说实在话,成就不大,基本上就在原地踏步,也不知道工资怎么就翻了10倍。这期间也看过一些书,不过说实在话,收获不大。现在想回过头来潜心研究一些基础的东西,虽说基础,但是没有以前的积累,是无法透彻领悟的。

我想(I think that if I want to)弥补自己的漏洞,在网上看看别人的面试题,然后自己做做,心里就应该有个底了。想当年考研的时候,第一次拿着历年的考试题做,居然150分只拿了40分,那个汗呀,最后强攻了3个月,最后考了个135,其实我自己都不知道怎么能考这么多分,最后2个大题没做,这就20分没了(出得太变态了,居然出魔方,这个规律性太强,我只知道有6个规律,背不下来,难道要自己临场琢磨,我当场就直接白卷放弃,本来也没打算上研。不过学校小考的时候也考过这个,我是抄的,也只能怪自己了。)

设计模式,UML,J2EE,三道难题摆在我面前。外加 Spoken English。Japanese? I'm very sorry,日企我还没这个雅兴。

这里主要说设计模式了,我看过很多遍,以前没什么经验,很多架构自己都没有用到过,设计模式这个东西,也就是看了白看。这几天系统地看了一下,其实其中的大部分,我已经从平常阅读别人的代码中学过并且已经用过了,现在回头再看看,自己比较比较,仔细领悟,以后就不用再看了。领悟了以后就是自己的了,还管别人的干什么,自己的就是最好的。这年头连社会主义都是有自己的特色的,设计模式当然也要有自己的特色,吸众家之所长,取各方之精华。

UML慢慢搞吧,去年搞了搞,没啥进展。

J2EE我不知道怎么说,除了EJB,其他的好像都搞过,JSP,Servlet,JMS,RMI,JNDI(LDAP),JDBC……不过好像是前两年搞的,而且都是些小项目。最近在做Eclipse Plugin的开发,一年多没碰了,心虚的不行呀。就说最近几年流行的Spring,Hibernate,Ajax,我压根就不会,也就是搞了一会iBatis,感觉有点落伍了。说白了就是我个人已经厌恶B/S了,已经转向C/S的怀抱了,没什么兴趣在搞这些玩意。

看看网上的招聘信息,很搞笑,某外企,英文要求写的是熟练掌握书面英语,口语流利。最后中文附注只要求看懂文档就行了,俄的神呀!是不是所有的外企都这样?我的印象外语还是蛮重要的,最近努力加强中……看来我以后的工作性质只能向C/S靠齐了,B/S方向已经严重落伍。

其实作为技术而言,只要工作上要用,学起来都会很快。但是有些技术之外的东西却需要时间来沉淀,比如Design Pattern,UML,English,System Architecture,还是每天花时间搞搞这些玩意来的实际。

今年下半年的主要任务就是查漏补缺,系统总结了。明年公司合同就到期了,到时候看看情况再决定是走是留吧……留当然容易,不过还要看看发展前景再说:-(
posted @ 2007-06-20 19:36 三人行,必有我师焉 阅读(1512) | 评论 (15)编辑 收藏

想真正领悟这首曲子感人的地方,就不能不去玩《英雄传说6》这个游戏。

星之所在口琴版(游戏中的音乐):
 
下载地址:http://www.blogjava.net/Files/cnfree/xzszkqb.mp3

星之所在完整版:
 
下载地址:http://www.blogjava.net/Files/cnfree/xzszwzb.mp3

FC结局视频:


《星之所在》歌词

一秒的喜悦,一秒来幻灭
不意闯入流光飞舞的世界
轮廓再真切,情感越发强烈
就暂时停留这天上宫阙

左手很鲜艳,右手在凋谢
庆幸至今谁都没想过妥协
一千零一夜,竟是一千零一劫
劫后余生何尝不是破灭

你早不是你,而我不是我
两个名字,靠得那么近

前生的不满,来世再偿还
此刻只想逃避千万别责怪
或许是今晚,明月繁星都不在
不正好沉寂自做主张的愉快


幕布拉不开,忘掉了对白
世人不复昨日的百无聊赖
空旷的舞台,没有谁人会理睬
不正好独享光辉灿烂的存在
再一次重来,又怎么才能重来
请别计较遗忘和铭记的胜败

 


翻译二:
遥远的地方,是谁在歌唱,
踏着梦的足迹,来到我身旁,
失去你的黑夜,我心仍徬徨,
期待你有天会出现我身旁;

微风在轻扬,诉说着忧伤,
乘着爱的翅膀,找寻你方向,
就算受伤情愿和你去流浪,
我依然向往和你一起飞翔,

静静守候相约的誓言,
等候明天太阳的光芒,

让爱去徜徉,让心去飘荡,
就让泪光融化寒冷和冰凉,
有你陪伴的夜我不再迷惘,
看星光依然,雪花飞舞飘扬。

依然等你在相遇的地方。

posted @ 2007-05-05 02:34 三人行,必有我师焉 阅读(1950) | 评论 (0)编辑 收藏

假如你是一个Leader,那么你敢对你的自己的项目Refactor吗?当然我这儿所说的Refactor不是仅仅修改几个Class而已,而是将旧有的框架完全抛弃,而建立一个全新的框架。你能面对Release的压力,还有项目成败的挑战吗?

当一个Project越来越大,Logic越来越复杂的时候,就有的框架体系往往不能满足新Feature的要求,于是程序员们有两种选择,要么重构,要么打补丁。对于后者,如果开发人员水平高一点,补丁的痕迹还不会很明显,如果水平一般的话,这段代码往往就会形成一个恶梦。久而久之,整个项目都会积重难返,直至崩溃。

很幸运的是,我所在的Team从一开始就定位于坚持Refactor。基本上每个MileStone,都会有1-2个人手上的活不是new feature,而是refactor。也许刚刚开始refactor的时候会无从下手,毕竟很大的一块,不是说动就动的。但是不管怎么样,refactor之后的效果是显而易见的,新的扩展很容易实现,往往只要覆写某个方法就可以实现一个新的feature。磨刀不误砍柴工,refactor很好的诠释了这一点。

看过《重构》这本书的人,都会知道重构须从小处做起,不断坚持,但这样的重构也只仅仅局限于某些功能点的重用性而已。真正的重构,是需要大刀阔斧的。一个项目,你很难知道后期的行为,因此代码框架也很难一直适应新的需求。当需求不断变更的同时,如果固步自封,浑身打上狗皮膏药,补丁越多,维护越累。当量变达到质变的时候,也就是项目崩溃的时候。只有坚持对框架进行调整,才能够不断的满足新的需求。

说到这儿就不得不说到团队间的合作问题,一个产品,往往是由几个Team共同协作完成的。基本上每个Team都只需要负责自己的模块,并且根据工作量的大小有相应的人手。那么你认为在这儿Team之间,大家工作的感觉会想差不多吗?实际上,每个Team内部的情况完全不一样,有的Team,一个人平均每天只能该1个Bug,有的Team能够该3-5个。归根结底,还是由于框架的问题。如果框架结构清晰明了,改起来自然简单,往往一行代码的修改就能解决问题。框架结构复杂的话,那就不好收拾了。框架的作用就是增加重用性,降低耦合度。我们这儿有一个Team,框架3年都没有什么改变了,而且由于人员的更迭,很多代码都和黑盒一样,没有人能够看明白。我敢说,我一天改10个Bug都不在话下,他们能说吗?

一个Leader要维护Team之间的平衡真得很累,结构好了,自然就做的快了,可那又不是自己的错,做得慢的Team不但拖累自己,到头来还硬要说你出风头。开发人员第一个需要拥有的素质就是能够不断自省,要学会先怀疑自己。把所有的责任都推卸出去了,到最后问题没解决那还是自己的。一个项目的成败也往往是由Leader的管理水平来决定的。如果Leader都怕失败,不敢去承担责任,那么手下的人自然也没有这个义务了。

我只想说一句,不敢对自己现有的框架体系做出挑战的,不能够自省的Leader,都是对自己的项目,自己的手下不负责任。一个项目最终的成败,也可能就毁在这些人手上。
posted @ 2007-05-02 18:51 三人行,必有我师焉 阅读(839) | 评论 (4)编辑 收藏

DataSet Joint
一个简单的Dataset Joint Example

一般来说,Eclipse插件开发用到GEF的机会并不是很多,大概也就是结构设计,数据管理,流程控制等应用罢了。看了一下网上的例子,大部分都是基于数据库管理的,我想这应该是因为数据库设计的Dataset Joint是程序开发最常见的吧。

GEF的一个简单Example可以参加GEF自带的例子Logic,功能非常强大,了解了Logic,就能够了解相应的GEF开发。在网上这方面的教程并不多,我也基本上没开,我个人始终认为看书不如看代码。当然我以前也没有接触过GEF,毕竟要完全掌握这个东西并非一日之功,要想在上面有所造诣不通过一个大型项目的加强是不可能的。上面的这个小东西也是我花了半个月,还请教了一些人帮忙debug才研究出来的,还是花费了相当功夫。

不过GEF是一套框架,上面的这个小东西,麻雀虽小,五脏俱全,而且基本上可以算一个不依赖于Eclipse平台的小应用程序。不过GEF(Ver 3.3)这个项目依赖于Eclipse OSGI,如果想完全独立于Eclipse,需要自己做一些小小的改变,也不算太麻烦。最后基本上SWT+JFACE+GEF基本上就可以自己做应用了。

独立于Eclipse的GEF简单教程可以参见:
http://www13.plala.or.jp/observe/GEF/GEF_StandAlone.html
http://www13.plala.or.jp/observe/GEF/GEF_Tool_StandAlone.html

日文写的,我看不懂,只看代码。

这里我只说几点:
1、如果面板需要滚动条,并且能够自由伸缩,显示的话,请选择ScrollingGraphicalViewer,相应的RootEditPart请选择ScalableFreeformRootEditPart。

2、GraphicalViewer是通过EditPartFactory拿到子EditPart的,有些类似于JFace TreeViewer的ContentProvider,根据特定的Element拿到对应的EditPart,不同于TreeViewer的是,GEF的getChildren方式是写在EditPart里的,每一个EditPart都要实现 protected List getModelChildren( ) 方法,而TreeViewer的getChilder是在ContentProvider内部实现的。因此EditPart更为灵活,因为EditPart还可以通过EditPartFactory拿到上下文环境,而TreeViewer ContentProvider脱离了Viewer本身,只能通过Model来取,这样当Model和Viewer不一致的时候,GEF游刃有余,而TreeViewer却举步维艰。

3、EditPart的FeedBack Figure的背景颜色是和它的背景取异或操作的,因次再拖动EditPart的时候,如果FeedBack Figure覆盖EditPart的时候,Figure的颜色很难看,解决这个问题的办法就是设置GraphicalViewer的背景颜色为白色。

4、希望EditPart能够拖动,需要实现getDragTracker( )方法:

    public DragTracker getDragTracker( Request req )
    {
        DragEditPartsTracker track 
= new DragEditPartsTracker( this );
        
return track;
    }


5、刷新EditPart的显示需要覆写protected void refreshVisuals( )方法,当Model的模型改变,需要刷新View的时候可以通过事件监听来显示的调用该方法。

6、设置EditPart在父亲EditPart的位置调用( (GraphicalEditPart) getParent( ) ). setLayoutConstraint(EditPart arg0, IFigure arg1, Object arg2)方法。 

7、如果是XYLayoutEditPolicy,内部EditPart位置的改变会调用XYLayoutEditPolicy的protected Command createChangeConstraintCommand( EditPart child,
   Object constraint )方法,需要记录EditPart位置可以在这里进行。

8、EditPart的Selection事件需要注册SelectionEditPolicy,你可以针对不同的EditPart实现不同的SelectionEditPolicy。

9、内部有自由布局的EditPart需要注册LayoutEditPolicy的子类。而该EditPart的Figure需要设置对应的LayoutManager。

10、GraphicalViewer监听Key操作需要setKeyHandler(new KeyHandler(viewer))。

11、进行连接操作的源EditPart需要实现protected List getModelSourceConnections( )方法,目标EditPart需要实现protected List getModelTargetConnections( )方法,创建一个连接需要使用ConnectionDragCreationTool。连接图形的EditPart必须继承AbstractConnectionEditPart。实际上每个连接会被创建出2个EditPart,只有这2个EditPart的Model相等的时候,一个连接才会成立。

12、如果需要连接,需要注册GraphicalNodeEditPolicy,并且实现protected org.eclipse.gef.commands.Command getConnectionCompleteCommand(
   CreateConnectionRequest request )和protected org.eclipse.gef.commands.Command getConnectionCreateCommand(
   CreateConnectionRequest request )方法。注册代码:

installEditPolicy( EditPolicy.GRAPHICAL_NODE_ROLE,
                
new ConnectionCreationEditPolicy( ) );


 先写到这儿,慢慢再补。

posted @ 2007-04-30 18:35 三人行,必有我师焉 阅读(3687) | 评论 (4)编辑 收藏

Eclipse下的插件开发如果需要用到什么字体或其他的工具时,尽量避免使用AWT GraphicsEnvironment ,这会导致Vista Aero效果暂停工作。如果有需要得到Font字体列表的话,可以使用SWT的FontList拿到:

 1    public static String[] getSystemFontNames( Comparator comparator )
 2    {
 3        FontData[] fontDatas = (FontData [])Display.getCurrent( ).getFontList( nullfalse );
 4        SortedSet set = new TreeSet(comparator);
 5        for(int i=0;i<fontDatas.length;i++){
 6            set.add( fontDatas[i].getName( ) );
 7        }

 8        fontDatas = ( FontData [] )Display.getCurrent( ).getFontList( nulltrue );
 9        for(int i=0;i<fontDatas.length;i++){
10            set.add( fontDatas[i].getName( ));
11        }

12        String[] fonts = new String[set.size( )];
13        set.toArray( fonts );
14        return fonts;
15    }

/**
 * Returns <code>FontData</code> objects which describe
 * the fonts that match the given arguments. If the
 * <code>faceName</code> is null, all fonts will be returned.
 *
 * 
@param faceName the name of the font to look for, or null
 * 
@param scalable if true only scalable fonts are returned, otherwise only non-scalable fonts are returned.
 * 
@return the matching font data
 *
 * 
@exception SWTException <ul>
 *    <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
 * </ul>
 
*/

public FontData [] getFontList (String faceName, boolean scalable)
posted @ 2007-04-30 16:34 三人行,必有我师焉 阅读(1103) | 评论 (0)编辑 收藏

规则:每次单挑都有五个候选人可以选择单挑,有人有武器,有人没有。战胜持有武器的武将,得武器,体力回复少许;战胜没有武器的武将,体力回复较前者略大;中间败北可以选择复活一次(只有这一次!)体力全满
手戟:太史慈93、典韦95、甘宁94(无需斗志即可实行暗器攻击)
弓:黄忠93(100斗志伪退却,有几率使敌将受伤)
剑:赵云96(斗志提升速度加快)
刀:关羽97(攻击力上升大于丈八蛇矛)
没有武器的武将:颜良94、文丑93、庞德94、马超97、张辽92、许褚96

首先要注重单挑顺序,其次注重技巧。技巧方面就是尽量多防守,少进攻,必杀技一定要留在最后放,否则敌人会通过你的攻击集气,然后给你个必杀技就得不偿失了。

首先单挑太史慈,选择攻击,在损失15%的血以后就可以顺利击败,并获得手戟。
排在第二位的是赵云或者关羽,关羽难度比较大,个人感觉是13人中最强的,建议先选赵云。先攻击几个回合再防御,最后2个必杀技+暗器,PK掉赵云,应该还剩30-40%血,拿到青虹剑,加快斗志提升速度。
第三位可以选张辽,张辽是武力最低的一个,但是比较难打,因为无论是进攻还是防守,都会费不少血,建议先防守1招,然后攻击几招,最后必杀技+暗器搞定。最后还剩20-25%左右血。
第四位和第五位选庞德或者文丑(颜良?),这里面庞德、文丑、颜良是有很大机会秒杀的,而且费血很少。这2关打完以后血应该能够恢复到60-70%。
第六位选择甘宁或者典韦,会费一点血,不过最后应该会超过50%血。
第七位要看黄忠是否出来了,黄忠出来了立即选黄忠,一开始就进攻,不要防守,在15招之前解决战斗。拿到养由基弓。应该还有40-50%血。
第八位:庞德、文丑、颜良中剩下的一个,有机会秒杀,不秒杀也要尽量剩70%以上的血。
第九位:许褚,主防即可。剩75-85%血。
第十位:关羽,这一仗至关重要。关羽很难打,无论是攻击还是防守,都会制你于死地。建议先防守一招,然后对攻,还剩不到45%血时主防,最后必杀技+暗器+伪退。可能还剩10%-30%血,拿到青龙偃月刀,再次加快斗志提升速度。
第十一位:如果血比较多,可以选典韦、甘宁中剩下的一个,血少的话选马超。主防即可,打马超基本不费血,最后2必杀技+暗器+伪退。如果是马超,最后血补全满。
第十二位:如果十一选了马超,那么这一关就要尽量避免失血。一定要保证血大于60%,不要大意哦。
剩下的就是吕布和项羽了:只要一直防守就可以了,打完吕布之后似乎是不会补血的。所以最后要保证30%以上的血,吕布集气很快,有可能会放必杀技。项羽除了一个暗器以外,很菜的。对付这两人都是3必杀技+暗器+伪退,五个大招一次解决问题。

太史慈、黄忠、颜良、文丑、庞德,尽量多进攻,张辽、关羽,进攻+防守,剩下的防守就可以了。最后连续的几个必杀技按快一点,一定要保持连续性,不给敌人喘息的机会。如果必杀技放完了,敌人还有一丝血,就马上切换成进攻,给予最后的一击。
posted @ 2007-04-24 01:28 三人行,必有我师焉 阅读(20145) | 评论 (16)编辑 收藏

Realease在即,而Mock-up却还在更新,这就是我目前的境况。要命的却是还有一个从来没有涉猎过的领域摆在我面前,那就是GEF,Eclilpse最复杂的框架之一。我一向推崇简单就是美,Java搞了这么多年,但是越搞越复杂,Eclipse也是如此。最令人推崇的Eclipse开发版本还是2.1.2,相对于2.1版本,3.2简直就是蜗牛。而我们却要无休止紧跟着Eclipse的脚步,它走一步,我们就要前进一步。我以前甚至不屑于使用JFace,更何况这个传说中的GEF,玩玩还可以,使用它那还不是要我的小命。

不过框架自有框架的好处,如果能够熟练使用,可以少写很多代码,因此能够使项目速成。我现在要做的是一个数据库表索引关联编辑器,功能其实不多,但是麻雀虽小,五脏俱全,一个完完整整地GEF应用。拖拉暂且不说,是GEF的基本应用,最麻烦的其实还是各个表初始化的布局,需要写一个自己的布局管理器。如果要自己从头写而不用GEF,估计一个月怎么也够呛。现在采用GEF,我想半个月就差不多了,不过学习成本昂贵呀。我得承认我严重低估了GEF的复杂度,到目前为止,我已经研究了三四天,才刚刚能够进行简单应用。看书,找资料,研究框架的构架,都是扯淡,看了八进制的文章,仍旧是一头雾水。看别人的容易,变成自己的就太难了,什么事情都还要靠自己领悟才行。

还好我是多条路并行采用了。虽然我眼下的项目可以称得上是最复杂的GEF应用之一(源代码打ZIP包都快30M了),但身边能用GEF开发的高手却屈指可数,Manager估计早就想让我搞这个玩意了。JFace我都是速成的,现在已经很熟练了。顺便说一下TreeViewer这个东西,它的显示逻辑全部都是通过Provider来实现的。显示的时候就会通过getChildren从上往下走,找一个节点的时候则是通过getParent从下往上走,现在就有一个问题了,如果我setInput的Model的内部逻辑和我要显示的外部逻辑相差比较大,那么如何实现?在这儿适配器是不能工作的,因为沟通是双方的,适配器则是单方的。如果用一个虚节点来代替Model实际上没有的显示逻辑,那么虚节点的儿子(一个Model实体)通过getParent是找不到那个虚节点的,它只知道自己的实体父亲。封装所有的Model也是不可取的,要不要Model干什么。我想TreeViewer碰到这样的应用就会无能为力了。

现在说一下框架速成大法:
1、问,自然是问高手了。高手会一针见血的把问题找出来,并能告诉你框架的整体结构,通过现场演示,能够让你的脑子对框架有一个整体的认识,这可比看文章接受的快多了。我同事已经被我折磨了一个礼拜了。在问和解答的过程中,大家都能够发现自己的不足,如果两个人在一起编码,又是一个结对编程的过程,这个时候2个人的脑子思维都会很清晰。
2、Debug,找一个和自己相近的应用。每一个框架,作者一般都会提供一些例子,而且这些例子虽然简单,却基本上包含了框架的方方面面。要想应用框架,最终是需要自己写代码的,代码在哪儿找,就是作者的例子里找。看看例子里有多少应用是自己需要的,找到合适的地方Debug一把,一步一步地跟下去,很快你就能够通过堆栈信息以及源码了解应用的整个步骤,然后用Copy大法,一个自己的应用就创建出来了。

当然第二点依赖于第一点,初学者是很难寻找合适的断点进行跟踪,所以需要找个高手过来,让他来跟,他演示的过程就是自己学习的过程。有了自己的第一桶金,后面的路就已经很平坦了。一个人对于未知领域的恐惧并不是怕自己不能掌握,而是不知道自己要花多长时间来掌握它。通过3天的速成,虽然对GEF的整体了解是管中窥豹,但我已经心里非常有底了。现在已经能够把Tabel以及里面的Column画出来,而且已经实现了布局,拖拽等基本事件,剩下需要研究的东西不会太多,够用就行。技术这个东西,不怕不了解,就怕不会学习,很多时候,等到要用到的时候再学也不会迟,关键是要掌握正确的学习方法。

posted @ 2007-04-07 00:22 三人行,必有我师焉 阅读(1177) | 评论 (3)编辑 收藏

传说中凤凰每隔500年要投入火中以求得新生。有一种恒星在其「临死亡」的剎那,将发生激烈的爆炸,如迴光返照般放出极耀眼的光芒。星球毁灭了自己,却也同时触发了新恒星的诞生。这就是超新星,天上的火凤凰。

在宇宙中,恒星的分类是按照它们的死亡的方式,一类象我们太阳这种,最终安静的成为白矮星,另一类是比太阳大8倍以上的恒星,它们的死亡是爆炸。恒星越大,寿命就急剧的缩短,质量差3倍,寿命就差750倍,也就是说,一个比我们的太阳大3倍的恒星,它的寿命就只有1300万年,所以,生命的进化是不可能托付给大恒星的。但是,宇宙的物质的丰富和流动,却全靠它们。

宇宙在过去有过一个非常单调的开端,只有氢元素和少量的氦元素,然而宇宙在成长,而成长的标志就是重元素的增加,这种增加使宇宙越来越丰富,宇宙的所有的奇迹,都是在有了完整的元素制造之后。而制造元素,就是把氢元素以不同的数目聚合,而要完成所有元素的聚合的场所,就是拥有巨大引力的大恒星。从丰富物质角度来说,大恒星是宇宙中的精品,它们不仅能生产所有的元素,而且由于恒星越大,寿命越短,因此周期也短,所以,恒星的巨无霸是宇宙制造元素效率最高的工厂。不过,宇宙中最大的恒星的质量极限是一百个太阳,如果再大,就会因为自身的核反应过猛而解体。

船底座海山二星(Eta Carinae)可能即将爆炸!但谁也不知道它会发生于何时?一年后,抑或百万年后?海山二星的质量约为太阳的100倍,拥有足够的能量以产生一次非凡的超新星爆炸。根据历史记载,大约150年前一次不平常的爆发,使得海山二星成为南半球夜空中最亮的几颗星之一。位在钥匙孔星云(KeyholeNebula)中的海山二星被认为是目前已知唯一一颗可发射自然激光的恒星。这一张在1996年经由复杂的影像处理后所得的影像,显示出这颗恒星周围云气的细微部分,其中包括两个清楚的圆形突出部分、一个炽热的中央区域,以及一些奇怪的辐射状条纹。
船底座海山二星(Eta Carinae)可能即将爆炸

引力制造元素,但也束缚元素,小恒星大约能制造出十来种元素,但这些元素最终不能在宇宙中流动。大恒星能制造更多的元素,一般超过太阳质量 8倍以上的恒星就能使聚变一往无前,其核心达到几十亿度的高温不断的创造不可思议的聚变,每次聚变所产生的能量都使恒星膨胀得更大一些,于是它就象洋葱一样形成令人吃惊的多层核聚变的巨大空间,这个空间可以达到一百亿公里,装下整个的太阳系。在聚变的深入的过程中,恒星变得越来越危险了,因为元素越重,聚变提供的能量越少,而巨大的恒星又必须靠不断释放的核能支撑。然而,当聚变到排列第26位的铁元素时,摇摇欲坠的恒星遭受到最致命的破坏──因为铁元素的结构极其稳定,它在聚变时不释放能量,于是,巨大而膨胀的恒星将会因核心失去支撑而倒塌。

因此而恒星粉碎性的爆炸,能量的狂飙扫荡天庭,这就是超新星爆发。此刻它的能量相当于正常恒星的一百亿倍,在这个超能量的瞬间,宇宙中所有的元素都被聚变出来了。象金银首饰这种重元素,就是在超新星的爆炸中诞生的,当我们佩戴它们时,要记住宇宙制造高档产品确实是代价很高,它需要报废一颗至少比太阳大8倍以上的恒星,才能使我们披金戴银。

超新星发生在一个恒星即将结束生命时,亦即在红巨星阶段,核心燃料快要消耗殆尽时,恒星会因为没有额外的燃料而自行崩溃。如果恒星的质量够大,恒星内部的内爆层会在接触核心时反弹,产生巨大的爆裂,爆炸所产生的震波会将恒星的所有物质射入太空中。

我们的太阳将会在50亿年后衰亡,因它内部提供予核融合的燃料终於消耗殆尽。到时太阳会变成一个主要由碳和氧组成、密度高而「寒冷」的白矮星。 另一方面,一颗比太阳更重的恒星的中心温度更高。这些巨大星体会在经过一次壮观的爆炸后灭亡,这过程称为「超新星爆炸」。爆炸释出的能量非常巨大,超新星爆炸的光度可能相当於1,000亿万颗恒星同时发出的光芒。

超新星的爆发是在约一秒钟之内完成的。由於高能辐射与爆炸拋射出来的恒星大气相互作用,使得超新星也可能有X射线等辐射。例如SN1987A在爆炸后100多天才被Ginga卫星所探测到它的X射线。而光学波段的突然增亮,首先是由膨胀大气引起的,后来则由Ni56等同位素的衰变提供能量,使得光度下降较为缓慢。图五中给出了典型的超新星光变曲线。超新星爆发的高速拋射物与周围介质相互作用形成的激波引发出电波辐射,而对星周尘埃的加热则可以产生红外辐射。但这些只有周围有稠密的星际物质的II型或Ib、Ic型超新星才能观测得到。

在不到一秒钟时间内释放出1051~1053erg的能量(相当於90个太阳在其一生所释放能量之总和)的天体,它的前身星是什么?产生如此巨大能量的机制是什么?这些是天文学家首先面临的问题。

首先我们来看看Ia型超新星。在它的光谱中缺少氢谱线,而且根据统计它在不同类型的星系中都有可能出现。据此天文学家提出了Ia型超新星是密近双星演化到晚期的终极结果的想法。设想有一密近双星系统,其两个成员星的质量均小於8M¤ ,其中质量大的那一个演化得比较快,在其核心燃烧完氢后,接著燃烧氦,而变成中心为碳和氧的白矮星。这时初始质量较小的那颗成员星的物质就被它吸积。假如物质转移速度小於每年10-8M¤ 的话,在白矮星周围形成氢壳,当它达到核融合点火的温度时,其表面就产生核融合点火爆发,这就是新星爆发的现象,其规模比超新星要小得多。

当转移速率在每年10-6M¤ ~10-8M¤ 之间的话,表面同样会产生核融合,而形成氦,氦形成碳,逐步使其碳核心质量增加,直到钱氏 (Chandrasekhar) 极限的1.4 M¤ 。其中心密度可达到3×109g/cm3,而且中心达到碳点火的温度。碳被点燃,并且融合过程从中心往外迅速传播,在不到一秒钟之内传到白矮星的最外层。其爆炸将产生1053erg的能量,而且爆炸规模巨大无比,以至於将这颗白矮星完全「炸飞」了。由於白矮星中的氢已经燃烧殆尽,所以它的光谱中没有氢线,同时因为它是一种「老年」的恒星,因此会出现在不同的星系之中。

II型的超新星则不同。它的光谱中以氢线为主,而且往往出现在螺旋星系的旋臂上,在那裡往往有恒星正在形成。一个目前被广泛接受的II型超新星爆炸的模型是:一个大质量的恒星(质量大过10M¤ ),在其最初的3000万年甚至更短的时间内,它的核心首先是氢融合为氦,然后氦变为碳和氧,碳变为氖和镁,氧和镁变为硅和硫,直到最终硅和硫融合为铁属元素。上述每种融合过程都释放出大量的能量,维持著恒星的「生命」,而且其核心变得愈来愈密,温度则愈来愈高,以致能够抵抗恒星引力的收缩。但到了核心变为铁心后,由於铁属元素的核束缚能最小,融合无法继续为恒星提供能量,反而要吸收能量。引力收缩就开始,中心的密度和温度继续增大,到 1010K和1010g/cm3时,电子就被压到原子核内而形成富含中子的同位素,而高能辐射又将原子核「撕」成a粒子。这两个过程都要吸收能量,使得重力塌缩变得更快。当中心密度超过2.7×1014g/cm3时,塌缩不能继续,产生反弹而引发超新星爆发。它将外层核融合的剩余物,包括最外层的氢向外拋,而留下一个核核心,也就是中子星。所以在光谱中有强的氢线,同时因为大质量恒星(寿命短;因此我们看到的都是不久前形成的)是和恒星形成区相关的,所以他们往往出现在螺旋星系的旋臂上。至於Ib和Ic型超新星,目前也认为是一种称为「沃夫─瑞叶星」 (Wolf-Rayet stars; W-R stars) 的大质量恒星演化到晚期的结果。由於W-R星有大规模的恒星风,质量流失很大,因此表层已失去了氢甚至氦,所以其光谱中没有氢线(或甚至於氦线)。

超新星1987A(1987年发现的第一个超新星)是近代爆炸的超新星中,最靠近地球的一个,位於169,000光年外(我们银河系的伴星系)的大麦哲伦星系。它也是自从克卜勒在1604年於银河系中观测到超新星以来最明亮的一个;同时是自1885年以来第一个肉眼看得见的超新星。那原来是一个蓝超巨星的位置,其质量约为太阳的20倍。天文学家相信这个星球先是膨胀成红超巨星,在吹开一部份的星球体后,经过收缩与再加热,成为一个蓝超巨星。之后,在短短不到一秒钟,整个星球的中心突然就崩垮了,一阵微中子将中心加热至100亿度。这个过程引爆出震波,将此星球炸散掉,并喷出大量的微中子到太空中。

直至1987年5月,国际紫外线探索号已在超新星的碎片中发现了许多化学元素,显示出这个始祖星球已经过了红巨星期,证实了原来的理论。到了7月,一个日本的人造卫星和德国的望远镜都侦测到从碎片中发射出来的X光线。自8月到11月,更有其他的研究团队侦测到高能的伽玛射线,这是在即将死去的星球中心出现核反应所产生的放射性元素,衰变时所放射出来的。此资料证实了大家所相信的理论,即超新星会产生组成地球大部分的重化学元素。

超新星1987A影像 
超新星1987A影像

哈伯太空望远镜先进巡天相机 (ACS) 所拍摄的超新星1987A影像,在其四周包围著一串如珍珠项链般的气体环,这些「珍珠」其实是超新星爆发所产生的冲击波,以超过每小时6千万公里的速度追撞上了“恒星在爆炸前数万年所喷出, 膨胀速度较慢的气体”。爆震波追上了这个环,由於碰撞作用,气体受到衝击,温度升高到了数百万至1千万度,因而发出了红外辐射。环中的尘埃是在星风中形成的,而不是在超新星爆发中形成的。光环直径约一光年,光环中央的长椭圆形黯淡星体就是超新星残骸,主要受超新星爆炸时所产生放射性元素鈦 44 衰变辐射加热而发光,未来数十年都还将持续发光。天文学家在 1996 年首次在 SN 1987A 的外圈发现一个亮点,现在则可看出数十个。天文学家推测,未来几年中还将陆续出现更多类似的光点,这些亮点的光会将周围照亮,天文学家届时将可推测超新星爆炸前是如何喷发物质至太空中。当震波逐渐往外移时,产生的紫外线和X射线辐射将加热更多周围过去所喷出的物质。就如同参与钱卓研究计画的科学家理查、麦克雷所说:「超新星1987A将会点亮它自己的过去」。

超新星的爆炸使物质摆脱了引力的束缚,但铁元素的核却坠入引力的深渊,巨大的塌方把电子都压进了质子,于是质子全变成了中子,而中子之间没有电磁力的排斥,原子核可以相互紧紧的挨在一起,这就形成了最致密的物质──中子星,它一立方厘米的质量能达到十亿吨,而它引力强大到让光都要成抛物线才能挣脱。把一个几百万公里直径的物体压缩成只有30公里的直径,就是中子星,而同时被压缩的还有磁场,这是一个匪夷所思的超高能核电站,它可以把表面附着的电子象高压水柱一样喷射出去,它们所具有强烈的方向性可以成为宇宙定位的灯塔。十几年前,人类寻访外星生命的一艘飞行器上所携带的人类的自我介绍,就是用多颗中子星为地球做定位。一些大的超新星爆炸之后,将会产生引力的奇迹──黑洞,巨大的引力把物质化为无形,因为连光都要被吸回它的表面,如果把地球压缩成一个核桃,就是黑洞,因为地球其实是一个强力和电磁力支撑的物体,如果把原子核都毁灭了,地球就将成为几厘米直径的浓缩引力的载体,黑洞的存在已经被证实。

超新星是宇宙中4种力配合的杰作,它们共同建造一个巨大的原子锅炉,然后以锅炉的崩溃所激发的能量完成所有元素的制造,并且在最后的瞬间把元素都彻底的抛洒出去,正因为有这种抛洒,物质才有可能演化,否则,就象有钱不去投资,再多的财富也将没有任何意义。恒星以自身的毁灭造就了宇宙中最伟大的新生。 在超新星的物质弥漫之后,引力将会再次把这些物质凝聚成天体,大的塌缩成恒星,小的形成行星,如果这颗恒星有较长的寿命,而它的周围有若干合适的行星围绕,那么这个长寿的核能和比较靠近它的行星上丰富的宇宙元素的光和热交流,就可能最终产生宇宙中最复杂的物质形态──生命。

宇宙中最丰富的十种元素
posted @ 2007-04-05 13:07 三人行,必有我师焉 阅读(508) | 评论 (1)编辑 收藏

    超新星是最激烈的天体物理现象,它的爆发过程只延续大约一秒鐘,但是释放出极大的能量,超新星爆炸的光度可能相当於1,000万亿颗恆星同时发出的光芒。爆炸时產生的高能粒子是地面上任何加速器都不能达到的, 它提供一个在极端条件下进行的核融合,以及与高能粒子相互作用的实验,包括爆炸过程在内,这样的条件在地面上是永远无法实现的。在周期表中原子序数比铁更高的元素(如锌、金或铅)全都是在超新星爆炸中產生的。超新星爆炸标示了一颗恆星壮烈的死亡,但是也触发了新一代的恆星诞生。

超新星Supernova 1994D (表示是1994年里第4个发现的超新星,第二十六个以后的则是用aa、ab、ac等等)
超新星Supernova 1994D

天文学家把超新星按它们光谱上的不同元素的吸收线来分成数个类型:
I型:没有氢吸收线。
Ia型:没有氢、氦吸收线,有硅吸收线。
Ib型:没有氢吸收线,有氦吸收线。
Ic型:没有氢、氦、硅吸收线。
II型:有氢吸收线。

I型的超新星一般都比II型超新星亮。一般学生最先知道的超新星是II型(Type II)超新星, 是大质量恆星死亡后, 成為黑洞或中子星前的超新星爆炸產生的。 Ia型超新星(Type Ia supernova, Ia唸成one-a, 不是i-a).一般相信(会写一般相信, 就表示并非百分之百有定论)是来自含有白矮星与巨星的双星系统, 白矮星从巨星的外层大气中逐渐吸收质量, 待白矮星的质量超过所谓"钱的限制(Chandrasehkar's limit)"后, 会引发重力塌缩及超新星爆炸。

这种双星系统的爆炸分为两种,一种是新星的爆炸,另外一种则是更剧烈的超新星爆炸。

新星 (Nova) 爆炸:

Nova(复数Novae)在拉丁文中代表「新的」,在天文学中「新星」指的是看来像是新產生的星星。新星会在天空中突然变亮,维持几天后,逐渐变暗,至数月后才看不见。但是事实上「新星」并非一个新诞生的星星,而是一颗年老的白矮星爆炸所形成。

新星爆炸是由於一颗普通星星的质量经由吸积盘转移到一颗白矮星上。由於这些物质是由一颗普通的星星上来的,所以裡面含有许多未经核融合的成分,其中氢就佔得最多。当这些物质聚集在白矮星的表面时,形成一层未经核融合反应的燃料层。当这层物质愈来愈厚,它也变得愈来愈密、愈来愈热,最后到达可以產生氢的核融合的条件,突然產生爆炸。

為了明白这些爆炸如何產生,我们要先了解质量如何掉入一颗星球上。

吸积盘 (Accretion Disks)

当伴星质量往白矮星掉落时,由於角动量守恆,事实上物质无法直接掉在白矮星上,而是绕著白矮星转。我们用一个日常生活举例︰一个装满水的洗脸槽,槽内的水原本有些轻微的扰动,不过它的旋转并不明显,一旦我们将塞子拔掉,往排水口流出的水由於角动量守恆,所以变成了漩涡。同样的,掉入白矮星的气体也会因同样的效应形成一个旋转盘,称為吸积盘。

这两颗恒星是如何产生如此奇怪的复杂结构呢?大部分的恆星是属於多星系统的一员。有些紧邻的双星,其中一颗星的物质会掉入环绕著另一颗星的吸积盘上。然而只须扳一扳手指头就可以数出来的紧邻双星系统,是属於中度的极化双星系统,在这个系统中,白矮星的磁场会将内吸积盘向外推出,使得物质只能从磁极附近掉入。上图所示由画家所描绘的中度的极化双星系统,是著名的英仙座DQ (DQ Hercules)系统。在前方的白矮星与另一颗一般的星靠的很近,以至於白矮星会掠夺另一颗的外围大气。当白矮星自转时,被吸入的气柱也跟著一起转起来。所谓的中度极化,是因為它所发出的光的极化程度 是另一种没有吸积盘的极化双星的一半而已。中度的极化双星系统是激变星中的一种类型。
中度极化双星系统中的吸积盘

在吸积盘中会发生两件重要的事情︰第一,盘中的气体因為摩擦力及潮汐力而变得十分热。这个吸积盘扮演煞车的角色,让气体旋转速度变慢,掉入白矮星内。靠吸积盘内部的气体温度可以超过100万K,气体会发生强烈的X光。另外,从吸积盘往内掉落至白矮星上的物质会发出巨大的爆炸。

新星的爆炸将白矮星的外层以每秒几千公里的速度往外炸开。虽然往外炸开的物质质量仅有0.0001倍的太阳质量,但是它的光度可达太阳的10万倍。当外层膨胀得愈来愈大,且愈来愈稀薄时,就逐渐变冷,新星看来就逐渐黯淡了。

这个爆炸几乎不会影响这颗白矮星和它的伴星,所以同样的质量转移的过程又开始进行。白矮星外层的燃料层加厚的速度与质量转移的速度有关。根据这个理论,有些新星需要1,000到10万年来累积足够厚的燃料层来產生爆炸;有些则仅需要几週。再发新星 (recurrent novae)、矮新星 (dwarf novae) 及一些相关的不规则变星 (irregular variable stars) 都经歷类似新星的较小规模的爆炸。虽然这几型星球并不一样,不过它们都经歷质量累积在吸积盘的过程。

在名为蛇夫座RS (RS Ophiuchi)的双星系统里,壮观的爆炸不停的重复发生。大约每隔20年,随著红巨星倾洩足够的氢气到它的白矮伴星,就会在白矮星的表面引发闪亮的热融合爆炸。离我们有二千光年远的蛇夫座RS星,因新星爆炸而大幅增亮,成為肉眼可见的天体。在上面这幅图示中,右方的天体就是这颗红巨星,白矮星则在左端明亮吸积盘的中心。随著恆星相互绕行,云气不断地由红巨星流向白矮星。天文学家认为在接下来十万年的某个时间点,当足够的质量累积在白矮星上,让它的质量超过钱氏极限 (Chandrasekhar Limit)时,就会造成更强烈的超新星爆炸。事实上宇宙中有一半以上的恆星都是双星系统。大部分的双星系统两颗星星都分得很开,所以当其中一颗膨胀并塌缩时不会影响它的伴星。但是有些双星距离很近,当质量较大的星星开始膨胀时,会与它的伴星有些特别的交互作用。
不断发生爆炸的蛇夫座RS (RS Ophiuchi)的双星系统

超新星爆炸:

经典的观点认为,热核爆炸超新星——也就是Ia型超新星——爆炸发生在白矮星——一种燃烧完核燃料(Nuclear Fuel)并且全部由碳(Carbon)和氧(Oxygen)组成的星体——从一个邻近的伴星吸积物质的时候发生。在吸积的同时白矮星会收缩从而导致密度和温度上升。这个过程一直进行到白矮星的质量达到质量极限——也就是所谓的Chandrasekhar质量,大概等于1.4倍的太阳质量。当达到这个状态的时候,由于热核反应不稳定性导致核聚变放出大量的能量,将白矮星外层的物质以很高的速度喷射出去,速度可以达到光速的百分之几。核反应可以将大概0.6个太阳质量的白矮星物质变成一种同位素:放射性的镍56(Nickel-56)。这种同位素的衰变——先是衰变到钴56(Cobalt-56),然后再衰变到铁56(Iron-56)——提供了一个延迟能量来源,这可以维持喷射出去的物质处于高温,导致超新星获得比十亿个太阳更强的峰值光度(光度的定义为单位时间内辐射出来的能量)。

天文学家对于Ia型超新星具有浓厚的兴趣,因为它们可以被用来探索宇宙的膨胀历史。这种超新星的光度很大,这就意味著能够在很远的地方看到——由于光的传播速度有限,这同时也意味著可以看到遥远的过去——而它们的相对视亮度则可以被用来推测它们的距离。超新星光变曲线和峰值光度之间的经验关系可以用来很精确地确定超新星的光度。

所有的Ia型超新星, 当它们的亮度达最高点时,都有著同样的绝对亮度。因为它们发生爆炸的原因都完全相同,起始于白矮星吸收伴星物质的过程一直进行到白矮星的质量达到质量极限,由于热核反应不稳定性导致核聚变放出大量的能量。

但是1996年后, 这一点被新观测给修正了。由Howell等人发现的超新星是SNLS-03D3bb(或者SN2003fg)在光学波段具有发射和吸收谱,由这些信息可以确定这颗超新星是Ia型的。这就意味著它的爆炸是由前面描述的失控热核反应驱动的,而不是驱动其它类型超新星的引力塌缩。但是这颗超新星的峰值光度是典型Ia型超新星爆炸事例的2.2倍。超新星爆炸的光度取决于镍56的质量,在这个案例中,产生这么大的光度需要有1.3倍太阳质量的镍56。产生这么多的镍要求初始喷射物质的质量远远超过Chandrasekhar极限允许的1.4倍的太阳质量。这是因为核聚变不仅产生镍,而且还稳定的铁系同位素,而且SN2003fg的光学谱显示存在更轻元素比如硅(Silicon)、硫磺(Sulphur)和钙(Calcium)的存在。同时还可能存在没有燃烧完全的碳和氧。把这些都考虑在一起,Howell等人估计喷射物的质量达到了2.1个太阳质量。

但是为什么白矮星可以如此之重呢?一种可能是两个邻近的白矮星相互绕转最后融合。这种情况可以通过由引力波导致的星体角动量损失产生。但是这种情况下通常会产生的是中子星而不是超新星爆发。一个可能性更大的解释是,从普通伴星那里被白矮星吸积过来的物质导致白矮星的角动量增加,从而使得白矮星高速转动,可以克服引力的吸引,从而使得白矮星在爆炸之前具有超过极限的质量。

在这种情况下白矮星可以具有多大的质量取决于角动量在星体内部如何分布,也就是说白矮星作为一个整体转动还是各不同部位的转动不一样。较差转动(Differential Rotation)可以使得白矮星的质量达到四倍太阳质量之巨,考虑到从伴星吸积物质有一定限度,白矮星的质量可能被限制在大概两倍太阳质量。

由于多普勒效应的结果——移动物体发出的辐射谱发生变化——SN2003fg的光谱被展宽,而光谱变化的程度显示喷射物质的速度比起典型Ia型超新星来要低。这和超极限质量白矮星是符合的,因为虽然在这种情况下核聚变产生的能量更多,而同时也造成物质脱离引力束缚需要具有更高的能量。高束缚能造成较低的喷射速度。

为了更好地了解Ia型超新星,确定喷射物质的质量分布是非常关键的。比如Ia型超新星是否普遍具有超极限的质量?它们的质量在1.4到2.1倍太阳质量之间有平滑的分布?Howell等人对超新星样例所作的一项分析表明情况可能确实如此。目前的数据和位于质量极限附近的典型Ia型超新星是相容的,而SN2003fg则显得比较例外。这种解释主要是受到了不同以往的超大光度以及对于光度-光变关联关系的破坏这两种异常现象的启发。虽然这种Ia型超新星的亮度非常大,光变曲线的形状则是典型的。

但是这种Ia型超新星爆发现象的发现并不意味著用Ia型超新星作为宇宙学距离指示器有问题。如果假设SN2003fg符合光度-光变形状经验关系,就有可能极大地低估它的光度,从而低估它的距离。但是由于这颗超新星是如此地奇特,在一项宇宙学研究中已经将其排除。光度-光变形状关系是经验性的,并且对Ia型超新星的质量分布没有人为假设。这就已经意味著这个经验关系可以容纳白矮星质量对质量极限有少许偏离,但这并不包括SN2003fg这种情形。

无论如何, 我们可以透过观测Ia型超新星而得知它们的绝对亮度. 一但有了绝对亮度, 和观测到的亮度比较后, 透过平方反比律, 我们就可以算出该超新星的距离, 也就是它的母星系的距离。
posted @ 2007-04-04 17:40 三人行,必有我师焉 阅读(2083) | 评论 (6)编辑 收藏

1、  程序员不擅长交际,但擅长说服别人。

2、  要习惯阅读别人的代码。

3、  通过阅读程序员的代码,主管可以从中了解程序员的能力,工作是否出色。

4、  在软件维护的过程中,被阅读最多的代码往往不是最好的代码,而是最需要重构的代码。

5、  如果程序根本无法正常运转,对其效率,适应性以及生产成本的评价就毫无意义。

6、  什么是程序中的毛病,在很大程度上取决于人的观点。如果这种毛病出现在你的程序中,你几乎不可能会认为它是毛病。

7、  在考虑一系列的程序的开发工作效果时,需要衡量开发时间的方差,而不是只考虑平均值。一般的开发主管宁愿先做 12 个月的计划,然后花 12 个月完成,也不愿做 6 个月的计划,却花了 9 个月。真正困扰人们的并非预先估计的平均开发时间,而是实际消耗时间的标准偏差。大多数人愿意每天花 10 分钟坐车,也不愿 4 天花 1 分钟, 1 天花 26 分钟。尽管就平均时间而言,后者花费更少,只需要 6 分钟。但是由于某次无法预测的长时间等待而将计划打乱,这点好处无法弥补损失。

8、  Fisher 基本定理:一个系统对某个特定环境的适应性越强,它适应新环境的能力也就越弱。为保证程序的效率,就必须考虑要解决问题的特殊条件。过分追求效率,只会降低适应性。但通常我们还是在二者之间做一取舍。至少,具备一种优点,要比哪种都没有强。

9、  衡量程序的真正效率,并不总能用运行时间来衡量。

10、 作为一个好程序,有一些重要的因素:该程序在多大程度上满足功能要求;该程序的开发是否按照计划完成,和计划的偏差幅度有多大;当条件改变时,是否能够修改,修改的成本有多大;程序的效率如何,为了弥补某一方面的低效率,是否牺牲了另一方面的高效率。

11、 主管根据什么来奖励程序员?在你的标准中是否存在相互矛盾的现象 ? 即快又好,还要易与重构,容易修改?

12、 在你的项目中,修改或者重构是否属于一项主要开支?

13、 即使一个计划不可靠,只要它是完成进度的唯一希望(尽管可能根本无法完成),程序员还是会采用它,你知道为什么吗 ?

14、 在进行某个项目的时候,你的脑子是否有一些明确的准则?或者是依照上级主管的看法?在项目的进行过程中,这些准则有无更改,或者你是否有办法让你的准则不被动摇?

15、 在编写程序时,你曾经有多少次想到它可能在未来会被人修改?反过来,在修改别人的程序时,你又曾经咒骂过几次?

16、 你是否因为追求“效率”,而延误了工作进度?反过来,是否因为要“赶时间完成”,而没有做到尽善尽美?

17、 在软件质量管理的过程中,软件性能的偏差使一个极其重要的方面。

18、 许多主管希望得到所有的东西,却不知道更重要的是应该通过明智的权衡,得到自己可能得到的最佳成果。

19、 爱因斯坦的名言:重要的是不要停止怀疑。如果不去进行尝试,我们永远不肯能成功。

20、 霍桑效应:因受到他人关注而带来提高或进步。关注手下工作的领导,将会取得更好的成绩。很多负责软件开发的主管,就是不愿意与属下并肩工作。

21、 最优秀的程序员同时也是那些最善于自省的。如果他们发现做错了什么,他们会对导致这个结果的思维过程(或物理过程)进行检讨;然后,他们会采取一些相应的措施,对这个过程进行调整。这种方法称为“根源分析”。然而更多人仍然喜欢使用“过失追究分析”方法,这种方法恰恰相反,它会诱导人们把引发问题的根源隐藏起来。

posted @ 2007-03-18 23:52 三人行,必有我师焉 阅读(1653) | 评论 (0)编辑 收藏

仅列出标题
共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页 
GitHub |  开源中国社区 |  maven仓库 |  文件格式转换