书非借不能读也

“书非借不能读也。子不闻藏书者乎?七略四库,天子之书,然天子读书者有几?汗牛塞屋,富贵家之书,然富贵家之书,然富贵人读书者有几?其他祖父积、子孙弃者无论焉。非独书为然,天下物皆然。非夫人之物而强假焉,必虑人逼取,而惴惴焉摩玩之不已,曰:‘今日存明日去,吾不得而见之矣。’若业为吾所有,必高束焉,庋藏焉,曰:‘姑俟异日观’云尔。”

翻译:“书不是借来的就不能好好地去读。您没有听说过那些收藏书籍的人的事吗?七略四库是天子的藏书,但是天子中读书的人又有几个?搬运时使牛累得出汗,放置在家就堆满屋子的书是富贵人家的书,但是富贵人家中读书的又有几个?其余像祖辈父辈积藏许多图书、子辈孙辈丢弃图书的情况就更不用说了。不只书籍是这样,天下的事物都这样。不是那人自己的东西而勉强向别人借来,他一定会担心别人催着要回,就忧惧地摩挲抚弄那东西久久不停,说:‘今天存放在这里,明天就要拿走了,我不能再看到它了。’如果已经被我占有,必定会把它捆起来放在高处,收藏起来,说:‘暂且等待日后再看’如此而已。”

我背不得当年语文书上的《黄生借书说》,只是记得有一句话叫“书非借不能读也”。最近有朋友想从我这里借书,但我不肯,便引起了写着一片博文的想法。

最近这几天在大量的阅读书籍,一来是打发答辩前的无聊时光,二来是真正的想把以前挤压的书籍看完,免得花了钱又成了废纸放在书柜里面。经过这段努力,还算不错,秦老师的《设计模式之禅》一书已经看完,并且与秦老师也有几封email讨论一些设计上的问题和提供一些刊物的信息。然后又边学边实践的看完了《Python学习手册》。最后,还有一些属于非计算机方面的书拿出来看。其实,比起冰冷的计算机书籍,唐骏的《我的成功可以复制》算是给了我很多的思考空间。这本书讲了唐骏这个大人物是如何从小到大的经历、其间的各种机遇以及如何抓住这些机遇和挑战,虽然现在只阅读了一半,但也深受启发。在即将毕业的进入工作岗位的前夕,比起单纯的每天玩游戏上网打发时间,看看书还总算是上上策。

书非借不能读也。我不完全赞同。我喜欢拥有自己的书,但我会抽时间去阅读,去理解它,而不是单纯的放在那里压书架。虽然有时候我去做项目去了,忙的连书都不想看,但是当项目积累到一定程度以后,停下来,抽点时间,看看别人的项目是怎么做的,有什么新的思路和想法,或者增强一些自己的软能力,思考思考明天的路子也是挺好的一件事情。在如今的浏览时代,静下心来,我们更需要阅读。

我想你我也一定不记得第一本书是怎么得到的,但我还依稀记得小时候看的小人书。我小的时候那时候日本的动画片在中国很是流行,什么“圣斗士”“变形金刚”这些耳目能详的经典。还有一些什么“怪医秦博士”这些小的书。当然要买这些书在当年我住的街上是根本买不到的,只有在青羊宫那里能够买到。我还记得现在送仙桥过去,靠近曙光男科那条街(青羊上街),有很多摆摊卖小人书的。当年还根本没有什么正版盗版的概念,一本书一元钱,一买就是10本。后来发现了点小技巧,在买了以后再“顺”一两本走,哈哈。盗亦盗,你盗我也盗。

当然那时候纯属小时候的无知,长大了点就会自己辨别什么书好,自己需要什么书。我想这一切都来自于自己的自学能力,总想凭自己的努力解决一些问题,所以要不停的查找资料。研究生阶段,为了做虚拟手术项目的技术研发,想尽一切办法在网络上搜索到了许多宝贵的资料。当然很可惜的是由于没有资金的支持,许多搜索到了想要的书籍却没有买到。作为一种替代,电子版的外文书籍成了一种特别的手段。

我其实不怎么赞成看电子版的书。一来是看起来麻烦;二来是电子书很多是扫描的版本,不怎么清晰;三是电脑的“多任务”的工作方式,总让大脑也多任务起来,刚看了两句话又去聊QQ去了,到头来还是草草的看,费了时间浪费了电。我还是建议买纸质版的正版书,作为一种对作者的尊重和对自己阅读的一种鞭策。作为正版书的反面,作为计算机软件工作者,却一直使用盗版的软件为荣,不得不是这是个大环境下的小矛盾。

