2010年6月27日星期日

VIM简明教程

这里记录一下vim的常用操作,便于查询。

命令
    使用Vim编辑文件:
    vi [文件名]
    vim [文件名]
    vimtutor [语言] VIM教学模式,您无论对这个文件作了什么,都会在退出后恢复原来的样貌, eg, vimtutor en
    vimdiff [文件1] [文件2] [其它文件]……  
使用Vim比较文件区别

配置文件
    Vim的全局配置文件为 /etc/vim/vimrc ,用户配置文件为 ~/.vimrc , " 起始的行为注释行。我们提供的配置项,您直接加入配置文件就可以了
    您可以先对Vim进行一些简单的配置:
    "设定文件编码
    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    "开启语法加亮
    syntax on
    "配色风格
    colorscheme pablo
    "设定行距 GUI界面中生效
    set linespace=4
    "设定GUI选项
    "set guioptions=gmrLtT  m:菜单 T:工具栏
    set guioptions=gmrLt
    "设定Tab键缩进的空格数
    set tabstop=4
    "设定编辑器将多少空格视为一个缩进
    set shiftwidth=4
    "将缩进转换为空格
    "set expandtab
    "设定折叠方式
    "set foldmethod=indent
    "以下字符将被视为单词的一部分 (ASCII):
    "set iskeyword+=33-47,58-64,91-96,123-128

模式介绍
    Vim常见的模式有: 普通模式 、 插入模式 、 命令模式 ,另外我们也会经常用到 可视模式。
    Vim启动时进入 普通模式 ;或者在其它模式下,按下 Esc 键,便可以回到普通模式。
    按下 i 键,编辑器底部出现了 -- 插入 -- 或者 -- insert -- ,您进入了插入模式。
    在普通模式下,按下 : 键(也就是 Shift+; ),在编辑器底部出现了一个 : ,您进入了命令模式。在 : 后输入一个命令 new ,回车后,编辑器被分割为上下两栏。为了方便起见,我们在命令前加一个 : 来表示命令模式下输入的命令,像这样
    :vnew
    一个命令能够以一些规则简化,上面的命令也可以写为这种形式
    :vne
    :quit 来关闭当前栏,直接用简写就可以了    :q
    这个命令是退出编辑器,如果编辑区被分成多栏,则是退出当前栏。
    执行完一个命令(按下回车后),编辑器会自动回到普通模式。如果您想不执行当前命令,直接回到普通模式,您可以按下Esc键。
    按下 v 键,您进入了可视模式,可以使用 j 、 k 、 l 、 h 移动光标,高亮选取文本 。
    事实上,可视模式相当于高亮选取文本后的普通模式。
&nb
sp;   可视模式具有子模式,以行为单位进行选取的可视行模式,使用 V 键进入(也就是 Shift+v );和以块为单位进行选取的可视块模式,使用 Ctrl+v 键进入。

模式切换
    其它模式==>普通模式
    Esc
    普通模式==>插入模式
    i 在光标前插入          I 在行首插入
    a 在光标后插入          A 在行末插入
    o 在当前行之下新建行    O 在当前行之上新建行
    r 替换当前字符          R 从当前字符开始替换

    普通模式==>命令模式
    :

    普通模式==>可视模式
    v 可视模式
    V 可视块模式
    <Ctrl+v> 可视块模式 

移动
    在普通模式中,您可以使用以下方式移动光标
    j 向下
    k 向上         k
    l 向右     h      l
    h 向左       j

    您可以使用其它更有效率的方式移动光标
    w 下一个单词词首            W 将特殊符号视为单词的一部分
    b 上一个单词词首             B 同上
    e 单词末尾                  E 同上

    0 行首                  ^ 行首文字(行首空格之后)
    $ 行末

    H 页面顶部
    M 页面中部
    L 页面底部

数字参数

    您也可以使用数字参数,来重复执行。例如

    100j  执行100次j键,向下100行

    或者作为跳转的行号、百分比。见下面的 浏览 部分

    <行号> Ctrl+g     按行号跳转

标记

    您可以在当前光标处作一个标记,以便快速返回

    m<标记名称>    定义标记。标记名称为一个字符
    `<标记名称>    返回标记

    mx           将当前光标处定义为标记 x
    `x           返回标记 x

浏览

    <Ctrl+f> 下翻一页       <Ctrl+d> 下翻半页
    <Ctrl+b> 上翻一页       <Ctrl+u> 上翻半页
    gg 文件首行
    G  文件末行

    <行号>G 按行号转到相应行
    <1~100>% 按百分比转到相应的行数

    zz 将光标所在行调整至页面中间
    <Ctrl+e> 下卷一行
    <Ctrl+y> 上卷一行

Tip

gg 定位到文件首行, V 进入可视行模式, G 定位到文件末行,实现类似“全选”的功能。依次按下 g g V(Shift+v) G(Shift+g)

