「转」程序员视角分析丰田刹车失灵事件

【第一部分】背景简介 前几年闹得沸沸扬扬的丰田刹不住事件最近又有新进展。十月底俄克拉荷马的一次庭审,2007年一辆2005年凯美瑞暴冲(Unintended Acceleration,UA)致一死一伤事件中丰田被判有责。引起广泛关注的是庭审中主要证人Michael Barr的证词让陪审团同意丰田的动力系统软件存在巨大漏洞可能导致此类事件。这是丰田在同类事件中第一次被判有责。庭审过后丰田马上同意支付300万美元进入调解程序。 出于好奇,我漫不经心地下载了Barr的286页证词,却一下子被吸引住了。几天内读完,算是对这次事件进行了一次深入了解。下面就从外行角度总结一下这份证词并尝试以更简单的语言解释里面提到的暴冲原因以及丰田犯下的错误。 Barr的证词下载自他的个人博客Barr Code,但现在该文已经被删除。见2楼。 Michael Barr是谁?他是一位拥有20年以上行业经验的嵌入式系统工程师。在十八个月中,有12位嵌入式系统专家,包Barr,受原告诉讼团所托,被关在马里兰州一间高度保安的房间内对丰田动力控制系统软件(主要是2005年的凯美瑞)源代码进行深度审查。这房间没有英特网,没有手机信号,他们进出不能携带任何纸张、记录甚至皮带。最后的调查结果被写入一份800页,13章的详细报告。而鉴于保密协议,调查内容一直没有公布,直至俄克拉荷马这次庭审才首度部分公开(报告本身似乎还没公开)。 回到正题。丰田的软件有没有缺陷?根据Barr的调查,答案是有。这其实是废话,任何软件都会有缺陷,关键在于是什么样的缺陷。丰田的软件缺陷分为三类: 非常业余的结构设计 软件设计的基本要求是模块尽量简单化,因为这样可以一来更易于阅读二来更易于维护。但丰田的工程师显然没有遵循这原则。Barr使用一种工具自动根据代码的可能分支数量评估函数的复杂度,结果是丰田的软件中至少有67条函数复杂度超过50,意味着运行这个函数可能出现超过50种不同的执行结果,属于“非可测”级别。因为为了测试这50个不同的结果,必须准备至少50条不同的测试用例以及相应的文档,在生产环境中一般是不现实的。作为比较,Barr表示他自己的公司严格执行的其中一条规定就是任何代码复杂度不能超过30,否则不合格。而在这67条函数中还有12条复杂度超过100,达到“非可维护”级别,意味着一旦发现缺陷(Bug)也无法修复,因为实在太复杂,修复缺陷的过程中会产生新的缺陷。其中最复杂的一条函数有超过1300行代码,146个可能执行路径——正好用于根据各传感器数值计算节气门开关角度。 如果你不知道什么是节气门,那么这里我稍微解释一下。为了让内燃机运行,有三大要素:燃油、空气和点火时机。空气和燃油的混合物进入气缸,被火花塞在正确的时间点燃推动活塞并最终推动曲轴和车轮前进。在电喷技术发明以后直到2002年以前,三大要素的燃油和点火时间是由电子设备控制,节气门机械连接加速踏板,由司机直接控制。节气门大致是一个连接加速踏板的“空气龙头”——踩下去越多,“龙头”打开得越大,允许越多的空气进入发动机输出更大的动力。2002年以后,丰田引入的“电子油门”让电子系统掌管了最后一个要素:空气。加速踏板不再机械连接节气门,而是连接一些传感器,由行车电脑将这些传感器数值计算成节气门开启角度再由马达控制节气门。我们稍后会再讨论节气门开合。 极复杂的代码带来的是极复杂的功能。下面说一下被称为“厨房洗涤盆”的Task X。这里先解释一下,丰田的软件系统和很多别的软件系统一样,都是由一个统领程序(称之为“操作系统”)和若干小程序(称之为Task)组成。就好比电脑上跑的Windows是统领全局的操作系统,网络浏览器和记事本是跑在操作系统上的小程序。丰田的系统里每个Task都有自己的名字,但这些名字非常敏感,敏感到每次被提及的时候律师都要求法庭内的没有阅读代码权限的人全部清场。为了减少清场次数,Barr将这个最重要的小程序称为Task X。这个Task X有多重要呢?跟厨房里的洗涤盆一样重要。它负责非常多的事情,包括计算节气门开启角度、速度监测和保持、定速巡航监测等等。Task X的不正常运行被认为是暴冲事件的元凶。稍后会再继续讨论Task X。 还有一些别的匪夷所思的发现。比如丰田的软件包含了超过一万一千个全局变量。如果你不知道什么是全局变量,那么只需要知道软件设计的一般原则是要尽量少使用全局变量,因为有可能带来无法预测的结果。这里的“少”的意思是“尽量接近零”,绝对不会是一万一千个。 不符合软件开发规范 如同很多行业一样,汽车行业也有自己的规范。更具体一点,由于汽车的危险性质,汽车控制系统被划分为“安全关键性系统(Safety Critical System)”——说白了就是安全性非常重要,弄不好会死人的。为了达到这一特殊要求,汽车相关软件开发人员定期举行会议讨论并发布编程规范,称为MISRA C。该规范的2004年版的感谢列表里还能看到丰田员工的名字,至少让外界认为丰田确实也在遵循这些规范。 真的吗?根据源代码来看,答案是否定的。对此之前的NASA报告也有所提及,丰田辩称他们遵循的不是行业规范,而是丰田内部编程规范。这一规范与行业规范的吻合程度达到50%。但是Barr认为根据他的调查,两个规范之间吻合度小于10%,甚至有若干规范条目相互冲突。后来发现丰田的代码甚至没有遵循丰田内部规范,当然比起别的问题这个已经无关紧要了。 MISRA C拥有超过100条规范,NASA的调查只使用了到其中35条进行校对,发现超过7000处违规代码。Barr使用全部条目,对照结果是丰田的程序拥有超过80000处违规代码。 这些数字说明了什么?根据统计,违规数量可以用于预测代码中暗藏的缺陷(Bug)数量。在之前提到的汽车相关软件开发人员会议中,有人就这一主题发表过专题演讲,提出每30处违规代码可能包含一个重大缺陷和十个轻微缺陷。讽刺的是这人是丰田员工。 特别需要指出MISRA C其中一个规则的内容是不得使用递归。 如果你不知道什么是递归,那么这里我稍微解释一下。递归是一种计算方法。但一般计算方法要么是自己算,要么询问别的计算模块索要结果。而递归则是通过问一层层问自己的方法完成计算。好处是代码简单,坏处是计算层数不固定。可能会2层就出结果了,也可能会是10000层,在设计程序的时候无从得知。 软件计算需要消耗存储器。越繁琐、越长的计算自然需要占用越多的存储器。递归的问题在于其嵌套层数无法预测,从而导致可能消耗的存储器容量无法控制。稍后会再讨论存储器。 对关键变量缺乏保护。 什么是变量?变量就是存在一段存储器的0和1的集合。这些变量既可以是一些函数的处理结果,也可以是另一些函数的处理原材料。比方说前面提到有一条程序专门计算节气门开合角度,比如说是20度,这个20就是一个变量,存在存储器的一个指定位置。 另一个程序专门负责开合节气门,它知道去那个指定位置读取这个20,然后把节气门开启20度。 什么是保护?嵌入式系统,或者任何系统,都会在一定条件下发生硬件或者软件错误。客观上这是无法避免的。而且汽车作为一个时常在震动、发热、位移的系统,它的内部环境不能说不恶劣,发生硬件错误的可能性甚至更高。什么样的硬件错误呢?别忘了变量都是0和1的组合,这些0和1由存储器上的高低电平代表。由于某些不可抗原因,一个电平从高变成低,或者反过来,那么这个变量就被更改了。这被称为“位反转(Bit Flip)”。为了对抗这样的事情发生,需要对变量进行保护。保护的方法一般是镜像法。简单来说就是在两个不同的地方写入同一个变量,读取的时候两边都读,比较是不是一致。如果不一致,那么可以得知这个变量已经不可靠,需要进行容错处理。 丰田的程序总体上对其上万个变量进行了有效保护,但问题出在操作系统上。前面提到丰田的软件本质上分为操作系统和Task。Task是由丰田自己开发,但是操作系统则是由芯片供应商提供,固化在芯片里的。丰田在这里的过失是没有对供应商提供的代码进行深度审核,拿到什么用什么。 另一个保护措施是错误校验码(Error Detective and Correction Codes,EDAC)。这是一个硬件层面的数据保护措施。简而言之就是给内存中每一个字节(8比特)后面物理地增加几比特校验码。这样万一变量出错了,可以通过校验码得知,甚至可以通过校验码修复一些轻微错误。这个措施十分简单有效,但是在2005年款凯美瑞的系统中完全没有使用,丰田却告诉NASA他们用了。而在2008年款凯美瑞中使用了3比特长的EDAC。Barr认为是为了节省成本,否则应该使用5比特长。 还有值得一提的是,汽车相关的软件行业有那么几家操作系统供应商,早已形成了一套成熟标准称为OSEK。各供应商开发的符合OSEK认证的操作系统至少都能达到一定的质量。但丰田选用的操作系统却没有通过认证,让人不解。 现在我们知道丰田在编写软件的时候至少有三种缺陷。那么重点问题:丰田的这些软件缺陷是否会导致车辆暴冲?根据Barr的调查,答案是有可能。暴冲的起因需要结合上述三种缺陷来说明。 汽车正常运行需要倚靠若干程序(这里叫Task)的同时运作。Task有很多,CPU只有一块,在任何时刻只能处理一个Task,怎么办呢?这需要操作系统的统筹规划,合理分配CPU的任务,让每个Task都能按时执行。如果出现某种意外,让某个Task突然不执行了,那么就称为这个Task“死亡”。Task死了,自然不能执行它的任务。根据Barr的测试,在某些特定情况下,Task X的死亡可以导致节气门敞开——因为Task X的其中一个任务就是根据司机的操作计算节气门开合角度,它死了也就没法重新计算这个角度,即使司机把脚挪开加速踏板,节气门也无法关闭。此为暴冲的直接原因。更糟糕的是,节气门的开合角度这个数值,被Task X算出来以后保存在一个变量中。这个特定的变量正好没有被保护(缺陷3)。意味着万一Task X死亡并且停止计算,这个数值有可能因为不可抗原因被改变,而程序无从得知。 那么Task X为何会死亡呢?一般是因为内存出错。这个出错可能是一个小小的位反转,也可能是内存里的数值被别的程序错误覆盖。同一系统内同时运行了若干程序,这些程序需要共享一块内存,内存内部必然要被划分成若干块。比如第一块给程序1,第二块给程序2,等等。如果程序1因为某些原因(比如Bug)写到第二块内存上去,就会导致程序2读取了错误的信息。这就是所谓的内存出错。丰田的系统里,正好有这么两块相邻的内存块。第一块被称为“堆栈(Stack)”,这是所有Task存储它们运行状态的地方,大小为4KB。与之相邻的地方储存了操作系统进行任务分配的记录。那么可以想象,如果很多Task给堆栈里写入太多东西,超过4KB,那么就会错误地写入与之相邻的任务分配表。这种错误被称为“堆栈溢出”。操作系统拿到了错误的任务分配表,就会错误地分配任务,造成某些Task多执行几次,某些Task少执行几次,某些Task甚至就再也不执行——死了!必须指出的是,程序死亡并不罕见,甚至可以认为是正常现象。稍后解释处理方法。 那么堆栈为什么会溢出呢?显然是因为要写入的数据超过了堆栈的容量。在设计程序的时候要计算最坏的情况并且允许冗余。即使作出了正确的设计,这种错误也相对常见,所以NASA在他们的调查中重点排查堆栈溢出的可能性。于是NASA问丰田,丰田的回复是最坏的情况下4KB堆栈只写入了41%的数据,换句话说发生溢出的可能性非常低。NASA直接取信了这个数字并没有再深入调查。但Barr他们发现丰田的回答有严重低估,实际上最坏的情况会达到94%,而且还不算递归。丰田在代码中使用了递归(缺陷2)。因而实际数字有可能超过94%而且无法预计上限,因为递归计算的嵌套层数是无法预测的。所以实际情况下堆栈溢出的可能性相当可观。一旦溢出,相邻的任务分配表不可避免就会遭到破坏。此为暴冲的根本原因其中之一。之所以说“其中之一”,是因为堆栈溢出仅仅是损坏任务分配表的其中一个原因,别的还有许多可能性并没有被Barr在法庭上深入解释。而且任务分配表的损坏也仅仅是导致Task死亡的原因之一。 顺便提一句,2005年的凯美瑞的这部分供应商是电装,没有搭载堆栈实时监测功能——溢出了也不知道。同年的卡罗拉却搭载了,因为供应商是通用。 到这里我小结一下,串链子。左边是原因,右边是后果。 堆栈溢出→(可能导致)→任务分配表被改写→(可能导致)→Task X死亡→(可能导致)→节气门敞开→(导致)→汽车暴冲 必须指出的是,这条链子从最左边一直到Task X死亡,都还算是嵌入式系统的常见故障。虽然程序代码写得不好也许导致更容易出错,客观上丰田并没有特别大的过错。只要处理得当,这些故障都不会导致暴冲。 到此为止还只是前奏而已,接下来我们来看看丰田到底做错了什么。 【第二部分】丰田之罪 上面反复提到,嵌入式系统中内存出错或者程序死亡其实是一种正常现象——至少从Barr的证词可以得出这个结论——现在连我们都知道了,嵌入式工程师肯定比我们更清楚才对。确实,为了使系统正常运行不被错误干扰,一般的做法是设置若干层防护措施(Failsafe),让运行中出现的错误无法轻易突破,得到妥善处理。丰田的工程师自然也懂得这一点。很可惜,他们搞砸了。 上面那条链子应该修改成这样: (防护措施0)→堆栈溢出→(防护措施1)→(可能导致)→任务分配表被改写→(防护措施2)→(可能导致)→Task X死亡→(防护措施3)→(可能导致)→节气门敞开→(防护措施4)→(导致)→汽车暴冲 可以看到,防护措施不可谓不多。只要处理得当,这链条应该是走不通的。现在让我们从左到右看一个小小的内存错误是如何一层层突破防护最终导致汽车暴冲的。 首先防护措施0: 这个其实上面提到了,因为设计缺陷低估了最大占用的存储容量,并且不符合规范地使用了递归,最终可能导致堆栈溢出。 然后到防护措施1: 上面也提到了,任务分配表紧邻堆栈。作为外行我都觉得这是个十分危险的设计——既然堆栈这么容易溢出,好歹应该将任务分配表放远一点啊。当然我是外行,可能实际上比想象中复杂很多。这段Barr的证词中并未特别提到,属于我的个人理解。...