我有一个坏毛病——不喜欢借书也不喜欢借书给别人。我在图书馆借书的时候往往也想借两本好好的看看,也能省点钱。但还真是“书是借不能读也”,图书馆借的书我就不知道怎么能够看得完。技术类的书籍给了7天的时间,再长一点15天,无法分批次阅读完成。所以图书馆我不怎么去,去借的书往往也不怎么看。我也不知道怎么的,不喜欢别人借书。我的很多好书即便放了几年了拿出来还算是比较新的,书上我也很少做记号。我可恨我的一些教科书,做了记号以后,整个书都是重点,整个书都不是重点,多则无用。我有一些书由于以前借出去过,有些朋友不知道什么原因很久不还,有些书拿回来竟然有被污损的痕迹,所以这也是我不想借书的原因。扩大到其他的东西,我也几乎不怎么借出去,以前借过相机,结果回来一看屏幕上被挂的很花,又无法修复,很是伤心。说我吝啬也好,反正,我希望自己的东西都好好的而已。

所以有个朋友叫我借这本书,我婉言拒绝了。但后来我给了一个承诺,如果过了考试,我送给100块钱的书,没过也送50块钱的,呵呵。挺好玩。我至今也很感谢马同学以前送我的《I’’s》漫画,如果有朋友想给我买礼物又找不到什么买的,给我整两本书好书吧:)

博客存在的意义

我一直语文不好,俺的博客能够一直更新到现在也算是不错了。几年来有几百篇日志,有一些事生活的杂事,有一些更是记录我开发和成长的点点滴滴。不知道这些博客的文章有哪些朋友愿意一篇一篇的看,我是没那个闲心,偶尔回味一下过去也算是美好的。

要说我的博客从什么时候开始,恐怕要追溯到2000年之前,我那时候刚刚能够通过Modem接触到网络这个世界。那时候带宽不大,56kbps还往往跑不满,拨号的时候猫还鸡鸭鸡鸭的叫,挺好玩的。那时候网络算是清净的,也不知道有什么搜索引擎之类,当时上网一般是通过天府热线或者163然后到处找合适的网页看看就是了。当时还在上初中,找一些网上的题来做做。当然,那时候的网络还很初级,网络也干干净净的,广告几乎没有什么。博客在当年也没有这个名词,一个人拥有一个个人主页就算是比较“高档”的了。那年头我也学了点HTML,找了几个模板,东拼西凑在免费空间(myrice的,后来在nease的空间上也有)上搞了个Homepage,得意洋洋的更新。当时更新也蛮辛苦的,要把网页下载下来,然后再编辑再上传回去。完全就是静态的咯。那些年头还挺流行免费空间的,满足大家的建站的兴趣。现在那些网页的内容我已经找不到了,很遗憾。

初中的时候还喜欢写日记,现在书柜里面还躺着当年青涩的回忆和往来的几封信。或许是当年养成了写点什么的习惯,一直保持到现在吧。现在的两个毛病就是,没事看书,在没事就写博客,呵呵。

后来上了高中我也记不得当时的博客是怎么回事了。读书嘛,累得很,好像也没有怎么整网络这些了。当年钻研流行的文曲星去了,呵呵。

上了大学就轻松加愉快了。大一的时候不准用电脑,我还是带了一个400多块钱买的洋垃圾去用。只是当年比较淘气,听了汪主任的蛊惑把它拆了研究。结果一拆就报废了。后来就买了个Benq Joybook 3000,第一台笔记本电脑,花了1万2。那年公寓里面就几个笔记本电脑能上网呢,润新的联通网络当年还是挺彪悍,10M是拉满了的。那些年头就有闲心来整整博客了,博客也在那时候开始火的。

当时我注册了第一个域名属于自己的hesicong.com,然后建立了自己的博客。当时的空间好像用的大海网络的。好像最早我用的程序是oblog,后来又导入到pjblog里面。pjblog算是用得比较长的了,至今搜索里面还能看到很多hesicong.com的链接是有pjblog的标记的。

