2010年12月30日星期四

为什么我说框架和工具不是解决安全性的良好方案

    在python-cn的maillist上,刚刚爆发了一场关于动态语言合并出错的争论。问题的起源,来自于这样一个问题。
一个程序员A,写了一个函数,function1。程序员B对函数进行了调用。现在两个人分别在svn上工作,A修改了function1,而b修改了其他内容。
由于python并不在编译时检查类别问题,因此当两人的svn merge后,运行并没有出错。现在,问题只有等上线后客户提出来了。
    几乎所有的人都同意,这问题的根源不是一个语言的问题。本质上说,这是一个工作流程问题。即使是C,也只检查参数的个数和类别,对于行为的变化和参数意义的变化还是无能为力的。
1.当你公开了一个函数,并要修改这个函数的外观行为的时候,必须向其他人通告。
2.python代码要通过unittest和黑盒检查覆盖。
3.代码应当cross review。
    争论的焦点主要是在python下如何避免这个问题。楼主Zhang Jiawei的观点是使用pydev,加上工具来检查。我,沈崴,ZQ的意见是通过行为来避免这个问题。所谓行为,主要包括以下几个。
1.互相review代码。
2.修改通告。
3.编写无检查和无处理的代码,并大量运行。如果代码中有错,程序会持续崩溃。因此当大量运行程序不崩溃时,代码就无错了。
    为什么我们并不推荐使用自动化工具来检测错误呢?主要是因为自动化工具可以*找到*问题,但是却不能*保证*是找到问题最彻底的一种。我举个最简单的例子:
网络工程师A,用了pylint,找到了自己code中的15个低级bug。他很高兴,因为工具使用起来很方便。
A向领导汇报了自己的心得,建议全公司推行这个工具。假定他的领导是项目经理B。
A:这个工具太好了,一下就找出了我15个bug,我发现用这个工具很方便,blahblahblah。
B:恩,很好,过两天你在公司里面讲讲这个工具。对了,你的code review做了么?
A:我用工具查过拉。
B:你确定他找出了你的*所有*bug么?
    问题的关键,就是*所有*。我们当然不可能找出程序中的所有bug。我所知的bug最少的程序是TeX,据说在数年的时间内只有数个bug。但是其版本号仍旧是3.1415926——正好是祖率的密率——而不是pi。我们毕竟不敢——高伯伯也不敢——保证没有bug。但是通过cross review,不处理加覆盖性检测,我们可以保证bug出现的概率在某个水平以下。
    自动化工具寻找出的bug,是在这个水准以上的。就是说,自动化工具看的出的,人应该看的出。人看的出的,自动化工具不一定看的出。如果做不到这点,说明你的水准还不足。
    所以,当我们需要一个尽量无错的code时,当你pydev/pylint,或者其他工具做了检测,问题是否解决了呢?没有,你仍旧需要review来保证没有bug。这样一来,工具的意义在哪里呢?
    当然,这并非说在做code review之前,你*不能*去做一遍代码扫描。只是说这样做并*不能替代*对错误的人工控制行为。
    除非你的目标是使用最低的成本,将错误减少到一个可接受的规模——而不是最低。就像我们在外包中常做的那样。这种情况下使用工具是比较合适的。
    而且一旦使用工具,很多程序员会产生依赖。所谓依赖,并不是讲从逻辑上他们不清楚在代码扫描外还需要独立的人工检测。但是在检测时,心里就会抱有一种放松的心态。尤其是其中某些虫族程序员让人无语叹息的行为。在中国的程序员界,有着诸多非常有创造力的bug提供者。例如擅长用str+=的java网页程序员很常见,这属于常见问题。但是自己写一套字典映射规则以完成数字到字符转换的(就是c下面的itoa).net程序员真的让我大开眼界——而且他同时犯下了str+=错误。要指望工具修正+=是可以的,要指望工具找出这类极品代码,估计下面会有更极品的人犯下更极品的错误。。。

2010年12月25日星期六

elisp的简单介绍

    emacs是利用elisp写成的,而elisp是lisp的一个方言。lisp语言是出名的优美和晦涩,当然,更出名的是括号。。。
    emacs利用elisp作为上层抽象。首先,emacs提供了基本的编辑器框架,包括文件操作函数API,buffer,frame,windows的API。而后,emacs附带了很多函数实现,并且和按键一一绑定。例如Ctrl+N(简写为C-N)就被绑定到“换到下一行”这个API上。于是,我们按下Ctrl+N的时候,就会触发“换到下一行”这个函数的执行。dired等插件也是基于类似的原理写成。
    我们可以用类似的方法,来编写自己的函数,扩充emacs的功能。下面我们看一个例子:
(defun popup-term ()
  (interactive)
  (apply 'start-process "terminal" nil popup-terminal-command)
  )
    首先先说明一下,elisp的基于规则是利用括号匹配的s表达式,通过特定规则计算表达式。每个表达式由多个原子构成,一个原子可以是符号,对象(数字或者字符串),序对,表(包括空表),树,以及他们的嵌套。求值的时候,第一个原子做动词,先求值第一个原子,直到得到一个对象,再根据第一个原子的特性决定正则序和应用序。应用序的先对每个后续原子求值,再调用第一个原子对应的对象。正则序直接交给第一个原子对应对象处理。上文那个表达式,最外层的是(defun)列表,defun是函数定义函数,popup-term是符号。这部分混合起来,就是定义(interactive) (apply 'start-process "terminal" nil popup-terminal-command)为一个函数,并在上层框架空间内把内容赋值给popup-term这个符号。说的更直白一点,就是定义函数。
    当我们执行popup-term这个函数的时候(M-x加上函数名就可以手工调用),首先执行interactive过程。这个函数可以在这里(http://www.gnu.org/software/emacs/manual/html_node/elisp/index.html)查到,基本上,可以认为执行了这个函数,才能够和前台交互。而后是apply函数,这个函数将后面的几个值作用于紧跟着的那个符号所对应的函数。用python语言来描述,大概是这个样子。
def apply(func, *param): return globals()[func](*param)
    这个函数真正的部分,是从start-process到括号结束。其意义是启动一个子进程,名为terminal,没有对应的buffer(熟悉emacs的应该知道这是什么),命令为popup-terminal-command。这个命令在windows下和linux下有不同定义,所以我将这个定义放在了emacs-win.el和emacs-linux.el里面。在linux下,他是这么定义的。
(setq popup-terminal-command '("x-terminal-emulator"))
    setq是设定一个全局变量。整句合起来的意思是,在执行popup-term的时候,启动一个子进程,执行x-terminal-emulator。最后,将popup-term绑定到keymap上。
(global-set-key [(control c) (s)] 'popup-term)
    现在,在任何一个buffer中按下C-c s,就可以弹出当前目录对应的term了。
    我们在emacs中所做的所有配置,插件安装,其实本质上是写代码控制其他代码的载入,变更环境变量。只要有合适的文档,或者有时间阅读源码,我们就可以对其他程序进行扩充。下面介绍一个对dired进行扩充的例子,我们向dired中加入copy-from和rename-from,还有dired-open功能。dired的copy和rename必须在源目录中,选择文件,按C,输入目标路径。有的时候我们在某个目录工作到一半,突然需要从另外一个目录复制一个文件过来。这时候打开对方目录进行复制动作太繁琐,因此我编写了两个函数,分别绑定到r和c上。dired-open则是另外一个文件,有时我们需要通过其他程序打开某个文件,例如播放电影。在dired中直接用&可以实现这个目标,但是需要自行输入播放命令,而且会新开一个buffer。以下是代码。
(defun dired-open-file (&optional arg)
  (interactive)
  (apply 'start-process "dired-open" nil
         (append (split-string
                  (read-shell-command
                   "command: " (dired-guess-cmd (dired-get-filename))))
          (list (dired-get-filename)))))
(defun dired-copy-from (&optional arg)
  (interactive)
  (let ((source-path (read-file-name "filepath: ")))
    (copy-file source-path (file-name-nondirectory source-path))))
(defun dired-rename-from (&optional arg)
  (interactive)
  (let ((source-path (read-file-name "filepath: ")))
    (rename-file source-path (file-name-nondirectory source-path))))
(add-hook 'dired-mode-hook
          (lambda ()
            (define-key dired-mode-map "b" 'dired-open-file)
            (define-key dired-mode-map "c" 'dired-copy-from)
            (define-key dired-mode-map "r" 'dired-rename-from)
            (define-key dired-mode-map [(control c) (g)] 'dired-etags-tables)
            ))
    如上文一样,我们定义了dired-open-file函数,这个函数的核心部分是start-process,但是在命令上,我们的命令是这个。
(append (split-string
                  (read-shell-command
                   "command: " (dired-guess-cmd (dired-get-filename))))
          (list (dired-get-filename)))
    这段代码,是将两个表进行混合。第一个是从mini-buffer读取入一个命令行,而后分解为列表,读取时的默认值由dired-guess-cmd这个函数确定。第二个表是当前光标所在的文件名。两者合起来,在执行的时候就会变成命令行后加上文件名的执行效果。而dired-guess-cmd这个函数,接受当前文件名作为参数,猜测一个正确的命令行。在windows下,大多数时候等于start,linux下则是大多数时候等于xdg-open。
    下面的dired-copy-from和dired-rename-from函数非常简单,大家可以自行分析。不明白的函数可以查阅上文那份elisp的参考手册。
    最后,我们把这些函数绑定到键上。由于不是全局绑定,因此不能使用global-set-key。非常幸运的,dired在加载的时候会调用dired-mode-hook。我们将一个lambda函数加入这个函数调用中,这个lambda函数中,使用define-key定义了键和函数的对应关系。于是,我们在dired模式下,通过b c r就可以调用以上三个我们编写的功能了。
    elisp可以通过pymacs和python进行混编调用,但是通常并不需要这么复杂而强大的东西。我们可以通过进程级python调用的方式调用python脚本达成任务。例如一下这个脚本。
(defun dired-etags-tables ()
  (interactive)
  (let ((etags-path (expand-file-name (read-directory-name "etags path:")))
        (python-command (expand-file-name "~/.emacs.d/gen_etags.py")))
    (call-process "python" nil t nil python-command etags-path)))
    在某个目录下,按下C-c g,会自动生成目录下所有可能的程序文件的TAG,供visit-tag-table使用。这个python脚本就不附上了,大家可以用自己喜欢的语言编写,例如ruby或者bash。
    最后,在此提供一个比较简单的emacs脚本调试技巧。通常我们写好程序,在表达式的括号上按下C-M-x就可以eval这个表达式。用这个方法,可以在不重启emacs的情况下更新函数。类似的,用C-u C-M-x就可以对函数设定EDEBUG包装。这样当你调用这个函数时,会弹出断点窗口。按下SPC就可以单步执行脚本。

2010年12月20日星期一

空间,VPS和独立主机的对比

    空间和VPS的差异最主要在支持的压力和配置的自由度上。通常而言,空间支持的压力比VPS要小,配置也更加不灵活,当然,也可以叫更加简单。两者都可以通过加钱来升级到更加性能优异的程度,因此很难说什么情况下该用什么。简单的做法是,如果空间能满足你的要求,就不要折腾VPS。通常折腾VPS的都起码是专业公司了,通常都有自己的网管。一般公司的误区是,希望自己拥有对机器的完整权限,因此更倾向于托管机器。然而托管机器的成本并不像你所想像的那样低廉。
    首先,同样的硬件,在你手里的利用率一定比在VPS商手里的利用率低。这是理所当然的,VPS商就是通过组合不同的性能组合,精细调整压力,来赚钱的公司。在VPS商手里,基本每字节内存,每个CPU时间片都是充分利用的。而一旦你买进托管主机,用的掉不用掉这都是你的事情了。当然,与此对应的,当高压力到来的时候,VPS比自己托管机器的响应更快。基本只要信用卡刷下去,性能就立刻上去了。
    同样,这个特性也比较适合那些资源的峰谷比特别夸张的公司,尤其是一些几个月内会受到超大压力,过后肯定会被放弃的项目。VPS方案可以允许你短期内租用一些机器来工作,过后没有扫尾工作。
    其次,由小公司运作的设备,其平均无故障时间远低于专业VPS商,也低于主机托管商。道理也很简单,硬件的物理损坏会降低平均无故障时间。而虚拟主机和VPS都是通过无单点故障的均衡系统来解决这个问题的,这个方案对于只有几台设备的小公司不适用。更进一步说,如果万一出问题,非专业人员的恢复时间无论如何比专家来的慢。
    最后,最主要的是,如果使用空间或者VPS,你无需关心硬件淘汰问题。通常网络公司很少碰到多年后使用寿命满导致的机器淘汰,通常都是性能不足而进行的机器替换。汰换下来的机器用起来不方便,卖掉不合算,是个很鸡肋的东西。VPS商会自行处理这些事情,并且在机房升级后,通常还会给用户一些自动升级。
    我们现在来算一个实际问题,一个比较典型的小网站,平均同时在线人数大约是400人,峰谷比大约是1:5。页面滞留时间按照20s计算,每页面流量10K,每session内存消耗0.5M。为了支持峰值在线,大约需要1G内存,瞬时带宽消耗大概是1M/s,一个月的数据流量大约是600G。一台中等的1U小型服务器大概是2W,分摊到3年折旧,每个月就是600。1U的托管最低是6000(我怀疑现在哪里还能弄到这个价格),最高的有10W的。按照1.2W计算,一个月是1000。加上少量的中间费用,直接管理硬件的成本大约是1800-2000RMB/mo。dreamhost的不限空间不限带宽服务一个月费用是9美元,折合60RMB/mo不到。gplhost上的Xen服务器,60G硬盘1.2G内存360G带宽是70美元,折合450RMB/mo。其他厂家也有200-350RMB/mo不等的类似服务方案,不过有可能是基于OpenVZ的,有超卖的可能。
    为了支持这个小网站,如果使用小型服务器托管方案,那就是一台服务器搞定,1800-2000RMB/mo。如果是Xen服务器,大约是900RMB/mo。如果是空间,性能顶得住就是60RMB/mo,顶不住就当场崩溃。
    基本结论是,如果你的程序并不特别重要,那么用空间。如果应用的峰值内存消耗小于2G,那么用VPS。如果峰值内存消耗奇高,或者月流量超大,还是自己托管服务器稍微省点钱。

2010年12月19日星期日

从电影贴片广告说起

    昨天去看了姜文的让子弹飞,挺不错的一部电影。片子简洁大气,很有张力。不过这不是重点,重点是,贝壳头一次碰到了传说中的贴片广告。
    电影贴片广告分为两种,占用播放时间的和不占用的。后者是在电影票预定时间之前的广告,前者则是在电影放映许可后的。例如昨天的让子弹飞,电影票的时间是11:20,广告是从我入场(11:15)做到11:30,足足做了15分钟。头5分钟是不占用播放时间的,后10分钟是占用播放时间的。贴片广告让人反感又价值巨大,是因为如果不在电影院规定播放时间入场,就不能再入场。而一旦在规定时间入场,后面的时间就是完全的广告时间,必定人人都看,这种行为很让人倒胃口。广电总局曾明令禁止贴片广告占用播放时间,但效果不彰。电影院申辩说,他们和片方签订的协议规定电影院不得随意剪辑电影,而贴片广告则是加在电影头部的。但是广电总局的规定中也说到过,可以安排电影提前播放,观众在正式影片播放时间入场。可见院方理由是在推托责任。按照常理分析,院方如果没有好处,是不会做这种又得罪广电总局又得罪观众的事情的。由此可见,院方也能从贴片广告中分得一杯羹。
    从某种意义上说,这是广电总局监管不到位的原因。不过我们对照广电总局对于各种节目的管理,还有在魔兽世界问题上广电总局的威风,就会发现,广电总局有的是办法和手段来管理。他们能禁掉和自己完全没关系的网络服务器,难道不能关掉电影院么?哪家不执行关哪家,电影院不执行关电影院,片方不执行不给许可证。可是他们没有这么做,除了一个规定外什么都没有。可见广电总局并不是真的想管贴片广告,只是迫于观众的言辞不得不虚与委蛇。由此再深追,难保其中没有什么猫腻在里面。
    但是细细去想,真的只是广电总局的原因么?很多时候我们都把责任推给政府,像鸵鸟一样忘记了自己也有责任,而且自己是受害者。对于贴片广告的问题,在完全市场中绝对不可能存在,这是完全不对称信息的特征。很简单的去想,如果每个看过电影的人都可以给出电影的细节信息,例如市百一店影院在让子弹飞前面播放10分钟贴片广告,并且每个准备看电影的人都能收到。那么贴片广告越多,越少有人观看。当然,对于热门时间段而言,即使是贴片,或者票价昂贵,位置不好,一样会满场,这是市场特征。然而我们却没有一个机制,让看电影的人,能看到看过电影人的评价。这分为几个原因。首先是很多看电影的人,对这些信息不关注。大多数临时决定去看电影的人,总不会先检查电影的所有特征吧,最多看看影评就差不多了。这个导致了看过电影的人对传播这一信息没有热情,反正说了也是白说。不过最关键的,是我们的反馈信息传播机制存在问题,主要是传输渠道会被人为的扭曲。
    例如,我们的报纸,新闻单位,对电影的评价传播起到相当重要的作用。但是这一渠道是可以公关的,片方可以通过金钱来驱使这些单位不报道自己的负面新闻。不是有个笑话么?每年春节和三一五都要花钱,不过前者是花钱要求上节目,后者是花钱要求不上节目。而我们的民间传播渠道,则多数是由少数的知名人士,包括名人,博主,作为中心的。这种模式的好处是可信,你知道这个人是谁,他的背景,他会为自己的话负责。然而,同报纸电视单位相同,这种个人也是可以公关的。我们可以证明,可信和人为扭曲是必然同时存在的。你越要求可信,信息越容易被扭曲。
    从个人的角度说,我们也许无法改变整个链条,不过我们可以改变末端规则。如同那个笑话说的,有个买便宜货的诀窍——永远买第二的产品。我们在听取一个事情的信息的时候,往往要刻意的保持一定比例的私有消息和不可信消息源。我们的朋友,不出名的人士,所传递的小道消息。用这些消息和官方的消息互相验证,来形成信任链——说过越多可信的,有价值的消息的,我们越信任。可以证明,这种信任网络是很难被单点劫持的。

2010年12月15日星期三

公司的网络服务选择

    最近碰到不少朋友需要做网站,或者做一些网络产品对外服务。下面统一解答一些基础概念问题,程序员或者本行的人士可以不用继续往下看了,都是常识。
    1.网站/产品都包括什么东西?
    从最简单的来说,你做了几个页面,放在网络上,让其他人看,这个就属于网站的范畴了。更复杂的,论坛,wiki,产品目录,公司主页,都属于互联网网站/产品。
    2.为了让别人可以访问你的产品/网站,你要做什么。
    我们有个术语来描述“让所有人可以访问你的产品/网站”这个定义,叫做上线。作为基础,你需要一个服务器,和一个域名(这两个名字我们下面解释)。也许你需要一些其他东西来让网站上线,但是至少一个服务器和一个域名是必须的。域名是你对外宣传的基础,其他人通过域名来访问你的网站。服务器则是支持别人访问的系统。
    如果你打算对使用中国的服务器,或者说在中国经营,那么你需要在中国的网络管理部门进行备案。
    如果你打算使用现有的程序,或者不需要开发程序,那么你可以忽略程序开发过程。但是大多数人都需要一些经过修改的程序,乃至于编写一些程序来让网站运行。
    无论你在上面作出了何种选择,最终,你需要维护你的网站。如果你不熟悉这个过程,可能还需要一个人来管理这部分。
    3.听起来很复杂的样子,那么,怎么做?
    我们先解释怎么弄到服务器和域名,还有备案,程序开发和维护后面再说。
    如果你对上面这一切完完全全一点点都无法理解,那么你可以不用继续阅读了。找一个信得过的专业人员,或者让信得过的人推荐一个,然后让他搞定这一切吧。
    如果你还基本能听的明白,那么可以自己试着去买一个服务器和域名。我建议你从购买空间开始。
    空间:多人合用               多人共享一个IP              只提供网页和邮件服务                 很难安装系统软件
    VPS:多人合用               一台机器一个IP              提供所有服务                              除了部分内核组件外,都很容易安装和更换
    独立主机:一人独用        一台机器一个IP               提供所有服务                             可以任意管理
    通常,大多数空间服务商都提供域名购买服务。域名和空间都是要每年付费的。注意,由于空间很难安装系统软件,因此空间支持的语言通常都是限定的,现在大多数都是支持asp或者php,偶尔有支持其他语言的,不多。在进行程序开发或安装时,必须确定空间可以支持这种语言。
    如果你面向中国的群众提供服务,或者机器在中国,就必须进行备案。一般的空间服务商也提供备案业务,不过备案的情况非常复杂而且随时都在变化,因此请询问清楚现在的情况再做决定。如果可以的话,我建议尽量不要将服务器托管在中国,或者购买cn域名。
    4.我买了一个空间/VPS,还有域名,然后呢?
    那么你需要把合适的程序开发出来,并且放上去。通常来说,你能想到的东西一般都有良好的开源实现。你可以咨询一下专业人士,并且尽量听从他们的建议。大多数个人和公司的需求,都可以通过在开源的论坛/blog/wiki/CMS系统/ERP系统上进行简单的配置/混合/定制开发来解决(很绕?简单来说,肯定有现成的)。千万不要低估开发的成本,也许你觉得程序员很便宜,想自己动手,找一些人做一个出来。但是就我的经验,在IT业没有经验的公司要进入这个领域,几乎没有成功的经历。主要问题在于不熟悉流程和管理,导致开发总是在莫名其妙的地方停顿,并且产品的质量很难控制。(简单来说,你会掉到泥潭里)
    如果你真的需要进行开发,外包是一个方案,但是也很容易失败,问题的核心也是无法控制进度和质量。对于小规模的东西,找信得过的人单人开发或者推荐人开发是个可靠性很高的方案。
    5.我有程序/我找到了合适的程序
    恭喜你,现在离上线只有一步了。你需要将你的程序放到你的服务器上,并且将域名指到服务器上,这一步可以请一个专业人员来做一下。然后你的产品就上线了,我们管这个过程叫做部署。
    但是,且慢高兴。除了第一次的部署,你还需要定期做例行维护。例如你运行了一个论坛,总不能让人上来全看到广告吧。你运行了wiki,上面全是骂你的话。你的产品目录需要经常更新,邮箱更是天天要看。通常你需要至少一个人,来盯着你的产品。如果不复杂,叫个行政兼职看看就好,如果比较复杂,还是请职业网管的好。如果你要将这个产品的名气打响,还需要进行产品的推广/营销工作。这部分就更加复杂了。
    6.让我总结一下
    你最好找一个专门的咨询人员,咨询一下有没有适合你的产品,能不能简单定制一下搞定。如果可以,你需要支持哪种语言的空间(如果你用空间的话),压力大概多大,能否支持。自己去购买合适的空间或者服务器,还有域名。然后让人(通常一事不烦二主,咨询人员也兼职部署)部署上去,并且找个人盯着。大概就是这样。

2010年12月14日星期二

Cybersitter诉大正及索尼案

    准确的说,应该叫Cybersitter诉大正案。
    1.这是一起知识产权案子,属于私人起诉私人,和政府没有关系,和美国表达对中国网络审查现状的不满一毛钱关系都没有。
    2.美国法院和美国政界的总体倾向是判决Cybersitter胜诉,而且追偿不会太低。这次拒绝在中国审理而坚持在美国审理就是非常明白的表现。
    3.这倒是不难理解,对于知识产权,老美向来非常重视的,尤其是这种能正大光明宰中国一刀的案子,能打多大就多大。
    4.中国官方也许会试图通过外交影响判决,也许不会。因为绿坝这个问题上连自己人都觉得脑残。但是即使是国家主席去讲话,美国也肯定不会理会,因为美国对中国的版权惩罚已经作为一种对抗战略执行了。
    5.如果真的跨国追偿,大正公司肯定以倒闭对应。他们会老老实实的准备应诉才是奇怪的事情呢。就算应诉,肯定也输,到最后一步,肯定倒闭了之。
    6.更可能发生的,具有中国国情的事情,是大正公司不予理会。而后是美国要求中国履行版权协定的相关条款,否则诉诸WTO等等的威胁,而后是两国的政治博弈。
    7.中国人民的税金肯定拿不回来了,中国的媒体对此表示完全不知道。
    8.索尼,方正等几家公司是追偿的主力,肯定要出血。他们在美国有业务,基本不可能不理不睬。
    9.工信部可能会以政策来换取几家外国公司高层的谅解,也可能不需要谅解。对于中国公司,完全不用考虑这个问题,因为这些公司属于被工信部管理的对象。
    10.但是即使如此,工信部今后的命令在这几家公司也未必能得到完全的执行。因为在这个问题上,工信部出尔反尔在前,属于无智商的脑残。事后的政策也不可能给几家公司一个太大的漏。
    11.这件案子影响最大的将是在国际上,尤其是美国有比较大业务的公司。他们在中国犯下的版权错误,只要一方牵涉美国版权,可能在美国得到审判和惩罚。

2010年12月13日星期一

程序员的路线和培养

    也许我说过这话了,再说一遍也不嫌多。程序员不要什么都学,什么都吃。不但要吃好的,而且要能穿起来。先学什么,后学什么,学成是什么,大概要有个数。不在这个范围附近的东西尽量别碰,活也尽量别接——除非钱贼多。
    很多新手程序员和我以前一样,看到好的技术就去学,看到大牛就去拜。结果php程序员同时还会汇编,又玩过过图形识别——这种技术组合想干嘛?joel on software表达过类似的意思,程序员的时间很值钱,最主要是前面做过的东西会变成后面的财富。前面做了个项目赚1000,后面做有关项目的时候就可以以一半的成本做1000。这样下去,只要项目足够——或者有人请你——做到三年以后工资往往是前面的几倍。反过来,前面两千三千挑值钱的做,往往到了后面还是这个值不变。用另一句话描述,“我要找的是五年经验的程序员,不是一年经验乘以五的程序员”。
    差不多就是这么回事了。

2010年12月9日星期四

U盘安装debian的技巧

    翻译文,原文看这里
    首先,去一个足够好的镜像(有些二级镜像会没有iso等安装文件的镜像的,具体可以看这里)下载debian/dists/lenny/main/installer-i386/current/images/下面的boot.img.gz文件,然后执行:
zcat boot.img.gz > /dev/sdX
    sdX是你的U盘设备。再然后,下一个businesscard文件放到目标盘上,这时候/dev/sdX是一个fat格式的文件系统。重启后,businesscard就会自动运行,如同被刻了一张光盘一样。
    简要说一下businesscard,netinst,和完整光盘的区别。businesscard上没有任何安装包,所以你所需的所有安装包必须从网络上抓。这种安装方式下,没有网络就无法安装。netinst上有最小系统所需的安装包,大概100M上下。在无网络的情况下,可以安装出一个字符界面的可联网系统,用于进一步配置。而完整安装光盘把600M多的软件包全打了上去,即使没有网络,你也可以装出一个标准的图形界面可工作系统。2张DVD的那种安装光盘把i386的所有安装包都打了进去,你要装什么都不用上网了。
    装大量机器的时候,建议使用businesscard加上缓存代理。

2010年12月8日星期三

盗版的盗版

    最近追书,很不好意思的,在看盗版。
    最新两章,有内容和上面对不上,而且是每个网站都对不上。
    联想到上次晚上12点整出书,12:10分出所有网站盗版一起出来的情况——
    ——这年头盗版商都是盗来盗去的。。。
    是不是该考虑花钱看书了啊。

2010年12月2日星期四

一个产品的预测

    简单点说,我预测客厅电脑会在3-5年成为一个潮流。下面给出一个客厅电脑的可能特性。

1.具有wifi,并且可以做AP。
    设备具有wifiAP的能力后,就可以直接取代路由器。不但具有节约一个设备,而且可以做一些比普通路由器更加强大的功能。例如下载托管(关掉主机继续跑ed/bt/http),流量控制,IDS防火墙等。
    同时,对于其他设备,可以逐步支持wifi标准,通过wifi操控。例如照明的自动控制,音箱音量智能感知和控制。开放的wifi标准加上UDP做起来并不太难,最大的问题是wifi芯片的成本能降到多少。
2.平均功率<20W,峰值功率<40W,体积大致相当于笔记本。
    设备需要扔在电视机顶端或者下面,一直开机的。如果大小太大,或者功率太大,就没有实用意义。
3.内置摄像头和麦克风。
    游戏经常需要,同时也可以支持可视电话。
4.支持VGA,支持DVI/HDMI。
    兼容高清电视和显示器。
5.最高计算能力。
    在保持网络流量的同时可以播放1080p的高清电影。很明显,做不到是没意义的。
6.120G-320G常态硬盘。
    一方面是大规模下载需要,另一方面也可以作为多台电脑共享存储的外置硬盘使用。
7.具有晃动光标的遥控器。
    这东西是要给普通用户用的,没有遥控器是不行的。但是一些复杂的特性通过遥控器反应太慢,通过鼠标也傻了点。可以考虑采用遥控器模拟成概念上的激光教鞭的方式,沿着遥控器顶端延伸和电视平面交汇成为一个活动光标。
    这个东西的实现难点在于,电视屏幕只能发送图形信号,无法接受信号。触摸屏对此没有任何帮助,暂时可以考虑使用android暂代遥控器来辅助。android内部一定带有重力感应系统。将android固定在一个点上,通过对准屏幕上不在一条线上的三个点点击校准,可以建立起以屏幕中心为基准三维坐标系。并且根据每时刻的传感器回馈,可以知道每个时刻的方位和指向。通过这些数据,可以轻易算出交汇点。当然,使用wii类似的系统是个更好的思路。

    问题

1.wifi信道不足
    要是多几个家庭使用,即使交错信道,每个信道上可用的带宽也会降低到10Mbps以下,折合大约1MB/s。这个速率对于高清电视太勉强了些。比较直观的解决方案是802.11n。
2.成本控制
    上面的参数可以看的出,这种东西的主系统硬件不会小于1000。加上各种研发开销,运营成本,要把价格压到1500-2000才有竞争优势。否则主机也就2000-3000,买个客厅电脑,又没有显示器,又不能打游戏。
3.晃动鼠标的技术不成熟
    设想很不错,技术不成熟。

2010年12月1日星期三

在中国,高薪养廉是个伪命题

    高薪养廉的基础逻辑是什么?公务员薪水不够高,就无法维持公务员的廉洁,所以需要给高薪。
    恕我直言,在哪里,这都是个伪命题。我们可以看一下这个命题前半部分的逻辑,应用德.摩根率后,我们的结论是“公务员廉洁,他的薪水必定够高”,而不是“公务员薪水够高,就可以维持公务员的廉洁”。在中国,关于后者,有个再直观不过的反例。中国被判刑的高级公务员的涉案金额是多少?上千万算少的了吧,虽然这些钱不能算薪水。但是一个人,弄个千万还不能维持自己的生活么?如果可以,怎么会出现超过千万的贪腐的呢?
    高薪养廉的基础,是公务员无法通过权力获得灰色收入。在这种情况下,如果只维持低薪,干的比狗累,活的比猪惨的工作势必会搞到没人想去。哪怕维持社会上的平均工资,公务员也是没有任何吸引力的。拿一样的钱,被一个老板盯着和被一群老板盯着是完全不同的两个概念。如此一来,要维持有足够的人来进行工作,势必需要将公务员的工资提高到正常工资以上。
    新加坡在这类基础上,提出了一个类似保险的概念。通过加重查处贪腐的力度,和执行高强度的惩罚机制来抑制腐败。而且规定公务员很大程度上的工资都会被转移到公积金和养老金中,一旦被查出来,这些钱都会被归零。我们可以想见,高强度的惩罚机制会严重的吓阻人才进入公务员领域。花了公家2000要判刑四年?鬼才愿意去干。在这种重刑下,为了能保持公务员人数,唯一的路子只有“高薪”了,这才是高薪养廉的原始逻辑。
    在中国,先把权力监督机制和执行高强度的惩罚做起来再说高薪养廉。

2010年11月30日星期二

重载造成的隐蔽错误

    大家看看下面的代码在什么情况下才会出错?情况很特殊,想自己思考的不要先看第二段。
    if ton in self.ftol: self.ftol.remove(ton)
    ftol是一个list,报出的错误是ValueError。经过上文的打印,赫然发现——self.ftol中真的没有ton!



    好吧,我们揭秘谜底。
    ton是TimeoutObject类型,这种类型的对象通常放在一个list中进行堆排序,来确定最早的一个timeout对象。为了实现堆排序,我使用了heapq。而为了heapq是没有key或者是cmp参数的,因此我重载了TimeoutObject.__cmp__对象。然而根据python源码,list对象在进行in计算,以及基于in的remove计算的时候,__cmp__先于内置算法,内置算法先于id相同。因此,in函数在进行对象是否在列表中的计算的时候,实际上使用的是一个比较函数...这肯定无疑的会导致乱糟糟的结果。
    为了解决这个问题,我又重载了__eq__函数,定义为self is o。问题立刻解决了。
    之所以python内置的算法,会定义__cmp__先于内置算法,内置算法先于id相同,是因为有很多对象需要人工定义比较算法。如果id相同优先,那么这种自定义的能力将无法实现。然而为了in算符中为何会调用__cmp__,只能说是一个不解之谜。

2010年11月23日星期二

要这么招人恨也挺不容易的

    今天看看笔记本电池,突然想知道一下还有多少容量(不是还剩多少电,那个可以通过windows直接看到)。于是需要找一款笔记本电池查看软件。
    我上网搜了一下"笔记本 电池 软件"(一开始就没去baidu,刚刚查了一下,果然满屏幕卖电池和讲电池保养方案的),出来了很多中文网页。我看了看地址,是google.com.hk
    再看看这些软件,仔细看看他们的广告词,说的天花乱坠。我不由有点担心,这台电脑可不是linux,要是中毒还是挺麻烦的。
    罢了,还是找google.com/ncr去搜一下battery status吧。找个外国软件虽然比较难用,不过基本不用担心里面有木马病毒什么的。
    做人要做到这么招人恨也挺不容易的,明明还什么都没干呢,怀疑已经先来了。对比某些国家和地区在某个事件上的处境,我觉得不容易的人不少。

2010年11月21日星期日

如何做一个mercurial的http发布

    我假定你了解hg,了解python,理解nginx或者其他cgi/fcgi的配置过程。现在想用http发布自己的mercurial仓库,而且可能发布一群,怎么操作呢?
    首先,复制模板文件过来,你可以挑选其中之一。以下是debian的文件位置,其他发布请自行查询。
/usr/share/doc/mercurial-common/examples/hgweb.wsgi
/usr/share/doc/mercurial-common/examples/hgweb.fcgi
/usr/share/doc/mercurial-common/examples/hgweb.cgi
    我使用nginx+fastcgi模式部署,因此复制了hgweb.fcgi。我假定你的仓库在~/hg下面,有很多子仓库。复制hgweb.fcgi到~/hg/下,改名为hgweb.py,并修改以下两行。
config = "/path/to/you/config"
WSGIServer(application, bindAddress='hgweb.sock').run()
    其中bindAddress为你需要监听的unixsocket路径,没有前缀表示在当前目录生成。而后建立配置文件,大概为以下内容。
[web]
allow_push = someone
push_ssl = false

[paths]
/hg/proj1=/path/to/proj1
/hg/proj2=/path/to/proj2
    以上就完成了hgweb的服务配置,/hg/proj1是你的url映射路径,/path/to/proj1是物理路径。someone是允许进行push的人,而push_ssl是允许http推送。而后,启动服务。
python hgweb.py &
chmod 666 hgweb.sock
    注意,这里要用screen之类的程序来启动hgweb,否则term关闭后服务进程停止,就没的玩了。修改权限是因为debian下的nginx使用www-data运行,对/home/user/hg没有读写权限,导致无法使用unixsock。
    在nginx中做以下配置。
location ^~ /hg/ {
    limit_except GET {
        auth_basic "Restricted";
        auth_basic_user_file /home/user/hg/users;
    }
    fastcgi_pass   unix:/home/user/hg/hgweb.sock;
    include fastcgi_params;
}
    如果你不需要auth,可以自行参照nginx的配置修改。其他web服务器以此类推。重启服务后,http://domains/hg/proj1就可以访问到proj1了。
    当然,其实最后还要提一句,如果你不需要web界面,可以直接设定将文件内容直接发出去,这样也是可以做pull/push的。
参考:

2010年11月15日星期一

为什么高性能框架都是http的

    很多高性能的web框架,例如沈崴的euraisa,fackbook的tornado(这两个都是python)框架,都是http的。这和我们的印象相反,python,或者其他高级语言不是都很慢么?为什么都用这个来做http服务器呢?
    这个我们得从服务器架构开始说起。最初的时候,没得说,所有的都在同一个机器上,甚至可能使用cgi模式。在访问压力上去后,为了增强性能,首先被拆出去的应该是数据库服务器。而后会考虑使用fastcgi或者scgi进行部署,前面使用apache或者nginx做前端。在这个时候,fastcgi是有道理的。因为apache在静态文件处理的性能上远高于python框架(而且快数倍),而nginx在大规模静止长连接的情况下性能更优异。而且,更进一步说,在性能压力加大的时候,应用服务器会被拆分,这时候apache/nginx做反向代理很容易做到负载均衡集群。
    然而,如果压力再上去呢?在这种情况下,通常考虑的两件事情是静态文件拆分单独的服务器和应用服务器的硬件负载均衡(没钱的话也得考虑LVS了)。道理很简单,即使服务器性能能无限提升,网络接口的性能也不会无限制的上升的。完成这两步后,我们再来看整个架构,会发现反向代理变成了一个鸡肋。静态文件处理?不在这些服务器上了。负载均衡,系统级有了。apache/nginx有什么用呢?难道就是把http协议转换为fastcgi协议?
    所以说,要达到高性能,框架应当是直接处理http的,并且支持大量的客户进行长连接。当压力小的时候,使用nginx的反向代理模式进行工作(而不是fastcgi协议)。当压力大的时候,拆开静态文件,直接上去服务全社会。

2010年11月10日星期三

中国有IT业么

    中国有IT业么?大家这么多年,看着IT业红红火火,其实神马都是浮云。
    1.中国有宽带接入么?
     没有,你可以找中国的强制法律文件,什么是宽带。结果只有字典上的定义,而没有强制标准。如果没有一个法律意义上的强制标准区分宽带,怎么能说什么是宽带,什么不是呢?结论就是,任何人都可以说——我在用宽带。这不等于没有?在唯一的一个WIFI接入加密标准和其他国家不同的国家,一个什么标准都要自定的国家,却没有宽带标准,真TMD扯淡。即使我们不说国家强制标准,我们说国际标准。目前上国际对宽带的定义已经是4Mbps,而中国目前大多数家庭所使用的标准还是1Mbps,偶尔见到有2Mbps的。而且大多数人的网络接入价格还和5-6年前没有任何变化。即使考虑通胀,我们说电信资费其实在缓慢下降,这和电信接入高速发展的事实也毫不相符。
    2.没有宽带接入又如何?
    我们要知道一个事实,中国的10亿网民,事实上都在使用窄带接入。宽带和窄带的最大差别在于,窄带只能承载文字和图片内容,而宽带可以承载高清视频/声音。中国大多数网民都是无法享受高清视频/声音的,也没有机会享受in touch的信息服务。缓慢的网络速度注定你在使用网络的时候,下载到一个图片,就要在本地保存起来。下载一个光盘,就要保存起来。你不能像云端一样,将数据托管在网上,当需要的时候再下载。我们的硬盘,变成了巨型的互联网缓存器。
    3.现在的互联网业不是挺红火?
    贝壳原先听说过一个笑话,说眼镜一定要好好配,否则怎么怎么的。台下有人说,我的眼镜配的很好,眼睛去验光和眼镜完全一致。台上讲师冷冷的说了一句,配的不好的眼镜还有个缺点,戴个一年你的眼睛状况就会跟着眼镜走。。。
    互联网也是一个类似的情况。贝壳调查的结果,很多用户并不介意接入商是否封锁P2P下载,很多用户也不介意带宽不足,因为他们只用QQ,上天涯和猫扑,早上要起床偷个菜。所以网络一定要随时通,其他就不要紧了。我们说我们的互联网业,其实是在中国的网络状况下,发展出来的畸形品。天涯,猫扑,QQ,都是低带宽时代的服务,但是直到今天经久不衰。用户黏性是一个原因,另一个原因是更强大的,具备下一代特征的服务根本跑不起来。QQ也发展过视频聊天,结果也就是网友准备找419乃至更极端的援交前要“验货”的时候用。你见过有人和朋友天天开个音频聊个不停么?有人说国外也没有啊,问题是人家手机通讯什么价钱,我们什么价钱。你见过开土豆和优酷慢到死的,土豆还专门出了客户端加速。你见过开youtube卡到死的么?中国不算。youtube在研究什么技术?高清视频分享。你试试让土豆出个720p视频分享看看?不说CDN费用,光是等待时间就会让用户跑光。
    4.将来呢?
    我不知道。如果中国宽带仍旧保持现状的话,在网络高速发展的背景下,中国的网络应用也许会在3-5年内就会再落后人家一代。在人家用着随手可得的高清视频的时候,我们还只能接受IPTV这种专用替代品。不过严格论起来,这也没什么,毕竟中国从来没心思在这方面真的赶超英美。。。

2010年11月8日星期一

小公司的架构选择

    很多大公司都是从小公司起步的,往大做的时候,往往会受到很多制约因素。架构选择不对造成的问题很多,所以很多小公司都在架构选择上精打细算。其实架构问题,在公司规模小的时候,更大程度上是一个行政问题而不是一个技术问题。
    小公司的特点是人少,往往就那么几个人。这种情况下,与其说是你选架构,不如说你看看有什么可用的架构。通常来说,你要考虑的问题是。
    1.你有没有可以信任的核心工程师?
    2.能不能找到足够的人手做大部分的事情?
    3.能不能在你要求的时间范围内把事情做掉?
    4.这个架构有没有成功的例子,能不能支持大规模的访问?
    当这些问题都没问题的时候,你才应该考虑,这个架构性能够高么?容易扩展么?
    如果你没有可信的人作为核心工程师,项目管理和控制根本无法进行。就算要评估一下手下这些人是不是真的需要这些时间来做事,得到的结果都是不可靠和不可信的。如果找不到足够的人手做事,那除非你的核心团队能够一个人或者几个人把网站整个做出来,例如豆瓣的阿北,否则项目做做就没人,就玩不下去了。如果架构很好,但是无法在要求的时间内做出事情来,等于没用。满足了上述几点,你还得兼顾考虑一下,这个架构如果没有成功案例,是否存在隐性的风险。如果不支持大规模访问,将来的扩展问题。
    好吧,作为一家小公司,我相信你考虑完以上几点后,能凑出一个框架来已经很不错了。往往是你的核心团队没有一个核心工程师,大家会几种不同的架构,而且没人能保证评估结果。
    这时候,不要废话,先找个核心工程师,然后用最土的,被无数人验证过的技术来把你想做的事情做掉。
    除非你的核心团队有且仅有一个核心工程师,并且这个工程师的技术能力很强,管理者和投资人也支持他冒风险。否则大部分使用激进架构选择都会带来不良的结果,毕竟大部分公司都不是以开发框架和研发技术为最终目地的公司。

QQ和360之争

    两个流氓狗咬狗,老子一个都不用了。老子是Linux用户。。。

2010年11月3日星期三

单纯评价制度的影响

    下面的讨论对事不对人,请不要自行套上OOXX的内容,谢谢。
    我们假定有个游乐园,叫做OOXX游乐园。有很多投资人,时髦点,叫做股东。他们不亲自管理游乐园,于是他们找了个经理。大家知道,游乐园经营的好坏,经理起很大作用。所以股东要评定经理的能力,并给予相应的报酬,这样才能刺激经理努力工作。那么我们如何评定经理能力呢?
    首先我们想出的最简单指标是入园人数,不过很快,也被我们推翻了。很简单,如果我们和经理约定好他的工资和入园人数挂钩,他上去干的第一件事情就是打折和送票,哪怕每张票是亏的都好,只要入园人数满了7KW,他就可以拿高薪了。亏本和他有什么关系呢?
    第二个方案是通过总收入来衡定。好,这个方案看似没漏洞,不过很快,也被我们找到了一个漏洞。经理可以给员工高额回扣进行门票销售。例如,一张门票的通常价格是20,经理可以将门票价格提升到100,但是员工内部卖出去的票,给予员工80的回扣。在计算的时候,回扣是按照人力资源成本来计算的,门票是按照纯收入来计算的。
    第三个方案是通过盈利来衡定。这个稍微难钻空子点,不过只要这个经理有任职年限,也还是有办法的。这个经理可以在每年的年底,预销售一些游乐园的打折券和团体券,并且每年逐步扩大预销售规模。这样会让每年的财报非常好看,但是,出来混,迟早要还的。这个经理拿了全部的奖金,直接离职走人,下一任看到数以百万计的人拿着打折预销门票入园,为了保住自己的饭碗,只有卖更多的打折预销门票。直到整个年度的所有客流全变成预销门票的时候,戏法就变不下去了。
    也许有人会说,怎么有那么傻的事情啊,这些方法看一看就知道了。是啊,问题是,我们的题目正是,单纯评价制度的影响。如果不通过常务股东大会来制衡,动态的改变博弈方式,而仅仅通过单一的参数评定方法。那么经理有无数的方法来钻漏洞,走空子。

twip在hawkhost上问题的解决

    这两天twip的api不正常,跑上去看看,有个错误。
Fatal error: Cannot redeclare class OAuthException in /home/shellcom/public_html/apis/include/OAuth.php on line 8
    这时候,找到include/OAuth.php,改成这样。
#class OAuthException extends Exception {
  // pass
#}
    问题就暂时解决了。
    这是因为主机上新装了什么库,这个库自己也定义了OAuthException(会定义这种异常的,估计是OAuth库)。所以,把这个自定义的异常移除,问题就暂时解决了。

2010年11月1日星期一

圣元蒙牛,谁冤枉了谁

    止尿喝三鹿,丰胸饮圣元。圣元奶粉性早熟事件还没过去,又出来蒙牛陷害说,大家打架打的真热闹。最终用户可不管到底是谁冤枉了谁,总之,圣元蒙牛统统不买。现在国家立法尚屡禁不绝的外国邮购奶粉就是证明。
    圣元和蒙牛陷入罗生门,显然是国家,或者说行业失去信用的标志。如果行业有足够的信用,只需要相关部门辟谣,就可以澄清问题,挽回影响。然而现在我们看到的情况是,相关部门越辟谣,越是没人买。想想也没什么奇怪的,阜阳大头娃娃,三鹿,熊猫,中国在过去的五年内出了太多的奶粉问题。光是出问题到罢了,关键是出了问题后对责任人的追究和对受害人的补偿。三鹿倒闭和收购,对受害人的清付实际为0。换句话说,受害人,凡是拿到赔付的,都是从我们的税中来的。说到这里我就气不打一处来,卖奶粉的造的孽,你让我一个玩IT的顶缸。而且凡是对国家赔偿不满意的受害者,现在也没什么实际的追偿渠道了。这实际上告诉所有人,国家给你的,你就拿着,想多要的,这点都不给你。
    这种蛮横和无理的做法,果不其然遭到了天下所有家长的反对,邮购奶粉盛行一时。没追偿机制,我不喝总行了吧?结果国家又制定法律,从国外邮购需要收税,而且很明白就是冲着奶粉去的。实话说收税到不是什么错误,邮购国外产品早该收税了。但是这能让不放心的用户买国产货么?
    你们继续打你们的去吧,我去喝米汤。。。

2010年10月31日星期日

ubuntu release party

    会开完了,流水帐就不记了,总结几点问题,以后注意。
    1.抽奖程序可以当场写,逻辑一定要事先验证。这次抽奖程序的逻辑出现了重大误差,所有值抽完后才去更新命中集合,导致样本空间和总空间相差不大的时候重复中奖。
    2.人无任事事不应人。志愿者不知道应该做什么,求助者不知道应该找谁。那天Thomas说他忙不过来,但是其他人又聚堆聊天就是个明证。
    看上去找个专门的人进行前台咨询是个很有道理的做法,最好找个MM,问明白求助者的意图后推给合适的志愿者。
    3.位置错误。大会上的人基本分成两群,一群是lug里面的,或者在圈子里面的熟人。另一帮则是专门跑过来的新手,还有当地的学生。前者在左侧大门聊天,阻挡后者的视线。大会的基本目地就是增进交流,聚众聊天无可厚非。但是聚集在显示屏前位置很不合适,这主要是因为圈子里的人基本在第一排入座,互相一找就聚在了显示屏前。
    这种问题纯是现场场地问题,下次应该找个不干扰的开阔地给圈子里的人扯淡用。
    4.秩序混乱。在一等奖领奖的时候,出现了一个人上去拿了东西,发现给错人的状况。
    主席还不知道cheng说了一点很要精确的观点,我们没有事先登记。类似大会应当设立前台登记并发放名片卡和编号,这样做有几个好处。首先是组织方获得了潜在的用户名单,其次是大家互相交流的时候比较直接,至少知道对方怎么称呼,最后是抽奖的时候不会出现自行核对号码的难题。这次是按照座位号,没有出现太大混乱只能说受众素质还不算太低,或者我们的奖品他们不感兴趣。否则以中国人的聪明,只要座号相似,大家上去浑水摸鱼主办方也是有口难言。
    5.缺乏引导。这个问题最严重,主要是30人的三等奖领取混乱,礼品发放混乱和哄抢。
    礼品发放混乱和哄抢和三等奖的领取混乱是类似问题,都是组织者没有合适引导。Thomas认为这是个素质问题,我觉得这应该是组织方问题。任何open party,对应低素质人群是基本预案。中国人的一大毛病是只会听别人口号行事,没人喊口号就不知道该怎么动了。三等奖的时候大家还不错,总算都是从左边上台。虽然情况稍稍有些凌乱,还在可接受的范围内。要是有几个右边上台的,情况就更乱了。而且没人说的话,台上的人也不知道要不要留一下,让下面拍个照什么的,还是直接下去。奖品发放也有类似问题,没人告诉拿奖品的人,奖品数量,怎么排队,怎么退场。就看到半个场子的人一拥而上,Thomas瞬间被淹没了,然后在那里狂喊大家守秩序,有点素质。问题是这时候,谁知道秩序是什么东西呢?通常应当事先告诉拿奖品的,有多少奖品,从右边排队,领取后不要停留,左边快速退场,并且派人规劝。虽然即使这么做了,也不一定保证顺利,但是场面功夫还是要做的。
    总结一下几点可改进的要点:
    1.事先一定找人发卡片,让用户填写后挂在自己身上。组织方可以自行留录副本。
    2.找个专门的,不影响活动的区域给志愿者。
    3.找个前台MM,所有问题都找她,她再介绍专家。
    4.事先验证抽奖程序的逻辑,这个是我的问题,自行解决。。。
    5.除了主持人外,要有适当的人作为台下的协调和引导者。
    不过总体来说,这次release party的效果还不错,社区组织发生混乱本来就在意料之中。多来几次组织者有经验就好了。
    另外,事后我们集体跑去Thomas(不是台上的鬼鬼小朋友,而是Debian的DD,他的名字是法文,s不发音)家里扯淡吃东西,打德州扑克打到三点。贝壳第一次玩,赢光了其他所有人的钱,哈哈哈哈哈哈哈哈。

2010年10月19日星期二

疯言疯语(六)

1.我们怎么确证世界存在
    我们如何确认世界是存在的,而不是被想象出来的呢?首先,我们不能询问世界上的某个人,因为既然这些人是被想像出来的,那么在询问的时候,存在可能,这些被想象出来的幻影会集体欺骗你。其次,我们不能通过查探世界的特性而确证,因为这个世界的逻辑和存在,可能被调和成某个内在逻辑基本一致的情况。直白的说,这个想象的主体,只要自己有一套世界存在的观点,并且坚信自己的观点,那么你对世界特性的任何查探,都将是基本一致的。
    结论是,我们无法确证世界的存在,我们只能相信它。

2.科学也是一种信仰
    科学家必须相信,逻辑是稳定的,一致的。无论我们是在一个真实的世界中,还是在一个虚幻的世界中,我们都可以研究周围事物的特性。然而作为科学的必要条件,集合论和逻辑学等思考科学必须是一致的和稳定的。例如,我们通过观测,一只比门洞大的猫无法通过门洞,一只比门洞小的猫可以通过门洞,并且重复观测到多次。经过同行确认后,我们可以归纳出结论,凡是比门洞大的猫都无法通过门洞。其中的逻辑就是一般归纳法。然而,如果一般归纳法是错误的呢?
    当然,我们也许可以说,这显然是成立的。然而在这里,你就犯下了逻辑思考的第一个错误。你已经“相信”归纳法的成立,在你确证它成立之前。然而,我们反过来,如果我们不相信任何思考科学的成立,那么我们什么都无法做。于是,我们凭借常识,*believe*基础逻辑学和集合论。所以,我们观测和归纳世界,得出整个科学系统。
    显然,这种系统也是一种基于信仰的系统。如果我们换位言之,我们不相信逻辑学和集合论的显然存在(而且这可以被逻辑学部分的自证),相反信仰一个超自然的存在。当然,在这里使用某个具体的神祗并不合适,所以我借用飞天面条神。那么,根据神的信仰系统,我们的观测,和逻辑系统,都是被神故意设定成如此的。由此,我们也可以得到一个部分自洽的系统。除了——唔,当然,要我相信逻辑学是成立的比让我相信某个飞天面条怪物的存在更容易一些。

3.我们的终极问题
    世界是真实存在的么?
    世界从哪里来?
    世界最终会结束么?
    物质可以无限细分么?无限细分的结果是什么?
    世界有边界么?边界之外是什么?
    我为什么成为我?

2010年10月18日星期一

旅游的一些要点

通常的旅行,要记得带身份证,小毛巾(用于擦汗,通常徒步一类的行动中比较重要),到当地后记得随时带一瓶水。适当的带换洗的衣物,有些城市有洗衣店,有些没有。青年旅社也是可以洗衣的,但是并没有什么保证。
旅行会受到种种的限制,时间,金钱,体力。要在事先做好功课,选择合适的线路。通常学生会更受限于金钱,因此建议选择健行线路,出行的时候也尽量搭乘公交(当然,这等于要你带上GPS)。工作后的人多数金钱上问题并不特别大,统计数据显示我们大部分的钱都花在了来回程的旅费,住宿,门票一类的地方。真的在当地花的钱只是小头,例如公交/出租,饭店选择,对总体价格下降帮助有限。然而,这些小头上花费的钱,很大程度上决定了你玩的开心不开心。因此,对于工作后的人,不要在小头上省钱,不要浪费体力。如果真的想降低成本,提前预定机票,住青旅。
出行问题基本几个方案,地铁,公交,出租。出租很方便,但是比较贵,而且并不是所有城市都能轻松叫到出租,例如杭州。地铁系统的好处是大部分城市的地铁系统都没有复杂到人无法记忆的程度(北京和上海这种变态例外),并且地铁网覆盖了大部分城市。很多时候你往往无法找到回住处的路,但是只要你知道如何从地铁网络回到住处,这个问题就变成了如何到达地铁网络----大部分的城市,你问任何一个人都可以找到答案。通常不建议使用公交,因为公交系统非常复杂,而且多变,通常超出了人脑能处理的范围。在预定行程的情况下还可以抄下每站的公交换乘方法,动态行程根本不现实。而且即使是预定行程,你也可能碰到公交改道,节假日限行,或者停靠点明明离目的地很近,但是必须绕路之类的恶心问题。
认识路的问题,建议装备GPS。使用谷歌地图,可以在大部分城市中任意行动,甚至包括搭乘当地公交系统。如果没有GPS,就很难行动自如,这种情况下就需要依赖出租和地铁系统。谷歌一类的网络GPS系统的好处是,可以动态的查知信息。因此即使改变行程,也可以随意的在城市间游荡。另外强力推荐大众点评一类的旅游LBS服务,一旦你到了哪里需要吃饭,他可以查知当地美食,让你不走冤枉路,不花冤枉钱。
如果住青年旅馆,需要带牙刷,牙膏,洗发水,沐浴露,毛巾,梳子,拖鞋。总之,一切在宾馆该出现的东西都应该在你的包里。如果是去海边,拖鞋千万别忘。去海边有的时候沙子很痛,穿个拖鞋会舒服很多。虽然很多青年旅社是提供拖鞋的,但是你不会好意思穿着这个拖鞋去海边的。如果液态物品不方便带,可以带一块肥皂,洗头洗澡洗毛巾都方便。
去一个城市,要精确的算好行程,密集游玩。一个城市去三天,就在这个城市里把该玩的地方都玩齐了,没有遗憾。下次想再来是下次的事情,切忌三心二意。去一个城市玩到一半,觉得没有什么太精品的景点了,看到旁边有个什么景点不错,去个一天之类的,这样只会让你两边都玩不过瘾,下次要去两个地方。
城市里最怕语言不通,其次是不认识路。不认识路可以问,语言不通寸步难行。所以如果想多去几个地方玩的话,多学点语言。一般比较有用的语言有,英语,普通话,广东话,闽南语,日文,西班牙文,其中最后一个主要是在欧洲和南美洲玩的时候比较常用。基本来说,有英语,普通话,广东话,足够你在世界大部分地方玩了。
出行的时候要带适量现金,大约能支撑当地两天的活动为准。如果太多,容易发生遗落或者被盗,即使没有,出去玩还提心吊胆的就没意思了。如果太少,可能你还没有找到ATM机就已经在哪里叫天天不灵了。出门可以刷卡尽量刷卡,尤其是信用卡,通常比较安全。千万需要注意的是,一旦你离开团队。例如多人旅游去上厕所,或者跟团的时候去买东西。你可以不带任何东西,但是一定要带上当地有效的身份证明和手机。如果是在大陆活动,手机虽然处于漫游状况,费用比较贵,但是仍旧可用。如果到大陆以外活动,尽量开启当地漫游业务,或者购买当地SIM卡。一旦你在陌生的城市中失去手机,那么你就失去了和同伴联系上的机会,由此而来的麻烦可能会耽误一到两天的时间。
其实看完文章,贝壳想想笑了。说白了,你带上身份证明,带上信用卡,带上一台配置好的android手机,再带上自己,就可以随便去哪里玩了----如果你不太计较的话。

2010年10月17日星期日

不靠谱

    在公司中,有这么几种不靠谱行为,粘上就容易身败名裂,具体程度和人品以及不靠谱程度有关。以下排名分先后。
    1.自以为是的客户需求。主要是说由程序员来搞的需求,以为搞的挺好,其实客户完全不鸟你。
    2.老板定的开发周期。不用说,就像色狼为美女挑的泳装,肯定太紧。
    3.废物员工。不怕神一样的对手,就怕猪一样的队友。不但没有贡献,只会拖后腿。
    4.迫于压力不写文档,延后文档或者仓促写。都是废品产生的先兆。
    5.过于激进的架构设计/技术选择。听起来挺好,问题是,您能玩的转么?
    6.指手划脚的客户。神一样的对手。
    7.钱不是问题。问题是没钱。

2010年10月15日星期五

在厦门(四)

    今天是在厦门的最后一天,我们准备去爬仙岳山,结果早上就碰到个不痛快的事情,贝壳找不到青旅的房间钥匙了。收拾东西的时候再找了一遍,确信是不见了,只好赔了50,很贵的说。所以说大家出门千万小心,万一是别的卡找不到那就不止50这么简单了。
    虽然很郁闷,该玩的还是要玩。去爬仙岳山主要是因为他的难度适中,大约2-3小时可以爬完。五老峰就在青旅后面,看起来景色更好,但是据说要3-4小时。我们早上9点出门,中午12点前要去退房的,否则要加一天房费。加之高度比较陡,可能会比较疲劳。想想旅行最后一天了,没想给自己找麻烦。当然,五老峰和万石植物园相连,早上6点后需要收60每人的门票也是个原因——但是我真诚的建议你忘记他,只要记住前两个原因就好了。
    出门打车,倒了仙岳山下。话说厦门打车还真不贵,一般都是9元搞定。最多的一次要了20——还基本穿越了小半个厦门。我们从南门入的山,向上不久就是一座寺庙。寺庙前后都是山,盖的雄壮威武——除了没建完之外。绕了半天,没发现上山的路,我们回去走另一条路,结果通向了一个什么美食林。大概就是一堆盖在山顶的饭店,对此我们没什么兴趣。沿着小路逆时针绕山,一路景色非常不错。能在都市里面保有景色这么好的一片土地倒是相当难得阿,当然这首先得益于厦门和厦门人的独特风情。沿着小路绕山而行,我们走到北门附近,才算找到出口。不知道为什么,应该有个东门的,可是没找到。许也是我们路上的某条小路通向东门吧。
    从仙岳山下来,我们打车直奔SM生活广场。不知道哪个起的这种猥琐名字,我想有心人都在偷笑了吧。不过里面的东西还是挺不错的,芒果牧场,战锅策。芒果牧场的榴莲班戟非常好吃,建议大家一定要点。西瓜冰也很赞,很有西瓜泥的味道。不过可惜和战锅策一起吃是个最大失误,贝壳因此闹了两天的肚子。话说回来,战锅策的鱼肉粗面很有创意,用做奶油蛋糕用的写字喷枪袋,装上鱼肉糜。挤压出来后就变成了鱼肉粗面。贝壳吃过不少滑,还是头一次看到这样的滑类做法。

2010年10月14日星期四

blog迁移公告

    由于live spaces终止服务,因此贝壳的壳迁移到自己的空间了。地址为:http://shell909090.com/blog/。系统为wordpress,原有资料保留,图片会重新整理。欢迎大家前来踩。

在厦门(三)

    今天我们的行程预定是去厦门大学玩,然后去曾厝�和胡里山炮台。早上去厦门大学这一段执行的很不错,厦大很漂亮,房子,树都很不错。进去后漂亮MM很多,不过很多都是摆pose照相的——全是游客。然后——亲爱的谷歌地图就给我们瞎指路了。它告诉我们,有个叫做厦大水库的水库在前面,所以我们就走阿走的,走了一个很大的上坡。然后发现——GPS信号显示我们正在厦大水库的正上方,可是我们只是在一条上山的道路上,而且旁边全是学生宿舍。我靠,这个错误太离谱了吧,难道要我们走回刚刚的大上坡?
    我们左右找了一下,后退一点后找到了一条通向山下的小路,下面是个叫做芙蓉隧道的地方。没办法,修整一下,买点东西,我们就直接冲入了芙蓉隧道。顺便提一下,厦大这里有很多叫做芙蓉的地方。芙蓉一楼,芙蓉二楼,芙蓉隧道,不知道芙蓉姐姐是不是这里出来的(笑,melody同学不要打我)。芙蓉隧道很长,大概有一公里多,里面有很多涂鸦,比交大桥下涂鸦多多了,而且还有很多空地。我们一路走隧道就一路拍过去,贝壳边走边哼歌剧cat的成名曲memory,那天被打扰到的同学对不起,你们就当是野鸭叫好了。
    从芙蓉隧道出来,我们居然到了曾厝�,谷歌地图,让我说你什么好?在曾厝�我们喝了一杯八婆婆烧仙草。烧仙草是一种植物的果冻,类似龟苓膏之类的东西,加上各种材料组成的饮料。我们这次点的是组合了花生,牛奶,还有一大堆果仁的,很好喝。前后转转,没有什么好玩的,打车去了胡里山炮台。我们从厦大白城那个方向的环岛木栈道上走过,当时正好是涨潮,海水打在细沙上,踩上去很舒服。栈道有一段正在海里,海水拍打岸礁,如千年不变的旋律。走了栈道,我们就不想去胡里山炮台了,反正我们对爱国主义教育不感兴趣,克虏伯大炮的基础原理和演示在wiki上比在那里还准确呢。干脆打个车,到南普陀寺吃素斋。
    南普陀的素斋是很有名的,当然也很贵。我们去的时候正赶上高峰,他们只做套餐。我们要了四菜的套餐,居然要价120,在一顿晚饭只要10就可以吃饱的厦门,这算是挺高的了。不过四个菜搭配挺合理的,一个汤,一个主食,一个甜点,一个菜。汤是豆腐汤,烧的很精致,里面好像放了姜丝,却找不到。主食其实是炒米粉,里面有点菜,叫普陀米粉的样子。甜点叫香泥藏珍,其实就是芋艿泥,很甜。里面包了各种东西,吃不出什么的样子。菜很好吃,不知道是用什么做的,但是像是椒盐香肠的样子。对于想去的人,总之就一句话。不去终身遗憾,去了遗憾终身,旅游大抵就是这个样子。
    吃好饭,我们会去睡了一觉。再起床已经是下午4点,我们回到厦大白城去骑海上自行车。这时候已经是潮落的状态(虽然实际上还是在涨潮的),海水落去不少,露出了海床上的粗沙。看来厦门这里的海都是粗沙海,细沙只是为了观光和漂亮专程运过来的。海上自行车还是挺靠谱的,不大像会落到水里的样子,总体来说,挺好玩的。骑好海上自行车后,沙滩上有人专门做帮人冲脚的生意。一块钱,帮你把脚冲干净再擦干,比以前方便多了。
    晚饭我们去了中山路步行街,那里很热闹,有很多骑楼。我们随便吃了点东西。思明南路有一家叫做仙草南路的烧仙草店非常不错,用的是花生,还有一堆不知道什么的东西,只要9块。在快到码头的地方,有一个沙茶面,10块加三样东西,很好吃。

2010年10月12日星期二

在厦门(二)

    今天去鼓浪屿玩,从轮渡有两种方法上岛。一种是坐大渡轮,要8块,一大群人傻兮兮的站在一个大轮渡上,像鸭子一样的赶过去,不过据说单向收费,去不要钱。另一种是快艇,基本不排队,只要10块。但是一人不走,需要6个人。包船60,他们也不会帮你找人,所以要学会自己拉人。船很快,很颠簸,总感觉在撞击水面,自己像是要被甩出去的样子。上面是无法照相的,所以请照相爱好者不要高兴的太早。
    岛上大多数早餐和商店9点开门,建议不要去的太早,以免傻兮兮的干等。从小路向里走,到一家餐厅吃鲨鱼丸汤,鱼丸很有弹性,有嚼劲,只要10块,贝壳强力推荐。他们家的海鲜面很鲜,但是没什么特色,要20。我们首先去的是风琴博物馆,环境很美。后面可以走一条小路爬到岩石上,俯瞰整个建筑。10点有人表演管风琴,爱好者一定要挑对时间去哦。内容并不好,我听到的是婚礼进行曲,而且技术一般。
    从风琴博物馆出来,我们往日光岩走。日光岩要60,很贵,其实有鼓浪屿五个景点的套票,但是看了看,其他的都是些不好玩的景点,所以还是单买了日光岩的票。日光岩是一块大岩石,处于鼓浪屿的最高点。其象征意义更大于浏览意义,厦门真正的精髓是在悠闲的大街小巷中。60的门票包括琴园,和日光岩通过缆车连接。由于门票一旦使用就无法出门,因此除非不去琴园,否则必须坐缆车。当然,这无疑造成了缆车的拥堵。所以建议日光岩景点,在热门时间仔细考虑。我们大概等了半个小时,但是就坐下来的结论,从琴园去日光岩的队伍比从日光岩去琴园的短,所以大家可以选择在西林,先上琴园,会省不少时间。日光岩本身没什么好看的,虽然能够俯瞰厦门,但是上面全是人。与其看风景,不如说是看人。琴园里面有个百鸟园,把一堆鸟关在大园子里。实话说我找不到这种东西存在的意义,没有历史意义,反而是对历史的破坏。把一个别人不喜欢看的景点和鼓浪屿最著名景点门票打包出售,搞不懂当地政府在想什么。
    回程的大渡轮需要收费,快艇则是15。来回不对称,请要去的朋友注意。最后记录一个趣事,我们住的青年旅馆的洗衣机总是像狗叫。衣服一放进去,半边洗衣筒摩擦就发出一声。往复起来就像汪汪的狗声。

拜神兽记

    今天跑到西郊公园去看了一回神兽。如何碰头,如何进动物园都比较无聊,按下不表。说点有意思的吧。Thomas喂狒狒的时候,大狒狒总是抢小的东西吃。于是他就盯着小的扔,直到小的也吃到为止。路上我们看到有条红领巾放在路牌上面,他就跑过去,想戴上。结果好久不系红领巾了(贝壳好像也好久了),都忘记怎么打了。在别人的帮助下,戴上领巾,照了一张,放回去走人。
    然后,然后我们就找到了神兽。不愧是神兽阿,当着我们的面就OOXX了,有图为证。真是,真是,真是,太不和谐了。过了神兽,我们看了一些比较有意思的动物。有firefox(其实是red fox),leopard,lynx。最后还有python,cobra。非程序员也许无法理解这个笑话,稍微讲解一下。firefox是浏览器,非常有名。lynx其实也是,不过是字符界面的,用的人相对少一些。leopard是苹果的系统名称。python是我用的语言名称,cobra是另一种,经常用于通讯的。
    中间,我们休息了一下,和Thomas稍微讨论了一下linux变换Caps Lock和Ctrl的问题。旁边数人质疑我们是来动物园干嘛的,看动物还是做程序的。私以为,既然那么多动物和程序有关,讨论点程序没啥不好理解的。

2010年10月4日星期一

去厦门(一)

    今天在虹桥机场二号航站楼乘飞机去厦门玩。贝壳飞机乘了无数次,虹桥机场二号航站楼倒是建成后头次去。
    从地铁二号线下车,候车站台的间隔非常宽,看上去就像是广大的大厅,不像某些站一样小家子气。从地铁出口到柜台间的导向牌很清晰,但是有一件奇怪的事情。在进二号航站楼的时候,有一个爆炸物检查。说是检查却没有人替我们做扫描、爆裂物颗粒收集或者其他动作,只是用绳子把我们拦了近10秒就放行了。贝壳在想,这是怎么回事呢?如果检查不存在,那么何必如此做作。如果使用X光照射检查,那么前后拦截我们的工作人员则相当危险(如果X光检查没有危险,地铁上就应当是我们背着包通过X光机,而不是现在放下包的模式)。猜测只有一个可能,使用对人体无害的其他远程检测方法,欢迎知道的同学爆料是什么方法。
    进入柜台区域后,贝壳顺利的拿到了登机牌。不过看到上面贴的提示,现在只允许携带一件随身行李,其他要托运。因此有行李随身嗜好的同学请注意了,至少在世博期间,贝壳相信这个规定是会得到执行的。过安检的时候就是,超级夸张。贝壳只身带了一台电脑上飞机,居然还要脱下鞋子,有的旅客还得解下裤带。贝壳觉得至少在安全执行的严厉程度上,我们已经充分的和国际接轨了。
    贝壳是18:45的飞机,理论上是有飞机餐的。不过鉴于飞机餐吃不大饱,贝壳去机场的真功夫点了点东西。吃东西的时候,随手用笔记本扫了一下网络。上海机场二号航站楼是有一个openwifi的,不需要密码,公开接入。首次访问会被重定向到1.1.1.1的一个网页上,说明情况,并要求确认后使用。目前只支持http和邮件协议。不过了解贝壳的人应该听说过Http Over Http和gappproxy,借助这两个应该可以任意的上网。但是请注意两点,首先openwifi没有任何加密,因此你和服务器的通讯是全公开的,机场中任何一人(好吧,夸张了点,应该是一定距离内任何一人)都可以截获你的通讯。其次,贝壳相信机场对这个网络进行了审计,你的访问会被记录下来,这同样危险。因此,建议使用sshtunnel或者vpn进行安全的访问(这好像是公开网络的安全常识了),而且千万记得打开防火墙。
    最后,机场提供了可上网的电脑,供没有电脑的人使用。系统是XP,禁止了其他文件的访问,只允许使用IE和winrar。感觉比较难渗透,而且贝壳自己也带了电脑——算了,飞机要起飞的。
    飞机上,贝壳吃了一餐飞机餐,感觉总体还可以。面包和咸菜反倒比正餐更好吃。飞行过程本身没什么,倒是电子设备关闭提示非常烦人。机上的乘务员在一个多小时的航程中就检查了三次,合着半小时不到一次。而且待机都会来说,非要关机,�里八嗦。贝壳干脆在每次检测的时候都把电脑待机,放到前面的袋子里面去,乘务员看不到,也就不�嗦了。降落之前能看到外面的灯光一闪一闪,映照在云层上,如同进入了雷积云。开始贝壳很担心飞机被雷劈,后来发现这个闪烁是有规律的。。。
    到了厦门后,我们坐机场大巴到了旅馆附近,但是还差了一公里多,这时候就是android立功的时候了。谷歌地图很快找到了三条过去的线路,并且直接导航到了宾馆。实话说,除了比较费电和费流量外,这个应用是相当让人满意的。。。

2010年9月23日星期四

计程车管理费调控

    贝壳曾经向计程车司机打听过上海计程车管理费收取的问题,结论是,管理费的收取完全没有起到管理的作用,反而增加了计程车运作的风险,并且让闲的时候车多死,忙的时候打不到车。
    目前的管理费模式是一天300-400,这点费用各个司机计算出来的结果各不相同,有说330的,有说380的。不过大致相同的是,上一天班收一天钱,大概在350上下。我们按照上海5W辆出租计算,上海出租车管理费一个月就收4.5亿。我们且不说这么大一笔钱带来了什么服务,单说这种收法(一天一交)有什么问题。
    司机一天交了管理费后,就需要从自己的运营利润中抵扣。如果只开了半天,那么剩下的半天无疑就浪费了。司机一天的纯利润大约是500-1000,管理费并不是一个小到可以忽略的数字。付一天的钱只做半天,运气不好的只赚250,却要付350的管理费,傻子才干。因此现在的司机多数是做一休一的模式,因而很多老司机吃不了苦,上海出租很少能见到10年以上的出租司机(但不是没有,贝壳见到过做出租做了15年的司机,但很少)。同时,这样对安全有很大影响。一个22小时没睡觉的人开的车,和一个6小时没睡觉的人开的车,能一样安全么?对于司机而言,要安全行驶的更好方法是做半天休息半天。然而,现有的管理费方式不允许。同样,做一休一的结果是,我们在高峰期和夜间有同样多的车。这造成高峰期叫不到车,晚上车拉不到客。
    对于市场经济学说的信徒,现在想必已经觉察到了解决问题的方法——细分市场。更正确的说,是对一天的不同时段征收不同的税。如果在无税的情况下,先忽略车辆硬件,出租供给对市场是自然调节平衡的。当需要车的人多的时候,会发生更多的人出来做出租生意,和出租非用上涨。当然,由于出租属于特殊服务行业(准确的说,是公共交通的一部分),因此费用调整是否可行有更大的一摊口水要扯。然而更多的人来做出租是一个显然可以预见的事情。通过税收,我们可以同时解决司机的安全性问题,和忙-闲时配比不恰当的问题。
    我们设想一下,如果我们是按照每小时14.6元,而非每天350元来征收(这两者收到的钱没区别),会出现什么情况?首先是司机不大会做一休一,而是做半天休半天。其次是早高峰和晚高峰,会有更多的人投入来做,从而缓解压力。作为政府,通过调节每个小时的管理费,就拥有了控制车流量的工具。当我们采取减少早高峰,增加午夜服务的策略的时候,我们可以增加早高峰管理费,来补贴夜间管理费。而反过来,我们要增加早高峰车流供给,减少午夜服务的时候,反之就可以了。
    但是,这里少考虑一个问题——车的供给。计程车的车是特殊的,不能直接由私车运营。因此要增加早高峰,减少午夜服务,首先就会碰到车不足的问题。大家都想做早高峰阿,所以车不够了。而且城市中,早高峰出租供给越好,总体交通情况越差。因此通常而言是削弱早高峰策略。就是早高峰的时候收取相对比较高的管理费用,而午夜则收取比较低的管理费用。通常而言,解决这个矛盾的根本做法是增加公交运行能力,而不是运行长度。用班次更密集,承载能力更大的地铁方案,替代原本的方案。增加公交车在交通密集区域的停靠站点密度,和车流密度。降低费用,尤其是长途费用。如果暂时不解决总体交通问题,可以考虑将部分民用车改成出租。在运营情况下也受出租公司管理,而非运营模式下则由车主支配。

--
无能者无所求,饱食而遨游,泛若不系之舟

嘎闹忙观感

    今天和徒步的一帮朋友一起去mao livehouse shanghai去看嘎闹忙演唱会,免费的。嘎闹忙是句上海话,意思是凑热闹。说是演唱会,台上的一堆人贝壳一个都不认识。其实也很好理解,贝壳认识的话,那也不会免费演唱了。实话说,比李定婷同学给的那个票子还靠谱点,毕竟不是儿童出道专场。虽然名气不大,但是音乐还是挺靠谱的。
    先上去的是DaFresh,好像叫大新鲜吧。唱的又摇又滚,贝壳totally不喜欢。然后是小自然。贝壳认人不大好,不确定他们是否是同一批人。后面一个叫杨含奇的,用原生乐器伴奏的,总算还靠谱点。伴奏的乐手是上海音乐学院专修Jazz的,后面唱了两首Jazz,还请了一个女嘉宾一起唱。女生的嗓子中性带点磁性,男生的嗓音很干净。虽然花活玩的多了点,不过这种规模的演唱会本来就是靠调动气氛的,照着唱歌的正道玩就没人听了。
    后面两个乐团叫MOMO和Black New New,分别是四个女生和三个男生,是今天的重头戏。这两个组合都是上海话歌手,或者叫上海本地文化歌手。注意这和上海本地歌手有很大区别,本地歌手只要是个上海人就行,而本地文化歌手则必须强调上海这个符号。说的更直白点,就是讲上海话,用老上海的风格调侃。近些年各地脱离了中央统一的普通话风格后,地方风格发展非常迅速。香港原本就有笃栋笑,上海又出了海派清口。这种情况下有上海本地文化歌手也没什么好奇怪的。
    MOMO的四个女生非常嗲,走的就是90后小女生的路线。Black New New的路子则更特殊些,融合了演唱,表演,调侃。如果碰到机会,向着非单一歌唱的方向发展的话,兴许能出现一些新的东西。但是作为纯音乐而言,这两个组合搞笑和调动气氛的能力比音乐能力强。音乐里的东西太多,不干净,也没有震撼力。倒是最后请出的一个神秘嘉宾(我还是不认识)的音乐,非常的有震撼力。也说不清楚哪里好或者哪里不好,但是即使贝壳因为声音太大堵上耳朵,也能感觉到声音直往脑子里灌,全身汗毛都竖起来。
    贝壳上次在周杰伦演唱会被堵了两个多小时,这次怕又没出租(虽说看样子不大可能),所以没和朋友一起出门,自己提前十分钟散场了。晚上12点快了,街上空无一人,冷风飕飕的。如果这时候有几个好朋友一起扯淡着走回家,就是人生至福了吧。


--
无能者无所求,饱食而遨游,泛若不系之舟

2010年9月16日星期四

疯言疯语(五)

1.无知
    我们了解宇宙,却连自己为什么存在都不知道。

2.线段
    生命是一段线段,不是圆。所以前面和后面都是无,都和你无关。
    活好这段线段就好了,这是唯一能控制的。

3.警惕小恶非恶
    真正毁坏我们的,不是大是大非。而是一些小小的恶行。
    人是自私的,但作恶的时候能够说服自己并不是在作恶,哪怕是小恶,都是毁灭的开端。

2010年9月13日星期一

淀山湖徒步

    9月11号星期六(正好是911),贝壳和一堆人去淀山湖徒步。事先我们知道,这将是风雨大作的一天,所以贝壳提前准备了雨披和雨伞。事实证明这是一个英明的猪头决定。
    当天早上,贝壳和住附近的某水MM碰头,坐01到上海音乐厅旁边集合。早上晴空万里,贝壳还笑每个气象预报员上辈子都是随机数发生器呢。等到8点,大约来了20多人的样子。男女大约一半一半,这点让贝壳挺惊讶,还以为徒步会是男生比较多呢。沪朱线走高速,很快,我们9点多点就到了朱家角。刚刚下车就碰到了暴雨,不能不说是天意。多大的暴雨呢?这么说吧,贝壳穿了1.2斤的雨披,质量相当好的自行车雨披,还是被浇的浑身湿透。虽然雨披挡住了大多数的雨水,但是还有少部分从前襟渗入。前胸基本湿透了,后背和书包倒是干的。由于是自行车雨披,因此没有袖子,前后襟中间开的很高,雨水就从两边打到裤子上,不多久裤子就废了,手机钱包只能放在书包里。而鞋子更是一上来就进水,从头到底脚都是泡在水里的,最后回家发现脚大了一圈。所以说,即使是有雨披,在暴雨天去徒步依旧是个猪头决定。
    猪头归猪头,我们从朱家嘴出发,走了大约10公里。这10公里是艰苦而枯燥的,大雨,大风,没有好的景色。到一个叫东村的地方躲雨修整的时候,有几个人退出了。当地的阿姨很好心的领他们去坐车回朱家角。刚刚从东村出来,天气放晴,太阳却未出来,正是适合徒步的最佳气候。微风吹来,吹干身上的水分,带来一阵凉意。旁边的树林和稻田郁郁葱葱,前后的道路似无尽头,辽阔的淀山湖湖面笼罩在一片烟雾中。顿时感觉天地宽广,自由自在,万事不挂于怀。直想向湖中大喊两声(还有人真的喊了)。大家开玩笑,要是刚刚走的几个知道这事,肯定后悔死了。想想也是,大风大雨都经历了,却没看到好风景,好事坏事,坚持不坚持,往往就在一念之间。
    我们沿着湖边走,却发现前无去路。这路也不知道是谁修的,修了一半,又在入口不加说明。好几辆车也误入歧途,不得不倒车转向出去。从原路转弯,步过一个小村,就能看到一条很窄的小路和一条新修的大道相邻蜿蜒。我们上了大道,道左是一片湿地,田陌纵横无序,各种野草在地上放肆的生长。太阳透过乌云的间隙,照耀在苍翠欲滴的叶子上,折射出钻石般的光彩。风吹云动,忽现忽收,天色阴晴变换,大地宛如一块流动的翡翠。大道下来,转过两个弯,又是一条新修的大道。这时有人体力开始不支,落在了后面。走到路尽头,领队猴哥让大家在路口休息一下,等待后面的人赶上。
    虽然经过修整,但是刚走没一公里就有两个MM体力吃不消,要原地修整坐车。贝壳想想今天也够累了,而且两个MM也不安全,就提出留下同乘车,其余人继续往前走。当地有好几辆车经过,却都不去商榻。我们才知道,虽然只走了20多公里,但是我们已经从上海地界走到了江苏地界。当地车辆要是回到上海地界,要经过检查站。万一被查出非法营运,后果很严重。一个开三轮的大爷脑子挺快,说虽然不能拉你们到商榻,但是可以拉你们到附近的车站,那里应该有车去商榻。我们想想也是,与其在当地干等,不如付点钱来换取选择权,于是就上了他的车。经过好长一段路的颠簸后,一个小小的建筑出现在视野中。实话说,在这种地方能出现一栋建筑的车站,已经大大出乎我们的预料了。
    我们和一位师傅讲好价钱,30坐到商榻。他自己却听错,把我们拉到了大亭。贝壳看看方向不对,但是对当地不熟,没有说,等到了才发现根本不是我们想去的地方。两个MM十分气愤,坚持要求师傅拉到目的地。师傅没有办法,只有把我们拉到了商榻。我们大致算了一下,他这趟是赚不到什么钱了,可是能怪谁呢?这趟折腾下来,时间也很晚了,从商榻到朱家角的末班车6点发车。算算刚刚的距离,领队和大部队是来不及走完全程的。我们正犹豫间,居然看到了几个队友。到不是他们走的快,而是继我们之后,又有几个人坚持不住,打车过来,领队领着7个人还在坚持。我们看看时间实在来不及,只有坐车先去朱家角。他们若是来得及赶上末班车就坐公交到朱家角,若是来不及,就打车过来。
    车上的行程还是非常舒服的,有风吹来,身上的衣服也干了。外面风雨不兴,夕阳斜斜的照在树丛上,有点田园将芜胡不归的味道。大家交换着吃了点零食,填补一下辘辘的饥肠。大部队发来贺电——他们实在赶不上,干脆也打车去商榻了。我们商议好,由我们在朱家角先找好饭店,大家好好吃顿晚饭。大家应当有数,吃饭在中国的礼节中是非常重要的。STUN曾说过,若是开会碰到,有一面之缘,不算认识。若是会后一起去吃一顿,大家就认识了,以后有事要帮忙。同样,我们这群各处来的网友,在分别的前夕总算能认识认识,在朱家角好好吃一顿。朱家角的餐馆还是挺好吃的,我们选中了放生桥下的一家餐馆,便宜好吃量又足。
    饭过五味,大部队来了,大家又是一阵的敬酒(茶?)和狂吃。毕竟今天运动量大,大家都饿了,即使是最矜持的MM也不会在这时候拿架子。饭毕,坐车回去,一天徒步基本就这样。

2010年9月12日星期日

信任的逻辑(一)

    贝壳打算撰文一个系列,详细描述信任和信任系统。其中涉及很多博弈论,信息安全学的内容。欢迎拍砖。
    首先是一个场景。一个管理组织,调查某种人占总人群的比例。不幸的是,有很多恶意的攻击方试图改变这个数据(增大或减小)。对于被调查人群来说,这个数字不准确会使得每个人都受到损失。那么,怎么去信任这个组织,来确认数据的正确性呢?
    首先是管理组织造假的形态,一般来说有四种方法。一种是修改某个具体人物的属性,来增加或者减小总体比例。一种是向名单中添加不存在的人,来调整总体数字。一种是挑选某个属性的人组成名单。一种是睁眼说瞎话,名单正确但是统计数字和名单不吻合。
    最简单的方法是公布名单,标明每个人是或不是。对于每个人,都可以独立验证自己在名单中的正确性,因此无法修改某个具体人物的属性。通过对名单公布出来的人进行逆向回访(是否存在,是否参与调查)来确认没有添加不存在的人。要求每个参与调查的人都"必须"包含在名单内,来避免挑选属性。名单的统计比例是公布的,可以独立核算的,因此名单无法造假。但是我们知道,很多情况下名单是不能公开的。例如,我们调查艾滋流行状况,如果这个名单公开真的就天下大乱了。那么如何来监督呢?
    我们也许能想到最初的变形,这个组织不开放名单,而开放查询。每个人独立查询自己的属性,因此可以验证具体人物属性,也可以抵御挑选属性。但是对于其他两者,都无法成功防御。因此开放查询实际上对造假是没有抵抗力的。
    而后,我们想到了一种中间方法,每个人可以凭借自己的姓名查询到自己的独立代号(ID,一般是一个数字),但是不能凭借独立代号查询到姓名。于是,我们可以独立的获得代号,从而防御修改人物属性和挑选属性的攻击,也可以防御统计修改。但是对于名单中添加不存在的人,则没有什么防御手段。组织可以向名单中添加一堆不存在的代号来增加总体数量。同时,这种方法其实还隐含了泄密的可能,因为其他知道你姓名信息的人(例如配偶),很容易查到你的属性。
    所以,我们修改上文的方法,将通过名字查询代号改为调查时发放查询代号。这样可以杜绝泄密的可能性。而对抗添加代号则非常麻烦。总体不外乎两种手法——回访和鉴权。
    回访是指通过任意指定名单中一些个体,要求其现身说明自身的属性。如果这个人不出现,或者未参与调查,或者属性错误,就可以确定出现了添加代号。但是很明显,为了保证隐私,这个方法无法工作。鉴权则是要由一个更高可信度的机构实行,对每个用户实行保密身份验证。

钓鱼台渔船乱评

    钓鱼台渔船事件有几个奇怪的地方。首先,渔船为什么会闯入钓鱼台附近海域?是没有导航或控制能力么?如果没有导航或者控制能力,应当适用海难救援的情况。这种情况下虽然扯淡了点,但是无论如何和非法闯入是靠不上边的。如果有导航和控制能力,那么很奇怪的一点就是,作为商业渔船,应该清楚钓鱼岛是个闯不得的雷区——去了会扯进政治问题里。新闻中一直都没有闯入船长的说法,但是照常理分析,只有三种情况才说的通。
    首先,船长是个SB愤青,跑去“保钓”。看现在的情况,不大像,因为如果是保钓人士,日本那里多数会传出消息。而且事主事前也不可能一声不吭。
    其次,这是日本人策划的计划,或者将无控制力的船硬指成非法闯入。日本左翼人士找两个中国渔民,闯入钓鱼岛附近,然后抓起来。由于日本国家政策说的是钓鱼岛是日本领土,因此法院不可能不审。此时渔民主动认罪来换取取消指控,这样会引发北京方面对渔民的非难。然后渔民可以从容申请政治避难,压根不回国,取道其他国家。日本得到了对钓鱼岛实质执法的判例,渔民得到其他国国籍和重金。如果事后渔民认罪并申请政治避难,则存在是这种可能,但是并不能因此断定。
    为什么这不可能是北京方面策划的行动呢?限于先前的错误承诺,北京方面的坚持是无行动准则,导致日本现在对钓鱼岛有实际控制权。既然实际控制权都不在手,搞出这种实质性冲突只会让国际看到,中国在维护钓鱼岛主权方面无行动力。
    最后,船长逐利,追着大群鱼到了钓鱼岛附近,心存侥幸。不得不说,这种可能性是最高的。这种情况下,渔民是最倒霉的一方。如果不认罪,日本法院肯定会判刑。中国方面又不可能因为这种事情和日本起冲突,于是可怜的船长只能在日本服刑以维护国家尊严。如果船长不傻的话,有可能会申请认罪交换免于处罚,并申请政治避难。这点上,和第二条殊途同归,因此不可以最终结果来评判原因。
    不过还是可以稍微看出区别,如果早有预谋,船长的财产和家属应当有转移。如果事发偶然,船长家属财产应当还在国内。
    另外,有没有其他可能呢?有。总体来说,会发生的变化基本是两个,船长认罪不认罪,中方对日本的行动。认罪不申请政治避难——那就实在是傻了。船长可能不认罪。不过鉴于日本方面实际控制船员,中方的消息传递不过去,因此可能性不大。中方的实际行动则比较难揣测。不过以不采取行动的可能性为高。

2010年9月6日星期一

疯言疯语(四)

1.终身遗憾的旅游
    最近在背包客栈,看到很多地方的旅游广告都是“不来终身遗憾”。照这个说法,美国人民怕是要遗憾几辈子了。不知道为什么,偏偏又有那么多中国人往美国跑。某北大女生在美国总统来华时质问人权和普世价值,毕业了去美国学习对方先进技术,学成后打入对方内部——直接嫁了个老美。此谓“我不入地狱谁入地狱”的最好注解。
    照我看,与其说不来终身遗憾,倒不如说来了终身遗憾。一种是遗憾为什么没生在这种地方,天天面对青山绿水。一种是遗憾,本来在自己一亩三分地呆的挺好,自己非要花钱找罪受。现下的旅游,后者越来越多了。即使是前者,也颇有说不过去的地方——人家住那里的,好好没事干找一堆人来对自己的青山绿水评头论足,整天吵吵嚷嚷,为啥?
    一种人有一种人的活法,有人喜欢青山绿水,我喜欢熙攘不休的人群。阳光,蓝天,白云,下面总要有一群人,才让我感觉自己活着。我喜欢自己去各个城市,没人认识的城市。在大街上迷茫的找路,用相机记下每个平凡的瞬间。每个城市有每个城市自己的气味。在一个不熟悉的城市,慢慢徜徉于大街小巷,感受着城市的气息,这让我感觉不一样的人生。

2.也会轮到你
    从小到大,贝壳的人生还算顺利。虽然不是功成名就,扬名天下。至少是中考,高考,暗恋,当课,该有的都有。
    最近牙痛一场,猛然觉醒,原来什么事情都会轮到你。这里没有宣扬宿命论的想法,但是无论好事,坏事,从概率来说总要有人碰到,每个人碰到的概率也差不多。也许你从不担心自己碰到车祸,哪天就有人来撞你。也许你从没想过自己碰到失业,公司偏偏遇到火灾。
    当你看到那些不幸的人的时候,要警醒,哪天也许也会轮到你。这种事情不随自己的努力而改变,不随自己的意愿而变化。
    当然,也包括那人人都逃不开的。。。

3.时间的蠕虫
    如果我们从四维的角度来看世界,每个人都像一条蠕虫一样。从出生时刻开始,到死亡时刻终止,此外别无它物。

2010年9月3日星期五

一个软件工程师到底有多远

    从高中毕业生,到一个软件工程师的成本是多少呢?这得分是什么软件工程师。
    如果是批量培训,学习某种语言的语法,针对特定领域(主要是网页)进行编程。大约需要六到八个月,差不多就是北大青鸟培训生这样的。这种软件工程师拿来基本没法用的,即使是打磨变成熟练工后,最多也就是消耗品。基本每年这个水准的人都会出来数十万,个个新鲜热辣精力充沛不怕压榨。
    如果是常规软件工程师,需要一年的基础课程,软件工程导论,计算机系统原理,高等数学等。一年语言和实践,C语言,数据结构,离散数学等。一年系统学习和工程方法论,编译原理,操作系统,数值算法,软件工程学。最后一年的第二语言和实践。java,软件实际开发等。如果顺利,并且用功的话,一个常规软件工程师大约需要本科四年。
    中国软件专业毕业学生据说150W之多,有多少能达到常规软件工程师的水准,并留在中国呢?大概一万出头。八成以上的学生由于学习靠混,或者实践不足,因此实际上处于批量培训略强的地步。有些还不如批量培训生。软件毕竟属于工程学科,是门硬功夫。虽然不如数学那么硬气,但是靠混是混不到软件工程师的,混软件销售还有点希望。这也是为什么很多软件专业出来的学生不做软件的原因。
    当然,其实还有部分人是因为水准问题,考研或者出国了。
    如果能完全掌握上面的一堆东西,那其实是相当牛的一个人了。加上一定的经验,基本可以胜任任何软件公司中层以下职位。可惜中国奇缺的就是这种人,10多年软件产业发展下来,总共积累了不到20万人。
    如果在普通软件工程师的基础上,钻研某个细节领域,并且有所突破呢?研究生?错了,你成不了研究生,最多当上研究员。软件业在中国发展不过20多年30年的事情,没有任何一所学校有足够的学科积累,能够领导某个领域的发展。(当然有少数几个例外)我们用的流行网络协议,有多少是美国大学领导开发的?多少是中国大学?底层核心算法中,有多少是中国学校发明了去美国申请专利的?所以如果你在某个领域有所突破,最多被相关公司看中,招进去当研究员,活的很滋润。如果真有了本事去考研——你自己看结果吧。
    程序员的最高境界是什么?那基本是Donald Kunth,Richard Stallman这种的。要么将计算机科学基础发展到极限,要么将某种哲学引入计算机领域,并且改变世界。
    这种程序员,中国一个没有。十年内也不会出。

2010年8月30日星期一

规则不平等和逆向歧视

    最近看美国最高法院案件,其中有个加州大学诉巴基案挺有意思,讲的是民族/种族问题。原本黑人在美国受到了非常大的剥削和奴役,直到南北战争后,才逐步废除了奴隶制。此后以白人为主力的社会,对黑人又进行了歧视,出现了“隔离但平等”的原则。这些问题林林总总,直到二战后才有比较大的好转。那么加州大学诉巴基案,是加州大学对黑人进行歧视了么?非也非也,加州大学不但没有歧视黑人,巴基也不是黑人。事情的焦点在于,加州大学在录取学生的时候,为黑人保留了一定比例的名额。巴基考试下来去查分,发现自己比几个被录取的黑人学生分数高很多,但是没有被录取。于是怒而将加州大学告上法庭,称其“逆向歧视”。
    美国法院接到这个案子比较头痛的,因为加州大学是按照美国政府的指导(准确说是加州的立法),为黑人学生保留的名额,其份额也和黑人人口基本成比例。只是由于黑人家庭中有大量贫穷家庭,因此黑人的平均成绩并不高。如果对其“一刀切”的统一录取,对那些黑人家庭并不公平。他们历史上受到了奴役和剥削,因而造成了家族一开始的贫穷。由于贫穷和被歧视,因此总是无法提高自己的知识,这又造成了贫穷。而对种族分离录取,对其他人种学生则不公平,而且有违美国宪法基本原则。书中举过一个例子,一个其他国家,在后期迁移来的黑人子女,祖上并没有受到奴役,因此这个学生从小受到比较良好的教育。而另一个则是祖上没有奴役过黑奴的白人子女。对前者进行偏向是对后者的不公。这个问题有点类似于今天中国的“高考移民”问题。另外,美国的宪法基本原则是假定人人生而平等。反种族隔离,女性运动,都是此原则的具体体现。由于案件的特殊性(个人基于宪法对抗州法律),所以这个案子一直上诉到了最高法院。
    最高法院的判决我就不说了,大家可以自行去查(顺便给书打打广告)。但是关于这个案件,我们可以看到几个有趣的问题。在中国的发展中,颇为值得注意和思考。
    首先是透明的考试和录取制度。被大家称为最严密的高考,其实是非常不透明的,因此也是注定不公正的。这种不透明体现在几个层面上。首先是考题批阅不透明。主观题如作文的批阅就算了,客观题的对错批阅都不允许查阅和异议,这对考生是非常不公的。有的时候题目出错,老师批错,影响的是学生的一生。在这种严肃的问题上,居然以“查阅和矫正会引发各种问题”和“没有时间和资源来做这个事情”为由进行推搪,其不公可见一斑。即便因为录取时间紧而暂时忽略批错,也应当允许事后的翻找和对错误的补偿(说白了就是国家赔偿)。考题正确性更是应当受到全社会的监督和检验。
    其次是高校录取不透明,高校录取,放榜分数除了本人无人知晓。有没有人被跨分录取,今年的情况如何,全凭校方的一张报告,而且还是内部的。由于这种制度本身没有透明性,因此不可监督。又因为其重要性,因此特别容易舞弊。现在高考还比较严密,纯因为全国家长的注视,和教育部的重视。贝壳可以断言,如果教育部稍一放松,高考内部的舞弊案件必然直线上升。
    再次是高考的优惠政策。地域性优惠,种族加分,特长加分。这些东西本身不一定能消除歧视,有时反而是歧视的根源。例如地域性优惠,无疑在剥夺几个人口大省的学生教育权。由此很容易引发高考移民,此所谓上有政策,下有对策。种族加分,有没有让少数民族感受到国家大爱尚不得知,反倒是贝壳和几个朋友在聊起这些问题的时候,听到他们郁闷的提到“那些新疆人”“占了他们的名额”。而特长加分本身,正在变成一种新的特权制度,作为高考的扩展和补充。
    现在在沿海城市的人可能没有体会,其实我们坐在一个种族问题的火药桶上。在西安,火药味就比在沿海重了很多。去年的75暴乱,正是这种现象的体现。如果我们不审慎的面对这个问题,也许将来的某天,我们就需要面对一个流血的伤口。

2010年8月29日星期日

新时代新媒体

    刚刚在看美国高法要案中的水门案件,说到尼克松败于肯尼迪,其实很大成分是输在了新出现的电视辩论前面。乍然想起,其实我们也处于一个新传媒开始的年代。网络传媒正在很大程度上的改变和补充我们获得信息的方式。
    网络作为传媒的特性,不必多说,有无数引论论证网络的特殊性。互联网络最主要的几个特性有,即时性,广泛性,非中心特性。当然,针对中国传媒,还有非审查性,这个特征针对其他传媒并不明显。
    所谓即时性,即信息在网络上的传播速度非常快。在报纸时代,我们传递一条消息的时间大约是一天。报纸需要用一天时间来完成信息采集到发行传递到个人手中的过程,这在当时已经是惊人的进步。电视时代,大约是4-6小时,一次新闻的采集编排和合适的发送过程大约需要这么长时间。而网络时代,尤其是准设备(手机,便携网络设备)的大规模普及,使得事件出现到信息传递完成大约只需要2分钟。911,最早的网络信息传递时间据说是15分钟。汶川地震,发生到贝壳得知(由于没有震感,所以当时没发现)总共用了6分钟。国外有漫画笑称,twitter上地震消息传播的比地震波还快(地震波的速度并不快),但是推友们看到地震消息的第一反应是回推。其效率增长了240倍,很多基于原定系统和环境的传媒策略就需要作出相应调整。例如克林顿丑闻,就是由网络媒体率先公开,并炒大的。
    所谓广泛性,是网络传媒的一大标志性特征。网络上,我们认识很多我们一生中原本无法认识的人,这些人的具体身份信息根本无法得知,其分布也非常广泛。当我们发送或转发一个信息的时候,按照原本的途径,只有我们熟悉的人可以得知。逐级传播到最后,被新闻媒体得知,才公示天下。其传播途径就好象一滴墨水滴入水中,会逐步的渲染开。然而,我们切断新闻媒体,对个体实施控制,是可以有效的抑制信息的传播的。但是网络时代,我们的信息会传播到不特定位置,不特定身份的人,好象奶酪中的空洞,看似微小,却无处不在。这带来两大特性,控制信息的传播非常困难,和信息在不同环境中的传播有了交换。后者更通俗点,举例来说,原本只有汽车工人知晓并关心的问题,完全可能引发全国争议。
    所谓非中心特性,则更为特殊。通常我们的讨论,是基于少数几个点的。针对某个问题,你的言论只有几个朋友亲戚知晓。如果你要让更多人知晓你的言论,则必须通过电视台,报纸的栏目回馈,让栏目主持看到,再由主持摘选“观众来信”。于是全部的讨论都基于几个特定点。这样的讨论当然不可能让所有人发表意见,更没有机会让不同民众接触持异议者的意见,从而造成持不同意见的民众缺乏沟通。网络的特性使得针对某个问题的讨论不局限于几个官方的论坛,更可以自行组织论坛,乃至在无关综合论坛上发表意见。由于来自各个行业的人充分发表意见,因此容易汇集不同观点,形成折衷。
    例如09年杭州的欺实马案,针对被告是否适用“以危险方法危害公共安全罪”,就有两个不同意见。一方认为被告行为性质严重态度恶劣,以一般“交通肇事罪”审判不足以平民愤,而且不足以对其他潜在犯罪者形成警告。认为应当对被告判以“以危险方法危害公共安全罪”。另一方认为“以危险方法危害公共安全罪”,仅适用于特定情况下的特定人。检察院必须证明被告当时有“危害公共安全的主管故意”,否则容易扩大执法,造成其他案件的执法随意。建议该案件以“交通肇事罪”判处,并进行人大立法。双方的观点都有一定根据和理由,这种情况正是最适合非中心讨论的情况。
    在网络传媒时代,以前我们所用的一些传播控制途径,例如新闻管制,禁止讨论,都很难实施。现在网络越来越容易进行端对端加密通讯,因此多个人的私密讨论,越来越难以禁止。这些技术原本被美国视为国家机密,可见其安全程度绝非轻易可以破解。而网络时代惊人的传播速度更是使得新闻管理缺少了执行的空间。往往是一条新闻,审查机构还没到手,全国都有人知道了。这时即使切断传播,最多也只能禁止后续消息的传递。原本已经知道的人通过面对面相互传递已经无法阻止,而且足以将新闻扩大到相当水准。很多本来能够掩盖的事情,就是在这种情况下弄到不得不公开的地步的。
如何管理网络,成了越来越多政府的一个心病。美国社会有广泛的言论自由,因此很难通过什么网络新闻禁令来进行管理。因此美国网络的大头问题是诽谤和版权问题。而中国对新闻传播有管制,因此如何继续管制网络是个很头大的问题。其中比较有成效的几个方案是GFW,责任制和五毛。
    GFW是国家防火墙的简称,其方案是通过国家建立的网络自动审查系统防止民众访问国外网站。当然,前提是打着反色情反盗版的旗号的。责任制是针对国内的,对不听话的论坛,切断其服务器访问,并追究登记人责任。实话说这两个方案效果还是不错的,然而网络的特性并不容易受到压抑。如果这种方案继续下去,估计中国就会有组织开始做分布式互联网了。技术上说,一个服务器所能提供的所有服务和所需要的所有资源,可以分布到数百乃至数万用户的电脑中。这时除非断开整个网络或者删除所有人电脑中的数据,否则无法清除和控制信息。
    五毛是一个更好的思路,其原理是根据互联网的广泛性特性,你不可能查证每个人的信息。因此利用大量被收买的人,在网络上发布各种信息,扰乱正常信息的传递。然而现在兴起的SNS和基于SNS的系统是这种方案的最大克星。SNS系统的核心是人和人的关系,或者说,一般我只信任我认识的人。对于刚认识的人,我可以作为朋友交流,然而未必信任。这样,当五毛发挥作用,发出虚假信息时。接收信息的每个人,会评判他的信息有效程度。显然,五毛的信息有效程度是非常低的,一次两次可以生效,然而多来几次就导致接受者均快速断开关系,虚假信息传不出去。以开心网为例,在上面发表强国强军之类的帖子还有大量转贴。然而针对某个特定事件进行恫吓,发表虚假声明根本无人理会。
    因此,五毛实际上会转变成一个更复杂的东西――新闻操纵和传媒操纵技术。就是现在网络上俗称的推手。通过分析观众观点,组织合适的人写文章引导观众论点,从而营造言论。然而实话说,这种东西的效果和会造成的影响就小了很多。一个言论要能被引导,首先要有一定的言论市场。跑上去说欺实马无罪的人结局多数是被骂一顿然后丢出去。其次,言论诱导的有效程度是和民众受教育的程度成反比的。受教育越多,我们越能够分辨新闻引导。
    然而不得不说,网络新闻能取得的效果和民众的素质有很大的关系。中国网民的一大特点就是平均受教育程度低,知识和素质明显不足。例如,在国外综合论坛上不是看不到骂人,但是相对少,而且一旦讨论过激都有管理员出来阻止。中国论坛上不但骂人语言满天飞,而且半天不见管理员,整个骂人帖就悬尸版顶,大家口水来去。其次,讨论方法经常落入诡辩范畴,不但动辄喊口号,拿政治策略逼对方闭嘴。而且经常出现质疑对方动机的情况。这简直不叫辩论,叫打架。
    我们站在历史和历史的边缘上,搞不好一翻身就进教科书了。这时候的话,还是得小心点说。

2010年8月26日星期四

疯言疯语(三)

1.击鼓传花
    某日和人讨论房价,来人苦劝我买房,说房价必涨。
    我问,100W的房子,20年后可有200W?来人说怎么可能?我说,存定期就可以,五年期定期,连存20年。
    我又问,依您看,这100W的房子,20年后,价几何?来人说我不知道,我怎么知道20年后房价多少,不过今年房价是一定会涨的。小伙子看事情不要那么片面,房子是人人都要买的,现在买肯定合算。何况就算将来房价下跌,你也可以把房抛出去。。。
    类似言语我听过三回,分别是99年,06年,和今天。原来历史真的是会重演的。

2.菲律宾枪击案
    如果当初徐步高流弹打死了菲佣。。。

3.黑白
    做的出就是做的出,做不出就是做不出。程序员的世界,非黑即白。

2010年8月23日星期一

疯言疯语(二)

1.若是重生
    都不想死,不妨想想,如果有机会重生如何?
    若是你死后,大脑被妥善保留,等200年后,有科学家接通你的大脑,替你换一副机器人筋骨。你又得返人间,就如睡一觉一般,那当如何?
    父母早已作古不说,连子女都死去多年,墓碑都未必找的到。亲戚朋友更不必说,天苍苍野茫茫谁都不认识,只剩形影相吊。故时家园都做土,路上所见所谓又不是自己熟悉的。你觉得如何?
    还不若让我继续睡去罢。找个人讲讲200年前的故事,为这段多出来的生命找个多出来的意义。然后继续睡去——这次是永远。

2.何必多言
    上年纪的人往往有个癖好,喜欢找个人教一下路子,你们什么什么事情可以怎么怎么做。你若是有意见,他就插话接着往下说,内容基本是原来的车轱辘话。你若是打断就是没礼貌——也不提谁先打断谁的,反正我是长辈。若是你不听,就天天说天天说,说到你听为止,反正年纪大了没事干,有的是时间。做好了,我说的没错吧?做不好,你们还嫩拉。
    不否认,多数事情上了年纪的人比年轻人经验更丰富,做的更好。所以呢?所以这个世界就请老家伙们当道?你们再结一次婚?再上一次门?再洞一次房?
    古人说,好为人师者鄙。

3.不知生者不畏死
    不知道生的欢乐的,不知道死亡的可畏。天天都受难的人,最容易轻贱自己的性命。
    不知道死的可怕的,不能说自己不怕死。轻贱自己性命的人,并非视死如归,最多只能说生亦何欢罢了。
    只有知道生的欢乐的,又不畏惧死者,才能说有大智慧,具大勇气。

4.关于男女
    愚者:年轻的时候可以谈着玩玩,责任这类问题等该结婚了再说。
    智者:年轻时候对别的女孩不负责,婚后就要提心吊胆是不是老婆被人不负责过,或者是老婆正在对你不负责。
    愚者:男孩子要让着女孩子,如果有争执都是男孩子的错。
    智者:这样等于逼男人婚前婚后两面派。男人找个对象过一辈子,不是找个对象气一辈子,更不是找个对象指使自己一辈子。除了少数真有这种忍耐力的男人,其余要结婚,怕只有在婚前伪装。
    愚者:好男人/女人都到哪里去了,我要钓男人/女人。
    智者:你拿美色钓男人,将来就别怪人好色。你拿金钱来钓女人,将来就别怪人贪财。你撒什么鱼饵下去,钓上来就是吃什么的鱼。
    愚者:我的男朋友赚的不够多/我的女朋友胸不够大。
    智者:请自行问自己另一个问题,其余类似问题类推。
    愚者:她/他一点都不理解我
    智者:你很理解他/她。

2010年8月22日星期日

疯言疯语(一)

一,拜拜
    最近家里拜拜,说是曾祖母百岁生日——当然,她老人家早在我五个月的时候就驾鹤西去了。外婆说百岁生日是一定要祭拜一下的,百岁后人就重新投胎去了。我不由想到——这要是活了个101岁,不知道投胎管理办法是怎么说的。是等200岁呢?还是就地重新投胎。外婆说她也不知道,小时候听说的时候觉得100岁挺难活到了,就压根没问要是活到怎么办——这厢她都快到了。
    老妈到了上海,睡在前面我的床上,我就睡到了后屋。老妈说不敢睡,全是烧给曾祖母的金纸什么的,问我难道不怕么?我说有什么好怕的,大家都是亲戚。这里是曾祖母,到别人那里就是七大姨八大姑,七舅姥爷二大叔。人家下来晃晃最多是因为人多麻将少,让你烧两副麻将上去打打。大家亲戚一场,她吓你干嘛?何况若是她下来,我们高兴还来不及,又有什么好怕的呢?金纸不是烧给死人的,是烧给活人的。若是死后万事皆空,我们活着的不免戚戚自悲。与其如此,宁可自己骗自己,说人死后有灵。若是死灵现身,说明死后仍有知,大家不知道多开心。

二,柯南
    前两天看到个帖子,讲柯南推理如何不合理。暗想,见树木而不见森林。
    讨论金田一的推理,总还有靠谱的成分在里面。柯南么,没见偌大一个活人转眼就返老还童了。这药要卖出去,也不用研究解药,也没黑暗组织什么事了。多少人哭着喊着要返老还童呢,大家何必还打打杀杀呢?而且目前为止500多集,起码也有500案子了。照两天一个案子的速度计算,小兰刚进高中都该高中毕业了。在这种背景下讨论推理,实在是。。。

三,天龙八部
    萧峰脸上露出一丝苦笑,心道:“我既误杀阿朱,此生终不再娶,阿朱就是阿朱,四海列国,千秋万载,就只一个阿朱。岂是一千个、一万个汉人美女所能代替得了的?皇上看惯了后宫千百名宫娥妃子,那懂得‘情’之一字?”
    今天不记得昨天,今天不知道明天,要认定一个人一生,究竟有多难。

2010年8月15日星期日

关于生,关于死

    贝壳最近头痛加牙痛,非常痛。有多痛呢?你看这个标题还猜不到么?大量时间处于神智昏迷状态,痛的时候完全说不出话来。下面是一些记录:
    八月10日开始头痛,八月12日就医。左面部,左耳疼痛。由于近耳疼痛,又有游泳后耳道疥结病史,并且前两周曾游泳,怀疑耳道疥结。耳科诊断无异常,内科诊断为三叉神经痛。
    八月12日晚开始服用卡马西平,一日两次,早8点,晚6点,每次0.1g,直到八月15日中午。服用后疼痛未改变。夜间入睡后疼痛停止,早上起床后短时间内也不出现疼痛。
    八月13日疼痛加剧,左侧三叉神经第一二分支(下颚上颚疼痛),持续疼痛,数分钟反复,按摩头部后问题减轻。
    八月14日继续按摩,卡马西平,加偏方,涂抹花椒水,疼痛依旧。但上颚第二齿触感异常。
    八月15日疼痛改变,上颚左侧第二颗牙齿触痛,上下颚交汇处(咬合肌)酸痛,按摩头部无效。疼痛无法入睡。由于剧痛,停止使用卡马西平,花椒水,改服布洛芬缓释胶囊。后症状缓解。
    在疼痛而造成的神智昏沉的时间里,贝壳想了很多问题。想了小时候的一些恐惧,想了现在以来的人生,想了生和死。
    死是什么东西呢?很多人避讳说,但是却没有人能逃避。也许不同宗教对死有不同的解释,然而无法改变的一点是,知道的人都不会再告诉你,死是什么东西了。生命是很神奇的东西,无论什么机理,这世界上只有一个你。我为什么成为我?我为什么不是别人?这世界是真实的么?这些是我小时候常常思考的问题。我的结论是,我没有什么特别。我和别人一样,看到这世界,想到自己,会笑,会叫,会思考,也会死。这大千世界,都是因“自我”而存在。这可能是神经间的化学作用,也可能是灵魂和肉体的共鸣。然而无论是哪种结果,一旦陨落,失去记忆,即失去自我。死,一种可能的结果,是再也不能笑,不能叫,也没有意识,甚至意识不到自己没有意识。这大千世界都与你无关——由此而来的寂寞和空虚,才是最让人恐惧的东西。
    关于为什么要善待父母,有这么一句话。父母好像一张纸,把我们和死亡隔开。当失去父母后,我们就要直面死亡了。其实在牙痛的时候,我恍然悟到,这张纸虽然为你挡下风风雨雨,却挡不住死亡。死亡没有到来的时候,我们每个人都假装它不存在。死亡到来的时候,我们每个人都惊讶它的突然。我想,如果这世界有个开始,它就要有个终结。即使可以长生不老,也逃不过世界末日。一切的繁华,都会成为寂静。我也会静静的在那里,虽然我什么都不知道。
    人的生命只有一次,也许我无法选择怎么死,但至少可以选择怎么活。只要我们活的够长,迟早是要面对这个问题的。自己的生命,伴侣的生命,生老病死,如世界的轮回。我希望我在离去的时候,能够没有后悔,我在这个世界上,哭过,笑过,爱过,恨过,看了要看的东西,留下了生命的印记,快乐的度过了每一天。
    所以,我列了个单子,如果我没事的话,我打算去逐步实施。我希望在我走的那天,了无遗憾。即使这世界不再和我有关,我也可以圆满。
    1.跑去MIT,BSD,Stanford看看,顺便听一节课——不管听得懂听不懂。尤其要听听高伯伯的具体数学,虽然基本肯定听不懂。
    2.能和我爱的人说一声,我爱你们。能和我所负的人说一声,对不起。
    3.教一个徒弟,继承我的衣钵。我希望他能热爱电脑,真的对电脑有兴趣,而且有一定条件。不求他有多大成就,不求他用我的知识做什么,甚至不求他承认我是师傅。只求有一个人,能让我,将我的知识,连带自己存在的烙印,都教给他。这样,有人可以证明,我,在这个世界上走过。
    至于贝壳的牙痛,贝壳认为这是劫。这世界也许有个最高的存在,也许没有。然而人的一生中,总要碰到很多问题。这些问题决定人的一生,却来的悄无声息。人在劫中,要失去什么,也要得到什么。如果能度过劫,将是新的生命的开始,如果不行,则是旧的生命的结束。贝壳的牙痛,也许是要让贝壳明白,什么是生,什么是死,以及生命应该如何渡过。

2010年8月10日星期二

版权保护的迷局――论微软状告东莞网吧

    微软把广州的网吧告了,索价158万。这案子要放在美国,怕是没什么悬念的。敢用盗版,158万的索赔只能算小数,后面跟着的各种费用和公众质疑足够让公司活不下去了。而中国网吧的董事长居然亲自出面陈词,宣称“这样会让东莞一半的网吧倒闭”,不能不说是中国和美国的不同文化造成的不同结果。
    美国是一个注重知识产权的国家,其背后的逻辑是,保护知识产权,才能让更多的人有热情创造好东西。因此,维护知识产权是非常重要的(甚至被大公司使用到很过分程度的)。一家公司,哪怕只有一台机器使用了盗版,都会伤害整个公司的信用。因此,微软关于盗版的态度,Bill Gates说的很露骨:他们要偷,就让他们偷,回头我们会连本带利拿回来的。在西方,只有一种违反版权的使用是得到默许的,就是为了教育教学目的的评估试用。AST开始Minix的原因就是因为闭源软件不利于教学,这点后来也被RMS等很多人所认识到。因此学校基于教育目的的使用,多数不会受到追究,当事公司多数装个大方,给予“特别授权”了事。当然,仅限用于教授课程,若是滥用盗版Office办理业务,还是会受到追究的。
    开源软件业也受益于版权良多。若非西方国家严格的版权保护,很多对开源没兴趣的人根本不会使用开源软件。开源软件算是游走在版权与非版权间的平衡者。若是版权执行过于严厉,则有开源软件来抑制软件商乱抬价格(若是不行,只有诉诸反垄断法了)。若是版权执行过与宽松,则开源软件业自然疲软,让软件商可以喘口气。因此,从理论上最反版权的GNU运动,反而最受到版权的保护。
    而中国作为后起之秀,在知识产权上注定不能像美国那样保护。因为多数专利,美国是收钱人,中国则是付钱人,收自己人的钱给外人,这是国家公民无论如何不能认同的,尤其是在对于生死问题相关的知识产权上。例如印度曾声称,所有西方有关医药的知识产权限制在印度不生效,由此才得以廉价的生产各种抗热带病的药物。对发展中国家的知识产权保护弱化问题,发达国家多数持眼开眼闭,或者不过于紧逼态度。因为过度的限制发展中国家会导致对方另起炉灶,日后搞不好多出一家竞争对手。
    然而反过来,过于弱化的知识产权保护,反倒是值得发展中国家自己警惕的问题。我们可以回想,知识产权的作用是什么,大概就能得知过于弱化的知识产权保护会造成什么后果。知识产权保护人的创造意识,而过于弱化的知识产权保护会产生创造依赖。虽然我们可以廉价的抄袭别人的东西,然而创造什么,核心是什么,给不给,还是别人说了算。更麻烦的是,没人愿意搞什么创新,因为知识产权弱化的作用同时作用于对方和自己。抄袭者才有机会壮大和发展,如腾讯就是中国特有的例子。
    而董事长出面宣称,“东莞的网吧要倒一半”,这更是中国特色中的中国特色。这招携GDP以令政府的招数,房产商就玩的很透彻。你不给我政策,我就威胁要关门,看你怎么交代。实话说对于某些道德违规乃至法律违规的行业,不如关了好。要不怎么?贩毒的也跑出来宣称自己创造了多少GDP,严打会让中国哪里的经济崩溃?可惜对于地方官员来说,GDP才是命根,至于执法的严肃性这个问题,在和谐社会的基础上都好商量。
    根本上说,版权保护是个迷局。若是严格执行,怕会伤害整个经济和技术的发展。若是宽松执行,则会伤害整个国家的创造力。

2010年8月8日星期日

关于外部成本的几个实例

    我们知道,经济学中有一个外部成本问题。如果一个获利行为中,会使用某种资源,而不必付费。那么生产者就会肆无忌惮的使用这种资源,例如污染。处理的方法就是让生产者对这种使用进行付费。
    今天讲的几个问题,和这个现象无关又紧密相关。
    首先是少年犯刑罚问题。少年犯是否应当减刑?目前中国的法律和执行上,少年犯都是减刑的。但是从爱护下一代角度来说,非但不应当减刑,反而应当加刑。很多人认为刑法的目的是让受害者获得安慰,但是从社会角度来说,这不是最重要的目的。让受害者获得安慰,属于“同态报复”,虽然从情理上可以理解,可是理论上说却未必高尚。刑法的最主要目的,是威胁和震慑其他意图犯罪者,以形成稳定的,可预期的社会环境。杀人者死,如此我们的社会才不会盗匪横行。而偏向执行,对少年犯减刑,乃至未成年不得判处死刑,无异于鼓励少年人偷盗,犯罪,乃至杀人。如果有少年偷盗集团,因故杀人,算集体犯罪。我们如何处之?杀之不合法,不杀不足戒。无奈之下的做法,只有判去少改所。而年少时的行为,接触的东西,会影响人的一生。一个年青人一旦入了少改所,再正正常常走完一生的几率就很低了。与其考虑如何通过少改所来“改造”少年犯,不如以刑法戒之。韩非子中曾说:子产相郑,病将死,谓游吉曰:“我死后,子必用郑,必以严莅人。夫火形严,故人鲜灼;水形懦,故人多溺。子必严子之刑,无令溺子之懦。”故子产死,游吉不忍行严刑,郑少年相率为盗,处于萑泽,将遂以为郑祸。游吉率车骑与战,一日一夜,仅能克之。游吉喟然叹曰:”吾蚤行夫子之教,必不悔至于此矣。“
    而后是贫困地区水电/环境补贴问题。我反对对贫困地区,尤其是有污染问题的贫困地区,进行水电/环境补贴,不赞同进行医疗补贴,建议只执行教育补贴。贫困地区出现环境问题的,必然是产业贪图资源和人力,在当地乱开工厂所致。如此情况下进行环境补贴,或者补贴水电,无异于鼓励产业继续开下去。补贴越大,污染越大。

2010年8月4日星期三

代码过程管理

    无论是做产品,还是做项目,无可避免的要碰到代码过程管理的问题。这个问题主要是平衡产品质量,生产速度,开发投入的关系,并且设法增大乘积。
    通常来说,质量,速度,投入三者是互相矛盾的,有的时候还要加上风险。质量越高,速度越快的生产过程,其投入也就越高。但是这几个关系并非单纯的并行替换关系,正如人月神话中所说的,人月这个单位暗示人和月是可以互换的,但实际不是。项目中主要碰到的问题往往是,在控制质量不变的情况下,增加投入不能提高速度。在控制速度不变的情况下,减小投入不能降低质量。偶尔,我们想方设法找到了一个方式,能够很好的满足质量-速度-投入的三元平衡,但是时灵时不灵,这就是风险元的问题了——通常情况下我们不会碰到。
    作为平衡三者的起点,你不能从项目/产品的开始才考虑这个问题,而是必须从招聘/团队组建的时候开始考虑。一个不靠谱的人就会破坏整个团队,所以在招聘的时候,保持宁缺勿滥的思想。通常的项目/产品并不需要一堆天才,你只要一堆能够良好执行计划的员工就行了。靠谱的人的有几个要点,能够比较好的进行沟通,良好的计划制定和执行能力,大量的编码训练。有的时候我们往往以工作年限来衡量一个人的编码训练,实际上编码训练和工作年限并没有特别大的关系。好的项目经理/产品经理,应该能从编码的设计和实现中,嗅出编码训练的程度。
    坚持只招聘合适的员工,事实上是以增大人力资源成本来解决速度-质量问题。因此通常只会被用于质量不变的情况下,增加投入提高速度。不幸的是,要实行这个步骤往往必须在项目的开始前进行计划。因此项目的正确做法不是添油战术,而是减油战术。减油战术的要点是强迫项目使用它天然能够使用的最多人手,使得项目处于人力资源相对充足的状况。再设法控制每个人的工作周期,不要让被分配的人做和他特质不吻合的工作。例如程序员完成编码后,不要让他去做文档/测试的工作,而是提前撤出项目。如果项目顺利,逐步撤出闲置人手组建其他项目,并保持项目依旧按时完成。如果项目仍旧不顺利,至少我们做到了我们能做的最快速度。
    同时,这个战术涉及另外一个问题。我们都知道,越大的项目,需要的人手越多。而越多的人手,每增加一个人所能提高的效益就越低(俗称边际降低)。因此,平衡三者的另一个要点是切分项目,使其拥有完美的边界。假如一个系统,我们需要12个人工作半年。我们将其切分为两个相对独立的子系统,每个系统分配六个人,通常不用半年就可以完成项目。正常来说,项目所需资源随着复杂度增加往往是三次方到四次方增加的,而项目切分有助于使得前者随着后者线性增加。切分的优劣只取决于其边界的清晰程度和复杂程度,和需要多少人手,如何分配等等问题皆不相关。
    在完成上述几个步骤后,我们就拥有了完美完成项目的一个起点,合适的成员,充足的人手,适当的边界。不幸的是,通常我们无法做到这么完美,成员不都是适当的,人手是不足的,需求是修改的,所以边界是模糊的。那么在整个代码过程中,我们依旧有一些可以做的事情。
    首先是问题的早期发现,方法是代码规范,单元测试和交叉检查(cross check)。通常建议将人手编排成水平交错的一个环,按照顺时针方向,由一个人检查另一个人的代码。交叉检查有三重目的,帮助新手学习编码,抑制不小心和设计失当所造成的错误,当其中一个人无法工作时有人可以接手其工作。虽然这将付出一定时间,但是可以比较好的在前期发现和控制问题。同时,按照逆时针方向,编写另一个人的单元测试代码。单元测试有助于隔离问题范围,减少在实现中的一些无聊问题。
    其次是问题的快速沟通和持续聚焦在工作上。强迫所有人每天写下需要处理的问题(todo list),然后每天勾掉解决的问题。这方法可以从各种GTD书籍上看到细节。同时,每天召开快速例行会议。将当天处理掉的todo list,碰到的问题和解决方法读出来。快速的沟通方便在早期把握员工的心不在焉,同时也方便其他员工发现潜在的可能与其相关的问题。
    最后就是快速文档和后期文档相结合。在项目过程中提倡快速文档,即写下某个问题相关的精简描述和姓名,方便其他人联系你即可。在项目完成后,逐步补充文档,细化条目成为完整的文档。

2010年8月2日星期一

南京爆炸的威力估算

    官方报道中说,爆炸外1公里的玻璃破碎。我们可以认为这是爆炸威力的保守描述。爆炸的冲击波能量会按照离中心距离平方反比下降。如果假定25倍的能量足够致死人,或者破坏平房的话,我们可以计算得到这一范围是中心半径200米内。
    同时,官方报道的地址是万寿村15号(这一具体位置现在已经很难找到),在谷歌地图上可以看到附近的地形。这里[1]有google earth地图标,但不一定准,我没用过,是直接在maps.google.com上查找的地址,然后查看卫星图。卫星图显示的可能有偏移,因此我们将200米半径的圆放置在房屋和人口最稀少的位置上。不过附近200米半径怎么放都是平房在百间左右,车在数十辆上下。根据这篇报道[2],当地正在拆迁。因此我们将当地的人口少算,一间平房一人,一车两人(我还没算公交呢,两人已经很少了),这样,暴露在致死冲击波半径内的人数不应少于120人。不考虑后续的高温烧灼和有毒烟雾,只死了13个,不能不说是中国的幸运。
    另外还有关于新闻[2]的一点有意思的事情。这篇[3]新闻说,同样的人在接受采访的时候,说的是“现场抬出一百多具尸体出来”,而在[2]中说的是“造成的人员伤亡估计目前看没有发现多少。有两、三个在现场抬出来,往医院送了。”。我觉得这人精神分裂。

reference:
1.http://bbs.keyhole.com/ubb/ubbthreads.php?ubb=showflat&Number=1352319
2.http://www.21cbh.com/HTML/2010-7-28/1MMDAwMDE4OTE1Mg.html
3.http://news.sdchina.com/show/312771.html
注:1未经验证,2, 3都验证过,是中国境内注册的域名。

2010年7月30日星期五

一根棍上的蚂蚁引发的问题

     一道高盛的面试题,在cupg的论坛里面引发了口水大战。原题如下:一根棍子上面有无数只蚂蚁,假设两只蚂蚁碰到之后就会180度调头反向前进,碰到,再调头,直到棍子的某一头,然后掉下来;然后再假设1只蚂蚁从棍子的这头到那头一共需要5分钟,那么问题是:需要多少时间,这根棍子上所有的蚂蚁会掉下来?
    开始的时候,我想的很简单,两只蚂蚁碰到就会掉头,因此相当于对穿前进。因此,一只蚂蚁要爬过整个棍子需要五分钟。
    后来有人质疑,怎么论证呢?为什么不可能是别的情况呢?
    论坛里的结论,基本是2.5/5/10分钟三种结论。
    现在,我基本论证如下:
    坚持蚂蚁碰撞的观点。
    每只蚂蚁掉下的时间,等于蚂蚁初始前进方向上的距离。我们假定这个距离是随机的。
    因此,t分钟内掉下的概率,等于t/5。
    每只蚂蚁如此,N只蚂蚁,重复的概率是(t/5)^N。即,N只蚂蚁的情况下,在t分钟内掉下的概率为F(t) = (t/5)^N。
    可以求得概率P(t) = N*t^(N-1)/5^N,以及期望,t bar = 5*(1/2)^(1/N)。
    当N趋于无限大时,t bar = 5。

2010年7月26日星期一

我的哲学系统(一)

    哲学系统这个词,说起来是一个比较大的概念。而本文所阐述的概念又远远大于哲学系统,包含了某些宗教的东西,所以难免显得冗长枯燥。不过贝壳可以保证,绝对不会比马哲课枯燥的。
    我的哲学体系建立,是从曼昆的《经济学》这本书开始的。对于某些人这也许是个讽刺,对于另一些人可能无法理解。一个人的人生哲学系统,居然是从一本经济学书中开始建立的。在刚考上大学的时候,我一下失去了人生的方向。作为人生迷茫的反弹,除了吃就是睡。在短短的一个月内,我的体重增长了15公斤,并且开始留起了长发。其实想想我还是挺幸运的,如果当时接触泡吧吸毒赌博,也许我就完全不是现在这个样子了。百无聊赖之下,我到处找一些比较好玩的书和电影看。现在我还在持续的追一些日本的动漫,就是源于当时的习惯。也许是注定,我当时不知道从哪里弄到了一本曼昆的《经济学》。也许是图书馆,或者是哪位学长,我记得不是很清楚了。反正交大用这本书作为经济学教材,看到一本并不奇怪。
    这本书真正吸引我的,是曼昆用于描述世界运行的基础原理。这本书不算太复杂,没有用到经济学中一些高深的理论,而仅仅是使用了一些普通的假定,来推测整个世界的运行。这个系统非常像欧几里德的《几何原本》,从简单的假定推导出纷繁的世界。当然,很多假定都是错的,例如理性人假定,不能说完全正确。但是这种方法,通过理性和逻辑推导来解构个体行为和人类社会行为的思维方式,给我的印象非常深刻。在此之前,我们听到的世界逻辑是迷茫的。一方面,所有人都在说,我们的社会是好的,经济是好的,有坏的因素,是因为一小撮别有用心的人勾结国外敌对势力。而另一方面,又有人在说,我们的党是腐败的,社会是黑暗的。我们知道一个系统是不能自证的,如同人无论多有力都无法将自己从地球上举起一样。无论是说社会是好的,还是说社会是坏的,都无法自证。并且,同时他们又宣称,信仰另一者是一个错误,哪怕看一眼都需要忏悔。
    在这种情况下,最简单的方法是——听从最强有力的,例如学校教什么就听什么。因为存在即合理,强力的是最可能正确的。但是讽刺的是,古今政权更替,往往第一件事就是否定前一家的哲学系统。因此我们可以得出结论,我们的哲学系统需要经常变化。这就陷入了实用主义哲学的范畴——说白了就是没有真理。而我是一个什么都要问一下为什么的人,对这种实用主义哲学不是很喜欢。而且不得不说,我们的马哲课是一种非常无聊的课。当我们有一些问题的时候,马哲课明确的站在了其中的一边,由此导致了自身无法自证。这还不是最大的问题,最大的问题是,马哲老师经常要求,背下结论,作为真理,不要问为什么。这不是一种解答问题的方法,而是消灭问题的方法。但是当问题无法消灭的时候,马哲课就没用了。而经济学,可以非常清楚的,另我信服的告诉我原因,和判断标准。
    例如,让工人下岗,究竟是为什么,会发生什么。马哲的解答是,这是资本主义剥削工人的方法,通过工人的内斗,降低他们的工资。但是,马哲课没有告诉我们,为什么中国也有工人下岗了呢?我们在不是资本主义的情况下,发展出了待业这个新名词。而如果我们已经是资本主义了,那么马哲课为什么没有被消灭,反而成为必修课呢?更重要的问题是,通过如何的思考方式,我们才能由“有人下岗”这个现象中,得到“这是阴谋”的结论呢?而经济学的解释是,生产和消费的矛盾。当产能大于消费的时候,工人就一定会下岗。即使发动工人斗争,只要不扩大产能,一样会下岗。这和社会意识形态无关,和谁在生产无关。只是组织结构森严的计划经济,更容易调整这个矛盾——扩大消费,创造消费,实在不行造个长城也是个办法。其思考方式是理性的:供需曲线,我完全理解并认同。社会总体经济方程,我认同,并且马政经里面也有。四象限循环和蛛网模型是后来才学到的理论,但是不妨碍推导。由此逐次递推,逻辑过程清晰无比。相比而言,其理论逻辑比较容易信服的。因为每一步,都是我们知道的东西,或者我们可以得出的结论。于是,我接受了这种思维方式——放弃阶级斗争,通过理性的思考和逻辑分析,得出相对正确的结论——乃至这个结论有的时候是对自己不利的,或者是会产生悖论的。
    在看完《经济学》(其实是没看完就还回去了)后,我逐渐开始了庞大的阅读和分析。我向古今中外的每一本书中祈求智慧,来建立一个完善的,自洽的哲学系统。这个系统可以让我信服,为我解答迷惑。经济学是个入门指引,但却是不完备的,并且也是有争论的。现在我的哲学体系,主要来自于四个部分,又分别有所不同。四者合起来,是一个相对完备的哲学体系,但是还不够自洽。
    第一部分来自于经济学,主要就是通过替代效应,比较优势等思维方式,思考生活中的每个个体行为和社会行为。例如为什么守时送饭的饭店全倒闭了,而不遵守时间的饭店可以存在。为什么人要言而有信。(也许对于某些人这不是个问题,但是对于经济学论者,这是个很大的问题,经济学的假定之一就是人性本恶)
    第二部分来自数学和物理学,主要是解决世界原本性问题,解决第一部分中的复杂抽象问题。
    由于这部分的存在,因此我极端反感无逻辑的论证。例如,我曾经和一个人讨论为什么中国需要自己的操作系统。我说,法国也没有自己的操作系统(尽管他们有法语发行,不过那多数也是*nix系统),德国也没有(也是*nix的发行),中国为什么要有。他说,因为我们是中国,所以我们要有自己的操作系统。我:。。。。。。
    如果他从我们的国际地位,国际情势,操作系统的重要性,论述我们为什么需要,以及需要什么操作系统。无论他的资料来源是对还是错,分析过程有没有瑕疵,至少这是一个可以辩论和讲理的人。至于无逻辑主义者——我直接断线走人,您自个慢慢折腾去吧。
    第三部分来自黑客文化,主要是古典黑客文化。基本是70年代美国朋克文化的延伸,主旨是自由主义,自由合作,反政府。来源——自然是学Linux的时候学到的。
    第四部分来自中国最古典的经典,周易。这部分是作为哲学系统核心的存在。主要是二元论,转化论。
    系列的下个部分,会对各个部分逐个分析。

2010年7月25日星期日

经济学上说红包

    开篇前,先提出一个问题,中国医患关系比较紧张,很多人对医生不满,为什么呢?答案在片尾,不要偷看哦。
    今天和小猫争论了一个比较有意思的观点,给医生红包,怎么定性呢?
    我开始的观点是,这是有悖于和谐社会的(虽然这个词比较俗,但是先用这个吧)。如果医生会根据红包区分处置病人,那么没钱的病人就会被逼死,这何其恶哉。而如果医生不根据红包处置病人,那么病人就会知道,这个医生送不送红包都一样。这样就没人给医生送红包了。有医德的医师反而收入低,这也不是和谐社会应有的事情。
    小猫的观点是,有钱的人可以多给医生钱,而没钱的人就会少给,正如地铁里给乞丐钱一样。有医德的医师不应当区分处理,这样社会有和谐了。虽然想法不错,不过却太不现实。首先,地铁里给乞丐钱是自愿的,现在给医生红包的人,你问问多少是自愿给的?尤其是在病痊愈的时候去问,大概能有三成自愿给红包的就不错了。其次,就算地铁里的乞丐,也不是光找有钱的要的。乞丐出卖的是尊严,收获的是金钱。因此,找需要获得尊严和体面的人往往效果比较好。例如成对情侣中的男性,跟着几个部属的小领导。而且通常一个人有预期零钱的时候比没有预期零钱的时候更容易施舍。推理的通常现象是,外卖冰品店门口的乞丐比电影院门口的乞丐更容易要到钱,因为冰品通常是10元以下的小额,购物者有很大机会会拿到零钱。而电影院门票往往是个整数,而且接受信用卡,因此出来的人兜里往往最小一张的都是10块。而后,是一个经济学中的心理现象,叫做公平现象。
    我们想象一个街道水果店,卖一种叫做苹果的水果。苹果都是一样的,标准售价是10元。但是最近物价上涨,于是店主说,有钱的人可以多出点钱,没钱的人还可以10块。大家猜如何?于是整个街道的人一下全变成了穷人。这时候人的心理不难揣测,如果比自己没钱一点的人,10块买了苹果,我完全没必要花11来买。因为有比我更有钱的人,所以我是穷人。而且凭什么说我是有钱人,所以我要多出钱呢?我每天工作12小时,周末还要加班。隔壁的王二,每天才干8小时,到了周末就出去玩。他可以10块买苹果,为什么我要花额外的钱呢?
    这种现象,是反对“级差个人所得税”的一个理论依据,同样也是低个所税吸收人才的方法的理论根据。人们不能因为某人足够努力而去抢劫这个人,或者要求这个人付出额外的费用。中国的级差税制,到了一定月收入的时候(好像是10万),个所税就是45%,几乎是一半,而新加坡的个所税不超过20%。大家知道大量的演艺明星是新加坡人,甚至在《开国大典》上全是外国人,最靠近中国的就是中国香港,原因即根于此。每个月收入超过10W的人申请新加坡国籍并不困难,而税差高达25%,这简直是逼人反对中国国籍。虽然我们可以一千个一万个骂这些人不爱国,可是却无法阻止这些人加入外国籍,于是只能在口头上过过干瘾罢了。至于抵制,则是一个更好玩的选择。当你抵制一些人后,另一些人就会富裕起来。然后,这些人很大可能的会选择新加坡作为自己的国籍,而不是继续留在中国。如果我们继续剔除这些人,最后我们发现,我们留在国内的人才只有一个特征——那就是除了是中国国籍,很难指望别的什么。
    不过很难指望中国会取消级差个所税制,因为中国有太多不正常的富翁,不是凭借自己的努力,而是通过非正常途径。因此大家普遍认为,级差个所税能对这些人有一定的抵制作用。虽然什么都没有,但是指望短期内取消是不可能的。
    当然,苹果店(怎么觉得乔教主现身)可以宣称,我们的苹果分为两种。一种是普通苹果,一种是认证苹果。认证苹果比普通苹果贵,而且贵很多,但其实是一样的。这种情况下,只有有钱人才会购买认证苹果。为什么呢?就是因为贵。如果认证苹果无法和普通苹果区分,他就不值钱了。而一旦认证苹果可以从普通苹果中区分出来,购买这些苹果的人,就同时购买了“社会身份”。知道什么是身份么?就是,有钱人压根不吃普通苹果,就算摔伤了,去买个创口贴都是要认证的。我们白天辛苦晚上操劳为的啥,不就是获得舒适的生活,别人羡慕的眼光等么?所以,苹果店的口号是,不求最好,但求最贵。
    同样,这个现象对有钱的人可以多给钱这个理论也有强烈的破坏作用,有钱的人压根不认为自己有钱。而如果医师不差别处理,就根本收不到钱。我们不能假定所有人性都是本善良的,如果所有人性善良,那么还要刑法干嘛呢?但是如果医师差别处理,这是严重违背医德,和社会的公序良俗的。
    然而,再进一步思考这个问题,问题反过来浮现在我脑子里。为什么医生能收到红包呢?我知道为什么公务员有红包拿,可是我从来不知道卖电脑的也能拿到红包哎。如果医生是出售健康的,而病人是购买健康的,那么红包存在的唯一理由就是——医生的定价比真实价格差的太多了。由于价格限制,或者税的存在,因此医生收不到市场价格的费用。这导致了一系列的问题,红包,乱开药,不负责——废话,如果我付出许多学习医术,结果每天辛劳赚的还不如卖茶叶蛋的,我也不会负责的。而且我很确信医疗管理部门不会随便处置我——干这个的越来越少,都去卖茶叶蛋了。今天处罚下来,明天老子不干了。
    所以,红包问题,其实不是医疗中的核心问题,核心问题是医疗资源短缺,所带来的两个问题——如何提高医疗资源,和如何分配。
    要解决第一个问题,就必须让医疗价格回到正常的水平。只有让医生能获得足够的收入了——现在收入其实不低,只是不合法——才能让人想当医生。而通过红包这种方式来实现,无论如何也是种掩耳盗铃的现象。而通过处方权来实现,更是让医生乱开药。本来要收20医疗费的,由于只能收10,所以我没事也得给你开两瓶眼药水,来拿回自己的医药费——这怎么听怎么奇怪。
   而解决第二个问题,则是比较残酷了——有钱人有的治,没钱人靠政府。那么考验政府基础保险系统的时刻到了,如果政府基础保险系统有问题的话,没钱人几乎立刻会暴动起来。然而这个是正确的,至少在我来说。因为通过这种方式,我可以预期,在普通疾病级别上,政府会处理好的——这是他应该做的。而在重大疾病问题上,有钱有的治,没钱没办法。这就是我们所谓的,即使每个人为了自己的利益而行动,但是总体行为和预期一致,并且对大多数人有利。如果说我们放弃了重大疾病中没钱的人,那也是因为——我们的医疗资源不足以覆盖所有人,我们选择能鼓励增加医疗资源的方案,放弃我们最不可能成为的一类人。
    至于有钱人发挥自己爱心的问题,我觉得更大的可能是将费用捐献给医院和病人,或者是能够代表病人的疾病基金会。这是一个平衡的问题,捐献给谁是个人的意愿选择。但是更多的捐献给特定医院,会提高特定的医院和医生的收益,更加鼓励医生针对富裕病人进行诊治。而捐赠给疾病基金会,则会提高整个医疗行业的需求,从而提高整个行业的工资。所以说,这是一个选择问题。
    好,回答篇头的问题。《周易》中曾说,仁者见之谓之仁,智者见之谓之智。这个问题从不同角度有不同解释。如果你认为问题是因为不合理的制度设计,并且马上要改善,那么你就是一个有政治学家潜质的人。如果你认为是供需问题,并且需要马上改善,那么你就是一个有经济学家潜质的人。如果你认为不知道,或者认为不需要马上开始改善,那么你是一个loser,你的将来任人摆布。如果你认为是国外势力的宣传造成人民对政府的敌视,你是个有五毛潜质的人。

2010年7月15日星期四

通胀来了

    什么都不说,先看个新闻。
叶檀:为什么租房者对于房租上涨毫无抵抗力?
http://www.china-week.com/html/5640.htm
    这个新闻在说明一个事实,通胀来了。
    房租为什么上涨?房租和房价不一样,受投资,预期的影响更小一些。如果租金真的太高,大不了爷不租了。一个出租的,一个寻租的,就这两者决定一个地方的房租。因此通常在CPI计算中,物价衡量指数之一是房租,而非房价。,自有房屋者是按照给自己交租金的方式来计算的。至于承租者为什么对房租上涨没啥抵抗力,这更像是一个需求弹性问题。承租人的弹性在于实在混不下去了回老家,而租房人的弹性在于——几乎没有弹性。某个地区有多少房子是刚性的,就算你想卖,也得有人买。要么是本来租房的人买了,要么就是其他人买。因此,我的结论正好相反,房租上涨不是由承租人承受,而是由租房人承受。除去拆迁和房屋倒塌,房租上涨的理由只有一个——在原本的价格下有更多的人想住进来。
    通胀从来都是结构性的,整体通胀只有一种情况,国家恶意乱发货币。即使是国家乱发货币,大多数情况下也是逐步结构通胀的。先拿到国家钱的人,总是试图将钱花出去,因此别人手里钱才会多出来,各种价格逐步上升。如果拿了国家钱的人不花呢?那就不叫通胀了不是么?
    中国今年的通胀,来自于去年四万亿国家投资。通常投资在9个月左右会发生正面效果,促进经济和就业。而在18个月的时候会发生通胀效应。中国四万亿国家投资主要流向基本可以确定是大型国有企业和重点扶持项目,说白了就是能源,资源,房地产。下面的一些数据来自2002年中国统计的42部门货币型IO表,根据这些数据比较好说明通胀的传递链条。本来应该采用07年的表,可惜我没钱。
    建筑业业依赖最重的三个产业和成本是:劳动者报酬,非金属矿物制品业和金属炼制及延压加工业。
    非金属矿物制品业依赖最重的三个产业和成本是:劳动者报酬,非金属矿物制品业和化学工业。
    金属冶炼及压延加工业依赖最重的三个产业和成本是:金属冶炼及压延加工业,劳动者报酬和电力、热力的生产和供应业。
    化学工业依赖最重的三个产业和成本是:化学工业,劳动者报酬和电力、热力的生产和供应业。
    电力、热力的生产和供应业依赖最重的三个产业和成本是:煤炭开采和洗选业,劳动者报酬和石油加工、炼焦及核燃料加工业。
    煤炭开采和洗选业依赖最重的三个产业和成本是:劳动者报酬,电力、热力的生产和供应业和交通运输及仓储业。
    好,以上几个已经够绕了,不过我们还是大概能看出一些有趣的事情:1.我国的电力供应主要采用煤炭发电,证据就是 电力、热力的生产和供应业异常高的煤炭开采和洗选业投入。2.房地产和资源上的投资,会快速引发能源价格上涨。3.以上几个行业无一例外的都是高人力成本的。
    从这里大概能推测一下通胀链条,先是大量的房地产,资源,能源的放贷,于是开始大规模的扩大生产规模。这一扩大,就把资源,能源,工资给抬了上去。这三个一上去,想不通胀也难了。不过链条的传递速度各自不同,能源的反应应该是最快的,规模一扩大,能源压力立刻上去,于是会发生各种电价油价上涨事件。我查了一下原油连续期货价格,从09年02月形成双底开始,到09年06月为止,价格从35涨到70,翻了一倍。资源的反应会稍微延迟一点,因为生产会有各种环节,囤货,不可能零库存。我查了一下精铜连续期货价格,从09年02月开始,到10年01月为止,价格从150涨到340,一倍多一点。工资是最慢的,因为各种技能,各种行业,人口迁徙,政策,大学生就业,都会影响人力成本价格。不过这个除了猎头就无从查证了,我大致猜测上涨没有一倍——毕竟像能源和资源一样发生变态反应的可能性并不很高。预估是在2-3年内上涨50%以上。一旦工资上涨完成,通胀的整个链条就完成了。
    在通胀中,不同的产业发生的后果是不一样的。因此理论上我们可以通过在不同时间段,变化持有资产的比例,来尽量规避通胀的风险。首个要避免的是——保险和养老金。如果你持有原来购买的保险,又能出售的话,建议出售变现。因为你原来交的钱和你将来收到的钱将不成比例。例如你交1万10年后收4.5万,通胀个50%其实等于收益3W。其次要避免持有货币型的存款,尤其是长期存款和国债——他们的利率都会变成负数。
    那么可以转换成什么呢?现在入手能源和资源都晚了,他们都快到了上涨的顶点了,进一步的上涨和通胀应该没什么关系。一个是可以持有外币,人民币贬值的动力是很充足的,有胆子的可以赌一把。但是贝壳觉得涨跌都有可能,所以赚了赔还很难说。第二可以持有一些主要由”人“进行消费的东西——餐饮,娱乐,服务。
--
无能者无所求,饱食而遨游,泛若不系之舟

2010年6月27日星期日

关于经济和博弈的几个有趣的问题

    这次去cpug的聚会,大家在会上提到了经济和博弈,两者其实非常有关系。正好也谈到了世博,顺便讲一下上面的几个观点。
1.排队模型
    世博的情况大家很清楚咯,每个人给定入场费,场馆需要排队,一天内无限制观展。那么,谁会去看世博,谁会排队?
    从价格成本上说,排队其实是通过等待,限制了每个人能参观的场次,增加了每场参观的成本。而从隐形成本上说,上面的价格还得加上你一天的时间,而且你还要为排队付出额外的体力。
    我们先考虑,假如票价是零,体力成本忽略不计,谁会排队。这时候,你的唯一成本就是时间的消耗。很明显,时间成本越低的排的越高兴。让一个每天赚10W的首富和街道老太太比排队还不如杀了他。那么,160的入场费带来了什么?限定了入场的人要有基础消费能力,简单来说就是有能力进行娱乐消费。那么综合上面两点,最喜欢排队的是时间成本为零的,有基础消费能力的人。例如子女有点钱的退休老人,父母还不错的考生,还有部门还不错的政府官员——当然,最后一个无需排队。
    其次,我们再考虑谁去看世博。
    去看世博的人越多,排队就越多——这是理所当然的。排队越多,每张票上能看到的内容就越少,这算是某个变相的市场机制,限制世博的入场。会去看世博的人,一定是觉得所获得的游览内容大于160元加上一天时间的人——这排除了穷人,有钱人(概率上的,因为通常有钱人的时间成本都很高)。世博是一个针对中产阶级的展览。
2.火车票逻辑
    关于火车票的一个经典逻辑就是,要么涨价,要么实名制,要么产生黑市。
    同样,这个逻辑应用于世博的结论是,对于热门场馆,要么差别涨价,要么实名排队,要么有人卖队号。
    由于现有状况,差别涨价已经没戏了。所以世博的管理者。千万记得派足够的志愿者拖走卖队号的人,否则绝对黄牛遍地。
    讽刺的是,如果有合法黄牛的存在,才会吸引有钱人来参观世博。因为他们的时间成本很高,没时间慢慢排队。而足够多的有钱人来参观,就容易带来投资——这更符合向世界展示上海的目的和上海人的利益。
3.信息的价值
    stun说了一点分析,周日夜场往往会比较空。我验证下来,至少在端午节假期的最后一天,这个是正确的。原因在于来上海参观的团体客,最后一天无论如何他们也要回去了。因此此时继续参观世博的只有长期滞留上海的游客和上海本地人,这毕竟会少很多。
    我说了一点对世博的不满,世博的场馆外都有需要排多少时间的告示,但是并没有信息化出来。如果信息化出来,就可以在很多地方展开交互式终端,指导人们哪个馆更值得排队。或者更进一步的,允许人手机查询。这是一个很有需求的业务。
    从市场意义上说,这些东西叫非完全市场。所谓完全市场,市场中的每个人都知道另一个人的信息。当然,完全充分市场,绝对理性人,理想共产主义并称三大笑话假定。然而,我们的信息越多,我们就越有优势。stun了解了某些信息,于是他可以在一个比较空闲的时间段入场,从而高质量的参观。(虽然是个意外,不过我们正好在这个时间入场了)而假定某个人了解了某个时刻世博排队信息,他就容易决定去哪个场馆,从而捡漏。越多的信息,越容易低买高卖。
    由此带来的是两方面的东西,一方面,我们每个人试图获得更多的信息,因此市场就更接近完全市场。另一方面,如果获得信息的成本相对较高,就一定会有信息的获得者来更加的提高这个门槛——这会增加他们的收益。例如房地产,信息的成本是惊人的高。如果你看到错误的房地产信息,会导致被骗很多钱,因此你需要从各个方面验证每条信息。作为信息的发出和接受者,我们会如何做?当然是尽力澄清这些信息,声明我们是真的买家和真的卖家,并且尽量发出和获得尽可能多的信息,例如使用多个中介网站,使用朋友网络等——这往往会获得意想不到的好东西。然而从中介角度来说,这会使得他们的价值迅速降低。因此他们经常做的事情是以个人名义发布卖出或者买入信息——当然是假的——来扰乱信息流,增加信息的获得成本。同样的事情也发生在人力资源市场上和婚介市场上。
    由此来看,GFW的门槛使得信息的价值足够高了么?看来没有。如果信息的门槛足够高,就会有人或组织放出国外的假消息来扰乱判断,从而保持他们手里真消息的价值——如同我们的邻居经常做的那样。这么来看,他们的信息门槛倒是够了。
4.价格-风险函数
    会上有个美女问了个问题,你们在什么风险下才能blahblahblah。我们当然知道她不是在寻求外遇——她在找创业程序员,django的。顺便说一句,如果有靠谱的php/python/django程序员,可以联系我,超多人狂求。
    我很快的指出了她这个问题的一个问题——你这个风险偏好问题,到底在什么价格下呢?
    函数想象一下,在一毛钱的时候,你更偏好于直接获得一毛钱呢?还是用1/10的概率赌一块。如果是100W,你更偏好直接获得呢?还是用1/10的概率赌1000W。我们定义,在某个成本下——例如一毛钱,你能接受以1/N的概率获得N倍的收益,同时你无法接受以1/(N+1)的概率获得N+1倍的收益,这个N就是风险阀值。当然,更精确的抽象定义中,N应当为实数,并且也不是N+1,而是N+dN,其中dN为无穷小量。很明显,风险阀值是成本的函数——而且往往是单调减函数——这叫做风险偏好函数。如果是1毛钱,很多人往往可以接受以100W分之一的概率去赌10W——或者更高。如果是100W,估计就没几个人这么干了。
    我们在价格为0的时候,风险偏好都是趋于无穷的。都不要钱了还怕什么呢?但是随着价格的升高,有些人风险偏好就迅速降低,而有些人则不变——后者我们称为经典赌徒。有个关键价格,风险阀值为1。当你的风险偏好为1的时候,事实上你拒绝一切风险。从财务上看,你单笔只能持有固定存款和国债。也就是说,如果你有这个价格以上的钱,并且是绝对理性人,你在这个以上级别的投资中绝对拒绝——因此我们称这个价格为投资中止上限。这是严重违反直觉的,从直觉上看,我们钱越多,越希望从事一些高收益的事情,获得更多的钱。不过你真的照做的话,倒是有希望瞬间成为穷光蛋。除非你眼光很好,否则收益最高的事情往往是风险最高的事情,除非你有特殊背景。
    作为对应这个风险偏好的方法,我们往往组合投资。组合投资中发生的事情并不是风险降低,而是单笔价格降低——这样你就觉得可以接受了。问题是,当你真的组合了足够多的投资,你得到的风险为0,而你的收益是多少——绝对严格等于国家标准利率。。。
    这也解释了赌徒为什么容易成功,他们风险偏好对于价格很不容易降低,因此投资中止上限很高。对于某些只有高投资才有大回报的事情,只有赌徒能赢走一切,普通人要这么做除非组合对冲风险,这是很困难的。当然,另一个因素是,如果一个赌徒没成功,往往就挂了,你也就没继续听到任何东西了。。。
5.赌球和买卖天气
    或许这章应该改叫对冲。当一个人对球队获胜概率和另一个人有差异的时候,他们就可以赌球。同样的事情也发生在天气上。如果一个人对天气的预期和另一个人有差异的时候,他们可以买卖天气——好像安然在出事前就在设计这个。
    例如,有某个人,我们叫Alice,如果明天天晴,她能赚150,如果下雨,赔50,她认为有75%概率下雨。而另一个人,我们称为Bob(安全人物哈,虽然这不是个安全问题),如果下雨,他能赚150,否则赔50,他认为有25%下雨。这样的假定很好,叫做对称假定,因此我们可以省掉庄家和赔率的问题。那么,Alice和Bob如何来让自己更心安理得呢?他们可以对赌,如果下雨,Bob给Alice100,反之,Alice给Bob100。我们来看变化。
    当Alice完成对赌协议前,她认为自己赚钱概率是150*0.25-50*0.75=0,而对赌后,她的赚钱概率是(150-50)*0.25+(-50+100)*0.75=50。而Bob呢?你们自己算吧,情况是一样的。
    当每个人都觉得别人的月亮更圆的时候,他们就可以买卖月亮,从而增加自己想像中的收益。其实呢?什么都没改变。这就叫对冲。
6.智猪博弈
    一个房间里有一头大猪和一头小猪,一个踏板操纵放出猪食。大猪踏了踏板,跑过去吃的时候,小猪会吃到给他剩一点。而小猪踏了踏板,跑过去的时候,大猪什么都不会给他剩下。
    这时候出现的有意思的事情是,那头小猪死也不会上踏板。因为小猪上了踏板,跑过去的时候大猪都吃光了,因此上踏板这个事情对它的收益是0。而对大猪而言,跑过去虽然少,还能吃到一点,因此上踏板这个事情对他的收益还是有的。在这种情况下,大猪比小猪更有动力上踏板。
    当然,这个故事也许还没有完。小猪吃了足够的东西变成大猪的时候,情况会如何变化?那是另一个故事了。

2010年6月24日星期四

世界上10个最受欢迎的Linux发行

    http://blog.sina.com.cn/s/blog_49f7fe790100j0hp.html
    个人意见是RHEL(Enterprise use), Debian(Enterprise use), Gentoo(All use), Fedora(Desktop use), Ubuntu(Desktop use), CentOS(Enterprise use), SuSE(Enterprise use), Mandriva, Knoppix, Arch。
    按照阵营可以分为Redhat系列(RHEL, Fedora, CentOS, Mandriva), DEB系列(Debian, Ubuntu, Knoppix), Gentoo系列(Gentoo), SuSE系列(SuSE), Arch系列(Arch)。
    按照包管理系统可以分为RPM和DEB两大主流系统,Redhat系列和SuSE系列使用RPM,DEB系列使用DEB,Gentoo和Arch是自己的包管理系统。
    另外插一句区别。Fedora是Redhat的社区版本,由社区维护,免费使用。当Fedora比较稳定了,就会出RHEL。RHEL是商业版本,由Redhat公司维护,收费的。而CentOS是使用RHEL的源码包(它必须提供)自行重编译的社区版本,和Fedora的区别在于CentOS的稳定度和维护状况更靠近RHEL。Debian和Ubuntu没有关系,Ubuntu使用了Debian的包管理系统不代表他们有关系。Ubuntu有自己的开发/管理计划,通常来说比Debian unstable更加激进,稳定性也不差。不过如果你需要稳定的商业级服务器,还是Debian更加靠谱点。
    另外,无论你认为哪个Linux更受欢迎,即使Debian中确实有FreeBSD kernel package,请别把BSD放进最受欢迎的linux发行中来。那个是Unix,Idiot。

--
无能者无所求,饱食而遨游,泛若不系之舟

2010年6月16日星期三

世博会观感

    昨天看了一下世博,仅浦西馆,发现问题非常多。当然,我没看完世博,很多问题有失偏驳。然而不得不说,整个世博看似热闹,其实差劲。
一,形同虚设的安保
    昨天安检速度很快,完全没有传说中的恐怖。但是通过安检后,我检查书包的时候发现一个�事——我把一罐水带了进去。我在想,如果是恐怖分子,带罐液体炸弹会比这个困难么?对于这种形同虚设的安检,对得起等待的观众么?不如直接撤掉。
二,布展内容不精彩
    昨天看了铁路馆,人保馆,城市最佳实践区,案例馆,通讯馆,船舶馆,另外打听了一下cisco。其中铁路馆,人保馆,城市最佳实践区基本不排队,但是很无聊,没有什么有意思的展品。以铁路馆为例,从上层走到下层就是一堆展板,上面写着各种宣传资料来忆苦思甜,有几个车站模型,有一个模拟铁路管控的大屏幕——也就这个有点新意。
    通讯馆,船舶馆,cisco都有一定的排队,这几个馆也没什么有意思的展品,主要就是放电影。3D电影,360度电影,4D电影,各种先进的电影技术组成了一堆——电影院。我估算了一下,电影院基本就是排队的理由。一次电影大约是10分钟,可容纳100-200人,平均6秒一个人。一天最长的有效布展时间是46800秒,一天也就能接待7800人。浦西大约是50个馆,一个人去一次至少看三个馆,这样算下来浦西的接待游客数极限是13W人。如果考虑时间和场馆的非平均性,安全的接待人数不到10W。外推到全站馆,每日安全接待人数30W上下。
    从内容来说,通讯馆是我最失望的一个馆,也许和我从事的行业有关。进门整了个ICT终端,但是完全没体现交互性,从头到尾就是作为第二显示屏来使用的。连最基础的投票的展示都没有做到,等于一个掌上电视。第六感这种超时代的Geek装置没出现就算了,最起码出现了两年以上的VR/AR技术应该有展示吧。也没有。
    感觉整个浦西,与其说是一个世界先进技术和理念的展会,不如说是一个大的展板通道和电影院——付费而且需要排长队。作为佐证的,昨天我在世博园浦西区没有见到几个外国人,全是中国人。这不是向世界展示中国的展览,而是中国人自娱自乐,外国人趁机赚钱的狂欢。
三,科技应用不充分
    这个问题涵盖整个世博,凸显了中国的特色和现状。照理说,世博是展示国家和城市科技和人文水准,展示自身实力的舞台。但是上海世博连最基本的,已经在中国广泛投入使用的一些技术都没有充分展示,实在是有亏盛名。
    首先是公共交通系统。世博的公共交通系统使用电力车,听起来很先进。但是车在哪里,还有多久来一辆,车上还能容纳多少人,一概不知道。杭州早在一年半到两年前已经运作了公交查询系统,在每个站牌上都可以看到下一辆车还有多远,需要多少时间。从理论上说,计算车体重量来推测车上有多少乘客也不是太难的事情。也许有人觉得世博筹办的时候早在4年前,杭州还未运作这个系统。然而根据贝壳的搜索,世博的车上是带RFID系统的,就是信息不对公众开放而已。这简直是恶意的故意。
    其次是RFID,沃尔玛已经大规模使用有源RFID进行盘货级管理,也算是已经工程级别应用了。即使考虑成本和人流问题,也可以在幼童或其他需要管控的对象身上戴上RFID设备。允许监护人通过短信精确定位人员位置。这个也没见着。
    最后是排队问题。目前排队区前有需要排队多久的告示,这是一个非常人性化的举措,然而还不够现代化。从技术上,自动计数每个排队区的人数,队伍的放行速度,从而精确计算当前排队时间是很简单的事情。将这些数据汇集到中央服务器上,就可以知道每个场馆的热门程度。同理,入园人数的和各个园区门的排队长度也不应当定时统计,实时统计并不是一个无法解决的工程问题。
    而地图服务已经是一个很大众化的服务了,对所有的游客提供全地图导航。如果有GPS还可以加入GPS全地图导航,并且以颜色显示场馆的热门程度,技术上有任何难度么?压力根本不是问题,可以使用多个缓存服务器以分钟级密度从主服务器同步数据,从而以冗余集群的方式提供超大规模服务。
    以上理念的实施完全没有任何技术上或者工程的难度,然而世博举办方完全没有考虑这些问题。反而是采用了白菜方案,就是一堆名为白菜的志愿者,来填充本应属于机器的问题,这充分凸显了中国的特色和现状。在人力资源太过便宜的中国,使用技术来替代人力,节约成本并为用户提供更好的服务是没有前途的。王道是进一步降低人力资源成本,使用更多的人来替代机器。反正从成本说,每个人都只是颗白菜而已。

2010年6月12日星期六

C10K的卡通解释

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

2010年6月10日星期四

关于富士康,还有话说

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

2010年5月27日星期四

关于富士康的几点

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

2010年5月23日星期日

在中国投资合法么

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

2010年5月22日星期六

成人的童话

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

--
无能者无所求,饱食而遨游,泛若不系之舟

2010年5月20日星期四

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

    受到这篇文章(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算法导论》《数值算法》。通过前面的学习,普通程序编写应当已经不成问题。这个阶段面对的是将实际问题抽象成数学问题后,试图从数学上进行解决的过程。从此以上,就是数学的领域了。

2010年5月18日星期二

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

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

2010年5月10日星期一

无聊的测试

现在有很多智商测试,有一类题,上面有一些数字,让你填写下一个是几。然后现在题目越出越变态,其实这种问题根本不是在考察智商,而是在考察常识。不信?我出几个你做做看?
数列-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盒概念,导致没法答第三题的,就一定比答不出的笨么?
这是一种偏见,你知道的越多,越聪明。

2010年5月4日星期二

杭州游行程记录

早上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手机,基本免去没人问走错路的尴尬。

2010年4月26日星期一

关于人力资源的一些话

    上周被猎头了,虽然没兴趣去,但是还是很高兴。算是对自己能力的一种认可吧。顺便联系了老董,得知原来公司的近况,又看了老赵的一篇文章。觉得有些话犹如骨鲠在喉不吐不快。
    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的影响。通常而言,投资者更喜欢稳健的,风险可控的公司。通过一个固定的制度,和可迁移的管理团队,来发现和聚集人才。这类公司才是我们所说的“大公司”,并非规模大,而是构架方式大气,做事方法正规,拥有着成为行业顶尖的可能性(虽然并不一定保证)。一家从外包和产品做起的公司,如果一开始就采用了粗放型管理模式,而没有妥善解决团队打造和管理上的问题。到后期往往是版权纠纷,禁业纠纷层出不穷。或者高级程序员来一个走一个,来的薪水一个比一个高,走的速度一个比一个快。或者干脆树倒猢狲散,公司一拍两散的也有。
    因此,如果一家公司有意做大,请记得在一开始的时候就设计一个良好的团队打造计划和团队保持制度。否则当碰到问题的时候再做转换,往往已经太迟了。