Wednesday, March 29, 2006

RSS阅读排序与过滤的7种方式

RSS无限,而人的注意力有限,所以如何将我们有限的注意力更有效地投入到无限的RSS阅读中去,这就成为摆在我们面前的课题。

象keso或者是Scoble这样的牛人,能够每天跟踪上千个RSS,不是一般人所能够做到的,所以大部份人都会象老白这样尽量控制着,轻易不订阅,我也在不久前对RSS进行了一次清理,删掉了上百条RSS,这一两个月以来,似乎也没有损失什么重要消息。

但依靠人的主动控制始终不是解决之道,还是需要依靠技术来帮助我们过滤信息,简单总结一下现在已经有的几种方式。

1、靠评价:老白昨天提出一个想法,靠打分来进行评价,并定期进行末位淘汰。在阅读器端对blog文章进行评价,我似乎在哪个阅读器中见过,想不起来了,也算一种吧。不过这种方式对读者而言,如果每篇文章都需要评价,那工作量可就大了。

2、靠阅读频率统计:比如GreatNews中的最不常访问的频道统计,可以了解你一段时间以来阅读最少的RSS供你决策是否删除。当然,GreatNews还可以统计长时间未更新的RSS,也可作为删除的依据。

3、注意程度统计:FeedDemon的新版就包含了注意力报告(Attention Report)的功能,可以根据你的阅读行为中的几个因素,包括点击,但还考虑了标记文章、关键词监控等因素,进行计算后得出你对Feed阅读的注意力报告。

4、按照注意程度排序:NetNewswire这个Mac平台上的阅读器,也在作与FeedDemon类似的事,根据一些因素进行计算后,可以将Feed按照你的注意程度进行排序,由于我没有使用过这个阅读器,我不知道它的排序是以Feed为基础还是可以打乱所有Feed的内容进行综合的排序。Rojo最近推出的新功能“按相关性排序阅读”就是将你订阅的所有RSS的未读内容打乱根据tag、其他用户的支持程度等因素进行排序。

5、关键字过滤:关键字过滤可以分为两种,一种是当关键字符合的时候,就通知你,这种比较常见,其实和在Technorati设置一个Watchlist差不多效果;另一种是当关键字符合时,过滤掉这篇文章。比如最近新出来的FeedRinse就是提供这个服务的,不过其实GreatNews早就提供了这个功能,可以设置关键字将文章自动标记为已读。

6、根据反向链接数等因素对内容进行排序:其实就是个性化的Memeorandum,目前比较典型的是TailrankMegite,虽然现在对中文的处理还很不理想。

7、根据阅读行为进行智能排序:Findory似乎是目前这个领域的领先者,通过对你阅读行为及点击的分析,对内容进行实时的智能排序,将你最关心的内容排到前面。

其中1、2、3和5相对比较简单一些,而4、6和7这三种方法就带有比较多的智能化因素,我想也会是未来发展的方向。

除了这7种方法之外,利用Attention.xml标准也会是未来比较热点的话题,而信息的过滤和聚合除了本文中基于RSS阅读之外,还有很多其他的方式,不过这都是另外的话题了,以后再专门谈这些吧。

Monday, March 27, 2006

谢文:Web2.0与社区(PPT部分与讲话正文)

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

查看更多精彩图片

[1]WEB2.0 与社区

首先感谢主办方华人英才网的邀请。我现在的Title是待业老年,也没有名片。很多人给我换名片,我也很尴尬。今天主持人没有选好,老是挑逗群众斗群众,其实不用挑逗我的敌人就很多了,也不在乎多一两个。

这个题目看起来好象很好讲,现在听大家前面讲的,又觉得不好讲。前面那么多老王都在卖瓜,我现在也没有什么瓜可以卖,只能干点砸瓜摊的事,一把锤子叫Web2.0,一把锤子叫社区。关于什么是Web2.0现在大家都有自己的看法,我有我自己的版本,网上都有,爱同意不同意,我只按照我的版本理解。说简单点,Web2.0是互联网上03年以后出现了很多大家熟悉的模式不一样的事物,经过若教授、专家归纳总结,最后说原来的东西我们熟,这个东西我们没法归纳,就起个名叫Web2.01.0的儿子。我现在归纳最简单的说法是1.0关心的是事,2.0关心的是人1.0开的是店,2.0建的是家,这是本质的区别。往下推延后面的东西都是随着走的。社区早已有之,有的公司不叫ChinaBBS吗?BBS就是我们原来熟悉的社区,乃至于现在说社区还以为是BBSBBS1.0的社区,1.0的社区就是按照某类主题大家聚在一起,谁聚谁散不固定,高兴来就来,不高兴就走。2.0不是这样的,2.0是先建家,再展开。

下面按照我的PPT来讲。

假定2.0是个概念,社区是个概念,其中一小部分也是重合的,就是Web2.0社区。正像刚才说的社区的发展不一定Web2.0平台,有很多不是Web2.0的社区,包括现在被投资的有人自己说是2.0,我刚才听ChinaBBS邓总好像是说无所谓,但是她抓的是社区,最近改成大旗了,我不知道什么意思,是打奇虎的意思还是原来的BBS不够2.0?反正是改了。Web2.0更重要的更容易混淆的是Web2.0有很多“武器”,有很多新的技术,但是很多东西都不一定形成社区或者依托社区发展。我要说的,或者我个人坚持的个人喜欢的是“成功的Web2.0网站必然是以社区的形式发展”。这句话跟我刚才说的什么是Web2.0是联系的。现在世界上有没有成功的Web2.0社区?我说的成功是风险投资家承认的那种成功上了纳斯达克,股价只涨不跌,大家有几十倍的回报那才叫成功。至于说活着,排名多少?这跟成功都没有必然关系。

我认为的Web2.0社 区也就是说有可能在道理上、理论上、基础上有可能成功的有三个基本元素,三个基本层次、三个基本舞台。“个人、群体、社区”。有人叫群体为圈子也未尝不 可,群体比圈子范围要广一些。他们三者关系是真实全面的个人,形成丰富多彩的群体,丰富多彩的群体产生充满活力的社区。很多人现在也有找我聊天的,我也看 了他们的网站,第一关在我写的第一个字就没过关,“真实”,现在有多少网站你的注册用户注册单上填的是真名实姓?哪怕是真实的性别和年龄?更不用说住址、爱好、性取向等等。你们笑什么?看看My space ,性别栏里是男、女、不男不女。没有真实的人后面就不用谈了,我们都是做网站的,我们都有一个“怕”。你让人家填真实的,人家就不注册了,不注册怎么跟VC说注册用户多少多少?所以就降标准,就要一个Email就可以了真的假也不证明,反正注册完了往那一堆。我看到最深的感触就是有的公司自己说有4亿用户的,中国一共1亿网民你就敢号称自己有4亿用户?没有真实的个人,你的基本群众力量和你是若即若离,或者是假面目示人,这样没有成功的希望。

还有另外一个关键词是全面。说来可怜,我昨天才认真注册MY SPACE,真的要写完注册程序需要半个小时以上我们大部分网站都说我的注册简单只需10秒钟,这就是差别。只有真实全面的人,才可以在真实基础上面建立丰富多彩的群体、圈子、俱乐部等等,还有一个是里面可以搞很多活动,这些活动对运营商来说将来是不是可以赚钱那还是后话,首先有没有本事建立多主题的、人群这一级、朋友这一级的层面,然后能不能合并同类项,100个汽车圈子形成一个汽车社区,1000个音乐圈子形成一个音乐社区。这么多多主题的,全面的社区合起来形成一个松散的网络世界,这个网络世界越大越好这就是Web2.0的本意,Web2.0有一个理论叫做“长尾”理论。 “长尾”就是多中心,异常的活跃。

Web2.0社区的3大支柱——信息生活、社会生活、物质生活。

信息生活无非就是发布,比如博客、阅读、交流、收集、查询、各种流媒体形式等等。不管怎么说都是信息,满足人们的信息需求。这一块大家很少有反对的,很多人把它就当作Web2.0的核心、主流、关键等等。我觉得至少从经验上总结这块生活Web1.0已经够了,1.0已经满足了信息生活百分之七、八十的需求了,2.0只能做补充。现在真正缺少的是社会生活和物质生活,是信息生活,社会生活和物质生活的互动,这才是20的挑战。社会生活必须超出个人以外,是必须跟另外一群人打交道,朋友的查询、交往、朋友圈的发起、组织、管理等等这个层次。我知道这个层次很少被认为有价值,或者说其中的含金量很少被人透彻的理解。我原来是学社会学的,所以我对这块的含金量异乎寻常地重视,它跟我们熟知的dating找朋友不是一个概念,dating只是我们社会生活很重要但不是全部。

第三个是物质生活,物质生活至少现在已经显露在网上的,有爱好类、读书、吃饭、旅游、收藏这一类的;还有活动类的,今天这个会从华人英才网的角度就是一种活动类的,不是哪个组织派来的,我们大家都是为一个主题有兴趣来的;还有交易,交易也是广义的含义。

下面就是Web2.0的另外一个核心,Web2.0的各个平台全部活动的最后都指向一个字:“服务”。服务可以称为客户增值服务、广告服务、交易服务。

所以我个人对Web2.0的商业模式从来没有产生过疑问,但是我有一些前提,别管你做什么,要想做到持续成长的目标,不在于目标是什么,在于目标怎么能够达到,需要什么条件。

(图)刚才三样东西合起来是Web2.0社区魔方,这个魔方包括个人、群体、社区,个人生活、社会生活、物质生活,最后是真实服务产生收入的三样。说到头无非是大家玩儿这个魔方的出发点、重点不一样,但是逃不出这个范围。

中国Web2.0社区成功的必要条件。这是我做10年互联网屡战屡败、屡败屡战的总结,包括排队的顺序都是我想了半天的:

首先是现代规范的企业架构和游戏规则。我个人就栽在这个上面,我做了10年换了这么多公司,没有不赢利的没有不创新的没有不是我从事的那个行业的第一的,但是现在我连名片都拿不出的。这个是很难的,不是红杉给了你钱就解决了的,是底层的、心理的、文化的那些东西。不然到一定的时候搞死公司的就是这个。最近找我的人很多,没有一个答应的,就顾虑在这儿。

第二个是清晰完整的战略。现在我发现不管VC也好,还是创业者本身,多数都说反正说不清楚,干起来再说。反正有头有脸了,什么战略问题收入问题就自然而然的解决了。我不承认,1.0时代这个理论成立,因为大家都没经验,只好摸着石头过河,无可奈何。中国商业化互联网运作已经10年了,如果还没有经验可寻或者说仍然不会总结经验寻找自己的市场定位、思路,你只能赖自己。这一条多数公司,比如我去过一个流媒体公司,都拿了300美圆投资了,第二轮要拿1000万,马上要签了,我说你有流媒体经营权吗?有商业模式吗?结果没有。