当然后来由于域名没有续费,hesicong.com就被人保管到现在了。后来我有不得已买了hesicong.net的域名,一直用到现在。当然,现在我的域名有好几个了呢,april1985.com是最主要的了,hesicong.net我也想转到godaddy下面管理了,国内的续费太麻烦了,存在各种限制。

pjblog之后,我用上了php空间以后,就开始正式用上了wordpress,把以前的文章导入并整理,用到今日。

其实这个博客到目前为止还是比较冷清的,每天只有80多个独立IP访问,PV也只有120,最多到200。比起社区的博客的浏览量差多了。我以前在cnblogs也有博客,hesicong.cnblogs.com,还有更早的csdn的博客。这些流量都还不错,都有大量的浏览。但唯一不好的就是编辑起来不方便,没有个性。

所以,我还是冷清的更新这个博客。虽然博客目前已经被twitter的浮躁的一句话新闻、QQ的滔滔这些逐步代替了,但是我认为一个好的博客,能耐得住寂寞,为自己服务就好。不管如何冷清,能够记录下生活的精彩,也能锻炼自己的写作,等积蓄了大量的文章回头来看看,才发现其价值所在。

前一个月,为了能够满足自己小小的赚一下广告费的乐趣,便整了一大堆的广告上来。后来发现广告没有什么收益,博客也整的乱七八糟的,影响阅读的心情。浮躁,依然是很浮躁,博客存在的意义,就是为了能够耐得住寂寞,那么这些广告存在的价值又何在呢?

所以,干脆换了个新的清新点的主题,把广告去了,把blogupp这些推广的也去了。一个人,一个博客,清清静静,独享这难得的幽静与自然。

PS:

以前博客地址:dream-world.nease.net,hesicong2004.vip.myrice.com,最近想用archive工具找回来以前的东东。

搜狗地图研究-坐标系对应

搜狗地图是搜狐搜狗了以前有名的go2map后重新制作的地图,目前google地图已经很长时间没有任何更新,已经没有太大利用价值。而国内的搜狗地图和百度地图在地图上的开发已经很完善,地图数据、POI数据等都是比较新的,具有较大的利用价值。例如你可以把这些地图下载下来,然后当做电子地图来使用。但搜狗和百度地图的劣势在于没有手机客户端,而且各自采用了其自定义的坐标系统,即便离线使用,也无法使用GPS进行导航。使用搜狗地图即便是小范围匹配后,大范围的应用也会发现有较为严重的偏移。所以研究GPS坐标系和地图上的点的对应关系就成了做离线地图浏览的最关键的部分。

打开搜狗地图后,地址栏显示#c后面的就是其坐标和当前的层:

例如北京的URL是:http://map.sogou.com/i.html#c=12956000,4824875,10

12956000代表了自定义的经度坐标,4824875代表了自定义的纬度坐标,10是第10级。坐标是对应于屏幕正中央的位置的坐标。

如果直接修改url然后敲回车,地图是没有任何反应的,重新刷新后更新的位置就会显示出来。拖动地图,URL会进行刷新。

那么如何得到GPS的位置和坐标系的对应关系呢?

这时候就要用上Google Earth和搜狗的卫星地图功能了。

切换到搜狗的卫星地图发现,搜狗的地图和卫星地图的融合相当好,也就是说没有使用常见的偏移的手段对电子地图进行处理。这样事情就好办了。只需要在Google Earth和搜狗找到相同的位置,就可以知道GPS位置和对应的搜狗的坐标了。

我们以人民英雄纪念碑为例(为什么选纪念碑呢,这个自己想象,哈哈),说明这个对应法:

首先我们找到英雄纪念碑,将其置于搜狗的正中央:

这时地址栏显示:

http://map.sogou.com/i.html#c=12956777.34375,4824206.0546875,18&lq=%u5929%u5B89%u95E8&where=北京&page=1&hb=1,1

关键看这个:12956777.34375,4824206.0546875

好了,打开Google Earth。在开始之前,我们先把Google Earth的坐标系设置一下:工具->选项->显示经度/纬度->小数度数,这样在Google Earth下显示的就是对应的小数坐标了。

可见坐标是39.905588,116.391304,这是实际的GPS位置。

好了,这就有了一组数据了:

纬度:39.905588->4824206.0546875

精度:116.391304->12956777.34375