编辑

    x 剪切当前字符
    dd 剪切当前行
    y 复制可视模式选取字符
    yy 复制当前行
    p 在光标后粘贴          P 在光标前粘贴
    u 撤消
    <trl+r> 重做
    <Ctrl+y> 逐字克隆上一行内容
    <Ctrl+e> 逐字克隆下一行内容

寄存器操作

    Vim可以将不同字段剪切或复制到不同寄存器中,您可以从不同寄存器中取出内容后粘贴

    "<寄存器名称>   按下“"”键和另一个字符键,便可以定义一个寄存器。例如:

    "a  "1

    定义寄存器后直接进行操作

    "ayy    将当前行复制到寄存器 a 中
    "ap     将寄存器 a 中的内容粘贴到光标之后

        * 通常情况下,寄存器 + ( " + Shift+= )对应X下的剪贴板。您在其它程序中复制的内容,可以使用 "+p 粘贴到Vim中;您在Vim中,可以使用 "+y 将内容复制到剪贴板,再粘贴到其它程序中
        * 没有指定寄存器时,Vim使用“无名寄存器”存储内容

搜索和替换

    按下 / 键,编辑器底部会出现 / 符号,接着输入字符串,便可以进行搜索

    / 向下搜索              ? 向上搜索
    n 搜索下一个
    N 搜索上一个

    :s/<源字符串>/<目标字符串>       将源字符串替换为目标字符串    :s/<源字符串>/<目标字符串>/g     替换当前行中所有符合条件的字符串
    :<行号1>,<行号2>s/<源字符串>/<目标字符串>/g  在指定行中进行替换
    :%s/<源字符串>/<目标字符串>/g    全文替换

正则表达式

    在搜索和替换时,可以使用正则表达式进行匹配



    您可以将一系列的操作录制为一个宏,然后执行它

    q<宏名称> 开始录制宏。宏名称为一个字符
    q        录制中按下“q”键,结束录制

    @<宏名称> 执行宏

插入模式下的快捷键

    <Ctrl+r><寄存器名称> 输入指定寄存器内容
    <Ctrl+k><2个字符>   输入二合字符
    <Ctrl+v><数字>      通过数字编码输入字符
    <Ctrl+v><键位>      输入键位的名称

键绑定、缩写

    前面我们已经向您介绍了键绑定,

    map! <M-j> <Down>

    尖括号及其中的内容,为Vim配置文件的约定,分别描述了按键和功能,表示将功能编写到按键上。如果绑定的只是普通字符,例如:

    map! xxx XXXXX

    表示将 fXXXXX 绑定到 xxx 上。当您键入 xxx 时,编辑器会自动替换为 XXXXX 。

    如果您只是想将字符串绑定为缩写,方便输入,我们建议您使用 iabbrev 来绑定。例如:

    iabbrev ubt Ubuntu

    在插入模式下键入 ubt ,编辑器会自动替换为 Ubuntu 。您可以将 iabbrev 命令缩写为 iab ,例如:

    iab ubt Ubuntu

    以上命令,您可以直接在命令模式下输入,临时启用。也可以写入配置文件,永久启用。

单词补全

    <Ctrl+n> 下一个匹配项
    <Ctrl+p> 上一个匹配项

    您可以在配置文件中定义补全的方式

    "自动补全方式:(使用逗号分隔)
    set complete=k,.

    "   .    当前文件
    "   b    已被装缓冲区,但是没有在窗口内的文

    "   d    在当前的文件中定义和由#include包含进来的文件
    "   i    由#include包含进来的文件
    "   k    由dictionary选项定义的文件
    "   kfile    名为{file}的文件
    "   t    标记(tags)文件
    "   u    没有载入的缓冲区
    "   w    在其他窗口中的文件

    "设定自动补全字典 :
    set dictionary=path

命令模式

    前面介绍了普通模式和插入模式。我们发现,普通模式主要用来浏览和修改文本内容,而插入模式则用来向文本中添加内容。

    而命令模式则多用于操作文本文件(而不是操作文本文件的内容),例如保存文件;或者用来更改编辑器本身的状态,例如设定多栏窗口、标签或者退出编辑器……

    w(rote) 将更改写入文件

    :w

    q(uit) 退出编辑器:

    :q

    某些情况下,编辑器会阻止命令的执行。例如您修改了文件,而没有保存,那么您使用 :q 命令退出时,编辑器就不会执行这条命令,而是提醒您保存文件。

    这个时候,您可以在命令末尾追加 ! 来强制执行命令

    :<命令>!

    例如 :q! ,即便您没有保存已修改的文件,使用此命令,编辑器也会放弃修改而强行退出

    以 ! 引导一个Shell命令,则可以从Vim临时切换到Shell中,执行一个Shell

    :!<命令>

    例如 :!ls

多栏窗口

    您可以使用以下命令,将当前窗口水平分为两栏

    :new

    新建一栏空白窗口

    :split

    将当前文件分两栏显示

    同理,您可以使用下列命令,将当前窗口垂直分为两栏

    :vnew
    :vsplit

    先按下 <ctrl+w> 键,再按下方向键 j 、 k 、 l 、 h ,您可以切换到其它栏;在当前栏中使用 :q 命令,可以退出当前栏,也可以使用其它命令,对当前栏作出修改

    如果您希望当前命令在所有栏中生效,您可以在命令的末尾追加 all

    :<命令>all
    例如:
    :qall

    如果您希望这条命令强制执行,那么 ! 位于命令的最末
    :<命令>all!
    例如:
    :qall! 强行退出所有栏窗口

标签页
    Vim在7以后的版本,开始支持标签页的功能
    :tabnew    新建一个标签
    :tabnext   转到下一个标签
    :tabprevious  转到上一个标签

2010年6月20日星期日

读“Real-time Background Subtraction in C++”

这篇文章的作者Haotian Wu, Yifan Yu,在Boston大学的技术报告,忘记这篇文章是在哪里下来的了,不知道是否出自什么会议,或者是一个学习总结类型的文章,不过附有源代码,所以认真看了一下。

本文的重点是想实现实时的背景差分,在算法的效率方面的讨论比较多,这不是我所关注的地方,但是他在这篇文章中提到的背景差分模型还是值得借鉴的。

1  单高斯模型 
对每个像素点建立一个高斯模型,是最简单的背景差分模型,此算法的效率很高,运行速度非常快,但是差分效果不太好。

2 Kernel Density Estimation 核密度估计
此方法的核心使用使用统计的方法,估计最近n帧的图像中的像素值,来确定当前像素点是否是前景。

把最近的n帧或者按照一定规律取n帧存入缓存(Buffer)中作为核 (未完成)


2010年6月19日星期六

使用Chrome写博客的扩展ScribeFire

本文是使用chrome的博客插件ScribeFire发布的,为了做一个测试和记录使用ScribeFire配置Micolog的方法。
1、下载安装ScribeFire插件,在这里下载安装。
2、针对Micolog博客系统配置:
打开ScribeFire插件,就可以看到,其实功能与Windows live write的功能几乎完全一致,配置方法也是一样的,所以配置方法就可以根据Micolog作者提供的配置说明,完全照搬,此说明点击这里
a) 添加一个新博客,Add a New Blog按钮,输入博客URL地址,例如:http://<youblog>.appspot.com,这里把<yourblog>替换成你的GAE上的博客地址;
b) 点击next,理论上此插件会自动检测出此博客的类型,但是这里不能检测出来,可以直接选择Wordpress;
c) 输入博客的API地址,这里应该是:http://<youblog>.appspot.com/rpc;
d) 然后就是输入你写博客的用户名和密码,用户名和密码你应该现在你的博客上设置了,http://<youblog>.appspot.com/admin/setup
e) 完成即可,写一篇文章发布试一试。

