这半年,我看过的那些书

最近半年,因为上下班通勤时间增至2小时,所以很是惬意的公交车上享受专心看书时间,导致这半年如饥似渴囫囵吞枣的看了不少。由于现在暂时改为了不环保、不绿色、即使在美国都不能走Carpoll的上下班方式,所以又回归到没法保证看书时间状态了。这篇就算是个阶段性总结吧。推荐指数的评定完全依照个人口味。

1. 什么是数学(推荐指数:★★★★★)

什么是数学

什么是数学

某论坛上有人发英文电子版才让我知道这本跨越了大半个世纪的经典数学科普著作,开始看不久,还没看完。这本书的主要内容是阐述数学领域中的一些基本概念和方法,虽然里面讲的大部分东西在从小到大的数学课中都有所涉及,但这本书以一种完全不同于中国教科书的方式去介绍这些数学方法的来源与概念,不强调数学“是”什么,而是强调数学“做”了什么,这对重新认识和理解数学很有帮助,尤其是对于我这种数学一直没学懂的人来说。

2. 研究之美 (推荐指数:★★)

研究之美

研究之美

《计算机程序设计艺术》一书作者D. E. Knuth早年的一本数学科普书,书名直译《超现实数》,以小说的形式来介绍超现实数的概念和性质。学习超现实数的概念本身对一般人可能直接的用处并不大,不过我觉得看这本书是对大脑逻辑思维能力的一个很好的锻炼。另外有一本跟这个话题有关的书叫《稳操胜券》,是对超现实数话题在博弈论话题下的进一步展开。

3. 暗时间 (推荐指数:★★★)

暗时间

暗时间

刘未鹏(Pongba)的Blog的内容精选,一些内容也提炼自TopLanguage讨论组。由于内容编自Blog文章,所以涉及的内容较为广泛,包括心理学、数学、方法论等等。虽然内容杂七杂八,但里面的每一篇文章都包含了作者很深入的思考,所以不管是不是赞同他的观点,也不管是不是被他的文章洗脑,看了这些文章,总还是可以触发自己的一些思考。

4. 搞定1 (推荐指数:★★)

搞定1

搞定1

Getting Things Done的经典作品,感谢来自doit.im的赠书,虽然去年我自己也买过一本……我现在渐渐开始不喜欢“时间管理”这个名词,因为是时间是不能管理的,要管理的是自己的行动。GTD的方法有很多可取之处,但也不一定会适合所有的人。所以还是需要自己要去摸索一种适合自己的安排自己行动的方式,确保可以有效的工作和生活。

5. Hadoop权威指南 (推荐指数:★★)

Hadoop权威指南

Hadoop权威指南

来自浙江图书馆。泛读,这本书对于了解Hadoop的基本应用和开发过程是很帮助的。但是内容全而泛,如果正真要深入Hadoop,还是得从实际应用中出发,另外多看看文档甚至代码。

6. 漫话通信信号 (推荐指数:★★★★)

漫话通信信号

漫话通信信号

来自浙江图书馆。 “解读中国铁路”科普丛书中的一本,以前还看过其它几本,这套书除了价格暴贵以外,都挺不错,深入浅出的介绍了各种铁路上用到的科学技术和相关知识。以这本《漫话通信信号》为例,它并不是局限于孤立的讲铁路通信信号,而是也包含了通信和信号处理的基本原理和发展历史,所以可以从无到有、形成一个体系的去了解这个领域的知识。

7. 听音乐 (推荐指数:★★★★★)

听音乐

听音乐

新版叫卡曼音乐欣赏课,翻译比较差,所以我还是买了早一个版本的。作为学完Listening to music的巩固,我觉得这本书非常不错。如果单学乐理和西方音乐史,会是一件非常枯燥事情,这本书把非常实用的基本乐理与音乐欣赏和音乐发展史结合起来,非常自然的带人领略了音乐的魅力。

====以下书看的是可耻的盗版电子版====

8. 不懂科学倒大霉 (推荐指数:★★)

不懂科学倒大霉

不懂科学倒大霉

以一个倒霉的家伙一整天的悲惨的经历为主线,杂七杂八的介绍了生活中的一些自然和科学常识。这本书没有什么特别出彩的地方,就当休息时的科普小品看看还可以。

9. 把时间当作朋友 (推荐指数:★★★)

把时间当作朋友

把时间当作朋友

