Shell's Home

互联网的黄金时代

Aug 20, 2009 - 1 minute read - Comments

今天,一个朋友推荐我看了篇《创业成功80%是运气?》的文章,作者可能是雷军。里面说,99年是互联网成就的年代,几大互联网巨头都是在99年成就的。 因此作者推测,09年也是互联网成就的年代。前者我认为很有道理,后者就纯粹在胡扯,拉人去投资了。退一步说,即使是对的,也是蒙上的。 为什么?我们首先得看,为什么99年是互联网成就的年代。这就得讲到98年以前,电脑是什么样的一个形态。记得贝壳95年刚接触电脑的时候,那时用的是 286。和现在完全不同,电脑最主要的功能是文书处理。因为当时根本没有互联网建设,电脑用户沟通的途径主要通过点对点拨接的BBS(不用了解是什么东 西,贝壳自己都不怎么明白)。这种BBS和现在的BBS完全不是一个概念,但是BBS这个词却来自于当时的这个形态。这种沟通方式非常不方便,也非常贵。 因此用的人很少,基本都是专业人士和各个高校,这等于限制购买电脑后只能单机使用。由于电脑根本是单机使用,因此但凡要增加功能就必须买盗版盘。要 WPS,盗拷(最早还没有盗版光盘呢),要看电影,买盘。于是电脑的主要形态被限制到了预设的几个功能上,而不是根据客户的想法随意定制。而这几个功能中 呢,最常用和实用的就是文书处理。96年的时候,最火的就是UCDOS和WPS。凡讲电脑入门如果没有这两个那就是落伍,是怪胎。而在98年的时候,接连 发生了几个事情,因此才酝酿出了风起云涌的互联网大潮。 首先,98年前后,Win95/98在中国大量普及。在此之前,由于受到文字,版权,习惯,配置等诸多限制,大家还是停留在dos6.0的年代不肯出来。 Win9X系列的普及(当然,主要是盗版普及)对电脑降价和普及起了不可磨灭的作用。也许有人听不懂了,软件的普及能降低硬件的价格?话是这么说的。从总 体来说,DOS6.0的入门难度高,高到要维持一个能够运转的DOS系统,就非要经过专业的,正二八经的学习不可。而Win9X的入门和维护难度基本是 零,你就算不明白,也不阻碍你的使用。因此,有大量的普通用户可以使用电脑,电脑的组装量就大了。更具有决定作用的是,由于DOS的入门难度高,因此很多 客户必须购买专门的电脑公司的电脑系统,即所谓的“品牌机”。使用品牌机的最主要理由是需要电脑公司的服务,来维护电脑系统。而Win95安装维护简单, 任何一个人都可以拿着盘装套系统出来。除去偶发的硬件故障,着实没必要非买品牌机不可。于是,当时品牌机对市场的垄断被打破了。大量的小作坊稍微经过培 训,就可以拿着一堆电脑配件组装起一台电脑来。教客户几分钟,他就可以自行安装起Win9X和Office。而后机器如果出现故障,顾客也可以很轻松的重 装。于是大量的小作坊相互竞争,使得电脑的价格直线下滑。我记得96年时主流电脑的价格在2W上下,98年时只有1W上下,01年时更是只有5000。注 意这里比较的是主流电脑的价格,不是同等硬件。里面固然有着摩尔定理的作用,也相当的得益于Win9X的普及。 而此时,更具标志性的事件是国内大多主要城市,都开始了电话拨号上网的业务。虽说中国从89年就开始接入互联网了,然而真正标志着普通民众上网的事件还是 98年前后的163/169电话拨号上网业务。大家可以想像一下,要是没有网络了,你的电脑还能干什么?怕是只剩下看书(还得买盘),听歌(也是买盘), 放片而已了吧?我们今天所用的大多数功能,都是以网络为基础,或者要基于网络获取数据的。电话拨号业务一开,等于就开启了一扇通向无限可能的大门。虽然当 时的价格大约是1.6元/小时,而速度一般只有5K/s。这种流量下基本无法承载什么复杂业务,多数都是基于文字的业务。例如QQ,当时肯定只能做文字, 不能做视频聊天。又例如BBS,当时也是以文字为主,图片点缀一下。要是哪个搞不清楚放一堆图片上去,站长到还没头痛呢,用户先受不了了。 现在我们看到,98年的时候,互联网具备了大量的潜在用户,也打开了通向无限可能的大门。可谓是万事俱备,只欠东风。而东风从哪里来呢?所谓的东风,就是 亚洲金融风暴和2000年互联网泡沫中的时间差。在98年的时候,东南亚发生了非常严重的金融风暴,相信大多数人都有所耳闻。而98年的时候,正是互联网 飞速发展的时候。2000年的互联网泡沫还没有提前到来,投资回报比高到吓人。在金融风暴中损失惨重无处容身的热钱,碰到了一个飞速发展回报极高的产业, 就如同火柴碰到了汽油一般,瞬间就无可阻挡的燃烧起来。而引爆点,就是互联网门户和娱乐。腾讯,百度,携程等互联网公司,都在那个时候纷纷发展起来。金融 环境的影响究竟有多大呢?我们不妨想像一下,如果是2000年的时候,用户和网络才准备好。这时金融相对稳定,金融风暴中跑来跑去的热钱也该投资的投资, 走的差不多了。而互联网公司普遍表现不好,美国各大网络公司一片惨红。这时候,中国的各个网络公司才组建起来,他们还能顺利的拿到融资,完成由小到大的华 丽转身么? 当然,当年之所以成为互联网的黄金年代,还有其他的很多因素。但是就贝壳的浅见来说,当时互联网的成功,和广大的新增客户群,新出现的网络,还有相对良好 的投资环境是分不开的。现在,中国的网民已经发展到了极限,12亿人口4亿网民,即使还有发展空间,也是屈指可数的事情。不像我们的前任,永远会出现新的 客户(这里顺便提一下,实际上互联网大量出现用户的时间大约是在05-06年前后,宽带包月普及的时候)。我们的投资环境呢?不利,很不利。美国经济刚刚 打了个喷嚏,现在全世界人民都在重感冒,没空搭理中国一堆互联网公司的脑残想法。那么,我们的下一个黄金年代在那里? 接下来,我们有几件事情会引发互联网的大革命,不过贝壳和大家一样头痛的是,我们谁都不知道这些事情会什么时候到来,是否会一同到来。 首先,是真正的3G网络。现在所谓的3G网络都是花架子,没有什么实际意义的,3G最大的优势在于低廉的随时在线成本。当前,所有客户上网都是通过电脑拨号,而电脑是需要了再开机的。但是我们的很多应用需要客户随时在线,例如IM类业务,对客户在线就有严格要求,微博客也有类似问题。为了能让用户随时在线,就必须让客户在手机上使用电脑的应用。问题是,如果没有一个廉价的网络接入,哪个客户愿意付出N高的网络费用就为了用个IM?那还不如打电话。现在的 3G曾有个笑话,什么叫3G?一秒3元,所以叫3G。这个价格至少要下降到一个月100-200的范围内(流量不限制,甚至还要在其中包括有线的接入费用和电话费),才有大量用户愿意入网。更好的接入模式是两台手机一根ADSL线路,包含电话/手机/电视/网络/3G在内的所有通信业务,总价200上下。 不过以目前的垄断形式而言,大家可以口水收起来了。 其次,是全球经济复苏。要是大家都没钱,是没人愿意投资电脑产业的,也没人愿意用。 而后是取消互联网备案和审查制度这滩狗屎,建立一个真正公平公正的法律环境。众所周知,互联网属于服务业,而服务业对于环境的公正性要求是最高的。即使经济复苏,也绝对不会有一个投资者愿意把钱投资到一个政策整天变化,商业运作随时为政策让路的地方。以饭否为例,如果某个投资者投资了,而后饭否因为种种不 明原因关闭了,那么投资者的损失谁来负责?对于这类问题,必须有个公正的,公平的政策,提前说明。如果投资违背了政策,那么损失没什么好多说的。如果没有 违背政策,那就不应该让投资者受到损失。而不是暧昧不清的制订一个根本实行不了的政策,然后看谁不顺眼就关谁,对其他人的违法不闻不问。只要这个大山不真 正的走开,中国的互联网就不可能真正的走入下一个黄金时代。

