例行回顾一下2014年学习和看到的技术、思路、方案总结:
Native Code 型语言
C/C++
- 《C++11动态模板参数和type_traits》 – 目前最上流C++设计模式就是模板,各种逆天的用法。这个只是冰山一角,也算是个敲门砖
- 《简单C++单元测试框架(支持一键切到GTest或Boost.Test)》 – 无论是Boost.Test还是GTest都过于复杂。而且跨平台方面比较有问题,于是就搞了个自己的单元测试框架。然而为了让一些平台下能利用到GTest和Boost.Test里的一些有用的特性,就在设计之初就做了一些适配层,这样可以很容易地切换到GTest或者Boost.Test。
- 《捣鼓一个协程库》 – 协程还是蛮上流的,参照微信libco库和微软Task系统的API而写出来的一个协程任务系统。基本功能已经完成。
- 《再议 C++ 11 Lambda表达式》 – 稍微深入C++11的lambda表达式和遇到的问题。
- 《[libiniloader] Project》 – 同样是由于现有的ini读取库都过于复杂,而且我这里ini读取主要用于游戏配置,希望接口简单,并且支持像PHP里那种层次关系。所以就有了这个玩意。自己用状态机简单实现的词法分析,并使用模板实现导出数据,还做了对象conf文件用#来注释的支持。最重要的是,所有的实现只有两个文件(一个.cpp和一个.h)。
- 《关于BUS通信系统的一些思考(一)》、《关于BUS通信系统的一些思考(二)》 – 主要是堆现有我接触到的一些通信系统的一个小总结,然后试着设计一个能解决一些问题的设想。具体实现仍在缓慢实现过程中。目前比较让自己满意的部分是性能测试和稳定性测试。
- 《集成Qt Webkit 到cocos2d-x》 – 由于项目工具需要,了解了一下Qt。Qt的设计还是比较有意思的。
- 《Android NDK undefined reference to ___tls_get_addr 错误》 – 写跨平台代码过程中碰到的android的一个奇怪的链接问题而引发的一些小研究。不用不知道,一用吓一跳。
脚本 & 托管语言
Lua
- 《Lua性能分析》 – 做这个得原因是lua profile不支持lua5.2。其他好用的工具都不免费。干脆就自己搞个性能分析工具,比较开心的是被gaccob拿去改装啦
- 《tolua++内存释放坑》 – tolua++的坑真不少,已经发现的已经两个了,没发现的还不知道,所以为了保险起见,自己写了个lua函数绑定机制。等新的机制趋于成熟了再发分享出来
Javascript
- 《基于Chrome插件的开发工具链》 – 之前在腾讯的时候,跨部门沟通效率太低,所以干脆自己写浏览器插件来做一些自动化和多个工具集成方面的工作。于是研究了一下浏览器插件的编写,实际上后来还研究了Firefox的,总结发到腾讯KM里但是忘记转发一份到blog了。现在离职了拿不到,过两天找人问问看能不能拿回来。
PHP
- 《[WP Code Highlight.js] Project》 – 迁移blog写作工具的产物,集成highlight.js用得,并且已发布到wordpress的plugin里
工具及其他
- 《又碰到了这个解谜游戏,顺带记下地址》 – 以前遇到的解谜游戏的地址
- 《Linux 编译安装 GCC 4.9》 – gcc 4.9已发布,在4.8的基础上新增优化了很多功能
- 《记录一些在线编辑器》 – 这是转向使用markdown写作的开始
- 《LLVM + Clang + Libcxx + Libcxxabi 工具链编译》 – 这是主流编译器构建的一个补充,clang的编译系统做的远不如gnu的。编译起来困难重重。
- 《近期研究VPN的一些记录(OpenVPN,pptp,l2tp)》 – 研究的VPN搭建流程,主要是作为软件开发。不翻墙没法活啊。工具、很多优秀的开源项目都搞不到
- 《Gitlab环境搭建小计》、《gitlab腾讯企业邮箱配置》 – 开始主要版本控制系统转向git的开始
新增的开源项目
2014年的规划完成情况
- [已完成] 第一是学习下Python,这玩意现在很火,有空得研究下;(目前挺多工具用python写得,但是都是小工具,不成体系所以并没有发布)
- [已完成] 第二是看看Java的垃圾回收的一些实现,看看能不能用在C++里(java实现在语言层,算法比较多且复杂,c++的话暂时还没想到什么好办法移植)
- [部分] 第三是继续看一些底层的技术书籍,比如TCP/IP详解等等(这本书没看,其他的倒是不少)
- [已完成] 第四是基本完成协程框架(功能基本完成)
- [已完成] 第五是重拾Java,使用Java制作小工具而不是C++,以达到更好地跨平台特性( xresloader 这货就是我一直想做没时间做,现在终于做出来的东东,java编写。跨平台,至少我自己这里Linux和Windows下都在用)
总结
总的来说,2014年感觉看得东西都更加深入一些,量少一些。今年没看多少书,大致浏览了下《C++ Primer 第五版》,精读了《深度探索C++对象模型 》,第一遍过了一下《Unix环境高级编程》这本书看一遍果断是不能完全理解的,我看完第一遍的感觉最模糊的地方是终端控制那一块。还有看了一点点的《Linux内核设计艺术》果然如gaccob所说,看起来没什么意思,有点教科书的感觉。其他的零零散散的也没什么意思的书也有,比如一个讲类似libevent的事件框架的,一个讲libuv框架的,等等。目前正在抽时间精读《程序员的自我修养—链接、装载与库》,这确实算是国人写得不多得的好书哇。
其实还是有很多平常研究的小东西应为时间原因并没有记上来,比如学习python之余大体看了一下hadoop和spark怎么用,并且试着用python+spark写了个日志分析的工具。
研究vpn的时候顺便把家里的路由器玩了一番。刷了几种开源系统,架设自动翻墙代理,甚至刷坏系统以后,淘宝买了个TTL模块焊接到路由器上,有点玩硬件的感觉。但实际上我也没深入研究,没有交叉编译系统或者软件,都是用得别人弄好的现成的东西。
今年在项目大量使用cmake以后,我也开始编写一些cmake的通用模块,但是现在还没有搞得很成熟,所以也暂时没分享出来。
其实c++方面,之前搞libcopp的时候想研究下gcc是怎么做动态栈的,然后加一个最大动态栈限制、然后让老的gcc版本使用libcopp的时候也能使用动态栈,甚至vc也能用。逐步看了些源码之后发现和abi有关,挺复杂的就作罢了。
web方面我开始用markdown来写作,主要是找到几个不错的工具,gaccob同时向我介绍了latex,我试了一下发现虽然功能很强大,但是过于复杂了,像我这种写blog又不是写书的,用起来还是不方便。所以最终还是转向markdown,然后wordpress使用markdown代码高亮没有太好的方案,于是WP Code Highlight.js 项目就诞生了。但是我以前写的文章都是用SyntaxHighlighter来高亮的,我又很懒不愿写工具转已发布的文章内容,所以做了对SyntaxHighlighter和prettify的兼容。
xresloader是之前一直想做的转表工具,应为之前在公司用得转表工具配置好复杂,并且命令行版本很不好用,GUI版本一般般,还有很多很烦的编码问题,还拿不到源码。所以干脆重写一个。为了跨平台使用了java,效果不错。感觉性能一般,但是关键是跨平台而且开源哇。而且做了c++、lua、和pbc版本的读取器。还是比较爽的,有源码要拓展也是比较简单的。
其他的项目纯粹是项目中碰到一个工具需求,那么写一个工具,这种模式,所以2014年的新开项目比较多。比较开心的是有人开始给我开源的项目推送request啦。
2015年的规划
- 整理出通用的cmake模块
- 完善并整理出通用的lua模块和目前用的lua绑定机制
- 完善高性能的异步通信框架libatbus
其他的肯定有挺多零碎的,等2016年的总结吧。