C单元测试框架——cmocka

在自动化验证技术成熟之前,我们依旧需要测试,能否编写优秀的模块,体现的是能力,而为代码编写完善的测试用例,体现的则是习惯。

虽然测试并不能说明什么问题,但目前我们并无任何备选方案,相信在很长一段时间内,完善的测试用例对于项目而言都是弥足珍贵的。

有些时候会觉得编写测试用例太烦,但是要知道,至少我们还能通过测试用例来进行测试,有很多领域是无法通过如此“傻瓜式”的测试来达成目的的。

阅读剩余部分

关于HTTP解析的一点思考

似乎已经很久没有提到关于服务器的消息了,其实我一直都在写,只是有时事情比较多,会耽搁一点时间。

在使用C重写前,我就已经用Dlang实现了近2个版本的HTTP解析器,换成C之后,又换了几种思路,期间也参考现有的几种实现,可以说是有点积累,现总结成文,记录一下。

注:如下所指的HTTP均指代HTTP/1.1,不涉及HTTP/2的内容。

阅读剩余部分

Coroutine for C发布

有一段时间没发博客了,10月份实验室布置了个任务,写个pl0文法的语言,差不多赶了1个月,编译原理这块一直都是挺有趣的,当然也是有一定难度的,有机会我一定会往编译原理这个分类中添加几篇文章。

好,言归正传。之前发了2篇关于协程的文章,都只是提供了一个大概的思想,并没有给出具体的实现。似乎缺少了实现,协程这一系列就不能算是圆满结束,毕竟XX说过“talk is cheap, show me the code”,好这次就show一下代码。

阅读剩余部分

基于setjmp的协程厍实现

开学有一周了,博客还是要写的,今后可以写点从paper中汲取到的技术,不过请放心,不会是纯理论的,毕竟这不是我的风格。

继上回《谈一谈setjmp和longjmp》之后,我创建了一个新的分类——编程技法,总觉得把好好的一篇文章放到Linux分类下,并不能很好地凸显其价值。

今天就把关于协程的内容补完,还是主要以思想为主,细枝末节部分,请各位根据需求自行处理。

阅读剩余部分

谈一谈setjmp和longjmp

八月即将过去,又快开学了,小小感慨下。

本月,最值得欣慰的就是XETN服务器能够用ab测试了,单进程下RPS差不多是nodejs的4倍,当然离预期依旧很遥远,也就只能欺负欺负node了。

开发的时候异步IO带来的EAGAIN甚是讨厌,而攻克这个难题的关键就是协程,之前写过关于Fiber的文章,只不过它并不是那么灵活,出于对内部机制的好奇,我准备再造一个轮子,自己实现协程。

阅读剩余部分