第三是有经验有能力的团队。我2000年参加过中国互联网CEO大会,1000多个CEO90%是自己人生第一个工作,没有任何组织、管理、领导、经营的经验。现在又来了,当然这一轮VC比上一轮VC可能还大胆,很多团队平均年24岁、25岁,真敢给钱,大家又在共同的犯错误,再过一两年我们又要走一次低潮,VC们又要共同的总结经验。我还是坚持在1.0没有任何建树的人,没有任何成功或者失败的经验,上手就做Web2.0是加倍失败的概率。

1000万美元以上的投资也是我本人再出来的底线。因为我跟大家不一样,你们25岁,我50岁了。我认定Web2.0的创业比Web1.0要难很多。有的人拿百、八十万人民币就敢上,上去你就会失眠、没食欲,没性欲,那时候VC说你值10万,你就值10万,VC投这样的公司也是找死。所以我真的劝VC要么不投,要投就投大的。现在犯错误的空间非常有限,如果还有一些大学没毕业就想创业的,我劝大家先毕业,找一个正经的网络公司干三年,再思考是不是该创业的问题。为什么要1000万和下个理由是相关的,我认为Web2.0的平台是什么样子现在还在摸索,可能千奇百怪。一个很好的参照系是网络游戏。我们现在不是做的网络游戏,我们做是“真人秀”,对平台的要求极高,技术含量极高。都说Web2.0没技术门槛,指的是现在的这些“破玩意”,什么BlogRSS等等,真的要做起来,我是认真算过的,算到人民币以元为单位仔细算过。基于十年的经验,如果要我做,我跟VC300人干三年,100人干十年。如果现在您有10个人的团队,成熟就是下个世纪的事了。而且这个事情一旦做坏了,下一步就很难了。改造一个平台比建一个新平台还要难。ChinaBBS最近连名字都改了,我估计他们正处在改造的痛苦中。猫扑最老实,猫扑自己的栏目就叫大杂烩,它有那么多平台,那么多产品,整合将是个成本高昂,过程痛苦的事情。所以Web2.0有没有先胡打乱战就能成功的反例?可能有人认为有,但是要算最大概率的话我主张的玩法是最大的成功概率。大家别管现在哪个公司冲到几十名了,都是假象,三年以后再说。

现在谈谈20成功的先行指标。这是外在表现,因为内在的大家可以各说各话,现在有一个Alexa02我们介绍给大家当时以为是帮大家一把,现在看来负面效果比正面效果还大,这是我理想中认为有把握的。

(图)前两个是各个网站自己后台注册用户统计可以搞点调研,也许可以大家自己包装。后两个是公开数据,我现在试图做点方法论的分析,今天讲的算是小提纲。

UV大于10000

在坐的肯定有人笑了,这个目标容易呀。Alexa的人均PV大于15,现在认真看了一下我们达到这个指标的正经网站就一个,还不是我们大家熟悉的媒体类的社区类的,就一个是淘宝。上次我给的一个指标4以下不及格,4-6及格,6-8良好,8-10优秀,过10是很棒。现在新浪、搜狐1012,我们自认为是2.0的,被人叫成2.0PV没有过67的,还有很多在34之间。客户人均在线时间这个要自己统计,我大致算了一下,大致一个人1PV时间是1分钟,如果都用视频和音频,PV会吃点亏,因为在线时间是一样的。

我说的就是抛开一切想做什么不谈,如果想挣到有意义的钱起码要做到的。我说2.01.0难,这个指标是我心目中1.0指标的加倍。2.0有两倍的投入才有1.0的效果。

举个例子,真的想找一个中国Web2.0的例子给大家推荐,特想找一个表扬,没找到。

以一个外国网站为例,MYSPCE

导航条:信息生活分为博客和搜索2部分。社会生活为看人、找人、聊天、圈子和邮件。物质生活分为爱好、活动、分类广告三大部分,另外爱好中由于历史有三个热点提到一级导航条了。如果去掉不超过10个,没有主题,全是功能。

看一下MYSPCE它的PV成长有人工的痕迹吗?有推广、市场、买人头技术作弊的痕迹吗?没有。看 它的分类,时尚与风格、食品饮料与酒、嗜好与手工艺品、宠物与动物、娱乐音乐、文化与文化社区、粉丝俱乐部、健康、健身、精神状态、浪漫与两性关系、同性 恋与双性恋、休闲与体育、聚会与活动、夜生活与俱乐部、家庭与家居、宗教与信仰与历史、计算机与网络、学校与校友会、公司与同事、专业组织、国家与地区、 政府与政府。想想我刚才说的真实全面的人,丰富多彩的圈子就是这个意思,你能逃出这个范围的生活不多。这里少的有6000多个圈子,多的100多万,光是圈子,还不是人。

从聊天角度看,吃喝、游戏、体育、电影、电视、爱情、旅游与休假、两性生活、汽车、事业发展、网友、电影制作、计算机与技术、文化与文学、宗教与科学、哲学等等,你们想想最热门的三个主题是什么?我敢保证没有一个人猜对。第一个是音乐,第二个是时政,第三个是交友,第四是两性。这是在美国成为年轻人的天堂的网站。大家不妨回去看看自己的。这是根据统计分类的,是由网友的需求分出来的。

大家一直在讨论MYSPACE,但很多是盲人摸象。有的人摸到耳朵,有人摸到腿。我是为了这次演讲把MYSPACE重新看了一下,拿了一些我认为有用的东西,其实它还有很多东西可以总结。它的UV3万不算太惊人,真正惊人的是PV37。它的收入今年预计不到1亿美元,不知道我看的准不准确。有人敢怀疑它将来不会成长为年收入10亿美元的大公司?我是不怀疑,如果它上市我肯定买它的股票。这就是2.0思维的差别,1.0的思维是企业家思维,2.0CEO思 维应该是一个城市市长的思维。你在建立一座城市。你是管着千百万人的吃喝拉撒睡喜怒哀乐。你在网页上扮演任何角色,没有推荐这个城市哪个明星的博客给你 看。我们的互联网现在把网页首页做的巨长无比,惟恐老百姓不知道看哪个,这是商人的思维不是市长的思维。我最近买了一个域名是“社会引擎”SOCENG,我有一天假如还出来再做的话我就准备做这个。Web2.0做的是社区也罢、社会也罢,做的是社会的推动,不是让你给别人灌输什么,1.0是典型的媒体形态。1.0抓的是共性,2.0尊重的是个性。对你重要不见得对我重要,假如规模化了,谁尊重个性谁就有机会成功。

下面是就我看现在被认为是2.0和自己也说自己是2.0的社区普遍的毛病,如果有VC让我当顾问我愿意说他们的共同毛病大概就是这几个。

第一个是概念混乱。有人拿着比如RSS、比如BLOG就认为抓住了2.0的真谛,开始放大它。我知道有些公司现在钱快烧完了,有困难,看得见的,倒计时。当然有人会玩儿,找一个更傻的把它卖了。也有人说Web2.0的热潮就6个月,晚了就不行了。这种心态怎么行?我虽然年纪很大了总不能只能再活6个月吧,既然喜欢一个事业只有6个月的寿命做它干嘛?投机心态嘛。概念混乱很多体现在从Web1.0Web2.0转型的公司上。也体现在很多原来有一些1.0的资源现在做Web2.0的,把它们硬接起来做很多风马牛不相及的事。还有很多认为把一些容易抄的功能列上就算是Web2.0了,我都认为这是概念上的混乱。

第二个比较严重,品位低下。我不埋怨,也不批评谁搞点黄色的,但是我的确有点担心,就伺候那种人能挣钱?过去的一年中以Web2.0的趋势带来的网络活力起了重要的作用,使中国的网民达到了一个高峰,特别是Blog。但是在我们的从业者一定要小心,这些人来的快惹的事也多,购买力也低。你伺候这些人不能完全不能挣大风险的钱,就跟做游戏虚拟的财产再增值的一样,钻法律的空子灰色地带挣点钱能持久吗?急功近利,尤其是炒做Alexa,这对投资人、职业经理人都不是好事。当然最普遍就是平台单薄,功能大家都有,什么BLOGRSS、圈子等,没有什么有技术门槛的。

中国Web2.0的典型症状:

2.0的瓶装1.0的酒。单一的Web2.0,一个Blog、一个聚合、一个 search、一个交友单一功能没希望。 真实全面的人靠单一的功能是体现不出来的。我觉得在Web2.0阶段就没有垂直的概念,可以有个中心,有个亮点,但一定是全面的。我在和讯拼命的把财经做成大财经,把大财经做成中产阶级,完成个阶段我才敢做2.0,现在还没做完。我希望大家要做就做全面的。

垂直或主题社区。

功能罗列却没有深度整合。只要网易、QQ一旦想做Web2.0没有一个人能打得过,专门做20岁左右小孩的,人家有规模了。

内容庞杂趣味低级。

这 个不用说了。比较共同的是缺少服务没有核心技术。我不知道一天发好几百条的乱七八糟的信息,什么感情、什么两性,最后想落在什么服务上?你总不能开妓院 吧?搞不明白。可以说初级阶段的时候人群少可以赚点流量,赚点广告,可是想想,象样的产品会放在这个上面做广告吗?最多是安全套、伟哥?看不出来。刚刚开 始的时候,流量少,但是够规模自然会产生规模化的盈利。没有核心技术这是中国共同的,我们最多做的是一些新技术的初级应用。我们有可能会在中文化的中国社 会环境中的一些综合方面出一些核心技术,就像百度做的差不多。但是现在多数看不出来,想都不想。

竞争格局:

现在个人信息生活这一头占了5060%,社区级的物质生活这是我个人最看重的,刚刚开始现在占0.5%。如果还在个人级的信息生活上下工夫,也就是博客一类的,现在还想靠这个是没有意义的,其实机会和格局是并列的。最理想的是自然而然的全方位, 未来的机会表现在:

社区的完整性。

深度平台,如果是有游戏背景的技术团队、SEARCH背景的技术团队或者ERPCRM背景的团队我觉得有机会。

抓住主流人群:如果你的主流人群还是20岁以下那没机会了。

以服务为导向:不管怎么样展示自己,得告诉VC一年以后我要推一个什么样的东西。