李笑来作品,常常被看成是一本说教或洗脑的书。一本书翻来覆去的讲的,其实都是一些人人都懂的基本道理,只是大部分做不到。书里面有一些观点还是不错的,也具有一些可操作性。这本书跟上面讲的《暗时间》或任何一本励志或探讨成功的书类似,也是一本会引发人思考的书,但是这些引发出来的思考究竟能给一个人多少沉淀下来的东西,常常很难讲。

10. 拖延心理学 (推荐指数:★★★★)

拖延心理学

拖延心理学

不得不说,我是一个非常拖延的人。在这本书之前我几乎没能看过任何一本类似的剖析个人的心理学书籍(《设计心理学》、《怪诞行为学》之类的书不算,因为我感觉这些书讲的是大众的心理,而不是个人的),所以还是很惊讶的发现心理学家们对人的心理研究原来是到了这样深入而系统的一个地步。拖延就是因为“恐惧成功”,书中这个小小的观点我很认同。改变拖延的习惯不太容易,我自己在用的方法是具化要完成的任务,然后用GTD工具跟踪记录这些任务。由于我总是非常享受在已完成的任务上打个勾划条线让它从任务列表中消失的瞬间,所以具化的任务分解可以有效的提高执行力。

11. 少有人走的路 (推荐指数:★★)

少有人走的路

少有人走的路

又一本心理学的书,不过这本书我只是泛泛看了一遍,看的时候有点小感触,但后来没有留下什么太深刻的记忆。好吧,这本书看得算是没有什么效率。

12. 浪潮之巅 (推荐指数:★★★)

浪潮之巅

浪潮之巅

各种IT界的历史和八卦,也许有人可以从中看出商业规律或者可以从中得到深刻的启示,对于我来说,这书就是休闲用的小说,看看这些曾经或仍在IT界叱诧风云的公司身上发生过的故事。

 

泰国游记

2008年菲律宾2009年台湾省2010年美国硅谷2011年美国硅谷,最近几年每年都有一次出境的机会,运气还不错。前几天公司组织了一次以自费为主的泰国游,行程总得来说不是很有意思,就在这里分享一下这次行程的一些Tips和体会,供大家参考。

本次行程主要包含泰国曼谷和芭提雅两个城市,总共在泰国呆5个白天,由于是跟团游,总的感觉是所有的时间都被旅行社占用掉了,完全没有自主的时间。这点对于喜欢乱逛的我来说是很郁闷的,尤其是没有机会去体验曼谷市区的轨道交通,颇为遗憾。

在出发前,建议在国内提前到银行预约泰铢的兑换,在国内兑换的汇率比在泰国要合算的多,最不济的情况下,在泰国的ATM机上用银联卡直接提款也比在机场或导游那里兑换要合算。泰国银联的普及率还是比较高的,大部分情况下用银联卡比走VISA/MasterCard是要合算的。

泰国天气较热,阳光也比较强烈,最好准备SPF指数较高的防晒产品。跟其它国家一样,酒店大多不提供一次性用品,自己带上比较靠谱。泰国电压跟中国一样AC220V 50Hz,插座大多是美标的三脚插座,两脚插头的设备都没有压力,三脚的可能需要转换器。

泰国洒店大多不提供免费Wi-Fi和Internet服务,可以付费使用但价格较高,或者可以在泰国购买手机卡打电话或上网。中国移动和中国电信的泰国漫游资费都比较高,GSM和CDMA网络泰国都有,不用换手机。

泰国有遍地的7-Eleven便利店,在那里可以买到日常用品和手机卡。便利店的店员不保证能听懂中文或英文,但酒店和旅游场所的人大多会一点中文或英文。

TrueMove运营商为游客设计的手机卡49泰铢一张,另外可以用充值卡充值50或90铢。打中国的电话是1.07铢/分钟,上网可以用50铢包50M的流量。以我个人的经历,TrueMove的网络很不怎么样,常常上不了网,而且扣费也扣得莫明其妙。客服电话是收费的,而且只有泰文提示音,我是乱按了好久才转接到人工服务的,人工服务可以用英语。所以如果要用TrueMove,应该在国内时先上网查好它的各项服务的使用方法。

泰国服务业普遍有收小费的习惯,一般情况下可以给20泰铢左右。