组合翻墙方案

Jul 29, 2009 - 1 minute read - Comments

1.墙的存在和原理简述 1.1.墙的存在 在您访问某些网站的时候,经常会发现无法访问。通常来说,这是服务器挂了。但是现在,越来越多正常的服务器出现了无法访问的情况。这些服务器中有一些是因为色情和暴力问题,但是更多则是政治层面的因素,例如google和twitter。对于用户来说,可能不关心政治层面的因素。但是政治自然的关心了你,所以我们需要找一种方法,让我们依然能够使用网络上一些很重要的服务。例如gmail(本文即是在gmail中写成的)。本节中,我将简述国家网络防护工程(简称GFW, Great FireWall)的工作原理,并在下一节给出一些比较成熟的翻墙方案。 1.2.DNS污染 我们通过DNS(Domain Name Service)将域名转换为IP地址。通常而言,我们不会怀疑ISP的DNS服务器的可信性。然而在某些地方,DNS服务器被用来欺骗客户端,达到屏蔽的作用。例如,在上海的某些地方,fanfou.com曾经被指向127.0.0.1。如果机器按照这个地址访问,那么肯定无法获得预想的数据。 这个方案如果控制不当,可能造成全球性的后果。曾经有报道,伊朗将youtube的域名指向了自己的一台蜜罐(Honeypot)服务器。但是由于配置不良,因此DNS错误被扩散到了伊朗以外,导致全世界的youtube访问都被定向到了这台蜜罐。整个过程造成了youtube6小时以上的服务中断。 1.3.DNS替换欺骗 由于DNS污染会被下面2.1节的方法绕过,因此在某些地方针对OpenDNS的数据被进行了替换欺骗。UDP53端口的查询数据包被拦截和替换,其造成的结果就是即使使用了OpenDNS,返回结果和电信服务器的结果仍然一致。 1.4.IP禁止 对于某些IP,防护系统直接禁止了该IP的访问。这种手法一般见于早期,由于经常导致误杀和株连,同时对最普通的proxy都无效,因此现在已经不常使用。 1.5.关键词过滤 防护工程在中国网络的核心路由器上,都放置了一些探头。具体的方法为配置一个核心路由器的镜像端口,将所有通讯数据全部向端口转发一份。该端口指向一套深度包检测集群。如果数据没有异常,则不对通讯进行干扰。如果数据异常,则发送RST包拦截通讯。同时记录双方IP,拦截其后5分钟内的所有TCP SYN包。 这种方法的优势在于,无论多复杂的网络拓扑结构。只要能够开镜像端口,就可以工作。无论多大的规模和多高的流量,只要能添加服务器,就可以支持。同时由于屏蔽效果好,对普通访问的干扰小,因此目前已经成为最主要的屏蔽方式。 这种手法无法针对UDP工作,因为UDP不存在链接断开状态。同时如果双方都屏蔽RST包,则连接不会被中断。然而如果双方都屏蔽RST包,会导致一些主动断线在对方那里变成死连接,因此无法通过拦截RST包来防御。同时,按照当前的测试结果,IPv6的包并没有被拦截。相信这是因为核心路由器支持了IPv6,但包检测集群尚未支持IPv6包检测。 1.6.热点屏蔽 近来发现一种趋势,当某个链接的热度非常高的时候,通向此链接的访问会被屏蔽。由于是接受到RST包,因此不像是服务器超载。这是当前防护系统的新方向,尚没有更多资料。 2.翻墙方法简述 2.1.OpenDNS DNS污染可以通过修改自己的DNS服务器来屏蔽。以Linux为例,当前你的DNS服务器配置可以在/etc/resolv.conf中查看。你可以将其替换为OpenDNS的DNS服务器,而非电信的服务器。OpenDNS是一家商业公司,通过提供DNS服务来收费(不具体解释商业运作)。一般来说,他们的DNS服务还是比较准确的。 通过OpenDNS可以防御DNS污染,但是无法防御其余方式,而且会被DNS替换所干扰。因此建议一般作为常规网络配置,而非专门的翻墙方案。 2.2.hosts hosts的目地和OpenDNS一致,但可以防御DNS替换。其原理是通过将正确的DNS结果写入/etc/hosts文件,在绕过网络解析过程。从而避免DNS出错。 该方式无法防御1.4-1.6的屏蔽。 2.3.proxy和变形 针对DNS欺骗和IIP屏蔽,我们可以通过指定一个国外的代理来访问。由于DNS解析在代理商进行,因此一般不会被欺骗。由于不直接访问IP,因此IP屏蔽也失效。 一般而言,该方法无法屏蔽1.5的屏蔽,但是有一些变形产品(例如Firefox的gladder插件),通过变形URL请求,使用特殊代理的方式对1.5进行了部分绕过。但此种方式不保证100%成功。 2.4.ssh -D ssh是一种安全的远程命令行工具,具有很多端口转发选项。其中有一种动态端口转发选项,在服务器端开启后,使得ssh可以被作为一个socks5代理服务器使用。 此种方式需要有一个墙外的ssh服务器,一般可以购买墙外的空间,他们会附送一个。此种方式可以绕过全部屏蔽方式,但是由于ssh本身的稳定性,因此经常有掉线的问题。而且有的服务器关闭了动态性转发选项,或者对长期连入的ssh连接进行断线处理。同时,由于很多人接入同一个IP进行翻墙,因此很多网站(例如google)会认为你的访问不可信。 2.5.tor tor是一种分布式代理工具,可以在隐蔽源和目标的情况下访问服务器。该方法可以绕过所有屏蔽方式,但是通常而言,该方法的访问会比较慢。同时也存在访问不可信的问题。 2.6.gae gae是google的个人引擎服务,一般由很多服务器构成,而这些服务器一般位于国外。有人针对这个特点,制作了特殊的python程序,能够将客户的访问转换成特殊的加密包,在服务器上访问目标服务器。因此可以被视为一种特殊的代理协议。该方法可以绕过所有屏蔽方式,但是由于众所周知的原因,gae服务器本身有的时候也会被屏蔽,导致该方法无法工作。而且由于google本身的屏蔽,该方式对于某些网站也是无法访问的。该方式也存在访问不可信的问题。 2.7.vpn vpn是唯一一种能够快速有效,一劳永逸的翻墙方式。使用vpn后,等同于你的机器拉了根线接在国外的网络端口上。因此该方法可以穿越所有屏蔽方式,同时很少有访问不可信的问题。唯一的问题是vpn,尤其是快速的vpn很难得,而且通常很贵。 3.组合翻墙 3.1.问题 纵观全部翻墙方式,每种方式都有一定的缺陷。2.1-2.3并不总有效,ssh不稳定,tor慢,gae看运气,vpn又贵。同时,我们还要借助终端的客户端组件(foxyproxy之类)来区分被屏蔽的网站和普通网站(使得普通网站的访问不使用特殊的方式)。 3.2.目标 本文试图通过某种方法,同时使用2.4-2.6的一种或多种方法。达到访问透明,使用稳定,速度尽量快,流量尽量小的目标。 3.3.架构 我们使用squid和haproxy进行代理调度,达到上述目标。squid是一种老牌的开源代理服务器,其特征是会对代理内容进行缓存,减小访问流量。同时,可以将请求转发到其他代理上。从而会自动检测和管理多种代理服务器。haproxy是一种基于tcp和http的反向代理程序,在此我们需要使用它的TCP代理能力,将多种socks5代理集成为一个。 基本架构图如下: / -> tor web brower -> squid -> privoxy -> haproxy -> sshtunnel -> gappproxy 3.4.优势 相对单层代理,组合方式具有多个优势。 使用squid分离访问线路,并缓存访问数据。对大规模密集访问,可以有效的减小流量。而且对除Firefox外的浏览器,可以根据其访问范围控制代理线路,进一步减小代理流量。(Firefox可以使用AutoProxy或FoxyProxy) 使用haproxy反向代理了socks5服务,因此可以并行使用多个sshtunnel的带宽。同时自动检测这些ssh是否可用,保证了访问的连续,同时也非常容易添加和减少代理。 3.5.劣势 本方法有一个比较明显的问题,即squid无法直接使用socks5代理,因此需要通过privoxy进行转换和保密。但是此时squid只测试privoxy的存活,而不理会socks5的存活。因此当haproxy的后端全部失效的时候,squid仍旧会认为privoxy有效,进而导致出现privoxy的错误页面。