我猜大家来这个会主要想听我说的就是Web2.0焕发第一春或者第二春的。我觉得不容易,真的不容易,虽然VC最近已经像慈善家一样慷慨了,但是最容易的是给钱,最难的是挣钱。我现在困在没钱上,但是我从来不为这个发愁,因为我知道它无非是成功10%或者20%的分量,大家多想想除了钱以外的事,你只要想通,有本事了,钱会来。谢谢大家!

Thursday, March 16, 2006

C#的一个URL加载器,能处理编码、相对地址解析、GET/POST、HTML的include、页面重定向

要让机器模拟上网,首要的问题是解决HTTP请求响应,看我们的Url加载器,功能比较强。它考虑了编码、URL的相对地址解析(见RFC),还可以POST数据,还有HTML里的,还有里的重定向,很好用的。

以下代码随便用吧,咱们已经拿这段代码申请过著作权拉。
1 /**////
2 /// 最基本的Url加载函数,其它重载函数均调用它
3 ///

4 ///
5 ///
6 ///
7 /// 是否在客户端包含include文件
8 /// 计算重定向的次数
9 ///
10 public static string LoadUrl(ref UrlOperation uo, string encoding, string postdata, bool include, int redirectioncounter)
11 {
12 string str;
13
14 string url=uo.Url;
15 HttpWebRequest request;
16 HttpWebResponse response;
17
18 //采用HTTP GET或者POST
19 if (postdata == null)
20 postdata = "";
21 if (postdata.Length == 0)//HTTP GET
22 {
23 try
24 {
25 request = (HttpWebRequest)System.Net.HttpWebRequest.Create(url);
26 }
27 catch
28 {
29 return "";
30 }
31
32 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)";
33
34 //超时异常发生在这里
35 try
36 {
37 response = (HttpWebResponse)request.GetResponse();
38 //uo.Url = response.ResponseUri.ToString();
39 }
40 catch
41 {
42 return "";
43 }
44
45 System.IO.Stream stream = response.GetResponseStream();
46
47 Encoding source;
48 try
49 {
50 source = Encoding.GetEncoding(encoding);
51 }
52 catch
53 {
54 source = Encoding.UTF8;
55 }
56
57 StreamReader sr = new StreamReader(stream, source);
58 try
59 {
60 str = sr.ReadToEnd();
61 }
62 catch
63 {
64 return "";
65 }
66 sr.Close();
67 stream.Close();
68 }
69 else//HTTP POST
70 {
71 try
72 {
73 ASCIIEncoding asciiencoding = new ASCIIEncoding();
74 byte[] bytes = asciiencoding.GetBytes(postdata);
75
76 request = (HttpWebRequest)System.Net.HttpWebRequest.Create(url);
77 request.Method = "POST";
78 request.ContentType = "application/x-www-form-urlencoded";
79 request.ContentLength = postdata.Length;
80
81 Stream poststream = request.GetRequestStream();
82 poststream.Write(bytes, 0, bytes.Length);
83 poststream.Close();
84
85 response = (HttpWebResponse)request.GetResponse();
86
87 StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
88 str = sr.ReadToEnd();
89 response.Close();
90 }
91 catch
92 {
93 return "";
94 }
95 }
96
97 uo.Url = response.ResponseUri.ToString();
98
99 //在客户端包含include文件
100 if (include)
101 {
102 System.Text.RegularExpressions.Regex regex = new Regex(@"", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
103 MatchCollection mc = regex.Matches(str);
104 if (mc.Count > 0)
105 {
106 System.Text.RegularExpressions.Regex urlregex = new Regex("(?<=\").*(?=\")", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline); 107 108 string[] segments = regex.Split(str); 109 110 StringBuilder sb = new StringBuilder(); 111 sb.Append(segments[0]); 112 for (int i = 1; i <= mc.Count; i++) 113 { 114 string s = mc[i - 1].Value; 115 string newurl = urlregex.Match(s).Value; 116 UrlOperation newuo = uo.Forward(newurl); 117 string included = LoadUrl(ref newuo, encoding, "", true); 118 sb.Append(included); 119 sb.Append(segments[i]); 120 } 121 122 str = sb.ToString(); 123 } 124 } 125 126 //页面重定向 127 string redirection=GetRedirection(str).Trim(); 128 if (redirection.Length > 0&&amp;redirectioncounter<5)
129 {
130 uo=uo.Forward(redirection);
131 return LoadUrl(ref uo, encoding, postdata, include, redirectioncounter + 1);
132 }
133 else
134 return str;
135 }
136

Monday, March 13, 2006

Ideal feed reader features

"What is your 'ideal' feature set for an aggregator (feed reader, RSS reader)?" I was asked this recently by someone who works on an aggregator. I suspect this list will be colored by my thinking today. I did something similar a year ago. Ask me in six months, and I'll come up with a different list.

The primary thing an aggregator needs to do is enable me to read any feed I want to read. It needs to stay out of my way, so that I can spend as much or little time reading as I want. And I need to be able to read when I am not connected to the network.

Beyond that, there are many features and many ways to creates those features. Here is one set (very long) set of ideas. If you are a developer, I am more than happy to talk to you about these. But you should also take into account Getting Real: Forget feature requests from Jason at 37signals.

Cool-to-me capabilities

  1. Don't make me feel guilty when I've been away for a few days. It's an information tool - it needs to stay out of my way when I am not using it. FYI, this hints at moving away from a Read/Unread metaphor to something like "new since last time." I'm using Lektora lately, which is probably influencing this thinking.
  2. Create some way of combining and handling similar or related articles across multiple blogs. Threading is just a beginning for this. Here are some kinds of things this might allow.
    1. When I have read articles in one place, don't show them to me again as "unread" in another place.
    2. Personal knowledge aggregation idea of combining articles with a smart tool that can find new content based on those articles and my current feed space.
    3. Integrate well with search feeds, so that when I've read the original, the aggregator doesn't give it to me again in the search feed results. And do the reverse, if I've read it in a search feed first. This applies to more than just search feeds, since there are places like Topic Exchange that repost articles.
    4. Let me highlight a specific set of articles, based on phrases, categories, and feeds.
    5. Let me ignore a given set of articles today, or forever. I'm not really interested in articles about the Xbox, for example, even though I may read a feed that happens to talk about them frequently.
  3. Be smart about dealing with clicking links when I am off-line. I know I'm off-line, but I still want to read the content in question at some point. I've used "mark for later" or other flagging mechanisms, but they haven't been wholly satisfactory. I'm currently letting my browser tell me that it can't find the link, and leaving the window open with the URL in it. When I reconnect, I just reload the URL. This isn't terribly satisfactory either. I realize that this has as much to do with how web browsers work as it does the aggregator.
  4. Integrate with desktop search tools.
  5. Figure out a way to pull in full content from a website for feeds that are only excerpts. As far as I know, the only aggregator that can do this is Newsgator with the Fetchlinks plugin.

Basics

  1. I should be able to view all feeds, grouped feeds or a single feed.
  2. Make it easy to subscribe (auto discovery / drag and drop / click on the feed url / add feed capability). Tell me if I've already subscribed to the feed in question, and give me enough information so I can find it. (Is it in my "no longer reading" group? Is the feed being read correctly?)
  3. Provide a mechanism to use the keyboard to scroll / skip through the list of items. Typically, this is with the space bar.
  4. In fact, provide keyboard shortcuts to most reading / navigating functions.
  5. Provide both newspaper and individual article views. I have lately been operating in newspaper mode, though I see the value of both.
  6. In a newspaper mode, I need to see the context for the article I'm reading. This means that I need to see the feed name not just at the top of the entries from that person, but (optionally) in the description of each entry.
  7. Let me see previously-read articles easily. Let me see all articles from a given feed or grouping, whether they've been read or not.
  8. Open the item in its original location. If the aggregator is not embedded in the browser, there should be (easy) options for opening in the aggregator application or the browser itself.
  9. Let me jump to the website of the whole blog, not just individual posts.
  10. Make it easy to skip over whole feeds when reading, particularly in newspaper mode. (There goes Jack again, ranting about aggregators, skip down.)
  11. Let me group and set the order of feeds as I please. Make this work for people who have only a few feeds, and for those who have hundreds of feeds.
  12. Let me import and export an OPML file of all my subscriptions. The process should retain grouping, if possible. This feature is a must for testing aggregators.
  13. Understand all forms of web feeds, even the slightly broken ones. I don't particularly want to contact the authors to tell them to fix their date format or other minor problems.
  14. Provide a reasonable set of options, but don't overwhelm me. How important is the option? What does it mean? If it falls into multiple categories, let me set it from multiple places. (This is a rant on all software.)

