思维定势

思维定势
2010-10-26 23:36:44

QQ上下了几天连珠,暂时未遇败绩,每天中午胜十局。

不过积分还是负多胜少,输的分可能是年少无知的时候喂给高手的。

发现一个小规律:大多数人的棋路都一成不变。

我想对于一名不知道禁手规则的选手来说,记住棋谱是一件小概率事件。
可是在实际的对局中,在开局不变的条件下,如果我重复上一局的走法,大多数对手通常也会延着棋路重走一次上局中走过的落点。
这说明大多数人对于某个特定的局势,会形成一个定型的策略。
哪怕这个策略是无效甚至致命的。

前些天给大家讲敏捷大会收获的时候,说到了很多在领域中共通的迭代循环,比如空军战术中的OODA循环和SLG中的4E循环以及RTS中的微操作循环,还有敏捷中的迭代……
这些循环的共通之处就是在行动之后尽快的检测其有效性,并且即时进行修正。

对比4E和微操作就知道,大多数RTS高手实际上是一个很好的人肉迭代器。
而大多数普通人对于自己的行为缺乏及时的检测和修正,所以就导致了我发现的小规律:没有受过训练的选手会沿着一个既有的思维定势不加修正地一路狂奔直到输掉比赛。

是不是所有的”定势”策略都是有害的呢?

这涉及到对策略的评估方法和频率。
比如“敏捷”这条策略本身也是一种定势,对于瀑布模型来说有优势,但也需要针对实际情况进行取舍调整。

更明显的,棋类游戏中某些定势是必须记住的。
比如连珠中执黑必胜的花月局和浦月局,以及执黑必输的游星局和彗星局。
再比如用于攻击的“梅花”和用于防守的“八卦”。

对于这类经过推演证明有效的定势,自然要多学多用。

棋谱中归纳的定势和思维中习惯形成的定势,其差别在于是否经过了系统的反省,归纳和总结。

做事的动力

做事的动力
2010-10-22 23:03:28

几个月前,拿到工作用机的时候,尝试在Win下安装QQ未果。
点击安装文件后,反复收到一个未能在某路径下找到QQ点什么什么点msi的文件的错误。
因为经常挂的IM都能用Pidgin登录,平时也不上Windows,更不常上QQ,就把这个问题放下了 ,不用就是了。

前些天某个午休,妹子偶然要求陪她下棋。
切到Win下面才想起来其实还没装上QQ……

……那就把它装上。
错误再次重现,这次看清楚了,那条提示是“未能在Administrator的Local Setttings/Temp下找到某msi文件”……
原来如此。

因为俺的习惯,拿到一台Win机器后首先禁掉了Administrator……所以我用来登录的帐号不是Administrator,所以那个安装文件也就根本木有向那个目录写东西的权限,所以也自然不会在那个目录下发现所需的文件。

找到了问题的根源,解决起来也就轻而易举了。

装上QQ,又发现QQ游戏被屏蔽了,换了几个端口依旧失败……
不过我有VPN……

行吧,问题都解决了~

不过此时妹子已然午睡去鸟
T. T

好吧,这件事给我的启示是:

某件事没作成,很可能是因为没有真正的动力。

互联网将在“用户体验”中迷失

当下IT业内什么职业最火呢?产品经理。这一现象背后反映的是越来越多的互联网公司注重用户体验,并且想把这个作为自己的核心竞争力。说白了,谁是赢家,取决于用户,谁更好地满足了用户需求,就能笑到最后。可是,产品经理在IT行业还真是算一个新兴职业,但做的事情可不是现在才有的。只是现在大家都无比重视这块,觉得独立出来一个角色对业务更有帮助罢了。既然现在竞争的比较优势是了解用户需求,我想问个问题,下一个竞争的比较优势会出现在哪里呢?