我的这次行程景点主要包括曼谷的玉佛寺、大皇宫、湄南河、大城王朝遗迹(维修中)、芭堤雅水上集市、金沙岛和五世皇行宫,总体来说没有感觉看到有特别让人Wow的东西。进入皇家的建筑要求穿长裤和有袖上衣,不然就只能花钱买一条布把自己围起来了。

导游带的泰国购物点主要包括珠宝中心、皮件中心、燕窝中心、干果市场、毒蛇研究中心和免税店。某种程度上说宝石、鳄鱼皮、燕窝、水果干和蛇药确实可以算是泰国的特产,是值得买的,但对于导游带去的购物点,尤其是珠宝中心,还是尽量要谨慎一些,如果确实要买,建议提前做功课。我对于干果市场的水果干品质表示极度怀疑,所以后来特地偷闲跑到曼谷当地一家很大的Tesco Lotus超市去,结果发现这么大的综合超市中完全不见水果干这种商品,7-Eleven/Big C便利店也没有,看来水果干这个东西是“特供”外国游客了。在泰国购买欧莱雅的化妆品相比国内比较有优势,其它的都明显比美国或香港要贵得多。Lee的牛仔裤大约2000铢左右,跟美国或菲律宾比也很没有优势。

最具泰国特色的人妖表演或相关的“自费”项目,实话说没有什么特别值得一看,大多所谓表演很拙劣,不具有艺术性,可以映证那句“不看后悔,看了也后悔”的话。相对来说在芭提雅艺城看的泰国历史文化演出还比较有意思一点,不过这个如果不提前做点功课了解一点泰国历史的话, 看不懂。

泰国很多景点都有一个不错的营销模式,在游客进入景区时,会有人以迅雷不及掩耳之势为各位游客拍摄照片。等游客游完景点后,这些照片已经冲印完毕并嵌入相框,或做成盆子、杯子之类的工艺品,放在景点门口以100-200铢的价格出售。尽管大家都自己带着相机拍照,但看到这些成品的照片还是会有很多人愿意花钱买下来。这种“所见即所得”的营销模式,感觉比在国内常见的搭个大阳伞被动等人花钱来拍照的的效果要好得多。

泰国新鲜的热带水果还是很便宜的,椰子即使在景区宰客的情况下,也只有20-25铢一个。山竹、榴莲、红毛丹和芒果都很值得推荐 。对了,还有DQ的冰淇凌也很便宜,小杯的只要29铢。

大部分照片都按惯例放在Picasa相册(包括Google+)中了,有兴趣的自行设法去看吧:

体验WPS for Linux

昨天得知WPS for Linux开始发放测试邀请,马上去申请了一下,今天拿到了邀请码,回到家速度展开测试。

这次放出的WPS for Linux实际上只包含了Kingsoft Presentation这一个组件,以DEB包的方式发布,122M大,不算小。

安装:

我所使用的系统是Debian, i686架构,使用GNOME桌面, WPS for Linux的安装包在我的环境中缺少ttf-mscorefonts-installer这个依赖,这个不难解决,apt-get一下就行。之所以要依赖这些Windows下字体,我想可能是为了在不同的平台下提供一个比较一致的体验吧。

解决依赖问题后,用dpkg -i直接安装WPS for Linux,报了一堆错:

/usr/bin/xdg-mime: 769: cannot create /root/.local/share/applications/defaults.list.new: Directory nonexistent
grep: /root/.local/share/applications/defaults.list.new: No such file or directory

不知道为什么安装程序非要不依不饶往/root/.local中去注册MIME类型,写/usr/local/share中不好么?反正都给了root权限了。不管怎么说,帮它创建好一个/root/.local/share/applications目录,然后重新安装,安装成功。

运行:

安装后,在菜单中Office项中,会出现Kingsoft Presentation项,点了点,没有反应。出现这种现象常常是因为库的问题,所以去命令行运行wpp:

/opt/kingsoft/wps-office/office6/wpp: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /opt/kingsoft/wps-office/office6/libkso10.so.1)

好吧,libstdc++库的问题,我的Debian Squeeze中带的版本太低了。在Debian网站上找一个sid中的版本,直接装是不敢啦,怕把系统搞挂了(实际上也装不上,因为别的依赖的问题),所以用dpkg-deb -x把它解开,然后用加上LD_LIBRARY_PATH的方式运行,WPS for Linux的Presentation界面终于出现在我的眼前了。

WPS for Linux Presentation主界面

WPS for Linux Presentation主界面

体验:

