Dvorak布局下一种比较理想的双拼方案

我从2011年开始使用Dvorak键盘布局至今,十分享受它给英文输入尤其是敲代码带来的便利。

从2013年9月开始我开始想在Dvorak布局下使用双拼,为此我尝试了网上能找到的各种方案,但大多数方案都是为Qwerty布局设计的,在Dvorak布局下完全无法使用。我还尝试了一些Dvorak玩家自己设计的布局(如这里这里这里),但都不甚理想,总有很多输入别扭的拼音组合。

为了找到一种理想的双拼方案,我开始不断调整键位、实验方案、再调整。但往往解决了一个别扭组合,又会造成更多的别扭组合。最终我找到了一个终极方法,那就是刷全拼音表,通过穷举所有拼音组合来检查当前方案是否理想。

经过一个星期的努力,基本方案的框架已经确定。又经过几次微调之后,改良空间越来越小。现在我已连续使用此方案两个多月,感觉十分流畅,于是决定将之公布,与各位Dvorak爱好者分享。 Continue reading Dvorak布局下一种比较理想的双拼方案

win7下配置使用dvorak-qwerty键盘布局

昨日部署一台win7开发机,在配置dvorak-qwerty布局时感觉流程自己都有点记不清了,因此想写篇文章记录一下,希望能对想开始使用dvorak布局的朋友有点帮助。

什么是dvorak-qwerty布局?

关于dvorak布局的介绍及与qwerty布局的对比,可以参考我这篇文章

Windows系统自带dvorak布局,但是如果直接使用的话存在这样一个问题:常用的快捷键如Ctrl + C、Ctrl + V等都需要双手操作,一点也不“快捷”了。colemak布局也是因为不影响常用快捷键得到很多人的拥护。

为此,Mac OS中提供了“dvorak – qwerty”布局,其作用是当按下Command、Ctrl等功能键时,临时切换回qwerty布局。这样既享受了dvorak布局给打字带来的便捷,又不影响快捷键。

而Windows系统下没有这样的布局呢?答案是有的,那就是Jeffrey Min开发的Dverty布局。 Continue reading win7下配置使用dvorak-qwerty键盘布局

欲速则不达

子夏为莒父宰,问政。子曰:“无欲速,无见小利。欲速则不达,见小利,则大事不成。”
————《论语·子路》

事件

几天前,在测试一个远程部署shell脚本的时候,因为错用了单引号导致本地参数没有传递到服务器上,结果就发生了这样的悲剧:

rm -rf /$ROOT/$PATH/$FILE #结果执行的是 rm -rf ///

脚本运行后就蹦出大量的/sys/下文件无权删除提示,一看不对赶紧停掉脚本,服务器已经挂了。经过一天的抢修服务才恢复运行,幸好终止的快,只删掉了部分系统文件,生产数据没有受到损失。

反思

Continue reading 欲速则不达

命令行下获取和识别时间戳的工具 timestamp.js

Github:https://github.com/shenjia/timestamp.js

作为程序员经常要和时间戳打交道,有时想快速知道当前的时间戳,往往需要运行一段小程序:

<?php echo time(); ?>

又或者想从一个时间戳得出具体的时间:

<?php echo date( 'Y-m-d G:i:s', 1361525534 ); ?>

一次两次还好,次数多了真的很烦,于是写了一段js,通过nodejs运行,再自定义一个shell函数,以后就可以这样了:

$ ts
1361525534 

$ ts 1361525866
2013-2-22 17:37:46

用inginx.conf分级管理nginx配置文件

其实nginx的conf结构本来设计的不错,但是从默认安装的配置文件离实际可用状态还有一些距离。比如设置fastcgi、分离server部分到多个文件等。

一般来说,部署完毕之后conf已经是面目全非了。众多参数缺乏有效的管理组织方式。如果有多个站点,那么各个站点的配置文件中可能还存在大量重复。

inginx.confgithub)项目诞生的目的是:明晰nginx配置文件的结构,让维护多个站点的配置、部署新站点变的更加简单。

部署

注意:请先备份nginx/conf目录

1、自动部署:下载自动部署脚本deploy.sh并运行,脚本会自动检测nginx/conf的位置并部署完成(需要wget和unzip)。

#全自动部署
./deploy.sh
#也可以指定nginx/conf的位置
./deploy.sh /etc/nginx/conf

2、手动部署:下载zip包后解压缩,然后将conf目录复制到nginx/conf目录。

cp conf /usr/local/nginx/conf

创建新站点