IT业界的故事往往要回顾着看。什么工种被议论,往往说明整个产业的关注点在此。看看以往,程序员作为IT业最开始火的的工种,说明那时候需要完成的工作太多,是一种聊胜于无状态,只要有人能干活,东西能跑起来就可以。这个时代就好比我只是蛋糕师傅,我不需要费心思,因为我的客户非常饥饿,只要有吃的就可以。后来呢,有了需求分析师,架构师,数据库管理员,这个阶段大家不但要做出东西,还要做得象点样儿,不能太破烂。我这个蛋糕师傅面对一些不那么饥饿人,质量自然得提高一些,况且对面别人也开了个蛋糕店。于是我开始琢磨蛋糕的花样儿,款式,定价,量产等问题,确保自己立于不败之地。现在产品经理主导了。蛋糕店的第一个产品经理就是我自己啊,我深入用户那里,调研用户行为,做大量的A/B测试,画了无数的蛋糕原型给用户体验,以神农尝百草的精神尝试各种新的香料,去法国学习最流行蛋糕的做法,量产自己的产品。从用户的角度来看,三个阶段,分别叫做能用,可用,好用。那么竞争过了一段时间,我们还能给用户什么呢?简单来说:适用。

很多公司的产品经理都有过这种经历,好端端的想法,执行的时候变了样儿,交代了个A,team听了个B,做出了个C,争吵之后交付了个D。任凭你产品经理的A/B做得再牛,分析报告写得再漂亮,发现都卡在研发团队的理解能力上了。其实这只是表面现象,而且我觉得这是件好事,能够发现这个问题的产品经理说明很多别的重要问题都解决得相当不错了。毕竟知道自己哪里痛是种犹如先知般的能力。大家也想了很多办法去解决这个问题,当然了最重要的是寻找原因。大家对找到原因一般很难有共同认同。Team自然不认为是自己能力问题,他们认为什么呢,进度太紧,技术可行性太低,人手不够,产品经理表达不清晰,多任务,这些都是原因样板,你的团队选了哪个呢?产品经理抱着自己PRD,更加不肯低头,放下狠话:“照这个做,早就牛X了!”若是我们对问题都不能有基本的认同,又怎么可能去共同解决问题呢?

这里发散思维一下,请大家想想张无忌为什么能在那么短的时间炼成乾坤大挪移。(什么?你没听说过这门武功?那你的人生真的有遗憾)张无忌光明顶胜出的比较优势是什么?对,他练过九阳神功,崔动任督二脉,这就是他的比较优势。他的内功才是最根本的优势。IT何尝不是这样呢?你会调查用户需求,别人也会,你能做A/B测试,别人也能。你先做了,别人可以模仿你。这些都构不成你的长远比较优势。是不是某种内功的缺失导致上面我看到的种种问题呢?如果是的话,那么这个时代,或者下个时代的内功是什么呢?

让我们参考一下别的行业历史,或许能给我些启示。当莱特兄弟制造第一架飞机的时候,发动机是个大难题,想制造飞机,就得自己动手改造。这就是一个“能用”阶段,发动机在这个时代要是能用,就会有市场。后来,随着战争的到来,相应的,航空发动机顺利地进入了“可用”,“好用”阶段。普惠公司(Pratt & Whitney)也发展成了大公司。战争结束后,民用航空业大发展,就像现在我们的互联网事业蒸蒸日上一样,普惠发现不仅仅自己懂得用户,RR、GE也不差,怎么才能和他们死磕呢?普惠苦苦不得其解。最后丰田点播了普惠,告诉他要修炼内功。理解用户需求是乾坤大挪移,上乘武功,但是怎么才能练的好,理解就完事儿了么?显然不是,大家都叫嚷着要创造用户价值,理解用户只是创造用户价值这个长长的链条的开始。说白了,产品经理职位的火热说明互联网还处于蓬勃发展的初期,什么时间开始真正注意这个链条本身,说明这个行业逐渐走向成熟。

可能这么说很难让人服气。我们来看一个例子,jetBlue是个廉价航空公司,在制定新的系统的时候,Toughtworks的工程师不是把需求带回去,过三个月按时交付。而是和客户坐在一起,你说吧,哪里不满意,马上改,立刻你就能在屏幕上看到改变。jetBlue自然觉得非常爽,交付的速度也可想而知。这里不是做广告。但是我要说这是趋势。当我们非常快的相应客户需求的时候,随之而来的是我们的业务模式的改变,会逐渐切换到“适用”的层次。为每个客户定制,个性化,这是我们以前想都不敢想的。为什么呢?成本问题,为每个客户定制,成本巨大,甚至这个数字巨大到根本不必要讨论收益的程度。那么这个时候大家就要低下头,看看自己到底是那个内功出了问题。

