蛙蛙推荐:一个程序员2012年技术学习总结

俗一吧,也总结一下,程序员,代码说话。

发起了一个互联网公司技术选型的调查

想知道国内互联网公司都在用什么时髦或靠谱的技术,服务,开源项目吗? 这里给出你结果,很有代表性的,值得去借鉴,少走弯路。

编程语言PK台

社区里各种语言之争从来不绝,要想听一些理性的语言分析,可以到这里看看,希望大家发表专业客观的评价,以便帮助别人。

代码洁癖练习

每个程序员都希望自己的代码干净整洁,可以来做一下 对象健身操,我根据此方案做了两个练习。

  1. 一个.NET语言写的纯异步的HTTP客户端
  2. 200行Python代码实现了linux内置工具Grep
    1. 75行c#代码又实现了一版紧凑的Grep
    2. 10行Linq又实现了一个极紧凑版Grep

80行实现的中文分词算法

80行实现的中文分词算法,中英文都支持,还附带测试,可直接使用搜狗词库,实现原理是正向最大匹配,没有学习功能。

100多行写了个数据库

名字叫WawaDB,一个纯文本的试验性数据库,只有100多行,还带测试,目的是用来存日志,用二分查找实现了索引。

  1. 写入性能:写入300万条数据,每条数据54个字符,用时2分51秒
  2. 读取性能:在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里就可以直接生成图表,对于排查一些生产环境问题有很大的作用。

大腿网,你懂得

代码, 之前写一个分享礼物的网站晒礼物,然后把它开源了。主要功能就是定时扫描微博上包含指定关键词的图片,然后以很俗的瀑布流的方式展示出来。

后来又有人改造出了其它语言的版本:

  1. nodejs版大腿,作者是hyynf
  2. php版大腿,作者是hyddd

前端的UI自动化测试框架-未完善

代码, 网页UI测试因为好多操作是异步的,所以比较难测试。我用老着的jscex,DOMSubtreeModified和iframe写了个UI自动化测试的框架,对Backbone Todo进行了测试,完全OK,甚至对公司网站进行登陆,添加,删除数据等操作都可以测试。

不过目前还拿不出手,还需要时间去完善一下,不过思路和方向是可以的。

Python项目初始化模版

代码, 好的开始是成功的一半,如果要写一个新的Python项目或模块,可以从这个项目开始。本项目参考了很多github上比较规范的Python项目,从测试,文件安排等方面都比较科学。

linux的性能计数器

玩过windows的同学肯定对Windows的性能计数器深有体会,一些生产环境的疑难问题经常可以通过计数器来进行一些诊断排查,但linux却没有统一的性能计数器API。

今年为了排查一些生产环境问题,我用python写了一个性能计数器组件,包含了客户端和服务端,使用起来非常简单,只需一行代码,然后一个计数器收集中心对这些计数器进行收集,展示,以及根据一定规则向开发人员和运维人员发送报警。

目前该项目还未开源,在内部使用,大家要想解决这类的问题,可以使用开源的pystatsdGraphite,很好用。

基于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多个问题

其它

睡前听评书,今年听了以下几部

  1. 张广泰回家
  2. 丑娘娘
  3. 张双喜抓妖
  4. 袁鹏飞讲中国历史
  5. 袁鹏飞讲世界历史

看书没看几本

  1. MongoDb权威指南:后半部分没看
  2. Javascript语言精粹: 看了两遍,还得再看几遍
  3. Python Cookie Book: 没看完呢,收获很大
  4. 程序员杂志合订本:仔细看了下《架构师接龙》,印象比较深
  5. 一本摄影书:看完了
  6. 余华的《活着》和《兄弟》
  7. 初中英语单词:背到G了

买了相机(550d+50/1.8+17-50/2.8),开始学学摄影,拍了一些照片放图虫了。

最后感谢下github,往年每年也折腾很多东西,但都在自己电脑上,有的甚至丢了,现在有了github,可以把很多小东西发上去和大家交流。

posted @ 2013-01-03 16:53  蛙蛙王子  Views(11611)  Comments(42Edit  收藏  举报