Advanced features

  1. Handle secure feeds (passwords, etc).
  2. Let me do useful things with an individual post from the primary display.
    1. I'd like to be able to reply directly to the author as email (using whatever email or name information is embedded in the feed - sometimes I'll have to supplement).
    2. I'd like to be able to "forward" the item to someone else with the full text of the article embedded along with formatting and url's. Even better - I could select certain text and forward.
    3. Mark the article for future purposes: future blogging, easier reference to "interesting" pieces, etc. Maybe this is a good place for tags.
    4. Let me annotate a feed beyond tags? This would be a great place to add notes about where I met the blogger or why I decided to stop reading the blog.
    5. I would like easy integration with my blogging tool, so I can paint relevant sections and post them with my comments to my blog. I am aware that this is heavily dependent on the blogging tool / editor, but the aggregator should be open enough to permit this kind of thing. For aggregators that operate within the web browser, this issue partially goes away with opening a new window / tab with the entry of interest. It would be nice for it to be smart enough that I don't have to open the separate window / tab.
    6. Link to blog tracking tool(s) of my choice to find out if anyone else is talking about this post (Technorati, etc.).
  3. Provide a mechanism for managing my feeds: rename, change their order, delete, see their status (errors, last post), update frequency, change the feed location. For example, I'd love to "turn off" a feed to tell the aggregator to stop visiting the feed, but leave it in my list. Why? I want to remember that I've explicitly decided to stop reading a feed.
  4. Let me know about feed errors, but do it unobtrusively. I may need this for feed maintenance, but I don't want to know in my daily operation. This is probably a screen within the feed management function.
  5. Let me share my feeds (or a subset of them), if I choose. Possibly integrate with a blogroll on my own weblog.
  6. Tags (categories). These are more general ideas, since I haven't explored deeply those aggregators that use tags.
    1. Instead of grouping feeds into folders, I might prefer to feeds into multiple categories (tags, anyone). I could then read the same feed in a number of places. I suspect this would be more valuable in digging through the archives than in my regular reading habit. And I can see that this would conflict with some of the expected behaviors around grouping and sorting feeds.
    2. I'd like to do something to mark individual articles for future reference. In the past this has been implemented as flagging or "save for later," but I could see doing this with tags as well. Tags could give me a more faceted way of scanning my archives.
    3. I have not heavily used the newer readers that allow for social tagging (seeing how others tag entries), and I have not felt a particular urge to know what others think about an article. If they think it is interesting enough, they will blog it too.
    4. What about letting me read and group articles by how the authors tag them? This information should be in the feeds, and in combination with my own tagging (and maybe social tags) could provide a different view of the blogosphere. For example, it would be great to simply "subscribe" to the Conference2005 tag and have those articles collected in one place, rather than having to go look for them.
    5. If the system uses tags, it should be nice about informing me what tags I've used and possibly what others have used, like del.icio.us does.
  7. I'm not sure I am interested in rating feeds or individual articles. It's an interesting idea, though it changes the way I would approach reading.
  8. Similarly, I am not sure about tools that watch what I read and provide recommendations or suggestions as a result. I see how this could be interesting, I just wonder how it would compare to a feed search on specific topics. And in newspaper mode, the aggregator wouldn't know which articles I've explicitly read as opposed to skimming. That said, maybe something that worked in conjunction with a tagging mechanism could add value: find other articles like those tagged with "XYZ." This would be a place for integration with other services, since the aggregator is probably not a place for complex semantic analysis of articles.
  9. I think it could be useful to have threading or some other indication of related content within the feeds I receive. SharpReader and RSS Bandit provide some mechanism for showing how articles are related to one another in a threaded format. These also show the read status of those related articles. Take your pick on defining "related" article: common url is possibly the best bet.
    1. Maybe this feature is more a cool thing than something useful. My current aggregator doesn't have threading, and I don't miss it as much as I thought I would. If I really need to know, I should probably check with Blogdigger.
    2. If there are trackbacks outside my set of feeds, show me the link to that referring article. I suspect the trackback information would need to be in the original feed, or the aggregator would have to request it. Probably too much work for the value.
  10. There should be some configurable purge-the-archives mechanism to save disk space.
  11. Search within the aggregator should cover those cases where I don't remember who said what, or when they said it.
  12. Provide a mechanism to display all the content in a feed. Atom feed frequently have both a summary and the full text - give people the option of selecting which they want to see on a feed-by-feed basis. If a feed lists "categories," then display them. If additional links are provided, display them, such as in Blogger feeds. If there is a link to the comments, display that. These are all fairly standard. I'd love to see an aggregator that could be made smart about unusual fluff in the feed.
  13. If an entry has a link to an entry-specific comments feed (wfw:commentRss and others), figure out a way to deal with that. This probably means adding the feed, when clicked.
  14. Links to podcasts or other multimedia content should be dealt with intelligently as well. Create a global setting and then allow for feed-by-feed exceptions.
  15. Maybe allow modification of how individual posts appear. For example, I may want the feed name listed in the "credits" at the bottom of a post when the author name isn't present. Some aggregators provide a template that sophisticated users can tweak. If you do provide such a beast, provide clear instructions on how to make changes.

Obvious (but need to be repeated)

  1. Put some thought into visual display and layout. I'm going to be looking at the tool a lot, so it needs to be functional and not terribly intrusive without being overwhelming or drab.
  2. Provide responsive support.
  3. Be fast when I display feeds, or move to a new "page" within the current feeds.
  4. Don't be a resource hog. Don't go looking for new articles every 60 minutes. If threading articles together eats a lot of resources, then do something to make it better. Let people tweak the parameters associated with the biggest resource consumption, and tell them why it matters.
  5. Don't die and force me to switch to a different aggregator when I am not prepared. Don't force me to switch - period.
  6. Don't lose data. Don't forget what I've read. Don't forget or rearrange my feed list.

Everyone acknowledges that software continues to evolve. This means I expect upgrades from time to time. However, when you post an upgrade, make sure it works! I dropped one aggregator because they never upgraded (one developer who had another life). I left another because they totally munged a much-anticipated upgrade. And this post is partially inspired by upgrade problems again. The aggregator is getting in the way of my work when these things happen.

In summary

I can't say that I am the final answer on these things, and I know many others have opinions about this too. Lilia has some interesting requirements, like the capability to show the thread of conversations that I mention.

Rather than looking at features, one could also think about how they use their aggregator. For example, see Ton Zijlstra's recent comments on his Information Strategy: My Routine, Inputs. Ton talks much more about process for using the technology, rather than the specific features it needs to have. Ton's series was inspired by Lee Lefever's article What's Your RSS Reading Strategy?, which I responded to in May, here and here. Along with the comments on Lee's article, look for other references.

I've used the following readers extensively, all of which have their pluses and minuses: Lektora, Newsgator, SharpReader, and Bloglines. And I've had a look at many others. For those who wonder what this has to do with knowledge management, it has more to do with personal knowledge management and the right combination of tools for me. At the same time, a good aggregator should enable me to find and distribute content that is interesting and valuable to my clients and colleagues.

阴谋诡计多出于此 中国古代帝王的十大驭人术

  帝王掌管天下需要各方面力量的支持。在这诸多力量中,中央执行机关里的行政长官,特别是那些资深且有能力者,更常常成为帝王要优先考虑的对象。既要调动他 们的忠诚心和积极性,又予以适当限制和合理控制,这是再理想不过的。因为没有这些人的工作,帝王将一事无成。如果使用不当、控制不严,帝王也会大权旁落。 究竟如何驭臣,这其中不仅多有花样,而且也颇具难度。

   1.自树威信

   做了皇帝的人并不一定是最有威信的人,而一旦身为国主,树立威信又是绝对必要的。比如秦始皇在统一天下、位至至尊以后曾经多次到全国各地巡游,每到一地, 他都要刻石立碑,碑文写的无非是他身为皇帝的功劳和辛苦。这样一而再、再而三,不厌其烦地自我标榜,其目的无非是要建立自己的威信,在百官和百姓中确立自 己不同于他之外任何人的特殊地位,秦始皇的这一举动,在其驾驭臣下方面确实起到了预期的作用。

   灭秦建汉的汉高祖刘邦也深知自树威信的重要性,有两件事很能说明他对这一问题的敏感和自觉。其一,刘邦在平定天下以后,有一次在洛阳南宫摆酒设宴,问群臣 项羽之所以失天下、自己之所以得天下的原因,群臣各有所答,但都不中肯綮。刘邦自己总结说:“在运筹帷幄之中、决胜千里之外方面,我比不上张良;在管理国 家行政事务、安抚百姓、给前方战士提供足够给养方面,我比不上萧何;而在率领百万大军,战必胜、攻必取方面,我更比不上韩信。张良、萧何、韩信三人,都是 杰出的人,我能任用他们,这是我获得天下的重要原因。”刘邦这番话既直言不讳,又入情入理。你与其说他是在讨论汉得天下的原因,不如说是为了自树个人威 信。特别是他巧妙地运用欲扬先抑法,先谦虚地称赞张、何、韩三人,然后话锋一转,那意思是说,他们三个“人杰”都愿意为我所用,那么我的高人一筹不是不言 自明的吗?

   另一件事是,刘邦在得了天下以后,大臣们整天大吃大喝,这些人大多缺乏文化教养,完全不懂礼仪,喝醉酒就吵吵嚷嚷,甚至舞刀动枪,这使刘邦很不开心。这时 有个精明的儒生名叫叔孙通的看出了刘邦的心事,就建议刘邦制定礼仪。刘邦虽然是个粗人出身,但他马上意识到了叔孙通建议的价值,于是当即命令叔孙通尽快去 做。叔孙通遵照刘邦的旨意,找来三十多个懂礼仪的儒生没日没夜地抓紧排练。一个多月以后,儒生就演练成熟,正好这时大汉定都长安,刘邦就把叔孙通排练的这 套礼仪原原本本地运用在大臣们身上。群臣照礼仪进殿陆续接受刘邦的召见,按官阶高低依次向刘邦行叩拜之礼。进见的大臣都俯首低眉,恭敬备至,整个召见过程 井然有序。自此以后,刘邦端坐于上,群臣用礼仪进宫接受召见,就自然成为一种规矩。借礼仪制度建立个人尊严、提高个人威信,这是刘邦有意而为的。所以,当 刘邦目的达到以后竟喜不自禁地说:“我现在才算真正体会到当皇帝的尊贵了。”

   2.猎人与猎狗

   皇帝御前臣将多多,区别对待、分级管理和任用是平衡大臣心理、调动各方积极性的有效办法。西汉开国皇帝刘邦在未起事之前,曾经是家乡沛县的一个亭长,后来 做了丞相的萧何则原是沛县主吏掾。刘邦有一次到咸阳服差役,同事们都送给刘邦三个钱,而萧何却独独送刘邦五个钱,这关系就显得比别人亲近。刘邦起事后,萧 何率整个家族一起投到刘邦麾下,而且还尽力为刘邦出谋划策、招揽人才。在灭秦和后来的楚汉战争中,萧何虽然没有随刘邦在战场上厮杀,但在刘邦被项羽接连击 败,很多人离刘邦而去的情况下,萧何一直坚持从吴中招募军队,补足供应。战事不利,刘邦曾多次逃亡山东,萧何却一直坐守关中支持刘邦。毫无疑问,萧何为刘 邦赢得天下,起到了无可替代的作用。

   刘邦平定天下后论功行赏,他认为萧何功劳最大,就封萧何为侯,食邑八千户。为此,一些大臣提出异议,说:“我们披坚执锐出生入死,多的打过一百多仗,少的 也打过几十仗,攻打城池,占领地盘,大大小小都立过战功。萧何从没领过兵打过仗,仅靠舞文弄墨、口发议论,就位居我们之上,这是为什么?”刘邦听后问: “你们这些人懂得打猎吗?”大家说:“知道一些。”刘邦又问,“知道猎狗吗?”大家回答:“知道。”

   刘邦说:“打猎的时候,追杀野兽的是猎狗,而发现野兽指点猎狗追杀野兽的是人。你们这些人只不过是因为能猎取野兽而有功的猎狗。至于萧何,他却是既能发现 猎物又能指点猎狗的猎人。再有,你们这些人只是单身一人跟随我,而萧何可是率全家数十人追随我的,你们说他的这些功劳我能忘记吗?”这一番话,说得诸大臣 哑口无言。在刘邦看来,功臣也有三六九等,就像猎人和猎狗一样,虽然都在为获取猎物奔忙,但猎人的作用要远大于猎狗。那么优先考虑,更加重用前者,则是不 会有问题的。

   3.偷梁换柱

   古代君臣之间多为相互依存、相互利用关系,君为臣做主,臣为君服务。帝王对臣下的褒贬升降,甚至生杀予夺,一般都是经过认真思忖考虑的,而考虑的标准无非 两条:一是感情,一是利益。但细想起来,帝王的感情是有限的,皇室的利益也不是无边无际。所以帝王有利益给甲大臣,就难免要亏乙大臣。这其中的道理真有点 像儿童做游戏时说的,好事轮到谁,谁高兴,而坏事则是轮到谁,谁倒霉。但有时情况特殊,属于非正常的例外,帝王不希望倒霉的臣下却眼见要倒霉,那么在可能 的情况下,帝王仍要扭转乾坤,方法之一就是偷梁换柱,嫁祸他人。