果然轻松完成了发布,还可以轻松实现文章的修改。在Entry的下拉框中,选择你想要修改的文章标题,可以删除,也可以在下面编辑文章内容,果然好用,开始告别wlw了。

2010年6月13日星期日

[zz]把握手中的成功

到底什么是成功呢?我想不同的人对它的理解是不同的。我认为成功是一种心态,一种来自内心深处的自我认知。不论你是谁,不论你身居何位,或富或贫,或贵或贱,只要你认为自己是成功的,你就是成功的。

我们活在这个世界上,都希望自己变得更加成功。为什么呢?我不禁反问。原来,我们总是喜欢去作对比,我们总是看到别人比自己生活的好,他们收入比我们多,能力比我们出众……

但是,我们有没有想过我们一直被自己欺骗了?我们所要追寻的成功,其实正在我们手中握着,而我们却浑然不知,傻傻的去追求别人手中的成功。人之所以痛苦,在于追求错误的东西。这个世界之所以这么多的痛苦,在于人们不断地追求别人手中的幸福与成功,而却忽略了自己已经拥有的成功。

我曾经花了50元钱上了一堂关于幸福的课,那堂课的其他内容我不记得了,唯独记着一句话:“珍惜才能拥有,感恩才能天长地久。”

这句话告诉我们要珍惜生活中的每一样东西,它们的存在必定是因为它们有价值。如果我们不能看到这些价值而忽略了它们的存在,它们最终将离我们而去。成功其实早已在我们手中握着,我们应该善于发现它,并把它牢牢握住。

一、 目标并不是成功

我们对目标的认识一直有一个误区,那就是目标是为了达到而设立的。其实,目标它仅仅是一个目标,即使你没有达到,也并不能说明什么。

真正的成功是一段路,它介于起点和终点之间。我们开始去做一件事情,在这个过程中,我们正在享受成功的乐趣。最终结果怎么样,已经不重要了。或输或赢,已不再重要,我们从过程中已经获得了太多的成功。

