Friday, September 17, 2010

Inception:一场层层调用的函数大战

转自 安婆婆 科学松鼠会
http://songshuhui.net/archives/42661.html

就有这么凑巧的事:上周还在看侯世达 (Hofstadter)先生的《集异璧》,这周就在电影院里看到了书中概念的演绎版——哈,说的当然是日前火爆酷炫的高分电影Inception啦。废话少说,赶快剧透。还没看过的同学们海涵了,虽说透穿了剧情也不会影响你观影的效果。

Inception抓人眼球的是它“梦中做 梦”和盗梦的情节设计。在层层深入的梦境里,人的意识逐步放松警惕,入侵者便可以趁机盗走储存在大脑中的信息。控制梦中的意识,“我做你的梦”,两个 人的思想在同一个大脑中争斗……这都是令人看得过瘾的狂野想象。然而身为一个业余程序员和《集异璧》忠实读者,看到人在梦里死了掉进迷失域(limbo) 再也出不来,我第一反应还是忍不住叫出来:“哇,堆栈溢出!”

堆栈是一个计算机术语,我看来看去,觉得Cobb这群人在剧中完成任务的方法就像出自程序员的手笔。你看每个梦,都是同样的一组人物,抱着同样的目标,只是换到了不同的场景里。这多像一个函数调用的过程啊。

也许你没听说过函数调用,但你也许炒过青菜。 通常我们会先热锅、放油,然后爆炒、加盐、出锅。那么从热锅到出锅的一整套动作就可以写一个名为“炒”的函数。如果我们为白菜调用这个函数,就完成了“炒 白菜”的任务;如果为空心菜调用这个函数,就完成了“炒空心菜”这个任务。你还可以自由发挥,为各种包菜、韭菜、胡萝卜调用同一个函数,就把它们都炒了。

Cobb先生当然不在乎炒的是什么菜,他的任 务是在Fisher的脑中播种下拆分公司的念头。他为Fisher先生设计的函数就是梦,让Fisher的潜意识瓦解的梦。在计算机程序中,一个函数内部 可以调用另一个函数,在第二层函数运行的过程中,第一层的函数就在等待,直到第二层函数返回了运算结果,第一层函数再利用这个返回的值来继续它自身的运 算。这么一比较,Cobb的精心设计实际上就是用一个梦去调用另一个梦,上一层梦境中熟睡的人们都在等待下一层梦境中的人完成任务。一旦成功,就用音乐或失去平衡的方式返还(在迷失域则是死亡),来结束上一层梦境。

就像程序员喜欢在函数中调用函数来使问题步步细化,这些嵌套在一起的梦也起到了步步逼近Fisher内心深处的作用。但是这样层层的调用也有个风险,万一信息链被破坏,函数不知道自己身处的是哪一层,事情就要乱套。这样就使得“堆栈”这个概念变得重要了。

在计算机语言里,“栈”是内存中的存储区,它保存着正在运行中的程序的临时信息,在程序完成后就被新的程序信息覆盖。“堆栈”就是向这些存储区写入信息,好让系统知道现在哪个函数在等待返回值,以及返回来的值要到哪里去读取。

但是计算机的内存容量是有限的。当函数调用的 层数过多,新调用的函数信息在写入内存的时候空间不够,就把一些老的信息覆盖了。麻烦的是,被覆盖的那层函数还在等待下层函数的返回值来完成暂停的任务。 这样虽然新的函数成功运行,老函数却没法正确找到返回值,整个程序就出错了。这种因为空间不够而产生的错误覆盖,就是开头提到的堆栈溢出。

这和情节有什么联系呢?当然有啊,Cobb的 老婆Mal不就是堆栈出错的受害者嘛。根据影片情节设计,Mal在迷失域中就因为待得太久而失去了对现实的记忆。她一直在最底层的函数里,却认为活在最顶层的现实,不需要返回到任何地方。而Cobb的“栈”还是完好的,他还记得 现实中的孩子,知道应该返回到顶层去。

这个时候,如果Cobb直接带着Mal卧轨, 不和她说那些有的没的,两人也许就安全地从底层返还了。但是Cobb犯了个错误,他对Mal的潜意识进行了修改,这就相当于故意在Mal的“栈”里放置了 错误的但是有意义的数据。这样当Mal回到最顶层的现实时,本来整个大程序应该宣告结束,但因为她的“栈”被改写了,这个程序就错误地认为自己并不在顶 层。于是Mal就失去了对梦境和现实的分辨力,觉得自己应该再死一次才回到现实。

“悲剧啊!”看见Mal坠下高楼,我不由叹息,一出内存出错的惨剧。

与其说这是一部关于梦的科学幻想,倒不如说是 利用人类的算法对意识进行的一次设计。据说影片的灵感有部分来自侯世达先生的《集异璧》。这是本涉及甚广的奇书,试图综合各学科的知识来探讨意识的机制。 侯先生虽然也不能完全回答自己提出的这个问题,但他猜想意识的关键之处在于“我”这个概念的产生。而这个概念来自自我和外界的区分,来自人类和外界不断的 信息交流。于是对“我”的认知从出生时起就一层层叠进脑内,这种交流积累终其一生循环往复。书中曾把这个过程类比于函数对自身进行循环调用,那么影片中的 故事设计与计算机原理相似的情况倒也不太出乎人意料。

咦,那么有没有可能,导演在试图把计算机科学的知识植入到我们的潜意识里面?银幕前面的你,被他的Inception施中了吗?

Sunday, August 15, 2010

几个不错的博弈和决策的例题

An example of decision-making by backward induction

Consider an unemployed person who will be able to work for ten more years t = 1,2,...,10. Suppose that each year in which she remains unemployed, she may be offered a 'good' job that pays $100, or a 'bad' job that pays $44, with equal probability (50/50). Once she accepts a job, she will remain in that job for the rest of the ten years. (Assume for simplicity that she cares only about her monetary earnings, and that she values earnings at different times equally, i.e., the interest rate is zero.)

Should this person accept bad jobs? To answer this question, we can reason backwards from time t = 10.

* At time 10, the value of accepting a good job is $100; the value of accepting a bad job is $44; the value of rejecting the job that is available is zero. Therefore, if she is still unemployed in the last period, she should accept whatever job she is offered at that time.
* At time 9, the value of accepting a good job is $200 (because that job will last for two years); the value of accepting a bad job is 2*$44 = $88. The value of rejecting a job offer is $0 now, plus the value of waiting for the next job offer, which will either be $44 with 50% probability or $100 with 50% probability, for an average ('expected') value of 0.5*($100+$44) = $72. Therefore regardless of whether the job available at time 9 is good or bad, it is better to accept that offer than wait for a better one.
* At time 8, the value of accepting a good job is $300 (it will last for three years); the value of accepting a bad job is 3*$44 = $132. The value of rejecting a job offer is $0 now, plus the value of waiting for a job offer at time 9. Since we have already concluded that offers at time 9 should be accepted, the expected value of waiting for a job offer at time 9 is 0.5*($200+$88) = $144. Therefore at time 8, it is more valuable to wait for the next offer than to accept a bad job.

It can be verified by continuing to work backwards that bad offers should only be accepted if one is still unemployed at times 9 or 10; they should be rejected at all times up to t = 8. The intuition is that if one expects to work in a job for a long time, this makes it more valuable to be picky about what job to accept.

A dynamic optimization problem of this kind is called an optimal stopping problem, because the issue at hand is when to stop waiting for a better offer. Search theory is the field of microeconomics that applies problems of this type to contexts like shopping, job search, and marriage.--http://en.wikipedia.org/wiki/Backward_induction

逆向归纳法是求解动态博弈的具有演绎性质的方法,然而在蜈蚣博弈(罗森塔尔于1981年提出)之中由它得到的纳什均衡解因不合理,违反直觉而被认为是一个悖论。本文通过引进新的合作性的均衡解概念,使该悖论得到消解。合作性均衡是博弈参与人通过讨价还价这样的“言语行为”在“交流”中得以实现的,而由逆向归纳法得到的完美纳什均衡是在“沉默”中实现的。合作性的均衡所实现的是交流合理性,它能够使所有博弈参与人的支付都得到提高。 --http://www.cqvip.com/qk/92803X/200512/20890844.html

在图中,博弈从左到右进行,横向连杆代表合作策略,向下的连杆代表不合作策略。每个人下面对应的括号代表相应的人采取不合作策略,博弈结束后,各自的收益,括号内左边的数字代表A的收益,右边代表B的收益。如果一开始A就选择了不合作,则两人各得1的收益,而A如果选择合作,则轮到B选择,B如果选择不合作,则A收益为0,B的收益为3,如果B选择合作,则博弈继续进行下去。

可以看到每次合作后总收益在不断增加,合作每继续一次总收益增加1,如第一个括号中总收益为1+1=2,第二个括号为0+3=3,第二个括号则为2+2=4。这样一直下去,直到最后两人都得到10的收益,总体效益最大。遗憾的是这个圆满结局很难达到!

大家注意,在上图中最后一步由B选择时,B选择合作的收益为10,选择不合作的收益为11。根据理性人假设,B将选择不合作,而这时A的收益仅为8。A考虑到B在最后一步将选择不合作,因此他在前一步将选择不合作,因为这样他的收益为9,比8高。B也考虑到了这一点,所以他也要抢先A一步采取不合作策略……如此推论下去,最后的结论是:在第一步A将选择不合作,此时各自的收益为1!这个结论是令人悲伤的。

不难看出,在该博弈的推理过程中,运用的是逆推法。从逻辑推理来看,逆推法是严密的,但结论是不合理的。因为一开始就停止的策略A、B均只能获取1,而采取合作性策略有可能均获取10,当然A一开始采取合作性策略有可能获得0,但1或者0与10相比实在是很小。直觉告诉我们采取“合作”策略是好的。而从逻辑的角度看,A一开始应选择“不合作”的策略。人们在博弈中的真实行动“偏离”了运用逆推法关于博弈的理论预测,造成二者间的矛盾和不一致,这就是蜈蚣博弈的悖论。
A------B------A------B------A------B------A------B------A------A------B------(10,10)
|******|******|******|******|******|******|
(1,1)**(0,3)**(2,2)**(8,8)**(7,10)*(9,9)**(8,11)--http://www.changhai.org/forum/article_load.php?fid=6&aid=1168864387

介绍一个经典案例。


5个海盗抢得100枚金币后,讨论如何进行公正分配。他们商定的分配原则是:
(1)抽签确定各人的分配顺序号码(1,2,3,4,5);
(2)由抽到1号签的海盗提出分配方案,然后5人进行表决,如果方案得到超过半数的人同意,就按照他的方案进行分配,否则就将1号扔进大海喂鲨鱼;
(3)如果1号被扔进大海,则由2号提出分配方案,然后由剩余的4人进行表决,当且仅当超过半数的人同意时,才会按照他的提案进行分配,否则也将被扔入大海;
(4)依此类推。这里假设每一个海盗都是绝顶聪明而理性,他们都能够进行严密的逻辑推理,并能很理智地判断自身的得失,即能够在保住性命的前提下得到最多的金币。同时还假设每一轮表决后的结果都能顺利得到执行,那么抽到1号的海盗应该提出怎样的分配方案才能使自己既不被扔进海里,又可以得到更多的金币呢?


此题公认的标准答案是:1号海盗分给3号1枚金币,4号或5号2枚金币,自己则独得97枚金币,即分配方案为(97,0,1,2,0)或(97,0,1,0,2)。现来看如下各人的理性分析:


首先从5号海盗开始,因为他是最安全的,没有被扔下大海的风险,因此他的策略也最为简单,即最好前面的人全都死光光,那么他就可以独得这100枚金币了。


接下来看4号,他的生存机会完全取决于前面还有人存活着,因为如果1号到3号的海盗全都喂了鲨鱼,那么在只剩4号与5号的情况下,不管4号提出怎样的分配方案,5号一定都会投反对票来让4号去喂鲨鱼,以独吞全部的金币。哪怕4号为了保命而讨好5号,提出(0,100)这样的方案让5号独占金币,但是5号还有可能觉得留着4号有危险,而投票反对以让其喂鲨鱼。因此理性的4号是不应该冒这样的风险,把存活的希望寄托在5号的随机选择上的,他惟有支持3号才能绝对保证自身的性命。


再来看3号,他经过上述的逻辑推理之后,就会提出(100,0,0)这样的分配方案,因为他知道4号哪怕一无所获,也还是会无条件的支持他而投赞成票的,那么再加上自己的1票就可以使他稳获这100金币了。
但是,2号也经过推理得知了3号的分配方案,那么他就会提出(98,0,1,1)的方案。因为这个方案相对于3号的分配方案,4号和5号至少可以获得1枚金币,理性的4号和5号自然会觉得此方案对他们来说更有利而支持2号,不希望2号出局而由3号来进行分配。这样,2号就可以屁颠屁颠的拿走98枚金币了。


不幸的是,1号海盗更不是省油的灯,经过一番推理之后也洞悉了2号的分配方案。他将采取的策略是放弃2号,而给3号1枚金币,同时给4号或5号2枚金币,即提出(97,0,1,2,0)或(97,0,1,0,2)的分配方案。由于1号的分配方案对于3号与4号或5号来说,相比2号的方案可以获得更多的利益,那么他们将会投票支持1号,再加上1号自身的1票,97枚金币就可轻松落入1号的腰包了。







最后通牒博弈中理性的困境

有这样一个博弈:

  两人分一笔总量固定的钱,比如100元。方法是:一人提出方案,另外一人表决。如果表决的人同意,那么就按提出的方案来分;如果不同意的话,两人将一无所得。比如A提方案,B表决。如果A提的方案是70∶30,即A得70元,B得30元。如果B接受,则A得70元,B得30元;如果B不同意,则两人将什么都得不到。



  A提方案时要猜测B的反应,A会这样想:根据理性人的假定,A无论提出什么方案给B——除了将所有100元留给自己而一点不给B留这样极端的情况,B 只有接受,因为B接受了还有所得,而不接受将一无所获——当然此时A也将一无所获。此时理性的A的方案可以是:留给B一点点比如1分钱,而将99.99元归为己有,即方案是:99.99∶0.01。B接受了还会有0.01元,而不接受,将什么也没有。

  这是根据理性人的假定的结果,而实际则不是这个结果。英国博弈论专家宾莫做了实验,发现提方案者倾向于提50∶50,而接受者会倾向于:如果给他的少于30%,他将拒绝;多于30%,则不拒绝。

  这个博弈反映的是“人是理性的”这样的假定在某些时候存在着与实际不符的情况。

  理论的假定与实际不符的另外一个例子是“彩票问题”。--http://blog.sina.com.cn/s/blog_53735c9d0100bo6q.html