北朝十六国时,后赵石虎的太子石宣骄奢淫逸,大造宫殿,役使民工数万之 多,百姓怨声载道。禁军领军王朗上奏皇帝石虎,希望他能对太子的行为加以阻止,但因此却开罪了太子石宣。建武十年,天空中出现了“荧惑守房”的星象。所谓 “荧惑”就是我们现在所说的火星。火星本呈红色,荧荧发光,亮度常有变化。以今天我们对天文知识的了解程度,实在不难明白它变化的道理,因为火星绕太阳公 转一周的时间差不多比地球绕太阳一周的时间要长一倍,所以站在地球上看火星运行的轨迹,则有时向前,有时向后。可古人天文知识贫乏,不明白火星色泽泛红, 为何行踪忽东忽西,忽明忽暗,因此称火星为“荧惑”。所谓“房”就是房宿,是二十八宿之一,它和心宿同被古代星象家称为“天王布政之宫”。他们以为,反复 无常的“荧惑”停留在天王布政的地方,自然是不祥之兆。这个星象一出现,石宣心想机会来了。他要借这次天象除掉王朗,于是就收买负责天文星象工作的太史令 赵揽,要赵揽向皇帝石虎进言,就说要想逢凶化吉,必须“以贵臣王姓者当之”。目标是直冲王朗来的,所以当石虎问“这王姓都是谁”时,赵揽脱口而出,说: “王姓大臣中最尊贵的,莫过于王朗了。”要杀王朗,石虎哪里舍得。石虎不同意,要赵揽再举出个次一等的。赵揽无奈,只好再举个次一等的中书监王波。——既 然要消灾,就不得不付出生命代价。于是中书监王波就莫名其妙地做了祭刀鬼。本来石宣谋划的是除掉王朗,因为王朗虽为朝中重臣,但他有碍自己的作为。而石虎 所信任和保护的也是王朗,因为他对自己的统治有益也有利。但是,不管是太子的谋诛,还是皇帝的有意保护,都通过星象师赵揽之手,把灾祸转嫁到与此全无干系 的王波头上。太子有意设计,却未能遂愿,皇帝偷梁换柱,竟达到了保护重臣的目的。这真可谓古代皇室政治斗争中的一出悲喜剧。皇帝和太子各施心术,各逞计 谋,双方像打太极拳一样,你来我往,但拳脚所击打的都是无辜的臣下,在这种情况下,像王波这样的人只好自认倒霉了。

   4.下诏罪己

   帝王在对待大臣、处理政事时,如果他感到罪己比杀人能获得更大的政治效益,那么这时他也会选择前者,因为政治利益才是他最终要考虑的。

    曹魏黄初二年六月,日食发生。日食在今天看来已是一种很容易理解的自然现象,即日、月、地球三者并行,月球挡住了太阳光线,就出现日食。古人往往把自然现 象与人间社会政治联系起来,认为自然的非正常现象是上天对人类的警告,如不及时向上天承认错误,上天就会给人间降下灾难。当时,负责官员将此事上报文帝曹 丕,要求按旧例罢免太尉以避灾。此时的太尉是老臣贾诩。这贾诩原本是张绣手下的谋士,归附曹操后,他自知身为降臣难与曹操旧部相比,于是就暗地里在曹操儿 子曹丕身上下功夫。他先是帮曹丕“深自砥砺”争宠、固宠,谋算曹操身后自己的政治命运。一次曹操就立嗣一事征询他的意见,贾诩避而不答。曹操问他为什么不 说话,他回答说是在想袁绍和刘表的儿子们因争立而相互残杀的故事。这一说,曹操自然明白这是在劝自己按长幼顺序册立曹丕为太子。贾诩在老谋深算的曹操的眼 皮子底下冒险押了这一宝,暗怕会被多疑的曹操识破,自此便韬光养晦,闭门不出。后来曹操果然立曹丕做了太子,曹丕也知道贾诩于此事甚有功劳。所以,曹丕一 上台,就立刻任命贾诩做了太尉。曹丕重用贾诩,不光是因为贾诩对自已有恩,而且还因为贾诩的深谋远虑对自己稳坐帝位大有用场。而这黄初二年,是曹丕登基称 帝的第二年,政局还未完全稳定,当然不能因一个小小的日食就除掉贾诩。所以,曹丕听完报告,下诏说:“上天降下灾异,是警告天子的。天子委过于下级官员, 这不是圣人的做法。文武官员们,大家小心尽职吧!以后凡有此类警告,绝不归罪你们。”曹丕这纸“一切责任由我来负”的罪己诏书,不仅保住了谋臣贾诩,而且 也为自己买下了宽仁、厚待功臣的美名。

   帝王的所谓“下诏罪己”无非是把政治行为过失归罪于己,这里表现出的有帝王的政治胸怀,也有帝王的个人人格问题。后代帝王一遇政治困难便做自我批评的做法 不免显得太过做作,太缺乏真诚,而承认错误、承担责任在中国早期政治家那里倒显得更真实自然、更感人,也更产生政治效益。

   5.情感诱惑

   帝王君主在驭臣行为中常常有意识地进行情感投资,从而深深感动臣下,使臣下在深受感动之余更不惜一切地为其出力和卖命。

    刘秀早年有个老同学叫严光。此人一生清高。刘秀做了皇帝后,这严光干脆隐姓埋名,不与官家发生任何联系了。但刘秀还是设法使人找到了严光,并亲自下驾到严 光的住处来拜访严光。刘秀来到,严光还没有起床。刘秀驻足观看,严光仍旧呼呼大睡。等了大半天,严光才缓缓醒来。他见刘秀坐在自己身边,不用问就知道皇帝 此行又是请他出山做官的。严光直言不讳地说:“古代有个贤君尧要把帝位让给许由,许由听后觉得这话弄脏了自己的耳朵,就忙到河边去洗耳朵。我虽不是许由, 但立志向许由学习。你还是请回吧。”刘秀无奈,只好悻悻而归。

刘秀之所以强请严光出山,并不仅仅显示自己虽然做了皇帝但仍不忘过去同窗 之谊,他实际上是要用他对严光的情感和友情投资为臣下和世人作出个榜样,以便争取臣心和民心。所以他一不做、二不休,一定要把这件事做得淋漓尽致。上次刘 秀在严光住处碰了软钉子之后,刘秀不久又把严光接进宫中,这次刘秀与严光只谈过去友情,只字不说请严光做官的事。两人畅叙到深夜,刘秀完全不摆皇上架子, 夜间就和严光同床睡着了。一觉醒来,刘秀发现严光的大脚正放在自己的肚子上。这时天已大亮,大臣们进来发现这一情景,个个恐慌不安,刘秀却满不在乎地说: “一晚上我和老朋友同床睡了个好觉。”严光的脚压在刘秀的肚子上,刘秀却颔首微笑、谈笑自如,大有欣赏备至的味道。刘秀以超常规的宽容和难以想像的低姿态 对待这位儿时的朋友,无疑有他的真实情感在内。但作为做了皇帝的刘秀,他所做的这一切又有多少属于纯粹私人而不牵涉政治甚或邀买人心呢?这种问题也许不可 能有一个确切无疑的答案,但他的这一行为被载入史册并因此获得众多赞誉,却也是显见的实情。

   6.收买人心

    稳定臣心,收买人心,是皇帝分内的工作,“条条大路通罗马”,封赏最不喜欢的人也是有效的办法之一。像汉高祖刘邦,当年打天下时,前有韩信等横扫千军、攻 城略地的武将,后有萧何供应粮草、补充兵员坚强得力的后盾,同时还有张良为之运筹帷幄、决胜千里,陈平出奇制胜,全力辅佐等等。刘邦战胜项羽夺得天下之 后,由于大臣们争功不止,封赏工作迟迟无法进行,仅封完刘氏宗室和外戚就停止了。有些旧臣对此很不满意,一时间议论纷纷,人心浮动。刘邦对此颇为担心,就 把张良找来询问原委,研究对策。张良详细向刘邦作了汇报,并添枝加叶地说,大家对皇帝迟迟不赏功臣很有意见,就要计划造反了。这准备造反的人当中,连曹参 和陈平也包括在内。刘邦一听,情况十分紧急,忙向张良讨主意。张良说:“陛下取得天下靠的是这批功臣,而现在封赏的却大都是亲戚朋友,将领们怕封赏轮不到 自己头上。还有,陛下平定天下剪除的都是平常怨恨的人,现在还没得到封赏的人当中,哪个敢保证平时没有一点过失,因此他们是怕陛下乘机处罚打击他们。”刘 邦是个绝顶聪明的人,他知道天下初定,功臣良将无论如何是需要的。于是忙问张良怎么办才好。张良问刘邦:“这些人中有没有陛下平时最憎恨、最不喜欢的?” 刘邦说:“有。雍齿仗着和我同乡,曾经多次跟我过不去,我早就想杀掉他。可是因为他立功多,所以一直不忍心下手。”这里所谓“功多”、所谓“不忍心”其实 都是说给人听的。韩信不是功盖天下,照样被杀掉了吗?刘邦深知,此时最要紧的是安定人心,于是这一念之间,雍齿就彻底改变了命运。刘邦听从张良的建议,当 天设酒摆宴,封雍齿为二千五百户汁方侯。群臣得知雍齿受封的消息,都很高兴,他们说:“连雍齿都有资格封侯,这封赏还怕轮不到我们吗?”于是,一场即将发 生的骚乱,以雍齿的受封为界,在一夜之间就平息了。主意显然是张良出的,可实际操作者仍然是刘邦。利用封赏最不喜欢的人稳定臣心,收买人心,刘邦做得出色 到家了。
   无独有偶,唐太宗李世民也有意识地做过与刘邦类似的事。刑部尚书张亮被控犯有谋反罪,唐太宗非常愤怒,下令朝中百官讨论如何处置张亮。对于这个问题,多数 大臣都认为张亮罪在不赦,应当立即杀头。只有殿中少监李道裕认为张亮犯罪证据不足,不应定罪,并且在朝廷上说得慷慨激昂,把倾向治罪的唐太宗一时弄得很没 面子。盛怒之下的唐太宗根本不听李道裕的话,毫不迟疑地就把张亮杀掉了。事后不久,刑部侍郎的职位出了空缺,因为这个职位关系到大唐帝国执法的准确和严 肃,所以唐太宗反复叮嘱宰相要严格对待这个人选。可是,宰相几次上奏推荐的人,唐太宗都没有批准,最后唐太宗竟建议宰相把这个位子让李道裕来坐,理由是李 道裕执法谨慎严格,这个说法的确是过硬的。但是还有,群臣都知道李道裕曾经当众反对唐太宗的意见,唐太宗不会不记得。而现在偏偏任命李道裕做这个执法官, 这其中哪能没有名堂。于是,此项任命一经公开,朝廷上下无不盛赞唐太宗的仁德和雅量,开明君主的招牌亮得更鲜艳了。由此可见,唐太宗的任命李道裕和汉高祖 的分封雍齿无疑是有异曲同工之妙的。

   7.丢卒保车

   中国封建皇权社会是一盘棋,帝王之下的大臣是棋盘上的卒马炮车。帝王本人连棋盘上最重要的老帅也不想做,而宁做可以任意调兵遣将的下棋人。既然是下棋,那么为大利益牺牲个把小利益是常见的事。

    明成祖永乐年间,贵州一带的少数民族势大。镇守贵州的都督马烨采取各种手段,企图刺激当地的少数民族造反,以便抓住口实,彻底废除土司制度,代之以中央选 派的“流官”。其中采取的最极端做法是把前任土司头目的妻子奢香脱光衣服鞭打。这一下,当地少数民族果然愤怒异常,打算起兵反叛。但被现任土司头目坚决制 止了。他亲自进京上访,状告马烨。永乐帝自然对此事洞若观火,他明白马烨完全是为了明王朝利益,又清楚此时正是提出交换条件的好时机。于是召宣受辱遭打的 奢香进京。永乐帝问奢香说:“马烨辱打你是错误的,我现在为你除掉他,你准备怎样报答我?”奢香叩头说:“我保证世世代代不犯上作乱。”永乐帝微微一笑, 说:“不犯上作乱是你们的本分,怎么能说是报答呢?”奢香万般无奈,答应为明王朝从贵州东北部开一条通往四川的山路,以供驿使往来。奢香答应的这一条件无 疑是永乐帝极其欢迎的。官府有路可通,铁鞭可及少数民族地区,那他们自然不敢再造反。永乐帝也实践诺言,随即召回马烨,将其斩首。这马烨所做的一切都是为 了明王朝的利益,但他所做的一切却又成了最后被杀的罪状。事后永乐皇帝也说过:“我也知道马烨对朝廷忠心耿耿,但是我如果顾惜他,就没办法安定贵州这块地 方了。”话说到这份上,即使被杀的马烨在场也不会再有什么话说的。