2013-11-06 19:42:05 · 王二

1970年1月1日(00:00:00 GMT)Unix时间戳(Unix Timestamp)

今天在看 Python API 时,看到time模块: The epoch is the point where the time starts. On January 1st of that year, at 0 hours,the “time since the epoch” is zero. For Unix, the epoch is 1970. To find out what the epoch is, look at gmtime(0). 定义time从1970年1月1日开始,忽然想到在JAVA里,Oracle数据库时间也是从1970年1月1日开始计算。 比如java类代码: Date date = new Date(0); System.out.println(date); 打印出来的结果: Thu Jan 01 08:00:00 CST 1970 也是1970年1月1日,实际上时分秒是0点0分0秒(这里打印出来是8点,稍后会作解释)。 为什么这个时间会定义在1970年1月1日这个时候呢? 于是开始了Google,中文网页根本找不到答案。于是试着搜索英文关键字,在 Sun java 论坛总算找到准确的帖子: http://forums.sun.com/thread.jspa?threadID=595140&start=15 其中有一个回复: I suspect that Java was born and raised on a UNIX system....

2013-11-04 20:42:19 · 王二

黑莓bb微信 2.6 for os5

黑莓BB微信2.6 for OS5 !建议使用berrybox或者BBctrl安装。 点这里下载