高成本 低成本
默许 阻挠 默许 阻挠
进入 40,50 -10,0 30,100 -10,140
不进入 0,300 0,300 0,400 0,400

在无限重复中,行为规则可以用自动机来代表,于是不同行为规则的 相争,便成了机器与机器的角斗。假设甲和乙玩无限重复的囚犯博奕。甲相信《美德的起源》一书作者的教导,认定仁厚忠恕既高尚又有效,于是 以它为策略。乙信奉理性流氓主义,崇尚实力和实利,于是以流氓主义为策略。这样,二人间的博弈,就可以看作恕道机器与流氓机器的争斗。根 据上一贴中列出的框图,我们可以推演出各个回合双方的行为如下:第一回合,甲仁厚玩合作H,乙宰客玩欺骗D; 第二回合,甲报复玩欺骗D,乙仍然宰客玩欺骗D;第三回合,甲仍报复玩欺骗D,乙发现甲并非傻客,于是玩合作H; 第四回合,甲原谅乙,玩合作H;乙却因甲上次不合作,回头玩欺骗D宰客; ⋯⋯ 如此等等。采用我们上贴里的报偿表,整个结果序列如下图所示: 循 环 循 环 循 环 ┌———┐ ┌———┐ ┌———┐ ↓ ↓ ↓ ↓ ↓ ↓ 行为:甲 H D D H D D H D D 乙 D D H D D H D D H 报偿:甲 0 2 6 0 2 6 0 2 6 乙 6 2 0 6 2 0 6 2 0 ⋯⋯ 请注意,此序列呈现一个有趣的规律:就是每三个一组,不断循环重复。于是我们很容易算出,博弈各方平均每个回合的报偿有多少 只要 取相继三个回合,作个简单平均就够了。甲得到(0+2+6)/ 3 = 2.67,乙得到(6+2+0)/ 3=2.67。显然,两者平分秋色, 不相上下,谁也不比谁差,谁也不比谁强。这种循环重复并不是特例。可以证明,有限自动机玩无限重复博弈, 其结果最终都会变成循环重复序列。于是,利用类似的办法,我们可以针对上贴中列出的七种策略,算出每一对策略相博所产生的的平均报偿。这 些报偿可以写成一个7×7博奕矩阵,如下表所示(其中一些略去了小数,这不影响下面的讨论): 乙 傻客 恶棍 冷血 恕道 侠义 流氓 摇摆 ·---------------------------· 傻客|4,4|0,6|4,4|4,4|4,4|0,6|0,6| |---+---+---+---+---+---+---|恶棍|6,0|②,②|2,2|2,2|2,2|3,1|2,2| |---+---+---+---+---+---+---|冷血|4,4|2,2|④,④|④,④|2,2|3,1|2,2| |---+---+---+---+---+---+---|恕道|4,4|2,2|④,④|④,④|3,3|2,2|2,2| 甲 |---+---+---+---+---+---+---|侠义|4,4|2,2|2,2|3,3|2,2|2,2|2,2| |---+---+---+---+---+---+---|流氓|6,0|1,3|1,3|2,2|2,2|④,④|2,4| |---+---+---+---+---+---+---|摇摆|6,0|2,2|2,2|2,2|2,2|4,2|③,③| ·---------------------------· 上面这个表里面,有带圈数字的格子都是平衡点。比如,乙玩恶棍策 略时,甲无论玩什么,都不比当恶棍带来的好处更多,顶多不致受损而已。因此,甲乙双方都当恶棍,次次都玩欺骗,便是重复囚犯博奕的平衡点之 一,此时各方的报偿与一次性博奕相同,都是2。观察一下上面这个表,我们会发现它有多个平衡点。非重复博弈中的 均衡点,恶棍对恶棍,双方永远玩欺骗,仍然是无限重复博弈的均衡点。无条件合作的傻客策略,仍然不是重复博弈的均衡点 理性的人,决不 会当傻客。 更重要的是,重复博弈引进了许多新的平衡点,其中有不少平衡点,可以实现合作报偿(4,4)。 这包括恕道策略对恕道策略,恕道策略对冷血 策略,冷血策略对冷血策略,流氓策略对流氓策略等,都可以维持双方的合作。以流氓对流氓为例:第一回合,双方耍流氓互宰,发现对方不是好 惹的之后,双方转入合作心态,此后一直维持合作,这样无限次重复,其平均报偿都是4。 事实上,存在这无穷多对有限自动机策略,可以成为无限重复博弈的 平衡点,并同时实现双方的合作。这就是有名的“大众定理(Folk Theorem)”, 又译作“无名氏定理”。它之得名,是由于重复博弈促进合作的思想,早就有很多人提出,以致无法追溯到其原创者,于是以“无名氏”名之。 大众定理说明了行为规则的多样性:有无穷多种行为规则可以支持合作行为。在正常的平衡状态中,可观察到的行为可以完全相同的,此即博 弈双方相互合作,不玩欺骗。但其背后的行为规则却可能大不相同 合作,可以是由于双方都信奉仁厚的恕道主义,也可能是因为双方都是理性 流氓,还可能是因为双方都一冷血报复作威胁。这些行为规则上的区别,在正常的平衡状态中,是看不出来的,只有在非正常情况下,或在与外人 的交往中,才会表现出来。为说明此点,设想有两个相互隔离的社会:一个形成了理性流氓式的 行为规则,一个形成仁厚恕道的行为规则,他们各自内部都能维持相互合作,这形成了社会的正常状态。外人但凭观察这两个社会中人们的正常行 为,看不出他们有什么区别。现在假设两个社会打破隔离,相互接触,会产生甚么情况? 两套行为规则间会出现激烈的冲突! 初次接触,流氓主义者将把对方当傻客,大宰其客。恕道主义者假设对方是好人,选择合作,只是在吃了亏之后,才以回宰其客相回报。流氓 主义者见对方回宰,以为对方也是跟自己一样的流氓,于是转向合作心态,同时预期对方也选择合作。但恕道主义者根据“以直报怨”的原则,仍然 以宰客回报对方上次的欺骗。流氓主义者一看对方不合作,怒从心起,于是报之以宰客,如此循环往复,双方永远无法达成合作。 行为规则的冲突,类似于人文学科里常说的文化冲突。由于行为规则反映了人们对各自行为的稳定预期,一些博弈论者把不同的行为规则解释 为不同的文化信仰,应当是不无道理的。我觉得,重复博弈理论,为我们科学理解许多文化现象,打开了大门。 正是由于行为规则本身的多样性和复杂性,所以我对成朴文章中过分 抬高“一报还一报(tit for tat)”单一规则,将之推崇为美德的起源,始终抱有疑虑

Wednesday, April 28, 2010

如何养成早起的习惯

在天亮之前起床是个好习惯,这将有助于你的健康,财富和智慧。——亚里斯多德

早起三光,晚起三慌。——中国谚语

早起的习惯是天生的还是后天养成的呢?在我身上,它显然是在后天养成的。在我20岁之前,我很少在午夜前睡觉,几乎总是睡的很晚,通常我会一直睡到每天的傍晚才起床。

但是后来的一段时间我不能继续忽视成功与早起之间的紧密联系了,尤其是在我身上看到了这一点。在我那些少有的早起的日子里,我意识到我的生产效率不 光是早上,而是整整一天都非常高。并且这样做我感觉非常好,我决定养成早起的好习惯,于是立即将闹钟调到了凌晨5点………

……..第二天早上,我在快到中午时才起床。

Hmmm………

我又进行了多次的尝试,基本上每一次都是在那个时间段醒来。我开始怀疑我的身上是不是没有携带早起的基因。每当我的闹钟响的时候,我的第一反应总是想将它关掉然后回去继续睡觉。这个习惯我又保持了几年,但是最终我偶然发现了几篇关于睡眠的调查研究,它们让我意识到我在这个问题上一直是错误的。只要我能把这些调查研究得到的方法应用到我自己身上,我就可以养成一个持久的早起习惯。

使用错误的策略很难使你养成早起的习惯,但是使用这些正确的策略,却相对容易的多。

最通常的错误策略是:你认为,如果你想要早起的话,你最好早点去睡觉。因此你会计算一下你现在一般每天要睡几个小时,然后计算出需要在新的基础上往回移动几个小时。比如说现在你从午夜(夜晚12点)睡到早上8点,你预测如果你在晚上10点睡的话,那么第二天你就可以在凌晨6点起床。听起来似乎很有道理,但是这通常会失效。

目前关于睡眠模式有两个主要的流派。其中一个学派认为你应该每天都按时睡觉,并按时起床。就好像在这两个时刻都有个闹钟一样——你试图在每天晚上的同一时刻入睡。这看起来好像适应于现代社会的节奏,我们需要有一个准确的日程安排表,并且要保证每天有足够的休息。

另外一个学派认为你应该根据身体的需要,累的时候就去休息,睡到自然醒就要起床。这种方法植根于生物学说,我们的身体知道我们需要多少睡眠,因此我们应该听从它们的命令。

通过试验,我发现对我来说两个都不是最佳的睡眠模式。如果你重视你的生产效率的话,它们都是错误的,以下是我这样说的原因:

如果你的睡眠时间固定,那么有时候你可能不是很困就要去睡觉。如果你需要花费超过5分钟的时间才能够入睡的话,这说明你并不是很困。你醒着躺在床上浪费时间,却不能入睡。另外一个问题是你认为你每天都需要同样长的睡眠时间,这是一个错误的假设。你的睡眠时间应该根据每天不同的情况而有所不同。(译者:我觉得还会有这样一个问题,比如说你假设你每天都需要睡够8个小时,可是你有时候早上会提前醒,但是这时候你告诉你自己:“我还没有睡够,在睡一会吧。”可是事实上,你几乎难以再次入睡,你只是在床上磨时间,把你认为你需要的睡眠时间磨完了才会起床 :) )

如果你根据身体的需要去睡眠,很有可能你的睡眠时间会超过你实际需要的睡眠时间——大多数情况下会超出很多,比如说每周会超出10-15个小时(这相当于整整醒着的一天)。许多以这种方式休息的人每晚上休息的时间都超过了8个小时,这通常是过多的。而且,如果你每天早上在不同的时间起床,那么你每天起床的时间就难以预测。因为有时候我们的生活会失去节奏(译者:比如说大学生的周末,一般都是3点之后才睡觉,而平时基本上都是12点睡觉,这样就会打乱生活的节奏),你可能会发现你的睡眠时间变得飘忽不定。

最佳得解决方案是把二者结合起来。方法非常简单,很多起早的人都在自觉不自觉中使用这个方法,虽然如此,它对我来说还是一个心理上的巨大突破。解决的方案是当我感到瞌睡的时候就去睡觉(只有当我感到瞌睡的时候),然后在每天的固定时间(每周七天)设置闹钟,响了就立刻起床。因此我总是在每天的同一个时刻(我定的是早上5点)起床,但是我上床睡觉的时间每天晚上都有所不同。

当我实在困了的时候我才会上床睡觉。我测试睡意的方法是:如果我不能够连续不间断地读完一本书的一两页,我就要准备去睡觉了。大多数情况是当我上床后,我会在三分钟之内睡着。我舒舒服服地躺下,然后立即就睡着了。有时候我会在晚上9点半就上床睡觉了,有时候我又会一直到午夜12点才睡觉,通常的情况是我在晚上10点到11点之间上床。如果我一直不想睡,我会一直忙到我不能睁开眼睛才去睡觉。在这段时间内,读书是一个很好的选择,因为当我困得实在不能在读下去的时候,这一般是显而易见的,我就会马上去睡觉。

每天早上当我的闹钟响的时候,我会把它关掉,伸一个长长的懒腰,然后坐起来。我这时候什么都不想,因为我知道,我赖在床上的时间越长,我接着再睡的可能性就越大。因此一旦闹钟响了,我就不允许我去想再睡一会的好处。即使我很想再睡一会,我通常也会立刻起床。

在坚持这个模式一段日子后,我发现我的睡眠规律逐渐变得有节奏了。如果前一天晚上我的睡眠时间不够充分,第二天晚上我自然而然地就会提前睡觉以补充足够的睡眠。而如果我的精力非常旺盛,一点都感觉不到累,我就会睡的少一些。我的身体学会了什么时候将我叫醒,因为它知道我通常会在每天的那个时刻起床。

这样做的一个很好的效果是,我平均每天晚上睡觉的时间减少了90分钟,但是我却感觉更轻松,我想这主要是因为我在床上的时间基本上都在睡眠中。

我得知这样一个情况,那些失眠的人都是那些明明不瞌睡却要上床睡觉的人。如果你不瞌睡,而且你发现自己无法立即入睡,那么立即起来,让你的头脑保持清醒一段时间。一直等到你的体内开始分泌激素,你的意识开始变得模糊,你再去睡觉。如果你能够在你瞌睡的时候去睡觉,在一个固定的时间起床,那么你的失眠症将会不治自愈。第一天晚上你可能要待到很晚,但是你会在上床之后立刻入睡。你可能会因为整晚只睡几个小时而在第二天起的太早时(相对太早)感到很累,但是经过一天的忙碌之后,你就会想在第二天晚上早一点上床睡觉。经过一段时间后,你就能养成每天晚上大概都在某一个时间上床,并且迅速入睡的习惯。

因此如果你想成为一个起早者(或者只是想更多的控制你的睡眠模式),那么就试试这样做吧:只有当你太瞌睡而不能继续坚持下去时才去睡觉,每天早上都在同一个固定的时间起床。

PS:关于如何成为一个起早者还有续文,介绍了需要注意的一些细节上的问题,具体的内容请参照:如何成为一个起早者(二)

如何成为一个起早者(二)

原文地址:How to Become an Early Riser - Part II

作者:Steve Pavlina

翻译:Angelived

译文地址:
http://angelived.org/2007/05/22/how-to-become-an-early-riser-part-ii/

(原作者 :上周一的那篇文章“如何成为一个起早者”显然引起了很多人的共鸣,那篇文章收到了很多反向链接(反向链接加上回复总共213个,后来作者把评论关闭了,否则会更多 :)),超过这个站点上任何一篇我写过的文章。...........)

(译者:因为上一篇文章反响很大,因此作者决定再写一篇文章来讲一下更细节方面的东西)