8.互相监督

   人是永不满足的动物,历史上有才能的臣子虽居万人之上、一人之下之位,却也不免常觊觎王位,因此帝王对臣下如管理不善、控制不严,往往要付出巨大的代价。

    雍正皇帝刺探监督臣僚,不仅限于公务,就连私生活他也不曾放过。据载,某大臣退朝后邀了几个亲朋好友聚在一起玩几圈麻将牌,玩着玩着忽然发觉牌少了一张, 无奈只好就此罢手。第二天上朝时,雍正问某大臣,晚上常常以何为乐,大臣以实相对。雍正笑笑,夸赞对方是个老实人。然后把昨天晚上他们玩丢的那张牌拿给他 看。皇帝对手下大臣监视掌握到如此精细的程度,那手下大臣有什么不恭不敬的歪邪招数能逃得过皇上的耳目?

   利用臣僚互相刺探、互相监督,皇帝可以明察秋毫、坐收渔利。

   9,以他排他

    皇上操纵大臣彼此互相刺探、互相监督,说到底是为防患于未然,不利事件一旦发现苗头,对皇帝来说,就是要当机立断,干净彻底全部消灭之。消灭的办法也有种 种,以他排他、相抵相消即其一。也就是说,用甲去削弱乙,再用丙去消灭甲。比如唐大历年间,宦官气焰十分嚣张,唐代宗利用宰相元载的力量诛杀了宦官鱼朝 恩,收回了宦官霸占的权力。但此后元载的权势却因此得到扩张,有一件小事即可看出元载权势之大。元载有个亲戚向他讨官,他一向瞧不上这个亲戚,就胡乱在一 张纸上写了“元载”二字,这个亲戚就拿着纸给地方官看。地方官一看是元载的签名,竟然像面对当今宰相元载似的,对元载的这八竿子打不着的亲戚大加款待,尊 敬有加。元载势力如此之大,这是代宗绝难允许的。代宗起初还单独召见他,希望能既保住这位“功臣”,又使之悔过自新。但后来见元载一意孤行,不思悔改,就 决定搬掉这块绊脚石。代宗对付元载的办法,先是任用不依附元载的大臣。而元载也非等闲之辈,他则多派亲信,于内外广泛搜集刺探代宗的情报。代宗信任将军李 泌,元载就诬陷李泌是鱼朝恩的余党。代宗为不过早刺激元载,忍痛把李泌派往江西观察使魏少游处任参佐,并约定:“朕决意除载,当有信报卿,可束装来。”大 历六年,成都司录李少良上奏揭发元载“奸赃阴事”,代宗准备就此下手除掉元载。不料李少良走漏了风声,元载抢先诬告李少良,代宗从大局考虑,宣布李少良 “凶除比周,离间君臣”,将李少良处死,暂时稳住了元载。大历十二年,代宗又收到一封状告元载“图为不轨”的密奏,代宗借此命令将军吴凑趁元载来政事堂议 政的机会,当场将元载逮捕,并“赐载自尽”。元载自知这次难逃一死,只提出要求,让自己死得痛快些。而使者明白其中就里,故意要元载“受少污辱”,脱掉脚 上的臭袜子塞入元载口中,然后才砍掉他的头。这临刑前的小小插曲颇有些闹剧味道。从代宗和元载斗法的前前后后看,代宗先是利用元载扫荡了宦官,然后又设法 除掉了元载。常言说,官场就是战场,在这个战场上不管是宦官还是元载,哪一方都不会成为真正的胜利者,而胜利者只有一个人,那就是代宗。这里,代宗就是利 用以他排他,达到相抵相消的目的。

   10.分职弱权

   皇帝对臣下的分职弱权,成功者莫过于在政府机构设置上做文章。像丞相一职,位极人臣,他既可以是皇帝的得力助手,又可能对皇室构成重大威胁。西汉初期的丞 相甚至可以驳回皇帝的诏旨。到汉武帝时,中央设尚书省,尚书令分去了过去丞相拆读天子奏章的权力。以后,皇帝又提高太尉、御史大夫的地位,使之与丞相平起 平坐,并把三者先后更名为司徒、司马和司空,变一相为三相,从而彻底改变了丞相掌管天下一切的局面。东汉光武帝宠信尚书令侯霸,把原来由丞相掌管的政务移 交给尚书台。曹魏时期,朝廷又设中书监掌管机密政务,尚书台草拟诏书,评议尚书奏事的权力也移交给中书监,尚书台的权力又受到限制。南北朝时,皇帝命过去 专管皇帝家庭杂务的侍中、黄门侍郎参预平议尚书奏事,以削减中书监的权势。到隋代,朝廷设立殿内省,包揽皇帝内务的一切工作,而门下省则成为参预政事的封 驳机关。至此,丞相与尚书的权势被削弱,中央各机构都成了围绕皇帝旋转的大小秘书组织。秘书组织大体上是服务性的,它从根本上就不具有动摇皇帝威权的能 力。

   从机构设置上分职削权,这是皇帝处理自己与臣下关系中最具特色、最为实用且奏效的一种办法。唐代以后虽然有三省六郡制,还有宋代设同平章事、参知政事以及 枢密院等花样翻新,但翻来覆去,目的却只有一个,那就是皇帝集权力于一身,皇帝以下的各种机构设置仅为备员而已,皇帝在处理对臣关系时,最注重的莫过于这 一点了。

Sunday, March 12, 2006

HAO123的迷思----谈谈SEO


都时兴WEB2.0了,我还打算谈SEO,确实有一点落伍。事情是这样的,我最近要写一个无聊的方案书,提纲已经拟了一个月了,就是懒得写正文。所 以我决定把内容拆开了写,独立成章,这样可以发挥我离题万里的特性。如果万幸,我能写完这一系列文章,那每篇删去50%,就可以组合成那个预想中的方案 书。这个方式如果多人合作来做的话,似乎就有那么点WEB2.0的意思了。好象说远了。

HAO123的性质我以为应该是非常的明显,但后来发现即使是很多IT人士,甚至是高手都得出了错误的结论。当然这更大的可能是说明我错了,但我是那种死不认错的人,你们拿我没办法。

最开始看的一篇文章,是说HAO123充分照顾了初学者的需求,用简单的页面罗列最常去的站点LINK,对网友十分友好、方便,所以很多人都把它当 主页。我当时简直要喷饭,稍微有点常识也不会如此吧?我很刻薄,在评论里说作者即使只去个人站长圈子的论坛里看两天,也不会发出如此无知的言论。

但最近我发现几位大腕级别的IT人士,竟然对HAO123也有类似的看法。一人是说中国网民水平低,但他相信如果有更好的站点出现,大家是会接受的,不会只用HAO123。另一人更直接,说他的网站目标就是HAO123,是让那些连后退键都不会使用的网民也能上的网站。

HAO123到底是什么?是低水平网民爱用的,但IT高手看起来傻的站点么?虽然我没见过,但我不排除有人会喜欢HAO123,并主动把它作为起始 页。不过,我觉得把它定位为低水平者爱用的站点,主要是满足大家了大家当高手的心理:我还是比很多低水平的人强啊。有多少人(比例)会主动使用 HAO123?每一个人都说低水平的人喜欢,可低水平的人在哪里呢?

HAO123是随着搜索引擎成长起来的站点。搜索引擎已经铸造了一代人的上网习惯。想一想我们自己,突然想起什么事,或是遇到一个不懂的词,都会立 刻用GOOGLE或者百度来搜索一下。在搜索过程中,我们经常“误入”类似HAO123的站点:你要去下载软件,搜到的是一个有一堆该软件LINK的页 面。当然这也对我们有用,但搜索引擎直接搜索到最终页面,不是更好么?为什么需要这么一个中间的页面呢?用术语来说这叫“桥页”。

