蛙蛙推荐:一个程序员2012年技术学习总结
俗一吧,也总结一下,程序员,代码说话。
发起了一个互联网公司技术选型的调查
想知道国内互联网公司都在用什么时髦或靠谱的技术,服务,开源项目吗? 这里给出你结果,很有代表性的,值得去借鉴,少走弯路。
编程语言PK台
社区里各种语言之争从来不绝,要想听一些理性的语言分析,可以到这里看看,希望大家发表专业客观的评价,以便帮助别人。
代码洁癖练习
每个程序员都希望自己的代码干净整洁,可以来做一下 对象健身操,我根据此方案做了两个练习。
80行实现的中文分词算法
80行实现的中文分词算法,中英文都支持,还附带测试,可直接使用搜狗词库,实现原理是正向最大匹配,没有学习功能。
100多行写了个数据库
名字叫WawaDB,一个纯文本的试验性数据库,只有100多行,还带测试,目的是用来存日志,用二分查找实现了索引。
- 写入性能:写入300万条数据,每条数据54个字符,用时2分51秒
- 读取性能:在60万条数据里按条件找96条数据需要1.3秒,(不知道为啥性能这么差)
70行实现的javascript词法分析器(未完善)
代码,可直接测试,有一些包含javascript正则的输入目前解析还有问题,龙书太难,正则那部分看了几遍都没理解透彻。
100行写了个博客程序
小天天博客,纯前端实现,比jekyll还简单,可直接托管在github上,用程序员最喜欢的Markdown格式写博客,这篇博客就是正在用Vim写Markdown,完了就会发布到用这个博客程序搭建的huhao.me上。
100行写了个类似Backbone的前端MVC框架
演示在这里,代码在这里,主要是实现了路由的功能,然后Model,View,Control都支持提供了一个命名空间,主要是方便组织代码。
由于新浪微博升级API,通过关键词搜索微博的功能不能直接调用了,所以Demo里部分功能已经不能用了。
70行实现的日志分析脚本
代码,可直接对文本日至进行分组和排序功能,完了输出结果粘贴到excel里就可以直接生成图表,对于排查一些生产环境问题有很大的作用。
大腿网,你懂得
代码, 之前写一个分享礼物的网站晒礼物,然后把它开源了。主要功能就是定时扫描微博上包含指定关键词的图片,然后以很俗的瀑布流的方式展示出来。
后来又有人改造出了其它语言的版本:
前端的UI自动化测试框架-未完善
代码, 网页UI测试因为好多操作是异步的,所以比较难测试。我用老着的jscex,DOMSubtreeModified和iframe写了个UI自动化测试的框架,对Backbone Todo进行了测试,完全OK,甚至对公司网站进行登陆,添加,删除数据等操作都可以测试。
不过目前还拿不出手,还需要时间去完善一下,不过思路和方向是可以的。
Python项目初始化模版
代码, 好的开始是成功的一半,如果要写一个新的Python项目或模块,可以从这个项目开始。本项目参考了很多github上比较规范的Python项目,从测试,文件安排等方面都比较科学。
linux的性能计数器
玩过windows的同学肯定对Windows的性能计数器深有体会,一些生产环境的疑难问题经常可以通过计数器来进行一些诊断排查,但linux却没有统一的性能计数器API。
今年为了排查一些生产环境问题,我用python写了一个性能计数器组件,包含了客户端和服务端,使用起来非常简单,只需一行代码,然后一个计数器收集中心对这些计数器进行收集,展示,以及根据一定规则向开发人员和运维人员发送报警。
目前该项目还未开源,在内部使用,大家要想解决这类的问题,可以使用开源的pystatsd和Graphite,很好用。
基于gevent的纯异步高性能双向通信框架
代码,HTTP虽好却不支持双向通信,Websocket支持双向通信且没有request,response这种语义,zeroMQ有多种通信模式却比较复杂,我这个综合了这些通信框架的优点,总共代码才200多行,出了问题也很好排查,大家也可以很轻松的扩展。
目前还是使用UDP,不能传输大数据,要用TCP的话会复杂很多。
为flake8修复了git hooks不能使用的Bug
flake8综合了pep8,PyFlakes,Ned's McCabe script三个代码检查工具,对有洁癖的Pythoner很有帮助,但是它的git hooks却一直不能用了,给作者提交了好几次pull request后,升级后还是问题,索性我自己维护一个版本吧。
现在我的新的python项目在git commit的时候都会自动进行flake8的检查,保持了一致的代码风格。
前后端可同时扩展的web框架
代码, 目前文档还不完善,但主要功能是实现了一个大网站的模块化。一个网站由很多功能组成,每个功能都由一组web api和前端js,css,html等组成,我使用web.py,bootstrap,seajs等实现了一个前后端可同时扩展的web框架, web api由web.py生成,前端的各种模版,js,样式都由seajs来按需异步加载。
这样大家可以共同完成一个有很多功能的大网站,每个功能可以独立的开发,测试,包括前端和后端,都是独立的。最后只要把各自的代码放到一个子目录里整个网站就有各种功能了,而且整体风格还是统一的。
自动生成数据库操作和RESTFull API的业务实体基类
代码, 用Sqlalchemy做的,你只要声明一个实体的字段列表,然后就可以自动生成数据库操作和前端的web api,这样做一个数据驱动的应用,简直是方便极了。
Backbone的Todo demo是用HTML5 Storage存储数据的,我用这个框架只需要写不到10行代码就可以让前端只修改一行代码,而数据全部存取在Mysql里了。
演示和文档目前还有待完善。
一个通用的登陆组件
代码, 实现了用户注册,登陆,session管理,而且包含了使用qq,weibo登陆的功能,如果要做内部工具,基本不需要考虑用户注册和用户登陆了。
代码还需进一步整理。
40行的通用的oAuth2.0客户端组件
代码,目前测试dnspod,qq,weibo的oauth登陆均无压力。
世界末日倒计时留言版
演示, 代码,这其实只是一个我的web框架的demo,为了演示我的框架即可以使用seajs,也可以使用requirejs,没想到很多人在世界末日前留言,呵呵。
80后小学语文课本
为80后同学收集整理了80后小学语文课本,并做了个网站,怀旧的同学可以翻翻。
蛙蛙生词本
记录生词用的
我的笔记本
记录一些常用信息,可作为自己的浏览器首页
javascript事件管理器
为了处理一些异步工作流开发了的一个小组件,现在看起来有些搓。
Javascript前端Router
小玩具。
javascript indexof的实现
算法小练习
测试支持HTTP持久连接的客户端和服务端
测了半天最终决定使用requests和gevent.pywsgi
找出arr数组中第k个最小元素
算法小练习
找出重复代码-未完成
每个人都不想自己的项目里有重复代码,我想写一个小工具来找出项目里重复和相似的代码,但目前还没有完成,需要一些词法分析的理论,现在还在构思中,以前的思路有些问题。
通用的词法分析器
先做完这个项目,然后找出重复代码的项目才能完成,目前这个词法分析器支持类c语言包括c,c++,c#,javascript等语言的词法分析,已经python的词法分析,当然,通用的词法分析器是不存在的,所以这个词法分析器不是精确的实现,只是为了进行简单的文本分割。
运维辅助工具
写了个内部使用的运维辅助工具,可以通过命令行或web界面对远程机器上的服务进行代码升级,依赖更新,代码备份/回滚,启动/停止/重启,日志察看等。
目前还没开源,如果在公司内部能存活下来才能证明它的价值,其实只是写了一些shell脚本,然后通过一个agent来执行。
学写seajs
花了几十个小时把seajs的所有文档都看完了,现在基本我的任何一个前端项目都会使用seajs来组织代码。
学习unittest和mock
花时间学习了python下的单元测试,主要是内置模块unittest和mock,第一次改变了对mock的看法,python的mock真是太NB了。
现在一些新项目也逐渐主动的写下单元测试,我甚至基于git hook写了一个CI工具,我的python项目一push代码,然后那个工具就会自动拉下来代码,执行所有的单元测试,并显示测试报告,后来被gitlab-CI所替代。
给公司非技术部门培训了python入门
总结了如何编写高质量的Python项目
还需持续修改
总结了如何规范的写一个前端项目
还需要继续总结
总结了git的用法
总结了python基础设施建设-讨论稿
在微博上请教了90多个问题
其它
睡前听评书,今年听了以下几部
- 张广泰回家
- 丑娘娘
- 张双喜抓妖
- 袁鹏飞讲中国历史
- 袁鹏飞讲世界历史
看书没看几本
- MongoDb权威指南:后半部分没看
- Javascript语言精粹: 看了两遍,还得再看几遍
- Python Cookie Book: 没看完呢,收获很大
- 程序员杂志合订本:仔细看了下《架构师接龙》,印象比较深
- 一本摄影书:看完了
- 余华的《活着》和《兄弟》
- 初中英语单词:背到G了
买了相机(550d+50/1.8+17-50/2.8),开始学学摄影,拍了一些照片放图虫了。
最后感谢下github,往年每年也折腾很多东西,但都在自己电脑上,有的甚至丢了,现在有了github,可以把很多小东西发上去和大家交流。