首先,在“当你困的时候才去睡觉”这个问题上,要想做到这一点,需要你能够意识到什么时候你瞌睡了。(不知道翻译的对不对 ;) 原句按单词的组合意思是“需要你有正确的混合意识和常识” )。

如果你在睡觉前做一些很刺激的活动,你就会(译者加:因为太兴奋而)睡地更晚,并且在睡觉前感觉不到瞌睡。大学期间我经常通宵与宿舍的同学打扑克,天亮之后我们常常会出去吃早餐。如果我要做工作、和朋友一起出去玩或者做其他很刺激的活动,我就可以容易地比平时晚些睡觉。

但是这不是我指的“你要意识到什么时候你瞌睡了”。我在这个测试中提到过“如果你不能够专心地连续读完一本书的一两页(说明你要准备去睡觉了)”。但是这并不意味着你要等到你快要精疲力尽的时候才去睡觉。

我所指的“想睡的征兆”是指当你的头脑开始释放激素,促使你瞌睡。这和感觉到累是不同的,事实上,你只是感觉到昏昏欲睡。但是为了使你的头脑释放激素,你需要创造一定的条件来使得它发生。这意味着你要让自己在睡之前把节奏放慢下来,我发现阅读是最棒的一个途径让你在睡之前放慢节奏。有些人说在床上看书是个不好的习惯.......可是我从来对在床上看书没有任何问题,因为当我太瞌睡而不能阅读下去的时候,我就可以把书放下,然后马上入睡。不过如果你喜欢的话,你也可以坐在椅子上看书。

另外一个测试你可以使用的是,问问你自己,“如果我现在去睡觉的话,我能多快入睡?”如果你认为你将需要超过15分钟的时间入睡的话,我会告诉你继续做你手中的事情,等会在去睡觉。

一旦你设定了一个固定的时间醒来,可能会需要你通过几次实践来确定你正确的睡觉时间范围。刚开始的时候你可能会看到变动比较大,一天晚上睡的太晚,另一天晚上睡的太早。但是最终你会找到一个感觉,你能够感觉到什么时候你去睡觉会马上睡着,并且第二天你仍然精力充沛。

为了防止你睡的过晚,给自己划定一个最晚睡觉时间,即使这时候你完全不瞌睡,无论如何你也要在那个时间上床睡觉。我知道我每天晚上至少需要6.5个小时的睡眠时间,但是如果遇到了紧急情况,那么我可以只睡5个小时,第二天还很好,前提是我并不是每天晚上都这么做。现在我的睡眠时间最长为7.5小时。在我开始每天早上准时醒之前,我经常每天晚上睡8到9个小时,如果有时候真的累的话,甚至睡10个小时。

如果你白天喝咖啡的话,好像这可能会打乱你的睡眠周期。因为起初的那篇文章假设你不依靠药物保持清醒,如果你喝咖啡有瘾的话,那么请先戒除你的咖啡瘾。如果你的大脑依靠化学物质的话,那么不要指望你的睡意会在合适的时间到来。

先前那篇文章的目的在于说明如何养成早起的好习惯。因此提的建议是直接关于如何养成这个习惯的。一旦这个习惯养成了,它就可以下意识的起作用。你可以做刺激的活动,比如说工作或者玩电动游戏,你将会知道什么时候你需要去睡觉了,即使它和以往晚上睡觉的时间不同。我说讲过的睡意测试对于养成这个习惯非常重要,不过在养成习惯之后,精确的信号(这里指的应该是你自己能够感觉到睡意的到来)会取代它起作用。

如果真的需要的话你可以不时的睡地晚一些。如果我一直到凌晨3点才睡觉,我就不打算在第二天早上5点起床,但是我会在第二天恢复到原来的起床时间。

我推荐你坚持每天在同一时间起床一个月,以此来养成早起的习惯。但是在这之后,你就会因为条件反射每天都在那个时间醒来,而你将很难再次入睡。我决定在周六早上起的晚一些,所以我没有设置闹钟,但是我自动地在4点58准时醒来。然后我试图再次入睡,但是我已经清醒了,我完全无法再次入睡。哦,好吧。一旦这个习惯被养成,那么想要准时起床就一点都不难了。这就像你知道什么时候你瞌睡了你就会去睡觉一样。

如果你有小孩的话,你必须尽量去适应它。我的两个孩子,一个5岁,另外一个只有1岁。有事他们把我从半夜吵醒——我的女儿有个习惯,她喜欢在睡床里 “摇晃着”告诉我妻子和我关于她做的梦,或者有时仅仅想和我们聊天。我知道你的婴儿隔几个小时就醒的状况,因此如果你是这种情况的话,我给你的建议是当你能睡的时候就睡。想让婴儿遵守“日程安排”是不大可能的 :)

如果你不能在你的闹钟响后起床的话,这好像要归咎于你缺乏自制力。如果你有足够的自制力的话,无论如何你都可以马上从被窝里跳起来的。起初的动机会有效,但是动机可能只会持续几天。规律就好像肌肉一样,你越是经常训练它,你就越能依靠它。每个人都有它自己的一些规律(你可以控制你的呼吸么?),但是并不是每个人都有意地去发展它。有很多方法可以养成规律——你可以看下整个六篇关于如何建立规律的系列文章(我会在之后将六篇文章中的经典部分翻译过来,想进一步了解如何养成规律的话,你可以用抓虾或者其他的订阅工具订阅我的博客 :) )。基本上它可以归结为克服一些小的挑战,战胜了它们,并逐渐地发展成为习惯,这就好像是举重练习一样。当你的自制力逐渐变强,像在某个特定的时间起床这样的挑战将最终变得那么简单。但是如果你的自制力衰退的话,那么它就好像是一个几乎不可逾越的障碍一样。

为什么要早起?

我要说主要的原因的是你可以有更多的时间来做比睡觉更有趣(译者:我认为是“更有意义” :) )的事情。

再提一次,我已经从每周节省出10到15个小时来做这些事情了。这些额外的时间效率是非常明显的。到上午6点半之前,我已经做完了锻炼,冲了个澡,吃了早饭,我已经在我的办公桌前准备去工作。我可以每天挤出不少时间来做一些富有成效的工作,并且我通常在下午5点之前完成了一天的工作(那包括私人的 “工作” 比如说发邮件,支付帐单,去幼儿园接我的女儿,等等)。这给了我每晚5到6个小时的自由时间来关心家人、参加休闲活动、主持节目、阅读、写日记等等。而最重要的是,我在这段时间中依然精力充沛。抽出时间来做那些所有对我重要的事情会使我感到非常平衡,放松和乐观。

想一想你可以利用空闲的时间来做些什么。即使每天多余出30分钟也足够你每天进行身体锻炼,读书,维护一个博客,冥想,煮健康的饭菜,学习一门乐器等等。积小成多,即使每天一段很短的时间经过一年的积累也将会变得巨大,每天多余出30分钟一年就是182.5个小时。这可比一个月的工作时间还要长(按每星期工作40个小时)。如果你能每天节省60分钟的话,一年你能节省的时间就会翻倍,如果你能每天节省90分钟的话,那么它就会变成三倍。对我来说,我每天大概能够节省90分钟的时间。那就是说我每工作十年,就相当于其他人工作十一年。我可以用那一年的时间来精力充沛地做以前我没有时间做的事情,这是多么美妙! :)--http://blog.renren.com/blog/228806186/457480942

个人做Research的体会

个人做Research的体会

(转载自MITBBS)


完全个人观点,不见得试用于所有人。
第一不要太迷恋TECHNICAL的东西。从自己和周围一些朋友的例子,我发现很多中国学生对TECHNICAL的东西特别感兴趣。什么新的东西都想学,不管究竟对自己的RESEARCH有没有帮助。所以很多中国学生的通病是,前两年上基础课的时候都很优秀,经常是全A。但到了三四年级时,进入RESEARCH很慢。很多人的毕业论文都是匆忙上阵,甚至迟迟不能毕业。当然我并不是说TECHNICAL的东西不重要。博士课前两年是积累一些GENERAL TECHNICAL SKILLS很重要。剩下的时间主要集中在开始RESEARCH和学习与自己RESEARCH相关的TECHNICAL SKILLS。


第二要在三年级就开始选定一到两个具体的TOPIC。我觉得从什么报纸,杂志或网站上找灵感都是瞎掰。如果自己不是JOHN NASH那样的奇才,老老实实从文献里找灵感。看看自己的导师在作什么,看看自己领域的大牛(如自己领域TOP JOURNAL的EDITOR)在作什么。作研究都是大牛挖坑,小牛灌水。对于JUNIOR RESEARCHERS,我感觉最有效的研究方法就是紧跟大牛挖坑的步伐。认准一个题目后,静下心好好清理一下LITERATURE的脉络。不要朝三暮四,这山望着那山高,整天试图去追逐所谓的HOT TOPIC。


整理文献时先作一个LITERATURE TREE:谁提出了这个TOPIC,LITERATURE里都从什么方向研究了这个题目,它们的关系是什么。对每个分支只包括最重要的1到两个文章。把大牛和中牛抓住就行了,剩下的小鱼小虾就算了。参阅一些LITERATURE REVIEW的文章,如果有的话。然后对经典的文章,如提出TOPIC的文章要进行复制。每个公式,每个结果都试图从新作一边。如果有问题可以向原作者请教。我感觉他们大部份还是很NICE的。复制的工作量其实很大,但也可以学到很多东西。很多东西不靠亲自作是无法体会的。看看自己的导师和领域的大牛最近的研究在LITERATURE中的定位。复制自己感兴趣的文章。


有了这些准备工作之后就可以进行自己的RESEARCH了。有没有什么办法把导师或大牛的文章与其他研究联系起来,有没有什么EMPIRICAL STUDY可以做来支持导师和大牛的论点,这些都是不错的研究方向。另外,一般文章中都会提出一些自己的不足和未来的研究方向。这些都是不错的研究题材。我这里一直强调要跟大牛走。说白了,学术界其实就是被这些人控制着。大家都说中国有学霸,学阀。其实什么地方都一样。论文就是观点之争,不党结派怎么在江湖上混啊。对刚出道的人,最好还是厚道点。多作CONSTRUCTIVE的工作,少批评。我前面给的都是这方面的例子。江湖险恶,只是很多人在作学生的时候不知道罢了。比如说JOURNAL EDITOR的权力其实很大。他们很清楚什么人持有什么观点。他们喜欢的东西就发给持相同观点的审稿人,不喜欢的就发给不同观点的审稿人。结果可想而知。以前的导师不久前让我审一篇稿子。作者声称发现数据支持我导师一篇很重要的JPE文章。看了看文章的统计方法没什么大问题,我当然举双手双脚赞成发表了。


当然也可以指出大牛文章的不足。但是不能为批评而批评。能找出改进方法解决问题的文章才是好文章。比如可以这样写,我复制了A的模型,发现有什么地方和数据不符,原因是什么。我对原模型作了一些改动后,现在模型和数据MATCH了。写作过程一定要注意,多POSITIVE,少NEGATIVE。如在指出A模型和数据的冲突时,不要过多强调这种冲突可能引起的问题。而应该强调解决问题后带来的好处。这样其实已经是对原作者的间接批评了。如果A是领域大牛或作EDITOR,这篇文章十有八九能通过。想跟上大牛步伐,看JOURNAL ARTICLES是不够的。这些JOURNAL上的东西至少是3-4年前的东西了。要多留意WORKING PAPER。列出自己领域20大牛人。经常看看他们在干什么,和自己目前的RESEARCH有什么联系。参加一些WORKING PAPER的EMAILING LIST,比如NBER等。常看看TOP10 DEPARTMENT本领域的SEMINAR LIST。我想再强调一次,这样作的目的并不是要去追逐本领域的HOT TOPIC,而是看看别人的研究和自己目前的RESEARCH有什么联系,能不能给自己点灵感。至少在自己CAREER的前3-4年把RESEARCH INTEREST
限定在两个方向,每个方向整出2篇像样的文章,再考虑换方向。少而精要比泛泛涉猎几个不同方向更容易引起别人注意。就先谈这么多,以后有时间了再补充。

另外,要专心作RESEARCH就要减少在MITBBS的灌水时间。每天减少一小时灌水时间一年能多读多少篇论文啊。没有BBS北美广大WSN能平均提前1年毕业。:-)


再好的RESEARCH IDEA,如果不能很好交流也是白搭。 口语重要,有机会就要多练习。当TA是很好的锻炼。中国人之间也可以说。只有多说才能有进步。坚持说一个学期,你会发现本质的进步。口语不好也不用气馁,除了多练之外,口语其实不象传说中的那么重要,当然想去TEACHING COLLEGE的例外。口语的最低标准是UNDERSTANDABLE。个人认为语言交流有两种不同境界。一种人是滔滔不绝型。想成为这种人除了要思维活跃外,口语一定要能跟的上。另外一种人说的虽然不多,但句句点题。一句废话也不说。这两种人都能给人很深的印象。口语不行的可以建议向这种类型发展。在开口说话之前,先把思路想清楚。无论如何说到底,多练是根本。


关于写作,我同意有人的说法,能写汉语就会写英语。如果总觉得意思没有表达出来,不要找自己英语的问题。一定是思路还没有理清楚。换了让你用汉语写,一样表达不清楚。论文写作,精炼是KING。MANKIW和COCHRANE都有关于这方面的短文,如果你还没看过,不妨从他们的网站上找出来读读。文章最重要的是摘要和简介部份。如果REFEREE看了这两部份之后感觉一头雾水,十之八九要据掉文章。至少我审稿时是这样。从AER,JPE上找几篇文章一看你就对什么是好的写作有个大概了解了。我觉得好的INTRODUCTION上来第一段就要说明你这篇文章研究什么问题,得出什么结论。然后开始介绍这个问题是怎么引起的,你的文章在LITERATURE中是出于什么地位,你研究的贡献在什么地方。接下来稍微详细介绍你怎么实现你的结果的,如你的MODEL SETUP有什么不同,通过什么渠道实现了你想要得到的结果。最后指出论文中不足的地方及未来的研究方向。当然关于写作仁者见仁,智者见智。只要达到有效沟通的目的,形式有多种。


怎么提高写作?同样,多练习。从和导师的沟通练起。多给导师写一些关于自己RESEARCH PROGRESS的NOTES。不要太依赖从导师那里获得IDEA,如果你的导师能每个星期花一个小时执导你的研究,你就很幸运了。当然比较小的经济系情况可能好些,老师也往往更NICE一点。就算NICE的导师,一般也是你要先显示你作研究的潜力,老师才肯花更多时间和精力辅导你。


