Shell's Home

C10K的卡通解释

Jun 13, 2010 - 1 minute read - Comments

以前有一帮医生,帮一个城市看病。当然,医生少人多,政府就开始动脑筋,怎么样让医生给更多的人看病。 最开始是医生去病人那里看病的,医生花在路上的时间很长,于是成立了医院。让病人过来,节省医生的时间。当然,病人肯定比医生多的,这是整个文章的假定。为了保持原来的模式,病人到了医院后,会有自己独立的一间屋子,完全模拟在家的感觉。这样会有什么问题呢?问题在于病人独占了医生,在病人抽血,验血的时候,医生无所事事,因此效率很低。 后来转换了一个模式,医生过一段时间就离开当前病人,看看哪个病人那里空着就过去。这样的目地是为了防止一个病人拉住医生不放,将医生的时间平均分配到多个病人头上。这样的动作快多了,但是医院受不了了。原本8个医生,一人一个病房。现在8个医生要在N间屋子里穿梭,万一每个屋子里的病人都是在抽血,那这个N就会无穷大了,现在是屋子不足了。 然后又换了个模式,对不起,现在不是一人一间屋子了,是一堆人一间屋子。每个人只要一个床和一个病例记录,其他的设备可以有限的共享。这样屋子不足的问题得到了部分的缓解。问题是医生又不干了。一方面离开病人再找空病人费事又费精力,另一方面抢设备也是个困扰。医生需要设备的时候会让护士去看看,如果有就拿过来。可是两个医生一起下这个医嘱就会出问题,一个护士看看还有,回去说有,再去拿的时候另一个护士已经拿着最后一个离开了。就算是同一个医生,下这个医嘱的时候,两个执行的护士也会这么打起来。 医院方面动了动脑筋,干脆这样吧。一个病房里只能一个医生负责,多个病房公用的设备看到有就可以预定起来。这样病房里的设备是不会抢起来的,而病房外的设备先到先得,也算公平。医生在病人去抽血等等活动的时候再离开病人,而不是每隔固定的时间。每隔一个很长的时间护士会去巡房,如果医生还在被同一个病人纠缠,护士就会让这个病人强制休息。 不知道有多少人看懂了?下面是答案。 第一种模式叫做服务队列模式。医生是资源池,病人是待处理请求。这个模式的问题是请求过程中往往会有大量IO出现,此时CPU陷入等待,很不合算。 第二种模式叫做多线程。医生是CPU,病房是进程。一个病人新建一个进程,系统将CPU在多个进程间调度。此时的问题是进程对系统资源的消耗比较大。 第三种模式叫做多线程,医生是CPU,病房是进程,床是线程。每个请求新建一个线程,CPU在多个线程间调度。此时系统资源消耗的问题得到一定缓解,问题变成上下文切换和资源锁定造成的浪费。 第四种模式叫做协程。CPU只在必要的时候离开当前请求。什么是必要的时候呢?就是大规模IO之前。IO完成后,CPU会再度调度回来,这样避免了频繁的上下文切换。而在一个CPU的情况下,这样的模式不会造成竞争。(多线程模式就算只有一个CPU一样竞争,因为CPU可能在任何时间离开线程,包括原子操作内部) 沈游侠曾说过,好的构架是让瓶颈只出现的CPU上。当然,从更广义的来说是只让瓶颈出现在最紧张的资源上。显然,如果是服务器,CPU和总线带宽多数是最紧张的资源。

关于富士康,还有话说

Jun 11, 2010 - 1 minute read - Comments