2013-07-18 17:50:54 · 王二

给县级地方门户网站兄弟的N个建议

这应该是我第三篇关于县级地方门户论坛文章,给那些还在路上奔波的网友几点建议,还包括运营! 一、域名选择! 首先说明,由于是县级地方门户,你首先要考虑的是网民的水平确实不高,大部分的网民对域名还限制在.com这个阶段,至于 la,cc这样的后缀,对于他们来说,还前卫了点,也不方便记忆,所以我首先给站长的建议是:首选.com。理由:中国网民上网的域名初步认识,还来源于 163.com,sina.com,sohu.com,所以县级网民还只记得.com,其余对于他们来说还太陌生了点!如果你不相信我的话,你可以到街上去做个测试,你问问网站地址的后缀是什么,80%的人都会回答.com. 另外,在域名注册的时候,单纯的地名拼音已经注册不到,那么首选的是缩写加数字,缩写可以是地名缩写,数字最好是区号,本人不太赞成用邮编作为域名,等你做大了你就知道,看上去就是一个游击队,散打队!也许每个站长开始都是小打小闹,想顺便弄点小钱,等你不经意开始赚钱的时候,你才发现你的域名很有问题!顺便啰嗦下,不要轻易换域名,网民会适应不过来的!! 不知道有几个地方门户网站的站长发现一个奇怪的形象没有:每天从百度搜索你的论坛名字来的很多!很多站长在纳闷,为什么不直接输入地址而要百度一下来的。以前我也迷惑,后来我去看过几个客户访问我的论坛,才发现他们的首页都是hao123,他们访问我们的论坛习惯了在百度里面输入论坛中文名,然后再点击!所以初期的时候,给每个网民推广如何识记我们的域名地址是非常有必要的,这个大家可以参考下宜宾的论坛,他们已经快6年了,目前还在推广如何识记他们的域名。 二、程序的选择 目前论坛可选的,肯定是pw和DZ!但是我还是建议大家初期尽量选择DZ!理由很简单,DZ占据了中国BBS 60%的市场份额,网民平时搜索到的论坛,基本都是DZ!PW对于做地方门户,确实很多细节可圈可点,但是很多bug也是长期存在无法解决!但是我建议中期才开始转过去!DZ上手很简单,特别是图片,视频这些的编辑器界面,确实DZ优于PW! 目前衡量一个网站优良的一个最最基本的标准,恐怕还是发帖数量和质量。发帖数量从哪来,两个方面:发帖回帖界面和编辑器!至于内容运营,我后面会仔细谈到!但是建议技术不到家的站长,无法独当一面的站长,选择PW!pw的技术服务绝对一流,我现在的网站还是直接给了PW客服ftp账号密码,管理员账号密码,有什么问题,直接发过去,他们等会就给发来:处理好了!PW服务那是耿耿的! 三、界面 地方门户论坛,我建议初期,至少在初期的2年内,应该保持一个纯论坛,不应该增加门户!让网民进入你的网站,直接就可以发帖回帖,而不是要去门户寻找入口界面!单纯的论坛最大的好处就是入口一目了然,我需要什么,我可以做什么,我需要怎么做,明明白白! 那么为什么到了中期又要参加门户了呢?增加门户主要是为了把优秀的帖子第一时间展示在网民的眼球下!因为运行了很长的时间,帖子积累到了一定的数量,很多优秀的帖子已经无法第一时间展示出来,同时由于板块的增加,目标人群已经开始固定,比如有的人每天只来看本地新闻,有的人每天只来看娱乐新闻,有的人每天到处转转,那么我们只有把优秀的内裤翻出口全部穿在外面,才像个超人! 网站初期,没有必要在美工上花费很多时间,很多站长一天到晚都在修改风格,都在做插件,很NB吗?有P用!简单素净应该是第一的追求,而不是去一味的模仿!很多地方门户站长喜欢19lou风格,喜欢天一的风格,但是你为什么喜欢,你真的知道吗?19lou为什么设置为那个样子,有什么好处,对盈利有什么优化的地方你想过吗?不要以为做了一个19lou风格,你就可以和19lou相提并论,其实你差的老远!风格美不美,网民并不关心,那只是你站长一个人自我陶醉自我欣赏的玩意,好比意淫一个道理!所以我建议站长第三点:入口简单,界面简单素净! 四、内容 地方门户都在说内容为王!但是有很少站长给你们讲内容怎么来,怎么做内容,今天给大家讲讲! 内容来自于网友的自发提供,但是这些东西都是很少的一部分,想留住人,想吸引更多的人,必须要网站自己要提供海量的信息!地方门户,最热闹的,肯定是本地新闻,本地新闻怎么来?靠网友自己爆料,数量不多!怎么办?你需要主动出击:自己每天保证更新几天最新的新闻,比如车祸啊,吵架啊,都可以爆料进去!如果人手不够怎么办?你可以在每个乡镇,设置一个信息联络员,有什么小道消息,立马爆料给你,然后你再根据爆料的简单说明丰满下就可以了!本地新闻最吃香的就是图文结合,特别是车祸类的,文字说明都是苍白无力的!那么信息联络员涉及一个费用的问题,但是不太建议各位给money,你可以经常请他喝酒吃饭,年底顺便一个小红包!本来这些对于他来说也是爱好,不会影响他的正常生活!我自己的论坛是:版主以上管理人员,包括信息联络员,网友聚会一律由论坛买单!这样可以在一定程度上收买人心!但是最凶狠的一招还是给大家推荐帮助你的管理人员解决实际的一些问题:因为你的论坛做到了一定的影响力,你完全有能力帮助他们解决他们自己无法解决的问题。比如我的论坛,有几个版主的儿子6岁了还没有上户口,最后我知道了,给公安局说了,公安局直接给他们办了!他们非常感激!情感投资无非为你要带来的是本地的最新资讯,最快的小道消息!" 别的论坛的热点,转过来,把地名换为本地的,然后加以引导,增加讨论的话题性!建议大家经常参考本地门户话题网站:化龙巷、厦门小鱼、合肥论坛、天一论坛、昆山论坛、眉山人论坛。 比如化龙巷有个帖子说:建议汽车司机别开远灯,为了市民安全。这样的话题完全可以转过来,换为自己城市的地址就可以了! 互联网的热点,焦点引导,最后的目的是要把这个话题引导到我们身边来!比如前段时间说泸州有小孩打预防针死人的问题,完全可以就这个话题,让大家讨论下,现在我们这个县城预防针是否安全,大家有什么担心的,或者有什么东西对政府的建议的,这样话题性就出来了. 如果你有钱,你完全可以请一个家伙,每天弄个自行车在城区,背个相机到处转,看到有什么新奇的东西都可以拍摄和下来,然后晚上全部整理出来;当然发布的时候不要用同一账号发布,尽量多用几个账号来发,因为没有人喜欢一个版面都是一个家伙发的,那样显的很boring! 五、运营 很多站长不知道什么叫 运营,说白了就是如何把人气转化为现金流!在运营里面,很重要的一点是:首先要给网友表现出,你这是一个很火爆的论坛,不是一个僵尸站!怎么办?马甲!比如一个话题,你完全可以用50个左右的马甲进行回复炒作,帖子回复越多,新人参与讨论越多!别人一看也很热闹,慢慢就热闹起来了!那么对于一个论坛来说,网站编辑是非常有必要的!网站编辑做什么?内容的收集和内容的炒作以及引导网民参与讨论! 六、转化现金流 非常重要:很多站长,根本没有什么人气的时候,就开始挂广告!甚至很多是假广告,这个非常错误!与其根本没有收入自欺欺人,不如把广告位置空白起!很多站长,初期就是:广告位招商!你的论坛广告位置越多,招租越多,说明你的人气不好,说明你的生意很臭,更没有人愿意来做广告!在地方门户,从众心理非常现实,某个商家进来了,同行的都想进来!所以给大家一个无比重要的建议:头几个广告,一定要做本地知名度最高的广告,小广告建议不接!因为网络广告的效果,不决定于你的论坛流量,你的影响力,其实是商家本身的品牌!品牌越好,生意越好,你给他做了广告,他的期望值比小商家小的多,小商家太现实了,今天做了广告,希望明天有效果! 舆情:地方门户网站,基本都没有新闻的资质,但是这不重要,有人的地方,有话题讨论的地方,有议论的地方,就有影响力,就是舆情!通过舆情和政府很多部门建议良好的关系,首先别问要钱,要钱之前你先要免费给他们他们想要的,政府无非要政绩,而你要的只是money!比如某个部门有负面帖子,第一时间联系他们,叫他们出来解释,有的时候甚至你可以帮他们写!你帮助他们多了,他们都懂的,网媒时代,大家都明白!你问到要钱,他们很不舒服;他们主动给你钱,他们还很愉快,感觉你收了他们的钱,也不欠人情了,反正是***的钱,也不是那个当官的自己掏腰包!再说说舆情,比如我收了某个单位的钱,不代表我可以给你删除帖子,收了钱的单位,他一打电话你就删除帖子,你在他们心理的分量就轻了很多,自然也不重视你,他们感觉你就是他们喂得狗,但是不删除吧,好像也不近人情,收了钱不办事也说不过去啊,所以我建议:别删除帖子,直接喊他们解释,然后你用马甲账号疯狂的表扬,正面引导大家的回复! 硬广告:本人不太赞成在你网站还不成气候的时候,出去拉广告!首先你的对话成本很高,因为你首先要给别人解释你是做什么的,你们有什么优势,你可以给商家带来什么,如果你的影响力很大了,以上的都可以直接跳过,直接谈钱和做的方式!因为商家每天也在关注你的论坛,也知道这个地方有什么他需要的,可以给他提供什么,对话的落差已经降低到了最小!同时,初期出去拉广告,都是芝麻广告,也没有什么影响力!长久下去,大家都看见论坛都是本地的小商家,也会默认为你的论坛就是一个小杂牌!所以在CCTV做广告和本地的户外广告效果是不一样的!在CCTV能够做广告,本身代表商家的一种实力,一个品牌,CCTV为这个品牌增加了美誉度,商品同时也衬托了CCTV的权威性,这种关系非常重要! 商家联盟:县级门户,最好不要做商家联盟!如果你确实要做,建议给商家免费,给会员卡免费!但是可以推荐商家店铺界面给大家:就是把这个城市的所有的2年以上商家的店铺,电话,地址,经营什么,这些东西完全放在一个页面,做成一个导航的形式!我之所以说2年以上是因为:很多短寿的铺子就不要登记了,今后有些小麻烦,会员找不到具体位置,要骂娘的!那么这个导航的好处是,要培养当地人的习惯,今后要找那个铺子的电话,首先上你的论坛,首先给商家免费广告,然后再针对商家的具体要求提供有偿增值服务!这个,大家可以学习下360:免费吸引用户,有偿提供增值服务,这个其实也是DZ、Pw的模式! 这个文章,终于写完了!想了很久,觉得有必要给大家分享下,希望各位站长赚钱!有机会可以见面交流!谢谢大家!以上文字来源本人全部心得,完全无保留! 文章转自:http://news.im286.com/webmaster/jingyan/3523.shtml

