分享

[转]高效程序员秘籍

 t涂鸦 2013-02-28

  当我们打开电脑做一些事后,任务栏中就会有若干已打开应用程序的窗口,在它们之间切换,绝大部分人使用下面两种方式:

    1、使用Tab键

    2、直接用鼠标在任务栏中找到目标窗口再点击
  第一种方式效率更高一些,尤其是在当前窗口与上一个窗口切换的情况下,应该没有比使用Tab键更好的方法了。在我们工作的过程中,总会有那么几个固定使用的应用程序,比如IDE、浏览器、文本编辑器、邮箱客户端、即时通信工具、帮助文档等。如果我们能直接按下某个快捷键就能切换到目标窗口该多好啊,而且在该窗口不存在时直接打开相应的应用程序,这也算是一种快速打开应用程序的好方法。 使用AutoHotKey就能达到这个目的。刚开始的时候需要适应一段时间,要把应用程序所对应的各个快捷键烂熟于心,以后打开或切换窗口就是一种本能反应 了,对提高工作效率还是很有帮助的。
  AutoHotKey是一个Windows下的热键脚本语言,功能很强大,我也只是用到了它的皮毛而已,比如快速完成单词、切换窗口,有兴趣的同志们可以详细了解一下。
  首先,需要下载AutoHotKey,地址是http://dl.pconline.com.cn/html_2/1/65/id=39876%26pn=0.html
  安装完了之后,我们就有可执行的环境了,要实现快速切换窗口的目的,必须使用AutoHotKey的脚本语言写一个脚本,下面就是脚本的内容:
 
复制代码
复制代码
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode 2

Activate(t)
{
IfWinActive,%t%
{
WinMinimize
return
}
SetTitleMatchMode 2
DetectHiddenWindows,on
IfWinExist,%t%
{
WinShow
WinActivate
return 1
}
return 0
}

ActivateAndOpen(t,p)
{
if Activate(t)==0
{
Run %p%
WinActivate
return
}
}