不要和导师空谈IDEA。如果跑去给导师说,我有一个IDEA,INTUITIVELY,应该可行,你觉得怎么样。从我的经验,导师一定说,SOUNDS PROMISING,不过你要把模型作出来我才知道。他不可能告诉你具体该怎么作。但你弄个30页的PAPER给他看,他也一定不看。为什么,成本太高。他的成本是一小时80多美元,能花2-3个小时看你的文章么。
那怎么办?我的策略是化整为零,多给导师写一些简短的NOTES。一个NOTES大概3-4页左右(DOUBLE SPACE) ,20分钟左右能看完为好。这样作有几个好处。第一,给老师充份时间考虑,得到的指导质量更高。第二,在PROJECT进行过程当中,你能及时得到一些FEEDBACK。如果开始有什么问题,做得越多就错的越多。更重要的是,在写作工程中,你的思路也被组织起来,当然也锻炼写作。


把每个NOTES都当一篇小论文来看待。上来先来个概括,如我最近作了什么工作,得到什么结果,有什么问题需要解决。然后再展开谈。下面是我的一些教训,希望能对大家有所帮助。
1。不要以为导师比你更了解你的TOPIC。第一篇NOTE一定要给导师作一个背景介绍。例如你的研究是基于哪几篇文章,他们之间的关系是什么,你想从什么地方下手等。要有思想准备给他重复几遍之后,他才能开始记住你到底在作什么。


2。不要浪费时间在空谈。没有具体结果支持自己的ARGUMENT之前不要说什么I BELIEVE BLAH BLAH, I THINK BLAH BLAH。把有限的空间用在具体问题和结果上。看看自己以前的NOTES,发现很多NAIIVE的论断。太多这种东西让导师感觉你在浪费时间,而且会觉得你思维不严谨。我觉得和导师在交流的过程当中,很大一个目的就是要让他感到你作研究很严谨。


3。每个NOTE都包括读者所需要的所有信息。不要写什么SEE EQUATION (2) OF MY LASTNOTE。导师没时间去找你上一个NOTE。把信息从新列一遍。如果实在需要很多上次的信息,就把上次的NOTE附在后面。


4。把NOTE要反复阅读几遍再给导师。


5。多用公式或者一些简单的例子帮助导师理解你的结果。


6。措辞上一定要和LITERATURE保持一致,大牛用过的表达方法自己再用。不要自己发明新的术语如果LITERATURE中已经有现成的了。在写作上,多把自己写的东西和大牛写的比较比较,看看同样的意思,别人怎么表达的。


说了这么多废话,提高口语和写作,就两个字:多练。
今天就写到这罢。下次有空了给大家介绍一些NET WORKING的体会。


所谓NETWORKING就是建立自己的关系网。关系网越大,REFEREE是自己朋友的可能性就越高。评TENURE时还需要校外人员对你RESEARCH进行评估。朋友多了自然好办事。当然NETWORKING和自己的研究能力是相辅相成的。不拿出点干货光靠NETWORKING是行不通的。学经济的精着呢。


NETWORKING分内部资源和外部资源。内部指你导师和读博士所在系的其他老师及同学。剩下的就是外部资源了。今天先说说内部的。


NETWORKING的第一步,也是最关键一步就是找导师。导师是你在关系网中的入口。不夸张的说,选对导师你就成功了一半。如果有教父级人物,象SARGENT,LAR HANSEN这种人作你导师,你赚大了。到什么地方都有人罩着。大家都明白导师并不是越有名越好。那好导师的标准是什么呢。首先年纪不能太大,50岁左右最合适。很多系都有一些熊猫级的人物,如年纪偏大的NOBEL PRIZE WINNER。这些人对你的发展帮助不大。只能回中国忽悠国人。首先他们基本已经不在学术前沿了。而且应酬特多,经常被邀请到亚非拉国家去讲座,没时间指导你。没办法,发展中国家就认牌子。更关键的是,你和导师的关系不能到你毕业就终止了。一定要想办法让他把你扶上马再送一程。至少再罩你个3-4年。年纪太大的导师不现实。学术界就这样,人走茶凉,没办法。


其次,导师要PRODUCTIVE。每年有2-3篇TOP FIELD JOURNAL以上的论文。不少教授被称作DEAD WOOD。一看就知道什么意思了罢。找了个DEAD WOOD你毕业时就DEAD了。另一个很重要的标准就是导师要肯花时间指导学生。导师对学生是否CARE, PLACEMENT是检验真理的唯一标准。有些导师把自己以前学生的信息放在自己的网站甚至简历上。一般这样的导师对学生都很CARE学生。老师的人品不要只道听途说。同一个导师对不同的学生也不一样。我在选导师前听说他曾经当面把学生的论文扔进垃圾筒。不过看他学生的PLACEMENT都很好就选了。其实有时候导师显得很MEAN也是被逼的。如果自己是大牛,对学生又“滥爱” ,所有人都会找你作导师。你不被学生烦死才怪。我们系有几个NICE的FACULTY就是这样被BURNED OUT的。学术界本身就是一个JUNGLE,再牛的人如果2-3年没什么像样的文章也会很快FADE OUT。所以你一般开始和这些人接触时,往往他们有点带理不理的。特别是你去找他们空谈一些什么IDEA,他们恨不得一脚把你踹出去。对导师期望不要太高。如果他一星期花一个小时指导你,已经很好了。


但不要因为困难就找JUNIOR FACULTY作导师。除非你自信能毕业前在TOP FIELD JOURNAL以上的刊物发表独立作者的文章。等毕业时你就知道导师的NETWORKING有多重要了。从我去年RECRUITING的经验看,没人会花时间把所有3-400份申请认真看一边。我们直接到TOP 15的网站,看看大牛有什么弟子。只要和要招的方向沾边的,统统面试。就算你是TOP 15,但导师是个JUNIOR,又没有PUBLICATION,一样不睬你。然后从15到30的网站上看有没有什么中牛的弟子看起来PROMISING的。如果有,把导师的推荐信找出来读。如果导师强烈推荐,也面试。这样下来,至少有30多个CANDIDATES了。让秘书把在LIST上人的申请拿出来,其他直接存档了。然后再大家传阅这30多个申请,从里面挑出25-30个人面试。如果你导师没有一定知名度,你又没有论文发表,你的申请被看的概率基本为零。
早在JOB MARKET正式开始前,你的导师已经在给你作宣传了。比较明显的是他可能在自己的WORKING PAPER中CITE你的毕业论文。大牛的WORKING PAPER都是万人瞻仰的被他CITE后你的知名度一下就上去了。还有很多幕后工作你根本不知道。在9-12月之间的SEMINAR和CONFERENCE上,除了讨论RESEARCH之外,一个重要的话题就是推销学生。“老张,今年你们招宏观的人么?我有一学生很好,他的毕业论文研究BLAH BLAH ” 这种宣传对15-30名之间的系非常重要。建议你把自己申请学校的LIST给你的导师。如果你有什么特别想去的地方,让他知道。他会在适当场合有的放矢地给你宣传一下。


对大多数人讲,自己拿博士学位的系可能是自己呆过的最好的经济系了。所以要好好利用。除了自己的导师外,要和系上其他老师保持紧密联系。如果有两个自己方向的牛人在系上,让他们COCHAIR。JUNIOR FACULTY虽然不能作CHAIR,但也要和他们经常交流。这些人往往更NICE,可以成为你COAUTHOR的对象。同FIELD的学生也是很好的资源。不要把他们当作你的竞争对手。如果别人作的比自己好,不要嫉妒。自己当不成明星,就当明星的朋友。想想自己平时还要挖空心思去接近牛人。如果自己的朋友一天成为牛人,自己岂不近水楼台先得月?


内部指你导师和读博士所在系的其他老师及同学。剩下的就是外部资源了。今天我们继续说说外部资源。


建立关系网前,首先对自己FIELD有什么牛人做个大概了解。基本策略和找女朋友一样,要普遍撒网,重点培养。列一个黑名单,包括本FIELD在 TOP 5 JOURNAL 担任EDITORIAL 职务的大牛;在本FIELD TOP JOURNAL里担任EDITORIAL职务的;加上你导师,如果他还没在LIST上。这样一划拉,至少也有二三十个了。怎么和这些人拉上关系呢?还是要从导师入手。找找黑名单上谁和导师合作过,谁和导师的观点比较接近。这些人十有八九和导师是朋友,列为重点发展对象。学术界错综复杂的关系其实完全和中国的关系网有一拼。不少牛人之间大学是ROOMMATE,或者研究生同一个导师。如果你是这种朋友的弟子,自然对你会有所照顾。


另外自己研究TOPIC领域的几个牛人也是重点发展对象。即使和自己导师没什么直接联系,也要想办法接近。第二批发展对象是自己领域里的RISING STAR。每年看看本领域TOP 15 SCHOOL里有什么人在MARKET上,TOP 30 DEPARTMENTS 里哪些AP是和自己一个方向。这些人由于初露头脚,往往更容易接近一些。相对大牛而言,这些人更容易成为自己的REFEREE。大牛一般不屑作我等小虾的REFEREE。他们经常把JUNIOR的SUBMISSION PASS 给别的JUNIOR。在我REFEREE的文章中,JUNIOR FACULTY 占了2/3。
列好了发展对象,什么时候开始建立关系网,怎么建立呢?我前面说过,说到底RESEARCH是KING,NETWORKING只是辅助作用。当自己的RESEARCH还不很成熟时,不要花太多精力去拉关系。这时候可以采用守株待兔的策略。可以积极接近系里的SEMINAR VISITOR 和其他短期VISITOR。如果有黑名单上的人作SEMINAR,一定要把论文提前认真读一遍,想一到两个SMART QUESTIONS。至于什么是SMART QUESTIONS,下面只是我个人看法。一句话,做人要厚道,尤其是刚踏入江湖的人。一定要牢记自己提问题的目的是帮助作者添砖加瓦,如何把论文作得更严谨,更完美,而不是去挖别人墙角。可以看看有没有相关的LITERATURE被作者漏掉了,文章逻辑是不是严谨,THEORY和EMPIRICAL部份是不是对应,有没有什么简单的ROBUSTNESS TEST作者可以考虑一下。总之,这种CONSTRUCTIVE的问题更容易引起作者的认真考虑,容易被采纳。


但是VISITOR不可能对你有什么印象如果你仅仅在SEMINAR上提个问题。要找机会和他们面谈一会儿。VISITOR往往会在系里呆一段时间。到他办公室去介绍一下自己的RESEARCH,自己的RESEARCH和VISITOR的有什么相关的地方。去之前要先作个RESEARCH,看看VISITOR以前作什么,现在正在作什么,这样话题更多一些。不要希望他们能记住你的名字。但一定要自报门户,让他知道你是谁的学生。让他知道你导师有个优秀的学生会在未来的MARKET上,方便导师以后推销你。


有了一篇像样的文章后,就可以加大NETWORKING的力度。把文章发给自己黑名单上的人。但发之前一定要认真考虑,可以征求一下导师的意见。文章要有一定的质量才能起到给自己作宣传的作用,不然会适得其反。尤其是在TOP SCHOOL 的学生,开始大家会很SERIOUS的对待你。如果发现你的论文也就是TERM PAPER的水平,下次你再发文章给他们,恐怕没人再看了。所以对外NETWORKING太早不但不能帮助你,反而可能把你BURN OUT。文章一定要认真修改之后在给大家传阅。找NATIVE SPEAKER纠正语法错误。
发给别人时,不要仅仅说我有一篇论文和你的研究相关,希望你看后给我提提意见。首先,如果自己引用了他的论文,要让他知道。其次,对自己的论文作一个简短的介绍。对于这种骚扰,大部份人不会有什么回应。NICE点的可能回个EMAIL说,感谢发论文给他,有什么COMMENTS会给你说。但能认真给你提建议的应该很少。但不要气馁,至少自己的名字让别人看到了。自己一二年级时对SEMINAR完全听不懂,但还是坚持去。不图别的,就是和老师混个脸熟。同样作为JUNIOR,不要怕热脸贴冷屁股,贴几次就热了。


有人问我读书期间去参加CONFERENCE有没有帮助。我个人感觉帮助不大。很多CONFERENCE有学生SESSION,去这些SESSION的往往是学生。接触的人很有限。但如果决定参加,就要好好利用。认真看看CONFERENCE的PROGRAM,有没有黑名单上的人参加。如果有,要参加他们的SESSION,SESSION结束后要留下来给他们聊几句再走。但这种大型CONFERENCE上大家都忙着SOCIAL,一般不愿意花太多时间和STUDENTS TALK。


真正的NETWORKING我觉得是在上JOB MARKET之后。有很多介绍JOB MARKET的文章里包括了怎么INTERVIEW和FLYOUT,我这里就不罗嗦了。这两个环节都是自己认识人的好机会。


工作后有什么资源可以利用么?第一是系里的SEMINAR,争取当系里的SEMINAR ORGANIZER。实在不行,每个学期争取请1到2个自己的朋友来讲座。这时的主动权就完全掌握在自己手里了。把黑名单上的人排个顺序。自己研究TOPIC的人排在前面,挨个请。以前不认识的也可以。一般这种邀请别人不会拒绝,除非是极牛的人。他们实在太忙。但给他们发个邀请,就算拒绝了他也会对你有个印象。人请来了自然要好好招待,安排旅馆,陪着吃饭自然免不了。吃饭时抓住时机给别人介绍自己的论文。而且要介绍自己正在或者正准备作的PROJECT,很多COAUTHORSHIP就是在饭桌上产生的。别以为这一套只有在中国行得通,其实是世界通用的。别人请来的SEMINAR SPEAKER如果有机会,吃饭也是要同去的。两杯酒一喝,不管中国人还是外国人,关系都感觉更近了一步。


有机会多参加CONFERENCE。在CONFERENCE上要PRESENT或作DISCUSSANT。这样才有暴光度。作DISCUSSANT时要肯花时间。一个好的DISCUSSANT很多时候比PRESENTER给人的印象还深。


刚毕业的JUNIOR一定要避免一个人单干。找导师合作一两篇文章。让他扶你上马后,再送你一程。如果本系有比较出名的SENIOR,想办法和他们合作效果可能更好。


