[转]专心工作的15个方法

你正决定完成手头的工作。突然,某件事情需要解决。你没有想这让人分神的事情是否紧迫——你就开始了。

五分钟,十分钟。有时,超过一个小时。

等到你回到先前的工作——轰——你不知道刚才做到哪儿了,或者不知道自己为什么不能全神贯注地做这件事。你的注意力再也不能集中在工作上了,效率也低了。你宝贵的时间和努力白费了。你的动力和创造力不见了。

你忙碌的时候,不可能与世隔离。专心工作的决心掌握在你的手里。这不过需要找到合适的技巧,知道你的优势,并且持之以恒。

没什么想法?好吧,下面有十五个专心工作的方法:

1. 总是发现你所做的鼓舞人心的有趣的事情

任何有意义的任务或常规都需要一个人很多的注意力。在开始做任何事之前,问问自己为什么应该做这件事。有了答案,就会有你如此渴望的产出——那么,你就会重视这项任务。然后,想办法让这项任务变得有趣,比如,让你的创造力和想象力在此过程中玩耍。不要拘泥于“认可”的产出;让自己可以随意选择一些新奇有趣的想法。

当你做一些可以称为是自己的东西的时候,就更有可能专心工作。

2. 选择舒适的桌椅组合

很多人发现,即使多数时间坐着办公,可还是会觉得腰酸背痛。

不要因为桌椅不舒适而浪费宝贵的时间,分散精力。买一张靠背很舒服的好椅子。确保你的办公桌或者工作台结构合理。那样的话,你能工作好几个小时,而身体和眼睛却不觉得疲劳。

3. 让你的工作环境变得井井有条

胳膊够得到的东西太多,或者办公桌上方东西太多,都会让你分神。为了专心工作,只把你需要的东西整齐地堆放在你的桌子上——把其余的收好,比如放在抽屉或者架子上。找一个地方放吃的和喝的,你的包,还有其他的个人物品。

但是,把它们都放在你够得到的地方,这样你就可以喝点东西,又可以专注做手头的工作。

4. 让你的电脑里没有让你分神的东西

这一点对于使用电脑工作的人很重要:为所有经常用到的程序设定快捷方式。

把所有的关于某一项项目或任务的文件置于一个文件夹。然后,确保你的电脑没有病毒。这样你可以免受检查和修理的烦恼。这样的事例给人压力,会减弱你完成工作任务的兴趣。

5. 身边有足够的水

喝水不仅是为了健康,也让你神清气爽。一旦你觉得累了或饿了,一杯水就可以把它们赶跑。接着,你就可以完成手头的工作,晚些时候休息。此外,并非所有的肚子咕咕叫都代表饥饿,通常喝一杯水就可以解决。

确保水就在你胳膊够得到的地方。那样,你就可以专心工作,不用走到打水的地方——被别的事情分神!

6.  带点零食

就像把水放在身旁,让咕噜作响的胃安静的食物必须放在手边。处于同样的原因——把你90%的注意力投入工作,在你的工作区域之内吃东西能避免让你做不相关的事情。因此,确保你的零食也在胳膊可以够得到的范围之内!

7. 列出每天要做的事情并放在身旁

列出每天要做的事情并放在电脑旁(或者工作区域任何显眼的地方)。这一点很有用。如果把工作的清单放在电脑或者手机上,你往往会查阅其他无关紧要的选项卡或者视窗,或者回复不重要的短信。

所以,把你的“今日必做”清单放在你总是能够看到的地方,划掉“已完成”的任务。那样的话,你就不用把包翻个底朝天,也不用找来找去找你写必做事项的那一页。

8. 根据轻重缓急把任务分类

工作的第一个小时是人们效率最高的时候。这是因为所有的精力还有待消耗。所以把所有费力棘手,又富于挑战性的任务放在日程表的第一个小时里。排在这后面的是不太紧急的工作,最后是那些让你倍感无聊的常规性任务。

这样的方法让你能够专注于工作,不浪费宝贵的时间做自己不喜欢的任务。 这样做,你就不会在工作日结束的时候感到很有压力了。

9. 让别人知道你的原则

如果你决心让自己的工作方式发挥作用,那么让他们知道这一点。 很可能的情况是,你可以不受打扰地花几个小时专注于那一项真正重大的工作。当同事知道你在休息时段,会在此期间提问题或者和你交谈。除非有特别紧急的事情,否则他们不会打扰你工作的。

毕竟,他们希望别人也这样待自己。

10. 戴上耳机