1、进入conf/servers目录,将server.example复制一份,命名为自己的站点(注意后缀应为.conf) Continue reading 用inginx.conf分级管理nginx配置文件

用Win+R启动常用软件及文档,提升工作效率

我们都试过用开始菜单、桌面图标、快速工具栏、辅助桌面管理软件等来管理常用软件,在Win7下还可以直接固定到任务栏,然而这些方法都有或多或少的瑕疵:

开始菜单:第一级可用位置太少,多级的话查找太慢
桌面图标:软件多了之后太乱,难以整理
快速启动栏 / 固定到任务栏(Win7):挤压占用任务栏空间
辅助桌面管理软件:需要安装多余的软件,可定制性差

试验过以上所有方法后,我选择了使用StokeIt以及Win+R法来管理和启动常用软件。这篇文章就来简单介绍一下我使用Win+R法的一些经验。

Win+R法简介

通过在环境变量PATH中添加一个目录,然后将常用软件及文档的快捷方式(.lnk文件)重命名为1~2个字母缩写放入该目录,要启动软件时按Win+R启动“运行”对话框,然后键入自定义的缩写再按回车即可。

详细的入门教程请看善用佳软的文章,本文只总结自己的一些经验。我的习惯是在D盘下建立一个Command目录,然后将所有快捷方式都放在此目录下。

创建对自身的引用

这个目录要经常维护,所以先要为自己建立一个快捷方式,我将其命名为go,并放到Command目录下。之后要维护快捷方式直接Win+R go回车即可。

分组管理快捷方式

在“运行”对话框里是可以直接打开环境变量PATH中定义过的目录下的子目录的,所以在Command目录下可以建立目录对常用软件进行分组。比如我因为工作需要安装了大量的浏览器,而这些浏览器只有在测试的时候才用到,所以我不想给每个浏览器都建立一个缩写,而是建立一个br(browser的缩写)目录,并将所有浏览器的快捷方式都放在br目录下。在需要测试的时候Win+R br,然后选择启动需要的浏览器。

使用批处理

在Command目录下编辑BAT批处理(类似Unix下的shell脚本),可以实现更强大的组合功能,比如创建一个这样的test.bat,使用start命令来一次运行多个软件:

start cr.lnk
start ie.lnk
start ff.lnk

这样通过Win+R test可以同时打开chrome、ie和ff三个浏览器(当然前提是要在Command目录下建立好cr、ie、ff这三个快捷方式)。注意在命令行模式下是不能省略.lnk后缀的。

快速连接远程桌面

第一步:在“运行”中启动mstsc,点击“选项”,输入ip地址,取消勾选“始终要求凭据”。连接并登录一次。

第二步:在C:\Windows\System32目录下找到mstsc.exe,创建一个快捷方式到Command目录,改一个合适的名字(建议以ip最后一节命名,比如ip为10.0.0.88,则命名为88)。右键编辑其属性,在“目标”中的System32\mstsc.exe后加上格式为“/v:IP地址:端口号”的参数,比如“System32\mstsc.exe /v:10.0.0.1:3389”(如果没有修改过远程端口号,也可以省略后面的冒号和端口号)。当然也可以创建BAT文件,里面写上start mstsc /v:10.0.0.1:3389)。

之后只要Win+R 88就可以连接到远程桌面了。

管理网站账户密码

有的网站可能一年半载去不了一次,但是还是需要注册登录(比如csdn下载站-_-)。大多数情况下不同网站下的用户名都会有所不同(比如zhangsan123,zhangsan1986等),一般对这种不重要的网站我们都会使用比较容易输入的短密码,但由于各网站密码规则的不同,最终密码还是会不一样。记忆这些用户名和密码纯粹是浪费脑细胞!

这时最好的方法莫过于建立一个密码本了,在需要登录的时候打开看一眼或者直接Copy & Paste。我的习惯是在Command目录下建一个p目录,然后在里面建立txt文件,文件名为网站域名(注意去掉www.),内容为用户名和密码。

这样当我要登录一个之前注册过的网站时,只要Win+R p,然后输入域名前几位,就可以迅速定位到对应的文件并打开,拿到帐号和密码了。

当然了,你轻松,别人也轻松。比较重要的密码(如qq、邮箱、网银)不能放在这里!

使用StrokeIt提升工作效率

StrokeIt是一款鼠标手势软件,可以将用鼠标右键画出的手势绑定到许多常用的操作,如关闭/最大化窗口、启动程序、触发快捷键等。

下载地址和新手入门可见善用佳软的这篇文章,我就不再重复了。

