善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2012-11-14

真与假,真的那么重要吗?

经常看到有人跳出来说,某某消息是假的,某某图片是 PS 的,这都看不出来,傻 B。

我承认,说以上的话,的确是会产生一种优越感。而且很容易用「人云亦云的家伙」、「没脑子啊你」、「缺乏独立思考能力」等等理由继续攻击下去,痛快一番,嘴嗨翻天。
不过,很多次,我都想问这些优越人一句:真或假,真的有你以为的那么重要吗?

谣言之所以成为谣言,仅仅因为它与事实不符。事实是否存在,是贴不贴「谣言」标签的关键。但是,所述内容本身并不会因此有任何的改变。
当大家还没去了解事实到底存不存在的时候,对于这个谣言的理解,就反映了直觉及经验性的判断。而这也正是某些谣言得以流传,而另一些谣言根本没人相信的原因。
为什么会有这个判断,我认为这才是重要的。换句话说,大家愿意相信什么?

基本上,大家更倾向于相信:
  • 符合日常生活经验的事情:比如铁球比木球掉落得快
  • 符合心中期许的事情:「本该如此嘛」
  • 更具有公信力的机构的宣称:政府说了……
  • 三观接近的描述:各种信徒
  • 可能会对自己有益和/或避免对自己有害的事情:转发中奖/买盐防辐射
  • 毫不关己、无关痛痒的事情:西安有个薛姓小孩捡了颗玻璃珠……
  • 具有更多论据(但真伪并不确定)的论述:图片好多!
  • 自己力所不能及的事情:到底有没有上帝?
  • 负负得正类的消息:所谓高级黑
  • ……
这也就是所谓的「谣言的土壤」。在证据不足的情况下,为什么谣言会生根发芽,这就取决于它本身的「营养」。一个事实很容易修改成谣言,只要把其中的具体时间、地点、人物等关键因素进行置换就可以简单做到。优越人、证据人们可以轻易地把这些谣言驳成个筛子。但是这并不妨碍这个事情固有的性质。摸着自己的良心问问自己,如果它是真的,你有什么看法,以及你为什么会有这些看法。

然后你会发现,即使是抢盐这种事情,都没有看上去那么简单。那么多人真的都吃了脑残片吗?如果有人告诉你,你正处于某种恶性重大疾病的威胁之下,得了那种病只有死路一条,死前身上插满管子,气管被切开口不能言,大小便失禁,生活不能自理,并且还会耗光你的所有家财,倒欠一大屁股债,你会妻离子散、家破人亡,DNA 面临被淘汰的厄运,而能预防这个疾病的药物却很便宜……

在最后,要提醒某些人一件更可怕(但不是没有过)的事:「狼来了」这句话,不只有放羊的小孩会讲。在我们这个科技的时代,狼,也会讲!

2012-10-25

头一次埋彩蛋哩

在改某个 Bug 的时候,需要通过已知的 HWND 来判断该子窗口是不是一个 DateTimePicker 控件。办法很简单,只要给这个子窗口发一个 DateTimePicker 控件的特定消息,如果返回值正确,那么就认为猜对了。

但是在选择这个「特定消息」的时候,我犯了难。DateTimePicker 支持的消息本来就不多。为了避免对正在编辑的数据带来扰动,只能选择 GETXXX 之类的消息。并且这个消息还得有定义良好的返回值,用于鉴别消息是不是发对了人。

一开始我选的是 DTM_GETSYSTEMTIME,这货能返回当前编辑的时间。但我发现控件一旦响应了这个消息,键盘输入就像按过回车一样被 COMMIT 过了,导致年份之类的多位数字根本输不完整。回头看了看 DTM_GETMCCOLOR,又无法确定返回值是不是能够鉴别出来。有个 DTM_GETDATETIMEPICKERINFO 倒是看上去挺好,可惜只支持 VISTA 往上。最后我选择了 DTM_GETRANGE。

DTM_GETRANGE 可以返回设计者在 IDE 上给 DateTimePicker 控件定下的最大/最小值。所以我只要把最小值设一个特定的日子,然后看看返回值正不正确就 OK。实验下来对输入也没有扰动,是个很好的选择。那么,日子选哪一天呢?

……我敲入了 1989-06-04

2012-10-19

一个关于浮点运算的坑

这两天遇到一个很奇怪的问题,后来通过排除法终于把故障点缩小到一句代码,但还是很奇怪:

某个同事以前用 VC 写了一个 DLL 用于提供某类通用计算,相当于一个计算模块,由我这边写 BCB 程序来调用。不过在这次的问题中发现,一旦线程调用过 pow() 这个 C 库函数来计算过一个非整数指数的幂,那么这个计算模块接下来同样的参数再次用就会得出不一样的结果。调用过 pow() 之前是一种结果,调用之后是另一种结果,现象相当稳定。

诡异就诡异在 pow() 的返回值既没有错,也没有被采用过。比如仅仅一句:
pow(2.0, 3.1);
函数返回值根本没有用来干过任何事情,相当于直接丢掉了。那么按道理来说这行代码应该不会对之前或之后的代码造成任何影响。但它确确实实影响了。
然而指数如果是整数,就不会,比如:
pow(2.0, 3.0);

那个写 DLL 的同事对此也是一头雾水。怀疑点一度被放在 VC / BCB 身上,因为它们的 CRT 不一样。但因为正好有一个测试工具,稍加改造便可以针对计算过程输出详细的结果报表,因此用来比较了一下,发现了问题:出问题的地方,有两个本来应该用来比较的 double 型输入数据正好是相等的。在 pow() 调用之前,它们的确被判断为相等。但调用 pow() 之后,计算结果显示它们被判断为不相等了。