WPS Presentation提供了两种风格的界面,包括类似于Office 2003的经典界面和类似于Office 2007+的Ribbon界面。可以通过“切换界面”按钮或菜单项完成切换。

WPS Presentation支持的文件格式不多,只有它自己的.dps格式和Office的.ppt/.pptx格式。.odp格式没有被支持这点不是很美好,也很出乎我的意料。它也没有提供导出.pdf的功能,也不是很美好。

作为WPS一贯的作风,它对Office文件的兼容性还是相当不错的,打开.ppt文件展现出来效果跟Windows下比并没有严重的走样。

保存文件的功能在我的环境中有严重的问题,会直接导致程序core掉,不知道跟我简单偷换libstdc++.so有没有关系。跟locale有关,用dpkg-reconfigure locales加上zh_CN.UTF-8的locale后,问题就消失了。原本我机器上只有en_US.UTF-8的locale。

WPS Presentation在首页上提供了从金山网站在线下载幻灯片模版的功能,很好用,有些模版也比较好看。相对而言,Office提供的这样的功能我就从来都没用过。

从使用感觉上来说,跟被我淘汰了有一阵子了的OpenOffice.org和正在使用的LibreOffice相比,WPS给我留下的最直接的印象是:快。整个软件在我的机器上表现非常流畅,用起来很舒服,这点很让我满意。

WPS没有提供英文拼写检查的功能,不过作为一个面向国人的软件来说,不算是太大的问题。

软件的稳定性似乎还存在一定的问题,在试用过程中,发生过若干次莫名其妙的crash,但暂时还没有找到稳定重现的方法。

体验完了WPS Presentation,期待WPS的Word Processing System早日登场。

PS. 突然有点怀念下面的这个界面:

UCDOS下的WPS启动界面

UCDOS下的WPS启动界面

还有多少人记得Ctrl + q i u b o j u n是用来做什么的?

 

偷梁换柱终级版:用最少的步骤在Bambook上阅读原生EPUB文件

本文内容已过时,云梯0.98b版本开始,直接支持向Bambook中传送原生EPUB格式文件,不再需要用本文的方法去折腾了。

我不得不说,伸手党是促进社会劳动生产率不断进步的源泉。

前一篇“偷梁换柱”写完以后放到某论坛上,很快就有伸手党跳出来说,还是太复杂了,能不能把所有的东西写成一个软件一运行就好了。我有点生气的回复他,可以,不过我没有兴趣和精力做这个。不过过了一会儿转念想想,其实这事儿吧,也真没有那么难。花了几十分钟,搞定了这个“终级版”的“偷梁换柱”,希望后面我不要再想出什么更好的办法来,不然我真不知道该用什么词来做文章的标题了。

目标:把calibre中管理的自有EPUB格式的电子书传到Bambook中原生阅读,不做格式转换。

适用人群:Bambook用户,有用Bambook阅读原生EPUB格式电子书的需求,基本会用calibre管理电子书,会用记事本修改文本文件,能知道自己所用电脑的IP地址。

系统与环境要求:安装过云梯和calibre的Windows操作系统,Bambook通过USB连接,可以通过该Windows系统代理上网。或者安装过calibre的Windows操作系统,Bambook通过Wi-Fi上网。(其它操作系统的用户,也可以参照执行,完全是可行的,只是本文中不做针对性说明,如果有问题,可以留言询问)

1. 从本站下载工具包:

本地下载:工具包

把下载的文件解压缩到硬盘上,比如C:\,得到fakedns.py和fakehttp.py。还有两个批处理1.bat和2.bat。

2. 运行脚本文件

如果calibre是安装在默认的C:\Program Files\Calibre2中,直接双击运行1.bat和2.bat即可。运行成功的话,会在屏幕上保留两个命令提示符的窗口,里面会显示本机IP,后面还会不断显示一些调试信息。

如果calibre不是装在默认路径下:用记事本打开1.bat和2.bat,修改里面的calibre安装路径后再运行。

两个脚本运行后,都会在屏幕上打出本机的IP地址。如果与实际情况不符,请把命令提示符窗口关掉,用记事本修改脚本文件中的IP = “”行,写成IP = “192.168.0.1”这样的形式,强行指定本机IP,保存后重新运行这两个脚本。

3. 修改电脑或Bambook的DNS设置,指向我们的假DNS服务器

为了确保成功,在这里先把Bambook断开USB或无线连接,并重启一次。