这里和大家分享一下我使用StrokeIt的一些心得吧。刚接触这款软件时,有点走火入魔,把所有常用软件都绑定到手势,恨不得把所有的内置手势都利用上,甚至还自创了一些手势。结果是大部分的手势都很不常用,加之后来采用了WIN+R法启动常用软件(随后撰文另述),启动软件的手势慢慢就被淘汰了。

最终经过时间的考验,存活下来的手势只有一屏而已:

简单说明一下吧:

C Reversed(从下往上画的C):启动上图中的命令编辑器(Command:StrokeIt – Command Editor)。这在刚开始使用StrokeIt的那段适应期里是使用很频繁的功能。。

C (从上往下画的C):关闭窗口(Command:Keys – Hotkey,Alt+F4)。直接关闭当前窗口,主要用于多标签支持的程序。

\Up(从右下到左上):关闭一个窗口或标签(Command:Keys – Hotkey,Alt+F4)。在单一的程序窗口执行的是Alt+F4,即直接关闭当前窗口。在有多标签支持的程序里(如浏览器、Eclipse、PS等,在tabs分类中进行了重载)执行的是Ctrl+F4,即关闭当前标签。这样省去了鼠标定位关闭按钮(一般都很小)的时间。

\Down(从左上到右下):打开QQ消息(Command:Keys – Send Keystrokes,[F1])。恩没错,我用的是F1,这样左手也可以很方便得启动。你也可以设成Ctrl+Alt+Z或者你自己的快捷键。不用Hotkey的原因是在Hotkey里按F1会弹出帮助,无法记录下按键,下面使用Keystrokes的情况都是这个原因。

/Up(从左下到右上):最大化窗口/将窗口恢复正常(Command:Windows – Maximize or Restore)。这在窗口管理中是使用频率仅次于关闭的功能,就不解释了。

/Down(从右上到左下):最小化所有窗口并显示桌面(Command:Keys – Send Keystrokes,[WIN_DOWN]d[WIN_UP])。相信这个也不用解释了吧。

T(从左上到右上,再到右下):启动记事本(Command:Run -Run Program,C:\Windows\notepad.exe)。这个是我最初绑定的大量启动程序类手势中唯一保留的一个,平时用来快速记点什么东西、格式化文本转纯文本等,很方便快捷。

Left(从右向左):返回父级目录(Command:Keys – Hotkey,Alt + Up)。在Windows的资源管理器里按Backspace或者后退,是到历史记录里的上一条,而不是到当前目录的父级。这样我们通过直接输入目录地址,以及通过“打开文件位置”进入的目录,就要按Alt+Up这个很少有人知道的快捷键。

V(左上到下,再到右上):访问指定目录(Command:Run – Run Program,C:\Windows\explorer.exe)。通过手势打开目录的方法就是启动资源浏览器explorer.exe,并把要打开的目录地址(这里是\\server)通过参数(/e, “目录地址”)传递给它。

最后再说一下怎么给分类增加程序(用来重载)。比如我们有一个支持多标签的新软件要加入到tabs分类中,那么先选中tabs分类,然后点击右边的Add按钮:

启动你要添加的程序,把Finder Tool下面的那个图标拖动到你要添加的程序窗口上(如果是全屏运行的程序,那就只能通过File Name进行添加了,需要到程序安装目录下找出主程序文件名)。

获取到Window Class后按OK,在Application Identifiers里出现了新的CLASS,这个程序就成功地添加到分类里了。如果要从分类中移除该程序,将CLASS删除即可。如果忘了是哪个CLASS,可以通过Finder Tool重新查看。

说说qwerty、dvorak、colemak三种键盘布局

【qwerty布局】


qwerty布局大家应该都很熟悉了,全世界最普及的键盘布局。
截止到去年接触并使用dvorak布局之前,我使用了十几年qwerty布局,在http://speedtest.10fastfingers.com/测试的最高CPM(每分钟击键数)为475。
相信阅读本文的读者中,有99%以上都在使用qwerty布局。

热区图


本热区图是使用http://www.patrick-wied.at/projects/heatmap-keyboard/对apache2的license.txt(36k)进行分析的结果,下同

优点

1、普及率和兼容性接近100%
2、有史以来的各种软件的快捷键都默认为此布局设计
3、最常用的快捷键(^a, ^s, ^c, ^v, ^x, ^z, ^w)都可用左手完成

缺点

1、高频键大多不在中排,都需要移动手指才能按到,导致需要大量的手指移动
2、高频键左右分布不均衡,左手负担比右手重
3、经常出现单手连续击键(尤其是左手)的情况,容易疲劳也容易出错
4、常用标点符号;/’都要用小指输入,容易疲劳也容易出错

