Shell's Home

Oct 11, 2012 - 1 minute read

国庆堵车

国庆堵车的原因 国庆堵车,乃至一切国庆拥堵的原因,是16亿人的时钟被调整到了同一节律上,除此之外别无其他。在国际上,大型节假日也会堵车,费用涨价,这不是什么值得大惊小怪的东西。要说中国和其他国家的区别,主要是三点。 大量的劳动力离开农村,来到远方的大城市谋生。他们希望有足够长的假期回家和亲人共渡。 中国的三大运输行业,主力的铁路还处于计划经济时代,公路则有巨量的过路费。飞机对于大多数人来说不是一个合理的选择。 中国的道路设计和运行,是按照收费状况来进行的。本次假日,价格降低了。 细分市场 对于解决国庆拥堵,市场经济下的标准做法有两种。 一种是保持免费,由质量的下降来控制人数。 第二种是增加价格,让部分人不愿意出行,换取通行畅通。 通常来说,我们更愿意取后者,因为堵塞在路上并不会产生经济效益。而增加出行价格不但会产生直接的经济收益,而且会让部分去不了的人做其他更有意义的事情,而不是呆坐在车上发呆。这种机制叫做市场价格机制。更进一步,我们可以根据出行时对拥堵的接受能力,分割出不同的市场。让愿意接受堵车的人便宜出行,不愿意接受堵车的人付费。这种方法叫做细分市场,即,对于市场的供需状况发生明显变化的区域或者时段,或者人群,采取完全不同的价格策略和服务策略。这样会优化资源配置,让不同的区域/时段/人群获得他们希望获得的结果。 然而,无论哪种方案,都不可能采取反向措施。在高峰时期降低出行价格,让拥堵的道路更加拥堵。本质上说,国庆道路拥堵是由于定价策略根本错误所导致的。他们细分了市场,可是针对高需求市场提供低价策略。你能抱怨发生短缺么?而很多人居然还抱怨到,”不敢占国家便宜了“,”高速收费有理“。对于后者,如果加上高峰时期的限制,我觉得还没说错。对于前者就是彻底的无语了。 同样的市场策略不解还发生在非常多的日常问题上。我曾经提出过分流解决市内经济拥堵的方案,包括非高峰期和高峰期的地铁和出租车价格差异化。很多人都表示不理解。我觉得在经济层面理解这个效应没有任何困难,只要你想想就能明白。简单来说,就是对市内拥挤时期和非拥挤时期差别定价。例如平时公交0.8,高峰期公交1.2。平时地铁3元,高峰期地铁5元。 从市场角度说,这很明显的会压缩高峰时期出行人数,缓解高峰时期的交通工具拥挤现象。而且这个方案并不难实施——地铁和公交基本都是刷卡收费,对收费装置改造,让不同时间收费不同价格并不困难。出租车更是本身就支持这个功能。作为一个合理的驳斥,你可以说这个方案有明显的缺点。这个方案会使得更多的人偏好在高峰期自驾出行,从而加剧道路拥堵。 然而抱怨”太复杂了“,”没道理“,都是属于无常识的。如果说复杂,出租车系统是如何支持夜间收费的?如果说没道理,你为何不投诉出租车夜间费用机制呢?还有个朋友坚持认为,无论票价如何变化,出行人数应当不会有太大变化。用术语来说,即,交通需求的弹性相当小。然而我很简单的问了一个问题,如果是这样,当交通免费的时候,乘车人数应当如何变化?她想当然的说——当然是不怎么变化。旁边另一个朋友同时也说,广州发生过这个事情,地铁瘫痪了。场面顿时冷了下来。 和我讨论的人中,有八成以上的人直觉的反对这个方案,却给不出合理的理由。大多都只能说,太复杂了,搞不起来,没道理。我知道你们的想法——八成的人都需要在高峰期出行,这个无疑是在加剧他们出行的成本。然而,城市的出行费用并不是单方决定的,这是一个供需问题。虽然我没有量化数据,然而根据我对目前状况的分析,我觉得正确的票价不但不会上升,反而应当下降。在高峰时段,我们的出行人数略高了。然而在非高峰时段,我们的出行人数可是远远不足。对此应当采取低票价,鼓励可以调节时间的人在非高峰时段出行。只要非高峰时段采取了低票价,高峰时段人数过多的问题也会适当缓解。 当然,这个方案也有固有问题,即自驾车的问题。从鼓励公众交通考虑,我们应当降低公共交通费用,甚至免费。然而从良好服务考虑,我们又应当调控公共交通费用。这是固有矛盾,没有什么万能的解决方案。比较好的方法是增加自驾出行成本——例如扩大高峰期非上海牌照限行范围(不过这又会拉高上海牌照价格),或者对市内拥堵路段ETC收费。然而,只有几个人,很合理的提出了自驾出行的问题,我认为这是一种理性的,经过思考的讨论。虽然大部分的80后的应当学过经济学,可是能够使用经济学,进行理性思考的人为何寥寥无几呢? 黑洞无毛 同样还有改善高峰期出租车数量的方案,高峰期时段牌照,也是基于细分市场定价。基本思路是发放针对高峰时期的特殊牌照,拟定不同的价格,使得高峰时期牌照的回报比比普通牌照略高一些。按照市场原则,很多司机可能放弃做普通出租车司机,而只开高峰牌照。这样会带来三个好处。 高峰时期出租车增加,打车容易。 平时出租车减少,减少浪费。 只开高峰车的师傅,完全可以在空下来的时候做别的事情,例如开网店,或者导游。 同样是个有各种好处的事情,收到的驳斥意见非常多。有人给我说了一通历史原因,然后分析当政者心理,总结为什么不可能。我觉得虽然这和市场没关系,然而这个分析本身还是有道理的。有人直接扯上了毛泽东时代如何如何,我直接闭嘴了。您要么看我的一篇《回到毛泽东时代》,看看您是不是真的愿意回到毛泽东时代。 其中说历史原因的人非常有意思。他说出租收管理费贵,主要是两个方面原因。一方面,是上海政府大量收取出租管理费作为政府开销。另一方面,则是早年出租运营公司在牌照上都是赔钱的,不让他们赚钱他们不干。 纷纷扰扰的原因,让我想起天体物理学的一个很重要观点——黑洞无毛。 黑洞无毛,意思是黑洞的外界性质,只有重量和角动量。两个重量和角动量完全一致的黑洞在对外上应当不存在区别。因为你既不能通过光观测他的表面特性,也无法做其他信息传出。这相当于一个从现实空间割裂的独立空间。唯一能证实其存在的特性,只有万有引力造成的空间扭曲。 而从经济分析角度来说,一个项目的经济学特性其实也只有一项——风险下的投资回报比曲线。当然,也许不止这一项。我不是经济学专家,所以并不清楚是否还有其他需要考虑的特性。然而,任何能够转化为上述特性考虑,并不引入外部性的特性,就不要出现在我的桌面上了。 不同投入资产,在不同风险级别上,会产生不同收益。虽然没有人精确测量和描绘过这条曲线(说曲线并不准确,绘制出来的话应当是一个面),然而我们都在无意识的使用这个观点。我们经常说“项目风险”,说的其实是投资回报比在XX以上的概率有多大。如果你不介意将投资回报比降低到近乎于无穷小,任何项目都是近乎于0风险的。我们说“低风险投资回报率“,指的是这个曲线在低风险情况下,在普通投资区间的平均回报比。我们说”公司价值“,”项目价值“,其实并不是指项目有多少资产。相反,我们是在评估,这个投资回报比的项目,某一个份额的转让市场价格是多少。 现在,我们可以说回到出租车牌照的问题。出租车牌照问题,我们可以认为是一个项目。而这个项目,无论是历史原因也好,还是什么其他的也好。其实都只是对他的未来回报曲线产生影响。我们可以抛开到底这个问题是什么的问题,转而专注另一个问题——当你最终存在了一条投资回报比曲线——可以是任何曲线——细分市场是否能够对这个市场产生影响,得到更优化的资源配置? 这个当作思考题,大家不妨考虑一下。 公平 国庆交通的另一个话题,则是有人说,中国解决了这么多人的交通问题,这是一个创举。英国的铁路是私营的,然而资本家完全没有改善铁路的打算,铁路依然破旧。网络购票问题本质是铁路运能不足,要加快铁路建设,等等。 我先不说英国的铁路到底好不好的问题,仅仅说另外一个问题——到底是谁?决定要不要修建基础设施。 私营老板出钱 我们知道,基础设施是要花钱的。如果是私营,这笔钱必然是老板出,然后转嫁到客户头上。他自然会考虑,是否可以愿意承担这个费用。如果他们觉得客户愿意承担,那么他们会修修看——同时将修建费用合并到票里面,卖给客户。如果客户不愿意,他们当然不会冒着亏本的危险自作主张。——当然,着有个前提,就是私营老板并没有垄断铁路业。 国家出钱 而如果是国家出,一样是转嫁到客户头上。如果不行,客户数量不足,就会转嫁到每个纳税人——即,你,或者我——头上。 问题来了。不是每个人,包括我,都需要大量使用铁路交通的。与其修建那么多基础设施,来增加高峰期运力。不如降低火车票价来的有吸引力。如果国家修建,然后由纳税人均摊,其实这是不公平的。 实际上,我可以肯定这个花销是无法由客户均摊的。如果可以的话,铁路系统为什么不自己组织修一条线呢?这固然是因为铁路修建的拆迁工作需要当地政府的大力配合,另一方面,也是因为铁路系统并不确定是否能在旅客收入——主要是非高峰收入上——拉平成本。其中也有可能因为国家目前从铁路系统获得大量税收,在不减少这个税收的情况下做不到。精确的说,修建一条铁路的开销无法由铁路带来的客运增量来平衡,因此才是铁路修建需要由国家拨款的原因。 公平论 既然是全民税收,公平就是一个核心问题了。我们首先排除铁路部门贪污腐败的问题,没有看到的事情,我们暂时不讨论。就公平上,是否应当采取这一行动,做一条讨论。 我记得我说过公平论。当你模糊你的身份时,你提出的结论才是公平的。如果我是不需要回家的本地人,为了春运修建大量铁路显然有悖于我的利益。然而如果我是需要回家的打工仔,春节不能回家又是一件很苦逼的事情。权衡两者,我觉得全民收费修建铁路还是一个可以接受的结论。 其他方案 其实在上文中,我们不断探讨各种技术问题,然而都没有涉及一个实质问题——16亿人的节奏在时空上高度同步。这本身是最大的问题。不解决这个问题,讨论细分市场也好,政策公平也好,都只能在技术上,让尽量多的人各得其所。只有让聚集问题彻底解决,才能彻底解决16亿人民的出行和游玩问题。 那这个核心的方案也就呼之欲出了——年假制和生产中心西迁。 目前我国有10天带薪假期,称为国定假日(顺便说一句,这个和其他国家比小气的可怜)。这些日子固定放假。一旦和前后连成长假,大客运高峰就随即发生。而国外很多是采用年假制的。每个人每年都有一定时间的假期,可以自行安排。很多企业还规定,当员工的工龄增加时,年假也随之增加。据说意大利人最长有一个月的年假(羡慕阿)。 年假制度可以减缓高峰的存在。从理论上说,采取年假后全年的交通量应当都是平均的。然而现实告诉我们——没那么美的事。由于传统节日的存在(例如感恩节,春节),很多人选择在节日附近回家。这还是造成了拥堵,不过显然比现在更轻。因为很多没有钱在假日回家的人,可以选择避开假日回家。 年假的一个问题,就是给与某些老板合法剥削员工的机会。因为如果是固定假日,工厂是否加班很明显。而年假则很难说,某人是否休了年假,除了他自己还有谁知道?但是与此同时,固定假日制度难道就不存在“剥削”员工的老板?员工留下来加班,却只支付正常工资,这种老板有没有?不希望休年假,希望多工作的员工,有没有? 我们不能只关注于年假造成的问题,而束手束脚不解决问题。作为一个可行的方案,部分的实行年假是一个很好的思路。鼓励部分企业实行年假制度,对年假不休的实行三倍工资。部分可行至少好过总体上一无所获。 而生产中心西迁,则是中国政府目前正在努力做的一件事。不过限于地理因素,目前效果好像不大明显。如果有时间,我希望对这一问题做一下全面了解和思考,看看到底是为什么。