如果用电脑USB共享给Bambook上网,就修改电脑上网网卡上的DNS设置,改成本机的IP地址(在第2步的脚本运行过程中会打印在屏幕上,照抄就行了)。改完后,把Bambook用USB连接到电脑上。

如果Bambook自己Wi-Fi无线上网,就修改Bambook上网络配置中的DNS设置,设成电脑的IP地址。改完后,关闭并重新开启Bambook的无线连接。

在修改前,请记下原来的值(也有可能原来选的是“自动获取”),以便在用完后把它恢复原样。

4. 启动calibre服务器

运行calibre,主界面下“连接/共享”->“启动连接服务”,这时calibre应该会在8080端口上启动http服务器,提供 OPDS服务,可以通过访问http://127.0.0.1:8080/opds来验证。(这是在默认配置的情况下,如果有改变过配置,需修改fakehttp.py中的URL)

搞定了!

在Bambook上按“找书”->1.访问云中书城->*.切换到第三方书库,或者最新固件上书架主菜单中选3.更多书城,就可以看到被我们 “篡改”过的第三方书城列表,选择其中的5. calibre,就可以尽情的享用你本地calibre书库中的EPUB图书了。

从calibre中获取到心仪的EPUB图书后,记得把第3步中改过的DNS值恢复原样,免得影响正常上网。

偷梁换柱升级版:用calibre为Bambook提供EPUB书库

本文内容已过时,云梯0.98b版本开始,直接支持向Bambook中传送原生EPUB格式文件,不再需要用本文的方法去折腾了。

上一篇Blog中提供了在Bambook上阅读EPUB书籍一个折腾方法,但那个方法显然很tricky,依赖环境多,成功率低,要传多本图书更复杂。这次又折腾出个改进版的方法,虽然也比较复杂,但成功率比以前高多了,而且也更直观好用,分享给大家。原理:用calibre提供的OPDS服务,把这个服务器添加到Bambook的第三方书城列表中。用到的软件和技术跟以前差不多:calibre,DNS劫持,nginx反向代理与rewrite。

前提条件:有一台正常上网的电脑A,Bambook用无线上网并在上网过程中可以访问到电脑A。或者,有两台电脑(可以是虚拟机)A和B,A用来做服务器,B上安装云梯给Bambook共享网络,AB之间也可以相互访问。

1. 在电脑A上下载安装nginx for Windows

http://nginx.org/download/nginx-1.1.15.zip

下载后,解压缩到C:\,得到C:\nginx-1.1.15

2. 配置nginx,实现Web服务和反向代理

用记事本打开C:\nginx-1.1.15\conf\nginx.conf,把它修改成以下内容,其中的192.168.8.102为A电脑的IP地址,请自行替换(下同)

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server {
        listen          80;
        server_name     opds.gk.sdo.com;
        location / {
            proxy_pass              http://$http_host$request_uri;
            proxy_redirect          off;
            proxy_set_header Host   $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            rewrite ^.*Default.aspx.*$ http://192.168.8.102:81/1.xml redirect;    
        }
    }
    server {
        listen       81;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }           
    sendfile        on;
    keepalive_timeout  65;
}

3. 在C:\nginx-1.1.15\html中创建1.xml文件,内容如下,使用UTF-8编码(如果用记事本,那就需要用“另存为”对话框,把下面的“编码”由ANSI改为UTF-8)。

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:opds="http://opds-spec.org/2010/catalog" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">锦书OPDS源列表</title>
  <id>uuid:ea8a979d-7e28-4bf7-8d11-31aafb2ac66a;id=60</id>
  <updated>2012-03-11T15:49:25Z</updated>
  <link rel="search" type="application/atom+xml" href="http://opds.gk.sdo.com/Search.aspx?ST=ALL&amp;PageIndex=1&amp;k={searchTerms}&amp;{bbtk}" />
  <entry>
    <id>JiuYue</id>
    <title type="text">新华书店九月网</title>
    <updated>2012-03-11T15:49:25Z</updated>
    <link rel="alternate" type="application/atom+xml" href="http://opds.9yue.com/category.atom?site=BamBook" />
    <content type="text">新华书店九月网</content>
  </entry>
  <entry>
    <id>http://m.gutenberg.org/ebooks/?format=opds</id>
    <title type="text">古腾堡计划</title>
    <updated>2012-03-11T15:49:25Z</updated>
    <link rel="alternate" type="application/atom+xml" href="http://m.gutenberg.org/ebooks/?format=opds" />
    <content type="text">英文电子书</content>
  </entry>
  <entry>
    <id>http://www.feedbooks.com/site/free_books.atom</id>
    <title type="text">feedbooks</title>
    <updated>2012-03-11T15:49:25Z</updated>
    <link rel="alternate" type="application/atom+xml" href="http://www.feedbooks.com/site/free_books.atom" />
    <content type="text">在线阅读网线图书</content>
  </entry>
  <entry>
    <id>http://www.feedbooks.com/site/free_books.atom</id>
    <title type="text">calibre</title>
    <updated>2012-03-11T15:49:25Z</updated>
    <link rel="alternate" type="application/atom+xml" href="http://192.168.8.102:8080/opds" />
    <content type="text">calibre</content>
  </entry>