大多数的办公室都有各种各样的声音源让人分神——比如,地板打蜡器,邮车,同事说话,电话铃声,东西掉在地上的声音。戴上耳机保护自己,这样你就可以专心工作。耳机可以避免你听到一些让人惊讶的声音——还有那些让你思绪飘开去的声音。

11. 让别人找不到你,让自己忙碌、离开或者“隐身”

并非所有的电话都是关于你的公寓被盗了,或者心爱的人处于极其危险的境地了。所以,在需要全神贯注工作的时候,把你的手机置于静音模式。你也可以选择激活语音信箱服务。

至于即时短信,工作的时候把状态设为“忙碌”或者“隐身”。如果你还是收到即时聊天短信(IMs),那就关掉那个程序。等晚些时候,你手头的工作不那么紧迫了再打开。

12. 远离社交网站

这些网站不需要时刻查看。所以严格要求自己,有几分钟空闲时间的时候,再登陆。

大多数的社交网站上总是有一些新奇活泼有趣的信息,所以你非常可能比原计划超时很多。这样做不但击毁了你专心工作的目标,而且还有大量信息让你产生不必要的烦躁——比如一个朋友的状态说自己的心脏病了,或者某个人涨工资了。

13. 整理你的邮件

另外一个让人紧张,令人分神的就是电子邮件。面对现实吧:你有很多电子邮件,很可能有私人信件,工作信件,预告片,网站的更新,毋庸置疑,还有垃圾邮件。它们都混杂在一起。

避免这点的一个好办法就是有一个电子邮件地址专门用于工作,一个电子邮件地址专门用于私人信件。并设定过滤所有的电子邮件。一旦你有闲暇时间,再次查看电子邮件,取消你不需要的订阅。然后,整理你以后会关注的电子邮件。剩下的都删除。

最后,只有在完成当天最重要的工作之后才查阅邮件。一定要控制浏览邮件的时间。

14. 重新规划你的电话使用

电话是用来聊重要事务的。聊前一晚的约会可以在午饭休息的时候进行。遵守这个原则有助于让你专注工作。你也可以要求同事告诉打电话的人你晚些时候会回电,而不是让你的同事随时拍你的背或者大声喊有你的电话。一旦完成工作,给先前打电话的人回电话,简单地解释你的状况。接下来的两分钟,询问他们有什么事情,记下来,告诉他们事情办好,你会再打电话给他们。准备并写下他们需要的细节,牢记他们对于这件事接下来的可能会有的想法。然后,给他们打电话,一定把谈话控制在三分钟之内。

15. 选择合适的音乐

工作的时候听音乐让你感到放松,给你提供灵感。对于一些人来说,听音乐让他们体内产生更多的肾上激素, 这样他们能够更加经济充沛地工作。

然而,并非所有类型的音乐都让人心旷神怡——某些音乐不适合一个人的心境。因此把你的音乐库根据心境相应地整理。除了帮助你专注工作的音乐,不能有其他让你分神的东西。听过一些让人放松的爵士乐,突然听到吵闹的重金属尖叫声会让你觉得异常刺耳。

还有一些想法

记住——你的周围是各种事件和工作的人们,他们可能会让你失去动力。使用上面提到的任何一种方法都可以让你不受他们的影响。

vim生成注释插件DoxygenToolkit

之前写函数/类的注释时经常是ctrl+c/ctrl+v的,也知道有些IDE上有自动生成的功能,但是没找过vim的插件。
最近不知道为什么要用它了…

Script page: http://www.vim.org/scripts/script.php?script_id=987

安装很简单,下载->解压->复制到$VIM/$VIMFILE目录下的plugin目录即可。

使用:

 : Dox

或者:

 : DoxAuthor

具体设置参考VIM官网上的介绍,也可以看源码。

然后用得不是很舒服,自己改了下代码,加了个@copyright(和他那个licence不一样),改了@version显示…

20120129