Oct 9, 2012 - 2 minute read

Y Combinator

不动点理论 假定我们有一个函数f,例如,f(x) = x^2。对于某些点,f(x) = x。在这个例子里面,0和1很明显就是两个点。这样的点称为不动点。 不动点理论在各种领域有广泛应用,我记得其中之一就是在血型比例上。当ABO遗传规则固定后,存在一些ABO血型比例,这些比例的人随机通婚,生下来的孩子的血型比例亦保持不变。这是三种血型千百年来存在的基础,否则随着遗传规则比例转变,其中某些血型可能已经在地球上消失了。 也许你很好奇,当我们有了一个规则后,例如f(x) = x^2,或者ABO遗传规则(这也可以当作一个函数,将父代ABO比例转换为子代的),如何才能计算出函数的不动点。 答案是不动点算子。 高阶抽象函数的不动点 我们先不继续讨论不动点算子,让我们先讨论一下抽象函数。上面,我们的f都是具体的演算规则,x是一个数(例如x),或者一个矩阵(例如ABO,也可以当作一种数来考虑)。如果x是一个函数会如何? 我们先看一个递归的阶乘计算函数: (define fact (lambda (n) (if (< n 2) 1 (* n (fact (- n 1)))))) 这是一个典型的阶乘计算函数,没错。问题是,我们在lambda里面调用了fact。从语言层面上说,这样做合法。然而从语言的研究角度说,这难免会带来一个问题。函数的名字,到底是一个可有可无的别名,还是一个在递归中必须的东西。如果是前者,我们可以完全用lambda构造递归函数。而如果是后者,我们无论如何努力,也无法仅仅使用lambda来构造一个递归。 OK,这和不动点有什么关系?这时,我们先假定函数f,是真正的阶乘计算函数。即f(n) = n!。那么对于以下函数,((F f) n) = (f n)。 F = (lambda (h) (lambda (n) (if (< n 2) 1 (* n (h (- n 1)))))) 看不懂为什么?这是一个柯里化函数。当我们传递真正的阶乘函数f给F的时候,在函数体内,他叫做h。而按照f(n-1)的定义,我们得到的值和(f n)没有区别。因此,我们有(F f) = f,你也可以写作F(f) = f。 是不是觉得眼熟?是的,f是函数F的一个不动点。要获得真正的阶乘函数f,我们只要对F计算不动点即可。 Y算子 Y算子(或者叫做Y组合子)是另一种高阶函数,用于计算任意函数的不动点。 假定对于函数f,存在不动点x,有f(x) = x,那么Y(f) = x,这是Y算子的基础。按照上文代入,我们可以得到f(Y(f)) = Y(f),或者可以写作scheme格式:(f (Y f)) = (Y f),这就是Y算子。