二、 追求幸福的方向

幸福来自内部,而不是外部世界的物质诱惑。在简化生活的过程中,我们时刻要提醒自己舍去不必要的事情,只专注于做最重要的事情。这样,我们才能保持一颗平常心看待这个世界。一切物质名利,都随风而逝,无法撼动我们内心的坚实。

三、 懂得专一

我曾经犯过这样的错误,那就是不够专一。我买过很多英语学习资料书,但是总是没有认真的看完一本。我被那些所谓的”30天攻克英语单词”、”17天拿下英语语法”等标题党所吸引,认为这就是我想要的。我不停的换着参考书,换着学习方法,最终,我一无所获,因为我不够专一。现在想来任何一本书,只要你能完全掌握吃透,它就是一本好书,一本值得读的书。你不需要再买第二本。

打篮球的时候,我并不害怕那些自称掌握10000种技术的牛人,我害怕的是那个把一种技术练了10000次的普通人。他们才是最可怕的人,因为他们懂得专一。

四、 自负是可怕的

自信是好事,自信过头就是自负了。在《The Danger of Overconfidence》一文中,作者解释了自负对我们的危害:首先,自负会让你不能清楚的认识自己;其次,自负会给你带来失败与自责。在生活中,我们会过高的估计自己的能力。你认为这只是一个小考试,你的能力完全能够考高分,所以你不去认真备考,最终结果是你失败了。克服自负的心理,我们就要保持谦虚,及时清零,认为自己所做的还不够,还要努力。今天要比昨天收获更多。

五、 失败+失败+失败=成功

这个等式已经说明了失败与成功的关系:成功来源于失败,没有失败的成功是不存在的。

在《Failure Is an Option, but Fear Is Not》一文中,作者探讨了恐惧与失败的关系。我们总是不能容忍失败,但却时常迁就自己的害怕。殊不知,我们害怕的很大一部分来源于害怕失败。

1、 让自己失败。

如果你从来没有失败过,那么只能说明你从来没有尝试做过。失败表明你在做事,而不是呆在安乐窝里,享受成功。

2、 从失败中学习。

我这一生有很多次失败,但是我把它们当作宝贵的财富,因为我知道一个等式:失败+失败+失败+……=成功

如果说成功是一个变量的话,那么每一次失败的累积,成功的分量也就越来越大。

3、 害怕+失败=成功

你害怕失败,所以你不去尝试,所以你没有成功。冒险家是伟大的,因为他们正好相反。他们害怕失败,但他们勇于尝试,所以他们享有成功。人只有独立解决自己不会的问题,才能进步!

六、 你是否知道自己在做什么?

“Risk comes not knowing what you’re doing.”–Warren Buffett

“风险来源于你不知道自己在做什么。”–巴菲特

在《5 Essential Principles of Risk-Free Success》一文中,作者提出了两个问题。

1.我知道自己在做什么吗?

2.我掌控自己的情绪了吗?

也许你会问既然人们都不知道自己在做什么,那么他们为什么还要去做呢?答案是他们不能控制自己的情绪。我们做一件事情会受两种原始动力所驱使–害怕与欲望。仔细分析自己的行为,你会发现你所做的每一件事都掺杂这两种情绪。你现在努力复习,第一,你害怕考试不及格,第二,你希望自己考一个好分数。

当我们在做一件事的时候,首先要问自己是否清楚自己在做什么?到底是一时兴起,还是理性思考之后的行为?如果是一时兴起,那么我们就要学会简化,将这种不必要的杂念从头脑中去除掉,关注于真正重要的事情。只有这样,我们才能够集中精力去做一件事情,并且把失败的风险降到最小。

把握你手中的成功,从现在开始行动,你会成功的!

2010年6月12日星期六

[zz]14个值得推荐的个人提升方法

在成长生活中,我一直在寻找能够提升自我的方法途径。我已经找到了14个最好的技巧可以帮助你更好的提升自我。其中有一些简单方法步骤你可以立即开始去做,还有一些更大的计划你需要更多的努力去完成。

1.每天读书。书是智慧的源泉。你读的书越多,你就会变得更加有智慧。都有什么书可以让你提高自己呢?博华看过的《建立你的时间资本》、《要事第一》、《世界上最伟大的推销员》等等都是很好的书,可以帮助你认识自己。另外朋友的博客 å­¦æ— æ­¢å¢ƒ ä¹Ÿåœ¨ã€Šè®©æ¯ä¸€å¤©æœ‰æ„ä¹‰ï¼šä¸€ç”Ÿçš„学习方法图书推荐》一文中有推荐学习方法的书。

2.学习新的语言。学习一门新的语言是一项挑战,你可以通过学习语言来了解不同的文化背景,丰富自己的知识。博华曾发表过《如何用你的ipod学习35种语言》,有ipod的朋友可不能错过这个机会。前一阵海地地震时,博华就学习了海地语的一些基本语句,很有意思。你还在苦苦学习英语么?为什么不去学习新的语言呢,也许有更适合你的语言等着你去发掘。