地铁二号线今天大规模停运&生日

Jul 15, 2009 - 1 minute read - Comments

今天早上,贝壳沿着地铁四号线到世纪大道准备换乘二号线的时候,发现车站内有大量人员滞留。六号线卷门不开,二号线站台堆满人。地铁方面广播,二号线故障,暂时停开,恢复时间不定。因此贝壳无奈,只好上地面去方法。 贝壳先是在世纪大道上找出租,不过大家可以想象,这是徒劳的。而后去公交站,发现——我实在不想经历那种密度。最后,走到杨高路,和几个人合打了一部车,从杨高路走龙阳路到张江。结果,又很无奈的发现,龙阳路堵车。最后,花了50多,在11点的时候总算到了张江。 真是良好的生日的开端,希望我下一年不要这么倒霉。电脑诸神啊,赐我一个女友吧。不会C++也好,不用Linux也行,只要她别用Windows,而且还不怎么会用。Enter。

游婺源

Jul 14, 2009 - 1 minute read - Comments

写这么多年blog,每次都当回事情,实在写的太累了。还是简单一点,不要费劲了,想到哪里,写到哪里吧。 简单来说,有朋友家在婺源,我过去玩了一次。地方不错,好山好水,绿茶不错。记得冬天去,夏天昆虫多,草也多。一个朋友给叮肿了一圈,另一个活像被鞭打过。而且太阳太大,一个成了活包公,贝壳回来褪了层皮。 另外,如果当地人告诉你,不远,不可怕,很好玩,不要随便相信。他们倒是不会害你,只是他们的标准和你的不大一样。超过60度的斜坡,连爬一个多小时,只是一个稍微有点累的常规路途而已。因此,如果你没有一定的体力和运动上的自信,不要随便和当地人去走小道。小道这东西有两个坏处,一个是走到一半不能回头,另外一个就是随时可能找不着或者被修路修掉滑坡断掉。 好吧,有意的话联系我。

