将vim变得简单:如何在vim中得到你最喜爱的IDE特性
原文出处:这里
摘要:
开源的vim文本编辑器提供许多灵活而强大的功能,但是vim自身是很难被配置使用的,在本教材中,我们将向你显示通过几个简单的方式使得你的vim具有集成开发环境IDE的行为
vim是很多程序员和系统管理员最爱的文本编辑器,虽然他提供了很多优秀而灵活的功能,但是对于新手来说他依然是难于上手的。从传统集成开发环境转到vim的开发人员通常会开在发方式的转变中发现迷失了自己。
我经常收到来自于读者的邮件,他们希望能找到一种方式使得vim变得对开发者更友好。一个常见的抱怨是vim并不是自身就带有IDE的特性,并且如何来通过配置能得到等价IDE功能也不是很清晰。而揭开vim真正神奇的秘密就是利用强大的vim插件系统和对vim自身功能的改善和增强的第三方脚本。在阅你读本文之前,我已经整理好了一个vim的有用tips和插件列表,这些列表中的内容将会使那些用惯IDE功能的人们在vim上感到宾至如归的感觉。
虽然vim主要是设计给基于字符方式的文本编辑器,并且它有可能是这类编辑器中最高效的工具,但是现在在vim上也存在一些更适合新手使用的基于图形的外壳。不像运行在终端窗口上的v ...
20非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用。
1. 字符串有整型的相互转换
String a = String.valueOf(2); //integer to numeric string
int i = Integer.parseInt(a); //numeric string to an int
2. 向文件末尾添加内容
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter(”filename”, true));
out.write(”aString”);
} catch (IOException e) {
// error processing code ...
几个有意思的漫画
目录
软件Bug和软件Feature的差别
一个理解流程图的指南
什么叫极限编程
如何衡量好的代码
软件Bug和软件Feature的差别
注释:有时候bug和feature的差别就是bug长得难看了一些。
一个理解流程图的指南
什么叫极限编程
注释,对话翻译——
1)程序员:我不能在第一个版本给你所有的的功能。
2)程序员:并且,每个功能需要有一个所谓的“用户案例(User Story)”
3)用户:好吧,我告诉你一个“用户案例”——我要所有的功能,不然我就毁了你的生活。
如何衡量好的代码
注释:下图中用“代码审核”流程中的每分钟出现“脏话”的个数来衡量代码的质量。(WTF is stand for “What the F**K”)
一个C的序列化库tpl
tpl(http://tpl.sourceforge.net/)是一个开源的小项目,其主要是提供一个可以序列化或反序列化C语言数据的一个API函数库。tpl号称是最有效率的也是最快的,它可以把你内存中的数据存放到文件中,并可以在你需要的时候用文件中反序例化到内存变量中。而且这个函数库没有依赖于别的函数库。
下面是一个简单的示例(来源于其主页)
把一个数组(“序号”和“人名”)序例化到文件中。
#include "tpl.h"
int main(int argc, char *argv[]) {
tpl_node *tn;
int id=0;
char *name, *names[] = { "joe", "bob", "cary" };
tn = tpl_map("A(is)", &id, &name);
for(name=names[0]; id < 3; nam ...
谁说C语言很简单?
前两天,Neo写了一篇《语言的歧义》其使用C语言讨论了一些语言的歧义。大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西。
是的,C语言并不简单,让我们来看看下面这些示例:
为什么下面的代码会返回0?(这题应该很简单吧)
int x;
return x == (1 && x);
本题主要是关于C/C++中变量初始化的问题。
为什么下面的代码会返回0而不是-1?
return ((1 - sizeof(int)) >> 32);
答案:sizeof 是一个unsigned的类型,所以……
代码作用域是一件很诡异的事,下面这个函数返回值是什么?
int x = 5;
int f() {
int x = 3;
{
extern int x;
return x;
}
}
答案:5
函数和函数指针可以相互转换。下面的语句哪些是合法的?
int (*pf)(void);
int f(void)
{
pf = &f; / ...
Web设计的速查卡
速查卡不仅仅可能帮助我们记住一些重要的东西,而且可以放在手边,当我们需要的时候,可以很快地查找。
在本篇文章中,你可以看到28个相当不错的关于Web设计的速查卡,它们分别是关于:Photoshop, Dreamweaver, 颜色, 排版,和 其它Web设计相关的。他们都是一页纸,可以方便你很快地打印出来。
Photoshop
目录
Photoshop CS3 快捷键速查卡
关于调色板的一些热键 (HTML)
Photoshop 工具栏速查 (HTML)
Photoshop 套索工具速查
Photoshop 笔刷工作速查
RGB 十六进制表
颜色速查 (PDF)
Web设计颜色
Web 安全颜色表 (HTML)
十六进制颜色表 (HTML)
浏览器颜色表 (HTML)
VisiBone Font Card
常用字体表 (HTML)
混合字体 (PDF)
Points 和Pixels近似转换表 (HTML)
Megapixels 表
Bl ...
语言的歧义
语言是人与人相互沟通的途径,而计算机语言则是人和计算机沟通的途径。就算是任何再完美的自然语言都会有歧义,但是又是什么让人和计算计算机间产生了歧义呢?
下面这篇文章来自Gowri Kumar的Puzzle C一文。我做了一些整理,挑选了其中的一些问题,并在之后配上相应的答案(这些答案是我加的,如果需要原版的答案可以直接和本文作者Gowri Kumar联系,作者的联系方式可以从这里得到)。
puzzle 1
此段程序的作者希望输出数组中的所有元素,但是他却没有得到他想要的结果,是什么让程序员和计算机产生歧义?
#include <stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0 ...
Linux磁盘使用命令du的改进
我们知道,在Linux下,如果你想知道当前目录下,每个文件或子目录的尺寸,你可以使用du命令来完成这一动作。如:
$ du -sh *
这个命令可以以K,M,G的方式显示每个文件和子目录的大小。我们把这种方式叫做,human-readable,也就是可以让人读的方式,如下所示:
8.4G Desktop
2.6G Documents
12K keys
12M Pictures
536K scripts
但是,很可惜的是,我们的du并没有提供相关的排序功能,所以,如果在human-readable下,也就是-h参数下,我们很难使用sort命令来排序。因为那变成了字符串排序,小数点,数字的位数,还有单位K,M,G都会让排序变得混乱。那么,我们如何才能即有human-readble这种功能,还能有排序呢。我们得借用一些脚本语言来处理了。
下面是使用了Perl来达到这一功能:
du -sk * | sort -n | #以 K 字节的方式排序
perl -ne ' #使用Perl来处理 K M 和 G 单位
($s,$f)=spl ...
22条经典的编程引言
下面的这些经典的引言来自英文,也许有些我翻译的是不很好,所以,我提供了中英对照,如果有问题,请大家指正。
过早的优化是万恶之源。Premature optimization is the root of all evil!– Donald Knuth
在水里行走和以一个需求规格进行软件开发,有一点是相同的,那就是如果水或需求都被冻住不了,那么行走和软件开发都会变得容易。Walking on water and developing software from a specification are easy if both are frozen– Edward V Berard
Hofstadter 定理:“一件事情总是会花费比你预期更多的时间,就算是你已经考虑过本条Hofstadter 定理”。It always takes longer than you expect, even when you take into account Hofstadter’s Law.– Hofstadter’s Law
有些遇到问题 ...
关于C++构造函数的FAQ
下面是一些关于C++构造函数的FAQ。你能回答得出来吗?你可以点链接查看答案,不过是英文版的。他们来自于C++ FAQ Lite。当然,也有中文版的,只可惜中文版的太老了,只更新到了2001年。在C++ FAQ Lite上还有很多关于其它部分的FAQ,大家可以去看看。
[1] 构造函数是用来干什么的?
[2] List x; 和 List x();有什么不同?
[3] 是否一个类的构造函数可以调用另一个构造函数来初始化自己?
[4] 是否Fred类的默认的函数函数就一定是Fred::Fred()?
[5] 如果要创建一个Fred 对像数组,什么样的构数函数会被调用?
[6] 构造函数初始化成员变量时,用 “初始化列表” 还是 “赋值”?
[7] 在构造函数中用this 指针是否有问题?
[8]什么是“名字构造函数”(Named Constructor Idiom)?
[9] “值返回”意味着额外的拷贝吗?
[10] 为什么我们不能在构造函数初始化列表中初始化一个 static 成员变量?
[11] 为什么一个有 static 成员变量的类会有链接错误?
[12] 什么是“stati ...
电子书:编译器设计基础
这是一本关于编译器设计原理的书,让我又想起了大学时的《编译原理》还有那长篇长篇的作业,以及几个方法分析器的上机实习。现在基本上都全部还给老师了。
Basics of Compiler Designhttp://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/
PDF下载
5个不错的3D素材网站
你也许并不是一个创建3D图形的好手,你也许只能创建一些原始的东西,如:停止或灯炮标志等等这些小孩子玩的东西。而我们现实世界则需要更复杂更牛的东西,比如说一个人物,一个机车等等。这里有史上最好的5个网站,你可以通过这些网站找到你想要的模型,这些3D的模型或资源对你开发游戏一定会有很大的帮助。
3DRT
这是一个迄今为止最好的站点。不仅仅因为这个站点有很多非常专业的模型,而且这个站点在收费方面还不是太坏——经常会有一些折扣。几乎,所有的模型都是动两国的,而且他们还是有皮肤的。他们有各式各样样的格式,并且提供PSD文件,这样方便你创建自己的皮肤。
Garage Games
在 Garage Games,一些艺术包也有非常“漂亮”的价格,有一些相当不错,但也有一些普普通通。这些东西完全取决于艺术家们怎么去创作他们的。这个站点并不提供很多的格式。另外,在 Garage Games上,你还能找到很多不错的声音素材。
FPS Creator
这个站点有很多相当不错的模型和声音。所有的素材都是动画的和有皮肤的。所有的都是基于FPS creator格式的和可以被转换成其它格式的 .X 格式 ...
十个你可能不曾用过的Linux命令
下面可能是你不曾用过后十个Linux的命令。相当的有用。
1)pgrep
pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
$ pgrep -u hchen
22441
22444
这个命令相当于:
ps -ef | egrep '^hchen' | awk '{print $2}'
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
[hchen@RHELSVR5 ~]$ pstree
init-+-acpid
|-auditd-+-python
| `-{auditd}
|-automount---4*[{automount}]
|-backup.sh---sleep
& ...
用TCC可以干些什么?
Tiny C Compiler 是一个微型的 C 语言编译器,支持 Windows 和 Linux 平台。其项目主页是: http://bellard.org/tcc/ 。你可以使用这个不到100K的编译器编译你的C文件,其支持C的预处理,编译,机器码汇编和链接。编译速度也超过了gcc,而且它支持ISO C99标准,并且,tcc还包括了一些内存和数组边界的检查。其还可以编译Linux的内核。
不过,TCC 最有趣的特性是可以用 UNIX 系统上常见的 #!/usr/bin/tcc 的方式来执行 ANSI C 语言写就的源程序,省略掉了在命令行上进行编译和链接的步骤,而可以直接运行 C 语言写就的源程序。这样就能做到像任何一种其它的脚本语言比如 Perl 或者是 Python 一样,显著的加快开发步调。可以像编写 Shell 脚本一样的使用 C 语言,随便想一想都觉得是一件奇妙的事情。但是 TCC 还有一些其它的特性呢!
在TCC这个超小型的C语言编译器下,我们还可以干得更多,比如这个开源项目:C in Python,项目主页是:http://www.cs.tut.fi/~ ...
十大最失水准的科技预测
英国权威消费数码杂志T3评出了有史以来十大最失水准的科技预测。比尔·盖茨也占了其中2项。预测未来的确是一件很难的事情,即便是最聪明的人也会马失前蹄。
1. 下一个圣诞节,iPod将会死去,完蛋,过时。 Allan Sugar爵士(一个很著名的英国企业家,和BBC合作一个著名的节目《学徒》), 2005.2. 家庭不需要有一台电脑。 Ken Olsen, Digital Equipment简称DEC的创始人, 1977.
3. 核能吸尘器将在10年内成为现实。 Alex Lewyt(真空吸尘器公司Lewyt Corp的CEO), 1955.
4. 电视不可能兴盛起来,因为人们“很快就会因为每晚盯着一个胶合板盒子而感到厌烦”。 Darryl Zanuck( 好莱坞多栖明星), 1946.
5. 1933年,在可容纳10名乘客的波音247首航之后,一名自豪的波音工程师曾表示:“永远不可能制造出比247更大的飞机”。 Boeing engineer, 1933.
6. 我们已处在 ...
如何知道某网站运行在GAE上
GAE就是Google Application Engine,通过Alexa的网站排名系统,我们可以知道Top 10的使用GAE的网站,他们是:(截止至今天)
1. www.robtex.com (Alexa rank: 1691)
2. www.twibes.com (Alexa rank: 13143)
3. www.acid-play.com (Alexa rank: 25884)
4. www.jaiku.com (Alexa rank: 29061)
5. www.wordle.net (Alexa rank: 34022)
6. www.twazzup.com (Alexa rank: 40910)
7. www.twollo.com (Alexa rank: 41414)
8. www.downforeveryoneorjustme.com (Alexa rank: 41718)
9. www.chromeexperiments.com (Alexa rank: 49899)
10. www.desktop-reporting.com (Alexa rank: 5144 ...
一个在线的画UML图的网站
http://yuml.me/
这个网站可以允许你在线地,通过一些UML的语法,生成相应的图片。
比如,如果你输入:
<img src="http://yuml.me/diagram/class/[Customer]1-0..*[Address]"/>
那么,你就可以得到下面的图片:
如果,我们输入:
<img src="http://yuml.me/diagram/class/
[User|+Forename+;Surname;+HashedPassword;-Salt|+Login();+Logout()]" alt="" />
还有Use Case:
<img src="http://yuml.me/diagram/usecase/[Customer]-(Login), [Customer]-(Logout)"/>
还是挺不错的吧,呵呵。大家可以上去试试。
让Ruby增加30%的性能改进
一切都和 --enable-pthread 有关
问一下 Ruby 黑客怎么简单地增加一个线程的Ruby应用程序的性能。也许,这些黑客会告诉你,“小伙,每个人都知道在编译Ruby的时候你需要使用configure 的 --disable-pthread参数”。没错,在configure --disable-pthread 可以让你得到大约 30% 性能提高。但是,这是为什么呢?
所有的这一些我们需要使用 strace 工具,这个工具可以打出所有的真实的操作系统的调用。
下面,是一段我们测试的例程:
def make_thread
Thread.new {
a = []
10_000_000.times {
a << "a"
a.pop
}
}
end
t ...
如何检查网页浏览器的兼容性
BrowserShots.org 是一个很不错的在线服务,它主要帮助你检查一下你所设计网站是否兼容所有的浏览器。其目前支持四个操作系统:Linux, Windows, MacOS和BSD。浏览器支持的就多了:包括MSIE,Firefox,Chrome,Safari,Opera,Dillo,SeaMonkey,Navigator等等浏览器的不同版本。
使用这个在线服务其实很简单,只需要输入你的网址,并勾选一下各种浏览器。当然,你还可以指定分辨率,色彩度,Javascript,Java和Flash的版本。然后,这个网站会利用虚拟机的技术,启动操作系统然后运行相应的浏览器访问你的网站,并把图抓下来上传到你可以访问的位置以例提供你下载。
需要注意的是,如果你选中了太多的浏览器,可能整个速度就有些慢了,而系统设置是30分钟过期,而可能有很多浏览器的任务却高于这个时间。所以,你需要过会就去点击一下“Extend”按钮,以告诉系统延长过期时间。
下面是“酷壳”的一些抓图链接如下:http://browsershots.org/https://coolshell.cn/
不要拯救那些职场上的“无可救药”
此文来自Marshall Goldsmith的博客,此人曾任Peter Drucker Foundation 的Board member(实在不知道怎么翻译),49年出生,生平中是一系列管理学方面的成就,是一位罕见的高产的,大师型的博主。
显然,我所翻译的标题有些夸张(原标题是“spotting the uncoachables”)。
职场上除了职位所确立的关系之外,还有一种重要的关系,那就是“师徒关系”。如果幸运,大家会遇到有人愿意 coach 自己,给自己传递技能或者指点职场之道。等我们在一个地方呆久了,也会有时候 coach 一些新入道的同事,甚至有时候为了达到团队目的,需要用自己的经验和技能影响自己的同僚。
此文提到的了4种很难coach的情形,大家可以拿来参考。但是这并不代表我们遇到觉得“朽木不可雕也”的人的时候就应该彻底放弃。如果我们无可避免的需要影响他们的行为,我们需要更有技巧的选择自己的方式。
四类不可coach的人:
自己并没意识到有任何问题的人
其努力方向和公司战略相左的人
入错行的人(也许我们应该引导他们去发现自己才能所属的领域) ...