春节假期就这样过去了,七天里几乎有六天在床上赖着,这不是件值得开心的事,更不是件好事。
过年没回家乡,是有史以来第一次。其中夹带着很多的因素,假期短、天气冷、怕坐车、怕去拜年、怕面对各式亲戚朋友……我也不知道到底哪个才是牵住我的原因,只知道现在过年的感觉越来越少心情越来越沉重。
这个年过得真的有点压抑,即使面对着最亲的亲人,我也无法得到自在和幸福的感觉,取而代之的是压抑拘谨内疚。我感到与外面世界那层隔膜似乎越来越厚,而且前所未有的真实。
昨天终于把安娜卡列琳娜看完了。大体上还是能看明白的,但由于文化环境时代背景等原因,加上自己修养不够,还是有些东西理解不了,只能说是把书翻了一遍。其中印象最深的是很多的心理描写,很多的自言自语,给我的感觉在某种程度上似乎几个主要人物都比较孤独:安娜,她哥,她嫂子,伏伦斯基,列文。
列文最后那个茅塞顿开有点牵强,他之前思考了那么久的,曾为之迷茫挣扎甚至轻生的人生意义,居然凭一个普通农奴的一句话就解脱了。之前一天他还想着自杀的…更何况他一直不太信教,也没经历大悲大喜,怎么一下子改变的这么快…
另外我真的感觉不到安娜和伏伦斯基之间有爱情的存在,一方面,我觉得伏伦斯基这人比较轻佻虚伪,可能开头他和吉娣那段给了我一个很不好的印象,以安娜的魅力和修养,我觉得她更应该爱上列文那类型或者更好的…另一方面他们两一起后的生活好像一直比较平淡(除了他们在社交界的影响),没有什么刻骨铭心的悲伤或快乐,至少我是没有感受出来,可能时代不一样,也可能是基于前一原因我没办法感受。安娜最后的死也比较突然,他们不是第一次吵架,安娜也不是第一次觉得痛苦,我还以为(因为一开始就有人剧透说安娜最后卧轨)会在发生悲痛欲绝的事,如他儿子挂了、伏伦斯基为保名誉而放弃了她、或者后来她发现她居然爱上了已婚的列文,等等……不知道为什么这么快这么轻易就做决定。
总的来说,小说超出我的正常理解范围,但是有时却能找到共鸣。唯一能解释的是因为时代不同,很多当时不可思议不可原谅的行为,在今天看来已经很普遍了,比如劈腿,比如离婚,但是很多在那个时代很正当的勾当在今天看来却又很不可思议。
接下来想换换口味,看些心理学或哲学上面的书。
想买个kindle fire。
想找个伴。

yardvps配置手记

I.新建用户(test):

购买vps时只有root一个用户,ubuntu上习惯用普通用户:

1、输入用户管理的命令,新建用户(以test为例):

useradd test

修改 test 用户的密码:

passwd test

2、将新用户添加到管理组:

gpasswd -a test admin

3、给 test 用户创建自己的目录:

cd /home

	mkdir test

	chown test /home/test

4、添加sudoer权限:

vim /etc/sudoers文件。找到这一 行:”root ALL=(ALL) ALL”在起下面添加”xxx ALL=(ALL) ALL”(这里的xxx是你的用户名),保存退出.

5、指定shell:

vim /etc/passwd,找到相应的用户,指定shell路径:/bin/bash

II.OPENVPN:

1、安装:

sudo apt-get installl openvpn

2、准备和安装:

sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/
	cd /etc/openvpn/2.0/
	sudo vim vars
	su (切换到root,用普通用户老出错)
	source vars
	./clean-all
	./build-ca
	./build-key-server server
	./build-key client1
	./build-dh

3、配置:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
	cd /etc/openvpn
	sudo gzip -d server.conf.gz
	sudo vim server.conf

4、配置nat转发:

sudo bash
	sudo echo 1 > /proc/sys/net/ipv4/ip_forward
	sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 

-j MASQUERADE

	iptables-save > /etc/iptables.up.rules
	sudo vim /etc/network/interfaces
	最后添加:
	pre-up iptables-restore < /etc/iptables.up.rules

If you made a mistake and want to remove all rules from IPTables:

sudo iptables -F -t nat

III. Apache:

1、安装:

下载源码包,解压。

cd httpd-xxx
	sudo ./configure --prefix=/usr/local/apache2 –-enable-mem-cache –-enable-vhost-alias --enable-cache -with-ssl --enable-ssl --enable-so --enable-rewrite --enable-mime-magic
	sudo make
	sudo make install

IV. Mysql:

sudo apt-get install cmake libncurses5-dev build-essential g++ sysv-rc-conf
	sudo cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
	sudo make
	sudo make install
	cd /usr/local/mysql
	sudo chown -R mysql .
	sudo chgrp -R mysql .
	sudo ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --no-defaults
	sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/mysql/my.cnf
	sudo vim /etc/mysql/my.cnf
	在[mysqld]下添加:
	basedir=/usr/local/mysql
	datadir=/usr/local/mysql/data
	user=mysql

	sudo /usr/local/mysql/support-files/mysql.server start

(如果能启动成功,则说明配置成功)

配置开机启动:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
	sudo sysv-rc-conf

找到【mysql】一栏,选定【3】【4】【5】这三列

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

/usr/local/mysql/bin/mysqladmin -u root -h veapon.com password 'new-password'