3.打造你的灵感空间。你的生活环境会影响你的情绪,如果你生活在一个充满灵感的环境中,你每天都会富有创造力和激情。如果你的房间还是一团糟的话,是时候改造它了。从小事做起,先整理你的桌面吧。可以看看《12个小技巧使你的书桌整齐有序,学习更加高效》。

4.战胜你的恐惧。不得不说的是,每个人都有他害怕的东西。有人害怕在众人面前演讲,害怕成功,害怕冒险,害怕鬼怪,甚至是害怕毛毛虫。你也有害怕的东西吧?为什么不花时间去战胜你的恐惧呢?这会帮助你成长的。

5.升级你的技能。如果你玩过角色扮演游戏的话,你应该了解升级的概念——通过增加经验值,你会变得更加强壮,更加厉害。我们的生活就好似一场真实的角色扮演游戏,只不过你不能任意存档或者读档(这就是现实与虚拟的区别)。作为一个博客作家,博华总是在学习新的知识,不断升级我的技能,在过去的一年里,我为自己增添了很多技能。这些新技能也是战胜强大“Boss”(生活中的困难)的最大资本。你会为自己升级哪些技能呢?

6.给未来的自己写一封信。5年后的自己会是什么样的呢?你可以写一封信给5年后的自己,我想你一定有很多话要说:“告诉自己要好好学习,珍惜时间……不要做浪费时间的事情”亦或是“珍惜身边的朋友,亲人……” 好吧,既然这样,为什么不从现在开始珍惜生活呢?要知道,现在的每一步都在书写自己的历史。我想5年后的自己应该不仅仅是身体上的成长,思想与心灵也应该更加成熟。

7.承认自己的缺点。每个人都有缺点,但重点是了解它们,承认它们,并且重视它们。你的缺点是什么呢?不用告诉我,用自己的行动去改掉吧!

8.立即行动。我承认天枰座的我确实有时会变得非常犹豫,不知道该怎么选择。后来,我找到了克服犹豫的秘诀——立即行动。通常一件事我会在60秒内果断下决定,然后立即执行。这样我就不会给自己任何时间去犹豫不决。自从我养成了立即行动的习惯,我的效率变得更高了,我节省了一大笔时间去做事情,而不是去想,去犹豫。我认为,立即行动的习惯是每个人都应该努力培养的,这会给你的生活带来巨大的改变。可以看看这篇文章《7步养成立即行动的习惯》、《克服拖延——7个技巧让你坚持前进》,你会收获更多。

9.向你佩服的人学习。每个人在生活中都有自己佩服的人,他们可以是伟大人物,也可以是你的朋友,你的亲人,甚至是一个陌生人。博华在参加运动会的时候,非常佩服5000米比赛的第一名,每一次他从我身边跑过,我为他坚定地眼神所折服。尽管他大口喘着粗气,汗流浃背,但是他还是没有放慢脚步。我想,这种坚毅的眼神正是我所缺少的,我要向他学习。你也有佩服的人吧?你之所以佩服那个人,是因为他们身上拥有某种你没有的东西,而这种东西正是你所缺少的。所以,向你佩服的人学习,从他们身上获得新的能力。

10.减少在QQ上的时间。我已经认识到自己养成了一个不好的习惯,那就是每次打开电脑第一件事就是挂上QQ,我的很多朋友也有这个习惯。当你挂着QQ的时候,你会不时的收到聊天信息,打断你正在进行的工作。每当你停下手头工作去查看QQ消息的时候,你的时间被浪费了,而重新进行工作又需要一定的“转换时间”。

11.培养一个新的习惯。30天可以培养一个新的习惯,我在用Toodledo这个软件管理时间时,我设定了培养新习惯的计划。将一个任务设定成每日重复,每天只需å
®Œæˆè¿™ä¸ªä»»åŠ¡ï¼Œè¿™æ ·30天后我就养成了新的习惯。现在,我通过每日习惯计划已经养成了每天做50个俯卧撑;每天早上读一个小时英语;每天听写VOA英语;每天6:30起床…… 习惯一旦养成,就很容易做到了。

12.让过去的过去。你是否曾经有过一些不愉快的事情呢?如果有的话,是时候让它们随风而去了。记着那些事情只会阻挡你前进的步伐。你是否有时会焦虑呢?不如看看这篇《如何消除焦虑情绪 ã€‹ã€‚

13.送人玫瑰手有余香。你对别人好,别人也会对你好。事实上,我们很多人并不能够做到这一点。我们看到别人的缺点,总是想以一个长者的身份教育别人,但是殊不知每个人都有自己的生活,你不能将你的意志强加于别人身上。试着尊重他人的想法与生活习惯,更多的帮助他们,你会发现与人相处好其实很简单。