2013-05-18 09:33:28 · 王二

黑莓微信内测版问题总结及开发建议

黑莓微信内测版本问题总结 微信ID:xxxx QQ:xxx 机型:9000at&t 网络环境:笔记本创建的wifi热点 OS版本:5.0.0 1067 一、手机通讯录和QQ好友加载缓慢问题 手机通讯录有259个好友 QQ好友:594个 Loading过程中一直漏斗 QQ联系人:用时一分多钟 如图一 (图一) 二、通讯录选择好友秒退 首次登录点击(图二)选项时,程序秒退。后边使用过程中出现一次秒退,也是用轨迹球点击recommend选项时出现。 (图二) 三、短信界面提示问题 微信消息在短信有界面提示、有内容摘要,但是没有微信图标,打开以后是发送邮件发送的界面,也看不到消息内容(如图四)。 (图四)在短信界面打开微信消息只是一个邮件编写页面、看不到任何信息 四、轨迹球操作问题 好多操作必须按下轨迹球才能实现,操作比较不方便,可能会大大缩短轨迹球的使用寿命,把确认操作改为回车键或者空格可能会好点。 五、头像修改问题 修改头像的时候不能改变图片大小 (图五) 六、不能自动联网问题 网络断开以后再连上,微信不会自动连接网络,必须退出重新启动程序才可以正常使用。 七、不能显示某些公众帐号发来的消息,比如冷笑话精选。 八、聊天界面,消息窗口出现重叠现象。 九、用9000给朋友发语音,语音播放完以后,他的微信就会无响应,弹出一个窗口问是强行关闭还是等待,然后就强退了。 这个问题比较想不通啊,听起来很好笑,很没道理,但是作了好多测试,换个其他手机给他发语音就不会出现这情况,只要用9000发就立马出现问题。 对方手机型号:魅族M9 微信版本:4.2 系统:andriod 2.3.02 9345 十、功能方面的建议 不知道公测版会不会加上查找附近好友、漂流瓶等必备功能,感觉缺了这些就不像微信了,只能通过QQ好友、手机联系人、查找ID添加好友,失去了用微信的乐趣。 以上为目前在黑莓微信内测版使用过程中碰到的问题和一些建议,希望对微信team下一步的开发有所帮助。感谢微信team的努力、继续期待微信team的杰作。 莓粉:晦涩sunshine https://w.toomore.us 微信内测第一版,下载请猛击这里