Oct 8, 2012 - 1 minute read

小故事

话说当年,印度打算推行沼气技术。沼气技术都知道吧。据说可以减少粪便污染,不影响粪便当作肥料使用,而且肥料效果还好,还能产生燃料。印度人当年就看上了这项技术,准备实施。 从数据上看,沼气比氮肥工厂好几条街去。不需要外汇,能增加大量雇员,还能发电。氮肥工厂不但资金成本高,外汇,而且还倒需要电力。更麻烦的是,原料是进口的,掌握在其他国家手里,可能上涨。 照理说这么好的东西,利国利民对吧?问题是实施后,印度发生了贫富差距增大。因为以前没有地的农民可以到处捡到牛粪,而牛粪他们是当作燃料使用的(恶。。。)。自从推行沼气技术,富农把散落的牛粪都收集起来拿去做沼气,穷人就没燃料了——而且他们也买不起沼气。 有一个吐槽说,原本没有交换价值的牛粪是有价值的,但是当牛粪有了交换价值,穷人的生活水准就下降了。这是新时代的羊吃人么? 每个时代都有羊吃人的故事的。还有多少人记得当年造船是多火爆的一个职业?还有多少人记得当年DOS程序员多牛?甚至现在都没有多少人记得C程序员了。大部分估计只在大学里面学过,考试的时候记得,然后就——没有然后了。

