Shell's Home

May 23, 2010 - 1 minute read - Comments

成人的童话

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

May 20, 2010 - 1 minute read - Comments

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

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

May 19, 2010 - 1 minute read - Comments

小公司在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文件,并且提前约定密码,是个很好的方案。

May 11, 2010 - 1 minute read - Comments

无聊的测试

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

May 5, 2010 - 1 minute read - Comments

杭州游行程记录

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

Apr 27, 2010 - 1 minute read - Comments

关于人力资源的一些话

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

Apr 10, 2010 - 1 minute read - Comments

用android的usb网络共享上网很爽

什么设定都不需要,直接打开usb调试和usb网络共享,然后插上线路。Linux下自动出现了usb网络设备,usb0。然后――没有然后了,随便上网吧。各种分享上网工具可以全扔掉了。

Apr 7, 2010 - 1 minute read - Comments

关于王江民先生几点

前几天惊闻王江民先生离世,我说不上是高兴还是难过。按理说,逝者已矣,种种是非也应当随风而去。然而一个人存在过,就必然有存在过的痕迹。我仅从我个人的观点,追述一下江民杀毒的印象。 我是谁?平凡的电脑用户,95年接触电脑,97-98年刚好赶上KV300L++。然后换用了金山毒霸,04-05年换用Avast。08年换用Linux,因此裸奔到现在。 在DOS时代和前Windows时代,江民杀毒是杀毒软件中的佼佼者。最初的时候,最流行的杀毒产品是防毒卡。好像当时做电脑的人有硬卡情节,什么产品都搭配卡。汉字系统有汉卡,杀毒系统有防毒卡,就是放个VCD,也有解压卡。Whatever,防毒卡一路很牛,直到DIRII病毒出现。这个病毒直接将自己挂入了DOS的设备驱动链,从而直接修改了系统,这个方法很像现在的Rootkit技术。这个思路直接导致了防毒卡的失效,而KV系列,就是这个时候涌现出来的佼佼者。KV系列的成功,一在于他强大的杀毒能力,二则在于强大的抗盗版能力。当时我也有玩汇编/反汇编,底层编程一类东西。因此很是惊艳王江民先生强大的代码能力。KV系列当时可以查杀几乎所有的病毒,电脑报纸上几乎每期都有专栏,说最近出了什么病毒,大家要扩充防毒码。现在的用户可以想象这种情况么? 在97-98年的时候,我碰到了KV300L++事件。简单来说,江民公司在KV300L++版本中加入了主动逻辑锁,当满足某些条件的时候自动触发,锁定用户的电脑。无法重装,也无法解除。具体的手法是通过修改硬盘的分区表链,做出一个循环的分区表,导致DOS系统识别失常。必须使用特殊的方法进行解锁,或者联系江民公司,进行书面的原因说明(其实就是盗版举证)。这篇文章(http://hi.baidu.com/inetpm/blog/item/9e7bea0f02e0e9266059f33a.html)中,将此事描述成正版软件商对盗版的战争。对此我表示强烈的抗议,这根本不是事实,而且我强烈怀疑此人是个枪手。我是一个KV300的受害用户,自然很清楚当时是什么情况。上文中有一段文字,我引述如下: L++事件出来以后,王江民受到围攻。网上各种言论都有,但就是找不到L++事件的真实受害者用户。这一方面是因为L++网络升级版只在网上放了六天,二是因为正版用户和使用没授权的解密版KV300的用户绝不会受伤害,被锁住机器的是那些在大量生产假冒KV300的盗版商。王江民自信“这个逻辑锁就是这样准确!“ KV300L++在判断用户当前插入的盘片不是江民的原始加密盘之后,会释放主动逻辑锁。这就是上文说不会波及正常用户的理由。然而,当时有大量正版用户受到伤害。至少我当时去抗议的时候,看到某个大叔拿着一堆正版包装在那里骂人,全公司都买了正版,为什么锁他电脑。为什么出现异常波及呢?因为KV300L++释放逻辑锁的条件并不是“插入的盘片有某个盗版加密盘特征”,而是“插入的盘片不具有正版加密盘特征”。这两点看似一样,但是实际上天差地别。前者逻辑炸弹很难释放,也很难奏效,而后者就很容易伤及无辜。我中标的原因就是因为搞不清哪张盘是正版的KV300加密盘,把一张游戏盘片插了进去。我相信大多数中标的人也是基于类似原因。 从更深的层次来说,软件公司有权对盗版用户做出惩罚么?可以,但只能走司法途径。如果允许软件公司私下对盗版用户进行惩处,这就等于赋予软件公司权力来伤害任意个人。因此当年,公安部对江民公司罚款3000元,不再追究。与其说是惩罚,不如说是保护。如果没有这个处罚,我相信江民公司会面临遍地开花的侵权诉讼官司——按照法理,即使盗版用户都可以起诉。因为逻辑锁是未经认定的,因此从法理上说,被逻辑锁锁定的人并不能认定就是盗版用户,更何况这个认定机制根本不准确。只要不去解锁并承认错误,江民公司就无法举证受害者一定使用了盗版。江民公司锁定用户电脑是事实,很容易举证确认,而反过来举证用户使用盗版却很困难。前者是侵权官司,证据全面,法律完善。后者则是版权官司,没有什么确凿的证据,更何况当年连版权法都没有——如果有版权法江民公司更倒霉,版权法规定基于学习目地可以合法使用24小时,这下更难举证。 何况其中大量的无辜正版用户,其中有很多人被无辜波及。至于后来Windows时代的没落,也不能说和这个无关。上文我看到的大叔,直接赌咒发誓,他这辈子不会用任何江民公司的产品。而江民的KV系列软件为了保持加密优势,在Windows时代还继续使用底层的软驱设备直接编程。先不说稳定不稳定的问题,我01年配的电脑连软驱都没有,用个P啊。直到很后来,江民公司才改掉了这个做法。更严重的问题是,由于后Windows时代,尤其是2000以后,对用户权限进行了严密保护,加上系统API的更新换代。导致杀毒软件技术推翻从头再来,杀毒软件商大洗牌,江民公司从此一蹶不振。现在的新用户也许听说过卡巴斯基,也许听说过瑞星,也许听说过金山,但是有多少听说过江民杀毒的?给别人推荐软件的人自己想想,你推荐过么? 当然,就我个人感觉而言,王江民是强力的程序员。做事踏实,技术高超。然而任何人都只是人而不是神。他是个好程序员,但不是好的商人。当技术上的领先没有被放到正确的方向,而是向着错误的方向发展的时候,一个伟大公司的没落就无法避免了。

Apr 2, 2010 - 1 minute read - Comments

Re: [shlug] 以nginx作为subversion前端的一些细节

2010/4/2 Shell Xu <shell909090@gmail.com> > 本文系电脑资料,同步到blog上。小黄姐姐不必看了,可以帮我留个言。 > > nginx性能不错,可惜不支持WebDAV,因此没法拿来作为subversion的http服务。于是考虑开一个nginx作为前端,后端就跑一个apache来作为容器。配置这么写的(节选): 这样多累啊,换git/hg吧 – simple is good http://brucewang.net http://twitter.com/number5

Apr 2, 2010 - 1 minute read - Comments

以nginx作为subversion前端的一些细节

本文系电脑资料,同步到blog上。小黄姐姐不必看了,可以帮我留个言。 nginx性能不错,可惜不支持WebDAV,因此没法拿来作为subversion的http服务。于是考虑开一个nginx作为前端,后端就跑一个apache来作为容器。配置这么写的(节选): =========/etc/nginx/sites-enabled/default========= server { listen 443; server_name OOXX ssl on; ssl_certificate keys/server.crt; ssl_certificate_key keys/server.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; access_log /var/log/nginx/localhost.access.log; include /etc/nginx/mapping-ssl; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } } 打开了一个https的服务,这是当然的,svn传输的数据使用http很危险。 ===========/etc/nginx/mapping-ssl============= location \^~ /svn { proxy_set_header Destination \$http_destination; proxy_pass http://apache_svr; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-Host \$host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Server \$host; proxy_set_header X-Forwarded-For