2012-10-30 21:45:32 · 王二

360安全卫士卸载过程

好久没更新博客了,关注网上的事也少了,听说方舟子又打假了,凑热闹上来看看。掐架过程就不赘述了,百度一下“360 方舟子” 自己了解。感觉不爽就想把360安全卫士给卸了。(360产品里头就只用360安全卫士清理下垃圾文件、别无他用,360浏览器没用过不做评价。) 卸载善后过程如下: 按正常程序: 一、运行uninstall 卸载完成 二、卸载完成后手动删除残余文件,结果如下图: 操作无法完成,因为文件已经在QQ2012中打开。 文件说明:360安全卫士 360木马云查杀查询模块 公司:360.cn 有两个疑问: 1、为什么360的文件会在QQ中打开?!(而且是卸载以后) 2、云查杀查询模块在QQ中打开,在查询什么?! 三、为顺利删除残余文件,用unlocker 1.9.0 解除锁定进程 锁定的进程如下图: 当时运行的程序都有360的痕迹,这时是在扫描什么?!“云”查询什么?! 上网痕迹?!QQ数据包?!explore?! 四、解锁后各种程序相继报错关闭,由于没料到会出现这种情况,只用系统自带截图工具截到了QQ报错的界面(一直用QQ截图工具,QQ报错了所以没赶得上截其他程序报错关闭的图)。 两个疑问: 1、没了360,QQ就不能正常运行吗?! 2、360在QQ运行过程中充当什么角色?! 五、查看注册表、删除失效注册表 仅存的好感没多少了…