互联网总有一天要进入白热化的竞争阶段。现在已经显现的例子就是团购网站。哪个团购网站能活下来?这似乎是所有看热闹的人最好的谈资,因为大家都知道很多要死掉的,那么谁能活下来呢?找一个好的产品经理,就能活下来么?我想所有像样儿的团购网站都有不错的产品经理吧。这个时候就好比围棋进入白热化阶段,比的就是气,比你多一口我就活了,你就死了。产品经理这种造势的工具这个时候就不灵光了。

我们在白热化时代,需要现场管理,目前来看所有成熟行业,都经历了注重技术,注重客户,注重管理的逐渐成熟的过程。一旦互联网竞争炽热化,管理的作用就会凸现出来,形成比较优势。管理可以提高效率,降低成本的事实被多数互联网企业置若罔闻。因为他们现在根本不缺钱,你和不缺钱的人怎么来讨论节省问题呢。可是要是这么想大家或许会平衡些,不缺钱的企业有的是,怎么在最后胜出呢?施乐,是不是一个IT公司呢,是不是一个互联网公司呢?很多人都觉得勉强算是IT企业,不能算是互联网公司。事实上施乐对互联网的贡献不比任何别的公司少,最后又怎样呢?还不是落魄了。要知道当年的施乐根本看不上其他业务,因为高速复印机的业务实在太赚钱了。大家现在知道了钱不是问题吧,等你没钱了才是问题呢。

随之而来的问题是,什么是现场管理,怎么做现场管理。为了避免抽象的说,我们来看看现场管理的目标是什么。现场管理是要消除软件研发,交付,运维过程中的浪费,有几个大家都看得见指标,交付时间,平均无故障时间,修复时间。都是时间测度,对于我们人类来说多友好啊,没有什么诡异的KPI,好不好立刻看得见。看得见问题,都看得见问题,大家才能对问题产生共同的认同。为什么大家原来对原因的说法各种各样,为什么大家对1+1=3都能清楚指出错误所在,因为缺少让大家认同的问题发现方法。德鲁克说,测量什么则能改进什么。大家对问题都是凭自己的感觉,而不是有效度量问题,发现问题,解决问题,自然很难产生相同的认识。大家都拿着自己虚无的尺去寻找最短的那块木板,自然是徒劳的。

如何让大家意识到浪费,则是现场管理的核心工作所在了。现场管理要改变的是环境,更是人,要所有人都能发现问题改进问题,形成良性循环,才能形成一个持续的动力。以前我们注重不断跟随用户,以用户为我们的动力,现在可能大家要“慢”下来,构建一个自己内在的驱动力。

现场管理得益于精益思想,随着我们解决问题的不断深入,我们会发现,很多我们原来不认为是浪费的事情,现在变成我们一定要消除的症结。比如原来熊杰讲,没有编译,测试,发布的代码都是浪费,我就很难理解。随着自己的深入实践,发现的确这是非常有道理的。要记住原子弹发明以前,几乎没有人相信那东西有能量,更别提建核电站发电了。

现场管理的实践还要有很多路要走,IT的现场管理也处于起步阶段,但这没有关系,谁不是从婴儿过来的呢。如何有效的现场管理,有着很多争论,但是大家公认了一些浪费形式,比如没有能力完成的需求分析,没有测试的代码,不会发布的功能,等等…… 现场管理的人才估计下个阶段会非常紧俏,就好比现在的产品经理。你看看,现在招聘产品经理都要求有2+互联网产品经理经验,但是估计两年以前绝大多数公司都没有这样的职位,这些人是哪来呢?呵呵,从现在修炼成现场管理大师,到时候你也有2+经验了。

现场管理不是一种形式,不是一种新的流程,而是一种修炼。

我看人妖—《人妖之间》读后感

我看人妖—
《人妖之间》读后感