14.好好休息。个人提升不是一朝一夕就能完成的,它需要我们持之以恒的努力与勤奋。当我们看书累了的时候,要懂得休息,听听轻音乐,舒缓心情。散散步,亲近大自然。只有休息好了,我们才能更好的前行。

2010年6月11日星期五

[zz]战胜拖延(一天多看几遍)


        上大学以后,我开始有了拖延的毛病。立下目标无数,却时常动力奇缺,常常在网上浏览着各色的小说和帖子,或是玩很无聊的弱智在线小游戏,却不愿碰专业书本或文献一下,甚至哪怕deadline就在几天之后,只有在deadline之前一点点时间才会因紧迫感而开始着手学习任务。这样下来,学业上总体来说算是马马虎虎,但却离自己的理想越来越远。总之,就是无法完全地上进,又不愿彻底地堕落。

  拖延的基础,实际上是对自身很高甚至不切实际的期望。如果说完成任务是走过一块一人宽、十米长的厚木板,那么当它放在地面上时,几乎人人都可以轻松地走过。但对结果的高期望则像是将这块木板架到了两座高楼间十层楼高的地方,于是我们会害怕掉下去,即害怕失败或害怕成功(比如我有时偷偷希望实验不要成功,这样我就可以不用面对之后更大强度的后续实验,其实是害怕失败的一种变体),于是我们甚至不敢向前迈上一步。而deadline则是身后的一团火,当它离我们足够近时,害怕被烧着的恐惧感战胜了对掉下去的恐惧感,于是我们一下子冲了过去,在deadline前赶完了任务,尽管质量很难说。
  更可怕的是,很多拖延的人(包括我自己)甚至很享受那种deadline过后突然一下放松的感觉,而且拖延的结果有时反而挺好(比如我本科时写实验报告,如果我拖到最后,我往往可能因为能够和其他人讨论并参考其他人的观点而比我独自先完成的要更全面更好)。这种时候,我会在心里表扬自己很有“效率”。同时,长期这样下来,尽管我不愿承认,但我潜意识里确实觉得自己如果花了很多时间成绩却平平,会是一件非常丢脸的事情。于是这一切的一切,都再次强化了拖延——即使结果不好,我也可以说,那是因为我没尽全力,如果我真正努力,结果肯定会很好的(心理学上的高自尊人格)。
  但我们不能永远靠放火来逼自己走过木板,那样的话,总会有烧着自己的一天;而且,那种压抑的焦虑感和对自己不满意的感觉也并不令人愉快。因此,最好的办法是将木板的高度降低——不要对自己的结果(比如分数)太高的要求,认真完成就好。由于我们的天资和其它能力的限制,也许即使我们竭尽全力也无法像某些出众人物一样做得那么好;但不管怎么样,绝大多数情况下,尽力的结果都会比我们不去努力要来得好得多,不是吗?

  对此,在豆瓣的某个帖子里有一个非常有趣的方法。作者将一篇论文拖了几个月之久都不愿开写,她的心理师让她不要管好坏,以她可以写出的最差的论文为目标写一篇出来作为试验。作者照做了,然后惊讶地发现她写出来的“最差”的文章竟然挺让自己满意的,感觉稍做修改就可以交给导师过目了。当然,有时写出来的初稿和论文要求还是有差距的,比如要求12页但初稿只有5页。这种情况下作者就用了心理师教她的另一个方法:每次工作一个小时,目标是让论文多一页,同样以“最差”为目标。这个方法实际就是大大降低了拖延者做事的心理成本和负担,相当于把“木板”放到了“地面”上。不妨一试。


  人的完美倾向,严重点就是完美主义,在拖延中也起了很大作用。当我想起幼时的远大理想并希望为之努力时,我只要想起我的同学中无处不在的“牛人”,便会觉得自己已经浪费了太多时间;而且别人现在不仅比我强得多,更因为他自身的优势而占有了比我更好的资源,所以我现在即使努力估计也赶不上他了,更别提什么远大的理想了,于是就又开始了拖延。
  事实上,这就像是一场马拉松,你在开始因为种种原因落后于别人不少,于是你就开始纠结自己到底有没有跑下去的必要,却不努力去跑,于是被拉得更远。这时,你望着遥远的终点,感到很绝望,都不想跑下去了。这时,如果你不去看不去想重点,也不去想别人,只看着自己的脚下跑——“管它呢,我先跑过这个小土丘再说。”就这样一个小目标一个小目标地跑,最终你一定会跑到终点线。那时你也许会发现,你并不是最慢的,甚至是很不错的。所以,专注于你努力的过程而非最后的结果,为你认真学习了一个下午或认真做了一个实验而不是最后考试的那个A或一个漂亮的实验结果而表扬自己,你会发现完成工作其实不怎么难。
  另外,专注于当下对拖延者来说也是很需要注意的一个地方。这里说的专注于当下,不是指专注于你现在脑子里的想法和情绪,而是专注于你现在在做的或选择要做的事情。其实,很多拖延的人恰恰就是太过关注自己一时的情绪,比如觉得自己不开心了,得放松一下,上上网……然后就开始了拖延。其实从心理学角度来说,过于关注自己一时的情绪是不懂得推迟满足感的一种表现,就像小孩子想要一个玩具就非要马上得到不可一样,这样的做法会大大削弱一个人的自制力。而且,心理学实验表明,满足自己一时的情绪需求并非最佳策略,从长期角度上来讲,它会降低一个人的自我满足感和幸福感而非增加,想想因为玩乐休闲而拖延了工作后自己的负罪感和焦虑感就知道了。
  在这个方面,我个人认为森田疗法的理念是很适用的。具体而言,就是不去理会那些打搅你的情绪波动(比如对自己说:“你要郁闷就郁闷吧,不管你了。”然后就不理会了),顺其自然,专心做你要做的事情。就像一颗小石子投入湖中,会泛起一圈圈涟漪,你若不理,湖面最终会自己平静下来;倘若你过于注意那颗小石子,试图把它捞出来,反而会激起更大的波澜,使湖面无法平静。豆瓣那个帖子的作者提供了一个方法,我觉得也是很有用的:把你当时因为一时情绪想要做的事情(比如上网、玩游戏、看电影、看小说等等)记下来,告诉自己等你做完工作就去做那些事情,然后就专心工作,等到工作结束再去做记下的事情。
  此外,不要为未来过度操心 也是专注当下的一个方面。这点很容易理解,我就不在此赘言了。
  同时,对于已经发生的不愉快的事情,或是对自己过去行为的不满,面对和接受好了,不必逃避。但面对和接受不是放任自流,而是不再沉浸于自责、痛苦等负面情绪中,客观地更好地理解当下的状况,进而为以后做打算。这一点可以和前文提到的“马拉松”的例子联系起来,只有真正面对和接受了你落后于别人的事实,你才不会为“我想得第一可是却落后别人那么多”之类的想法而纠结,进而才能以现实为基础,踏踏实实地努力去跑。
  另外,在看书的时候(当然也有其它时候),很多人都常有“刚才看了好几页却不知道讲了些什么”的“不自主飞翔”的神游体验。对此,养成发现新事物的习惯,像初生的婴儿一样去看世界,是很有好处的。无论在什么环境中,时刻注意那些熟悉的东西有什么变化,比如看书,就可以注意想想这书里讲的和我以前知道的有什么不同又有什么联系、有什么很有意思的地方等等,慢慢地,就能做到专注于当下而不至于迷失。

  战胜拖延,追根究底,还是要改变自己的思维方式。这并不容易,但不是不可è