你多找几组这样的数据,就会发现,这些数据中有一些规律了。而且在小范围内基本上是线性关系,两点之间的线性插值也可以得到目标位置的GPS位置对应的值。但别着急,这肯定不是线性关系,要不然我也不会写这个了。呵呵。

如果这样做下去,岂不是要把人累死,而且速度还不是那么的快。如何短时期内得到大量的数据呢?

最初我的想法是用图上的标记点来做,但搜狗地图的js是加密过的,很难调试。山穷水尽之后,无意中发现了搜狗地图的路书功能,它能够将GPS的轨迹给你在地图上表示出来。这不是正是我想要的么?

好吧,我就上传一个最简单的gpx上去,该gpx只包括了两个点(30,73)和(35,73):

<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemalocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" creator="KML2GPX">
<metadata>
<name>test</name>
<desc>test</desc>
<link href="http://www.garmin.com">
<text>Garmin International</text>
</link>
</metadata>
<trk>
<name>Holux2010/03/12_19:23</name>
<trkseg>
<trkpt lat="30" lon="73">
<ele>0</ele>
</trkpt>
<trkpt lat="35" lon="73">
<ele>0</ele>
</trkpt>
</trkseg>
</trk>
<extensions>
</extensions>
</gpx>

至于gpx文件的结构,各位还是自己网上找一找。
好了,让我们来制作路书。上传的同时请注意你的firebug的网络传输,注意upload这个。

在gpx传输完成以后,upload会返回一系列的html,其中就包含了转换后的坐标系:

<html>
<head>
<title>hidden frame</title>
<script type="text/javascript">
function init() {

parent.loadupover("上传完毕!", "9a8080a728a457650128a4ada145057c","gpx轨迹", [{"id":"9a8080a728a457650128a4ada146057d","title":"轨迹段1","start":{"id":"9a8080a728a457650128a4ada146057e","title":"途经点1","description":null,"position":{"type":"POINT","x":8126411.250799975,"y":1678043.1192767194},"images":null},"end":{"id":"9a8080a728a457650128a4ada147057f","title":"途经点2","description":null,"position":{"type":"POINT","x":8126411.25084977,"y":7135255.941276442},"images":null},"timeSequence":"{}","length":4336600.054319387,"description":null,"segIdx":1,"path":{"type":"LINESTRING","minx":8126411.250799975,"miny":1678043.1192767194,"maxx":8126411.25084977,"maxy":7135255.941276442,"levels":"@@","points":"u{~nNulleB?wralI"},"navi":null,"subSegments":null},{"id":"9a8080a728a457650128a4ada1470580","title":"轨迹段2","start":{"id":"9a8080a728a457650128a4ada1480581","title":"途经点3","description":null,"position":{"type":"POINT","x":8126411.250799975,"y":1678043.1192767194},"images":null},"end":{"id":"9a8080a728a457650128a4ada1480582","title":"途经点4","description":null,"position":{"type":"POINT","x":8126411.25084977,"y":7135255.941276442},"images":null},"timeSequence":"{}","length":4336600.054319387,"description":null,"segIdx":2,"path":{"type":"LINESTRING","minx":8126411.250799975,"miny":1678043.1192767194,"maxx":8126411.25084977,"maxy":7135255.941276442,"levels":"@@","points":"u{~nNulleB?wralI"},"navi":null,"subSegments":null}], [])


}
</script>
</head>
<body onload="init()">
</body>
</html>

注意POINT后面的x,y,那你就是搜狗的坐标,和你上传的坐标是一一对应的关系。
好了吧,事情说清楚了吧。发现这个还是费了很大的力气的啦。
当然,如果你的gpx文件太大了(你很贪心,每次都要上传很多个点),那么firebug这个显示将不完全。
给你点点提示:根据路书展示时候的flash的地址访问,可以得到一个json文件。json文件里面包含了所有的坐标对应。至于具体地址怎么回事,我就不公布了。
好了,编写个程序,将gpx文件一个一个上传上去,然后再得到坐标。我将GPS的坐标以0.01的步进进行转换,得到了细致且大量的转换数据。
此后,就是用数学工具进行拟合计算了(这几年大学没白读)~ 最后得到了从GPS转换到搜狗地图的公式:

当然,如果你想得到这个公式,可不能不劳而获哦,联系我。或者你自己做吧,反正思路是给你说好了的。呵呵。
如果你想试试这个公式好不好用,请访问:http://april1985.com/sogoumap/