Sep 28, 2012 - 1 minute read

lupus

曾经有人问过我这么一个问题,人怎么能自己和自己打架? 其实这种事情并不奇怪,人有一种处分自己体内不合群细胞的行为。当细胞变异时,必须将其消灭,否则会发展成为癌症。如果这个机制的表达过于迟钝,那么会引起免疫力低下,最著名的例子就是HIV。而这个机制的表达过于激进,那么会引起对自身细胞的攻击,例如systemic lupus erythematosus,系统性红斑狼疮。 大型组织中的竞争机制 这个和主题有什么关系?我们先说我的另一个朋友吧,我不能说这位是谁,您别自己跳出来。 我曾经帮一位老板做顾问,就是配置系统,听他的一些架构想法,给一些建议,介绍人帮他培训,实习,干活之类的。我曾经介绍这位朋友去培训,结果他被挖了过去。人各有志,我也不能说怎么样。不过这位老板曾经挖过我,我没有去。 最近他又在找工作了。据说是因为产品出来了,不需要那么大的研发团队,所以整个团队都在离职。 我对此一点都不奇怪。那位老板的定位,从一开始就能看的很明白,那是典型的业务驱动型公司。技术在里面的作用,就是完成业务。这不奇怪,大部分的公司都是业务驱动型,技术驱动型公司才是少数。但是,他的业务又不是具备快速扩展的哪种——至少扩展中的问题不是层出不穷的。那么当技术团队完成了工作,这位老板会接着做其他东西么? 以我的判断,不会。在第一个业务赚钱之前,他不会忙着把其他想法一并做出来。我不怀疑这位老板的人品,但是大部分正常的,有脑子的人在这种情况下都会做出正确的选择。而原有的团队则适当裁员,保留骨干,维持为主。 其实有很大一部分业务驱动型的公司,都有类似的麻烦。做产品的时候,生怕动作不够快,招人不怕多。到了业务出来后,那么一大堆业务人员怎么办?大部分公司都是适当裁员配合持续改进,少部分是上了新的产品。要养一支开发团队很难的——到不完全是钱的问题。问题是规模不够大,不一定有那么多事情给他们做阿。做着做着就没事情了,这下就变成了成本问题。 据说当年宋朝宰相赵普,曾经帮着宋朝打下半个天下。等到只剩北方游牧民族的时候,他便不再设计献策。由是,游牧民族终赵一朝,是为大敌,最终为宋朝送了终。 为何?兔死狗烹,鸟尽弓藏。因此大凡能主天下之人,要么韬光养晦,要么养敌自保,要么干脆自立为王。陶朱公自我放逐,韩信夜死未央,常遇春壮年暴毙,彭大将军死于批斗,大抵都是这么回事。赵匡胤若不是黄袍加身,早晚也要死在恭帝和符太后手里。 换到这个例子上来,一家公司,若是没有业务给业务部持续去做,业务部难道还能叫业务部么? 再说一个例子,某国政局 据说某国大都督被下了大狱。与他走的近的将军们议论纷纷:“听说太子新近要继位,会不会趁这个机会铲除了我们?” 有人献策说,与其坐以待毙,不若养敌自保。先想法和其他国家交恶,大战一触即发。无论是今上还是太子,难道冒着刀刃加身的风险铲除大将么?至于阴蓄死士图谋不轨之类的事情,真到了今上要人的时候,难道还会为了这点小事翻脸。顶多训斥一顿了事。 不久,某国街头上出现了一帮人,见到邻国人就打。 这人又献策说,如今军中多有怨言,不愿开战。若是真打急了邻国,一旦开战,对诸位不利。所以邻国人不能打,要打本国奸臣。 再不久,街上开始打买邻国人东西的人,说是奸臣。