ƒ½ã€‚改变思维方式,尤其是改变潜意识,最重要的是要改变自我对话的方式。下面是一些自我对话的tips(括号里是要丢弃的自我对话方式):
  1.我选择/我想要…… (vs.我必须/我一定得……)
  2.这个任务我可以每次做一小步 (vs.这个任务太大了)
  3.我今天要开始做…… (vs.我今天必须完成……)
  4.我也可以是平凡人(vs.我必须完美/出类拔萃)
  5.我一定要休息娱乐/休息娱乐是正常生活的一部分 (vs.我没空休息娱乐/休息娱乐就是偷懒)


  我想大多数有拖延情况的人也许都还没到严重成“症”的地步,但也或多或少地被它影响了生活,影响了对心中理想的追寻。克服一个问题并不简单,需要自己给自己更多的支持与鼓励,期间也许会有许多的反复,但只要我们的大方向是好的,我们就该肯定自己。
  “认识到眼前残酷 (这个词程度太深,但我想不出换什么好)的现实,同时又看到未来的光明与希望。”这是我一直很欣赏的对生活的态度。
  谨以此文共勉。^_^

[zz]30个有趣小定律

1:苹果定律:如果一堆苹果,有好有坏,你就应该先吃好的,把坏的扔掉,如果你先吃坏的,好的也会变坏,你将永远吃不到好的,人生亦如此。

2:快乐定律:遇事只要你往好处想你就会快乐,就象你如果掉进沟里,你都可以设想说不定刚好有一条鱼钻进你的口袋。

3:幸福定律:如果你不是总是在想自己是否是幸福的时候,你就幸福了。

4:错误定律:人人都会有过失,但只有在重复这些过失的时候,你才犯了错误。

5:沉默定律:在争辩的时候,最难辩倒的观点就是沉默。

6:动力定律:动力往往来源于两种原因,希望或绝望。

7:受辱定律:受辱时的唯一办法就是忽视它,不能忽视它,就藐视它,如果能藐视它也不能,你就只有受辱了。

8:愚蠢定律:愚蠢大多数是在手脚或嘴比大脑行动还快地时候产生的。

9:价值定律:当你拥有某一项东西的时候,你就会发现这种东西并不象你原来所想的那样有价值。