</feed>

4. 启动nginx

双击运行C:\nginx-1.1.15\nginx.exe,用任务管理查看nginx进程,确认启动成功。如果用netstat -na检查,应该在80和81端口上有LISTENING。如果访问http://192.168.8.102:81/1.xml,可以看到上面我们建立的1.xml文件。

5. 安装Python 2.7

http://www.python.org/getit下载Python Windows Installer并安装到C:\Python27目录。

6. 写Python脚本,建假DNS。把下面的内容存为C:\FakeDNS.py。同样,其中的192.168.8.102为A电脑的IP地址,请自行替换

#! /usr/bin/env python
# This code comes from
# http://code.activestate.com/recipes/491264-mini-fake-dns-server/
# with some modifications
import socket

class DNSQuery:
  def __init__(self, data):
    self.data=data
    self.domain=''
    tipo = (ord(data[2]) >> 3) & 15
    if tipo == 0:
      ini=12
      lon=ord(data[ini])
      while lon != 0:
        self.domain+=data[ini+1:ini+lon+1]+'.'
        ini+=lon+1
        lon=ord(data[ini])

  def respuesta(self, ip):
    packet=''
    if self.domain:
      packet+=self.data[:2] + "\x81\x80"
      packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'
      packet+=self.data[12:]
      packet+='\xc0\x0c'
      packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'
      packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.')))
    return packet

if __name__ == '__main__':
  udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  udps.bind(('',53))
  try:
    while 1:
      data, addr = udps.recvfrom(1024)
      p = DNSQuery(data)
      if p.domain == 'opds.gk.sdo.com.':
        ip = '192.168.8.102'
      else:
        ip = socket.gethostbyname(p.domain)
      udps.sendto(p.respuesta(ip), addr)
      print p.domain + "=>" + ip
  except KeyboardInterrupt:
    udps.close()

7. 启动假DNS

在命行提示符中运行:

C:\Python27\python.exe C:\FakeDNS.py

启动后应该会停在那里,有请求时会打印出解析结果。可以再开一个窗口用nslookup确认它的工作状态:对于除了opds.gk.sdo.com以外的域名,都解析为正常IP地址;对于opds.gk.sdo.com.,解析为电脑A的IP地址。

8. Bambook设置

设置Bambook的无线连接,其中DNS服务器地址设为假DNS所在电脑A的IP地址。

如果采用两台电脑的方案,就把电脑B的网卡配置中的DNS指向电脑A的IP地址。然后连接Bambook与电脑B,让Bambook通过电脑B上网。

9. 启动calibre服务器

运行calibre,主界面下“连接/共享”->“启动连接服务”,这时calibre应该会在8080端口上启动http服务器,提供OPDS服务,可以通过访问http://127.0.0.1:8080/opds来验证。(这是在默认配置的情况下,如果有改变过配置,上面的1.xml做相应改动即可)

一切就绪,在Bambook上按“找书”->1.访问云中书城->*.切换到第三方书库,或者最新固件上书架主菜单中选3.更多书城,就可以看到被我们“篡改”过的第三方书城列表,选择其中的5. calibre,就可以尽情的享用你本地calibre书库中的EPUB图书了。

注意:这个方法只支持Bambook从calibre书库中下载EPUB格式的图书。如果书城列表获取不正常,可能是DNS缓存的问题,重启Bambook后再试一次。

calibre除了自带的OPDS连接服务,也可以用calibre2opds这个软件来提供更美好的OPDS服务器,以后另文介绍calibre2opds。