这种事情对于常写浮点运算相关代码的程序员而言是很容易引起警惕的。浮点数不能直接用 == 之类来比较,必须去判断两数相减的绝对值是否小于某个精度。所以将这个测试结果提交给写 DLL 的同事之后,很快就定位并解决了问题。
但这里我更关注的是以下几个问题:

  1. pow(2.0, 3.0) 和 pow(2.0, 3.1) 的不同,使我相信 CRT 肯定对前者作了优化。这种事情,想得通,但后果可能是个坑。
  2. 很明显,CRT 在 pow() 被调用之后,处理浮点数时的行为模式改变了。通过观察 _statusfp() 的返回值,我发现调用前为 0,调用后变成了 0x20。但这个 0x20 是一个 Undocumented 的东西,哪怕是最新的 MSDN 上也找不到。并且我通过 _fpreset() 将状态字变回了 0,但计算模块仍然会出错,说明应该还有别的东西也被改了。这个坑是不是 VC 和 BCB 联合挖的,目前还不知道。
  3. 如果不知道有这个坑,就可能导致一些大麻烦。在特定的代码逻辑中,这个问题很难通过黑盒测试发现。它可能在很长一段时间内都能工作得很好,直到某一次有个用户算了一个指数带小数点的幂,然后……一切就不一样了。这简直就是逻辑炸弹嘛!让我想起了《深渊上的火》里面可怜的蓝荚和绿茎。
  4. MSDN 真心不是完全靠得住的。

在本文最后,还要对提供过重要帮助的 Libin Yan 表示感谢!并感谢所有关注和评论过这个 PO 的 G+ 网友!

2012-10-12

黑客故事 2:关于弱口令设备的闲话

家庭路由器都有 HTTP 的管理界面的。不过我估计给这些人家布网络的人大概都很不耐烦,因为那些用着 admin / admin 这样密码的路由器,80 或者 8080 端口就这样开在 WAN 口上,在自己附近的网段上完全是一扫一大片。另外,早期家庭路由器大概厂商这边投入也不够,大部分都偷懒把 PPPoE 密码写在了网页上。据我当时看下来,什么网件、D-Link、腾达、贝尔,统统中招。唯一做了防范措施的,是 TP-Link,这导致我之后买路由器时几乎没有考虑过别的任何牌子。

话说这 PPPoE 密码我轻易拿到了一大批。要是到了坏人手里头,互联星空就有得赚了。不过我系好人呀,好人我只是去电信营业厅看了看大家的住址,从来没用来干过坏事。不过就算不知道 PPPoE 的密码,也能干坏事。断网什么的都是小事。当年还没有 360,一台没打过补丁的 Ghost 机器被 DMZ 暴露在外网,会出现什么情况?

这些年,中国电信大力推广它的定制路由器。无论是管理密码还是无线安全都得到了加强,从这方面我觉得还是应该予以正面的肯定。不过我还是嫌它太烦,让它下岗了。用刀能自杀,也能防身。既然我不是小白,就不需要给我学生剪刀玩吧。

专业级的设备,比如机架式的路由器、防火墙,铁皮壳子,比家用路由器那种塑料玩意儿容易让人觉得可靠。呵呵,看起来可靠,于是某些人就不设密码,23 端口开着就往外网上放。哎呀,这种设备要是被扫到那能怪谁?其实我很多次都怀疑这些统统都是蜜罐。23端口开着,弱口令,轻易就能拿到最高权限。哦,被我第一个找到?这世上有这么好的事情?

当然,从这些设备上的情况看来,它们只是被当作傻瓜型设备在使用。SSH 没开就不用说了,连私钥都没有,说明 SSH 从来就没开起来用过。日志也是只开了默认的 syslogd。有个单位的硬件千兆防火墙连一条 IP 过滤规则都没有配,完全当路由器在用,下面接的 PC 却只有五台。但即使这样,我也只是逛了逛,浏览并学习了一下这些网络设备的命令和界面,除了清掉日志停掉 syslogd,不敢做任何改动。没必要自己给自己找麻烦,对吧?

我想说的是,这些设备,完全可能成为僵尸网络的一部分。不要以为只有电脑才能被僵尸网络控制。防火墙不好好设置,比 PC 还残,关键是你根本想不到它会成为威胁的一部分。为了维护自己网络的安全,你可能还离不开它,但真正的内鬼其实就是它。甚至也许都不是防火墙、路由器。交换机?也有可能。但问一句,你们单位有摄像头吗?

黑客故事 1:图形验证码上的 SQL 注入点

有一次,遇到有人在街上发宣传材料。本以为是什么餐馆开张之类,拿回家一看才发现是个类似网络传销的东西。我当然无意参加,但既然是「网络」传销,就必定得有网站和服务器,于是打开电脑看了看。

网站挺简单,就是一些宣传页。但我觉得肯定得有后台系统。果然没多久就被我找到了,PHP + MySQL 做的。登录输用户名+密码,另外还有图形验证码,没有 SQL 注入漏洞。看来开发者对登录这块还是相当注意的。又看了几个页面,还是没有注入点。我想撤,但又有点儿不甘心。向这种非法组织的服务器下手,基本上是没有法律风险的。他们显然不敢报警。所以我又回到登录界面上。在看 HTML 代码的时候,图形验证码那部分吸引了我。

我发现他们的图形验证码没有用 Session 来控制,用的是 URL 传参,GET 方式。也就是说在 URL 中给出了一个数字,然后服务器上返回一个生成的验证码图片。我在表单中也找到了那个数字,试着刷新了一下页面,数字加了 1。用旧的 URL 还是能拿回原来那幅图片,但一旦该图片中的验证码被「使用」过,就不能再拿到了。

这意味着什么?这意味着验证码与这个数字之间有某种联系,某种对应关系。这个联系可能是 Hash 出来的,但根据现象,更可能是存下来的。我决定赌一把。果然,验证码图片的 URL 存在 SQL 注入点。每次读出来的是存起来的四个字母,然后交给 PHP 生成图片。

也许开发者认为,就算被注入,入侵者面对着四个字母的图片也干不了什么破坏。但他可能忘了有 MID 这个函数。我利用这个漏洞确认了 admin 这个用户名确实存在,也拿到了 Hash 过的密码。不过接下来我收手了。我想再潜伏一段时间再动手。结果一个月之后,我再去看的时候,这个服务器已经不在了,网站也不在了。大概被警方打掉了吧,可惜!