毕业后REFEREE的工作会逐渐多起来。这时一个给EDITOR留个好印象的绝好机会。认真准时完成报告。写报告时要厚道,不要一味批评别人。当然有人写很MEAN的REPORT,这完全是个人选择。我一般即使决定要据某个文章,除了指出它不足的地方外,都列几个CONSTRUCTIVE的COMMENTS。REFEREE是匿名的,EDITOR可是署名的。虽然我们不应该TAKE IT PERSONALLY,但如果你从一个EDITOR手里收到一个很MEAN的REPORT,自然会多少有点迁怒于EDITOR。EDITOR还是希望有一篇中肯,NICE的REPORT。


在REPORT中不要让别人CITE自己的文章,尤其是自己要据的文章。除了给EDITOR留下不好印象外,还得罪了被审稿的。别人一下就可以猜出是你审的。你如果有什么仇人,可以害他一下。写一篇MEAN REPORT,然后让他CITE你仇人的文章。呵呵,开个玩笑而已。
如果文章不错,建议接受,写一篇很NICE的REPORT。写几句很明显的赞扬的话,让作者一看就知道你一定是建议REVISE&RESUBMIT。适当谈谈这篇文章和自己文章的关系。不要明显CITE自己的文章,除非是联系非常紧密。可以把自己文章的IDEA介绍一下,讨论一下这两篇文章的互补之处。作者回去作个LITERATURE SEARCH,十有八九能找到你。
以上只是我个人的一点儿体会,欢迎大家补充。--http://blog.renren.com/blog/220859777/461281742#nogo

Excel使用技巧

快捷键之在工作表中移动和滚动向上、下、左或右移动单元格箭头键
移动到当前数据区域的边缘:CTRL+ 箭头键
移动到行首:HOME
移动到工作表的开头:CTRL+HOME
移动到工作表的最后一个单元格。:CTRL+END
向下移动一屏:PAGE DOWN
向上移动一屏:PAGE UP
向右移动一屏:ALT+PAGE DOWN
向左移动一屏:ALT+PAGE UP
移动到工作簿中下一个工作表:CTRL+PAGE DOWN
移动到工作簿中前一个工作表:CTRL+PAGE UP
移动到下一工作簿或窗口:CTRL+F6 或 CTRL+TAB
移动到前一工作簿或窗口:CTRL+SHIFT+F6
移动到已拆分工作簿中的下一个窗格:F6
移动到被拆分的工作簿中的上一个窗格:SHIFT+F6
滚动并显示活动单元格:CTRL+BACKSPACE
显示“定位”对话框:F5
显示“查找”对话框:SHIFT+F5
重复上一次“查找”操作:SHIFT+F4
在保护工作表中的非锁定单元格之间移动:TAB


2>Excel快捷键之处于END模式时在工作表中移动
打开或关闭 END 模式:END
在一行或列内以数据块为单位移动:END, 箭头键
移动到工作表的最后一个单元格.:END, HOME
在当前行中向右移动到最后一个非空白单元格。:END, ENTER

3>Excel快捷键之处于“滚动锁定”模式时在工作表中移动
打开或关闭滚动锁定:SCROLL LOCK
移动到窗口中左上角处的单元格:HOME
移动到窗口中右下角处的单元格:END
向上或向下滚动一行:上箭头键或下箭头键
向左或向右滚动一列:左箭头键或右箭头键

4>Excel快捷键之用于预览和打印文档
显示“打印”对话框:CTRL+P
在打印预览中时:
当放大显示时,在文档中移动:箭头键
当缩小显示时,在文档中每次滚动一页:PAGE UP
当缩小显示时,滚动到第一页:CTRL+上箭头键
当缩小显示时,滚动到最后一页:CTRL+下箭头键

5>Excel快捷键之用于工作表、图表和宏
插入新工作表:SHIFT+F11
创建使用当前区域的图表:F11 或 ALT+F1
显示“宏”对话框:ALT+F8
显示“Visual Basic 编辑器”:ALT+F11
插入 Microsoft Excel 4.0 宏工作表:CTRL+F11
移动到工作簿中的下一个工作表:CTRL+PAGE DOWN
移动到工作簿中的上一个工作表:CTRL+PAGE UP
选择工作簿中当前和下一个工作表:SHIFT+CTRL+PAGE DOWN
选择当前工作簿或上一个工作簿:SHIFT+CTRL+PAGE UP

6>Excel快捷键之选择图表工作表
选择工作簿中的下一张工作表:CTRL+PAGE DOWN
选择工作簿中的上一个工作表:CTRL+PAGE UP,END, SHIFT+ENTER

7>Excel快捷键之用于在工作表中输入数据
完成单元格输入并在选定区域中下移:ENTER
在单元格中折行:ALT+ENTER
用当前输入项填充选定的单元格区域:CTRL+ENTER
完成单元格输入并在选定区域中上移:SHIFT+ENTER
完成单元格输入并在选定区域中右移:TAB
完成单元格输入并在选定区域中左移:SHIFT+TAB
取消单元格输入:ESC
删除插入点左边的字符,或删除选定区域:BACKSPACE
删除插入点右边的字符,或删除选定区域:DELETE
删除插入点到行末的文本:CTRL+DELETE
向上下左右移动一个字符:箭头键
移到行首:HOME
重复最后一次操作:F4 或 CTRL+Y
编辑单元格批注:SHIFT+F2
由行或列标志创建名称:CTRL+SHIFT+F3
向下填充:CTRL+D
向右填充:CTRL+R
定义名称:CTRL+F3

8>Excel快捷键之设置数据格式
显示“样式”对话框:ALT+' (撇号)
显示“单元格格式”对话框:CTRL+1
应用“常规”数字格式:CTRL+SHIFT+~
应用带两个小数位的“贷币”格式:CTRL+SHIFT+$
应用不带小数位的“百分比”格式:CTRL+SHIFT+%
应用带两个小数位的“科学记数”数字格式:CTRL+SHIFT+^
应用年月日“日期”格式:CTRL+SHIFT+#
应用小时和分钟“时间”格式,并标明上午或下午:CTRL+SHIFT+@
应用具有千位分隔符且负数用负号 (-) 表示:CTRL+SHIFT+!
应用外边框:CTRL+SHIFT+&
删除外边框:CTRL+SHIFT+_
应用或取消字体加粗格式:CTRL+B
应用或取消字体倾斜格式:CTRL+I
应用或取消下划线格式:CTRL+U
应用或取消删除线格式:CTRL+5
隐藏行:CTRL+9
取消隐藏行:CTRL+SHIFT+( 左括号
隐藏列:CTRL+0(零)
取消隐藏列:CTRL+SHIFT+)右括号

9>Excel快捷键之编辑数据
编辑活动单元格并将插入点放置到线条末尾:F2
取消单元格或编辑栏中的输入项:ESC
编辑活动单元格并清除其中原有的内容:BACKSPACE
将定义的名称粘贴到公式中:F3
完成单元格输入:ENTER
将公式作为数组公式输入:CTRL+SHIFT+ENTER
在公式中键入函数名之后,显示公式选项板:CTRL+A
在公式中键入函数名后为该函数插入变量名和括号:CTRL+SHIFT+A
显示“拼写检查”对话框。:F7 键

10>Excel快捷键之插入、删除和复制选中区域
复制选定区域:CTRL+C
剪切选定区域:CTRL+X
粘贴选定区域:CTRL+V
清除选定区域的内容:DELETE
删除选定区域:CTRL+ 连字符
撤消最后一次操作:CTRL+Z
插入空白单元格:CTRL+SHIFT+ 加号

11>Excel快捷键之在选中区域内移动
在选定区域内由上往下移动:ENTER
在选定区域内由下往上移动:SHIFT+ENTER
在选定区域内由左往右移动:TAB
在选定区域内由右往左移动:SHIFT+TAB
按顺时针方向移动到选定区域的下一个角:CTRL+PERIOD
右移到非相邻的选定区域:CTRL+ALT+右箭头键
左移到非相邻的选定区域:CTRL+ALT+左箭头键

12>Excel快捷键之选择单元格、列或行
选定当前单元格周围的区域:CTRL+SHIFT+*(星号)
将选定区域扩展一个单元格宽度:SHIFT+ 箭头键
选定区域扩展到单元格同行同列的最后非空单元格:CTRL+SHIFT+ 箭头键
将选定区域扩展到行首:SHIFT+HOME
将选定区域扩展到工作表的开始:CTRL+SHIFT+HOME
将选定区域扩展到工作表的最后一个使用的单元格:CTRL+SHIFT+END
选定整列:CTRL+SPACEBAR
选定整行:SHIFT+SPACEBAR
选定整个工作表:CTRL+A
如果选定了多个单元格则只选定其中的单元格:SHIFT+BACKSPACE
将选定区域向下扩展一屏:SHIFT+PAGE DOWN
将选定区域向上扩展一屏:SHIFT+PAGE UP
选定了一个对象,选定工作表上的所有对象:CTRL+SHIFT+SPACEBAR
在隐藏对象、显示对象与对象占位符之间切换:CTRL+6
显示或隐藏“常用”工具栏:CTRL+7
使用箭头键启动扩展选中区域的功能:F8
将其他区域中的单元格添加到选中区域中:SHIFT+F8
将选定区域扩展到窗口左上角的单元格:SCROLLLOCK, SHIFT+HOME
将选定区域扩展到窗口右下角的单元格:SCROLLLOCK, SHIFT+END

13>Excel快捷键之处于End模式时展开选中区域
打开或关闭 END 模式:END
将选定区域扩展到单元格同列同行的最后非空单元格:END, SHIFT+ 箭头键
将选定区域扩展到工作表上包含数据的最后一个单元格:END, SHIFT+HOME
将选定区域扩展到当前行中的最后一个单元格:END, SHIFT+ENTER

14>Excel快捷键之选择含有特殊字符单元格
选中活动单元格周围的当前区域:CTRL+SHIFT+*(星号)
选中当前数组,此数组是活动单元格所属的数组:CTRL+/
选定所有带批注的单元格:CTRL+SHIFT+O (字母 O)
选择行中不与该行内活动单元格的值相匹配的单元格:CTRL+\
选中列中不与该列内活动单元格的值相匹配的单元格:CTRL+SHIFT+|
选定当前选定区域中公式的直接引用单元格:CTRL+[ (左方括号)
选定当前选定区域中公式直接或间接引用的所有单元格:CTRL+SHIFT+{ 左大括号
只选定直接引用当前单元格的公式所在的单元格:CTRL+] (右方括号)
选定所有带有公式的单元格,这些公式直接或间接引用当前单元格:CTRL+SHIFT+}右大括号--http://blog.renren.com/share/228687796/3843902696


1 编辑技巧

  (1)分数的输入

  如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再输入分数“1/5”。

  (2)序列“001”的输入

  如果直接输入“001”,系统会自动判断001为数据1,解决办法是:首先输入“'”(西文单引号),然后输入“001”。

  (3)日期的输入 

  如果要输入“4月5日”,直接输入“4/5”,再敲回车就行了。如果要输入当前日期,按一下“Ctrl+;”键。

  (4) 填充条纹  

  如果想在工作簿中加入漂亮的横条纹,可以利用对齐方式中的填充功能。先在一单元格内填入“*”或“~”等符号,然后单击此单元格,向右拖动鼠标,选中横向若干单元格,单击“格式”菜单,选中“单元格”命令,在弹出的“单元格格式”菜单中,选择“对齐”选项卡,在水平对齐下拉列表中选择“填充”,单击“确定”按钮。

  (5)多张工作表中输入相同的内容

  几个工作表中同一位置填入同一数据时,可以选中一张工作表,然后按住Ctrl键,再单击窗口左下角的Sheet1、Sheet2......来直接选择需要输入相同内容的多个工作表,接着在其中的任意一个工作表中输入这些相同的数据,此时这些数据会自动出现在选中的其它工作表之中。输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。

  (6)不连续单元格填充同一数据

  选中一个单元格,按住Ctrl键,用鼠标单击其他单元格,就将这些单元格全部都选中了。在编辑区中输入数据,然后按住Ctrl键,同时敲一下回车,在所有选中的单元格中都出现了这一数据。

  (7)在单元格中显示公式

  如果工作表中的数据多数是由公式生成的,想要快速知道每个单元格中的公式形式,以便编辑修改,可以这样做:用鼠标左键单击“工具”菜单,选取“选项”命令,出现“选项”对话框,单击“视图”选项卡,接着设置“窗口选项”栏下的“公式”项有效,单击“确定”按钮。这时每个单元格中的分工就显示出来了。如果想恢复公式计算结果的显示,就再设置“窗口选项”栏下的“公式”项失效即可。

  (8)利用Ctrl+*选取文本

  如果一个工作表中有很多数据表格时,可以通过选定表格中某个单元格,然后按下Ctrl+*键可选定整个表格。Ctrl+*选定的区域为:根据选定单元格向四周辐射所涉及到的有数据单元格的最大区域。这样我们可以方便准确地选取数据表格,并能有效避免使用拖动鼠标方法选取较大单元格区域时屏幕的乱滚现象。

  (9)快速清除单元格的内容

  如果要删除内容的单元格中的内容和它的格式和批注,就不能简单地应用选定该单元格,然后按Delete键的方法了。要彻底清除单元格,可用以下方法:选定想要清除的单元格或单元格范围;单击“编辑”菜单中“清除”项中的“全部”命令,这些单元格就恢复了本来面目。

2、单元格内容的合并

  根据需要,有时想把B列与C列的内容进行合并,如果行数较少,可以直接用“剪切”和“粘贴”来完成操作,但如果有几万行,就不能这样办了。

  解决办法是:在C行后插入一个空列(如果D列没有内容,就直接在D列操作),在D1中输入“=B1&C1”,D1列的内容就是B、C两列的和了。选中D1单元格,用鼠标指向单元格右下角的小方块“■”,当光标变成"+"后,按住鼠标拖动光标向下拖到要合并的结尾行处,就完成了B列和C列的合并。这时先不要忙着把B列和C列删除,先要把D列的结果复制一下,再用“选择性粘贴”命令,将数据粘贴到一个空列上。这时再删掉B、C、D列的数据。

  下面是一个“&”实际应用的例子。用AutoCAD绘图时,有人喜欢在EXCEL中存储坐标点,在绘制曲线时调用这些参数。存放数据格式为“x,y”的形式,首先在Excel中输入坐标值,将x坐标值放入A列,y坐标值放入到B列,然后利用“&”将A列和B列合并成C列,在C1中输入:=A1&","&B1,此时C1中的数据形式就符合要求了,再用鼠标向下拖动C1单元格,完成对A列和B列的所有内容的合并。

  合并不同单元格的内容,还有一种方法是利用CONCATENATE函数,此函数的作用是将若干文字串合并到一个字串中,具体操作为“=CONCATENATE(B1,C1)”。比如,假设在某一河流生态调查工作表中,B2包含“物种”、B3包含“河鳟鱼”,B7包含总数45,那么:输入“=CONCATENATE("本次河流生态调查结果:",B2,"",B3,"为",B7,"条/公里。")” 计算结果为:本次河流生态调查结果:河鳟鱼物种为45条/公里。