这部三万多字的报告文学是在GOOGLE没有退出中国之前,偶然得到的,整整一个春节,它都在我新买的8手IBM X41T里,我背着它从哈尔滨的冰天雪地一路来到三亚的温暖沙滩,期间到处听到的都是东北炒房团炒高三亚房价的消息,同行的叔叔也以激动的热情希望投入到这个看似只涨不跌的游戏中来。而我却显得格外的冷静,因为我知道,一个爷们,一旦降生,就会承受着某种责任,而现实社会赋予所有爷们的两把枪,除了用来征服右手和女人以外,还有世界本身,以及他从哪里来,他要到哪里去的古老命题。

三十年前,在我还没有降生在这个世界之前,有人以宾县曾经发生过的事情为蓝本,写了这部叫做《人妖之间》的报告文学,看文章的结尾上标注着(原载《人民文学》1980 年第一期),大抵可以猜测,这的确是应该是部曾经印刷成铅字的文章,但后来在网上几经查找,虽然那时GOOGLE还没有退出中国,虽然有问题也可以问百度,但却始终没有找到这部作品的下载版,后来某位与某位同学聊天谈起,他以牺牲自我的神经,将这部作品“传播”给我,或许这个过程已经被某些看不见的手所记录了。

文章开头所描述的县委大院虽然是六十年代的事情,但与今天已然没有什么变化,身为纳税人的我们,如果想去身为我们公仆的他们那里办事,忍受的不仅仅是工作人员的冷若冰霜,还有“看门狗”的白眼,仿佛我们是妖怪一般。而六十年代初的那场全国饥荒饿死的人不计其数,当农民吃着从柞树叶、苞米叶和苞米棒子的碎渣里筛出的“淀粉”制成的代食品时,县委书记的孩子却在大街上拿白面肉包子打狗玩。——原文

朱门酒肉臭、路有冻死骨,几年百年来,这样的轮回在一次又一次的人妖大战之间周而复始,几年前看过一个以雷锋为主题的记录片,看过之后满心感慨:还有多少历史可以用来欺骗?原来我们小时候所学的一切,无非是统治阶级的宣传工具罢了。还记得小学时候《政治》课本上写着:美国资本主义资本家之恶毒,是无法想象的,他们为了利润,宁可把牛奶倒入田地,也不给穷人喝!当时的爱国主义情绪油然而生!心中默念:打到美帝国主义!短短15年时间之后,我们不但往田里倒牛奶,我们连奶牛也一并杀了,再后来,我们就用牛奶开始杀人了。

前几日与一长者一起闲谈这部作品,长者言:那个年代,人与妖还是可以比较容易分别出来的,人就是人,妖就是妖,而今,人虽然进化了,但妖却进化的更快,现在不但人有爹妈,妖也有了爹妈,所以就出来了人妖。人混在妖中分不清楚自己是人亦或是妖,妖混在人里,伺机榨干人类的最后一点净血。

光标停留了好久,不知道怎么继续将这篇东西写下去,前些天跟我父亲也探讨了这篇文章,我当时说想写篇读后感,被父亲制止,后来又征求了一位长者,长者叮嘱,写了千万不要放在网上,因为作者已经被开除党籍,就不要再对他的文章有所评论了。
如果不能放在网上,我为什么还要写它呢?

想起一个笑话,西游记里,没有背景的妖怪,都被孙悟空打死了,有背景的妖怪,都被领导收复回去了,至少是可以活命了,难道这就是我们人与妖的最后出路吗?和平共处?相安无事?再又看了一遍此文以后,不仅要问:人向哪边去?妖从哪里来?

Euler-{18,67}

http://projecteuler.net/index.php?section=problems&id=67
典型的动态规划。
原先在手机里写的,
跟机器一起丢了……
补上一个 T^T

?View Code PYTHON
#Python的解
dat_lines =  [ map(int, l.split(' ')) for l in open('triangle.txt').readlines() ]
dat_lines.reverse()
 
for i, l in enumerate(dat_lines):
    if not i:
        continue
    else:
        for ei, ev in enumerate(dat_lines[i]):
            dat_lines[i][ei] += max(dat_lines[i-1][ei], dat_lines[i-1][ei+1])
 
print dat_lines[i][0]
?View Code HASKELL
module Main where
 
acc_l [] (o1:[]) = []
acc_l (c1:cs) (o1:o2:os) = ((max o1 o2) + c1) : acc_l cs (o2:os)
 