V. PHP:

sudo apt-get install -y libltdl-dev libssl-dev sendmail libjpeg8 libjpeg8-dev libpng12-0  libpng12-dev libxml2-dev libcurl4-openssl-dev libmcrypt-dev
	sudo ln -s /usr/lib/x86_64-linux-gnu/libpng* /usr/lib/
	cd php-xxx
	sudo ./configure --prefix=/usr/local/php --with-curl --with-mcrypt --enable-mbstring --enable-pdo --with-openssl --with-imap-ssl --with-gd --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/ --enable-exif --enable-zip --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql
	sudo make
	sudo make install
	sudo cp php.ini-development /usr/local/php/lib/php.ini
	sudo vim /usr/local/apache2/conf/httpd.conf

适当位置加入:

AddType application/x-httpd-php .php

安装mysqli扩展

sudo apt-get install autoconf
	cd /path/to/php-source/ext/mysqli
	sudo ./configure --prefix=/usr/local/php/include/php/ext/mysqli --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
	sudo vim /usr/local/php/lib/php.ini

加入:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so

VI. subversion:

sudo apt-get install subversion subversion-tools
	sudo mkdir /var/svn/test
	sudo svnadmin create /var/svn

修改配置:

sudo vim /var/svn/test/conf/svnserver.conf
	#匿名访问的权限,可以是read,write,none,默认为read
	anon-access = none
	#认证用户的权限,可以是read,write,none,默认为write
	auth-access = write
	#账号数据库
	password-db = passwd

添加账号:

sudo vim /var/svn/test/conf/passwd
	#格式:用户名 = 密码
	user = passwd

修改权限:

chmod -R 755 /var/svn/test

VII. Memcache:
1.安装libevent:

sudo wget https://github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
sudo tar -zvxf libevent-2.0.17-stable.tar.gz
cd libevent-xxx
sudo ./configure
sudo make && sudo make install
sudo ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib

2.memcached服务端:

sudo wget http://memcached.googlecode.com/files/memcached-x.xx.x.tar.gz
sudo mkdir /usr/local/memcached
sudo tar -zvxf memcached-xxx.tar.gz
cd memcached-xxx
sudo ./configure --prefix=/usr/local/memcached
sudo make && sudo make install
/usr/local/memcached/bin/memcached -h

3.php memcache扩展

sudo wget http://pecl.php.net/get/memcache-2.2.6.tgz
sudo tar -zvxf memcache-x.x.x.tgz
cd memcache-1.5
sudo /usr/local/php/bin/phpize
sudo ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
sudo make
sudo make install
sudo vim /usr/local/php/lib/php.ini

加入:

extension=/usr/local/php/lib/php/extensions/no-debug-zts-20090626/memcache.so
sudo /usr/local/apahce2/bin/apachectl -k restart

HTML5拖放上传PHP完整版

update: 2011-12-05.
主要原理:利用FILE-API获得文件的二进制数据,通过AJ将二进制发送到PHP处理,到PHP后就跟处理普通的二进制数据一样了。
经测试,目前支持支Chrome和Firefox。这里有份HTML5特性支持列表,主要是file-api和dnd两个。

主要技术:

由于sendAsBinary不是W3C标准,Chrome上会报无此方法的错误,但是可以重写这个方法原型,在 http://code.google.com/p/chromium/issues/detail?id=35705 这里有讨论,这里 http://javascript0.org/wiki/Portable_sendAsBinary 直接给出解决办法。

然后,代码:
HTML:
index.html:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>DndUpload</title>
    <style type="text/css">
        #ct{
            border:1px solid #999;
            -webkit-border-radius:15px;
            -moz-border-radius:15px;
            border-radius:15px;
            width:600px;
            height:120px;
        }
        .shadow-ct{
            border:1px solid #666;
            box-shadow:5px 5px 3px #ccc;
            background:#FCFAE9;
        }
    </style>