无原则的高额抚恤会不会引诱员工跳楼?我觉得这个是无异议的。家里有困难的人为了家人往往什么都愿意做,大家可以想想看如果将抚恤金提高到1亿,家里有困难的职工们跳不跳? 因此不能无原则的抚恤。道义上看是好事的事情如果不谨慎,往往会酿成灾难。 劳动规定的问题。有个朋友说这要放英法美,怎么样怎么样的,实话说我觉得没什么可比性。要可比首先就要这三国和中国开放人口互通工作流动互通。一个劳动力相对不足的国家,工人利益就容易得到保证。而一个劳动力相对过剩的国家(实际上几乎是世界第一过剩),就没什么工人利益可言。 还是自杀率比较问题。上篇文章的核心观点其实是,如果富士康比周围工厂更加差劲,而且没什么力量阻止人员流动,那么员工就会跳槽,而不会自杀。而如果富士康周围的工厂也一样差劲,那么大家的自杀率应该差不多。 盼头。小猫对上篇文章说了一个悖论,差劲的工厂反而比好的工厂有更低的死亡率。因为差的工厂的工人会希望进入好的工厂,而好的工厂的工人已经无路可去。我在想,我要是去了google就会自杀?(当然,google已经不在中国了)结论当然是否定的。这个区别的潜台词是,制造行业的工人们,你们最好的出路也不能带给你们希望。 托管。郭台铭想把周边设施卖给政府,再租回来。想法不错,职工的生活本来就不应该企业完全包办,组织组织活动就差不多了。全包办下来的大包大揽模式我们干了几十年,最后还是自己给自己推翻了。 罢工。中国的工会是个摆设,这基本已经成为常识了。在这种情况下,工人还能组织起罢工,我在想到底是不是因为日子过不下去了。就是说,尽管从人力供给-生产需求的曲线均衡来说,当前失业率下应该有更低的工资,然而这个工资无法养活一个人。 涨价。中国劳动力大大过剩,似乎是个定论,然而是否真的过剩还得看本田将来的反应。风口浪尖上自然不会顶风作案,然而如果确实有降价空间,在风波过去后本田应该会有动作。如果本田继续风平浪静的生产,说明中国的劳动力并不过剩。 额外一点,20年后,我们会怎样。现在的社会是普通家庭+独生子女结构的混合,最年长的独生子女也不过30多岁。一个普通家庭大约是一个家庭供养两个 老人和两个子女,供养比例2:6。20年后,社会上的主要劳动力都是现在的独生子女,典型的一个家庭要供养四个老人和一个子女,供养比例大约是2:7。供 养比例并没有升高太多,而每个人可以多获得额外的资源。如果从理想情况来说,每个人的日子应该也还不错。当然,这只是从理想情况来说。 额外一点,医学的进步造成贫穷的社会。想想看无劳动力的老人平均寿命从80提高到120的情况。现在退休年龄已经在逐渐延长了,正是在对应这个问题。可是能延长到80么?80岁的老人还准备让他做什么呢? 额外一点,中国的医患关系。无中立的第三方监管,无公信力,造成医患相互不信任才是最可怕的问题。 贝壳前几天去看眼睛,觉得眼镜度数不对,准备重配。医生检查之后,做了一个荧光染色检验,检查是否有干眼症。其他检验(眼压,验光)都是先付款后进行,而且有明显的必要性。这个检验是先做后付款的,因为做的时候还不能让贝壳知道,而且从非专业人员的角度来说看不出必要性。如果从中立角度来说,难免有借机骗 钱的嫌疑。这个检验真的必要么?是不是在借机多收费呢?不过在验光时医师的话打消了贝壳的疑虑,他说,你的眼镜度数配的很准,不用考虑再配了。说这句话的 时候,隔壁就是这家医院开的眼镜店,我相信他是可以从眼镜出售中获得抽成的。这说明两方面问题,一方面医院开和医疗相关的盈利行业,很容易引起”是否必要”的猜测,从而造成医患关系紧张。而另一方面这个医师在我主动想配眼镜的情况下劝我没有必要,想必不会为了区区几块钱故意多做个检查。

关于富士康的几点

May 28, 2010 - 1 minute read - Comments

1.富士康群体自杀的称呼上,请别用第十跳,第十一跳称呼。这样会让人觉得他们生前是个数字,死了还是个数字。每个人都有尊严,都有自己的名字,请用名字称呼每一次自杀。 2.血汗工厂问题上,我不清楚,不发表意见。但是吊诡的是,如果只有富士康是血汗工厂,那么员工大可以辞职,死了挣再多钱也没意义。(不排除无法辞职强制劳动的可能,但是从现有资料中没有发现)如果全深圳都是血汗工厂,别的工厂又没有那么高的自杀率。所以一个推测性的结论是,富士康连续自杀问题和血汗工厂无关。(注意这不是对”富士康是否是血汗工厂”的结论) 3.是否限制最高工作时间?其实富士康应该严格限制的。从单位成本的劳动力价格来说,加班的劳动力价格比正常雇用高。因此通常只有”同一个人能产生较高的劳动生产力”的情况下,才考虑持续的加班。例如,两个程序员比一个程序员平均效率更低,因此软件界更倾向于加班。富士康的生产通常是无差别的,加班又支付加班工资。因此加班实际上是在高价购入劳动力,这是不合算的。如果富士康有意持续加班,我们只能解读为加班工资(通常1.5倍小时工资)比正常工资成本更低,原因未知。 4.企业是否需要对非劳动所致的自杀负责,显然是否定的。假定有个小公司,老板一人,员工一人,每天过来干点活,大家相处的很好。有天这个人非因劳动的原因自杀了(例如和家人吵架,在家里跳楼),老板被人拉住要赔偿,公司要负责?这个太荒谬了。我们现在已经不是国有大工厂时代,让企业负责员工的方方面面显然不可能。 5.企业对于自己场所的管理。无论是生产用的场地,或是无偿(其实是以工作为代价)提供给员工居住的宿舍,都属于企业的场所。对于这些场所,企业有保障在场所内人(包括员工)的生命和财产安全的责任。以富士康的情况来说,就是,富士康是否尽努力的去阻止员工在场所内自杀。如果富士康没有尽力(当然,实情我不知道),就是有责任的。 6.员工心理是否是个劳动问题。这个问题是个非常有争议的话题,因为劳动会极大的改变员工的心理,然而心理又不仅和劳动有关。这个请立法解决。 7.媒体管控问题。虽然我反对通常意义上的媒体管控,但是我赞同在这个问题上的媒体控制。对于富士康的报道显然会加重富士康员工的心理压力,促进他们继续跳楼。具体请查询自杀模仿。

在中国投资合法么

May 24, 2010 - 1 minute read - Comments