#a::ActivateAndOpen("Microsoft Outlook","outlook.exe")
#b::ActivateAndOpen("UltraEdit","C:\Program Files\UltraEdit\UltraEdit.exe")
#c::Activate("UltraEdit")
复制代码
复制代码

  这里简单地说一下,开头的几行是初始化语句,然后定义了两个函数:Activie和ActiveAndOpen,后者会调用前者。Activie的作用是激活指定标题(通过参数t传递,也可以是标题的一部分,只要能唯一识别该窗口即可)的窗口,如果当前窗口已经是待激活的窗口,那么隐藏它,如果窗口不存在的化,并不会打开相应的应用程序,也就是什么都不做,而ActivieAndOpen会在指定窗口不存在的情况下打开相应的应用程序,它的第一个参数是窗口标题,第二个参数就是应用程序的全路径。这两个函数定义后面的3条语句就是调用的示例,每一行就是一次函数调用,第一个字母#表示用Windows键作为快捷键的基本键,因为这个键本身所关联的快捷键比较少,所以建议大家都用这个键,第二个字母就是要和Windows键组合的键,比如#a就代表 Win+a作为快捷键,两个冒号后面定义的是要用这个快捷键做什么,这里我们的目的就是调用前面定义的两个函数之一,比如第一行用Win+a打开Outlook邮箱,如果还未打开就会启动它。把脚本内容拷贝到记事本中,保存成后缀为ahk的文件,然后点击这个文件,就可以在托盘中看到一个字母为H的绿色图标,至此,我们就可以通过预定义的快捷键进行窗口切换了。
  如果要修改脚本的内容,直接在托盘的H图标上点击右键,选择Edit This Script,编辑完后保存,再从右键菜单中选择Reload This Scipt让修改后的脚本生效。
 
 

 

  在我们日常工作中,经常需要让多个应用程序窗口同时可见(并且相互不遮挡),例如在比较两个文档或者边看电子书边做笔记时,可以让它们水平方向上各占屏幕的一半。如果显示器比较大,我们可以把屏幕划分成几块,然后在各个区域放置需要同时可查阅的窗口,这样可以充分利用屏幕空间,而且同时可以干好几件事情。
  不过,很多人都是通过手动拖拽来实现这一目的,首先要找到目标窗口,然后移动到指定位置,最后调整大小,过程比较繁琐。第一步可以通过上篇文章介绍的方法快速进行,后面两步就可以用本篇文章介绍的GridMove搞定。
  GridMove是一款小巧的软件,安装后没有界面,启动后只会在系统托盘中显示一个蓝色的网格状图标,GridMove默认提供了几种常用的屏幕区域划分模板,我们可以从中选择适合自己的。操作方法很简单,用鼠标左键选中目标窗口标题栏中的标题或者用鼠标中键选中标题栏的任意位置(不松手)片刻后,屏幕上会出现一个网格,网格中的每一个区域都有数字编号,然后拖动目标窗口到指定的网格区域松手即可。更快的方式是用快捷键将目标窗口快速地放到指定的网格区域中,快捷键就是Windows键加上网格区域的编号,比如Win+1快捷键就是把目标窗口放到1号区域上。所以,通过使用AutoHotKey和GridMove,把某个窗口以指定大小放到指定位置完全可以用快捷键完成,速度也很快,几秒钟就可以完成。
  如果GridMove提供的屏幕划分模板不符合要求,也可以自定义模板,所有的模板文件都位于安装目录的Grids文件夹下,定义一个模板很简单,GridMove的帮助中有简单的说明,定义完模板后重启GridMove,并选择刚才自定义的模板即可
 

  记得在使用MindManager之前,考虑问题的解决办法的过程经常会被各种事件打断,回过头来再继续时总会有些偏差,甚至忘记了之前想到的关键地方,所以,有时候也会一边想一边记,但总觉得这个过程不够高效,一段时间后,记录的内容连自己也看不懂,有的根本就找不到了,无形的价值随之流失。
  其实我也一直在找可替代的方法,尤其是类似的软件,感觉都不太合适,大多数都是些类似便筏、网络笔记本的工具。无意中见到一位同事边看电子书边做笔记,所使用的软件让我眼前一亮,它能以树状层次呈现所有节点或者步骤,有点类似平时看到的大纲,不过它的结构更清晰、更灵活,而且每个节点可以关联图片、文档、详细说明等资源。这类软件叫思维导图软件,我下载了一个功能比较强大的,它就是MindManager,界面的风格非常像office系列软件。

  它的使用很简单,当新建一个导图后,先确定主要或核心主题的内容,然后就可以从该主题中扩展出更多的子主题,每个主题可以关联各种图标,比如紧急程度、重要性、完成进度等,每个主题的内容一般都是概要信息,简短明晰,如果需要为这个主题做一些解释,那么可以为它增加注释。

 


  使用MindManager一段时间后,思考问题的过程也有了提高,变得更加清晰,更加有条理。

 

  最新的Web浏览器都有标签页特性,而Windows自带的资源管理器却没有,总是需要同时打开多个窗口,后来下载了一个插件叫 QTTabbar,可以让资源管理器具备标签页的特性,但总是出问题。除此以外,Windows资源管理器还有种种不足,此刻能想到的有以下几点:
  1、不能设定经常使用的文件夹

  2、拷贝文件的全路径不方便

  3、使用起来不够快,快捷键太少

  Total Commander完全可以替代Windows自带的资源管理器,主界面如下图所示:
 


它的功能非常强大,下面简要介绍一下是经常用到的部分:
   1、支持标签页,对于经常需要访问的文件夹,可以自定义标签页列表,而且每次打开后都是上次退出时的状态。
   2、控制面板、回收站、注册表等系统内容都能在Total Commander中打开。
   3、主界面分为两个窗口,复制操作只需要把文件从一个窗口拖到另一个窗口即可。
   4、中对于常见类型的文件使用不同的颜色显示,一目了然。
   5、还支持文件的快速预览,在一个窗口选中文件后,按下Ctrl+Q,在另一侧窗口就会显示该文件的预览,如下图所示:
 

  下面是一些常用操作的快捷键,更多的快捷键可以点击界面右上角的“键”菜单:
  快速预览:Ctrl+Q
  新建文件夹:F7
  复制文件名到剪贴板:F9
  复制文件路径到剪贴板:F12
  在两个窗口间切换:Tab
  在标签页之间切换:Ctrl+Tab
 

  在上学的时候,下课铃声一响,快乐的课间十分钟开始了,耳边充斥着打闹声,很少有人在这期间学习。工作后,没有了提醒我们休息的“下课铃声”,长时间坐在办公室里敲代码,忙碌或者太投入的时候甚至几个小时不起身,久而久之,颈椎病、腰肌劳损之类的就会不请自来。
  身体是第一位的,工作一小时左右提醒自己休息片刻,闭目养神,伸伸懒腰,起身活动活动。但是,咱们程序员太敬业了,总是忘记休息,稍不留神,好几个小时已经逝去。
  我们可以安装一个定时提醒软件到手机上,不论在何地,只要手机在身上,它都可以提醒我们注意休息。如果工作中的绝大部分时间都坐在电脑面前办公,那么可以考虑把定时提醒软件安装到电脑上,因为不论手机的震动提醒或者铃声提醒都可能会影响到其他人。下面向同志们推荐一款我一直在使用的软件。
  EyeDefender是一款老外写的定时提醒软件,运行后会在系统托盘上显示一只“眼睛”:
 

  初始时是白色的,随着时间的推移,它会慢慢地变红,给人的感觉是眼睛里充满了红血丝,赶紧休息一下吧。
  多长时间休息片刻和每次休息多长时间都是可以任意设定的,当指定的时间间隔到达的时候,EyeDefender就会自动进行提醒,我觉它最大的特点就是提供的几种提醒方式。最柔和的提醒方式是在系统托盘中显示一个气泡状的提示,当然,这种方式不太容易引起那些工作特别专注的人的注意,所以,EyeDefender还提供了另外三种提醒方式:
