Code

2011年6月12日星期日

iCreate: Progress 3

跟小猫某次大吵之后,发现我的确有点自私。为了一小小的比赛项目,强占小猫这么多时间,这些时间本来是应该作为考试之后relax的,结果整天被我催促着,换作是谁也都受不了。还是等小猫回来之后有时间在做点简单的部分吧。
这段时间基本上就是我一个人做这个project了。我把windows7删掉了,换了ubuntu11.04。本来的目的不是为了project,因为我玩游戏有点上瘾,想在ub上没什么游戏玩所以就换了系统。用了几天之后发现ub相当好用,不但没费什么功夫就把所有平常要用的东西装好了,比如输入法,而且新的unity UI用起来也是相当的cool。值得一提的是预装的libreOffice跟MS office用户体验已经差不多了。我用了一下libreCalc (aka. MS excel), 所有界面都差不多,计算功能也是一样的,相当好。有点扯远了,我想说的是在ub 11.04上编程是非常爽的一件事情。不会有在Windows下那么多的config, 很多compiler也都有预装。eclipse 在ub下运行完美无缺,很容易的装了Android SDK和ADT。最近想玩玩zeromq就装了个cdt plugin,一切都是那么顺利。git也是很容易就装上了。linux的一大优点是什么东西都可以在terminal里跑,万能的terminal啊。
装好android 环境之后我很快的就继续了iCreate。我把database 用sqlite database browser制作好,然后直接从asset folder拷贝到db folder。为了尽量的减少db io, 我用了一个cache class,一开始就把所有会用到的node都load到memory然后进行处理。显然这样会占用大量内存,但鉴于nus的节点是有限的,如果一个节点30 B,100节点是3kB还行吧。其实最占内存的是地图,为了能在上面做overlay,我需要一个temp bitmap它的大小需要跟原地图一样,这样我的内存使用量就翻倍了导致我不能再avd上用高res的地图。虽然在手机上可以。我的想法是先做出来看看吧,优化留给以后吧。
我在地图里放几个com1 到 central library的节点,还有从com2到computer center的所有车站。然后写了pathfinder class。基本上是可以找出正确的路线的。
但我跟小猫上次讨论了使用A*同时计算走路路线和坐车路线是不行的,所以在现有的基础上我把坐车路线的算法分离开了。我现在会同时计算两条路线走路和坐车,有点像google吧。这个我昨晚把它实现了,因为数据还不完全,所以还没有测试。


另外,我制作了一个listview放在主页下面的空位上来显示搜索到的路线。我觉得这样UI显得紧凑一点。然后也加入了自己定位的部分,系统会自动列出靠近的地点供用户选择。
如果pathfinding测试没什么问题,剩下的事情就是在地图上label路线了。我们需要一些标记图片来表起点终点,和路线,类似google map上的那些气球。
可能UI还需要修改,这些等小猫回来在讨论。
git上的repo我也整理了一下,现在只剩下一个icreate的repo。之前我不小心把新写的code都删掉了没有backup,结果花了一晚上重写所有的改动。现在学乖了,要经常git push。

 In essence, the Linux kernel is a bundle of device drivers that
communicate with hardware and reveal themselves as a file system.

2011年6月8日星期三

如何学计算机

“(孟岩)我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。
“原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时 必须把握住真正重要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理论,才能确保体系性、连贯性、正确性,而对于那些旁枝末节,只有边干边学 能够让你了解它们的真实价值是大是小,才能让你留下更生动的印象。如果你把精力用错了地方,比如用集中大块的时间来学习那些本来只需要查查手册就可以明白 的小技巧,而对于真正重要的、思想性东西放在平时零敲碎打,那么肯定是事倍功半,甚至适得其反。
“因此我对于市面上绝大部分开发类图书都不满——它们基本上都是面向知识体系本身的,而不是面向读者的。总是把相关的所有知识细节都放在一堆,然后 一堆一堆攒起来变成一本书。反映在内容上,就是毫无重点地平铺直叙,不分轻重地陈述细节,往往在第三章以前就用无聊的细节谋杀了读者的热情。为什么当年侯 捷先生的《深入浅出MFC》和 Scott Meyers 的 Effective C++ 能够成为经典?就在于这两本书抓住了各自领域中的主干,提纲挈领,纲举目张,一下子打通读者的任督二脉。可惜这样的书太少,就算是已故 Richard Stevens 和当今 Jeffrey Richter 的书,也只是在体系性和深入性上高人一头,并不是面向读者的书。”