桥页是SEO常用的手段。所谓SEO是Search Engine Optimization的缩写,搜索引擎优化的意思。就是说用的手段可以使用户搜索东西的时候,让你的网站排列在靠前的位置。搜索引擎既然成为了大家的 上网习惯,那排列在搜索结果前面的站点自然会得到更多的流量。HAO123类的站点不仅仅是让自己站点在一两个关键词搜索中排在前面,它首先要让基本所有 热门搜索词的结果中都会出现它的结果,而即使这个条目列到很靠后的位置,因为搜索引擎的使用者惊人,还是会带来些许的PV。而当你被收录的和热门搜索词符 合的页面非常多的时候,你的站点流量就会很快上去了。

要是一个一般网站要做到这个,需要非常大的人力。比如你是软件下载站点,那要跟踪很多流行软件的更新,发现最新开发的软件,并且要有安装、使用等一 系列常识。而且没有人可以在各个方面都做到优秀。一个做软件下载好的站点,不见得做得好MP3,即使也能做MP3,总不能铃声图片也能做?游戏网址 ,宽带电影,软件下载,爱情交友……

HAO123能做到。因为他们根本不关心最终结果,即使有错误也不影响。它要做的就是预先分析最可能的搜索词,然后搜集做这些的网站网址,来一个大 汇总。这样搜索什么关键词,它都有一个页面等着你,这虽然也要花精力,但比维护一个“正常”站点要省力多了。而这些页面即使不正确,对用户没帮助,对 HAO123也是没损失的。

这样的页面为什么会在搜索结果中排列的还比较靠前呢?首先要说搜索引擎的收录机制。你的网页做的再好,搜索引擎不知道也是白搭。搜索引擎会派出它的 “爬虫”,一个自动收集网页的程序,在网上顺着连接,把遇到的每一个页面带回去放到搜索引擎的数据库中。当它遇到HAO123时,它会发现找到了一个“富 矿”。

搜索引擎的爬虫不象人那样聪明,它只能按照固定的规则来收取页面。这样它就会比较偏好简单的、好分析的页面。如果一个连接是动态的,后面有太多的参数,比如http://www.tianyaclub.com/New/PublicForum/Content.asp?flag=0&idWriter=0&amp... 爬虫处理起来就会很累,有的爬虫索性不收录这样的页面,因为这样的动态页面可能都是从数据库中读取的,理论上可以随着你的参数不同,变出无数的页面。也许会构成一个爬虫永远走不出的迷宫。现在搜索引擎都能对付一些动态页面,但它们都更喜欢简洁的固定页面,比如 http://www.hao123.com/music.htm

爬虫喜欢更有效率的工作,收集完一个页面会沿着页面上的LINK再收集下级的页面。这样我们就能判断出它偏好的页面样子:简单,没什么多余的看不懂 的结构、程序,最好上面有很多的LINK,可以让自己继续收集。如果这LINK通往的下级页面也是这样,我们可以想象爬虫会高兴的说:可找到你了。我太拟 人化了。其实这些是编写爬虫程序的工程师们的想法,他们把这写进了爬虫的工作规则。HAO123类的桥页就符合这样规则。

爬虫有多厉害呢,我曾经做过的网站,有一个类似这样的桥页系统。平常的访问很低,40000左右,但有时会突然暴涨到8万。不用说,我知道,昨天百 度的爬虫来访问过了。如果你做的对它的胃口,它会老来,每天吃掉你给它提供的页面。这对搜索引擎来说是可以理解的,它也希望收集更多的页面来提供给用户。 (当然我做的不是垃圾站点,这后面还要说)

解决了收录这一步,剩下的要由搜索引擎分析,什么样的站点会排到前面。首先同样它喜欢简单的页面,因为它自己智力有限。其次它喜欢符合规则的页面, 有规则它才能判断。桥页因为简单,这两点都会做的很好。然后因为搜索引擎没法用自己使用这些页面凭感觉来判断好坏,所以它重要的参考就是如果别处有更多的 这个站点连接,那么说明这个站点更重要。这道理成立,但是桥页很容易做到了这点,因为它是专门做连接的。它添加了一个站点,要求对方也做它的友情连接是很 正常的互换。不过它是专门做这个的,它可以得到的友情连接要比“正常”网页要多的多。而且这是相互影响的,当它在搜索引擎地位提高了,它要求别的站点做友 情连接时就更可能得到回应,于是形成正循环。

这还是比较“台面”上的技巧。具体到HAO123来说,它还有一系列同类型的站点。它们之间互相做连接,搜索引擎也会因此提高所有这些站点的等级,互相促进。据说ALEXA前列的站点中,HAO123的所有者还有至少10几个同类型的站点。

若这些还算只欺骗搜索引擎的话,剩下的行为就更让那些要学习HAO123的IT大腕考验自己的良心了。HAO123早期是靠病毒修改用户主页的。不 仅仅它这么做,它的一系列站点也都这么做,据说它还用过QQ病毒传播。这些现在已经找不到痕迹,它已经成功洗白了自己。但有一点还存在,就是网页总会跳出 来提示,让你把HAO123设为主页。即使现在HAO123本身不这么做了,它的子站点依然还有这么做的痕迹。你可能访问一个看起来无关的站点,而把 HAO123设成了主页。HAO123就是靠它SEO的一系列站点,成功的让很多计算机把它设成了主页。

这也是某些观察家们所说的,低水平用户欢迎,甚至喜欢到会把它设成主页的地步。我们去网吧看看,也确实能发现很多机器这样,因为大家对网吧的机器更 不在乎,让我按“确定”我就按呗。网吧确实是中国特色,但我不认为HAO123是某些IT人士理解的中国特色。顺便说一句,要了解一般网民习惯的IT人士 请抽出时间,定期去网吧。先观察大家在干什么、比例,然后再着重看某一个浏览页面的人,看他上网具体的点击习惯,和遇到的困惑。最后找台机器,把历史记录 考下来,发到自己邮箱里,回去做网站访问分析。多做点基本功,别老畅想。

又说远了。

SEO手段还有很多,很细致具体。我只重点说了桥页。一方面我不可能详细介绍,这可以写专著了。另一方面很多技巧我也不知道。但大家只要想一下,很多站长靠这个就可以吃饭了,就明白这是一个很复杂的系统。

所以说HAO123类站点在某种程度上是寄生在搜索引擎上的,而不是为了满足低水平用户需求。某种意义上我们说“纯洁”的GOOGLE其实也助长了 垃圾站点的产生。我要是GOOGLE,早把此类站点手动清除了。但GOOGLE 的原则是相信程序,不会人工干预。另外它们虽然反对(并准备惩罚)桥页类的SEO,但可能对中国类型的桥页应用还不是很重视吧,做起来确实没看到什么成 效。百度就更奇怪了。HAO123已经靠流量卖广告实现了赢利,被收购也不奇怪。但谁收购它也不应该是百度收购,因为SEO站点的技巧,搜索引擎最清楚。 谁需要SEO的站点,也不该是百度需要。那些说百度需要一个静态目录站点来帮助完善的人,完全混淆了dmoz.org类的INDEX服务和HAO123类 站点的区别。但这些外人可能混淆,做搜索引擎的人不会混淆。那么为什么收购HAO123呢?

我不喜欢简单嘲弄收购傻,能花几千万的人都不会太傻。回忆一下,那些我们曾经见过的最傻的网站烧钱行为。嘲笑他们傻?但谁傻了呢?每个过手的人都可能赚的脑满肠肥。谁傻?是他们还是我们这些没赚到钱的看客?呵呵,看出来了吧,我开始往恶意度人的道路上引导大家。

最会SEO的是谁?当然是掌握全部搜索引擎规则的人。谁掌握全部规则?要是这个人后来又收购了该SEO站点,他傻?呵呵,我本能的反射是:洗钱。当然了,我没有说我这感觉是对的。反射嘛,不走脑子,也不负责任。只不过暴露一下我的阴暗心理。

第N次说远了。

SEO是不是一无是处?不是。搜索引擎已经成为用户习惯,适应用户习惯本来就是我们应该做的。搜索引擎是告戒大家不要去适应引擎,只要适应用户,自 然会在引擎上体现。理想情况当然是这样。但我可以举例。某个很有名的BLOG,当别人问为什么搜索到该BLOG文章时,列出的不同文章标题都是一样的? 答:因为工程师图省事,是用一段JS程序来改写某个页面的TITLE。

TITLE就是我们打开浏览器显示在左上角的东西,这个如果显示的是具体内容的标题,当然比千篇一律的显示该站点的名称要符合用户习惯。但用JS来 实现该功能,开发上更省事,对用户来说也没什么大区别。按照搜索引擎的只要适应用户原则,应该对该做法一视同仁。但搜索引擎不是人,它很笨。它不会看JS 显示的结果,它对JS的态度是直接跳过,只去读它读的懂的简单东西。

而很不幸,一般来说TITLE是搜索引擎判断页面是否符合搜索词的重要因素。所以用这个很方便的对用户也很友好的方式,对网站访问却很吃亏。如果你想改进,就一定不能只考虑用户,而要专门考虑搜索引擎,也就是SEO。

所以,我前面说的要学习HAO123的大腕其实他的网站是很适合SEO的网站,只要他不认为HAO123确实方便用户,他去采用SEO技巧其实是很对路的----只要你做的本身对网民有用,而不仅仅是垃圾,那么期望通过搜索引擎带来更多的网民访问就无可非议。

又比如桥页,我说的我曾经做的类似桥页,其实是一个排行列表。它是有一个无数LINK的,假静态页。但这个页对用户来说是有价值的,从这个页面找所 需要的东西就是很方便。虽然我做了专门对搜索引擎的优化,但不能说我的SEO是不对的。这个页成为搜索引擎收录这个站点的入口。因为每个LINK后面对网 民都有价值,所以希望他们从搜索引擎找到这些页,就不是垃圾SEO。

其实所谓WEB2.0(我非常讨厌这个词)的一些东西恰恰无形中适应了SEO要求。比如RSS,这样规范的XML语言对搜索引擎非常友好。所以 BLOG类的站点在GOOGLE相关结果上都会排的比较高(当然了GOOGLE的规则本身也对这类站点有利,这个从其他地方能看出来,就不深说了)。还有 WEB2.0站点代码都很规范、简洁,不为SEO考虑,这本来也是我们应该做的。早期国内门户繁杂的页面,混乱的代码,影响了大家的审美是小事,代码混乱 对开发、再组织,都会是很头疼的事。所以某种意义上,我们的大站、门户,还不如HAO123做的好。