1、在屏幕当中显示一张图片。可以选择一张看一眼就心潮澎湃并断然放下手头工作而沉浸在其中的图片,或者一张因长时间写代码不休息而导致严重生病的人的照片。
2、显示EyeDefender提供的视力保护程序,比如眼睛盯着画面上的移动的物体,可以缓解眼部疲劳。
3、显示屏幕保护程序。
  当设定的休息时间结束后,EyeDefender会自动隐藏启动的图片、屏保等,当然,也可以按Enter键中途退出。我倒是觉得它应该再提供一种提醒方式,那就是一旦提醒后,不提供任何退出的方式,除非重启,否则只有休息时间结束后才能自动关闭

 

  经常看到论坛上有人抱怨日常的编程工作就是复制和粘贴,对此我也深有体会,尤其是利用类似SSH框架开发的项目,很大一部分代码都是通过复制粘帖然后再稍加修改完成的。但是Widows的剪贴板只能记录最近一次复制的内容,要想粘帖之前某次复制的内容,只能再次去目的地复制,看似简单的过程可能会占用不少时间,如果能省去这个步骤,也许就可以早点下班回家。有一类工具可以帮上忙,那就是剪贴板增强软件,比如本文要介绍的CLCL,其他的还有Clipx、ArsClip、Clipmate等。
  CLCL是一个非常强大而体积小巧的免费剪贴板增强工具,运行后会在系统托盘上显示一个类似别针的小图标,CLCL会自动记录每次复制的内容,默认只记录最近的30条。需要粘帖某一次复制的内容时,先按下Alt+C(全局快捷键),然后会弹出一个对话框,上面显示最近复制内容的列表,每一条内容前都有一个编号,可以直接按下对应的数字来进行粘帖,也可以用上下键选择要粘帖的内容。CLCL记录的复制历史默认并不会因为系统重启而清空。

  CLCL还提供了模板功能,可以设定经常要使用的内容,比如for或者while的循环体、电话号码、邮箱等。

 

  目前比较流行的UML建模工具包括Visio、Rational Rose、PowerDesigner、EA等,基本上都是企业级的软件,功能强大,我只用过Visio,所以就不对它们的特点或者异同多加介绍。对于较正式的情况,例如图形会作为项目文档的一部分,建议使用以上列出的软件。当我们在工作中遇到较复杂的代码逻辑或者业务逻辑时,把它们以图形的形式展现出来更容易理解,对于这种情况,可以使用一个简单轻便的建模工具来快速地绘制。这里向大家推荐一款不错的小软件:Diagram Designer,安装包大概1.3M,下图是它的主界面:

  可以用它来绘制各种各样的图形,如UML、流程图、界面构造等,对于常用的图形Diagram Designer提供了相应的模板,所以,通过模板可以支持更多种类的图形,自定义的图形元素用起来得心应手,我觉得Visio中的图形元素很多都用不上。左半部分是绘图区域,右半部分是包含各种图形元素的模板,直接以拖动的方式将模板中的元素拖到绘图区域即可。如果想使用其他模板,则可以选择载入该模板,我们也可以对已有的模板进行修改,删除不需要或者增加新的内容。绘图区域默认是没有网格的,建议大家在使用时让网格可见,这样比较便于元素的放置和对齐。在Diagram Designer中复制绘图区域中已有元素很方便,只要按住Ctrl键,然后用鼠标左键选中要复制的元素,按住鼠标左键拖动一下,就会复制出一样的新元素,这一功能可以大大加快绘制图形的速度。如果要修改元素的各种信息,只需鼠标单击要修改的元素,Diagram Designer会弹出一个编辑对话框,我们只能以格式化代码的形式进行修改,如下图所示:。

 

  Diagram Designer支持新建多个页,可以使用ctrl+页码快速切换到指定的页,也可以对页进行命名和重新排序。对于有多个页的图形,可以采用幻灯片的方式进行浏览,这个功能挺实用的。选择多个元素要按住shift键,而不是ctrl键。

 

  随着越来越多实用软件的涌现,人们的工作和学习效率得到了很大的提高,当然,前提是我们主动去接受和学习它们的使用,并且改变已有的习惯。近一两年智能手机的快速普及,一批新的实用软件诞生了,已有的软件也纷纷推出了手机版本,使得这些软件变得更加实用,让我感受最深的两类软件是网络笔记本和网络文件同步工具,作为一名程序员,如果没有使用过它们,那真是.......,不知道该咋说。
  做笔记是一种很好的习惯,好记性不如烂笔头,更何况大部分人的记性都不太好,一本书看过一遍,过一段时间可能都被忘的差不多了,如果不随时做笔记,再看一遍的效果可能差不多,至少我是这样的,记得《COM技术原理》、《深入探索C++对象模型》之类的一些书看过了好几遍,现在真想不起来什么了,如果当时边看边做笔记,并且每隔一段时间温故一下,效果应该会好很多。经本人亲自验证,效果相当好。使用网络笔记本做笔记的好处是不易丢失,查询方便,随时随地都可以做笔记、复习笔记,而且可以记录各种内容,图片、声音、视频都不在话下,尤其是那些有手机客户端的网络笔记本,啥时候想复习一遍笔记就打开手机客户端,随时随地都可以温习。
  另外,网络笔记本的手机客户端特别适合记录日常的所想所见所闻。把看见的好东西拍下来放到到笔记本中,把老师或者客户的要求录下来存到笔记本中。它就像是我们的另一个大脑,忠实地记录下任何有价值的事物。网络笔记本的另外一大特点就是能快速查询以前的笔记,不仅有能分类的笔记本,还支持任意多个标签,加上各种排序和过滤依据,使查找笔记变得非常方便。我用过两款网络笔记本:Wiz和EverNote,目前我一直在使用EverNote,Wiz是国产软件,做得挺不错的,用过一段时间,但是接触到EverNote后我就移情别恋了。对它们就不多做介绍了,有兴趣的朋友可以搜搜有关它们的使用。
  说完了网络笔记本,下面来说说网络文件同步工具,顾名思义,它能同步多个计算机和手机上的文件。有了它,大部分情况下不需要使用U盘,基本上不会丢失文件,因为网络文件同步工具也有回收站。我们可以把整个项目或者工程在公司和家里保持同步,甚至同步到手机上,最近看到手机上竟然也有代码编辑软件,甚至可以通过FTP运行代码,像HTML、Javascript的代码直接可以在手机上运行,这对于那些编程爱好者来说很实用,真可谓编程无处不在啊!
  总之,预先善其事必先利其器,好的工具能让我们节约大量的时间和精力,关键是要迈出第一步,我跟周围人提起这些软件,有些人表现出不屑,以前的我也是这样。当意识到效率需要提高后,我找来各种工具软件去改变以前待提高的部分,现在明显感觉到完成任务的速度快了很多,所以想把这个过程写成几篇文章和大家分享,希望有所帮助。

 

  使用搜索引擎是程序员日常工作中必不可少的部分,绝大多数技术问题都能在网络上找到解答,但是我发现,对于硬盘上的文件,很多人的查找方法还是比较原始,完全是凭记忆去各个目录里找。我向同事索要安装包或者文档,要不就是不知道放在那里了,要不就是找半天。虽然Windows文件管理器有搜索功能,但是速度有点慢,而且不支持通配符和正则表达式。下面向大家介绍一款文件名搜索利器,它就是EveryThing,堪称神速!
  EveryThing是一款很小巧的文件,界面简洁,非常容易使用,如下图所示:

   第一次启动时,EveryThing会为硬盘上的所有文件名创建索引,瞬间就能完成,而且它会实时更新索引,占用系统资源非常少,最终创建的索引文件也就几兆。不过,它只会为NTFS格式的文件系统创建索引。启动后,EveryThing会一直运行,要搜索文件时可以点击系统托盘中的图标来打开它(如果EveryThing能提供快速打开搜索界面的全局快捷键就好了,不过可以通过使用AutoHotKey快速切换窗口中的方法来为EveryThing定义一个快速启动快捷键,效果非常好)当输入要搜索的内容时,EveryThing会在搜索结果界面实时显示搜索结果,然后我们可以直接在搜索结果中进行一些操作,如复制、删除等,当然也可以直接打开文件或目录,还可以复制它们的全路经到剪贴板中。
  EveryThing支持模糊匹配,多个关键词用空格隔开的话表示搜索那些同时包含这些关键词的文件,相当于"与",还可以用|隔开多个关键词,相当于“或”,这对于不太确定关键词的时候非常有用,例如:刘东|刘冬。还可以用通配符,这对于搜索某个后缀的文件特别有用,例如*.ppt、刘冬*.jpg。EveryThing支持简单的正则表达式,如下:| () ? * + . [] [^] ^ $ {m,n}
   需要注意的是EveryThing只能搜索文件名,不能搜索文件中的内容,百度或者谷歌的硬盘搜索工具支持全文搜索,EveryThing在1.2.*以后的版本中开始支持中文的搜索,EveryThing还内置了HTTP、FTP服务器的功能。

 

  对于有很多个邮箱的人来说,查看是否有新邮件是件挺烦琐的事情,尤其是拥有各种不同网站的邮箱,需要分别登录各个邮箱进行。如果有可以集中查看所有邮箱中新邮件的方法就方便多了,下面就向大家介绍两种方法。
  第一种方法是挑选一个邮箱作为聚合邮箱,用来接收其他邮箱的新邮件,也可以在该邮箱中以其他邮箱作为发送地址。建议把Gmail邮箱作为聚合邮箱,或者其他功能比较强大的Web邮箱,使用Web邮箱的好处是随时随地都可以收发邮件,只要有一个包含浏览器的终端设备即可。把新邮件自动转发到聚合邮箱的过程很简单,只需要在邮箱设置的自动转发选项中输入聚合邮箱即可,随后聚合邮箱会收到一封自动转发确认邮件,点击邮件内容中提供的验证链接完成验证,到此为止,一个邮箱的新邮件自动转发到聚合邮箱就完成了。类似Forxmail、Outlook等邮箱都有新邮件到达的通知和提示功能,其实基于Web的邮箱也能做到,不过需要做一些额外的工作。大部分浏览器都有新邮件提示器插件,例如火狐中有WebMail Notifier,360浏览器中有邮件app,但是在聚合邮箱中想用其他邮箱账号回复某个邮件就只能登录该邮箱了,不过有的邮箱客户端支持多个邮件发送地址,比如Gmail支持多个邮件发送地址,在发邮件时可以选择用哪个邮箱发送。在Gmail中增加邮件发送账户的方法:进入邮箱设置,选择“账户和导入”选项卡,点击“用这个地址发送邮件”右边的超链接,即“添加您拥有的其他电子邮件地址”,浏览器会弹出一个对话框,在其中的输入框中填写要作为发送地址的邮箱,按照提示继续即可,以后在聚合邮箱中收到来自该邮箱的新邮件,回复邮件时的发送地址默认就是该邮箱。
  第二种方法是使用Pop peeper。Pop peeper是一款小巧的邮件检测利器,支持各种各样的提醒方式,可绑定任意多个邮箱账号,可以把它作为一款简单实用的邮件客户端,也可以和已有的邮件客户端(如Outlook)关联。主界面如下图所示:

  首先要做的就是把账号导入Pop peeper,它支持自动添加,单击左下角的添加按钮,可以选择导入账号或者添加单个账号,当选择导入账号后POP Peeper程序会自动将本机中的OutLook中或者其他邮件客户端中的已有账号全部显示出来,在需要导入的邮件账号前面打上勾号,然后单击“完成”按钮,然后分别输入对应各个账号的邮件访问密码,最后单击密码输入框中的更新按钮,就能将被选中的邮件账号全部添加到POP Peeper程序中了。如果选择手动添加账号的话,在随后弹出的向导窗口中,依次输入电子邮件地址、账号名称、登录邮件服务器的名称与密码、邮件收发服务器的IP地址等信息,最后单击“完成”按钮,结束账号创建工作。Gmail账号的导入可能需要额外的工作,具体可参见官方网站的说明:http://www./faq.php。以下是Pop peeper所支持的提醒方式:
1、语音提醒,可以自定义语音。
2、托盘图标通知,显示每个帐户的新邮件数量。
3、闪烁的滚动锁定指示灯
4、Windows弹出窗口中显示收到新电子邮件的帐户
5、气球提示显示收到的最后一封电子邮件消息的主题和发件人
6、自动打开Pop peeper或启动电子邮件客户端
7、自动朗读收到的邮件(需要下载插件)
8、启动屏幕保护程序,在其中显示收到新邮件的账户和邮件数量(需要下载插件)
9、不间断地语音提示,直到得到用户的确认(需要下载插件)

  使用邮箱聚合的方式后,基本上就只需要登录聚合邮箱进行操作了,可以节约不少时间,园友们不妨尝试一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多