2012-10-13 00:24:27 · 王二

面试报告,诚实的孩纸桑不起啊

面试报告 第一步 人事经理: 1、填写个人简历 2、了解个人基本信息:老家在哪儿、有无女朋友、住哪儿、是否长期在西安发展、期望薪资(答2500) 3、教育、培训及工作履历:在学校有没有参加社团、担任什么职位;以前工作单位的大概情况 4、简单介绍业务公司状况,有两家公司,派威做电信、联通、移动等系统集成业务,另一家公司做电信增值业务。 5、公司制度、福利待遇: 双休、早9:00 下午5:30  中午12:00-1:30午饭 逢节福利例如端午一人1000RMB、过年假期长(因为大部分为外地员工)。 转正后交三险两金 6、薪资待遇:试用期低于2500 7、还有什么需要了解:    问:公司业务范围主要在陕西范围内吗?     是的    问:公司主要用到哪些厂商的设备?         不清楚、稍后问技术经理       问:对于不太熟悉的技术公司会做培训吗?   公司前两个月会提供培训 每周五下午 第二步 技术经理: 1、看简历   手上有张纸    精通TCP/IP协议、RIP....   ?          是    如果是门外汉知道这是什么东西吗?     ...   可以解释    什么是RIP?                         路由信息协议    什么是OSPF?                       开放式最短路径优先协议    什么是BGP?                        边界网关协议         什么时候毕业的?                     今年    那就是应届毕业生、没相关经验?       对    你应聘的是哪个职位?                 技术    了解电子、电路知识吗?               不了解    有没有项目经验?                     没有    写过项目方案吗?                     毕业设计就是这个    描述一下                             校园网的组建、设备选型、路由协议的选择.... 2、谈一下你技术方面的综合素质               哪方面最熟悉                         网络路由交换、VPN    还有呢?                             网站建设、推广、优化    自己会做网站吗?                     写代码不熟,建站、推广、优化流程很熟悉    做过网站吗?                         现在手上有几个网站    还有啥特长?                            Linux  Windows Server 基本服务的配置    还有呢?尽量多说点便于我们招聘          嗯 没了    好!那就这样吧。有结果了电话通知你      好的  

