@
wowpanda 额,其实还好。轮子爱好者嘛,前段时间刚写完了 Python 的一个 ODM 把 MongoDB + Elasticsearch + Redis 统一起来,提供一个统一的定义方式和查询更新 DSL,整个项目并不算特别复杂,但是里面包含了很多内容。比如一个纯手写 DSL 解释器,并对解析结果缓存(统一放在一个全局字典中,不用每次调用都解析一遍);对 MongoDB 的查询自动调优,参考了 Mongoengine 的代码;对Elasticsearch 的复杂的 JSON DSL 进行简化,并保留原生接口,再封装十几个常用的查询聚合操作。这样一个项目完成之后大概接近1w 行(目前还在完善中),但是其中关键部分反复重新了很多遍,(代码洁癖囧)算下来写过的也有 3 w 行吧。上一个项目还自己 Node 聊天服务器,顺带研究了一下 长连接的相关协议内容,搞定多机分布式,并实现了一个基于 Python 3.4 的 asyncio 协程池做并发测试。上上个项目是想写一个另类一点的爬虫,是完全基于 Celery 做多机协作的。的看,我是一个轮子爱好者哈哈。现在在自己和朋友两个人在写一个另类一点的搜索引擎,不为广度,只搜索我们许可的内容有价值的博客、站点。这里面需要完成:内容重复度评级,内容价值评级,自实现一个可以跨机房跨GFW协作的爬虫,个人行为、兴趣趋势预测等等好多内容,算大四一年需要做的。看,我是一个满脑子奇怪想法的小孩子。其实吧,主要原因是现在有太多东西都不能让我满意,所以只能不停做轮子,在这过程中,也逐渐玩过很多稍微难一点的内容(如语法解析、网络协议,设计模式,语言淫奇技巧)。哈哈,对了,我是一个 DSL 爱好者。
P.S. 因为见过太多大神的代码,所以,等我(什么时候呢)觉得自己水平可以了,我再开源吧。