无论是法律规定上,还是现行现状,中国都允许私人进行投资。然而我们得反过来问,在中国投资合法么? 首先是一个罪名,叫做非法集资。我引述非法集资的几个特点,大家看一下。一是未经有关部门依法批准,包括没有批准权限的部门批准的集资;有审批权限的部门超越权限批准集资。二是承诺在一定期限内给出资人还本付息。还本付息的形式除以货币形式为主外,也有实物形式和其他形式。三是向社会不特定的对象筹集资金。这里“不特定的对象”是指社会公众,而不是指特定少数人。四是以合法形式掩盖其非法集资的实质。 在这个罪的认定中,二和四是句废话。没有承诺付息,傻子才投资,而投资总归是以合法的面貌出现的。关键是一三两条,未经有关部门审批,和面向社会不特定对象。诚然,投资经过有关部门的认定和批准,出问题的概率会小一些,然而这是计划经济,而不是市场经济。政府针对集资领域,真正应当打击的,是以非法占有为目地,以投资为手段,骗取他人财产的行为——那个叫诈骗。非法集资罪名的存在,使得资本无法自由流动。有多余资本的人想投资到一个被看好的项目上,他们不能绕过有关部门,否则这个项目就满足了“未经批准”和“不特定对象”两个条件。这样,就限制投资只能由少数几个人进行,或者投资到有关部门认定的项目上。 这条法律实际增大了风险投资的风险,或者说抑制了有活力的小公司成长的速度。通常风险投资的运作方式是,向公众(以美国法律为例,一个子基金不超过499人,原因是超过500人持股就要出现在财报上)吸收存款(这帮人的资产往往不是很庞大,但是远远超过普通家庭),然后混合投资在数个到数百个不同的项目和公司上。其中大部分的项目都失败了,但是成功的项目往往会获得数十倍到数百倍的收益。(以Google为例,我记得最夸张的投资回报是1500-3000倍。忘记是在天使阶段还是VC阶段出现的)这样,一个子基金往往会获得稳健的,高额的回报,同时还会催生出各种新兴公司。例如雅虎,例如Google。然而我们反观整个投资过程,发现他正好满足“非特定对象”的特征。那么有关部门不批准,这些小公司怎么办?这无疑是政府在主导投资。 在中国,变通的方法不是没有,一个子基金,由几个人(具体几个也不知道,只能去问有关部门,反正一个人应该是安全的)对一个项目进行投资(因为资本总量的限制)。成功就是成功了,失败就完蛋了。如我上文所说,这提高了风险投资的风险。 第二个是我国关于房地产的一个规定。凡是新房购买五年内出售的,要征收一定的税。这个规定的目地是打击炒作房地产。实际上这个规定推论其理论依据本身就是荒谬的。炒作房地产,是将资本投入到某个对象上,获得该对象的某种权力,并且等待权力价格上涨后售出,从而获得利润——这完全符合投资的特性。炒作房地产非法么?投资非法么?如果不认为投资非法,为何要打击呢?如果说房地产事关民生不能容忍投机,又为什么要通过市场流通和调节呢? 诚然,炒作房地产会榨取社会财富,形成财富聚集效应。但是其本身应当不违法,为什么要打击呢?这点我倒是很认同我党当年接手上海后,对应棉花煤炭炒作的手段。通过大量的运入和抛售,降低价格,导致恶意投资的破产(当然这里排除讨论一些刑法打击的手段)。同样,对应房地产炒作的手段,应当均衡城乡发展,东西平衡。加大房屋建造投入和保证房建设和分配,降低房价。如果这些手段短期无法见效,政府能够做的事情,也应该是,认定房地产建造和投资(主要就是买卖)过程中,是否有联合垄断价格的现象(就是所谓的反托拉斯)。 从上文两个规定和政策来看,我们的执政者头脑中,还是将投机倒把作为一种罪来认定的。这种罪不分投资的大小多少,凡是以资本方式介入,获得超过国家规定的利润,并且未经国家有关部门批准的,都属于犯罪。从政治层面上我们很好理解。我们是社会主义社会,因此不存在着压迫和剥削。而投机倒把正是一种压迫和剥削的方式。然而尴尬的是,我们的经济却是以市场方式运行。以市场方式运行的市场就需要一个再分配机制,将民众手中的资本集中起来,投入生产领域——这正是投资。一个市场方式运行的经济配上一个计划方式运行的投资,各种奇奇怪怪的现象就产生了。正如一个企业家说的那样——赚钱的不让投,让投的不赚钱。游离资本在正常渠道内得不到宣泄,就会以各种奇怪的角度宣泄出来。例如投资股市,投资资源(浙江商人在山西的煤炭投资),投资房地产——并且统统出了问题。 从更深层来说,我们的民众也认为,投资是一种原罪,其表现就是仇富(当然,仇富的原因不仅是投资,还有非法)。很难说政府和民众谁影响了谁,然而这种市场经济和计划投资分离的现状是不能持续的。持续的这种现象一定会催生各种问题,而且按下葫芦起了瓢,问题绵绵无期。

成人的童话

May 23, 2010 - 1 minute read - Comments