Sep 27, 2012 - 1 minute read

选择哪个linux发行

选择哪个linux发行 很多人问我,哪个linux发行版更好。这不是个伪命题,而是个蠢命题。哪个发行版更好取决于你要做什么。我们首先把linux发行版分为四大类,deb家族,rpm家族,源码家族,其他。 假如你要稳定部署 所谓稳定部署,就是你没什么机会对系统升级打补丁。听上去很傻X,系统不打补丁?实际上这样的系统非常多。大型跨国公司的ERP,托管在企业封闭机房内的核心业务系统。这些系统的升级成本是非常惊人的,一次升级动辄数天策划,弄一套备用系统来放着,然后再顶着XX的损失停机几个小时。 这种级别的系统,建议你直接上RHEL。不要怕花钱,出问题的损失远远比RHEL的服务费高的多。 假如你要持续更新 对于持续更新的系统,你可以选择debian/ubuntu。这两个系统都具有很强的滚动更新能力。虽然RH系统可以通过yum进行升级,然而RH的追求稳定策略,使得仓库的升级频率要比deb系小的多。 deb的系统有非常简单的配置和升级方案,而且大多保持稳定。ubuntu的策略比debian激进很多,所以软件有更多的新特性——当然,也有更多的死机。 假如你要高度定制 高度定制的系统只有使用源码安装,任何发行版都不会帮你把每个开关组合全部编译一遍。 源码家族中最出名的两个是gentoo和lfs,不过除非你的蛋在燃烧,否则一般是不会用lfs作为自己的应用系统的。大多是使用gentoo来做支持。 假如你只是自己想用用 你是一个彻底的新手 我建议你从debian家族的knoppix开始,或者ubuntu livecd也不错。这两个都是livecd系列,就是可以直接从光盘启动系统并使用,不需要在硬盘上安装,也不需要虚拟机。相反,他们自带虚拟机,可以虚拟一个windows出来供你偶尔用一下。 你是一个有过一定经验的人 那你熟悉什么就用什么。 不过作为一般性使用,我推荐ubuntu。他们针对桌面用户做了很多定制,打造了一个非常不错的环境。在我所知的发行版中,ubuntu的桌面用户是最多的,针对新手的答疑也是最友善的。 当然,文档最好的还是gentoo。 你是一个专家 很感谢你看完这篇文章,你太无聊了。

Sep 19, 2012 - 1 minute read

铁道部的扯淡排队系统

缘起 这两天同事都在讨论12306的订票机制,据说要排队了。我不买火车票,所以只是大概听同事讲解了一下机制。如果不正确,希望大家告知我。我听到的机制大概是这样的。 首先,是每个人进去,正常购票。当碰到热门线路,在提交时进入不定时的排队。等排队结束,成功与否给与提示。铁道部称,这是为了能够减轻并发压力。 问题 如同老板说的那样,这个机制P都没解决。问题的关键在于系统的每秒负载能力,即每秒能够完成多少个transaction。只要来的人比能完成的transaction多。那只有几个结局: 刷爆网站,这是原来的结局。 堆在队列上,有人买不到票。 如果铁道部宣称的目的是真的的话,那他们一定用错了机制。 原因 铁道部这个系统的核心想法,是将并发的业务改为串行业务。即,前置一个订单系统,减轻核心的交易数据库的压力。实话说,这一定是没在互联网上混过的领导想出来的馊主意。 在通常业务系统里面,如果我们说一个核心交易组件有压力,那么最常用的办法就是排队。然而在互联网上却不能这么干,尤其是很多“非买不可”的系统里面,更不能让用户玩“排队”。因为对于互联网上的人,“分身”是再容易不过的事情了。使用多个浏览器,甚至开多虚拟机,普通人可以轻易的做到4-5个不同的会话。就算普通人做不到,看网络教程学是可以学出来的。每个会话订不同班次的火车。多开会话的结果,就是让队列的长度比原本会长上很多。这是一种级联效应。由于购票组件的处理速度有限,所以压力向前堆积,最终前面的排队系统也会被汹涌的客户(比原来大N倍)玩死。 机制 对此其实我很难想明白,为什么铁道部的核心交易系统有这么差的效率。有网友曾经说,系统要检查很多东西,要上锁——这都是假的。作为铁道部的核心交易系统,和铁道部内部的资讯检查有什么关系?他唯一要做的事情,就是检查是否真的有票,座位多少,有的话锁定一张(这个过程要排他)。 也许你会觉得,既然要排他,那么就需要用事务型数据库。目前数据库平均性能都是1k/s(我们就按照我们在普通台式机上的数据计算好了),而全国每秒成交的数量远大于这个值。这里出的问题? 这是不可能的。傻想也知道,每趟车和另一趟车没有耦合关系。按照车次做哈希,分布在多台服务器上交易就行了。这是典型的可并行系统,效率可以直接用单台机器性能乘以服务器数。在交换机允许的范围内,根本不会有交易性能压力。我们仔细审查铁路系统的结构,会发现,这东西天生就是分布交易的好材料。 部署一组服务器,每一台都部署同一套东西,接口按照REST开放。 将车次哈希后映射到具体的服务器上,所有的余票查询/订购,都向这台机器做请求。而核心服务器只要返回静态页面和车次信息就好。 单个服务器上的每秒transaction要求就不可能太高。 阴谋论 也许有些人会想,这个系统莫非是铁道部给内部留票做的?这又错了。要做内部留票,最简单的方法就是开打内部提前售票限制。只要这个限制一开,他们想留多少留多少,你一点脾气都没有。 结论 我只能归因于国有垄断企业在解决这类问题上的扯淡了,和私有企业没法比阿。建议对铁道部实行拆分。