我们看FLICKR,没有人会说它试图SEO吧?但你看,它分给每个人地址就是http://www.flickr.com/photos/xba/ 这样简单。仅仅这个很多站点还能做到,但它里面所有的连接,都是这样 http://www.flickr.com/photos/xba/sets/608668/ 假静态的地址形式,这就很考验工程师的水平和耐心了。难道它不知道http://www2.tianyablog.com/blogger/post_show.asp?BlogID=18398&PostID=180370... 这样的连接,开发起来要简单的多么?对于FLICKR的细致我们不能只佩服,要去学到它每一点小地方的用意。

所以SEO虽然产生了很多垃圾站点,但一个优秀的站点,它也应该去学习SEO技术,帮助搜索引擎,也同时帮助网民,最重要的是这会帮助它自己。

Sunday, March 05, 2006

Answer Re: SorceSafe 2005 -- Visual Studio 2003 Issue/ help needed

Some of the answer is in this post
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=1130

Basically, if you really want to browse the service and view the functions, you have to edit the web.config file for the service, set the customErrors to Off or RemoteOnly (which you already did if you got the "Request format is unrecognized" error), and also remove the '' line.

Note however that you may be able to browse the service from IE and still not be able to connect to the service with VisualStudio. Getting the "Request format is unrecognized" error message doesn't mean your web service is improperly configured - it is just a security measure, so it's advisable to let it disabled.
If you let custom errors off, an attacker may try to pass bad data to the service, obtain exceptions, then he may get information about your sistem from the errors' callstacks. You'd probably want to play on the safe side and let the custom errors on...

But let's come back to the initial problem...
Since you don’t want to use SSL, what you really need to make VisualStudio connect to the service is:
1) in Ssadmin Server/Configure, uncheck "require SSL"
2) in Ssadmin, add a VSS user matching your Windows account you authenticate with the server (default is domain name user). When SSL is not used, VisualStudio will not pass VSS user names and passwords to the service; the service will perform impersonation and attempt to open the database with the Authenticated user name.
3) have this username with empty password, or if you set a VSS password make sure you check in SSAdmin/Tools/Options/General "Use Network Name for automatic logon"
4) in VisualStudio Tools/Options/SourceControl/SccProvider/Advanced -> uncheck the "use SSL connections" checkbox
5) on the database share
\\shared\folder grant Read/Write access to your Windows account name used to authenticate with the server (default is domain name user). Also, don't forget to set Read/Write NTFS permissions on the database folder for your username.
You don't need to grant permissions to the account used by the service to run (NT AUTHORITY\NETWORK SERVICE on Win2k3 or ASPNET on WinXP and W2k) because the
vss service uses impersonation when accessing the database.

With these settings, you should be able to connect to the database without using SSL.

If you want now to use SSL, just install a certificate on the server (in IIS Manager), then use SSAdmin/Server/Configure and RequireSSL when connecting to the service. You don't need to toggle the "Always use SSL" setting in VisualStudio in Tools/Options/SourceControl/SccProvider/Advanced because VisualStudio will detect that SSL is required and will automatically switch to https (although for performance reasons you may want to set the option, so you don't have to wait until VS detects http connections are not allowed). When connecting with SSL, steps 2 and 3) above are not required (you can use any VSS user name).

Friday, March 03, 2006

CNN评出25个典型的下一代互联网公司

第一部分:社会性媒介

这种网站上的内容都是用户创造产生的,这些内容包括3000万篇的blog和Flickr上的7000万张图片。通过鼠标的点击,任何人都有

可能是个记者、摄影师或者DJ师。通过网络连接起来近10亿的用户通过自己创造形成一种社会性媒介,这可能创造上百万的商业机

会,下面列举的网站就是其中的典范。


Digg(信息聚合)

这个网站的内容都是用户挑选,现在发展速度每三个月就翻番,首页的新闻是由用户投票的数。许多人称digg.com是slashdot.org

的终结者,这句话可能是对的。Digg.com是一个很好的科技新闻聚合中心,全部依靠用户的参与,而没有任何编辑行为。

Last.fm(社会性电台)

网站创造一种个性化的无线平台,在网络上共享你的音乐列表,或者帮你寻找和你收听的音乐类似的音乐素材。Last.fm它一部分是

社会性音乐书签,一部分像个人音乐书签。我认为,如果你电脑里的音乐很多,Last.fm会是你音乐管理的好助手。


Newsvine(协作出版)

Newsvine整合了Digg及BSP的功能,为用户提供了一个强大的信息交流平台。

Newsvine的目的也在于信息共享,它可以像Digg那样由用户提交信息并按照用户提交的次数来排列新闻。不过Newsvine的功能要强

大得多,它还为用户提供了一个非常完整的Blog功能,包括二级域名、分类、Tags等,可以把Newsvine当成一个不错的Blog系统来

使用。当然,在Blog中的文章也都可以非常方便的提交到Newsvine的新闻系统中。

Newsvine不但为用户发布信息和内容提供了很好的环境,在Newsvine里阅读新闻也有种种的方便。Newsvine对新闻按照主题和地域

进行了分类,而阅读某一Tag的新闻也只需要输入http://www.newsvine.com/tagname 这样的地址就能直接访问。另外,你还可以使

用Watchlist来跟踪某个主题、Tag或者是作者的文章。

Newsvine在正式推出是,还将引入广告收入共享机制。文章的作者将得到高达90%的广告收入!值得一提的是,Newsvine似乎已经邀

请了不少专业的新闻工作者来撰写新闻。Newsvine是否会再创造一个像Digg那样成功的信息分享模式,还是很值得一瞧的。

http://www.playmyself.com/post/550.html


Tagworld(社交网络)

TagWorld是一个帮你建立社会性web-base服务的网站,提供web2.0下的多种服务:blogging,bookmarking, photos and other …

最近流行的web2.0下的所有服务几乎tagworld全部提供。tagworld在几个月前开始测试,到现在已经拥有了75000名会员。

http://blog.bsdos.cn/archives/71


YouTube(视频共享)
YouTube是用于上传和共享视频的. 允许上传不同格式的视频文件,也可以把视频转换成flash格式,便于上传到blog和网页上。


Yahoo!

有希望成为最强大的社会性软件提供者,目前已经收购了Del.icio.us, Flickr, Webjay,最近还发布了社会性搜索工具My Web 2.0

,搜索结果依照网络书签和tag的共享次数。


第二部分:信息整合和筛选

现在的信息量已经极其庞大,在下一代网络发展中,必须信息打乱重新整合和筛选,这样才能满足人

们对信息的需求,下面的一些网站主要提供一些信息整合的新办法。


bloglines(在线rss阅览器)

网站收集blog和其他网页的feed,整理订阅的信息并且保持不停的更新。


Eurekster(搜索整合)

Eurekster是一种DIY搜索软件,搜索引擎和google具有相同的功能,但是却比它拥有更大的优势。消费者能从他这里得到更满意的

结果,他的产品可以过滤掉其他不相干的信息,还可以把用户想使用或者下载的东西通过邮件发送,从而使搜索变得更加简便。并

且能有记忆功能,从以往的搜索项目中给出最切实的信息。


Simply Hired(职位搜索)

Simply Hired提供450万的求职和企业招聘信息,用户可以定制自己合适的工作。


Technorati(blog搜索工具)

网站筛选3000万已有的blog,展示有多少个其他blog有着类似的tag,通过主题来排列blog。


Trulia(定位系统)

利用Google Maps技术,为客户提供家庭列表,初期在加利福尼亚开展业务,现在已经扩展到其他区域。


Wink(tag搜索引擎)

通过搜索用户使用Del.icio.us和Digg产生的tag,Wink通过tag筛选网站,用户还可以增加自己的书签和tag。


Google


不介绍了!


第三部分:新型电话

近一个世纪,电话还是使用铜线连接,但是现在有的服务提供转换声音为网络数据包,可以更快捷传输,也不

用昂贵的基础设备。下一代网络就会提供这些廉价IP电话服务,这将创造很多商机。


Fonality(开源的电话软件)

100美元可以得到一个小盒子,这样电脑可以通过这个软件来模拟电信的交换机系统,而这个价格只有电信的1/5。


SIPphone(网络电话软件)

一块应用软件,可以免费的PC-to-PC通话,也有很便宜的PC-to-phone电话。

Iotum(信息管理软件)

使用这款软件,用户可以随时随地掌握接收到的声音和文本数据,包括打来的电话,e-mail,RSS以及可以阻止来电号码。

Vivox(P2P声音传输技术)

该服务整合声音、视频、通讯信息和社交网络到数据网络里。

Skype

不介绍啦。


第四部分:网络应用软件

桌面软件自从80开始就占据到近,但今天网络应用软件开始活跃。现在杀手级的应用软件不再需要数百

万美元的开发成本了,只要三到四个工程师就可以实现网络化操作。如今网络软件改变软件革命,从文本到声音和视频,各种应用

层出不穷。


JotSpot(Wiki和在线制表软件)

网络协作软件的先驱,提供Wiki和强大的在线电子数据表。


30Boxes(在线日历)

家庭成员或者小组成员可以可以使用这款软件建立自己的社交网络,事务处理进度表,共享图片等。


37Signals(在线计划管理)

选择需要处理事情的轻重缓急,跟踪处理列表,以及处理情况评测,是一款非常强大的个人在线管理软件。


Writely(在线文本处理程序)

在线处理和保存文本信息,随时随地可以打开文本信息,还可以共享和发布。


Zimbra(在线e-mail)

开发瞄准Microsoft Outlook网络版,Ajax架构可以填充许多其他应用程序,比如使用Skype对接联系号码,在Google map上标记任

何住址。


Microsoft

发布Windows Live, Office Live和其他下一代网络处理程序,又开始谋求在线处理程序的垄断。


第五部分 一些公司提供一个网络应用平台可以运行其他软件和商业活动,或者开发一些基础工具,为下一代网络发展提供基础。


Brightcove(在线电视发行)

为大大小小的视频节目制造商提供网络发行平台。


Jigsaw(商业机构联系数据库)

销售人员通过此数据表可以拥有和管理近15万公司的联系数据。

SimpleFeed(RSS 工厂)

为个人提供RSS定制和成批处理服务,公司做起RSS市场买卖。


Salesforce.com(在线软件交易应用平台)

通过AppExchange希望成为最大的在线软件交易平台。

Six Apart(blog协作工具)

公司主要运营离线blog应用软件。

Amazon

在自己平台上的提供其软件开放端口,允许任何人使用他的分类和其他数据信息。他的Alexa是目前最好的网站访问排名系统。