Practical Vim中文版 -《Vim实用技巧》已出版

由车文隆与我合译的《Vim实用技巧》一书已由人民邮电出版社出版,本书的英文书名是 Practical Vim,原书作者是Drew Neil。这本书在Amazon网站上的评分是五颗星,是一本很好的关于Vim的书。

这本书在2014年5月已经正式出版了,但由于种种原因,我直到上周末才收到样书。拿到样书之后,第一时间翻阅了一下,书的纸质和印刷都相当不错,是我喜欢的类型。至于内容和版式,我早已熟悉的不能再熟了,不过看纸质版的感觉与看电子版很是不同,多了一份厚重感和书香气。

[……]

阅读完整文章

在Ubuntu上编译Android Gingerbread 2.3.1

前几天下载了Android 2.3.1的源代码并在Ubuntu 10.04(32位)上编译通过。这篇文章简要记录了下载、编译的过程。

关于搭建Android开发环境的文章已经有很多,本文只简要介绍一下,做为备忘。

[ 编译前的准备 ]

这一步安装获取源代码以及编译所需要的软件,使用如下命令:

$ sudo aptitude install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

另外,参考别人编译Android 2.3的经验,安装了下列软件包:

$ sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib lib64stdc++6

虽然Android官方网站上讲不支持Java 6,不过我使用Java 6也可以编译通过,所以在这里Easwy安装的是Java 6…[……]

阅读完整文章

在scala中判断一个对象是否是元组(Tuple)

在scala user邮件列表中看到一个函数,判断一个对象是否是元组。从这个函数中,Easwy才了解到原来模式匹配(Pattern Match)也可以应用于正则表达式,这使得在scala中使用正则表达式(regex)更加容易了。另外,这个函数还展现了scala的另外两个特点:

1. 尽量使用递归解决方案,而不是使用循环。这样做的优点之一是避免使用变量,优点之二是代码简洁。是否有其它优点,Easwy仍在总结。但Easwy始终有个担心,递归会不会导致效率降低?会不会有堆栈溢出风险?
2. 使用Option类型做为函数返回值。使用Option类型的好处很明显,这样你的函数既可以返回执行失败的情况(None),也可以在执行成功时给出有用的返回值。这比使用tru/false作为返回值方便很多。

函数主体如下,为了方便讲解,在前面加了行号: [……]

阅读完整文章