3、条件显示

  我们知道,利用If函数,可以实现按照条件显示。一个常用的例子,就是教师在统计学生成绩时,希望输入60以下的分数时,能显示为“不及格”;输入60以上的分数时,显示为“及格"。这样的效果,利用IF函数可以很方便地实现。假设成绩在A2单元格中,判断结果在A3单元格中。那么在A3单元格中输入公式: =if(A2<60,“不及格”,“及格”)同时,在IF函数中还可以嵌套IF函数或其它函数。  

  例如,如果输入: =if(A2<60,“不及格”,if(A2<=90,“及格”,“优秀"))就把成绩分成了三个等级。 

  如果输入 =if(A2<60,“差",if(A2<=70,“中”,if(A2<90,“良”,“优”)))就把成绩分为了四个等级。  

  再比如,公式: =if(SUM(A1:A5>0,SUM(A1:A5),0)此式就利用了嵌套函数,意思是,当A1至A5的和大于0时,返回这个值,如果小于0,那么就返回0。还有一点要提醒你注意:以上的符号均为半角,而且IF与括号之间也不能有空格。

4、自定义函数

  虽然Excel中已有大量的内置函数,但有时可能还会碰到一些计算无函数可用的情况。假如某公司采用一个特殊的数学公式计算产品购买者的折扣,如果有一个函数来计算岂不更方便?下面就说一下如何创建这样的自定义函数。

  自定义函数,也叫用户定义函数,是Excel最富有创意和吸引力的功能之一,下面我们在Visual Basic模块中创建一个函数。在下面的例子中,我们要给每个人的金额乘一个系数,如果是上班时的工作餐,就打六折;如果是加班时的工作餐,就打五折;如果是休息日来就餐,就打九折。首先打开“工具”菜单,单击“宏”命令中的“Visual Basic编辑器”,进入Visual Basic编辑环境,在“工程-VBAobject”栏中的当前表上单击鼠标右键,选择“插入”-“模块”,在右边栏创建下面的函数rrr,代码如下: Function rrr(tatol, rr) If rr = "上班" Then rrr = 0.6 * tatol ElseIf rr = "加班" Then rrr = 0.5 * tatol ElseIf rr = "休息日" Then rrr = 0.9 * tatol End If End Function。

  这时关闭编辑器,只要我们在相应的列中输入rrr(F2,B2),那么打完折后的金额就算出来了。

5、矩阵计算

  Excel的强大计算功能,不但能够进行简单的四则运算,也可以进行数组、矩阵的计算。

  (1)数组和矩阵的定义  

  矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括弧即自动产生,数组域得以确认。 

  一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B={E1:G3}等。数组名的设置步骤是:选定数组域,单击“插入”菜单,选择“名称”项中的“定义”命令,输入数组名,单击“确定”按钮即可。更简单的命名办法为:选择数组域,单击名称框,直接输入名称就行了。  

  矩阵函数是Excel进行矩阵计算的专用模块。用“插入”-“函数”命令打开“粘贴函数”对话框,选中函数分类栏中的“数学与三角函数”,在右边栏常用的矩阵函数有: MDETERM——计算一个矩阵的行列式; MINVERSE——计算一个矩阵的逆矩阵; MMULT——计算两个矩阵的乘积; SUMPRODUCT——计算所有矩阵对应元素乘积之和。

(2)矩阵的基本计算

数组计算和矩阵计算有很大的区别,比如下面这个例子中,A和B都是定义好的数组,因为这两个数组都是3×3的,输出结果也是3×3个单元格。计算时先选定矩阵计算结果的输出域,为3×3的单元格区域,然后输入公式。如果输入“=A+B”或“=A-B”,计算结果是数组对应项相加或相减,输入“=A*B”表示数组A和B相乘,输入“=A/B”表示数组A除数组B。如果要进行矩阵计算,就要用到相应的矩阵函数。矩阵相加、相减与数组的加减表达形式是一样的,也是“=A+B”和“=A-B”,表示矩阵相乘可以输入“=MMULT(A,B)”,而矩阵相除是矩阵A乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。公式输入后,同时按Shift+Ctrl+Enter键得到计算结果。对于更复杂的矩阵计算,可以采用分步计算。

6、自动切换输入法

在一张工作表中,往往是既有数据,又有文字,这样在输入时就需要来回在中英文之间反复切换输入法,非常麻烦。如果你要输入的东西很有规律性,比如这一列全是单词,下一列全是汉语解释,你可以用以下方法实现自动切换。方法是:

(1)选中要输入英文的列,单击“数据”菜单,选择“有效性...”命令,在弹出的“数据有效性”对话框中,选中“输入法模式”选项卡,在“模式”框中选择“关闭(英文模式)”命令,单击“确定”按钮。

  (2)选中要输入汉字的列,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择“打开”命令,单击“确定”按钮。这样,当光标在前一列时,可以输入英文,在下一列时,直接可以输入中文,从而实现了中英文输入方式之间的自动切换。

7、批量删除空行

  有时我们需要删除Excel工作薄中的空行,一般做法是将空行一一找出,然后删除。如果工作表的行数很多,这样做就非常不方便。我们可以利用“自动筛选”功能,把空行全部找到,然后一次性删除。做法:先在表中插入新的一个空行,然后按下Ctrl+A键,选择整个工作表,用鼠标单击“数据”菜单,选择“筛选”项中的“自动筛选”命令。这时在每一列的顶部,都出现一个下拉列表框,在典型列的下拉列表框中选择“空白”,直到页面内已看不到数据为止。

  在所有数据都被选中的情况下,单击“编辑”菜单,选择“删除行”命令,然后按“确定”按钮。这时所有的空行都已被删去,再单击“数据”菜单,选取“筛选”项中的“自动筛选”命令,工作表中的数据就全恢复了。插入一个空行是为了避免删除第一行数据。

  如果想只删除某一列中的空白单元格,而其它列的数据和空白单元格都不受影响,可以先复制此列,把它粘贴到空白工作表上,按上面的方法将空行全部删掉,然后再将此列复制,粘贴到原工作表的相应位置上。

8、宏的应用

  宏是一个指令集,用来告诉EXCEL来完成用户指定的动作。宏类似于计算机程序,但是它是完全运行于EXCEL之中的,我们可以使用宏来完成枯燥的、频繁的重复性工作。宏完成动作的速度比用户自己做要快得多。例如,我们可以创建一个宏,用来在工作表的每一行上输入一组日期,并在每一单元格内居中对齐日期,然后对此行应用边框格式。我们还可以创建一个宏,在“页面设置”对话框中指定打印设置并打印文档。

  由于宏病毒的影响和对编程的畏惧心理,使很多人不敢用“宏”,或是不知道什么时候可以找宏来帮忙。其实你尽管放心大胆地去用,如果只是用“录制宏”的方法,根本就没有什么难的,只是把一些操作象用录音机一样录下来,到用的时候,只要执行这个宏,系统就会把那操作再执行一遍。

  下面给出了宏的应用场合,只要用“录制宏”就可以帮你完成任务,而不需要编程。如果想对所录制的宏再进行编辑,就要有一定的VBA知识了。

  * 设定一个每个工作表中都需要的固定形式的表头;

  * 将单元格设置成一种有自己风格的形式;

  * 每次打印都固定的页面设置;

  * 频繁地或是重复地输入某些固定的内容,比如排好格式的公司地址、人员名单等;

  * 创建格式化表格;

  * 插入工作表或工作薄等。

需要指出的是,EXCEL中的宏与WORD中的宏有些不同之处,对于录制的操作,它会记住单元格的坐标(即所有的引用都是绝对的),所以在涉及到与位置有关的操作时,要格外注意。如果相用相对引用,可以借助于Offset方法,比如下面的语句: ActiveCell.Offset(1,0). range("A1").select 宏的应用是很广的,上面提到的只是一点点,如果真的用起来,你会发现它有更丰富的内容和更灵活的应用方法。

9.函数的使用

这一章,我们来学习在Excel中使用公式和函数。这是相当重要的一部分,在Excel中实现数据计算功能全靠它们了。

我们在Excel中计算一下公式y=(3x+1)/2在x从1变化到20时y的值:先在第一列中输入好1到20这些数,然后在B1单元格中输入“=(3*A1+1)/2”,将其填充到下面的单元格中,就可以得到直观的结果了;可以很容易看出,这里“*”表示的是乘,“/”表示的就是除,括号的作用和平时是相同的。

创建公式是很容易的,关键在于你要想好怎么去创建这个公式,以及合理的使用单元格的引用。

最常用的函数功能就是求和,Excel中求和功能有很多的用法,最简单的就是自动求和功能了。

我们来看一个表格,现在我们需要把这个货物表的总值部分的全部款项汇总一下,看看到底有多少:选中这些单元格和下面的“总计”单元格,然后单击工具栏上的“自动求和”按钮,在“总计”栏中就出现了上面单元格的数字的和。

这个自动求和功能可以自动在行或列中求和,对行中数据的求和同对列中数据的求和方法基本一致;但是象下面这个表,要加和的单元格并不是在同一个行或者列上,这时自动求和功能就没有办法了。 

这时我们就要用到Excel提供的函数功能来实现了:单击要填入分数和的单元格,单击工具栏上的“输入公式”按钮,现在左边的名称框变成了一个函数的选择列表框,单击这个列标框的下拉箭头,从中选择“SUM”项。在编辑栏中就出现了函数SUM,单击“SUM”栏的Number1输入框的拾取按钮,从工作表中选择要将数值相加的单元格,单击输入框中的“返回”按钮回到刚才的对话框,单击“确定”按钮就可以了。(如下图)如果要求和单元格不连续的话,你也可以用Ctrl键来配合鼠标进行选取。Excel也有求平均数的函数:选中要放置平均数的单元格,单击“输入公式”按钮,单击左边的函数选择下拉列表框的下拉箭头,选择平均数函数“AVERAGE”项,然后选择取值的单元格,单击“确定”按钮就可以了。

10、选择性粘贴

Excel为我们提供了一些自动功能。先来看看选择性粘贴:这里的选择性粘贴是指把剪贴板中的内容按照一定的规则粘贴到工作表中,而不是像前面那样简单地拷贝。就拿这个表来说吧。

这里的“利润”一栏是我们使用公式计算得到的,选择这一栏,复制到Sheet2中,可以看到数值并没有跟着复制过来;这时就可以使用选择性粘贴了:打开“编辑”菜单,单击“选择性粘贴”命令,打开“选择性粘贴”对话框,在“粘贴”一栏中选择“数值”,单击“确定”按钮,数值就可以粘贴过来了。这种情况不仅是在几个工作表之间复制时会发生,在同一个工作表中进行复制时也会遇到,到时可要注意。

选择性粘贴还有一个很常用的功能就是转置功能。简单地理解就是把一个横排的表变成竖排的或把一个竖排的表变成横排的:选择这个表格,复制一下,切换到另一个工作表中,打开“选择性粘贴”对话框,选中“转置”前的复选框,单击“确定”按钮,可以看到行和列的位置相互转换了过来。

另外一些简单的计算也可以用选择性粘贴来完成:选中这些单元格,复制一下,然后打开“选择性粘贴”对话框,在“运算”一栏选择“加”,单击“确定”按钮,单元格的数值就是原来的两倍了。此外你还可以粘贴全部格式或部分格式,或只粘贴公式等等。

11、拼写检查

  Excel还提供了拼写检查的功能,打开“工具”菜单,单击“拼写”命令,Excel就会自动对当前工作表中的内容进行拼写检查,在错误的地方会弹出“拼写检查”对话框,第一行中显示的是Excel认为有错误的单词,下面的“更改为”输入框中显示的是Excel默认的应该替换为的单词,再下面的“建议”列表框中显示的是在词典中与错误的单词比较接近的词。

单击右边的“更改”按钮可以把当前的词替换为“更改为”输入框中的词;然后Excel就会自动搜寻下一个错误的单词,从“建议”列表中选择要替换为的单词,单击“更改”按钮,就可以把单词替换为所选择的词;而选择“忽略”按钮可以忽略此处错误。

12、自动更正

  现在我们在单元格中输入(c)然后按一下回车,可以看到输入的字符变了。这是Excel的自动更正功能,我们再输入(r),回车;同样可以看到输入的字符又变了。其实这些都是可以设置的:打开“工具”菜单,单击“自动更正”命令,打开“自动更正”对话框,这里列出了所有自动更正的选择,在“键入时自动替换”列表中的头两个就是我们刚才看到的,输入(c)则替换为(c),输入(r)则替换为(r)。

我们还可以把自己容易犯错的词做一个自动更正的词条,以后再输入起来就很方便了:在“替换”输入框中写入“制做”,在“替换为”输入框中填上“制作”,单击“添加”按钮将其添加到列表中,单击“确定”按钮;在单元格中输入“制做”,回车,可以看到“制做”就被替换成了“制作”。

如果你不想使用哪个自动更正的选项了,就在自动更正对话框中把这个选项去掉就行了。

13、 宏的使用

另外还有一个最重要的自动功能,那就是“宏”。我们每次听到“宏”总是和病毒在一块儿,一般自己做的宏是不会对自己有害的。合理地使用宏可以大幅度地提高工作效率,而且有些操作不使用宏的话会很麻烦。最简单的宏可以通过录制来做。

比如我们写一个宏,让它删除A3单元格的内容:打开“工具”菜单,单击“宏”项,从子菜单中选择“录制新宏”命令,弹出“录制新宏”对话框,在“宏名”输入框中输入宏的名字,单击“确定”按钮,在界面中出现了“停止录制”工具栏,我们就可以进行宏的录制了,在状态栏的最左边可以看到目前的状态是“就绪录制”;单击A3单元格,按一下Delete键,这个宏的操作就算完成了,单击工具栏上的“停止录制”按钮,工具栏自动消失了。

现在在A3单元格中随便填上数值,选择其它的单元格,打开“工具”菜单中的“宏”子菜单,选择“宏”命令,打开“宏”对话框,选择我们刚才录制的宏,单击“执行”按钮,A3单元格的内容就没有了。现在我们打开一个带有宏的工作簿,Excel会提醒我们打开的文件中带有宏,如果你不能确定宏是否带有恶意的成分就选择“禁用宏”,否则可以选择“启用宏”;在禁用之后即使宏中有恶意成份也不会对你的机器起作用了。

14.补充部分

记忆式键入

在Excel的单元格中键入文本时,Excel会将扫描同一列中的所有条目并将列中与所输入的文字相匹配的条目显示在单元格中,这就是记忆式键入功能;此时直接按回车键就可以接受所匹配的条目。

“记忆式键入”仅匹配完整的单元格条目,而不是单元格中单个的词。当编辑公式时,“记忆式键入”不工作。选择“工具”菜单的“选项”命令,打开“选项”对话框,单击“编辑”选项卡,清除“记忆式键入”复选框就可以禁用“记忆式键入”功能。

选择列表

在单元格上单击右键,可以看到“选择列表”命令,这个命令在“记忆式键入”功能打开时是可见的,单击它就可以显示同一列上邻近单元格中的所有唯一条目的列表。选择列表中的某个条目就可以把它插入所选的单元格中。  

默认文件夹

在使用打开或保存命令时会发现Excel自动把“我的文档”作为默认的保存和打开文件夹,如果我们平时的工作成果并不在这个文件夹中,这样是很不方便的,不过我们可以设置这个默认的文件夹:打开“工具”菜单,选择“选项”命令,打开“选项”对话框;单击“常规”选项卡;在“默认工作目录”输入框中输入文件夹的路径名,然后单击“确定”按钮就可以了。

默认字体

在默认情况下,Excel 工作表使用 10 磅的 Arial 字体;我们也可以将这个默认的设置改变:选择“工具”菜单的“选项”命令,打开“选项”对话框,从“常规”选项卡的“标准字体”下拉列表框中选择一种字体,从“大小”下拉列表框中选择字体的大小,单击“确定”按钮;Excel会弹出对话框提示我们要重新启动 Excel,重新启动Excel后Excel就会以设置的字体显示了。

单变量求解(数据分析) 

用Excel可以进行比较复杂的数值计算,比如算式z=3x+4y+1,我们要求当z=20、y=2时x的值,就可以使用单变量求解功能:首先按一般的样子将公式建立起来,然后打开“工具”菜单,单击“单变量求解”命令,打开“单变量求解”对话框,拾取“目标”为公式所在的单元格,在“目标值”输入框中输入期望的值20,然后将“可变单元格”定位为x的数值所在单元格,单击“确定”按钮,在单元格中可以看到计算的结果;同时界面中出现了“单元格求解状态”对话框,此时单击“确定”可以接受通过计算导致单元格数值的改变,而单击“取消”按钮就可以撤消改变了。

模拟运算表(数据分析)

Excel作为一个电子表格其作用不仅仅是数据的电子化存储及排序和检索,它还有另外一项很重要的功能,那就是数据分析功能,这里用得最多的就是模拟运算表:用一个简单的算式z=3x+4y+1来看:要求当x等于从1到4间的所有整数,而y为1到7间所有整数时所有z的值,用模拟运算表做:首先排好x与y的位置,然后在下面的单元格中建立一个公式,在公式所在行的右边和下面分别输入两个变量的变化值,这里我们在行上为x,列上为y,然后选中这个方形的区域,选择“数据”菜单中的“模拟运算表”命令,打开“模拟运算表”对话框,将“输入引用行的单元格”选择为公式中x的数值所在单元格,“输入引用列的单元格”选择为公式中y的数值所在的单元格。

单击“确定”按钮,就可以看到运算的结果了。如果公式发生了改变,只要修改公式单元格中的公式就可以了。

补充部分

批注的使用

对于已经插入的批注,我们可以把它们都显示出来以方便查看和编辑:打开“视图”菜单,单击“批注”命令,就可以将工作表中的所有批注都显示出来;将鼠标移动到批注所在的位置,鼠标变成了“I”形,在批注的区域内单击,可以看到批注区域内出现了闪动的光标,此时就可以对批注进行编辑了;单击工作表的任意其它位置,可以取消对批注的编辑;打开“视图”菜单,单击“批注”命令,在视图中就看不到批注了。

我们还可以使用“审阅”工具栏来进行对批注的操作:用右键单击工具栏,单击快捷菜单中的“审阅”命令,界面中就出现了“审阅”工具栏,单击工具栏中的“显示所有批注”按钮,可以显示工作表中的所有批注,再单击这个按钮,工作表中的批注就隐藏了起来。

选中一个有批注的单元格,单击“显示批注”按钮,选中单元格的批注就显示出来了;同“显示所有批注”按钮一样,再单击,就可以将这个批注隐藏起来;单击工具栏中的左边第一个按钮:“编辑批注按钮”,可以编辑选中的单元格的批注;单击一个没有批注的单元格,刚才的“编辑批注”按钮变成了“插入批注”按钮,单击它就可以在选中的单元格中插入新的批注了;单击工作表的其它部分,取消编辑批注的状态,单击工具栏上的“下一批注”按钮,Excel会自动显示下一个批注;“前一批注”按钮的用法和这个后一批注基本相同;选中带有批注的单元格后单击“删除批注”按钮,可以删除单元格中的批注。使用右键菜单,一样可以进行批注的插入、编辑和删除。

与Web的互通

在Office 2000中,Html格式已经成为其组件内置的文件格式,因此在与Web的互通上Office 2000做得比以前所有版本都要好。在Excel 2000中,我们可以选择把工作簿保存为 Web 页,甚至把工作簿或所选工作簿的点发布到 Web 服务器,这样其他人也可以使用该工作簿。

把工作簿或所选工作簿保存为 Web 页:选择“文件”菜单的“另存为Web 页”命令,打开“另存为” 对话框,选择保存的位置,指定保存的文件名,单击“保存”按钮就可以将工作簿保存成Web页了。

在保存Web页面时可以选择保存整个工作簿或选定的工作表:打开“另存为”对话框,在这里有一个选项,可以选择整个工作簿或选择的工作表;另外单击“更改标题”按钮可以自己确定保存的Web页的标题。

单击“发布”按钮,可以选择发布工作表的一部分。

加载宏和报告管理器

Excel提供了很多现成的宏可以供我们调用,这里我们来看看比较常用的“报告管理器”:打开“工具”菜单,单击“加载宏”命令,打开“加载宏”对话框;选中“当前加载宏”列表框中“报告管理器”前面的复选框,单击“确定”按钮,我们就将“报告管理器”加载到了Excel中。

打开“视图”菜单,这里就多了一个“报告管理器”命令,单击它,打开“报告管理器”对话框,就可以使用“报告管理器”了。

电子邮件

选择“文件”菜单的“发送”命令,然后选择子菜单中的“邮件收件人(以附件形式)”命令,您就可以将活动的 Excel 工作簿用电子邮件发送给其他人。当您选择该命令时,Windows 会启动电子邮件程序并将当前编辑的工作簿作为附件添加到邮件中;然后像发送普通的邮件那样发送邮件就可以了。 

15、如何避免错误信息

在Excel中输入公式后,有时不能正确地计算出结果,并在单元格内显示一个错误信息,这些错误的产生,有的是因公式本身产生的,有的不是。下面就介绍一下几种常见的错误信息,并提出避免出错的办法。

1)错误值:####   

含义:输入到单元格中的数据太长或单元格公式所产生的结果太大,使结果在单元格中显示不下。或是日期和时间格式的单元格做减法,出现了负值。

解决办法:增加列的宽度,使结果能够完全显示。如果是由日期或时间相减产生了负值引起的,可以改变单元格的格式,比如改为文本格式,结果为负的时间量。  2)错误值:#DIV/0!   

含义:试图除以0。这个错误的产生通常有下面几种情况:除数为0、在公式中除数使用了空单元格或是包含零值单元格的单元格引用。

解决办法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。  

3)错误值:#VALUE!   

含义:输入引用文本项的数学公式。如果使用了不正确的参数或运算符,或者当执行自动更正公式功能时不能更正公式,都将产生错误信息#VALUE!。  

解决办法:这时应确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如,单元格C4中有一个数字或逻辑值,而单元格D4包含文本,则在计算公式=C4+D4时,系统不能将文本转换为正确的数据类型,因而返回错误值#VALUE!。  

4)错误值:#REF!   