【dvorak布局】


这个布局知道的人就很少了,和qwerty布局相比,它将元音字母aoeui移到左边,将最常用的辅音字母移到右边,同时调整了一下标点符号的键位。
自从去年接触到它后,我用了一个月的时间适应,然后就抛弃qwerty布局了。不仅输入速度得到了提升(在http://speedtest.10fastfingers.com/测试的最高CPM为535),而且长时间coding也很少出现疲劳的情况了。

热区图

使用

Windows:在语言设置里添加“美国英语-Dvorak”,推荐使用http://code.google.com/p/dvorak-qwerty/
Linux:在终端输入loadkeys dvorak(GUI请在键盘设置里找),推荐使用http://code.google.com/p/dvorak-qwerty/
Mac:在语言设置里选择“Dvorak-标准”
更多系统下启用Dvorak布局请见:http://dvorak.mwbrooks.com/support.html

优点

1、将高频键都分布在中排,大大降低手指移动距离
2、尽可能使左右手交替击键,均衡负担
3、布局优雅,精心设计了右手负责区域的键位,使辅音字母组合(如th nt gh wh rn)输入非常顺手
4、将常用的标点符号’ , . ; = – 移到更舒服的位置,输入更方便(对程序员来说巨爽)。

缺点

1、布局变化过大,几乎所有的字母和标点符号都改变了,上手困难
2、到qwerty布局的电脑上丧失盲打能力
3、别人很难再使用你的电脑了,可以再装一个qwerty布局切换
4、本来单手可以操作的快捷键要两手操作。不过MacOS下有天然的“Dvorak-标准”布局,Windows和Linux下可以用这个http://code.google.com/p/dvorak-qwerty/来使用原有键位的快捷键,但是还有一些BUG(不支持ALT快捷键、有个别字母如s w v z在开启Capslock时输入仍是小写等)
5、部分跳过键盘布局直接取键盘码的软件仍然是qwerty布局,比如QQ拼音和搜狗输入法(经测试紫光和谷歌输入法可以正常使用,只是可惜了我的QQ同步词库),还有QQ和部分网银的密码输入框(解决办法是看着键盘按qwerty布局输入),还有一些远程桌面软件,还有一些游戏(比如魔兽,这点挺好,DOTA无障碍了,哈哈)
6、高频键 r 和 i 仍需要移动才能按到,而 u 和 h 不是很高频的键却放在了本位(不需要移动就能按到)

【dvorak programmer布局】


估计某个程序员发现用dvorak布局很爽,就将之变得更加极限。于是出来这么一个布局。
这个布局大胆的用常用符号替换了数字,同时考虑到在程序中;比”出现得更频繁,调换了两者之间的位置。

热区图

 

优点

1、包括上述dvorak键盘的所有缺点
2、优化了程序中常用符号如$ ; ( ) { } [ ] =等,用来coding巨爽

缺点

1、包括上述dvorak布局的所有缺点
2、输入数字只能按住shift进行-_-

【colemak布局】


这个布局比dvorak更激进一些,通过热区图可以看到,8个高频键完美地安排在了本位。
坚持使用colemak数日后,实在无法接受别扭的标点输入进行coding,只好放弃colemak,用回dvorak了,也许colemak对普通人来说更适合一些。

热区图

使用

Windows:http://colemak.com/wiki/index.php?title=Windows
Linux:http://colemak.com/wiki/index.php?title=Unix
Mac:http://colemak.com/wiki/index.php?title=Mac
更多资料请见:http://colemak.com/

优点

1、高频键真正做到了完美分布,手指移动距离更小
2、qwzxcvbm以及标点符号键都没有移动,而且除了e和p外,字母键都在原来的手控制之下,更容易上手
3、常用的快捷键(^a, ^c, ^v, ^x, ^z, ^w)仍能正常使用
4、万年不用的capslock被换成了高频键backspace,巨爽
5、有资料详尽的官方网站http://colemak.com/,甚至针对各种打字练习软件设计了练习包

缺点

1、键分布没有逻辑,不如dvorak优雅
2、没有优化常用标点符号

aoeu.sh 让你 type less, do more

Github: https://github.com/shenjia/aoeu.sh

这是一个为 Linux / MacOS 用户设计的alias集合。

 作为开发人员,我们每天都要在终端敲很多重复性的命令。一些大段重复的命令(比如部署,安装,备份等)我们会写shell脚本来避免重复性的键入,却忽视了还有很多使用频率极高的命令。 Continue reading aoeu.sh 让你 type less, do more