听故事不说话。 从前,有家人家有十三个兄弟(兄弟比较多哦),老大老二在大城市打工,老三在小城市打工,老四到老十三在老家种地。大家日子过的还不错。 有天,老大招待所有弟兄到家里做客,老二去了,看看,和自己日子过的差不多,喝杯茶跑了。老三看看,这日子比自己在小城市过的牛,想想也挺动心,不过自己日子也还可以,不想动,喝杯茶也跑了。老四到老十三一看,哇,比我们种地舒服多了。其中老四到老九动了念头,能不能也去城市里打工呢? 于是老四到老九兄弟六个,就跑到城市里打工了,而且大家一窝蜂的跑到了老大老二所在的大城市。本来住两个人的城市这下住了八个人,房租物价立刻上涨,工资却连连下跌,大家怨声载道。 老四脑子比较活,说,现在八个兄弟都堆在老大这里,那是比较麻烦。老三所在的小城市,地方更大,能不能分几个弟兄到老三那里去呢?那里物价比较低,工资却比较高,大家照样做工,东西运出来就好。 想法很有创意,可惜,老三所在的小城市没那么多工厂,也没那么多工作。因为首先,老三所在的小城市运输不便,运不出这么多东西。更麻烦的是,工厂问银行贷款,却贷不到什么钱。 兄弟几个一合计,老大老二说我们也挣了点钱了,干脆,我们出钱,你们去办工厂吧。我们算入股,回头给我们算点利息就好。另外再问老三借点钱开公司搞运输,运输问题也解决了。 但是这个方法也行不通,老四到老九没钱,老大老二有钱,可是借给他们就算私自融资,搞不好要坐牢的。法定做法是老大老二存银行,但是银行借给谁多少钱是政策规定的,老三所在的城市还是贷不到这么多钱。老四没辙,去老三那里自己开工厂的念头就压下了。 老大手里的钱没了去处,老大想想,这点钱放着也不是回事啊。那就干脆买房吧,反正这里这么多兄弟,不怕卖不出去。这一买地,房价就跟着上去了。老三也跟着买了点房。 老四要结婚了,问老大买房,老大按当时房价卖给他,足足翻了三倍。老大很满意,老四很受伤,就到处骂老大。老大也挺火,我好意接待你们,你们跑过来弄的我赚不到钱还东西又贵,我好容易投资个房子你还骂我。所以也开始骂老四。 骂归骂,老大还是得卖房子给老四,老二有房子,用不着。老四也没辙,为了保证耕地面积,政府限制盖新房,老四还是得问老大买房子。所以老四就问银行借钱,买下了老大的房子。银行本来不想借,国家说兄弟六个进城不容易,照顾照顾吧。 一照顾不对了,房价直线上升。国家看看情况不对,准备调控房价。银行不干了,说前面老四没钱你说要照顾照顾,让我借了钱。现在你调控房价,房价一跌,老四就破产跑人了,你让我亏这么多钱不是回事吧。 国家没办法,只能宣布,老大不许买了房高价卖给老五到老九,这叫投机倒把,要收5%的手续费。 现在十三个兄弟里有十二个在抱怨。老大抱怨政府不让卖房,还要加收他手续费。老二抱怨工资低物价高,过去辛辛苦苦赚到的钱现在什么都干不了了。老三过的还是挺舒服。老四抱怨自己赚到的钱全交给房子。老五到老九抱怨自己买不起房子结不起婚。老十到老十三抱怨兄弟们都在打工自己还在种地。 – 无能者无所求,饱食而遨游,泛若不系之舟

专业程序员需要掌握的几种语言

May 20, 2010 - 1 minute read - Comments