main = do 
    lns <- readFile "triangle.txt"
 
    let real_lns = map (\l -> [ read x::Int | x <- words l ]) (lines lns)
 
    --Haskell里头列表项的值是不可变的,用foldr做累加。
    print $ head $ foldr (\nl ol-> acc_l nl ol) (last real_lns) (init real_lns)
 
    return ()

关于Git的一点点忠告

周六的时候做了一个关于Git的讲座,其实我觉得每次讲座过后我自己都有很多进步,会暴露一些自己弄不懂的问题。这些问题可能原来自己并不在意,或者压根就没有研究过,在于别人的交流中这些问题都一股脑的蹦跳出来,让人无所适从。好在我脸皮比较厚,不太在意,这也体现了最近书中所学的“暴露缺点”的武林秘籍。

一个核心问题就是Git做分支太容易了,容易到了足可以影响到开发方式和开发习惯。这里罗嗦两句,说说量变到质变(以下省略一千字)。不过有个具体的例子还是和这个非常像的,那就是科学家用计算机证明了“四色猜想”,以及群的分类理论。啊哈~ 科学家把某种形式的证明变幻做了另外一种形式的计算,只要结果是什么就能证明什么。好吧,可能你有点晕了,简单来说只要你吹气超过20就证明你酒后驾车。

其实SVN做分支也是相对比较容易的,只不过checkout的时候很痛苦。Git的分支功能还是目前为止最高效的,因为git的分支,压根就不copy代码。总是觉得SVN在这点上非常让人难以接受,为什么Tag,分支都是目录呢?!更加可气的是居然还要复制。复制也就算了,居然还不记得从哪里来的。反观Git的分支实现,无非就是新建一个标记,几乎没有什么代价,所以大的项目也可以轻松的分支。Git会记录每个版本的来源,若是一个合并的节点,Git会保留合并的双方。这就是很多用SVN的同学要我演示若是已经合并了某个分支,对其再次合并会怎么样,哈,Git的给出的答案和正常人的想法一样:什么也不做,以为已经处理合并了,相关的冲突也解决了。这也是我为什么喜欢Git的一个原因,没有什么惊奇(最小意外原则),换句话说要是我设计Git,我也会这么做,自少在用户接口方面会这样做的。再次重申,我十分厌恶把Tag,分支和目录混为一谈。

很多人使用版本管理工具的功夫都是欠火候,不是因为他们记不住命令该如何使用,Git的最常用命令有21个,很不好意思,如果有人要我列举的话,我是答不上来的,我得看手册。这个问题有点怪怪的,哈哈,就好比我曾经问过好多天天写C程序的资深开发者:“C语言有多少关键字,请列举一下”,能答上来一半的就算多了。但这并不影响他们对每个关键字的理解。纵使你记住了全部32个关键字,大部分人还是写不出来什么像样儿的C程序。Git的情况也很类似。很多人知道如何分支,但不知道什么时候该分支,都会merge,但是不知道谁合并谁,由哪个角色来做,可能还有人会rebase,但是经常在不该用的时候用,结果就是一团糟。版本控制不是游戏,也不是随性的玩具想怎来就怎么来。我在讲Git的时候一再强调尽可能的分支,主干上尽可能就是合并的结果,尽可能不用rebase。当然这些都是些经验之谈,也没有觉得的准则,具体情况不同还是要具体来看。我只是希望大家不要把Git只是简单的看作一个工具,其实它是改造我们开发模式的一个实践。

我小学的时候老师给我们讲了一个故事(多半估计是杜撰的):一台非常精密的仪器坏掉了,现场的工程师怎么也找不到问题出在哪里了,挣扎了许久之后向一位这个领域的专家求助,专家到现场之后看了看机器,又要了图纸,沉思许久之后,在图纸上画了一条线。现场的工程师果然按照这个指引排除了故障,问专家的报酬是什么,专家回答说1000美元。很多人都觉得特别贵,觉得就画一条线根本不值,专家解释说:画一条线值1美元,知道画在什么地方值999美元。当年我十分单纯,记住这个故事纯粹是因为里面有好多钱,在我儿时那绝对是天文数字。现在想来我们的老师即便是杜撰了这个《读者》风格的故事来激励我们好好学习出人头地,我也十分佩服我的老师,他清楚的预见到了现在的社会故事中的价值观已经成为普世的了。我是想借着这个故事告诉那些整天琢磨奇技淫巧的程序员,知道怎么用Git并不重要,知道如何让Git提升你的项目管理水平才是最有价值的。