在这个故事里面,我想强调的是,SQL 注入每一个地方都要防!哪怕再小的漏洞,也能造成危害,一个都不能疏忽。

2012-09-29

为了赞成的反对

有一句话,经常被人拿来说。大概是这样的:「不要为了反对而反对」。这样一说了之后,仿佛立刻比所有反对者要高级了一层,高瞻远瞩,高屋建瓴,高举 XXXX 的旗帜,居高临下,高下立判。

其实呢,这也是一种很常见的伎俩,引导员经常用。这个句子的确有一点讲究,「为了反对而反对」。两个「反对」一出,好像就有点对方犯了「循环论证」错误的意思,进而可以质疑起他的逻辑能力来。如果有聪明人来替他换上一种说法:「我要反对是因为我不同意」,就好得多了。是个正常人恐怕都会觉得,这个挺正常嘛,有什么好荒谬的?

当然了,这话的意思,我不是装作不明白。潜台词不就是:反对的目的还是反对,是低级的目的可笑的行为。换而言之,如果没有更高级的目的,就要受到发话人的批评。不知道从哪个年代开始的坏风气,咱们国家的人要干一件事情,一定得有个伟大、光荣、正确的好理由。直来直去,好像就会很对不住伟大领袖。「为了拉屎而拉屎」这多不好意思?您得说为了施肥、为了增产,在不济,也得是「为了缓解腹腔内压力」才行。于是这样一说,往往就弄得对方自惭形秽,气势上就先怯了。这和上次说的那个「信心与不同声音」的手腕是类似的:拔高标准,然后打击贬低对手。你不是圣人,所以你就是狗!

对这种对手,我个人是相当的痛恨的!想想「学雷锋」是怎么摧毁社会道德观的,想想「子贡赎人」的故事。对方的用意何在,可见一斑。因为你做不到那个高标准,所以你就不要做、不能做,做了就是狗。这种用心其实根本谈不上不善良。扔出这句话的人,往往已经快招架不住了,理论体系已经快崩溃了,只好舞出这种流氓招数来应付。千万别上当!

如果还觉得心中有愧,觉得这话说得还是有几分道理。那么,再来看看下面这两个问题:

1.你真的是在「为了反对而反对」吗?
对方既然说出这话,自然就是替你定了性。但它说的不能算数。做一件事情的理由,只有你自己最清楚。人是高级动物,并不是巴甫洛夫的狗。也许你还不能清楚地总结出来你反对的理由,但是必定是有一个或多个,不可能不存在。所以这句话本身就是伪命题。

2.「为了反对的反对」是不是就没有意义?
从自然法则而言:首先,不存在绝对真理,任何理论都应该有值得修正的地方;其次,竞争导致优胜劣汰,没有竞争只会导致系统退化。即使只根据这两条理论,哪怕是纯粹的「为了反对而反对」也是有存在的必要的。这方面的例子和理论已经多得不能再多,我也不想再提。

其实,我倒是希望引导员们直接地,明白地说:「要为了赞成而反对」。这就对啦!省得我费口舌嘛。

2012-09-13

美国欠中国钱的真相

很多人,不止芮成钢,都认为美国欠中国钱。上次去听那个「钱瞻」的时候,Weiss 评级的老头也拿这个说事,说美国的外债很多,外汇储备很少,于是评级应该降低。而中国的外汇储备很多,外债非常少,评级应该很高。

没错,根据通常的观点,一个人家里要是没存款,又欠了那么一屁股债,那当然应该是不破产也快了。但是这其实是一个很无脑的论调。国与国之间,由于涉及到货币兑换、供求贸易关系等等方面的影响,有些事情并不能简单地与个人之间划等号(有的时候却可以)。那么,我们来看看这个钱是怎么个欠法。

中国生产了很多的商品(产能过剩),但国民穷,消费力不足,买不了这么多(内需不足)。于是就把这些商品卖给美国(出口)。美国人当然是用美元支付了,于是中国手中就有了美元(外汇)。

