邓世龙的自留地

兼济天下则达 独善其身则穷

月度归档: 2014年12月

开始公众号之旅


自从饼干决定隐藏自己,并与我解除一切社会关系后,我才发现原来一个人的周末夜晚是如此孤寂。

本想打开尘封已久的RSS阅读器,怎奈已经关闭了。自从Google Reader关闭后,整个博客和RSS生态圈也由此沉寂下去了,现在,它的替代品也就此关闭,心情顿时有些不悦。想想博客和RSS曾经带给自己的欢乐,就要由此结束,不得不有些悲伤。

只是,生活还是得继续,我不能因为饼干解除社会关系而沉沦下去,也不能因为博客的沉寂而就此停止写作。对于有些人而言,写作确实是一种需要,而我也恰好是这种人。

由此开始公众号之旅吧。我希望有一天饼干能够明白,对于她,我一直很用心。也正是因为她,我才会尝试公众号之旅。

在运河边慢跑


到杭州后,很多时候都只是晚上进行跑步。最近一段时间里,每周日沿着余杭潭河跑,才发现这里另有天地。余杭潭河应该也属于运河的一部分,所以这里姑且认为是在运河边跑步。

刚开始时,运河两边铺着石板,另你感觉是古时候留下来的一样。而在桥墩和墙壁上,这个城市的建设者们都给它们画上江南特色的图案。小桥流水,白墙青瓦,荷潭莲花,顿时你觉得城市建设者们很用心的在建设自己的家园。而河两岸,都种着杨柳,微风吹拂下甚是好看。再看河水,虽不清澈,但是并没有城市河流那种普遍的味道。

继续往前跑,就要拐弯到内河,前面的道路还在建设。这条内河一直通向莫干山路,沿着河边跑,你会发现河水变得清澈了,对于看惯城市里浑浊的污水后,见到这样的河水瞬间无比激动。有一段甚至可以看到鱼儿在水草中游来游去,这已经是多年没见过的景象了。河两边的住宅区普遍不高,而河两边如此安静,想来住在这里的人们应该非常幸福。

这段内河边上,出来活动的人也很多,有钓鱼的,打太极的,有看风景的。还有一点值得高兴的是,河两边极少闻到尿骚味,这对于问惯广州珠江边尿骚味的我,又是一阵欢喜。唯一一处地方就是在桥地下,估计是钓鱼者的杰作。另外值得一提的是冬日里的阳光照在身上,非常温暖。而距离也很合适,一趟来回,正好十公里左右。

整个跑步过程非常舒适,一个不好的地方是河边有飞虫,如果是傍晚5点左右时,最好戴一个眼睛为宜。

看《2001太空漫游》


最近《星际迷航》大热,于是我又想起了《2001太空漫游》,于是又将它看了一遍,这次体会不同了。知道2001,是在蔡志浩的博客里,这部电影被蔡志浩列为最喜欢的电影,于是我很好奇,能被蔡老师列为最喜欢的电影必然是一部非比寻常的电影。搜索之后,知道这部电影出自库布里克之手。

《2001太空漫游》拍摄于1968年,但依然无法阻挡它的魅力。说实话,第一次看这部电影时,并没有看懂,精彩是精彩,看到猿人第一次拿起工具时的兴奋;惊叹智能的机器人;看到飞船进入木星环的炫彩画面,惊叹68年就能拍出这么绚丽的画面。然而,还是没能看懂这部电影的精华。

这此重温这部电影,算是温故而知新,在我看来,这部电影主要是探讨人与机器的关系。当电脑科技进步时,当电脑开始自主思考时,人类该如何处理与这个智能机器的关系。在电影中,几年从未出现过错误的哈尔智能电脑被委派一个任务,这个任务即便是同行的宇航员也不知道。可是在太空航行的过程中,哈尔出现了一次判断错误,于是宇航员们开始怀疑哈尔的可靠性,并打算如果哈尔确实犯错,就决定关闭它。可是宇航员们的计划被哈尔知道了,于是哈尔杀死了去更换飞船部件的宇航员,并将冷冻中的三个宇航员杀死。于是幸存的一命宇航员在哈尔的哀求中将哈尔关闭。

在电影中,哈尔因为担心被关闭而无法完成任务而杀死了人类,这确实是令人无法接受的,可是它要完成任务也有它的理由。于是在制造机器人时,就要遵循一些规则,而阿西莫夫的机器人三定律可以作为一个参考:机器人三定律

正则还是需要认真学的


在我看来,正则表达式也算是一门编程语言的,所以要用好它,还是需要花很长时间,并加上大量的实践。而学习一门语言,必须要知道它的语法规则,正则也有它的规则,所幸这些规则并不多。

许多工程师可能觉得正则只是雕虫小技,需要用到时,上网找个例子就好。可是有些时候,网上的例子并不能解决问题,还是需要自己编写,而正是这些时候,最考验正则水平的时候。如果平时没有积累,在这些问题面前将会束手无策。

而在正则方面,读读《精通正则表达式》就够了,即便是只读前三章,对正则也非一般的了解。作者Jeffery有多年开发经验,并以讲故事的方式讲授正则的知识,正则表达式在他手上娓娓道来。相信读过这本书,对于正则会有登堂入室的感觉。

单元测试太重要了


最近组里的实习生回了趟家,于是他的一个任务就交给我做了,在这个过程中,我才知道,单元测试有多重要。

拿到他之前写的代码,看到索引中的作者id变成负的,我就知道,这代码中肯定存在错误。找到读取作者id的地方,发现这里把id当做32位整形了,而事实上它是64位整形。而要发现这个问题,其实只需要写一个单元测试就够了。之后花了一些时间写了单元测试,果然找到这个问题,而且还发现了另一处存在错误的地方,真是一箭双雕。

想想自己之前做的小工具,存在不少问题,是一步一步纠正过来的。如果当时能写单元测试,那就可以不需要花费那么多时间在返工上了。在我的体会来看,写单元测试确实需要花费时间,可是这个时间花费的很值得。在写单元测试的过程,其实就是在对代码进行梳理,这样写出来的代码会更加清晰。通过单元测试,可以尽早的发现问题,避免错误。

有些时候,写单元测试可以帮助代码的编写。例如在mapreduce中要解析一个网页的内容,如果没有用单元测试mock出一个环境出来,就必须将代码提交到mapreduce中执行,而这个过程必将非常耗时。通过单元测试,可以显著减少这段时间,提高工作效率。

而且单元测试几乎是功在当代,利在千秋。对于后来的人,当迁移或者重构代码时,只要跑一遍单元测试,就可以知道有没有改变程序的逻辑,这真的很不错。想想工作一年后,才体会到单元测试的重要性,不容易啊。