10:化妆定律:在化妆上所花的时间有多少,就表示你自认为要掩饰的缺点有多少。

11:省时定律:如果你一开始就想节省时间,结果是反而要多花数倍的时间。

12:承诺定律:承诺未必可以保证一定做到,但是如果你没有做出承诺,就算你做到了也没有价值。

13:地位定律:有人站在山脚下,而有人站在山顶上,虽然所处的位置不一样,在两人的眼里的对方却是同样大小。

14:混乱定律:如果你在遇上麻烦时,还是那样谨小慎微,那麻烦就会变成混乱。

15:失败定律:失败并不意味着浪费时间和生命,而往往意味着你有可能更好的拥有时间和生命。


16:谈话定律:最使人厌烦的谈话有两种,一是从来不停下来想想,另一种是从来不想停下来。

17:误解定律:被某一个误解,麻烦并不大,被许多人误解了,麻烦就很大了。

18:结局定律:有一个可怕的结局,也比没有任何结局要好。

19:升迁定律:仕入官场,每升一级,人情味就减一份。

20:升值定律:出口转内销,就可以升值,能舆论都是这样。

21:游戏定律:无论你保龄球打得多“菜”,每次往都可能有一两次全中,令你满意,高兴的下次再来。

22:人生定律:拼命想得到的东西,都不是真正最需要的。

23:旅游定律:没有比记忆中更好的风景,所以最好不要故地重游。

24:金钱定律:它不是万能,但是没有它万万不能。

25:财务定律:支票总是姗姗来迟,而帐单总是提前来到。

26:备份定律:学会用左手做一些事情,因为右手不是永远都管用。

27:会议定律:所有重要的决策都是在会议结束或午餐前最后五分钟完成。

28:危难定律:总是问题越复杂,期限就越短。

29:合作定律:一个人花一个小时可以做好的事情,两个人就要两个小时。

30:结合定律:不管干什么,总是有你希望的人和与你对立的人同你在一起。

人生无非常这些定律,何乐而不为?其实生活是可以简单点的。

2010年6月10日星期四

MFC中添加的菜单项为什么始终是灰色的

来自百度知道的提问:

我新建一个类,在BEGIN_NESSAGE_MAP中添加了ON_COMMAND消息,菜单项的ID也没有问题,加了响应函数,编译通过,可是运行的时候菜单项总是灰色的,请问还需要什么东西。

消息处理函数好像就是用BEGIN_NESSAGE_MAP来指定的吧,我已经指定好了。那个BEGIN_NESSAGE_MAP好像在MainFrm里指定就不是灰色的,但我想放在别的类里面要怎么做呢,说清楚点,谢谢

他这里遇到的问题和我的类似,我的问题是:我在微软官网上下了一个MFC的例子程序,工程名是MtMdi,这个程序实现多文档功能,支持多线程。由于这个例子的实现的功能和我的需求差不多,我就在这个例子上就该。基本上完全照抄了,但是遇到各种问题。

1、由于我要实现一个播放视频的功能,每次响应播放视频的时候,就发现在播放视频的时候,整个没有界面就没有响应了。
我搞不清着地方时什么原因,明明是多线程的,这个那个播放视频的线程和主窗口的不在同一个线程,在点击主窗口的时候,就没有响应。这个问题我还没有搞清楚原因,可能是我的理解有问题。

2、菜单是灰色的。
我通过class wizard添加菜单响应函数,确发现没有作用,菜单一直是灰色的,只有把响应函数放到MainFrame中才有响应。我看那个例子中也是这样做的,而且都是在子窗口类中添加的响应函数。后来在网上查到这么一段话:原文

MFC菜单默认是禁用的
由于以前用MFC都是写一些小工具作自己用,因此很少添加菜单。这段时间在弄一个比较正式的东西,因此用上了MDI,但发现添加了一个菜单后,发现菜单竟然是灰色的。不管怎样设置这个菜单的属性,菜单还是灰灰的。捣鼓了很久,终于发现当这个菜单没有添加处理事件的时候,它就死活都是灰的。
看了一下MFC的代码,原来是CWnd类的OnCmdMsg函数会迭代一遍菜单,如果发现菜单项没有处理事件就将它禁用。

这里最后断话提醒了我,也找到了菜单灰色的根本原因。特别是最后一句话,原来我在抄那个例子的时候,那个例子中重载了OnCmdMsg函数,我照抄过来,在这个函数中并没有处理我添加的菜单的响应关系。后来我把这个函数改成默认的函数,菜单果然不是灰色的了。

通过这个例子,可以发现,菜单的消息首先是通过MainFrame传递给其子窗口ChildFrame,ChildFrame首先传递给对应的view,如果view中找到了响应的处理函数,就进行处理,如果没有就沿途返回,最后到MainFrame,最后到App类。这个过程我实在看孙鑫的MFC视频教程看到的,通过这个例子就有更深刻的理解了。