含义:删除了被公式引用的单元格范围。

解决办法:恢复被引用的单元格范围,或是重新设定引用范围。

5)错误值:#N/A   

含义:无信息可用于所要执行的计算。在建立模型时,用户可以在单元格中输入#N/A,以表明正在等待数据。任何引用含有#N/A值的单元格都将返回#N/A。

解决办法:在等待数据的单元格内填充上数据。

6)错误值:#NAME?   

含义:在公式中使用了Excel所不能识别的文本,比如可能是输错了名称,或是输入了一个已删除的名称,如果没有将文字串括在双引号中,也会产生此错误值

解决办法:如果是使用了不存在的名称而产生这类错误,应确认使用的名称确实存在;如果是名称,函数名拼写错误应就改正过来;将文字串括在双引号中;确认公式中使用的所有区域引用都使用了冒号(:)。例如:SUM(C1:C10)。  注意将公式中的文本括在双引号中。

7)错误值:#NUM!

含义:提供了无效的参数给工作表函数,或是公式的结果太大或太小而无法在工作表中表示。

解决办法:确认函数中使用的参数类型正确。如果是公式结果太大或太小,就要修改公式,使其结果在-1×10307和1×10307之间。

8)错误值:#NULL!

含义:在公式中的两个范围之间插入一个空格以表示交叉点,但这两个范围没有公共单元格。比如输入:“=SUM(A1:A10 C1:C10)”,就会产生这种情况。

解决办法:取消两个范围之间的空格。上式可改为“=SUM(A1:A10 ,C1:C10)”--http://www.xici.net/u15568717/d83887823.htm

word排版技巧

排版是让许多人头疼的问题,尤其是论文需要多次修改时更加令人头疼。本文将给你提供一些用Microsoft Word 2003进行论文排版的技巧,使你的论文排版更加方便和轻松,以便把更多的精力放在论文的内容上而不是文字的编排上。这些技巧不只在论文写作中可以使用,在写其他文档时也可以使用。本文将分五个专题来讲解论文排版过程中共存问题的解决方法,第六部分是一些小技巧。
一.图表和公式的自动编号

二.制表位的使用

三.目录的制作4

四.参考文献的编号和引用5

五.页眉页脚的制作6

六.其他技巧 :分页符(Ctrl+ Enter)换行符(Shift+Enter) 双击图标 居中和右对齐



一、图表和公式的自动编号
在论文中,图表和公式要求按在章节中出现的顺序分章编号,例如图1-1,表2-1,公式3-4等。在插入或删除图、表、公式时编号的维护就成为一个大问题,比如若在第二章的第一张图(图2-1)前插入一张图,则原来的图2-1变为2-2,2-2变为2-3,…,更糟糕的是,文档中还有很多对这些编号的引用,比如“流程图见图2-1”。如果图很多,引用也很多,想象一下,手工修改这些编号是一件多么费劲的事情,而且还容易遗漏!表格和公式存在同样的问题。
能不能让Word对图表公式自动编号,在编号改变时自动更新文档中的相应引用?答案是肯定的!下面以图的编号为例说明具体的作法。
自动编号可以通过Word的“题注”功能来实现。按论文格式要求,第一章的图编号格式为“图1-×”。将图插入文档中后,选中新插入的图,在“插入”菜单选“题注”,新建一个标签“图1-”,编号格式为阿拉伯数字(如果不是点击“编号”修改),位置为所选项目下方,单击“确定”后Word就插入了一个文本框在图的下方,并插入标签文字和序号,此时可以在序号后键入说明,比如“形态学膨胀运算示例”,还可以移动文本框的位置,改动文字的对齐方式等。再次插入图时题注的添加方法相同,不同的是不用新建标签了,直接选择就可以了。Word会自动按图在文档中出现的顺序进行编号。
在文档中引用这些编号时,比如“如图1-1所示”,分两步做。插入题注之后,选中题注中的文字“图1-1”,在“插入”菜单选“书签”,键入书签名,点“添加”。这样就把题注文字“图1-1”做成了一个书签。在需要引用它的地方,将光标放在插入的地方(上例中是“如”字的后面),在“插入”菜单选“交叉引用”,弹出对话框中引用类型选“书签”,“引用内容”为“书签文字”,选择刚才键入的书签名后点“插入”,Word就将文字“图1-1”插入到光标所在的地方。在其他地方需要再次引用时直接插入相应书签的交叉引用就可以了,不用再做书签。
至此我们就实现了图的编号的自动维护,当在第一张图前再插入一张图后,Word会自动把第一张图的题注“图1-1”改为“图1-2”,文档中的“图1-1”也会自动变为“图1-2”。
表格编号的作法与图相同,唯一不同的是表格的题注在表格上方,且要求左对齐。公式的编号略有不同,插入公式后,将公式单独放在一个段落,版式为“嵌入式”(Word默认),光标放在公式之后,不要(注意是“不要”)选中公式,在“插入”菜单选“题注”,由于没有选中项目,所以“位置”一项为灰色,新建标签“公式1-”,点击“插入”,Word就将标签文字和自动产生的序号插入到光标所在位置。在文档中引用公式编号的方法与图相同,此处不在赘述。公式的编号要求在右边行末,具体的方法在“制表位的使用”一节详细说明。
这里顺便说一下,交叉引用、书签和题注都是Word的域。域是文档中可能发生变化的内容,Word使用域来进行文档自动化。多个域的联合使用可以实现更复杂的功能,各个域的具体使用方法请参考Word的帮助。
注:
题注中新建标签时,Word会自动在标签文字和序号之间加一个空格,看起来不那么舒服,可以在插入题注后将空格删除,然后再将文字做成书签。²
书签名最好用图(表、公式)的说明文字,尽量做到见名知“图”。²
图(表、公式)的编号改变时,文档中的引用有时不会自动更新,可以鼠标右击引用文字,在弹出的菜单中选“更新域”。关闭文档再打开Word会更新所有的域。²