openduckbill对应新版pyinotify补丁。

openduckbill是Google开源的一个小文件同步工具。

其依赖于pyinotify提供文件变化监测。

在Ubuntu10.04下面使用easy_install安装的pyinotify的版本是0.8.9
openduckbill 最后一次更新是在2008年对应的是pyinotify0.7,不过这之后pyinotify代码有了变化,需要在openduckbill中进行相应修改。

欲与pyinotify新版本使用openduckbill-1.0.0.tar.gz 需打入以下patch:

diff -ruN openduckbill-1.0.0/src/daemon.py pdir/src/daemon.py
--- openduckbill-1.0.0/src/daemon.py    2008-02-20 19:41:41.000000000 +0800
+++ pdir/src/daemon.py  2010-10-12 11:49:07.863957042 +0800
@@ -1,4 +1,4 @@
-#!/usr/bin/python2.4
+#!/usr/bin/python
 
 # Copyright 2008 Google Inc.
 # Author : Anoop Chandran 
@@ -334,10 +334,10 @@
 
     avail_events = pyinotify.EventsCodes
     # Events to be monitored.
-    eventsmonitored = (avail_events.IN_CLOSE_WRITE | avail_events.IN_CREATE |
-                       avail_events.IN_DELETE | avail_events.IN_MODIFY |
-                       avail_events.IN_MOVED_FROM | avail_events.IN_MOVED_TO |
-                       avail_events.IN_ATTRIB | avail_events.IN_MOVE_SELF)
+    eventsmonitored = (avail_events.OP_FLAGS['IN_CLOSE_WRITE'] | avail_events.OP_FLAGS['IN_CREATE'] |
+                       avail_events.OP_FLAGS['IN_DELETE'] | avail_events.OP_FLAGS['IN_MODIFY'] |
+                       avail_events.OP_FLAGS['IN_MOVED_FROM'] | avail_events.OP_FLAGS['IN_MOVED_TO'] |
+                       avail_events.OP_FLAGS['IN_ATTRIB'] | avail_events.OP_FLAGS['IN_MOVE_SELF'])
     # Start a event watcher
     event_watcher = pyinotify.WatchManager()
     # Create a event processor
diff -ruN openduckbill-1.0.0/src/openduckbilld.py pdir/src/openduckbilld.py
--- openduckbill-1.0.0/src/openduckbilld.py 2008-02-20 19:41:41.000000000 +0800
+++ pdir/src/openduckbilld.py   2010-10-12 11:49:41.927943049 +0800
@@ -1,4 +1,4 @@
-#!/usr/bin/python2.4
+#!/usr/bin/python
 
 # Copyright 2008 Google Inc.
 # Author : Anoop Chandran

Blade

bladewang这个ID是为了向swordlea前辈致敬,他为我在程序员的职业生涯中树立了第一个榜样。
有一句话说,学习编程的过程就是:寻找大师,追随大师,成为大师。
我一直认为swordlea是我遇到的第一位大师。

李哥是东北最早的Crack之一,C++,C,ASM功底深厚,Windows系统底层的开发经验丰富。

但李哥给我的最大的启发并非是技术上的,而是向我展示了编程和解题的趣味。

比如时常进行的对联大战:

迅雷不及掩耳盗铃之势如破竹篮打水一场空
有目不识泰山北斗之尊古卑今朝有酒今朝醉

上联是李哥出的,估计是出自灵感。
这个联太难了,下联是我用一个脚本从stadict的汉语成语词典里搜出来的……
……

古人云:
不为无聊之事,何以遣有涯之生?

djvu2pdf

djvu格式貌似在很多方面比pdf要强,而且在Ubuntu默认安装的evince直接就能读,所以通常也不许要进行格式转换。
但是在移动设备上面,貌似还是对pdf的支持比较好,恰好有篇paper是djvu的,想利用车上的时间看完喽,于是就有了转换格式的需求。