2012-08-30 13:59:08 · 王二

点点网与wordpress横向测评

一般互联网爱好者都有自己的博客,即使不常耕耘也有所耳闻,并且有相当一大部分网民曾经是博客产品的忠实或者半忠实用户。今天我们就选取其中两个比较有代表意义的,一个是传统博客服务占有率最大的 wordpress,一个是被业内称为传统博客升级的轻博客代表点点网,两者来做一个横向对比评测。 首先我们先来简单了解一下这两个博客工具。点点网是一个轻博客平台,让用户能简单快速地发布文字、图片、视频等各种格式内容,通过不同的风格展示,来分享用户兴趣或体现用户的性格,而近期推出的模板开发平台,也将其博客开放平台的理念进一步延伸,而 WordPress 是一种使用 PHP 语言开发博客平台的免费开源项目,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的网志。在以上短短一句话里,我们就会发现很多有意思的词,比方轻博客、 PHP 、服务器等等。再接下去的内容中,笔者会逐一为您解释这些词在比较这两个博客平台的特点中的发挥的作用。 产品特点 从概述中我们不难看出,点点网属于一个轻博客平台而 Wordpress 是一个开源的项目。什么叫做轻博客?轻博客是传统博客的升级,将传统多种格式内容发布简单化,加入标签体系,用户因兴趣而聚合具有社交功能,提供完全开放的博客平台,并融入移动互联网的功能属性,以期每个人都能展现自己所在不同领域的自媒体价值。以点点网为例,其最大的特点可以用四个词概括简单、开放、社交、移动。 第一简单,点点网并没有一般传统博客提供的相册,视频、音乐盒等功能,而是将这些繁琐的分类统统抛开,将文字、图片、声音、影像、链接这五种格式内容统一由博文的形式发布。而如果要用简单来形容 Wordpress ,那是相当的勉强。众所周知 wordpress 是一个开源搭建独立博客平台的开放源码。说白了,就是给你一套程序,自己去改善,很难想象一个没有计算机基础,而要能够安装 web 服务器, PHP ,数据库以及搞定这之间的配置是有多难。所以对于初学者来说,从零开始让 wordpress 跑起来绝对不是一个愉快的经历。而在点点网,只需要邮箱、密码注册一个账号就可以开始自己的独立博客平台搭建。 第二开放,点点网自定义 HTML,CSS,Javascript 代码和提供各类精美模板的功能相结合,在做到保证了用户在网站操作的便捷性与易用性的同时最大程度的开放了可修改的模块,让用户能够更多地关注于创作的同时,也不失个性的表现。而 wordpress 就是一个将开放做到极致的博客工具,免费的开源代码,如果你有足够的 php 知识,甚至可以用 wordpress 搭建一个小型的 B2C 网店。当然,是需要你有足够的开发,数据库,网络知识的情况下,而这些条件对于我们一般的用户而言是没有的。所以 wordpress 的开放在实际意义上是具有一定局限性的。当然,如果你有一点皮毛的知识的话,搭了博客之后, wordpress 也提供了很多精美的免费模板和众多插件以供选择。 第三社交,关于这一点 wordpress 可以说是完败。但是 wordpress 败的有点理直气壮,因为 wordpress 建立的博客是一个很传统意义上的独立博客,它的作用更倾向于表达博主想表达的内容,于是乎有关于社交的部分就只存在与评论与交换友情链接这两个通用功能了。而点点网是一个轻博客平台,它的用户群组成了一个强大社会网络,关注,喜欢、订阅,转载,推送等等一系列的功能都可以为用户提供更好社交的服务。 第四移动,点点网的强大团队提供了各种移动客户端的产品支持,最近看到点点网新版的 iPhone 客户端,采用了目前比较前卫的侧滑手势 app 设计方式,只需要输入点点网的账号,就可以随心所欲发布文章,图片,和视频,高质量大图和多图混排的展示通过嵌套的方式,用户体验完全不像是一个客户端,而是直接全屏浏览图片,非常流畅易用。而相比之下, wordpress 因为只是一个开源工具,那么这些事就都需要用户自己来做,进行一番繁琐的配置后才能和 wordpress 的服务器相连接。 使用成本 关于两个产品的使用成本比较,我们分成两部分,脑力成本,经济成本。 首先关于脑力成本,因为点点网是有强大专业的技术与运营团队在做支撑。所以,基本上用户除了需要关注自己博客的内容与喜欢的内容之外,不需要为其他的事去费心。而 wordpress 就不一样了,因为是独立的博客平台,所有的部分都需要亲力亲为。比方博客的安全问题,数据库的备份,博客运营,流量导入,包括屏蔽垃圾的评论都需要自己一点点的做,当然 wordpress 提供了很多这方面的插件。由于是开源的代码,这些插件的稳定性,安全性,易用性都是有待考究的。 其次关于经济成本,点点网目前是没有任何收费的项目于服务的,所以基本上是零花费。而 wordpress ,需要自己的独立域名,需要服务器,当然笔者认为相当一大部分用户应该只需购买服务器中的一部分空间,但这仍是一笔不小的开销。以域名与普遍大小的博客空间为例, 100/ 年的域名费, 500/ 年的服务器空间租用费,一年 600 的开销对于一个普通用户来说一个值得商榷的数字。当然这还是只考虑一年的,如果你是一个长期写博客的博主,以下图片能更好的得出使用一个 wordpress 的博客成本,数字单位为元。...