受到这篇文章(http://blog.youxu.info/fyi/21-days/)的启发,我突然想起对我所会的和要学的语言做个分类。确定一下专业的程序员到底需要会多少种语言。 1.系统类。只有C一个,必须学,而且需要在几个系统上编程就要学几次。学习系统类语言需要的是对系统结构和运行原理的了解,因此抽离系统的学习语法/抽象库/代码结构是没有任何意义的。 2.面对对象类。C#,Java等,推荐Java。构架方法优美大气,代码容易修改容易阅读,复用性好。然而做事上架梁叠屋,吃个馒头洗三遍手。可以学习构架方法,千万别学做事方法。 3.一门快速的脚本语言。Python, Php, Perl, Bash,各有特色。实际上如果你有空可以统统学一遍,非常有好处。快速脚本语言的特色就是整合其他代码和已经存在的东西,快速的构建出一个可用的程序。 4.一门语法抽象语言。目前只有Lisp和Scheme,推荐Scheme。这两种语言是在人工智能和符号推理的发展过程中产生的,因此对理解“机器是如何思考的”很有帮助。注意这两种语言的本质就是有限图灵机。 5.汇编。汇编语言种类太多,推荐80x86汇编。熟悉汇编语言对了解硬件和系统如何工作很有帮助,并且为查找系统内部(internal)的错误提供了便利。 按照上面的分类,程序员最少要会五种语言,我假定是C/Java/Python/Scheme/Asm80x86。C++不要学,那个是万恶之源。那么下面列举了我推荐的一些书单,可以由浅而深的学习这些语言。 1.入门,《21天学习C语言》《Dive Into Python》《80x86汇编基础教程》等等,这类书的目地是快速的教会是使用语言和语法。完成这个阶段的程序员可以找一些简单的题目做一下,但还不能独立完成普通程序的编写。 2.简单,《Think In Java》《数据结构与算法(Java语言版)》《设计模式》。这个层面基本涉及了数据结构,设计模式和编程方法。完成这个阶段后,可以找几个实际项目玩一玩了。 3.普通,《操作系统:设计和实现》《Unix系统编程》《windows核心编程》《TCP-IP详解》《Effective C》。这个层面涉及了系统运作原理和细节。完成这个阶段就可以写一些系统工具了。 4.阅读,《Python源码剖析》《深入浅出MFC》《Linux内核完全注释》。这个阶段注重阅读和积累各种代码经验。 5.专家,《计算机程序的构造和解释》《计算机程序设计艺术》《MIT算法导论》《数值算法》。通过前面的学习,普通程序编写应当已经不成问题。这个阶段面对的是将实际问题抽象成数学问题后,试图从数学上进行解决的过程。从此以上,就是数学的领域了。

小公司在IT上容易犯的几个错误

May 19, 2010 - 1 minute read - Comments

很多同学现在自己开公司,或者有开公司的计划。公司都是由小做大的,万事开头难。小公司由于成本和规模的限制,IT上很多问题是不得已的。例如没有自己的网管,没有保密规定等等。然而注意以下几个低级错误,从IT从业人员角度来说,这些是绝不应当发生的低级错误。数数看您那里有几个? 第一,无线不设密码,或使用WEP加密,或公开SSID。 这是任何称职网管的第一禁忌。WEP,公开SSID,相当于弱无线网络。通过嗅探方法,别人很容易获得网络上传递的重要数据。不要以为谁会来关心你的数据,除非你有把握把公司里所有资料晒到网上也没问题,否则还是小心为妙,出问题再补救就太晚了。具体看前面有篇《无线网络安全问题》。 第二,使用hub而非交换机。 技术角度不说了,造成的问题和上文一样。这两个问题,只要请一个称职的网管当顾问,帮你进行一次规划就可以避免。惠而不费,何乐不为。 第三,一个隔间只拉一根网线,或者只有一个电源头。 兄弟,后期搞不好隔间会坐满的。就算没有,万一坏了呢?马上找人修理?起码两个隔间三个插座/网口。一个是方便损坏后替换,同时也方便新添电脑。 第四,雇新手当网管,没有公司内服务器。 相信我,找个靠谱的网管偶尔来几次,其他让行政接手,比找个新手当网管便宜又实用。你需要的是不会出问题,和出了问题能处理的人,而不是价格低廉却在发生问题时手足无措的菜鸟。 同样,让每个员工自己发布共享文件,大家互相访问,打印机在需要的时候搬来搬去。这是最没有管理的公司做的事情。一旦员工多于三人,找台电脑做服务器。共享文件,处理打印,跑个论坛什么的,比扁平而混乱的管理强。 第五,成批购买电脑。 对于大公司而言,一次购买上百台电脑只是公司内的一小部分。如果这些电脑出问题,不会引发大的赔偿问题,也不会造成公司停摆。但是如果一个小公司一次购买同型号的电脑,或者从同一个供应商那里进货太多。那么万一出问题,不说固定资产损耗。公司停摆造成的损失也是惊人的。 第六,弱邮件系统。 如果公司邮箱在发送和接收时没有启用SSL或TLS,会导致员工在其他网络中接受邮件时内容泄密。如果使用webmail,也要注意全过程需要有SSL。最好的办法是让网管尝试嗅探攻击一次,如果拿不到内容,邮件供应商就是过关的。另外,即使电子邮件供应商过关,邮件在传递途中也可能泄密。因此对于极密级的东西,rar加密打包后发送,密码另行传递。 第七,过份信任电子邮件效力。 也许有人不知道,“电子邮件无法篡改”只在公司内被认可,拿着企业电子邮箱和其他公司或离职员工打官司是没有效力的。因此,如果需要无法篡改的内容,请用纸。 第八,太短的员工密钥。 如果您的系统很安全,然而员工设定的密码为1,这等于一个最不安全的系统。因此,强调员工密码的安全性,加上密码设定时弱密钥检查是一个很好的方案。 第九,员工自己持有文档。 文档是企业的重要资产,因此整理和保存文档是公司的责任。让行政部的人跟踪每一个应当保存的文档,不要在员工离职后打电话过去要人帮帮忙看看三年前什么什么文档是否还在。 第十,不分机密级别。 小公司对于机密的规定无法太严格。但除非所有人的机密级别一致,否则一旦区分普通员工和经理,起码将文档划分成涉密和非涉密。不要让普通员工接触涉密文档。 第十一,过分神化IT。 有些小公司过于追求现代化,上班用ERP和OA管理,销售用CRM管理,交流沟通走论坛化。何时采用IT系统管理是一个复杂的问题,但是过早追求IT化会对公司发展造成不利影响。实行IT化是有成本的,仅在你需要的地方进行实施。 第十二,有极密的内容,没有极密的渠道。 回想一下,你们公司的报价是怎么传递给一线员工的?服务器密码呢?公司银行账户呢?对于最高机密的内容,没有合适的传递渠道是不行的。QQ,MSN之类的IM工具机会百分百的会导致泄密,对于嗅探和查看记录他们没有任何抵抗力。短信和电话也是不行的,虽然很困难,但是还是可以窃听的。电子邮件在附件中放一个加密的rar文件,并且提前约定密码,是个很好的方案。

无聊的测试

May 11, 2010 - 1 minute read - Comments

现在有很多智商测试,有一类题,上面有一些数字,让你填写下一个是几。然后现在题目越出越变态,其实这种问题根本不是在考察智商,而是在考察常识。不信?我出几个你做做看? 数列-0.2,-4,-18.8,-50,下一个是多少? 答案:-105.4 原因:这是表达式-1 * x^3 + 0.5 * x^2 + 1.7 * x - 1.4在x=1,2,3,4的值,x=5时为答案。 做死你吧?还有更变态的。 数列29879,29917,29927,29959下一个是多少? 答案:29989 原因:这是30000以内的最后几个质数,隔一个取一个。 晕了?这还不是最难的呢。 数列15, 46, 78, 71, 74, 44, 81,下一个是几? 答案:54 原因:这是python的random模块,在seed(100)时产生的1-100随机数序列。随机数本质上是一个大的S盒子,通过K*prev mod N的产生余数序列。要求答案并不需要100,只需要最后一个数和KN。而通过上面的序列可以大致推算出一对正确的KN,任何满足上述算法的答案都是正确的。 够变态了吧。这可不是你智商不足,而是你知识不足。 我们反过来想一下,如果某人,假如Isaac Newton,或者Leonhard Euler,Bernhard Riemann。他们能答出多少?也许第二个有希望――有些变态数学家真的能背出很多的质数。第一个――唔,考虑一下也有戏。第三个就算了吧,他们不是程序员。然而,他们远要比我们聪明。那些不知道三次方程概念,导致没法答第一题的,一定比答出来的笨么?那些不知道质数概念,导致答不出第二题的,真的就比答出来的笨么?那些不知道S盒概念,导致没法答第三题的,就一定比答不出的笨么? 这是一种偏见,你知道的越多,越聪明。

杭州游行程记录

May 5, 2010 - 1 minute read - Comments

早上9点,在上海南站集合上动车,中午10:50就到了杭州城站火车站。上二楼打车,可以免排队坐到出租,到中山北路体育场路的旅馆。离浙报很近,我以前经常路过的。check in休整后,11:40从旅馆出发前往西湖断桥残雪。 根据gmap,本来可以到武林广场东坐Y1到断桥的。不巧,过去的时候Y1正好改线。据说了断桥那里很堵,而且距离只有一公里多点,不算远,就干脆走过去算了。沿着白堤,顶着如织的游人,我们走到孤山路的楼外楼吃午饭。运气很好,六人的大桌预约的不多,我们不到10分钟就等到了座位。点了东坡肉,西湖莼菜汤,西湖醋鱼,响油鳝丝,白灼芥兰,片儿川等菜,大家基本吃饱。人均57左右,还不算太贵。下午14:15分出门,沿着北山路到苏堤接着逛。 我们找了一圈找不到手划的小船,只能上了一条人工划的大船。价钱是120一圈,上岛一小时。我们算算不划算,还是让他划一圈直接回去算了。回到苏堤继续走人,没碰到醉春亭的隐藏Boss大叔,倒是碰到了个拿着喇叭播”霓为衣兮凤为马”的家伙。苏堤都快赶上上海地铁三号线了,什么人都有,人才济济啊。绕过花港观渔,到雷峰塔看夕阳西下。注意5月1号前后杭州地区日落时间是18:30左右,而不是我查的洋泾浜网站给出的5:15,害老子在塔上白等。往前走两公里多,到四眼井那里的青年旅舍,有一家叫”江南驿”的旅舍,饭很赞。开始去的时候还碰到老板说东西卖光怕要没的吃,最后叫号,有个人实在顶不住走了,我们才排到位置。叫了酸菜土豆牛肉,油焖茄子,麻椒鸡等一堆菜,人均才三十出头。菜量不小,东西也不错,不过是自助的。 晚上宾馆还停了一次电,闹的我们兵荒马乱。被迫用笔记本调到最亮作为光源,洗了一次此生难忘的战斗澡。 第二天,我们7点起床吃饭,结果拖到8:40才上了Y5。沿着体育场路,曙光路和杨公堤开过去,一路风景很好。下车,正是昨天吃饭的地方。继续往山里走,就到了满觉陇和翁家山,一路风景很赞。过了翁家山就是下山路,下面是龙井茶园和龙井村,我们觉得没意思就没进去。路过双峰的时候,看到旁边的茶楼是建在沼泽地上的小桥,风景幽雅。不过没进去,还是到的丁家埠吃的农家乐。东西很好吃,吃到翻过来,不过价钱也不便宜,一个人大概要50。 下午比较热,到2点多我们才慢慢出门,坐Y3到岳庙的KFC吃点甜品消暑,出门再坐K7到火车站旁边的上岛咖啡等火车。晚饭在火车站大厦的外婆家吃的晚餐,还是一贯的价格便宜量又足。不过恰逢五一,以前常在那里吃,从没看见那么可怕的火爆场面,排队等座就等了45分钟。上菜倒是很快,东西还是一样的不好不坏。 要点,去健行的记得带遮阳的帽子和一条小毛巾。小毛巾缠在手腕上,可以擦汗降温,不容易中暑。进山前要带一瓶水,自己喝,也可以倒一点在毛巾上散热。住的酒店不好要记得带牙刷,容易中暑记得带风油精。对皮肤很在意的MM千万记得带强力防晒霜,城市里用的那种大路货没用,要用很粘稠的那种,不容易被汗水化开,否则一擦就没了。一定要带一台GPS手机,基本免去没人问走错路的尴尬。

关于人力资源的一些话

Apr 27, 2010 - 1 minute read - Comments

上周被猎头了,虽然没兴趣去,但是还是很高兴。算是对自己能力的一种认可吧。顺便联系了老董,得知原来公司的近况,又看了老赵的一篇文章。觉得有些话犹如骨鲠在喉不吐不快。 1.程序员是什么人,他们能干嘛 程序员当然是写程序的人,但是不是所有写程序的人都叫程序员。(耳熟?不是所有特仑苏都叫牛奶)一个程序员,必须能够完整的了解需求,设计系统,构架系统,完成代码,并且测试通过。当然按照现代软件工程,程序员不必亲自做这些事情。甚至更严格来说,要求这些事情不能都由程序员来完成,然而一个程序员是可以做到这些的。在这以下,基本都叫代码工人。 如果按照以上的标准来衡量,老赵的这篇文章(http://blog.zhaojie.me/2010/04/why-i-say-no-to-aptech.html)里面说到的问题是不言自明的。很多培训机构培训学员使用快速工具,例如eclipse或者vs,基于可视化系统编写项目。这些学员有能力很快的完成一个项目,然而,却无法反转数组。这些“准程序员”所能做的项目,不会超出在培训中所教授的范围。例如如何完成一个论坛,或者如何编写一个博客。问题是,这些教授的内容,都是延续多年的,被反复验证的问题。这些问题,有着最优秀程序员们做出的成熟解答,根本不用这些菜鸟多此一举。 2.精英和普通程序员 昨天和猎头说到程序员和精英的区别。现在所有的老板都希望自己的队伍中能有几个精英程序员,然而joel on software里面谈到过,你很难找到一个精英(http://www.ruanyifeng.com/blog/2008/11/finding_great_developers.html)。我的问题是,什么是精英,什么是普通人。 一个人,要成为精英,需要具备什么条件呢?不是快速产生代码,也不是良好的算法能力。要成为精英,编程能力和算法能力是必要的。然而更必要的是时间-事务管理,沟通和领导能力,名气和知名度,对行业的深刻认识和远见,以及人品。精英最大的价值并不在于写程序,而是能够激活公司内其他人员的能力。例如你可以方便的招聘到其他的程序员,让风投觉得你的团队靠谱,因为他在行业内的知名度很高,有相当的号召力。他可以培育新人,和其他程序员合作,稳定可靠的完成项目,因为他拥有良好的沟通和领导能力。最顶尖的精英可以产生新颖的创意和想法,让你规避可能的风险,让顶尖粉丝围着你转,因为他们在行业内领导性的认识和远见。当然,最重要的是,他是可靠的。 3.精英一旦聚集,精英就密集 昨天和猎头谈的另一个问题就是,他们需要精英还是普通程序员。可以想象,他们的标准答案是两个都要。然而我要说的是,精英和普通人在大多数情况下互相排斥。一旦公司或部门中多数都是精英,很神奇的,很快里面全都是精英了。而一旦一个公务或部门中多数都是普通人,那么很难留住精英——很多情况下都变质了。所以最好选择一者,或者为精英们专门成立个部门。 为什么精英和普通程序员互相排斥?这个问题要分开说。精英程序员信仰简洁的人生,他们一般不屑与笨蛋说话。很多时候你向他们寻求解答,他们往往用一两句话点明这个问题的原因和机理。多数情况下这一两句话相当受用,值得你用几个小时来消化。然而多数普通程序员的问题是根本听不懂他们在说什么。曾仕强说过,一个能干的领导只有一个作用,就是证明你的手下都是白痴。在这种环境下,没有成为顶尖高手资质的,对技术没有狂热热爱的程序员会迅速离开,而有这些资质的程序员会快速的进化成另一个精英。而反过来,让一个技术高手来领导一群普通程序员是一件很痛苦的事情。要么他受尽折磨后离开了这里,要么他就变成了一个领导者。这种情况下他不再和其他程序员沟通技术细节。反之,他利用自己的技术能力建立解决问题的框架,分解问题为一些普通程序员能解决的问题,并丢给他们——而不管他们完成的细节。 4.为什么要来你们公司 如果你的公司需要招聘一个精英,那么你需要问这么一个问题。他们为什么要来你们公司,你们公司能给他带来什么? 程序员工作的最低理由是收入。从收入层次上说,基本有工资,分红,股份三种激励方式,分别对应了短,中,长期合作关系的激励。高工资的激励效果最显著,然而由于你对高级程序员缺乏有效的监控手段(谁来实施?总不能他们监控自己或者互相监控),所以员工很快会怠惰。分红将程序员的收入和一年内或一个项目挂钩,所以能够保证他们采取一切措施,保护自己的收入——同时也保护了你这一年或一个项目的收入。而股份则是将程序员的收入和公司的成长挂钩。然而这些并不是精英们愿意去你们公司的全部理由。 程序员做到一定程度后,对于非物质条件的要求是很挑剔的。往往我们能听说一个高手谢绝了大公司的工作,或者一些优厚的报酬,其原因往往如此。这些条件包括,部门中的人水准相近可以沟通(我们所说的3),工作自由安排,有自己的时间进行研究(隐含的就是加班很少),良好的工作环境,宽松的制度,等等。通常而言,这些人都喜欢去小公司或者自己创业了,其原因就是因为大公司很难给他们需要的东西。如果你打算招揽一个真正的高手,搞清楚他真的在意什么比一味的开高薪水更加有效。 5.愿不愿意要培训生或应届生 昨天谈到的另外一个问题就是,愿不愿意招收培训生或者应届生。这个问题的“标准”答案通常是,我们愿意接受新鲜血液,这些人的薪水具体要视能力而定,如果能力真的出众后期还可以调整。实际上,除非特殊情况,否则听到这这句话,你就应当了解到几个隐含的事实,这些东西往往和你的期望背道而驰。1.公司的压力很高,严重缺人,所以进去后可能会严重加班。2.新人工资很低,而且也没有什么晋升的空间。3.基本学不到什么东西。 为什么会这样?通常而言,公司不喜欢培训生或者应届生。更准确的说,是不喜欢培训生或者应届生应聘。真正靠谱的应届生或培训生,是靠HR去校园里面抢的。记得上面那个joel on software的文章?他们在校园期间就会脱颖而出,成为佼佼者,很少有校园里默默无名的人出校园后表现出惊人实力的(虽然并非没有)。通常HR会虎视眈眈紧盯这些真正有才能的人,要抢到一个都困难,怎么可能沦落到人力市场上应聘呢?因此如果你真的有才能,请在校园期间就表现出来。否则就需要等费尽周折进入一家公司后才能表现出来,而且很晚才能反应到你的收入上。 那么,一家公司愿意接受培训生或是应届生的真正原因是什么?多半只有人手不足,而且其中大多数是短期内的人手不足。因此不但可能要加班,而且一旦当人力问题缓解(更加不幸的是在你的试用期内缓解),能力不足的人还可能遭到遣退。是的,无赔偿的,虽然不是你的责任。即使留下来,也是作为一个基础的消耗品。主要的目的是承担大量的杂务工作,并且拉低工程师的薪水。为什么?当有大量廉价工程师存在的时候,工程师的薪水比他们应得的更低。一方面因为劳动力充足,导致自己是否会失业的竞争威胁。另一方面也因为比较性的从众心理,别人的薪水比自己更低,于是就心安理得了。此谓杀价妙方。在这种指导思想下,你的晋升和学习都无法顺利展开的。 6.做项目,做产品,做团队 这是整篇文章最大的一个问题。低端做项目,中端做产品,高端做团队。怎么解释? 最低端的软件产业,依靠的是软件项目实现来获取利润。实际上他们做的事情,某种程度上也可以叫人力资源外包,他们主要通过外包价格和人力资源之间的差获得利润。因此,这类公司的主要特征是拥有发达的渠道和关系网络,拼命寻找高价的,大规模的外包项目。同时借助大量低端程序员,压低人力成本。这类公司永远处于人力缺乏状态,除非公司快倒闭了。 中端的,大量的软件公司,是依靠对客户的了解,设计创新方案或者增强通用方案,改变原始流程,从而为客户带来好处。他们最大的利润来源是创造性的改变客户的原始流程,如果是互联网公司就是新的互动模式。这类公司的主要特征,是拥有一个强力的营销团队,和良好的售后体系。三流的公司往往试图改变团队来跻身其中,然而由于糟糕的流程设计或互动模式设计,或者用更流行的说法“商业模式”,因此无论其商业团队多么努力,都无法成功进入这类市场。这类公司对技术人员的成本并不很关心,只要小于产品的总收入就好。事实上通常来说,越是代价高昂的精英,往往能越好的完成改善流程,创新,设计,快速完成的过程,从而带来更高的收益。因此这类公司往往都有些牛人,少则一两个,多则一大群。 这样的公司,从业务来说是完整的,稳健的。然而从公司角度来说却是缺失的,也不是投资者喜欢的。问题在于,公司的成败依赖于少数几个人的激情和努力。包括公司的决策层,主设计师,等等。例如苹果公司的股价就强烈的受到jobs的影响。通常而言,投资者更喜欢稳健的,风险可控的公司。通过一个固定的制度,和可迁移的管理团队,来发现和聚集人才。这类公司才是我们所说的“大公司”,并非规模大,而是构架方式大气,做事方法正规,拥有着成为行业顶尖的可能性(虽然并不一定保证)。一家从外包和产品做起的公司,如果一开始就采用了粗放型管理模式,而没有妥善解决团队打造和管理上的问题。到后期往往是版权纠纷,禁业纠纷层出不穷。或者高级程序员来一个走一个,来的薪水一个比一个高,走的速度一个比一个快。或者干脆树倒猢狲散,公司一拍两散的也有。 因此,如果一家公司有意做大,请记得在一开始的时候就设计一个良好的团队打造计划和团队保持制度。否则当碰到问题的时候再做转换,往往已经太迟了。