</head>
<body>
    <h2>Drop Zone</h2>
    <div id="ct"></div>

    <script type="text/javascript">
        if( !window.FileReader ){
            document.body.innerHTML = "Browser is not supported";
        }

        objCt = document.getElementById("ct");

        function dragenterHandler(e){
            this.setAttribute("class","shadow-ct");
        }

        function dragoverHandler(e){
            e.stopPropagation();
            e.preventDefault();
        }

        function dropHandler(e){
            e.stopPropagation();
            e.preventDefault();
            var files = e.dataTransfer.files;
            var fr = new FileReader();

            var xhr = null;
            if (window.XMLHttpRequest){
                xhr=new XMLHttpRequest();
            }else if (window.ActiveXObject){
                xhr=new ActiveXObject("Microsoft.XMLHTTP");
            }

            for (var i = 0, f; f = files[i]; i++) {
                tmp_file = f;
                ext = getExt(tmp_file.name);

                fr.onloadend = function(){
                    if( xhr ){
                        var url = "upload.php?ext="+ext;
                        xhr.open("POST",url,true);
                        xhr.overrideMimeType("application/octet-stream");
                        if(!XMLHttpRequest.prototype.sendAsBinary){
                          XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
                            function byteValue(x) {
                              return x.charCodeAt(0) & 0xff;
                            }
                            var ords = Array.prototype.map.call(datastr, byteValue);
                            var ui8a = new Uint8Array(ords);
                            this.send(ui8a.buffer);
                          }
                        }

                        xhr.sendAsBinary(fr.result);

                        xhr.onreadystatechange = function(){
                            if( xhr.readyState==4 && xhr.status==200 ){
                                var reg = /^image/;
                                if( reg.exec(tmp_file.type) ){
                                    var html = '<p><img src="'+xhr.responseText+'" title="'+tmp_file.name+'" /></p>';
                                    document.getElementById("file-list").innerHTML += html;
                                }else{
                                    document.getElementById("file-list").innerHTML += '<p>'+xhr.responseText+'</p>';
                                }
                            }
                        }                
                    }
                }
                fr.readAsBinaryString(f);
            }    

            this.setAttribute("class","no-class");        
        }

        function getExt(file){
            var ext;
            if( file=="" ){
                ext = "unknown";
            }
            var arr = file.split('.');
            var str = arr[arr.length-1];
            if( str=="" || str=="undefined" ){
                ext = "unknown";
            }else{
                ext = str;
            }
            return ext;
        }

        objCt.addEventListener('dragenter',dragenterHandler,false);
        objCt.addEventListener('dragover',dragoverHandler,false);
        objCt.addEventListener('drop',dropHandler,false);
    </script>
    <hr>
    <h2>File List:</h2>
    <div id="file-list">
    </div>
</body>
</html>

 

PHP:
upload.php:

<?php
    $tmp_str = @file_get_contents("php://input");
    $ext = $_GET['ext'];
    if( !empty($tmp_str) ){
        $path = "./uploads/";
        $filename = time().'.'.$ext;
        $handle = fopen( $path.$filename, "w" );
        if( fwrite($handle,$tmp_str) === false ){
            echo "Failed";
        }else{
             echo $path.$filename;
        }
        fclose($handle);
    }

apache无法读取挂载分区的问题

问题是这样都,我想把windows的某个分区下的文件夹软链接到/var/www/下,就是想平时的写的代码可以和windows共用。
但是如果挂载分区都时候不加读写权限选项的话,访问的时候会出现forbidden的情况,试了下网上说都直接给原文件夹chmod,但是还是不行.
ls -l一下,其实是不生效的。于是只好在挂载的时候加上读写权限选项,之前挂载因为没想到这个,就简单的/dev/sdax /media/Other default,utf-8 0 0挂载进来就行,这样默认是只有root有写权限,可以加上umask=000(或者dmask+fmask分别设置)。

/dev/sdax /media/Other default,utf-8,dmask=022,fmask=133 0 0

O了。

JS的unterminated string literal问题

之前遇过好几次了,都不了了之,今天找到了根源。
一般这个问题是在js处理含 换行 标签的模板变量(如smarty的变量)时出现,特别是含html标签的变量。
解决问题是在后台把模板变量中的换行字符去掉,PHP里是:$str = str_replace(array(“\n”,”\r”),”",strip_tags($str) );
这里还要注意转义字符里坑爹的双引号…”\n”才会转义,坑爹的’\n’不会…

VIM 自动改变工作路径

之前用VIM新建/打开文件时,一直是:new 或者 :e 加上一串地址(幸亏有 tab 补全),一直不知道原来VIM的工作路径是可自动改变的。

这个和 Taglist 一样需要 Ctags 支持,如果你之前已经安装了 Taglist ,只要修改 vimrc 就行。

如果你还没安装 Ctags 可以搜下 Ctags的安装方法

然后,修改 vimrc , 加入以下两行代码:

set tags=tags;
set autochdir

然后结合 NERDTree 就可以实现自动将工作路径切换到当前编辑文件的位置了。

PS: VIM 工作路径相关的几个命令:

cd: 改变vim的当前工作路径
lcd: 改变当前窗口的工作路径
pwd: 查看当前的工作路径
set autochdir: 自动设当前编辑的文件所在目录为当前工作路径