2012-08-25 17:46:20 · 王二

管理距离AD值(Administrative Distance)

管理距离 英文:administrative distance 缩写:AD 管理距离是指一种路由协议的路由可信度。每一种路由协议按可靠性从高到低,依次分配一个信任等级,这个信任等级就叫管理距离。 为什么要出现管理距离这个技术呢? 在自治系统内部,如RIP协议是根据路径传递的跳数来决定路径长短也就是传输距离,而像EIGRP协议是根据路径传输中的带宽和延迟来 决定路径开销从而体现传输距离的。这是两种不同单位的度量值,我们没法进行比较。为了方便比较,我们定义了管理距离。这样我们就可 以统一单位从而衡量不同协议的路径开销从而选出最优路径。正常情况下,管理距离越小,它的优先级就越高,也就是可信度越高。 对于两种不同的路由协议到一个目的地的路由信息,路由器首先根据管理距离决定相信哪一个协议。 AD值越低,则它的优先级越高。 一个管理距离是一个从0——255的整数值,0是最可信赖的,而255则意味着不会有业务量通过这个路由。 思科路由器默认情况下: 路由源 AD 直连接口 0 静态路由 1 EIGRP汇总路由 5 EBGP 20 EIGRP 90 IGRP 100 OSPF 110 IS-IS 115 RIP(v1&v2) 120 EGP 140 ODR 160 ExEIGRP (外部EIGRP) 170 IBGP 200 未知 255 华为路由器 默认情况下: 路由源 AD 直连路由 0 静态路由 60 IGRP 80 RIP 110 OSPF 150 BGP 170 修改管理距离命令 no distancedistance{ ip-address |wildcard | [access-list-number ] } distanceweight{ ip-address |wildcard | [ access-list-number ] }

2012-08-12 23:02:28 · 王二

思科在中国的总代及金牌、银牌代理商

思科中国总代共四家: 神州数码科技发展公司 (优先总代) 北京晓通电子有限公司 英迈国际(中国)有限公司 联强国际(仅思科精睿) 金牌共四十六家: 万达信息股份有限公司 SHANGHAI WONDERS INFORMATION CO.,LTD. 上海华讯网络系统有限公司 ECCOM Network System Ltd. 上海金陵时威科技发展股份有限公司 Shanghai Shiwei Network SystemEngineering Co., Ltd. 东软软件股份有限公司 Shenyang Neu-Alpine Software Co., Ltd. 中国惠普有限公司 China Hewlett-Packard Co., Ltd. (Beijing Head Office) 中盈优创资讯科技有限公司 Unihub China Information 中联电脑(国际)有限公司 VANDA COMPUTER & EQUIPMENT CO., LTD. 云南南天电子信息产业股份有限公司 YUNNAN NANTIAN ELECTRONICINFORMATION CO., LTD 亚信科技(中国)有限公司 AsiaInfo Technologies (China), Inc. 亿阳信通股份有限公司 Bright Oceans Inter-TelecomCorporation 北京先进数通信息技术有限公司 ADVANCED DIGITAL TECHNOLOGYCOMPANY LTD 北京合力金桥系统集成技术有限公司 Beijing Hollybridge Co,....

2012-07-19 22:54:27 · 王二