ssh翻墙服务

Jul 7, 2009 - 1 minute read - Comments

不多说了,上脚本。 -----------/etc/init.d/sshtunnel------------ #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin CONF="/etc/default/sshtunnel" source $CONF if ! [ -x /usr/bin/ssh ]; then exit 0 fi start () { echo -n "Starting tunnel.." ssh -CNq -D "$PROXYPORT" "$USERNAME@$SSHHOST" -p $SSHPORT -o ServerAliveInterval=30 & echo "done." } stop () { echo -n "Stopping tunnel.." PID=$(netstat -nlp -4 | grep ":$PROXYPORT") PID=$(echo $PID | sed "s/.*LISTENs*(.*)/1/" | cut -f1 -d/) kill -9 $PID echo "done." } case "$1" in start|restart) start

系统

Jun 30, 2009 - 2 minute read - Comments

下文转载自solidot。 曹筠武因《系统》获2009年骑士国际新闻奖 [](http://solidot.org/articles/09/06/28/120233.shtml) 南方周末记者曹筠武凭《系统》一文获2009年骑士国际新闻奖(译言)。得奖者全球只有3人,另两位分别是一位民主刚果记者和一位《纽约客》记者。 曹在《南方周末》2007年12月20日刊发长篇特稿《系统》,详尽深入地描述了发生在网络游戏“征途”中令人触目惊心的故事。它需要玩家投入真实的金钱以求在弱肉强食中生存。他注册了游戏账号,并结识了一些老玩家,将他们作为自己深入报道的一部分。 ICFJ主席Joyce Barnathan表示:“今年我们的获奖者都敢于大胆地讲真话,不管多危险,都不会向困难的题材低头。他们报道了别人避而远之的重要新闻。” 以下是一点背景说明。 《南方周末》之《系统》与中国媒体之“系统” {#南方周末之系统与中国媒体之系统 .entry-title} 2007/12/23 | 作者:maomy | 类别:[听闻](http://ohmymedia.com/category/news-information/ "查看 听闻 的全部文章"), [时代](http://ohmymedia.com/category/times/ "查看 时代 的全部文章"), [表达自由](http://ohmymedia.com/category/media-communication/express/ "查看 表达自由 的全部文章") 《南方周末》2007年12月20日刊发长篇特稿《系统》(点此链接查看我转载的全文), 详尽深入地描述了发生在网络游戏“征途”中令人触目惊心的故事。这也是我近年来读到的最好、最注重细节、最引人入胜的网游报道——不是简单枯燥的道德说 教,不是大而化之地泛泛谴责,更不是公关软文的阿谀吹捧。读过之后,你很难不陷入思考:数百万人沉浸的虚拟与现实交汇的地带,究竟是什么文化氛围,人们的 行为和心理有着怎样的模式,这一切又会对所谓“现实生活”发生什么影响?极权、意识操纵、欲望,对于这些统治虚拟和现实的东西,在史玉柱的“巨人网络”美 国上市、众多媒体交相赞颂又一个财富神话的此刻,我们还能被允许发出什么别样的声音? 我读完全文,感觉首先是“可怕”二字,尤其是文中描绘的玩家的集体抗议,被系统屏蔽,甚至因此被投入虚拟的“古拉格群岛”的那一幕。据称主要作者曹 筠武自己就是80后的游戏玩家,难怪有此大作!这不是一篇传统意义上“平衡中立”的新闻,是一篇带有立场却尽量以事实说话的特写,甚至略有煽情,但我喜欢 这种有节制的激情。 如果说曹筠武向我们呈现的是在这款“网游巨作”中“系统”的可怕,那么这篇报道本身所遭遇的,却让人为中国媒体之“系统”而心寒。或者,可怕的究竟是“系统”,还是隐藏在“系统”背后的操纵者、利益群体或权力精英? 我凑巧在常去的BBS的某版面读到被转载的《系统》一文,但却吃惊地发现,这篇文章在网络上似乎正在被抹去。在《南方周末》自己的网站上,2007年12月20日这天的页面里,你不但找不到这篇文章的html版本,甚至连报纸提供的PDF版面中,也“凑巧”缺少了本文所在的两个版面。截图如下: {width=“500” height=“287”} 而就在几天以前,《南方周末》曾在[财富]栏目刊登一篇对史玉柱的报道,挟“巨人网络”上市之余威,极尽曲笔赞美之能事。这篇文章当然安然无恙地存在于网站当天的页面上,html和pdf俱全(截图如下),而且用搜索引擎查询,结果也是铺天盖地。不知道在专业人士眼里,这算不算一篇成功的公关软文枪稿? {width=“500” height=“291”} 中国知名的游戏论坛17173中也有人提到了《系统》一文的消失。 为何如此?几乎毫无疑问,是那只“看不见的巨手”在操纵,在公关,在“和谐”。有明白人关军点出,而在他看来,这篇文章的写作与刊发,已经是“智慧与勇气”的体现: “毫无疑问,史玉柱同学看了这样的文章会不高兴。他的公司刚刚与《南方周末》搞了一个合作,叫“奥运征途”,赞助该报记者 寻访历届奥运会举办城市,一路上不是美金就是欧元,花销不菲。史同学不高兴的后果是什么呢,以我的小人之心揣度之,就是挥动大刀,咔嚓一声“秒杀”这个合 作。” OK,我一直认为,从向权力下跪到向金钱下跪,对市场化商业化进程中的中国媒体来说,那是易如反掌、顺其自然的转化。新闻审查和网络过滤对任何一个 有点文化的中国成年人来说,都绝对不是新闻;但是当金钱如此轻易地操纵一家报纸(而且是号称中国很牛掰很有风骨的那家)、更多家网站论坛的时候,当“巨人 ”式“脑白金”营销无往不利的时候,我们是不是都应该想一想,责任在所谓的“系统”,还是“系统”后面的人,还是也包括我们自己? 有鉴于此,不得不又一次打破网络常规,不是给出全文链接并引用,而是全文转载——因为你不知道什么时候被你引用的链接就从网上消失了,而我的全文转载至少还可以一直保留在我的独立blog上,并通过rss订阅来到并不算多的500多个读者面前。 南方周末:“系统” 全文链接:http://ohmymedia.com/2007/12/23/736/ 看来这个内容还不容易保留,我干脆全文转载。 南方周末:《系统》 来源: 南方周末 作者: 曹筠武 张春蔚 王轶庶 ■编者按: 在一款同时在线人数超过百万、全部玩家加起来可以组成一个超级城市的网络游戏中,它的游戏精神是指向乐趣,还是指向权力和金钱?它的社会规则是新世 界的开放自由,还是率土之滨莫非王臣?这不只是对某一款游戏的追问,甚至也不只是对韩式网游的价值观的追问,而是对人与游戏、人与人的关系的追问。虚拟世 界是现实世界的一部分,也有着人们必须捍卫的准则。 在当下中国最火的一款网络游戏中,玩家们遭遇到一个“系统”,它正在施行一种充满诱惑力的统治。这个“系统”隐匿无踪,却无处不在。它是一位虚拟却 真实的垄断者。“如果没有我的允许,这个国家的一片叶子也不能动。”这是智利前独裁者皮诺切特的声音,悄然回响在这个虚拟世界之中。 白天,27岁的吕洋是成都一家医院的B超检查师。 晚上,她是一个国王,“楚国”的国王——玩家们更乐意按游戏里的名字尊称她为“女王”。在这个虚拟王国中,“女王”管理着数千臣民,他们都是她忠诚的战士。 在一款名叫《征途》的网络游戏中冲杀了半年多之后,吕洋自信看清了这样一个道理:尽管这款游戏自我标榜以古代侠客传统为背景,实际上钱才是在这个虚拟世界中行走江湖最关键的因素。

IT市场统计分析

Jun 19, 2009 - 1 minute read - Comments

最近在看简历,根据简历和自己的经验总结一些东西出来。管窥蠡测一家之言,权给新手做个参考吧。 1.行业分类 从统计上看,web开发是人数最多的行业,占大约56%。其次是嵌入式市场,大约占18%。erp市场也差不多,18%。剩余的不足8%。 2.性别分布 众所周知,程序员是男性的职业,但是出乎大家意料的,程序员中有14%是女性(纯程序员,不包括美工)。不过根据贝壳的人工观察,其中只有一人的工作时间超过5年,多数都是3年不到的新人。看来女性程序员怀孕后转业的情况非常严重啊。 3.年龄分布 以大学毕业为基准水准计算,当前程序员的最低出生日期应当是1987。贝壳按照这个进行了统计,得出结果如下。 1983年17%,1984年8%,1985年14%,1986年16%,是人数最多的4年。低于1987年的占11%,1980到1982年间的人数占20%,高于1979年的占14%。 4.水准分类 水准是一个很难界定的指标,贝壳采用五级分类法,简单对其分类。大多数情况下,级和级之间没有明确的定界。 0.是完全没有任何技术背景和资历的人士,说白了就根本不是IT人。大约占8%。 1.初步具备IT行业人员的背景知识,能够做一些简单的软件产品,有跟随1-2个项目的经验。但是无法承担独立的项目,无法解决比较复杂的问题。在这个层次上,程序员大多数时候根本不知道怎么做,以及该做什么,始终处于知识缺乏的状态。业界俗称,小白。大约占50%。 2.具有标准职业从业人员所需要的知识(当然,具体是什么知识视行业和语言而定),跟随过多个项目,其中有2-3个大型项目。可能领导过1-2个项目,但是不清楚项目管理的概念和专业知识。这个级别的人在总体人数中最多,大多数人在工作1-3年后都可以达到这个水准。可以独立的解决问题,和客户交流,完成软件生产的整个流程。在这个层次上,程序员大多数时候都知道怎么做。主要的问题在于多数人还不知道如何将这个过程简约成自己的标准过程。一般来说,这就是标准程序员的典范。大约占32%。 3.精通C++,熟悉windows和linux系统管理和系统底层,掌握至少一门高级语言。熟悉项目流程和项目管理的概念和专业知识,能够带领团队协作完成大型项目。能够独立建模,抽象问题,并通过算法解决问题。具备独立和客户沟通,协调解决问题的能力。一般有多个项目经验,曾经领导团队完成2-3个大型项目。如果你天分不错,运气不错,又够勤奋,大概在工作3-5年后会达到这个水准。在这个层面上,算法和标准化过程这些书本上的东西首次超过了如何做,做什么,成为程序员的首要问题。这个层级的人数也比较多,能够胜任项目经理的职位。大约占8%。 4.精通专属领域的多项核心技术,有广泛的业界联系,专属领域有一定的知名度。研发过一项或几项领域中的关键技术,对领域的发展做出过一定贡献。要到到这个层次无法依靠时间的积累,很大程度是天分,运气。在这个层次上,解决问题已经不是一个问题。由于基本能解决领域内的多数问题,因此发现需要解决什么,和创造性的解决这些问题成为这个层次最主要的问题。这个层次的人基本很少,一个子领域中全国不会超过百人。大约占2%。 5.曾经研发过改变世界的技术。这种人多数你听过,运气好这辈子能见到一个。大约占1%不到。贝壳当前的水准在3上下浮动,估计奋斗一下,这辈子能够达到4的层次。至于5,这辈子不指望了。 5.工资分布 大多数情况下,工资和工龄都是挂钩的。根据贝壳的统计,工资和年龄线性拟合后得到的一阶近似方程为:y=-1.089*(x-1990.50)。带入贝壳的年龄,y=8.16。恩,贝壳当前的工资还是不错的,比平均值高。 6.语言分类 由于简历是python的职位,因此python的比例异乎寻常的高,无法作为可用结果。贝壳按照经验比例适当缩小了python所占比重,得到一个估计值。作为统计数据的修正,并列于下。根据贝壳的统计,使用java的人人数最多,占了38%,修正大约是40%。使用微软系列开发语言/工具的人其次,28%上下,修正大约是30%。使用php的人再次之,12%,修正大约15%。最后是使用C++的,8%,修正10%。真正使用python和其他动态语言的人,修正后大约是5%。由于职位不涉及前台,因此前台语言/技能不计入统计。 最后谈几个感想。 1.队伍水准不成比例 根据贝壳的经验,在多数的项目团队中,推荐的岗位配比是:1位项目经理,2位程序员,1位前台工程师,1位DBA,2位测试。如果可以,最好还有一个专门的文档和行政。这个人数配置适用于6-12人的团队管理,如果人数不足,可以减少文档和程序员。如果人数有多,可以增加2位程序员,1位前台工程师,1位测试。其中程序员、前台工程师的配比要基本保持2:1不变,程序员、前台加DBA对测试的比例要基本保持2:1不变。这可以说是项目团队的黄金比例,比例失调往往容易造成窝工或工作不完整,质量有瑕疵。 但是需要看到,这样的话要求2位达到3这个层级的程序员(PM和DBA),但是最高只能带4名2这个层级的程序员。这个和当前的2,3层次的程序员的比例4:1严重不匹配。因此造成一个现象,3这个级别的程序员不足,1这个级别的程序员太多。 根据孟岩的blog,07-08年的IT从业人员大约是500-600万人,其中程序员大约100-130万。每年的IT行业毕业生大约是70-100万,其中能进入程序员领域工作的大约20万人。当然,他的blog是一年多前的,而且说的是毕业生就业问题。但是根据全球IT形势,我估计这几年里面程序员队伍规模即使增长也有限,不会超过150万人。也就是说,大约一年之内就要淘汰10%-20%的从业人员。根据上面的分布,贝壳猜想多数人都是倒在了2到3的路上。 2.小白丛生,项目倒霉 上面一个问题带来的麻烦是,由于小白的人数太高,因此价格太低。其中不免一些人有非常好的测试表现。这要一分为二的看,部分人是真有这个水准的,以小白的价格雇用到这些人是非常合算的(当然最多一年,不会太久)。但是多数人仅仅是表现不错而已,这些人工资低测试表现高,很容易进入项目。而进入项目后,一旦担任关键职务,后患无穷。实际上,整个团队中,水准1的小白可以担任的职位只有测试(而且必须至少要有一个是真的专业测试)和文档。但是仅这两个职位而言,远远达不到培养新人的目地。这也是很多小白倒在了达到普通程序员水准路上的原因。 更麻烦的是,如果突然招聘,很容易发生招到的程序员价格都偏高,而且很多都没定下来就先和其他公司签约了。这时候往往只有小白可以用,项目情况可想而知。 理论上可以开放一些职位旁观项目,实际上也有人这么做的。但是旁观项目是一个非常麻烦的事情。首先项目的旁观者不但对项目没有正面贡献,反而会拖慢进度(因为要占用其他人时间进行沟通),因此旁观职位的工资应当是负数。而且多数公司项目第一,赶都来不及的时候谁会开放旁观职位。更不说光在项目中旁观是很难确实体会到那个职位上要面对的问题的。 3.项目经理的条件就是要做过项目 项目经理是一个非常专业的角色,这个职位和技术总监(或者叫核心程序员,高级程序员)、DBA并称是一个团队的三大核心。核心程序员和DBA可以慢慢学,但是项目经理是学不出来的。实际上,合格项目经理的必要条件就是带过一两个大型项目。问题是,如果想成为项目经理,你找谁让你带项目呢? 一种方法是跟随一两个项目,带一两个小项目,学整套的项目管理方法论,最后由一个成熟的项目经理指导你完成首个项目。但是实话说,这种方法只有对大公司有效,而且还的看你的运气。小公司里面哪里弄那么多人开两个团队?(原本的项目经理一个,你一个,这要35人以上的公司规模呢)大公司则是牛人太多,轮也不一定轮到你头上。 另一种方法是赶鸭子上架,等你毁过一两个项目后,也就学的差不多了。 实际上,国内由于PM(真正的PM,而不是挂这个名头的程序员或者其他捣浆糊人士)不足,而公司规模又不足,足了也没有培养人才的兴趣。因此大部分PM都是通过后一个途径培养出来的—— 4.语言生态扎堆 我们开放的职位叫做python程序员,可我的邮箱里面有一半上下的人都是java和C#的资历(我不看他会的语言,而是看他资历的),其中真正有python资历的人十不足一。实际上国内大部分的人都在学java和C#,做web和erp程序开发,大部分的小白其实扎堆在这里。真正成为3,4这个层级人才的,java/C#/C++/python的比例其实差不多,很接近。 实际上这和当前的语言生态有关。到也不是说这个生态有问题,而是这是当前现状市场化配置的必然结果。大量的小白(6成以上)集中到6成上下的低端web、erp和嵌入市场。这些市场的目标需求不复杂,没有重大的技术问题,服务器压力不大,因此小白足以应付。既然是小白,那就需要选择一种使用人数最多的语言(因为最好找人)。于是两大语言集团,java和ms系列的asp,asp.net就成为必然选择。 web行业和erp行业的几乎全是ms系列和java系列的语言,而嵌入式里面则大多数是C++(当然,也有j2me,不过那不完全输入嵌入式开发的领域,很多应当属于游戏领域),这个是受限于嵌入式本身的技术特点。C++本身也有写的好和写的差之分,但是由于程序员要控制更多的东西,因此差的程序员很容易被识别出来,也更难在行业中生存。因此嵌入式行业的总体开发成本比web行业要高。 在我的行业中,缺少游戏行业的分析。这主要是因为我的简历里面几乎没有游戏行业的从业人员。我无法解释这个现象的成因,也许游戏正在从软件行业中独立出去,成为一门独立的体系。

你要哪种钱?

Jun 10, 2009 - 1 minute read - Comments

今天和几个人坐在一起的时候,突然听到对面的人叫我。 贝壳,快借我点钱。 贝壳刚刚有点瞌睡,有点迷糊。往左看看,星际。往右看看,魔兽。张嘴―― ――你要哪种钱? 人民币。

电脑操作与人机工程学

Jun 1, 2009 - 1 minute read - Comments

贝壳大学念的是工业工程,毕业导师就是人机工程学方向的,贝壳的人机工程论文就是按钮的大小和操作效率。因此,今天贝壳罕见的回归本专业,谈谈电脑操作的速度问题。 首先一点就是,无节制的优化速度是万恶之源。为什么?道理和优化程序一样。你实施一个优化必定有一定成本和代价,为了一个一个月进行一次,一次三秒钟的操 作,进行一次优化。假定你搞定优化用了半个小时——一些情况下的却需要这么长时间。这样你需要100年才能收回你的投资,显然,这很愚蠢。 那么,什么是优化,为什么要优化? 操作优化,指的是你利用一些专业和非专业的方法,将日常最常用的操作简化。减少操作次数,减少操作时间,减少精力集中的负担等等。最常见的方法是“按键精 灵”或者是快捷键。而之所以要进行优化,则是因为——我懒——俗话说,只有懒人才是好程序员。也许有人会想,那设计者为什么不设计的效率高一些?拜托朋 友,你也讲讲道理。设计者怎么知道你是要经常复制还是要经常剪切?于是他只能假定你经常剪切(或者复制)。如果不幸,你恰恰相反。也许你就需要优化,也许 贝壳的文章就能给你的工作提供非常大的便利。 那么贝壳下面逐个讲解贝壳碰到的一些优化方法和范例,具体的运行则要靠大家的发挥,没有一定的模式。如果你觉得你的电脑操作工作平淡无聊,那就说明你需要 优化了。每种优化方法需要一定的专业知识配合,贝壳会给出评价。评价有三种,适合普通人,就是说一般稍微会一些电脑的人,可以根据网络上的讲解来使用。适 合专业用户,指用电脑3年上下,电脑比较熟练的人,可以经过试验配置成功。还有疯子专用,指这个方法基本就和您无缘,除非您正好是程序员或者疯子。 首先我们从最基本的开始,鼠标,按键,快捷键,快捷键排位。这个方法适用于普通人,但是下面一段是比较专业的论述,不感兴趣的可以跳过。 鼠标和键盘是我们最常用的输入工具,而根据贝壳的人机工程论文,鼠标的输入效率低于按键。但是要注意,这个结论并不永远成立。对于某些图形操作,尤其是高 精度操作来说,键盘上可以操控的方法变成上下左右四个键,效率大大降低。如果使用其他键来辅助,这不是人类能接受的方法,疯子也不行。此时使用鼠标比键盘 效率高多了。键盘输入快的根本原因在于一般人精神集中后,一秒可以按三个键——至少也有两个。而无论精神怎集中,区域怎么大,要输入一个点击至少要一秒。 按照信息量计算,键盘的可用信息量要比鼠标大一个量级。然而,除了输入文字,键盘并不好用。根本原因在于鼠标的模式是阅读-选择,而键盘是记忆。因此,键 盘操作是用户不友好的。 通常来说,我们可以用键来定义一些常用功能,这样会加速操作。通常而言,这个被称为快捷键。例如,Atl+Tab是切换窗口,相信大多数人都知道这个热 键。这个热键好用的根本原因在于快速的在两个窗口见切换——如果用鼠标会累到死。我们可以记忆一些常用热键来加速,毕竟之所以定义常用热键是有意义的。例 如Atl+F4的关闭程序,结合windows使用可以以<win>,Atl+F4,U的顺序来关机。整个操作只要一秒,单手就可以,真是酷 到不行。Atl+Space可以唤出系统菜单,因此Atl+Space,X可以最大化,Atl+Space,N可以最小化,这两个也可以单手操作。 单手操作热键的意义在于免去频繁的键盘/鼠标切换。当你需要双手执行热键的时候,你需要半秒将右手从鼠标上移动到键盘上,再花半秒移动回去。这样就平白多 了一秒的时间——这还是高手的时间,普通人更长。对于加速操作来说,这么移来移去很没有意义。而键盘/鼠标的配合才是操作电脑的理想境界。你可以在资源管 理器里面试试一个操作,在一个文件夹内选择一些文件复制到另外一个文件夹。这是贝壳最熟悉的配合动作——因为太频繁了。首先点中头一个文件,按下 Shift点最后一个。放开键盘鼠标,按下Ctrl+C。点击目标目录,按下Ctrl+V。速度快的原因在于,Shift放开后,按下Ctrl+C的动作 基本是下意识的。这样鼠标可以轻松的去找目标——同步的。按下Ctrl+V也是下意识的,所以整个动作的时间序列是——点头一个文件,点最后一个文件,点 目标。当然,拖曳选中区域,拖曳到目标目录一样可以,而且是单手鼠标操作。只是这样一来,首先你无法添加选择零散目录——用Ctrl键就可以做到。其次如 果不小心在移动的时候松开左键,就会触发麻烦的同文件夹文件复制。因此上述方法兼顾了稳定性和速度。 也许你觉得无聊,不就是文件复制么?我点右键也可以啊。问题是,如果点击右键,再点选菜单,至少需要1.5秒的时间。比这个方法至少慢了1秒。如果你每天的工作需要整理大量的文件,我想你不会高兴遇到这个问题的。当然,如果你基本不复制文件,好吧,当我没说过。 更多的时候,我们需要定位目录中的某个文件或者文件夹。对此,你可以输入文件的头两个字母。这时候光标会被带到符合这两个字母的头个文件——我想离你的目标不会太远了吧。这个同样是双手配合操作。

用简体还是繁体

May 26, 2009 - 1 minute read - Comments

作为一个使用了24年以上简体(不要怀疑,贝壳三岁开始学写字的),并且暂时还要继续用下去的人来说,这几乎是一个不用问的问题。但是,最近,贝壳考虑是 否应当改用繁体,否则真有成为文盲的可能。何为文盲呢?中国规范常用字无法写出80%以上的,我觉得就应该算做文盲了。也许这些新时代的文盲可能具有非常 高的学历,甚至会是博士。但是5个字里就有一个字写不出,不是文盲是什么? 不过最近的汉字简化修改方案,似乎有把贝壳往文盲上推的嫌疑。凡能读这篇文章的人应当都知道,所谓的汉字简正之争。简正之争,由一个汉字方案的学术争议, 有逐渐演变为一个中国,谁是中国的国家和民族之争的现象。但是,无论谁是最终标准,应当都具备一个国际语言的基础特性,即一致性。例如汉字就应该是汉字, 不能今年是汉,明年就变成了�,再下去又是不知道别的什么。中文固然因为语言使用区域非常广泛有非常多的别字别音,而且在某些地区还是主流,但在规范上应 当兼容扩充,而非来回修改。例如山东地区,打车叫打个的(de1,一声)。打的这个词按照贝壳所见到人的叙述,应当来自南方,香港和广州(当然,也可能因 为和贝壳讲的人本人就是香港人的关系)。原来是打的士(di1shi4),的士的读音在广东话中非常类似taxi,后者在英文中是滑行的意思,比拟出租在 街上四处溜达,寻找乘客。中国在改革开放后才有了taxi,因此叫法上都学香港,才有了的士,打的,的说法。这个不在规范之内,应当考虑统一的问题。否则 若是一个香港老板跑到山东,当地人秉承圣人之乡的理念,非常热情好客的说:我给您拦个的(de1)吧。岂不笑掉人家的大牙? 汉字规范之争其实涉及到非常多的政治和经济层面的问题,但是和小老百姓关系最大的是一致性。诸位可以想想,若是您学了30多年字,一朝之间2成的字突然被 人宣布不会是这么写了。您从一个正常人就猛的变成了文盲,换您您干么?为什么台湾反对简体字?因为一旦简体字推行,社会上多数人比文盲更加文盲——他们连 读都不会,要重上六年小学。您想想,换您您干么?现在和台湾还没较上劲,咱们自己先和自己较上了。文字要改,大改还是小改?如果是小改还好,如果大修,无 疑是直接宣判了贝壳的文盲。这种情况下,还不如直接学繁体字的好。 说到学繁体字,到也不是贝壳信口开河。而是当下,会电脑的人学繁体字的成本真的不高。你仔细想想,你到现在总共用笔写过多少字呢?反正今年过年到现在,贝 壳拿笔就写过三个字,自己的名字。凡是吃饭刷卡签合同,必定要写这三个字,其他都不会写了。贝壳又长期挂在网络上看各种资料,外加高中时期还特别研究了前 秦散文,三国志(不是三国演义!)。因此简体繁体都能看。现在换用繁体,无法就是输入法切换一下,把输出简体的转换为输出繁体。对于开源输入法而言,简单 到只是码表转换。而后学会写自己的名字,学会1000常用字。基本贝壳就能冒充会繁体字拉。 其实诸多字形的修改只是小事,问题是有很多讲法的统一和规范的推行落实才是当务之急。例如,以前贝壳小学时候还有专门的课程还分辨的地得。现在出了社会发现,有多少人管你的地得?很多人一些基础的文法都有问题,在这基础上还谈什么修改规范呢。