直接在源里搜djvu,发现了djvulibre-bin这个包。
安装之后,可以通过 djvups 这个命令将 djvu格式的文档转换为ps格式的,之后就可以用ps2pdf得到相应的pdf文件了。

ps2pdf在Ubuntu10.04桌面版上已经默认安装了,如果在系统中木有发现ps2pdf,可以安装 texlive-latex-recommended 这个包。或者 apt-cache search ps2pdf 查找一下所需要安装哪个包。

# djvups
apt-get install djvulibre-bin &&;
 
# ps2pdf
apt-get install texlive-latex-recommended &&;
 
djvups $FDJVU $FPS &&;
 
ps2pdf $FPS $FPDF

PS1:
不知是否参数的关系,我得到的pdf比djvu原文件体积大了8倍。
另外ps2pdf这一步比较耗时间。

PS2:
其实很容易的说,不知为啥上次有这需求的时候没搞定。。。

PS3:
另外大家也可以搜一下 chm2pdf 这个软件,很实用。只是转换时某些书的目录排版会乱掉。不过正文部分还是很完美的 :)

和Richard Stallman共进午餐

这两天安全焦点峰会2010,都是一些熟识的面孔。不过比较有新意的是开源教父Richard Stallman的出现。讲了两个题目《软件专利的危害》,《自由软件运动》。Stallman语速和发音非常像VOA 的 Special English,缓慢而清晰。诸如专利阴谋,PNG等一些故事非常引人入胜。最搞的是这个老头,穿上他那行头,如圣者一般要拯救那些不自由的人们,the Church of Emacs,哈哈,当然了他也要拯救那些使用VIM的人,让他们得永生,嘿嘿。

有一个拍卖环节,一本《Emacs手册》,一个GNU吉祥物玩偶,我非常想要那本手册,无奈现金不够,被一个绿盟的哥们300大洋买走了,还有签名。我问Stallman要一个签名,他不肯,认为要签到有意义的东西上。靠,我真的没有Emacs手册啊。

不过好在我脸皮和口语都非同寻常,那就一起吃饭聊聊吧。才知道这个家伙已经来中国差不多10次了。席间我们深入探讨了很多问题,我简单记录一下

1. 中国很多大学规定提交作业使用非自由软件格式无异于把学生都放入了监狱。

2. 我真的被他纠正了一次“不是Linux,是GNU/Linux”。

3. 鼓励我参加中国的自由软件运动,据说据点是哲思,但是天地良心啊,我在哲思真的好久没看见这样的活动了。这个有别于为自由软件做贡献,不是提交代码,而是参与推广自由软件思想。

4. Amazon很邪恶,不要在上面买书,尤其是电子书,可以从自由软件基金会买,承诺不记录用户信息。

5. 他从去年开始不参加Emacs的开发了,交给别人维护了。

6. FSF现在已经不提供对自由软件项目的资金支持了,也没有雇用员工在自由软件项目,也不知道我是不是理解错了,不过他的语气非常肯定,告诉我现在和以前不一样了。那FSF的钱都花哪里了呢?

7. 诸如他对Microsoft的开源项目的看法,以及IBM这种拥有大量专利的巨型公司支持自由软件的看法。一句话概括他的观点:微软的是阴谋,IBM毁誉参半,相互影响。

8. 自由软件公司的盈利模式,比如提供商业支持,培训,他是非常赞同的。

这是第一天的内容,这个家伙第二天主动做到我的桌子边和我吃饭,估计是聊得还算投机吧。第二天的内容如下

1. 我和他交流了一下对传统出版物的自由的看法,诸如书籍,CD等等。他将这些东西分为三类,每一类有所不同,就是按照需求的层次不同。比如说标准,算法,规范,字体(font),用于教育的相关方法等基础的东西都应该是完全自由的。后两类没来得及深入讨论因为这个家伙要去赶去深圳的飞机。

2. 我表扬他会使用筷子,这哥们还真是爱表演,立马说原来会用一只手使用4只筷子,并立马表演给我看。很是有趣。

3. 自由软件会不会带来更多的剽窃,抄袭。他认为这个不是自由带来的问题。
Stallman是我接触过的第二位世界级大师(第一位是Matz)。有个性,对自己的信仰虔诚的一塌糊涂。在此真心希望自由软件运动越开展越好。