Sep 15, 2012 - 1 minute read

反日和钓鱼岛

最近反日运动挺火,我随便说两句把。blog被墙有被墙的好处,上来看的起码都不会太脑残,我也懒得打无脑口水仗。 砸日货 这尼玛就是2B行为。 首先定性上,这属于扰乱社会治安。中国人,在中国的领土上砸中国人的东西,我怎么看都是扰乱中国的社会治安,和反日没有任何关系。 当然,前提是怎么砸。如果砸的是日本人手里的日货还有意义(哪怕是国货也行),好不好另说,起码达到反日的目的。砸中国人手里的日货除了消灭中国人的财富没有任何作用——如果被砸的这哥们还是买日货,反而增加日本GDP。你见过打人打到后来给对方加血的么?砸日货的这帮大概就是这行为。所以说2B都侮辱了普通青年和文艺青年。 实际上,我觉得真的脑残去砸日货的占一半,另一半就是趁火打劫的。例如推上看的,吃日式料理,快结束了。反日旗子一举,开始砸。完了跑人不买单。还有买国产洗发水的。反正这帮人打劫的味道比反日重多了。 抵制日货 洗洗睡吧。日货要那么好抵制,中国制造早就卖不出去了。 我就说个本领域的问题。大家都知道JavaEye吧(我不是要黑它哦)。JavaEye是使用Ruby开发的,而Ruby是正宗的日本产。 怎么办?集体去攻打IDC拔线么? 其他领域我不熟悉,但是世界上有个东西叫做IO表。只要你了解IO表的基本理念,就会立刻对抵制日货产生不一样的看法。IO表的核心理念在于表明,为某个领域产生一定单位的产值,需要其他领域投入多少产值。这些叫做直接消耗系数。而通过计算,可以得到另一個矩陣,叫做完全消耗矩阵。衡量的是为某个领域产生一定单位的产值,需要其他领域的多少最终投入。例如,为了炼钢,我们需要投入原料,水,电,等等。這個叫做直接消耗。而用水,开矿,都是要用电的。因此一个单位的钢,所需要使用的电比直接消耗的来的更高。两者具体的换算公式是B=(I-A)\^-1-I。 如果使用同样理念,将某个领域改为某个国家。你可以领悟到这么一个事实——除非你对外完全封闭,否则你的进口一定是作用于全世界的。实际的例子就是,中国制造的车,可能没有日本的元件。然而里面却可能使用了美国的化油器。而美国的化油器制造流水线可能是日本产的,或者包含日本部件。如此层层递推,我们也可以得到类似的完全消耗矩阵。在这个矩阵中,真的是日货对日本的GDP贡献比较高么? 我看不见得。 虽然我没法拿到完整的数据进行计算,不过按照我的直觉(我相信你也能想的通),凡是日本技术和市场占优的领域,无论你购买哪国产品(包括本国)都会对日本贡献极大GDP。因此要抵制日货,根本上应当抵制所有日本占优的领域。例如电子产品,汽车,精密制造。可是这样以来,你出门不能坐车,回家不能看电视,严格来说,看我的文章也是违规的呐。 钓鱼岛 首先我先跳开钓鱼岛的法理之类的地雷,就说一个简单的问题。钓鱼岛争端对我有什么好处? 增加了中国的领土?房价能下去么?再说,买的房还不算是我的,70年后天知道什么情况。附近有丰富的石油?开什么玩笑,你什么时候见到中国的油价和产油有关系的。国际油价涨,中国油价涨。国际油价跌,中国油价还是涨。钓鱼岛搞到手上,油价会跌么?也许渔业有点好处,我对这个不是很了解,也不很关心。 在我所知的领域内,钓鱼岛对我一点好处都没有。你当然不能指望我支持保钓。因此,我不会支持保钓行动。所谓支持,就是指打仗,或者其他激进行为。但是我期望能够搞到钓鱼岛——如果成本比较低的话,为什么不呢?如果中国政府通过运作,可以弄到钓鱼岛,我难道还会傻傻的说,咱把这肥肉吐出去吧。 说白了,这就是典型的商人心态。只要成本OK,一切有的谈拉。 阴谋论 钓鱼岛问题上,一直有阴谋论出台。中日双方都希望借助钓鱼岛转移国内视线,才会搞这么大声势。我觉得不无道理。早在香港船出海保钓的时候,我就觉得奇怪了。船长说通常都会被海监处的船拦回来的,这次居然出去了。保钓人士上去以后,报纸也大肆宣传。这都透露出上面的意思。 到底是什么事情,需要转移视线呢?我数了数最近的事件,都没有严重到需要玩这手的。木大虽然是个坎,但是万万没有为了过一个坎而造一个更大的坎的。如果这个猜测是真的,说明事情大到了相当的程度。也许直到很久以后,我们回想某个事件的时候,才会猜出今天保钓的意图。

