进击的C程序员, Ruby, 豆瓣读书
在2013年的元旦(那会我还在上一家比较辛苦的公司,没有个人时间,也没有多余精力),我写完了自己的年终总结,然后给小儿看。小儿问我,你看的电影是怎么统计成一个表格的?我说,我手动一个个记录啊。小儿:切,我还以为你有什么高效的方法的哪… 于是我意识到了我的这种做法是多么的愚蠢,我写软件的目的是什么,不就是为了更方便更高效吗,我为什么不能写个程序来自动统计而非得一个个的机械化的去记录?这个时候我就萌生了要自己做点东西的想法,当然由于拖延症以及确实没有个人时间,导致我只是在心里有这个想法,一直没有去做。
在接着我就进入了这家外企。在有一次周例会上,一个编程牛人同事给我们介绍了各种各样的语言,看的我眼花缭乱头昏脑胀,这些语言我一个都不会写。榜样的力量是强大的,既然他可以做到,我为什么不能做到?所以我就买了本《七周七语言》来看。
《七周七语言》这本书里面提到了Ruby,里面有句话说,Ruby特别适合写爬虫程序。这句话一下子触动了我,从豆瓣上统计自己看过的电影不就是一个爬虫程序吗?我心里一阵激动,这个时候已经到了2013年底。
接着我就买了《代码的未来》和《松本行泓的程序世界》这两本书,看完这两本书,已经到了2014年中旬。
看《松本行泓的程序世界》的过程中,我又粗略翻了下《Programming Ruby》这本书。看完后我就撸起袖子开始写这个爬虫程序了。在写这个爬虫程序前,我不知道html是什么,也不知道css是什么,更不用说javascript,正所谓无知者无畏,我就这么开始写了。就一个周末的时间,我竟然写出来了,当然我写的是爬自己读过的书,而不是看过的电影,因为读书会显得自己逼格高一点,而看电影每个人在无聊的时候都会做。
在折腾html、Ruby的过程中,我又顺便把自己的博客系统由wordpress改为了octopress。在弄这个octopress的时候确实是两眼一抹黑,因为什么都不懂嘛。好在我懂得使用grep,比如我想把那个Google搜索按钮给去掉,于是我就grep -r “oogle.com” * —color,因为知识是相通的,这个Google按钮一定是去访问了google.com,而它一定是存在某个文件里面,那么我就一定能找到它在哪个地方,然后就一定能修改它。正是凭借着grep,我把octopress给摸了个大概,然后把主题改的挺个性化,虽然看起来不好看。如果有人问我,linux相比windows最大的优点是什么,我会毫不犹豫的回答,“grep”。grep就像是知识海洋里的百度地图,百度地图在手,在任何陌生地方都能通行无阻。它再配合xargs,真的是自学利器。
再来看这个爬虫程序。其实它所做的就是解析html格式的文件,就像是linux系统里对elf文件的反汇编一样。只要熟悉了它的文件格式,剩下的无非就是找到这个文件(uri表示的文件)、打开、按照一定规则去解析、再友好的输出解析结果。还是那句话,知识总是相通的,学会了一个自然能够举一反三。
打开uri的过程涉及到一点http知识。当我们在浏览器里面输入一个网址,敲下enter键,实际上是相这个网址所对应的服务器端发送了一个http请求,然后服务器端把我们请求的这个文件压缩分包加密后再传送到我们的浏览器,我们的浏览器再把这些包解密合并解压然后呈现给我们一个网页。一个网页其实就是一个文件,万物皆为文件,这就是linux的思想。
写完了这个爬虫程序,然后把自己读过的书的封面放在博客的一个页面里面,就像一个照片墙,所以我给自己的这个程序取了个名字叫做BookWall。虽然做的过程很折腾,可是花点心思毕竟也做出来了,当然这对于web程序员而言是小菜一碟。然后我就在想,接下来我再折腾点啥?学习下html5/css3,把自己的博客弄的酷炫狂拽屌炸天一些,或者,搞个WebApp,一键来统计自己在所有网站(比如豆瓣,微博,知乎,github,linkedin,goodreads,quaro,last.fm)上的活动记录,跟大数据一样。首先我得想想用什么语言合适,然后开始慢悠悠的看上几本书,再开始动笔…
从13年元旦开始有这个想法,到14年中旬才完成。这实在难以称得上是进击,所以标题叫做“患有拖延症的C程序员,Ruby,豆瓣读书”更合适一些。