Emacs 不流行但很拉风的 feature
align-regexp
相必大家都用过 C-M-\
,一般都能满足需要,可是有时候需要按一行中的某些字符对齐,比如一些变态的语言或者编程规范规定赋值语句需要按 "=" 对齐,那怎么办?
相必大家都用过 C-M-\
,一般都能满足需要,可是有时候需要按一行中的某些字符对齐,比如一些变态的语言或者编程规范规定赋值语句需要按 "=" 对齐,那怎么办?
StackOverflow 上有人问除了 HIG 外使用 Objective-C 以及 Cocoa 还有什么好的工程实践,果然是抛砖引玉,很多好的 practices 和 tips 一一跃然纸上,摘抄一些:
1> 使用 properties,不用 "_" 前缀。
之前学 elisp 的时候一直感觉思维转不过来很纠结,看了 The Nature of Lisp,原来正如 Code Complete - Laying the Foundation 章节讲的那样,我们认识新事物总是会借鉴思维里面已有的 Metaphor, 我只用过 C, C++, Java,Python, Objective-C, 也就意味着我基本只有这些语言的 metaphor,都跟 Lisp 差异很大,也难怪了。但也正因为如此,才需要不断的克服自身的排斥心理,去接触更多的新事物。
正如书中所云:
对 TDD 不了解的同学可参考 Test-driven development
本文使用的 Objective-C 单元测试框架是 OCUnit ,最新的 Xcode 已经包含。
上一篇提到过,第二级 alloc 在分配大于 128 bytes 的时候,直接使用第一级 alloc,如果小于 128 bytes 才采用内存池的方式进行内存分配。
分配过程是这样的,每次分配一大块内存,存到一个 free list 中,下次 client 若再有相同大小的内存要求,就直接从这个 free list 中划出,内存释放时,则直接回收到对应的 list 中。为了管理的方便,实际分配的大小都被调整为 8 的倍数,所以有 16 个 free lists,分别为 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128 bytes。例如需要 20 bytes,将会被自动调整为 24 bytes。free lists 的结构如下
在分析了对象的构建和析构之后,我们接着看对象构建所基于的内存空间是如何分配和释放的。这一功能是由 stl_alloc
提供的。之前提到过 allocate,在 SGI STL 中是不使用的,因为其只是对 new 和 delete 进行了简单的封装,并且加上了这段代码
1 | set_new_handler(0); |
在做单元测试过程中,经常需要对被测程序的一些函数实现 stub,下面三个文件
1 | // product.c |
使用 Emacs 大概也有大半年了,越用越觉得它的强大,始终都有惊喜,每次看到一个功能,心中想:Emacs 可以吗?答案真的往往会是 Yes!
1 | (defun factorial (n) |