Sep 10, 2012 - 1 minute read

自由软件的基础讲解

授权 本文档内容基于cc-by-sa3.0下发布。 您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品,创作演绎作品,对本作品进行商业性使用。惟须遵守下列条件。 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。 具体信息请查看署名-相同方式共享3.0。 从一个软件说起 给大家介绍一个软件,comix。comix是一个由python和GTK+写成的漫画浏览软件。 支持zip, rar, tar等格式的压缩包直接浏览 跨平台 有自己的用户群和wiki页面 但是某天,我在Windows下使用comix的时候发现,在Windows下这货不支持压缩包直接浏览。而且手里有大量包是7z格式,木有办法使用。 检查源码,发现是/的问题。蛋疼的跨系统。 根据网络上的提示,我发现有两个解决问题的方法。 使用封闭免费软件,例如honeyview,然后转跳到问题3 自己修掉这个bug,反正只有一处,然后转跳到问题4 7z格式木有办法,只能苦等最新版本出来,完了。 需要7z支持,自己又做了一个7z支持的补丁,从此所有漫画都可以直接浏览 我希望向官网提供我的补丁,发现软件已经失去维护 在寻找的时候,我发现有爱好者维护了一个新的分支,mcomix。解决了很多历史bug,同时支持了7z 原来在问题2上,有一个隐藏选项,直接用mcomix,完了。 这说明,在你想出一个需求的时候,最好先问问资深用户,是不是已经被解决了。很多时候,不要重复造轮子。 修改源码?听起来好像很麻烦 如果不是职业程序员,还是别想了。调试软件和修改源码需要专业知识(当然,不需要是计算机系出身,但是需要专门的学习)。但是掌握技巧后,修改一个bug并不是很困难。然而,拥有修改源码的能力,表示这个软件和那些“你无能为力”的软件有所不同。 神码叫做自由软件 无论如何,你可以自由使用。这隐含了软件是免费的(或者满足一定条件下免费)。 源码开放。用户有研究如何使用的自由。 重新发布源码。用户可以让别人使用,或者包含在其他产品中使用。 改善软件。用户有改善软件的自由。 所以,自由软件的前提是,软件必须是开源软件。 两个软件的不同遭遇 Foxpro VS Sql Server 老计算机用户都应当记得foxbase和foxpro这两个软件。当年风光一时的数据库软件,在被微软收购后,就黯淡无光了。尽管退出市场的主要原因是因为单机开发模式并不适应网络大规模开发,但是这只需要设立一个网络层就可以解决。微软在收购Sql Server后,为了保证其市场地位,收购并雪藏了foxpro。目前该软件已经停止开发,最新版本的支持也即将过期。 Mysql VS Oracle 同样可怕的事情发生在mysql身上,做web开发的应该无人不知其大名。在Oracle收购后,Mysql也面临和foxpro同样的遭遇,更巧的是,他们同样是数据库类软件。然而Oracle无法雪藏Mysql。因为一旦Oracle雪藏Mysql,其他人可以继续Mysql的某个开源分支继续开发一个完全不同的东西。Mysql的创始人之一,Michael Widenius支持这个做法。 因此,直到目前为止,Oracle都没有停止对Mysql的支持。 当然,由于未来的风险,一些人在选择新数据库的时候转向了PostgreSQL,或者其他选择。然而已有的系统不会受到影响,已经学了Mysql的用户也不会受到影响。 如果当年Mysql是闭源,那么。

Sep 3, 2012 - 1 minute read

计算机的相关法律管理

