2011年09月16日 18:16
UPDATE:
用dnsmasq,把需要自定义的IP放在/etc/hosts文件中即可。可以更简单的满足类似需求。
有的时候我们需要使用特定的IP访问特定的网站。现在比较流行的方法是修改hosts文件。但这方法需要对每一个客户端做修改,比较麻烦。为了方便起见,我在自己的服务器上尝试了配置DNS服务器来为特定网址提供特定IP的方法。
首先安装bind,在Ubuntu服务器上当然就是:
sudo apt-get install bind9
然后我们将服务器先配置成缓存模式,在 named.conf.options 文件中增加以下内容:
forwarders {
8.8.8.8;
8.8.4.4;
};
allow-recursion { any; };
其中forwarders是将DNS请求转发,allow-recursion是设置客户端的访问权限,如果是内网使用,也可以设置网址段。
然后我们使用一个新的配置文件 named.conf.redirect 专门处理特定网址转发请求。在named.conf中增加一句:
include "/etc/bind/named.conf.redirect";
然后新建一个 named.conf.redirect 文件,将特定的网址变成master类型(由本机处理):
zone "plus.google.com" {
type master;
file "/etc/bind/redirect/zone_plus.google.com";
};
然后我们去 /etc/bind/redirect 目录下新建一个 zone_plus.google.com 文件,配置DNS规则,简单起见,我们可以这样配置:
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 1.2.3.4
* IN A 1.2.3.4
上面的部分可以作为模板,关键就是配置 @ 和 * 两个A地址解析而已。其中 * 可以作为泛域名配置,匹配全部的子域名。
that's all.
注:在named.conf.redirect里可以配置多个zone,他们使用的规则file可以相同也可以不同,可以视情况而定。
注2:如果DNS服务器在国外,这样做仍然无法解决DNS污染的问题。
注3:文中所用IP为演示用,并非真实IP。
推送到[go4pro.org]
2011年09月01日 21:06
在G+上参与了一个关于iPad和游戏机的选择的讨论,后来就顺势谈到了电子书问题。我回复了一段,比较长,干脆就拿到这里来发表一下好了。
……读书的人变少这是一个杯具。这个杯具是全方位的。无论是对国民素质也好,对社会发展也好,对文化交流也好,对出版商利益也好,都不是件好事。
其实是不是eink不重要,关键在于产品本身。kindle就是用来看书的,它背后有一个完整的服务链,用户在这个服务链中可以享受到方便和快捷,所以 kindle就卖得好,实际上amazon卖的不是kindle,而是用kindle看的书,所以实际上不是kindle卖得好,而是(用kindle看的)书卖得好,kindle只是顺便卖得好。但是话反过来说,正因为amazon卖的是书,所以它依赖的是有很多喜欢看书的人。如果大家都不喜欢看书,不愿意为买书花钱,你服务再好也没用。那么再深一层,如何让大家变得喜欢看书呢?前提是你要做出让大家爱看的书,你要培养出一种看书的气氛。
现在在中国,读书阶层大概可以分成两类,一类是网络文学/垃圾文学(非贬义)消费者,一类是专业读书爱好者。前者对书籍的依赖性不高,但基数大,他们有阅读 的需求,但是没有到愿意为阅读付费的程度。后者对书籍依赖性高,愿意为阅读付费,但对书籍的质量有较高的要求,而且后者的基数相对小。
我觉得目前中国的电子图书市场,两头都没做好。很多书城大量的电子书籍都是快餐型的网络文学,但是他们的受众其实不太愿意为阅读付费的。免费下载的txt, 虽然也许错误很多,但对很多人来说就够了。而对于愿意为阅读付费的后者来说,目前中文电子书籍的市场上又很少有制作精良的书籍,对于他们来说,有钱也没地方可花。
其实网络文学/垃圾文学的读者也一样是读者,如何抓住他们,提供他们所需要的,然后将他们引导提升变成阅读爱好者(这样他们才会 愿意付费阅读),这是出版界需要考虑的问题。而对于专业读者和爱好者来说,也许目前他们人数不多,但是他们对于普通读者在阅读程度提升方面会起到一个很强 的引导作用和指导作用,所以他们的需求也一样很重要,需要有专门为这些人提供的服务。
只有愿意读书的人多了,整个产业链形成了,才可以去谈产品好坏的问题。不然你产品再好没有人买还是白搭。
说一个案例。曾几何时,中国的电影院也到达门可罗雀的地步,电影事业发展到达低谷。没有人愿意花钱看电影。后来,电影行业是怎样起死回生的,我觉得可以拿来借鉴一下。
比 如现在爱看电影的人不少,是不是可以引进电影的小说版(当然我指的是电子版了)?图文并茂排版精良,我觉得还是会有人愿意买。很多这类小说虽然也是流行文 学,但质量相对较高,看多了以后再去看现在一些网络作家写的东西,估计就看不下去了(就像现在大家国外大片看多了,中国的那些所谓大片就不太容易骗到钱 了,至少是不能既赚口碑又赚钱了)。当然这也只是一个思路而已。
2011年06月02日 13:58
昨天google发布了面向网站的+1按钮。今天我在自己的blog里加上了。现在每篇单独blog,评论数的后面会有一个这样的+1按钮。感觉好的话就按一下吧。
2011年05月26日 10:47
最近bitcoin在一些小圈子里(很不幸的,我也是这些小圈子的其中一员)被讨论得热火朝天。似乎天降货币救世主一般。很多大牛,像云风啦、霍炬啦,都对这个系统推崇备至。我看了几篇讨论文之后,总觉得这事不靠谱,不过自己对经济学知之甚少,也说不出什么。
今天看到一篇quora上的问答,指出bitcoin是一个骗局。从内容看,对比网上的一些争论文,它并没有其它什么创新的观点。不过基于quora的权重还算是比较高,我还是觉得翻译一下给大家做个参考比较好。我对经济学不了解,翻译错误在所难免,仅作参考吧。
原文见:http://www.quora.com/Is-the-cryptocurrency-Bitcoin-a-good-idea/answer/Adam-Cohen-2
问:加密货币Bitcoin是一个好构想么?
答:
不。bitcoin是一个荒唐的想法。它是个骗局。是个骗局。它不是货币。用作bitcoin生态系统基础的经济学假设非常可笑,并且它还对货币运作知识数百年的积累视而不见。
幸运的是,这个系统的缺陷相当明显,它可能永远也发展不到会对世界经济引起不良反应,或者哪怕是产生一点儿影响的地步。
不过,我还是觉得我有必要说明一下。
bitcoin,用最简单的话说,就是一个用数字化交易代替现金交易的系统。这……没什么问题。问题在于,它不是提供以美元计价的数字化现金交易,而是引入了一套全新的货币系统。这里我们就有一个疑问,这样做的可取之处在哪儿?也许你讨厌美国政府,或者所有的政府。也许你想避免银行转账费用,或避免交易被跟踪,因为你付款购买的东西是非法的,或者因为你是一个特别注重隐私的人。或者你只是觉得,世界货币制度会崩溃,而bitcoin是一个技术派救世主。
不管你的原因是什么,bitcoin都是一个可笑的想法,它无法做到你想要的任何事。
严重问题1:播种初始财富
当美联储在“印制钞票”的时候,它并不仅仅是把数百万的支票随机寄到美国人的家里。它做了下面两件事之一。(a) 通过在自由市场上购买其它资产(通常是美国国债),为整个经济体系注入比以往更多的资金;(b) 向银行放贷,然后银行再把这些钱贷给需要用钱的人。
重要的一点是,在交易另一端的人,他们获得的并不是免费的钱。他们要么出售资产,要么借钱,这些钱最终是要还的(含利息)。
bitcoin并没有一个中央银行来印制和放贷bitcoin。它有一个算法,通过一些复杂的机制来让bitcoin“被挖出来(mined)”。本质上,它会把bitcoin随机分配给早期使用者。这对于早期使用者来说是一个非常好的系统(免费的钱!)。但是作为真正的货币来说这是一个毫无意义的系统,不用说,它显然不能扩展到更大规模(当所有人整天都尝试着挖bitcoin时会发生什么事?)。为了解决第二个问题,算法上限制了bitcoin的供应,这又让早期使用者更加有优势。不过,这个做法带来的更严重的问题是……
严重问题2:建立在通货紧缩的基础上
经济学课时间!Deflation is the phenomenon where cash grows in value relative to everything around it (ie prices go down).More specifically, deflation occurs when people expect the value of cash to grow in relative value to everything around it, and prices trend down consistently.【译注:此段涉及经济学知识,我就不献丑了。从别处查到的对通货紧缩的定义,是指成本和价格普遍持续下跌,现金交易减少的现象】
问:当你手中的钱比预期的更值钱,你还会把它花出去吗?答:小声的说,你不会的。
bitcoin的供应量被设计成以一定但递减的速率增长,随着时间推移,封顶值会相对快速的出现在2100万这个位置。如下图所示:

一定的增长率——好吧,我和你持相同观点,可以预见会产生通货膨胀,这从经济学立场而言未必可取,但我还是会跟着走。但是递减的速率?如果你在设计一种颠覆世界秩序的货币系统,难道不希望它看起来像这样?

或者,起码有一个恒定的增长率?是的,你当然会,因为这是容纳更多人使用它的唯一途径。
但是bitcoin并没有设计成一个可运作的货币系统。它被设计成使得早期使用者变得富有。这就是为什么说它是一个骗局。
我们来做一个快速的思想实验。假设更多人发现了bitcoin的好处,于是bitcoin的需求增加了。于是,你可以想象,bitcoin的美元价格会迅速上升。现在假设我有一个bitcoin,还有一个美元。我想买瓶百事可乐。我应该花哪个?显然相对于身价暴涨的bitcoin来说,我应该先把正在贬值的美元花出去。
在最好的情况下(这个情况正在变得越来越普遍),bitcoin的限量供应会导致严重的通货紧缩。bitcoin计价贸易的枯竭拯救了所有贸易中的投机买卖行为。这是新的世界秩序。什么透明度啦、低交易手续费啦,都不会让你变得更好,如果你压根就不打算用这玩意儿也没有人打算把这玩意儿给你的话。
严重问题3:缺乏可兑换性
人们有一个普遍的误解,就是钱有一个固定的价值。没这回事。纸币面值的唯一价值就是表明了它们和其它纸币的交换程度。一个欧元可以交换一定数量的日元,一个日元可以交换一定数量的美元,一个美元可以放进银行换取一张存款凭证,这个凭证可以换回一个美元。它可以变成一张出纳支票或者个人支票,然后再转换回现金或存款凭证。它可以换成一张旅行支票,然后在你的假期里换成若干日元。就算你花钱买了一个三明治,三明治店收你的钱也只是因为它可以换成其它的东西,比如他的工资支票然后进他的银行户头。纸<->纸<->纸。都一样,也都不一样。这是一个美妙的循环平衡。想象一个tee-pee帐篷,纸币就是支撑杆。每一根单独的支撑杆都会倒下来,但是当它们斜着依靠着彼此,就形成了一个宏伟建筑。
关键的一点是,汇率可能发生改变,但它们从来没有真正消失。经济学的术语叫做“兑换性”。bitcoin要作为一种货币,它必须作为一种可预测的价值存储,这就意味着它必须能够根据个人的需要和意愿,非常容易的转换成其它形式的价值存储。它必须成为tee-pee帐篷的一部分。但事实并非如此。
这里的问题在于,bitcoin是去完全中心化的。没有人能在这个系统中取得长期成功的投资。没有人能真正的开辟一个市场,说,无论发生什么,我都可以以一定的价钱向你买一些bitcoins。据我所知,的确有一些周边的“交易所”,但是他们对市场的承诺(在我看来)都不可信。每一个人都可以说走就走。
结果就是,我用一个bitcoin去换一个美元或者一个欧元或者一个日元的能力并不比我在ebay上卖我的电脑的能力大多少。我当然可以这么做。但是这并不意味着我就能用我的macbook pro来计量我的账户上有多少钱了,因为假如有一天我找不到任何一个买家了,然后呢?
正因为如此,bitcoin不是一个真正的货币,它只是资产(而且还是无用的那一类)。它正在作为一种货币在营销,吸引那些疯狂的、理想主义的、感到恐惧的人们。这是一场骗局。
严重问题4:一旦哪儿出了问题,它就死了
在大萧条的初期,一些美国人担心如果他们的银行关门了,他们的钱就全没了。于是他们就在同一时间去银行想把他们的钱拿出来,这导致了一些银行真的就倒闭了。这些银行的倒闭使得更多的人感到紧张,于是导致了更多银行倒闭。这就是所谓的“银行挤兑”,很明显我们要避免这种情况发生。
这件事发生之后,美国政府开始明确的保证储蓄存款(也隐含保证其它形式的融资,见布什、奥巴马等“救市”, 2008)。尽管每个人都对这种情况不满意,但是它毕竟比银行系统完全崩溃要好得多。所以这种方式继续下来了。
现在,让我们快进五年。bitcoin经济突飞猛进!每个人都拥有这个玩意。生活真美好。可是后来……出了点问题。可能是一个硬件小故障。也许是系统的什么地方出现了一个流氓节点,导致交易延迟。也许是有人把bitcoin存在AWS(Amazon Web Services)里,结果它再次崩溃的时候,这些bitcoin都丢了……。真正发生了什么并不重要,重要的是:有什么东西最终将出错,bitcoin将受到考验。
它能通过这个考验么?人们会变得紧张。有些人会恐慌起来。少数人会挤兑以退出。汇率会下跌。其他人会变得紧张。有些人意识到他们从一开始进入系统就没有得到过真正的信任。这使得他们真的紧张了。谁愿意去介入和逆止这个系统?
更重要的是,有人能做到吗?银行倒闭,美联储可以通过印钞保证人们的存款甚至是现金(如果需要的话)能够回来。用一个轻微的(可能会有的)通胀率增加作为小代价,避免了金融危机。在bitcoin金融体系中,这根本不可能。它是去中心化的,它是公开算法。没有人能改变它,即使可以,这也不是任何一个人的必须工作。那些在bitcoin里持有大量股份的人,那时候都会忙着把钱弄回来,不会有空去管系统的风险。
bitcoin(实际上,任何电子货币)本质上是不稳定的。而对于货币来说,稳定就是一切。
结论
所以,我认为bitcoin是一个好构想么?我不是密码学家,不过加密系统看起来是一个技术优势。如果它考虑跟一个合法的银行产品做整合的话可能会是一个好构想。但是(现在的情况),这不是一个好构想,这是一个骗局。那里的一些人试图通过这个系统变得富有,但是每一个参与其中的人实际上都在玩弄着烫手山芋,直到它不可避免的崩溃。
不要。去。买。它们。
2011年04月23日 00:09
升级到Ubuntu 11.04之后,每次做hg操作都会出现一个warning信息:
warning: fanfoudroid.googlecode.com certificate with fingerprint 34:4b:90:e7:e3:36:81:0d:52:1f:10:c0:4c:98:66:90:4a:9e:05:c9 not verified (check hostfingerprints or web.cacerts config setting)
不胜其烦。
今天终于忍不住去找了一下解决方法:
http://kiln.stackexchange.com/questions/2816/mercurial-certificate-warning-certificate-not-verified-web-cacerts
Debian/Ubuntu
On Debian and Ubuntu you can use this global configuration:
[web]
cacerts = /etc/ssl/certs/ca-certificates.crt
2011年03月26日 00:33
终于发布了新版本。这个版本是一个完整功能的饭否客户端了。基本上,饭否有的功能,它已经都有了。
ChangLog: http://code.google.com/p/fanfoudroid/wiki/ChangeLog
对于这个版本,有几点说的:
- 我们的项目组成员又增加了! 本次新加入了dodo la和Pheonix两位新成员,他们对新版都做了非常多的贡献。感谢他们。
- 安能饭否终于进入了market。现在可以在market搜索“安能饭否”找到它。
另外想澄清一件事。
很多国产的市场里已经出现了安能饭否。其中有一些还被加入了广告,使得用户很不爽,很多人以为是我们干的,其实不是。因为安能饭否是开源且遵循Apache 2.0协议的,任何人都可以随时去下载源代码编译,或者对其做出改动甚至商业化,这些都是合法的(当然前提是要声明Apache 2.0协议,不过在这个国度里我也不想很认真的追究这一点了),因此我并不想对这些版本追究什么。只是想说明一下,那些版本都不是我们官方发布的,跟我们并没有关系。
从0.7版开始,安能饭否以ch.linghu为作者名在android market发布了。大家可以搜索到。这个版本不含任何广告,请放心使用。
没有android market的同学可以去官方网站下载安装。同样不会含有任何广告。
2011年03月16日 10:59
这篇似乎没有什么技术含量,就不收录到go4pro了。
虽然写着(一),但是我自己也不知道能写到几,也许就这么一篇吧。
那天看到pypy进了python.org官网的Download下载区,成为了Alternative Implementations的一员,心头又痒了。于是打算把自己的python环境切换成pypy,用上一阵子,如果好用,以后就这么用了,如果实在不好用,那就换回来,也没什么了不起。
先在工作电脑的Windows系统上折腾。安装没什么好说的,下载解压配置路径,一切OK。
写了几行代码,也没什么不一样,只是把原来的python命令改成了pypy。
然后想起来自己有一个基于web.py的小页面,要不就把它跑起来吧。
pypy server.py 失败。说web.py没安装。好吧,去web.py的安装目录,pypy setup.py install,搞定。
再来,还是失败,说sqlite3.dll加载错误。原来pypy没有自带dll,去sqlite网站下载sqlite3.dll放到系统路径,搞定。
再来,还是失败,说Mako库没有安装。囧。好吧,去折腾mako库。mako推荐是使用easy_install安装的,但是pypy貌似没办法折腾出来,于是就下载了源码,用pypy setup.py install的方式安装。其中有一个库给出了warning,说无法编译带C扩展的部分,改用纯python的模式编译成功。并且给出了一个错误码。开始还以为是安装失败了,后来一看,似乎已经装上了。而且尝试运行了一下,也没有问题。
虽然第一个脚本迁移成功,不过感觉还是存在很多侥幸因素的。主要是第三方库的问题,如果第三方库用到了C-API,极有可能会安装失败。不知道会对未来的工作产生多大的影响,再用一段时间试试了。
2011年03月08日 14:01
(本文收录于[go4pro.org])
一直很不喜欢使用Word做文档制作工具。除了平台相关性太严重之外,二进制文件也给版本管理带来了很多麻烦。于是这次在新的项目里,就尝试使用格式化文本制作工具。
选工具的时候,在asciidoc和txt2tags之间犹豫了一下。最终选择了txt2tags。有几个理由:
- asciidoc从功能上来说比txt2tags强大很多,但是强大的功能带来了写作时的不流畅感,你要在内容之外考虑太多的东西,非常不舒服。而且其实对于我写的大部分文档来说,txt2tags够用了。
- txt2tags工具链配置简单,编译速度非常快。
- txt2tags我之前用过,比较熟悉。
txt2tags的语法规则其实没几条,去网站上看一下,10分钟就可以学会了。所以这一点我就不罗嗦了。txt2tags可以直接产生网页,我之前的很多文档也是用它写的。这个也没什么好说。
但是公司文档用html一个是不方便,另外一个也显得太不正式。所以,我需要一个工具链,来把它转换成PDF。
txt2tags不支持直接到PDF的转换,但是它可以转换成很容易生成pdf文件的latex格式。所以我就非常自然的想走 txt2tags -> latex -> PDF 这条路了。
首先去下载了了一个CTEX安装包,避免在latex中文问题上做过多的纠缠。
然后将txt2tags文件转换成latex文件:
python "d:\Program Files\txt2tags-2.6\txt2tags" -t tex README_deploy.t2t
没错,Windows下就是这么麻烦,在Linux下简单很多:
txt2tags -t tex README_deploy.t2t
就行了。不过还好我们可以写脚本,这个下面再提。
这样会生成 README_deploy.tex 文件,但是这个文件默认是无法编译的,因为里面没有引用中文的相关包。所以我们需要对这个tex文件做一些预处理。我写了一个简单的python脚本来自动完成这件事:
#encoding:utf-8
import sys
# 在\usepackage{graphicx}的后面加上一行\usepackage{CJKutf8}
# 将\usepackage[urlcolor=blue,colorlinks=true]{hyperref}
# 替换成\usepackage[unicode,urlcolor=blue,colorlinks=true]{hyperref}
# 用于支持中文书签和目录
# 在\begin{document}的后面加上一行\begin{CJK}{UTF8}{song}
# 并加上\CJKcaption{zh-Hans}用于生成中文目录
# 在\end{document}的前面加上两行:\newpage(中文目录hack)和\end{CJK}
input_file, output_file = sys.argv[1:3]
content = open(input_file, "rt").read()
content = content.replace("\\usepackage{graphicx}", "\\usepackage{graphicx}\n\\usepackage{CJKutf8}")
content = content.replace("\\usepackage[urlcolor=blue,colorlinks=true]{hyperref}", "\\usepackage[unicode,urlcolor=blue,colorlinks=true]{hyperref}")
content = content.replace("\\begin{document}", "\\begin{document}\n\\begin{CJK}{UTF8}{song}\n\\CJKcaption{zh-Hans}")
content = content.replace("\\end{document}", "\\newpage\n\\end{CJK}\n\\end{document}")
open(output_file, "wt").write(content)
经过这样处理之后的tex,我们就可以使用pdflatex命令直接生成pdf了。
下面给出我用于这个文件的批处理脚本,有进一步的应用可以在这个基础上改进。
set PYTHON=d:\python27\python.exe
set TXT2TAGS="d:\Program Files\txt2tags-2.6\txt2tags"
set PDFLATEX="D:\CTEX\MiKTeX\miktex\bin\pdflatex.exe"
rem generate latex source file
%PYTHON% %TXT2TAGS% -t tex README_deploy.t2t
rem Patch tex file for Chinese support
%PYTHON% pdf_cjk_patch.py README_deploy.tex temp.tex
copy temp.tex README_deploy.tex
rm temp.tex
rem Generate PDF file
%PDFLATEX% README_deploy.tex
另外要注意的一点是,latex不支持“没有编号的章节”生成目录。所以在标识章节的时候,一定要记得用"+"而不是"="