美元不能直接在国内用啊,否则不就成了美国了?但既然工人生产了商品,还等着拿卖商品的钱来给他们发工资呢。所以这些美元必须得换成人民币(结汇)。美国人手里没有人民币,人民币是中国自己印的啊,没法跟美国换。怎么办?人民币总不可能凭空变出来。除了印钞,别无它法。印多了要通胀,只能有多少美元,就按一个比例(汇率)印多少人民币,然后拿去发工资。而手里的美元当然也不能烧掉,否则不成傻子了?这可是硬通货呢,当然是要放起来呗((外汇储备)。

这也就是为什么说外汇储备其实是未完成的交易导致的。本来,中国卖货给美国,美国也卖货给中国,如果刚好两不相欠,就相当于最原始的以物易物,这是最简单的。但是,往往是中国的货太多(出超 / 顺差),于是美国只好拿自己的钞票付账。意思大抵就是现在我没有货可以和你卖给我的相抵,于是我给你这些美钞,将来你要看上什么,再拿美钞到我这里来买回去。——当然,末了还得加上一句,如果我愿意卖给你的话。这就是所谓未完成交易。看吧,其实和自然人之间做生意也是差不多的。

顺带说说汇率这个事情。中国目前的汇率是管制的,不敢放开,放开就会跌。因为现在不能用实际的购买力来设定汇率,否则印出来的人民币会更多,通胀(输入型通胀)会更严重。高估本币可以让贸易顺差的后果没那么严重,也就是说让这些外汇没它本来那么值钱。但同时也抬高了本国的贸易成本。因为明明卖出货物换回了可值 10 元人民币(购买力)的外汇,只敢印6元人民币出来发工资,其实是做了亏本生意啊。

但是,没办法!中国不争气,人民一直很穷,有钱人都移民了。为了让这些刁民不造反,一直都靠把东西卖给美国来维持经济景气。长此以往,手上的美钞就原来越多。现在问题又来了:美国也在一直印钞,印得也不少,就也会有通胀。这些钞票一直放在仓库里,又不能钱生钱(投资),越来越不值钱,总不是办法呀,最好是拿去买点儿什么。

买什么呢?冰岛?人家不肯卖。iPhone?呵呵,给警察是买了不少。算了不说笑了。中国的做法是去做投资,比如买美国的国债。为啥呢?因为美国的国债是用美元来买的,正好。而且美国国家信用比中国好啊。为啥好?打仗你打得过吗?科技?文化?经济?哪个你能强过人家?既然认为美国比较不容易「下课」,风险小,收益稳定,于是就买它的国债咯。换成是个人你也会这么做。

那美国为啥外债高呢?呵呵,因为美国想多些钱花,但又不想印钞票印得让自己国内高通胀。不印钞票怎么办?借别人的呗。借别人的钱,等于之前买别国东西(外贸逆差)花出去的钞票又收回来了,多了张借条而已。

顺带说一句,这个借条(国债)可是很牛 X 的。中国不买,有的是人买。中国还得提高报价才能买到。为啥这么牛 X?因为美国实力牛 X。别的国家一合计,手头攒的美元借给美国,比借给其它任何别的国家都要保险。换句话说,其它所有国家都觉得美国应该比自己要死得晚。什么时候这个借条不吃香?美国实力受到它国挑战了,老大变老二了,这个借条有人就要掂量着拿了。但是话又说回来,既然所有国家都借钱给它花,除非美国脑残自个儿玩砸了,或者遇到什么「不可抗力」因素,否则就现在这种借钱扩充自己实力然后再去借更多的钱的玩法,实力第一的宝座很难旁落。

就这样,通过卖国债给别的国家,别人生产的商品给搞到了手,自己拿去买东西的钱又给忽悠了回来,回过头又可以拿去买新的东西。我们知道通胀是由于钞票多了,但现在美国的社会财富也一起增加了,所以钞票多没有问题,低通胀。印钞票的事情由中国来负责,高通胀,该!

美国这种做法,其实是把自己国内的通胀输出到了别的国家,使自己可以在享受低通胀的同时继续大手大脚地花钱(高增长)。说穿了,这就是一种经济掠夺。但你没办法,谁让你不争气?把自己的国民搞得那么穷呢?你要是让你的国民购买力旺盛,国内生产根本满足不了,国外的厂商争相把货送到中国来卖给这些富翁们,甚至不惜为此大打价格战。那时中国就可以这样去掠夺别的国家了。

这就是为什么说国家实力强弱不是看政府,而是看人民。人民没钱的话,政府再有钱,也是只有送给别人花,还要在汇率等问题上被宰一刀份的份。人民有钱的话,政府就算是「债台高筑」,也还有大把大把的银子排着队等着花。

看了这些,应该明白外债和外汇储备是怎么回事了吧?还坚持说美国欠中国钱吗?

2012-09-10

上海「钱瞻」2012简记

注册
注册时交了在上一家公司的名片,心想反正他们无从查起,偶尔使用一下假身份也不错。
注册完发了一个资料袋,里面有一些宣传材料。有一张是说洪博培因为「不可抗力」的因素来不了啦。其实我从一开始就觉得他是用来宣传和卖票的噱头而已。
8:30入了会场,用身份证抵押领取了同声传译机。没用过这东西,仔细研究了一下,其实就是一个小收音机吧。播音员(译者)就坐在会场内的一个小隔间里面播音。

开幕式
先是MoneyShow的外国女老板上台致辞。演讲的标准腔调,字正腔圆,节奏缓慢。因此一开始我基本都能听懂。但后来讲到经济相关的专业内容,我就跟不上了,只好开传译机听翻译。

然后是Weiss评级的老头儿上台发言。老头儿讲来讲去就一个意思,三大机构把美国和中国的评级搞颠倒了。美国债多,储备少,GDP增速低,应该是C。中国倒过来,应该是A。这个就纯粹是胡说八道了,不知道老头儿的用意何在?

接下来是瑞银的一个老先生。这个老先生对之前的Weiss老头儿的不少说法都予以讽刺,可以说是嗤之以鼻。他严厉地批评了中国政府的财政政策和经济现状,发飙的过程中被下面某人示意后打断……。总之,这个老先生我认为是这次会议唯一讲了心里实话的人,也许是因为他的立场可以比较超然吧。其他人都是来替政府背书的。

上午大会场最后一个上台的是Jacobsen,讲欧洲局势。讲得我瞌睡迷糊,只记得拒绝、抗议什么的。

小会1
大会结束后,上午还有一个小会。基本都是产品推介,我选择了与程序化交易还算比较靠谱的中大期货讲的「期货投资管理」。听下来的收获:

1.粗略了解了国债期货,特别是它的期现套利。
2.了解了一下它所谓的组合期权的思路,对于「期权的最大风险是确定的」有所感悟。
3.了解了一下「对冲」的思路和做法,并再次回顾了套利的思路和做法。

中午
吐槽一下:这么贵的票,中午居然不管饭。要吃自助餐,还得掏60块钱来买。还是去正大广场吃汉堡王吧。

小会2
下午第一个小会是技术教育。我选择了听布林通道的课程,毕竟是创始人来主讲,算是很给MoneyShow面子。布林通道我平时也经常用,自我感觉用法很简单,所以也很好奇这么简单的东西他能讲些什么。果然,主要是下列内容:

1.布林通道的公式是如何推导出来的。
2.根据布林通道衍生出来的指标及其作用。

我一开始坐在中间,结果同一排有人带了小P孩进场。上窜下跳的结果,就是整排座椅都抖个不停。瞪眼无效,最后以我主动换座位告终。
换过座位,又有人坐到前面来挡。挡没关系,挪到旁边就可以。但此人还有狐臭,只好再次换座位。
会议内容可能较受欢迎,期间一直有人涌入。后来我周围都坐满了人,隐约又有狐臭。实在是受不了,爬起来跑到了最后一排座位,才算最终消停。

小会3
下午第二个小会又是产品推介性质。我选择了去听福汇关于独有指标和交易信号的内容。去的时候去晚了,小小的会议厅里面已经坐满了人。听了一会儿后悔了,它们所谓的「独有指标」,是指把旗下所有客户的买卖情况拿出来作涨跌参考。这跟Level2卖五档数据差不多的意思吧。如此的话是没有什么参考价值可言的。

换了个厅,去逛了一圈银大的会场。标题是《全球经济危机背景下卖空大宗商品的盈利机会》。听了几分钟,感觉讲的人光在那里嚎,没什么干货。既然经济不好,大宗商品当然下跌多过上涨,做空还用你来说?

最后还是去听老外的场,就当作练听力了。老外接在投影仪上的笔记本Win7里面装了Chrome,是唯一的亮点。

下午茶
下午茶时候,服务生端着盘子跑来跑去,倒是挺像鸡尾酒会。不过我看大家都是和自己熟的人聊。我喝了点饮料,吃了几片西瓜之后,溜到大会场找了个角落的座位睡觉去了。还有好几个人也跟我一样的做法噢。

第一天落幕
四点开始的大会场演讲。首先是湘财的某个白痴,来讲什么中国经济的「稳增长」的话题。这个白痴说四万亿只带来了「些许的通胀」。还说如果没有四万亿,现在的经济不会比08年好。

这话充分表现了他的白痴本质。好像现在比08年好还是怎么的?从上午的Weiss评级,以及瑞银的老先生怒斥国内各行业的产能过剩时被叫停等情况看来,这次会议有司是有任务的,是要用来引导舆论,给大环境造势的。可惜背书的都是些垃圾,逻辑都没有。我直接退场回家了,后面的也懒得听了。

第二天
其实根本没必要去那么早,开放注册一个小时之后,才有大会场的讲座。大会场讲完,再是小会。于是今天睡了个小懒觉,到会场的时候已经十点半了。大会刚刚完,但接下来准备听福汇的关于趋势交易的讲座还是在大会场里面,于是早早就溜了进去等着。

小会4
福汇的这名讲师满口的南方腔,不过讲的内容还算客观。趋势交易是吃鱼身,并且一定有赚有赔,趋势只能判断无法预测,关键是止损和资金管理,等等。至于判断方法,倒是没太重点讲,只说了划线法,均线突破以及高低位等。总的说来,主要还是思路而不是技术、方法型的讲座。

个人觉得这个讲师挺有说服力的,包括语音/语调/语速以及讲解方法。算不上有煽动力,但是感觉让人很容易相信他,并接受他的意见。大概做这行的都有这个吧。

中午的突发事件
还是跑去正大广场吃了午饭,正准备回会场的时候。在正大广场1楼遇到一群手持A4纸标语的人。其中有个大汉把纸贴在身上,让人拍照。后面有个女的正在接受SMG的采访。

我也凑过去听,原来是B1楼的那个Smartkids商家卷款潜逃了。据说这些家长的学费加起来约摸有三、四百万吧。听围观群众讲,最近这类事件也不是一起两起了。

小会5
下午第一个小会选了去听帝纳波利点位交易法。创始人主讲,但调子比布林格要嚣张很多,完全是演讲的调调,一副你必须得相信我的样子。

举了不少例子,说他预测了市场的低位以及反转点等等。还用言语挤兑人,说如果有人告诉你市场不可预测,那是因为他不会。但我听下来还是觉得这个家伙是个大忽悠。你要那么神,还来卖书干啥?

小会6
下午第二个小会,回到大会场,又是一个老外。这个还是在讲趋势交易,是说如何把握股市的进场和出场时机。基本上还是福汇上午讲的那些内容,只不过福汇是用的外汇作例子,而这个老外用的美股。因为其它小会更没意思,所以就在这里混完时间就回去了。

结束
后面还有闭幕式,以及抽奖等等。因为家里还有事,也因为觉得没有意思,于是拍拍屁股跑人了。下午茶也没有吃,不过目测有咖啡。

2012-08-29

信心与声音的扯蛋

今天见到一个有点意思的说法:「有信心,就应该让不同声音存在」。拿出来专门玩味一下。

这句话很简单,是一个很清晰的命题。初看上去,讲得非常有道理。特别是拿出来呛某些非法执政党的时候,简直是掷地有声,砰砰的。其实,这句话真正的杀伤力,是在于它的逆否命题:「不许不同声音存在,就是没有信心」。学过逻辑的都知道,原命题成立,则逆否命题亦成立,反之亦然。但我觉得,这个命题,本身就是一个伪命题。
从逻辑上讲,要证明一个命题很难,要证伪是很容易,只要举出一个反例即可。并且,由于原命题与逆否命题之间的关系,如果无法证伪一个命题,那么证伪它的逆否命题也是可以的。我现在就来试一下。

不许不同声音存在,就是没有信心吗?在世界上大多数国家,传播儿童色情是违法的,而且很多是重罪。那么这些国家不允许这种声音(儿童色情)存在,是它们没有信心吗?如果你对自己的子女教育有信心,对自己子女的品行操守有信息,是不是就可以允许他/她接触这种东西呢?
有的人会说,这种例子太极端,那么好,再来个不极端的。假设你是个公司的老板,有人四处散布对你公司不利的谣言,你想让他继续吗?如果不想,是否是对自己没有信心呢?佛教中也许有把脸伸过去任人打,以及舍身喂 XX 的故事。但是我估计没有那种故事,说如果不这样做,就要下地狱。

由此可见,虽然话很呛人,但道理是歪道理。国人一贯死要面子活受罪,爱随意拔高道德标准。应该这样来理解:「允许不同声音存在」的目的,是签一张契约。也就是说你不得不允许某些你不希望的声音出现。同时,按照契约,当你的意见别人不喜欢的时候,你也还是可以说出来。这跟信心没有什么关系,只跟权力的制衡有关。
如果你的权力大到可以压过其他人,那么你大可不必遵守这个契约,因为你不需要这个契约来保障你的权利不受损害。只有当你害怕被他人如法炮制时,才会自觉地保护少数人的利益,这其实反而是信心不足。老毛有信心没?有,大大的有。引蛇出洞之后那些不同声音是什么下场?
所以,「允许不同声音存在」,其实是弱势当权者的一个「不得已」的决定。只有这样,才能保证自己将来无论处于何种地位,都有说话的权利。在那些权力不能得到制衡的地方和场合,这个规定就无需遵守,也无法遵守。

和许多「民主人士」的想法可能有些出入,并不是任何场合下,权力都必须得到制衡的。简单的,比如军队。要是小兵和大将之间还搞权力制衡,那这军队大概没法打仗了。在比如苹果,乔布斯在世时,一人说了算,把公司带上了巅峰。我相信乔布斯还不至于「没有信心」吧,但我相信苹果内部的民主气氛应该不会太浓烈。
总的来说,「允许不同声音存在」这个事情,必须看场合,看对象。你拿它去讨伐专制执政党,自然是正中红心。你要拿它去哪个论坛里面挑战管理员,纯属有病。但一般情况下,我是不介意谁拿它去乱捅的,反正作为因果论者的我乐见其成。但如果把「信心」再扯上,就扯蛋了。信心信心,本来就是我自己心里面的事情,你一个外人,管毛?我有没有信心,难道还要证明给每个人看?笑话!

昨晚看贵州卫视,胖子健身的真人秀。教练指着一胖子大吼,你是不是爷们?!我真心想回一句,老子有木有鸟,关你鸟事?

2012-08-03

GAE 的 Frontend Instance Hours 高居不下咋办?

架设 GAE 用了 GoAgent 之后,对于 Dashborad 中的 Frontend Instance Hours 一项数字如此之高有些不解。查了 Google,发现有同样疑问的还有很多人。于是翻了翻 Google 的文档,做了做实验,基本上弄明白了。

其实这个数字高也不代表什么。不信你可以架一个 Hello world 上去,先不要急着访问,只是打开 Dashboard 看看。Number of Instances 应该是 0,Frontend Instance Hours 也是 0。然后再打开 WebBrowser 访问一下你的 Hello world,再看 Dashboard。现在 Number of Instances 是 1 了,而 Frontend Instance Hours 就开始了渐渐的增长,哪怕你把 WebBrowser 马上关掉也是如此。
说白了,Frontend Instance Hours 就是 GAE 记录的服务实例运行所用掉的时间配额。没访问过的话,实例数是 0。而一旦有 HTTP 请求,GAE 就得启动一个实例来响应这个请求。运行这个实例需要耗费相应的 CPU 和内存资源,于是 GAE 就开始计费了。实例不停,Frontend Instance Hours 就会一直长。而 GAE 为了能在短时间内响应下一个请求,通常是不会很快把实例给停掉的。(至于到底会等多久才停实例,据说是 15 分钟无新请求就不再增长 Frontend Instance Hours,但实例数还在,估计挂起了。不过你可以手动停掉它。)
既然叫做「Hours」,增长的速度当然就是指的实例实际运行的时间。实例跑了一个小时,那么 Frontend Instance Hours 就会增加 1.00。我没测过 Google 会不会在计费上面耍点小手段,大抵是不会的,个人感觉也基本上差不多。
所以看着 Frontend Instance Hours 一点一点地增长,也完全不必心慌。一天 24 小时,GAE 给了 28 的免费配额,如果你只跑一个实例,是不可能用完的。用到 23.99,下一分钟就第二天,重新计算,清零了。对于只跑 GoAgent 的用户,实在不放心的话,我觉得用两个 AppID 来跑也完全足够了。当然,流量超了的情况另算。

那么什么时候 Frontend Instance Hours 会超过 24 呢?据说一个请求如果在等待了超过 Min Pending Latency 的时间之后,仍然没有实例能来处理它,那么 GAE 就会开一个新实例来做这个事情。所以 GAE 给了免费用户 28 个 Frontend Instance Hours。Google 的解释是为了让用户能够应对一些紧急状况。
另外,这个「紧急情况」,除了指访问量大导致的多实例运行,也包括了一个功能,就是 GAE 允许用户调高 Frontend Instance Class。F2 级就比 F1 级多用一倍的计算资源,而 Frontend Instance Hours 也就增长得快一倍。这种情况下,多出来的 4 个小时就可以视为 GAE 给的「加力」之类的东西了。如果你只想在短期内进行一个高强度的计算,那么可以考虑用 F4 来跑一个 APP 看看。

2012-06-22

黎明圣记简明攻略

前言之前言
  因为重新开博,把自己以前架 Drupal 的虚拟机翻出来重新装上,准备翻出一些有点价值的旧博文整理上来。刚翻了四五篇就看见了下面这个。游戏攻略!?我都快不记得了,要不是里面的一些自己的特色用词用句,我都不敢相信自己居然还写过这种东东。原作于 2005-11-20 03:01:12 发表,看来是我周六辛苦作战通关之后一鼓作气而成。由于这种文章并没有时效性,我就不重新设置时间了。
  另外发现的一件事是,百度贴吧里面,有人在 2006 年的时候把我的原文贴了上去,没有注明转贴,也没有给出原作的链接。虽然也并没有声称是自己写的,但个人觉得还是不厚道。


前言
  这样的 RPG 小品游戏,没什么难度,本来不需要写攻略的。不过在我玩的时候,遇到有疑问的地方,想上网找找攻略,居然全都出自一处。没想到啊没想到,国人不仅技术文章只会抄,连游戏攻略都抄成习惯了。所以还是自己写一个好了。
  游戏相当简单,也不大,所以就不详尽写了,我只把要注意的地方点出来就好了。

操作说明
  首先,建议把设置中关于图像(GRAPHIC)的选项设为 VRAM,这样通过显存使用 DX,速度快不少。默认的是 SYSTEM,使用系统内存,属于牺牲速度换取兼容性的选择。
  游戏可以用鼠标操作,左键行走 / 行动,双击开跑,右键菜单 / 取消,典型的日式 RPG 风格。
  也可以用键盘操作,Z 键等于鼠标左键,X 键等于鼠标右键。
  小技巧:当人物位于画面中部的时候,再用 X 键呼叫出菜单,这样会比较省时间。

角色简介
玟特
  基本上从头跟到尾的同伴,牧师型,唯一会回复法术的角色。
  物攻基本上可以无视,物防也就是普通的法术系水准。专精水系法术,不会太多攻击性法术,不过升到 30 级会有一个全游戏最厉害的终极攻击法术。
疾迦
  从流程上看应该是第二个同伴,法师型,会攻击和辅助型法术,专精火系。
  普通攻击是以火球术的形式,因此攻击的基准不是看 STR 而是看 INT。法师的 INT 都很高,因此她的物攻前期就很厉害,即使到了后期也很厉害,只是就少了连环击的可能。
  用天雷、刀刃等群体攻击法术来清杂兵不错。
史德比亚
  紧接疾迦之后加入。物防高的厚皮山猪型角色,在主角拿剑之前物攻也和其不相上下。可以在主力阵容HP不足的情况下轮换进来殿军。
  群体攻击型的必杀技在清杂兵时有一点用处。但这个游戏难度并不高,因此无论怎么用应该问题也不大。
亚妮斯
  加入很晚,因此等级一般一开始会落后很多。物攻高,物防也不算低,因此很快就能跟上队伍。
  作为格斗家,专精拳脚肉搏。能打出所有角色中最高的连击数,因此画面效果上往往很爽。
  在这里说明一下,普通攻击的连击数是随机的,有上限。主角和史德比亚的上限是 3,玟特应该是 2,而亚妮斯可以达到 4 或 5。至于必杀技的连击数则是固定的,一次攻击一定会打出指定的连击数。但必杀技的连击数会随着角色等级的上升而慢慢增多的。
樱子
  不能控制的角色,偶尔会冲出来帮忙。
  主要有三种攻击方式:一是放炸弹,会造成连击效果;二是发忍镖,可能会造成 1~3 连击;还有一种是一击必杀式的攻击,单击威力很大,而且带有必死效果。这最后一种攻击方式又分为单体和群体两种。
  她的攻击威力和连击数(炸弹),会随着游戏进程逐渐增大,恐怕是和主角的等级有关。

大致流程
  这里先写出主线的流程,支线流程还没有玩全,所以后面拿章节专门写。(我也不确定我会不会花时间把它们完全)
  第一次可以自由行动的时间,是救出玟特之后,混入王城之前。这段时间什么也干不了,可以到处转转看看。记得把玟特放入战斗队形中,免得第一仗时吃亏。回房间睡个觉,到了时间(3/2 07:00)就会出发了。
  进入王城监牢之后,会发现作战一次会用掉 0:10 的时间。不用担心,这里不会有太多的战斗的。一楼的右下监牢在靠近时有个事件,往右走会发现有结界。上三楼后右上房间内有王后,问过后去一楼念咒语破解结界。如果你和王后对话时没有注意看的话,——咒语是第二的一个。和天使对话之后,回游击队基地。在这一阶段大约升到 4 级就可以了。
  接下来会接到雷必疾关于调查水源污染的任务。此时的大地图还不能过桥,只有去上方山洞练功。差不多能在城下村买齐当时的最高装备之后,就可以下山洞的 BF3 打 BOSS 了。
  再出来,就可以过桥了。总算可以去东部探险了。先去树下的小镇,往上方走来得树下,对话后疾迦(不知道谁翻译的这些乱七八糟的外国名字)加入。去小镇东南方的森林内,一直往上冲,千万别停下,遇到山贼非礼史德比亚。别吝啬,把所有本事拿出来,打败山贼后送史德比亚回家(就在城下村),共进晚餐后她加入。四人可以进行战斗阵容的轮换了。
  接下来是一段练功时间,先只有在森林里面炼,里面的三个宝箱记得顺手打开。算准时间大约 06:00 或 18:00 左右来到大树下,可以开门进入。进入之前一定记得存盘。游戏在这里有个 bug,进入大树的第一次一定会出现地图资源错误,要读取进入之前的存档重来一次才行。要是没有存盘就惨了,所以在第一次进树前在门前先存个盘吧。大树里面的敌人比森林里的要强一些,而且讨厌的是都带毒,好在路线比山洞还要简单。等练级到经验值大约一万左右,就可以放放心心地去挑 BOSS 石头人了。不过接下来有一场主角与雷必疾之间的单挑,中间没有存盘的。所以如果单挑想赢的话(据说影响结局),还是把等级练高一点再打石头人吧。一万五左右的经验值打雷必疾没有任何问题了,除非你身上一点药都没有。
  打赢之后,游戏进入最开放的阶段。所有城镇都开始卖当地最高档的装备了。努力赚钱练级吧。同时,如果想多个同伴作战的话,现在应该开始触发亚妮斯的事件了(见后面的支线剧情部分)。练级的好地点,初期可以在森林。那里的敌人现在变成了大树内的那种类型,打起来有 72~2XX 的经验值。对了,最好顺便去一趟大树里面。上次打完 BOSS 之后,它旁边还有个宝箱没有开,可别放过了。后期练级可以去塔内楼下的地下通道,就在靠近楼梯口的地方练。这里的敌人相当强悍,最好是有了类似于「天谴」、「天雷」这样的强力群体攻击魔法之后,再去这里练级。否则遇上同时出现两、三个敌人,想跑都没什么机会。等练到可以拿普通攻击打这里的敌人的时候,就差不多可以出师了。如果想往后打得轻松,就一直练到这里的敌人打你都只费 1 点 HP 的时候,就可以傲视天下了。
  然后找个白天去城下村,会遇到司威特要求单挑。这是第二次单挑作战,对手可不是司威特,而是风天王。如果有好好练级,那家伙也就是一个笑话而已。
  打过风天王之后,可以去港口了。在港口酒吧会发生疾迦醉酒事件,在旅馆睡过一觉之后,06:00 左右可以步行混上船。抢船,打到最后,对阵希瑟。打完之后去火山岛,打火天王。打完之后,就可以去找天使,天使给主角祝福之后,就有拿剑的资格了。
  然后就是去塔里拿剑了。塔二楼上的装备很好,记得去买齐。然后从楼底的通道到另一座塔,打上 5F,进圣域见姆宁拿剑。拿剑之前还要跟自己的镜像打一架,用终极技可以轻松搞定。姆宁身后还有两口宝箱,里面也有终极装备哟,可别忘记了。
  回基地之后,决定要进行解救少女的作战。一路杀上二楼,挡住连续几次的进攻之后,直接上三楼单挑洁思敏。我真的不知道输了会怎样,我当时已经很难输了。
  最后的决战终于来了。找王后(还在老地方没挪窝,真听话)对话之后,有一件好装备留下。然后杀上四楼(楼梯口在三楼的正下方),从秘道进入魔界。进去之前先和希瑟干一场,这家伙物攻比大魔王还高?最后的大魔王先是召唤出水土风火四天王,一起招呼主角。然后是自己亲自上阵。说实话,它的实力让我很失望,只是皮比较厚,顶了我蛮长一段时间的。
  一切都结束之后,回到了游击队基地。出了基地就进入最后的结局选择了。选择「留住黎耶茹」就是和黎耶茹结婚的结局,或者就是选择和有完成事件的女孩的结局。在这方面,请参考后面的「支线事件」章节。

支线事件
玟特
  在第一次潜入王城之后,回基地休息一次,睡觉前就会和她有对话。击败水天王之后,回来休息,又有一次。然后保持大部分作战都有她参加。当地下研究所事件被触发时,希瑟这老东西会说玟特不是处女。逃出以后,又有一点剧情发生。在拿到宝剑之后,夜半时分在基地休息的时候又有两次剧情。然后就可以选择她作为结局了。
疾迦
  她刚加入之后,马上去旅馆休息,她会进来道歉(为了乱说话的事情)。在港口酒店闹事之后,回旅馆休息,她又会来道歉。之后,只要在火山岛迷宫的宝箱内拿到龙骨,就可以在回基地休息的时候发生剧情。然后就 OK 了。
史德比亚
  要注意的是,第一次进入森林之后,会听到动静。别停,一直往上冲,有宝箱也等会再开。否则中途一作战,MM 就会被山贼奸杀了。
  在得到天使的祝福前去拿剑的时候,去树下的小镇,准备好万元现金,在武器屋可以买到她的家传宝甲。然后可以在休息时引发两次剧情。第二次剧情之后,前往她位于城下村的官邸,便可以触发夺回宝剑的事件。这次可以狠狠海扁山贼头子了。拿回宝剑之后,再去官邸,就自动触发最终事件。
亚妮斯
  只能在每天 09:00 左右,去城下村找到她。
  第一次去大概一定要地图全开之后,最好在疾迦和史德比亚加入之后,但可能不是必须条件。
  第一次在城下村路口遇见亚妮斯受查理布斯的威胁;
  第二次要在规定时间内去城下村右上角(有地图切换,从右上角那个路口往右方边界冲)的修炼场,向亚妮斯解释误会;
  第三次还是在修炼场,见到亚妮斯被威胁的原因(怀疑其实是一张裸照,汉化的时候被改掉了);
  第四次在修炼场门口就逮见查理布斯,抓进来修理一顿。至此亚妮斯的烦恼已完全解决;
  第五次去修炼场,亚妮斯加入。(时间会经过十个小时以上,我怀疑原版中是H情节)。
樱子
  打土天王之后,风天王之前,开始和亚妮斯有接触之后,回基地,雷必疾会让主角去捣毁地下研究所。此即地下研究所事件。地下研究所内的敌人比大树内的要强,和船上的差不多,比塔底的要弱,可以作为森林和塔底之间练级的过渡地点。攻到 B3F,遇到希瑟,主角骗过他,直接冲过去破坏了研究设备,然后撤退,没有对希瑟的战斗。
  然后回到游击队基地,在走廊上会遇到女忍者樱子。来回走两趟又会遇到她。后来在夺船的过程中还会有一次对话。
  之后,樱子会在主角战斗的时候,偶尔从后面冲出来帮忙的。结局……,应该也有吧。但是据说因为中文版去掉H情节的缘故,樱子的大部分剧情似乎都被去掉了,于是,残念。
  不过,要说明的一点是:如果先让亚妮斯加入,再去试图触发地下研究所事件,那是徒劳的。
花黎
  如果在地下研究所事件触发以前,完全解决了亚妮斯的烦恼,然后回游击队基地见雷必疾,会引发解救港口少女事件。在港口打败三队士兵之后,会在马车中见到花黎。之后再去城下村的俱乐部,会见到她(不用花钱)。如果把俱乐部其他三组情节都花钱看过(花花公子啊!),就有相关结局。
  和樱子的加入条件一样,如果先让亚妮斯加入,就无法触发这个剧情了。至于先触发地下研究所事件对本分支情节是否有影响,还没有试验过,但最好按照:解决亚妮斯烦恼->见雷必疾->触发并完成花黎事件->见雷必疾->触发地下研究所事件->亚妮斯加入->解决地下研究所事件->樱子加入,这样的顺序来做,才是比较保险的做法。

2012-06-21

又开始写博客了

自从撤掉自己用 Drupal5 建的站点之后,一度希望把博文写在 Google+ 上。但渐渐地发现,SNS 就是 SNS,不管多长的字数也变不成 Blog。就好象 Magazine 就算连载了再多的小说,也变不成 Book。

现在的社会空前的浮躁,一不留神自己也浮了。发现稍微长点的文字自己是写得越来越少,也越来越没有思想。前两天看到一篇文章,作者讲述自己如何做到坚持每天一篇博文,深有感触。其实重点不在于写博,而在于对自己的要求和管理。希望自己也能更有效率吧。

因为墙内审查得太厉害,也太不透明,就只考虑墙外的 Blog 服务了。之前稍微试了下 WordPress,中文化太烂,而且丢了一次内容,让我很恼火。现在换到 Blogger 上,目前为止感觉还不错。

那么,第一篇就先这样吧。过去、现在和将来,都是我所关注的事情。以后可能会放一些旧文章上来,同时也会有新的出品。那些压箱底的旧文章,如果是有时效性的,我就设置回原来的时间了。