二、制表位的使用
制表位是指水平标尺上的位置,它指定了文字缩进的距离或一栏文字开始的位置,使用户能够向左、向右或居中对齐文本行;或者将文本与小数字符或竖线字符对齐。用户可以在制表符前自动插入特定字符,如句号或划线等。默认情况下,按一次Tab键,Word将在文档中插入一个制表符,其间隔为0.74厘米。
制表位的类型包括:左对齐,居中对齐,右对齐,小数点对齐和竖线对齐等,这些制表位的使用方法大致相同,这里仅根据论文中公式排版的要求和目录的制作为例说明制表位的使用方法和效果,更详细的说明请参阅Word的帮助文档。
论文里的公式要求单独放在一个段落,公式居中;按章节进行编号,编号用小括号括起来放在右边行末。首先输入公式和编号,公式的版式选择“嵌入式”,编号用小括号括起来。然后把光标放在公式所在的段落里,点击页面左上角的制表位图标,切换到居中制表位,用鼠标在水平标尺上大约中间的位置点一下,这样就放置了一个居中制表位在点击的地方,如果位置不合适还可以用鼠标拖动进行调节。再把左上角的制表位图标切换到右对齐制表位,用放置居中制表位相同的方法放置一个右对齐制表位在行末。
设置好制表位后,把光标放在公式的前面,按一下Tab键,这样就在公式的前面插入了一个制表符,此时公式以居中制表位为中心居中对齐,再把光标移到公式和左括号之间,再按Tab键插入一个制表符,编号就跑到行末了。
用制表位的方法来处理公式的排版,很简单也很方便,不用去敲很多空格去把公式挪到中间,编号推到行末。还有一个好处,若公式或编号的长度发生变化时,Word会自动调节以使公式始终在页面的中间,编号始终在行末,不会因为公式或编号变长而换行。更简单的作法是把公式段落的设置保存为样式,所有的公式段落应用此样式,即简单又方便,而且可以保持所有的公式段落制表位的一致。手工设置制表位,你能保证每次居中制表位的位置都一样吗?!
涉及到制表位还有一个概念:前导符。前导符是填充制表符所产生的空位的符号,一般有实线、虚线、点划线等,在目录中经常见到(就是标题和页码之间的圆点)。制作目录时,敲入标题和页码后,在行末设置一个右对齐制表位。点击“格式|制表位”,制表位对话框显示了光标所在段落的制表位信息。选择右对齐制表位,前导符选择圆点(Word默认无前导符),确定后在标题和页码之间插入一个制表符,可以看到页码跑到行末了,而且页码和标题之间用圆点进行了填充。当页码或标题长度变化时,Word会自动增加或删除圆点。这里用目录做例子只是想说明前导符的使用方法,其实制作目录还有更好的方法,下文详述。
注:
1)按一次Tab键插入的是一个制表符,因此不要在文档中用制表符代替空格来产生空白间隔。不然若把这段文字粘贴到其他存在不同制表位的段落,或文档的制表符默认设置变化时,版面就会混乱。
2)有时候按Tab键后Word会产生一个灰色箭头,这实际上是Word的制表符格式标记,格式标记还有段落标记(拐弯的箭头)、空格(灰色圆点)等。这些格式标记在打印文档时是不会打印出来的,格式标记是否显示以及显示哪些可以在“工具|选项”的“视图”选项卡里进行设置。



三、目录的制作
目录是用来列出文档中的各级标题及标题在文档中相对应的页码。首先介绍Word的一个概念:大纲级别。Word使用层次结构来组织文档,大纲级别就是段落所处层次的级别编号,Word提供9级大纲级别,对一般的文档来说足够使用了。Word的目录提取是基于大纲级别和段落样式的,在Normal模板中已经提供了内置的标题样式,命名为“标题1”、“标题2”,…,“标题9”,分别对应大纲级别的1-9。我们也可以不使用内置的标题样式而采用自定义样式,但有点麻烦。下文中的目录制作方法直接使用Word的内置标题样式,关于自定义样式的方法请参阅Word的帮助文档。
目录的制作分三步进行。
1)修改标题样式的格式。通常Word内置的标题样式不符合论文格式要求,需要手动修改。在菜单栏上点“格式|样式”,列表下拉框中选“所有样式”,点击相应的标题样式,然后点“更改”。可修改的内容包括字体、段落、制表位和编号等,按论文格式的要求分别修改标题1-3的格式。
2)在各个章节的标题段落应用相应的格式。章的标题使用“标题1”样式,节标题使用“标题2”,第三层次标题使用“标题3”。使用样式来设置标题的格式还有一个优点,就是更改标题的格式非常方便。假如要把所有一级标题的字号改为小三,只需更改“标题1”样式的格式设置,然后自动更新,所有章的标题字号都变为小三号,不用手工去一一修改,即麻烦又容易出错。关于如何应用样式和自动更新样式,请参考Word帮助。
3)提取目录。按论文格式要求,目录放在正文的前面。在正文前插入一新页(在第一章的标题前插入一个分页符),光标移到新页的开始,添加“目录”二字,并设置好格式。新起一段落,菜单栏选“插入|索引和目录”,点“目录”选项卡,“显示级别”为3级,其他不用改,确定后Word就自动生成目录。若有章节标题不在目录中,肯定是没有使用标题样式或使用不当,不是Word的目录生成有问题,请去相应章节检查。此后若章节标题改变,或页码发生变化,只需更新目录即可。
注:
目录生成后有时目录文字会有灰色的底纹,这是Word的域底纹,打印时是不会打印出来的(如果你愿意浪费一张纸可以试着打印一下目录)。在“工具|选项”的“视图”选项卡可以设置域底纹的显示方式。²



四、参考文献的编号和引用
参考文献的标注本不是一件麻烦的事情,但是对参考文献编号后就成了一件麻烦的事情,产生的问题和图表公式编号的问题是一样的。手工维护这些编号是一件费力而且容易出错的事情,我们的目的是让Word自动维护这些编号。很幸运,它可以做到,方法跟图表公式的作法相似。光标放在引用参考文献的地方,在菜单栏上选“插入|脚注和尾注”,弹出的对话框中选择“尾注”,点击“选项”按钮修改编号格式为阿拉伯数字,位置为“文档结尾”,确定后Word就在光标的地方插入了参考文献的编号,并自动跳到文档尾部相应编号处请你键入参考文献的说明,在这里按参考文献著录表的格式添加相应文献。参考文献标注要求用中括号把编号括起来,至今我也没找到让Word自动加中括号的方法,需要手动添加中括号。
在文档中需要多次引用同一文献时,在第一次引用此文献时需要制作尾注,再次引用此文献时点“插入|交叉引用”,“引用类型”选“尾注”,引用内容为“尾注编号(带格式)”,然后选择相应的文献,插入即可。不要以为已经搞定了,我们离成功还差一步。论文格式要求参考文献在正文之后,参考文献后还有发表论文情况说明、附录和致谢,而Word的尾注要么在文档的结尾,要么在“节”的结尾,这两种都不符合我们的要求。
解决的方法似乎有点笨拙。首先删除尾注文本中所有的编号(我们不需要它,因为它的格式不对),然后选中所有尾注文本(参考文献说明文本),点“插入|书签”,命名为“参考文献文本”,添加到书签中。这样就把所有的参考文献文本做成了书签。在正文后新建一页,标题为“参考文献”,并设置好格式。光标移到标题下,选“插入|交叉引用”,“引用类型”为“书签”,点“参考文献文本”后插入,这样就把参考文献文本复制了一份。选中刚刚插入的文本,按格式要求修改字体字号等,并用项目编号进行自动编号。

到这里,我们离完美还差一点点。打印文档时,尾注页同样会打印出来,而这几页是我们不需要的。当然,可以通过设置打印页码范围的方法不打印最后几页。这里有另外一种方法,如果你想多学一点东西,请接着往下看。
选中所有的尾注文本,点“格式|字体”,改为“隐藏文字”,切换到普通视图,选择“视图|脚注”,此时所有的尾注出现在窗口的下端,在“尾注”下拉列表框中选择“尾注分割符”,将默认的横线删除。同样的方法删除“尾注延续分割符”和“尾注延续标记”。删除页眉和页脚(包括分隔线),选择“视图|页眉和页脚”,首先删除文字,然后点击页眉页脚工具栏的“页面设置”按钮,在弹出的对话框上点“边框”,在“页面边框”选项卡,边框设置为“无”,应用范围为“本节”;“边框”选项卡的边框设置为“无”,应用范围为“段落”。切换到“页脚”,删除页码。选择“工具|选项”,在“打印”选项卡里确认不打印隐藏文字(Word默认)。
好了,试着打印一下尾注所在的页,是不是白纸?!



五、页眉页脚的制作
首先介绍一个概念:节。这里的“节”不同于论文里的章节,但概念上是相似的。节是一段连续的文档块,同节的页面拥有同样的边距、纸型或方向、打印机纸张来源、页面边框、垂直对齐方式、页眉和页脚、分栏、页码编排、行号及脚注和尾注。如果没有插入分节符,Word默认一个文档只有一个节,所有页面都属于这个节。若想对页面设置不同的页眉页脚,必须将文档分为多个节。
论文里同一章的页面采用章标题作为页眉,不同章的页面页眉不同,这可以通过每一章作为一个节,每节独立设置页眉页脚的方法来实现。首先介绍页眉的制作方法。
在各个章节的文字都排好后,设置第一章的页眉(若连页眉都不知怎么加,请参考Word帮助)。然后跳到第一章的末尾,菜单栏上选“插入|分隔符”,分节符类型选“下一页”,不要选“连续”(除非你想第二章的标题放在第一章的文字后面而不是另起一页),若是奇偶页排版根据情况选“奇数页”或“偶数页”。这样就在光标所在的地方插入了一个分节符,分节符下面的文字属于另外一节了。光标移到第二章,这时可以看到第二章的页眉和第一章是相同的,鼠标双击页眉Word会弹出页眉页脚工具栏,工具栏上有一个“同前”按钮(图像按钮,不是文字),这个按钮按下表示本节的页眉与前一节相同,我们需要的是各章的页眉互相独立,因此把这个按钮调整为“弹起”状态,然后修改页眉为第二章的标题,完成后关闭工具栏。如法炮制制作其余各章的页眉。
页脚的制作方法相对比较简单。论文页面的页脚只有页码,要求从正文开始进行编号,但是,在正文前还有扉页、授权声明、中英文摘要和目录,这些页面是不需要编页码的,页码从正文第一章开始编号。首先,确认正文的第一章和目录不属于同一节。然后,光标移到第一章,点击“视图|页眉和页脚”弹出页眉页脚工具栏,切换到页脚,确保“同前”按钮处于弹起状态,插入页码,这样正文前的页面都没有页码,页码从第一章开始编号。
注:

页眉段落默认使用内置样式“页眉”,页脚使用“页脚”样式,页码使用内置字符样式“页码”。如页眉页脚的字体字号不符合要求,修改这些样式并自动更新即可,不用手动修改各章的页眉页脚。²论文里页眉使用章标题,可以采用章标题做成书签,然后在页眉交叉引用的方法来维护两者的一致。²



六、其他技巧
分页符(Ctrl+Enter)
顾名思义,分页符是用来分页的,分页符后的文字将另起一页。论文中各章的标题要求新起一页,放在新页的第一行,这时就可以使用分页符。在前一章的最后放置一个分页符,这样不管前一章的版面有什么变化,后一章的标题总是出现在新的一页上。
肯定还有人用敲多个回车的方法来把章标题推到新页!这样做的缺点是显而易见的。若前一章的版面发生了变化,比如删掉了一行,这时后一章的标题就跑到前一章的最后一页的末尾;若增加一行,则后一章标题前又多了一个空行。快抛弃这种费力不讨好的作法吧!

换行符(Shift+Enter)u
这里又涉及Word的一个概念:段落。段落是独立的信息单位,具有自身的格式特征,如对齐方式、间距和样式。每个段落的结尾处都有段落标记(一个灰色的拐弯箭头)。敲Enter键有两个作用,一是在光标位置插入一个段落标记,表示一个段落的结束;二是另起一行。换行符和敲Enter键不同,它只有第二个作用,没有第一个,即换行符的前一行和后一行仍然属于同一个段落,共享相同的段落格式。
双击图标
以一个例子作为说明。你可能需要在论文里画一个简单的流程图,你先插入了需要的文本框并加入了相应的文字,排好位置,这时你需要用箭头把这些文本框连起来,你用鼠标在绘图工具栏上点了一下箭头图标,然后画了一个箭头,再点一下图标,又画一个箭头,第三次点图标,画了第三个箭头,…有点麻烦是不是?要是可以连续画该多好!事实上可以做到!用鼠标在箭头图标上双击,然后在需要的地方画箭头,看到了吗?当画完一个箭头时,图标依然保持为嵌入状态,表示可以连续作图。当所有箭头都画完后,再在嵌入的图标上点一下,嵌入的图标弹起,Word又回到了文字输入状态。
不只箭头图标具有这样的功能,其他许多图标都可以如此。格式刷就是一个。当需要把一段特殊的文字格式多次应用时,双击格式刷,连续刷需要的文字,很方便。
居中和右对齐
你还在用插入空格的方法来把章节标题推到页面中间吗?太土了吧!用格式工具栏上的居中按钮吧。右对齐按钮会从行末开始排列文字。--http://blog.renren.com/blog/239219075/390196190

Wednesday, April 21, 2010

快速掌握一个语言最常用的50%

http://blog.csdn.net/myan/archive/2008/10/25/3144661.aspx

现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入西西弗斯困境。

实际上语言学习有一定规律可循,对于已经掌握一门语言的开发者来说,对于一般的语言,完全可以以最快的速度,在几天至一周之内掌握其最常用的50%,而且保证路子基本正宗,没有出偏的弊病。其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。比如错误处理和序列化,很多人不去了解“正路子”,而是凭借自己的一知半解去攒野路子,这是最危险的。因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。

以下列出一个学习提纲,主要针对的是有经验的人,初学者不合适。这个提纲只能用于一般的庸俗编程语言学习,目前在流行编程语言排行榜上排前20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言,或是某个软件中的二次开发语言,这里的建议未必合适。还是那句话,仅供参考。



1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,达到能够写谭浩强程序设计书课后数学习题的程度;

2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;

3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;

4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的,如果有经验的话很快就明白了;

5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;

6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;

7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;

8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;

9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;

10. 序列化和反序列化,掌握一下缺省的机制就可以了;

11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;

12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;

13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;

14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,我认为也可以边做边学,没有大问题。

15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。

至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。对于一个庸俗语言,我自己把上面的内容走一遍大概要花2-3周时间,不能算很快,但也耽误不了太多事情,毕竟不是每个月都学新语言。掌握了以上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,只看蓝色重体字的部分,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。

以上提纲未设及内存模型。对于C/C++,这个问题很重要,要放在显著位置来考虑,但对于其他语言,这个问题被透明化了,除非你要做hardcore项目,否则不必太关注。