昨天翻了一下vpn的相关法律,结果是——没有。 唯一一部接近的,还是《境外组织和个人在华使用密码产品管理办法》。但是这实际上有两个问题。 首先,办法对含密码产品的限制太过严格,而现在的密码学衍生领域又铺天盖地。这导致实际上有办法没管法。例如我们公司的产品,为了升级,就在系统里面放置了升级系统。为了防止升级系统升入非我们的代码破坏系统,又要对升级系统做签名验证。这实际上就一脚跨到了密码产品的范畴里面去。不过幸好,我们的产品本身就是涉密产品,有公安部的认证。但是其他需要在产品中包含了安全系统的产品怎么办?别的不说,你想想有多少软件链接了openssl?哪怕是python这种东西,都是链接着openssl的。从某种意义上说,使用python也违法。 其次,办法只限制使用密码产品,可一字没提到提供密码服务和帐号。大家知道,vpn实际上是帐号和服务,至于使用这些帐号和服务的具体“产品”,那是windows,ssh客户端这种东西。而windows是经过国家认证的。退一步说,即使没有,也是使用者和软件发行者需要对此事负责,而管不到账户提供者头上。 另一个有关的,是《互联网信息服务管理办法》。可办法开宗明义第一句,是在中国境内。要提供vpn服务,你的服务器必须是境外的,境内没意义。但是相应的,你不能在中国境内进行收费,否则就算违法。然而,如果免费帐号漫天发,这条法律依据也是靠不住的。 OK,我们常说中国立法远远落后于时代,我们又找到了一个例子。实际上,你在看中国法律的时候,往往大疑不解,为什么会有这种那种狗屁规定?那是因为那些法律的制定年代往往都是上个世纪。例如地图法规定,私自使用精度在一定范围以下(我记得是100米)的地图是违法的。我找不到这条的出处,不过测绘法是上个世纪颁布的。大概颁布测绘法的人不会想到,在短短15年后,就会有大量个人手持的高精度(<10米)定位工具出现。 至于互联网,托这几年比较敏感的福,互联网立法始终是重中之重。然而,大部分立法还是针对的web而言的。其中有条规定,服务提供商必须进行备案,然后在网站上公布其备案号,目的是方便公安机关管理。问题是,目前很多网站是没有web界面的,直接通过手机使用。有些网络服务连客户端界面都没有,例如vpn,你说怎么提供?服务商倒是不会介意弄个网站,把备案号贴出来。问题是公安机关怎么知道提供服务的供应商网站是哪个? 再说法理基础吧,不仅是中国,在世界上,对于网络和程序这块的法理都是一塌糊涂。我们首先说一个简单问题,什么叫做引用,什么叫做使用? 之所以在GPL之外还有个LGPL,就是因为,如果你在编译时直接使用了某个GPL库,就会被传染这个库的授权。为什么?这主要是针对C语言而言的。因为C在编译时,需要引用对方的.h文件。而对方的.h文件是基于GPL的,这就构成了引用。而针对python程序,你可以很容易的反射和动态加载,这又是否构成引用呢?如果编译时,使用自己反推对方头文件构成的.h文件,是否需要被传染授权呢?又例如,在kernel中的license中,明确说明了内核调用不属于引用。然而如果在程序内以变量形态包含了firmware,又是否算是引用呢?别的我不清楚,debian是严禁这类软件进入仓库的。 当然,这些问题对于欧美法系不是太大问题,因为一切都是来自判例,判例构成了法律。对于新出现的问题,只要诉讼,就等于在进行立法。然而对大陆法系而言,这就是个噩梦了。

Aug 31, 2012 - 1 minute read

家庭电脑的虚拟化

家庭电脑,谁都会用。会来看我blog的人更应当是家里有一台,我知道有些还有不止一台的——别人家我不知道,我家里就算老妈和丈母娘一起来打游戏,我还能保证我和老婆人手一台的水平。 一堆机器,有好处也有坏处。好处是,基本坏掉哪台都不怕,备用的比较多,随便来一台就能跑。坏处是,这些机器的配置不同,习惯不同,性能也不同。我们家里更特殊的情况是——连系统还不一样。我自己用的是linux,老婆是win7,老妈是XP。 为了解决文件共享的问题,我采用了NAS,而且是自己组装的小型服务器。对于小型家庭网络,NAS是个很不错的主意。然而电脑不仅仅有文件而已,还有配置呢。老婆的win7是直接连接到电视上的,所以我经常需要和她抢电脑。然而chromium的绑定gmail只能有一个——用我的还是她的就是一个问题,这是两个人用一台电脑的配置共享问题。同时,我的小上网本则是另一个极端。我希望上网本上和主机能共享同一个配置,虽然chromium的同步能力很强,但是很多东西不是chromium能同步的掉的。包括emacs配置,bookmark,打开文件。ssh密钥,系统环境。这是另一个问题,一个人用两台电脑的共享配置。当然,说到这里同时还有一个问题,我不希望用自己的小上网本,毕竟atom的速度和主机没法比,io速度也慢,内存也少。 所以,我最终的解决方案就是——虚拟化。在win7中装一台虚拟机,里面跑一个linux,再通过上网本远程控制这台linux,这样至少解决了我自己的问题。在小上网本上,可以高速的使用浏览器,和主机同一个配置。在主机上,和老婆分开配置。在老婆使用电脑的时候,和她分离的,不受干扰的使用电脑。 实际上,要解决这个问题,最好的方案是基于linux的multiseat系统。由于是multiseat,所以我和老婆同时使用。由于linux是用户分离的系统,所以可以互不干扰。唯一的遗憾是,同一个用户不能同时登录两个X,Xauthority文件会互相覆盖,因此在用户登录的情况下不能使用vnc。 当然,为什么不能用multiseat,你们懂。。。不懂的可以看我上一篇文章。