<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>demo@virushuo</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/" />
    <link rel="self" type="application/atom+xml" href="http://blog.devep.net/virushuo/atom.xml" />
   <id>tag:blog.devep.net,2010:/virushuo/2</id>
    <link rel="service.post" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2" title="demo@virushuo" />
    <updated>2010-07-17T05:32:43Z</updated>
    <subtitle>霍炬的网络日志 | huoju&apos;s blog</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.23-en</generator>
 

<entry>
    <title>如何使用Core Text计算一段文本绘制在屏幕上之后的高度</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/07/17/cocoa-core-text-text-height.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=680" title="如何使用Core Text计算一段文本绘制在屏幕上之后的高度" />
    <id>tag:blog.devep.net,2010:/virushuo//2.680</id>
    
    <published>2010-07-16T18:32:21Z</published>
    <updated>2010-07-17T05:32:43Z</updated>
    
    <summary>Core Text提供了一系列方便的函数，可以很容易的把文本绘制在屏幕上，对于一个Frame来说，一般并不需要担心文本的排列问题，这些Core Text的函数都可以直接搞定，只要给他一个大小合适的CGRect就可以。 但，在某些情况下，我们还希望知道这段文本在绘制之后，对应绘制的字体字号设置，在屏幕上实际占用了多大面积。举例来说，有文本段落a，屏幕大小rect，通常做法是以rect创建path，然后创建CTFramesetter，再然后创建CTFrame，最后用CTFrameDraw画出来，这时候，往往文本段落占用的实际面积会小于rect，这时候就有必要获得这段文本所占用的真正面积。 最理想的情况是使用 double CTLineGetTypographicBounds( CTLineRef line, CGFloat* ascent, CGFloat* descent, CGFloat* leading ); 这是Core Text提供的函数，传入CTLine，就会得到这一行的ascent,descent和leading，在OSX上通常可以工作的很好，但是在iOS(iPhone/iPad)上这个函数的结果略有不同。 正常情况下，计算行高只需要ascent+descent+leading即可。在这个略有不同的情况下，leading的值会出现偏差，导致算出来的结果是错误的。如果不管行距，ascent+descent计算出来的Glyph的高度还是正确的。 这样就有了第一步 在创建用于绘图的CFAttributedStringRef时，除了设置字体，多设置一个CTParagraphStyleRef，其中特别应该确定行距kCTParagraphStyleSpecifierLineSpacing。在计算这里时，先逐行计算ascent+descent，累加起来，再加上一个行数*之前设置好的行距，这样算出来的就是这些文本的实际高度，CTLineGetTypographicBounds返回的结果是宽度，这样就可得到文本实际填充面积的Rect了。 但是这还是有问题，因为OSX上和iOS处理不同，所以事实上iOS的模拟器和真机的最终效果是不一样的，这样调试程序很麻烦。 于是还需要第二步 在最终往页面上绘制的时候，不再用CTFrameDraw来一次绘制全部，而是使用CTLineDraw逐行画，在画之前，先用CGContextSetTextPosition来设置好每行文本的位置。这样就保证了在任何平台上绘制效果一致。 问题就解决了。 CoreText在OS X和iOS上实现有很多细节区别，比如说，对CTRun的划分方式也不一样，在iOS上划分出来的Run数量比OSX上少很多，是按照字体划分的Run，按照文档出来，这是正确的，但OSX上是一个字一个Run这样划分的，和文档不符。iOS上的处理显然效率更好。 stackoverflow 上有一个类似的讨论，不过没考虑到iOS的区别...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="偶尔谈谈技术" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p><a href="http://developer.apple.com/iphone/library/documentation/Carbon/Reference/CoreText_Framework_Ref/index.html">Core Text</a>提供了一系列方便的函数，可以很容易的把文本绘制在屏幕上，对于一个Frame来说，一般并不需要担心文本的排列问题，这些Core Text的函数都可以直接搞定，只要给他一个大小合适的CGRect就可以。</p>

<p>但，在某些情况下，我们还希望知道这段文本在绘制之后，对应绘制的字体字号设置，在屏幕上实际占用了多大面积。举例来说，有文本段落a，屏幕大小rect，通常做法是以rect创建path，然后创建CTFramesetter，再然后创建CTFrame，最后用CTFrameDraw画出来，这时候，往往文本段落占用的实际面积会小于rect，这时候就有必要获得这段文本所占用的真正面积。</p>

<p>最理想的情况是使用</p>

<p>double CTLineGetTypographicBounds( CTLineRef line, CGFloat* ascent, CGFloat* descent, CGFloat* leading );</p>

<p>这是Core Text提供的函数，传入CTLine，就会得到这一行的ascent,descent和leading，在OSX上通常可以工作的很好，但是在iOS(iPhone/iPad)上这个函数的结果略有不同。</p>

<p>正常情况下，计算行高只需要ascent+descent+leading即可。在这个略有不同的情况下，leading的值会出现偏差，导致算出来的结果是错误的。如果不管行距，ascent+descent计算出来的Glyph的高度还是正确的。</p>

<p>这样就有了第一步</p>

<p>在创建用于绘图的CFAttributedStringRef时，除了设置字体，多设置一个CTParagraphStyleRef，其中特别应该确定行距kCTParagraphStyleSpecifierLineSpacing。在计算这里时，先逐行计算ascent+descent，累加起来，再加上一个行数*之前设置好的行距，这样算出来的就是这些文本的实际高度，CTLineGetTypographicBounds返回的结果是宽度，这样就可得到文本实际填充面积的Rect了。</p>

<p>但是这还是有问题，因为OSX上和iOS处理不同，所以事实上iOS的模拟器和真机的最终效果是不一样的，这样调试程序很麻烦。<br />
于是还需要第二步</p>

<p>在最终往页面上绘制的时候，不再用CTFrameDraw来一次绘制全部，而是使用CTLineDraw逐行画，在画之前，先用CGContextSetTextPosition来设置好每行文本的位置。这样就保证了在任何平台上绘制效果一致。</p>

<p>问题就解决了。</p>

<p>CoreText在OS X和iOS上实现有很多细节区别，比如说，对CTRun的划分方式也不一样，在iOS上划分出来的Run数量比OSX上少很多，是按照字体划分的Run，按照文档出来，这是正确的，但OSX上是一个字一个Run这样划分的，和文档不符。iOS上的处理显然效率更好。</p>

<p>stackoverflow 上有一个<a href="http://stackoverflow.com/questions/2707710/core-texts-ctframesettersuggestframesizewithconstraints-returns-incorrect-size">类似的讨论</a>，不过没考虑到iOS的区别 </p>]]>
        
    </content>
</entry>

<entry>
    <title>美国馆和他们的社会化媒体</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/05/25/post_74.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=679" title="美国馆和他们的社会化媒体" />
    <id>tag:blog.devep.net,2010:/virushuo//2.679</id>
    
    <published>2010-05-25T11:48:11Z</published>
    <updated>2010-05-25T11:51:28Z</updated>
    
    <summary>周日，应邀参观世博美国馆，并参加东·西极客会。 活动本身并不出奇，我算不得反对世博人士，但对于一个虚拟生活的倡导者（用通俗的话来说就是足够宅）的人来说，去现实中参加一场展览型的活动是毫无意义的，这类&quot;信息&quot;在虚拟世界一览无遗，我并不需要去美国馆才能获知美国精神，也不需要去日本馆才知道日本人玩什么。估计主办方也明白这事，花钱再多也很难让观众新奇，所以，大家不约而同选择了放电影（或称短片）的方式。 基于同样的原因，对于极客见面会也并无太多期望，当然能见到很多传说中的ID之后的人物也是非常有趣的。这次西方来的geek甚至有一个twitter id是两个字母的家伙。好玩之处是，西方的geek比东方健谈，他们似乎更愿意和人交流，而不象东方geek们随身带着各种数码装备，手机，笔记本，iPad一应俱全，随手拿出来就开始玩。不知道这种差别是什么造成的，但是想想&quot;宅&quot;这个词也是发源于东方，似乎也有点道理。 真正让我感觉震惊的是美国馆的社会化媒体。这是一个慢热的过程，最开始，一个非常中国化的ID @meiguoguan 出现在twitter上，那时候正逢&quot;历史老师真假&quot;事件时期，中文twitter圈子蔓延着怀疑一切的风气，对于这个ID，第一个问题就是真或假。当然，现在我们都知道这个ID是真的，而且是特意本土化的。 等我们参观回来，这个ID终于爆发出了神奇的一面，他竟然针对每个来宾，在twitter上定制化的一一发送了问候语，给我的是&quot;感谢您的光临美国馆奇客日，期待你更多毛衣科技计划&quot;，所谓毛衣科技计划，是我一直在跟他们讲最近的流行词&quot;毛衣&quot;所致。看到这条推，我确实笑出来了。这种应用社会化媒体的方式确实很别致，至少是我第一次体验。大部分所谓的官方帐号，都是发布官方新闻而已。那种玩法其实根本不需要人，只要把一个rss源同步到社会化媒体即可，意义并不大。最令人惊喜的社会化媒体，是让人感觉帐号后面确实是一个人而不是程序，是可以交互的，对方是知道你，并且理解你的，这会令人印象深刻。美国馆场馆本身，与观众并无太多交互（其实这大概也是所有场馆的问题），现实中的交互很难，网上的交互则容易的多，需要转换的往往只是观念。世博刚刚开始，还有几个月的时间，可以供他们发挥，希望能看到更多有意思的互动发生。 回到开头，做为一个虚拟生活的倡导者，我认为在这种场合，虚拟化会高于现实也是同样原因，更多的交互和更方便的获取信息，终究会替换掉平淡，笨重又消耗资源的现实游览。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="胡言乱语" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>周日，应邀参观世博美国馆，并参加<a href="http://blog.usapavilion2010.com/2010/05/23/east-meets-west-geeks-meetup/">东·西极客会</a>。</p>

<p>活动本身并不出奇，我算不得反对世博人士，但对于一个虚拟生活的倡导者（用通俗的话来说就是足够宅）的人来说，去现实中参加一场展览型的活动是毫无意义的，这类"信息"在虚拟世界一览无遗，我并不需要去美国馆才能获知美国精神，也不需要去日本馆才知道日本人玩什么。估计主办方也明白这事，花钱再多也很难让观众新奇，所以，大家不约而同选择了放电影（或称短片）的方式。</p>

<p>基于同样的原因，对于极客见面会也并无太多期望，当然能见到很多传说中的ID之后的人物也是非常有趣的。这次西方来的geek甚至有一个twitter id是两个字母的家伙。好玩之处是，西方的geek比东方健谈，他们似乎更愿意和人交流，而不象东方geek们随身带着各种数码装备，手机，笔记本，iPad一应俱全，随手拿出来就开始玩。不知道这种差别是什么造成的，但是想想"宅"这个词也是发源于东方，似乎也有点道理。</p>

<p>真正让我感觉震惊的是美国馆的社会化媒体。这是一个慢热的过程，最开始，一个非常中国化的ID <a href="http://twitter.com/meiguoguan">@meiguoguan</a> 出现在twitter上，那时候正逢"历史老师真假"事件时期，中文twitter圈子蔓延着怀疑一切的风气，对于这个ID，第一个问题就是真或假。当然，现在我们都知道这个ID是真的，而且是特意本土化的。</p>

<p>等我们参观回来，这个ID终于爆发出了神奇的一面，他竟然针对每个来宾，在twitter上定制化的一一发送了问候语，给我的是"<a href="http://twitter.com/MeiGuoGuan/status/14555836069">感谢您的光临美国馆奇客日，期待你更多毛衣科技计划</a>"，所谓毛衣科技计划，是我一直在跟他们讲最近的流行词"毛衣"所致。看到这条推，我确实笑出来了。这种应用社会化媒体的方式确实很别致，至少是我第一次体验。大部分所谓的官方帐号，都是发布官方新闻而已。那种玩法其实根本不需要人，只要把一个rss源同步到社会化媒体即可，意义并不大。最令人惊喜的社会化媒体，是让人感觉帐号后面确实是一个人而不是程序，是可以交互的，对方是知道你，并且理解你的，这会令人印象深刻。美国馆场馆本身，与观众并无太多交互（其实这大概也是所有场馆的问题），现实中的交互很难，网上的交互则容易的多，需要转换的往往只是观念。世博刚刚开始，还有几个月的时间，可以供他们发挥，希望能看到更多有意思的互动发生。</p>

<p>回到开头，做为一个虚拟生活的倡导者，我认为在这种场合，虚拟化会高于现实也是同样原因，更多的交互和更方便的获取信息，终究会替换掉平淡，笨重又消耗资源的现实游览。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>写在ipad即将到来的时候</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/04/05/ipad_coming.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=678" title="写在ipad即将到来的时候" />
    <id>tag:blog.devep.net,2010:/virushuo//2.678</id>
    
    <published>2010-04-05T12:49:12Z</published>
    <updated>2010-04-07T15:42:50Z</updated>
    
    <summary>我的朋友jack，这几天恰好在夏威夷，于是我就非常幸运的拜他所赐，买到了一个ipad。这可能是国内比较早的一批ipad吧。很多人难以理解Apple到底是什么东西，很多人嘲讽ipad是个无用的产品，很多人对苹果的印象是贵，样子好看等等，不幸的是，他们不了解这个公司，也不了解这个产品。似乎一个好的产品总是拥有完全相反的两方意见。 2001年12月，苹果发布了ipod，那&quot;只不过&quot;是个音乐播放器，从此拉开了一个新时代的帷幕。这是一个把计算能力放在掌心和身上的时代。苹果曾经试图把计算能力放到每个桌面上，不过那一次失败了，开放的wintel联盟打败了封闭的苹果。最终我们看到，大部分桌面的计算设备是微软的操作系统和PC。 在PC尚未普及到所有桌面的时候，移动计算的时代就开始了。这场战争从传统的手机制造商开始，Palm和Nokia曾经如日中天，曾经人们担心微软会重复在PC端的垄断，再次垄断移动设备。但是没多少人注意到苹果的行动，苹果从移动音乐设备进入，起初的对手看起来是SONY之类的消费电子制造商，现在回头看来，这是一个正确的选择。移动音乐设备的拥有量甚至不低于手机。 等到苹果发布itouch的时候，局势就已经确定了。无论是SONY，微软，NOKIA...没有一个厂商可以做出来更好的产品。是的，苹果有很多缺点，但竞争对手的缺点更多。 做为开发者，我尝试了一些设备，包括很多人认为有望和苹果抗衡的Android。结果非常令人失望。到目前为之，苹果的产品仍然是对于开发者最友好的产品。 系统的封闭和开放，其实并不会改变产品的可用性，甚至产品是否开源，也并不改变产品的可用性。Android的开放性并没有带来太多好处，无论是对于最终用户还是开发者。而苹果，无论对于用户还是开发者，都是在目前条件下最好的选择。我用以下几点来论证我的观点： 1 对于用户来说，苹果用户的体验是平滑的，Android用户的体验有障碍（别的不说，就那一堆按键就足够烦人了） 2 对于用户来说，在appstore上获得的软件，无论免费还是收费，质量都高于android market 3 对于用户来说，主流Android手机和iphone的价格差距只有1/4 4 对于开发者来说，花费同样的精力可以在Cocoa平台上开发出更好的应用，因为其标准统一，不需要担心太多不必要的问题。 5 对于开发者来说，appstore完成了推广，收款代理，展示多个流程，只分30%的收益，实在超值，做共享软件的随便找个收款代理，分成比例都要至少20%这个，他们可只负责收款，你还要把更多的钱交给软件下载站，推广站... 6 对于开发者来说，Android的商用价值毫无意义，我不太可能跑去为一个汽车电子厂商工作，但我有可能业余时间写几个小程序放在appstore玩玩。 7 对于小型商业用户，平台是否封闭，许可证价格高低，对他们影响并不大，无论是WinCE还是iphone/ipad，有人能做出来好用的app才是关键(GPS导航基本都采用winCE，也卖的好好的，用户才不关心下面是CE还是Android，他们买的是导航仪) 8 对于大型商业用户，Android仍然不堪用，他们仍然要基于Linux自己开发。 9 对于所有人，Android未来并非毫无机会，但现在实在不值得投入。 我拿到ipad，会在上面做一些东西。我坚信ipad在教育，多媒体等等方面都会有非常突出的表现。原本需要买6000块钱的计算机的场合，现在用3000块钱的ipad就可以代替了，从价格上看，对大部分用户也是值得的。 Android尚且可以拿来和Cocoa平台比较，而悲剧的Symbian，甚至连被比较的价值都没有了。移动计算这个市场，距离nokia越来越远了。 english version...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="随便" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>我的朋友jack，这几天恰好在夏威夷，于是我就非常幸运的拜他所赐，买到了一个ipad。这可能是国内比较早的一批ipad吧。很多人难以理解Apple到底是什么东西，很多人嘲讽ipad是个无用的产品，很多人对苹果的印象是贵，样子好看等等，不幸的是，他们不了解这个公司，也不了解这个产品。似乎一个好的产品总是拥有完全相反的两方意见。</p>

<p>2001年12月，苹果发布了ipod，那"只不过"是个音乐播放器，从此拉开了一个新时代的帷幕。这是一个把计算能力放在掌心和身上的时代。苹果曾经试图把计算能力放到每个桌面上，不过那一次失败了，开放的wintel联盟打败了封闭的苹果。最终我们看到，大部分桌面的计算设备是微软的操作系统和PC。</p>

<p>在PC尚未普及到所有桌面的时候，移动计算的时代就开始了。这场战争从传统的手机制造商开始，Palm和Nokia曾经如日中天，曾经人们担心微软会重复在PC端的垄断，再次垄断移动设备。但是没多少人注意到苹果的行动，苹果从移动音乐设备进入，起初的对手看起来是SONY之类的消费电子制造商，现在回头看来，这是一个正确的选择。移动音乐设备的拥有量甚至不低于手机。</p>

<p>等到苹果发布itouch的时候，局势就已经确定了。无论是SONY，微软，NOKIA...没有一个厂商可以做出来更好的产品。是的，苹果有很多缺点，但竞争对手的缺点更多。</p>

<p>做为开发者，我尝试了一些设备，包括很多人认为有望和苹果抗衡的Android。结果非常令人失望。到目前为之，苹果的产品仍然是对于开发者最友好的产品。</p>

<p>系统的封闭和开放，其实并不会改变产品的可用性，甚至产品是否开源，也并不改变产品的可用性。Android的开放性并没有带来太多好处，无论是对于最终用户还是开发者。而苹果，无论对于用户还是开发者，都是在目前条件下最好的选择。我用以下几点来论证我的观点：</p>

<p><strong>1 </strong>对于用户来说，苹果用户的体验是平滑的，Android用户的体验有障碍（别的不说，就那一堆按键就足够烦人了）</p>

<p><strong>2 </strong>对于用户来说，在appstore上获得的软件，无论免费还是收费，质量都高于android market</p>

<p><strong>3 </strong>对于用户来说，主流Android手机和iphone的价格差距只有1/4</p>

<p><strong>4 </strong>对于开发者来说，花费同样的精力可以在Cocoa平台上开发出更好的应用，因为其标准统一，不需要担心太多不必要的问题。</p>

<p><strong>5 </strong>对于开发者来说，appstore完成了推广，收款代理，展示多个流程，只分30%的收益，实在超值，做共享软件的随便找个收款代理，分成比例都要至少20%这个，他们可只负责收款，你还要把更多的钱交给软件下载站，推广站...</p>

<p><strong>6</strong> 对于开发者来说，Android的商用价值毫无意义，我不太可能跑去为一个汽车电子厂商工作，但我有可能业余时间写几个小程序放在appstore玩玩。</p>

<p><strong>7</strong> 对于小型商业用户，平台是否封闭，许可证价格高低，对他们影响并不大，无论是WinCE还是iphone/ipad，有人能做出来好用的app才是关键(GPS导航基本都采用winCE，也卖的好好的，用户才不关心下面是CE还是Android，他们买的是导航仪)</p>

<p><strong>8 </strong>对于大型商业用户，Android仍然不堪用，他们仍然要基于Linux自己开发。</p>

<p><strong>9 </strong>对于所有人，Android未来并非毫无机会，但现在实在不值得投入。</p>

<p>我拿到ipad，会在上面做一些东西。我坚信ipad在教育，多媒体等等方面都会有非常突出的表现。原本需要买6000块钱的计算机的场合，现在用3000块钱的ipad就可以代替了，从价格上看，对大部分用户也是值得的。</p>

<p>Android尚且可以拿来和Cocoa平台比较，而悲剧的Symbian，甚至连被比较的价值都没有了。移动计算这个市场，距离nokia越来越远了。</p>

<p><a href="http://en.virushuo.com/2010/04/why-i-think-that-iphoneipad-is-better.html"> english version</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>一次被钓鱼的实践和心得</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/04/01/post_73.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=677" title="一次被钓鱼的实践和心得" />
    <id>tag:blog.devep.net,2010:/virushuo//2.677</id>
    
    <published>2010-03-31T15:06:36Z</published>
    <updated>2010-03-31T15:10:51Z</updated>
    
    <summary>今天我在twitter上说我的QQ一年都用不了几次，不如卖掉。 @cosbeta 说他做生意比较需要短点的QQ号，因为在twitter上有了不少了解，我就干脆送给他了。晚上回来给了他相关信息。这时候发生了好玩的事情，竟然有人为了得到这个QQ号，想通过&quot;社会工程学&quot;的方法钓鱼。我虽然不会上当，但是觉得具有一定欺骗性，所以分享出来，提醒大家注意。 邮件很短，截图在此 1. 图中这个邮箱注册的不错。有一定欺骗性。在此也提醒大家，这不是 @cosbeta 的邮箱。要识别是不是常用邮箱，有一个快捷的方法，就是用google搜索一下，看看以前的活动记录。如果没有活动记录，一般是刚刚注册的。 以往的活动记录，在互联网上相当于信用卡账单，这也是我一直劝大家不要太注意所谓隐私的原因之一。你需要给自己留下信用记录，以便别人查对。知道 @cosbeta 真正的邮箱的朋友也可以搜索一下，看看有多少结果。 google一下看活动记录，这个办法甚至可以应对精心搭建的带有反向解析域名相似的邮件服务器（可称为官方钓鱼）。是简单而有效的办法。 当然也有推友提到自己因为防止垃圾邮件，保护的很好，以致于没有任何搜索结果，这种情况是比较特殊的，可以通过其他方法验证，我下面也会提到。 2 注意前面的cosbeta cosbeta，他确实设置了用户名，但正常人是不会这样写名字的。肯定是姓名的形式，就算用昵称，也很少有人重复两遍。碰上这种情况，至少应该注意提高警惕了。这不正常。 3 注意判断对方书写习惯。这封邮件在这方面也略显粗糙。比如 @cosbeta 虽然在成都，但说话利索，很少在后面加&quot;咯&quot;这样的语气词。他的标点都是全角，一般不出现半角。这是由输入法的习惯和键盘布局决定的，也是类似指纹的标记，如果不换机器或输入法，通常不会有太大变化。 4 还有一些其他细节线索可以判断一个邮件是否是钓鱼。这方面大家可慢慢思考，不多说。而我们需要做到的原则是，不要在不能确认身份的情况下说重要的东西。 确认身份的方法包括但不限于：和对方谈一些细节问题，比如谈谈@cosbeta的具体业务，看看对方是否知道。我今天和@cosbeta第一次直接聊天的时候，也聊了不少话。这些对话都可以从细节中确认对方身份。 当然，如果能打个电话问一下，可能会更容易点。对方的声音和说话习惯，是更难伪造的。在电话中多说几句，还可以注意到对方所处环境，是否局促，是否紧张，是否反应速度慢，这些迹象都代表了有异常发生，要特别注意。 最好的方法还是双方都使用OTR签名，这是判断身份和保护信息安全的重要手段，虽然麻烦，但非常有效。当然送个QQ号这种小事就不用麻烦 @cosbeta 专门装个OTR了，我通过对话已经能确认他的身份了。具体做法很多，可以以此为基础，推导出来更多的办法。 一个基本的原则是，要至少通过两个渠道来确认。比如 在twitter上dm一下，然后在gtalk上说一下，在网上说一下，电话说一下。让不同渠道说的内容相关，这样就可以确认出两边是否是一个人。这个思路可以举一反三。 总结一下必须具备的意识： 1 理解重要信息可能被泄露，必须具有安全意识 2 保证安全是繁琐的，但很重要。所以请用多种渠道确认对方身份，这是最基本的一步。 这两点非常基本，但是如果可以深刻理解，确实可以解决很多问题。 技巧说完了，我总结一下教训： twitter上坏人还是存在的，一个QQ号都值得这样做。其他的信息想必也有各种人，出于不同的目的而感兴趣。所以，用不明来源的第三方上推的推友，请记得改密码，没准你的密码早被存下了。我非常非常非常相信，有人曾经用某个第三方或是某个api收集了大量twitter帐号的密码和信息，在某些时候会使用的。 安全意识必须常常记在心中，在关键问题上谨慎对待。注意，邮箱地址是可以伪造的，gmail难一些，但仍然有可能伪造。所以千万注意分寸，什么东西会让你丢钱，什么东西会让你送命。考虑好后果，做事就会谨慎。 有一些不让人反感的确认信息小办法，可以分享。比如我要给别人汇款，对方短信过来一个帐号，怎么确认呢？礼貌起见，可以跟对方说：麻烦您能把具体金额再给我确认一下吗？对方如果能发出来细目，一般就差不多。第一次联系的人可以当作寒暄说一些往事，等等。 一般来说，安全是非常难达到的目标，我们可以默认自己的行为是不安全的，然后通过一系列的手段来降低不安全的概率，最终达到一个比较好的平衡。本文列出的是一些简单，易于实施的办法。深刻理解这些原则，未必可以保证绝对安全，但至少可以应付大部分麻烦。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="偶尔谈谈技术" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>今天我在twitter上说我的QQ一年都用不了几次，不如卖掉。 <a href="http://www.twitter.com/cosbeta">@cosbeta</a> 说他做生意比较需要短点的QQ号，因为在twitter上有了不少了解，我就干脆送给他了。晚上回来给了他相关信息。这时候发生了好玩的事情，竟然有人为了得到这个QQ号，想通过"社会工程学"的方法钓鱼。我虽然不会上当，但是觉得具有一定欺骗性，所以分享出来，提醒大家注意。</p>

<p>邮件很短，截图在此</p>

<p><img src="http://img.ly/system/uploads/000/182/181/original_Screen_shot_2010-03-31_at_8.39.27_PM.png"></p>

<p>1. 图中这个邮箱注册的不错。有一定欺骗性。在此也提醒大家，这不是 @cosbeta 的邮箱。要识别是不是常用邮箱，有一个快捷的方法，就是用google搜索一下，看看以前的活动记录。如果没有活动记录，一般是刚刚注册的。</p>

<p>以往的活动记录，在互联网上相当于信用卡账单，这也是我一直劝大家不要太注意所谓隐私的原因之一。你需要给自己留下信用记录，以便别人查对。知道 @cosbeta 真正的邮箱的朋友也可以搜索一下，看看有多少结果。</p>

<p>google一下看活动记录，这个办法甚至可以应对精心搭建的带有反向解析域名相似的邮件服务器（可称为官方钓鱼）。是简单而有效的办法。</p>

<p>当然也有推友提到自己因为防止垃圾邮件，保护的很好，以致于没有任何搜索结果，这种情况是比较特殊的，可以通过其他方法验证，我下面也会提到。</p>

<p>2 注意前面的cosbeta cosbeta，他确实设置了用户名，但正常人是不会这样写名字的。肯定是姓名的形式，就算用昵称，也很少有人重复两遍。碰上这种情况，至少应该注意提高警惕了。这不正常。</p>

<p>3 注意判断对方书写习惯。这封邮件在这方面也略显粗糙。比如 @cosbeta 虽然在成都，但说话利索，很少在后面加"咯"这样的语气词。他的标点都是全角，一般不出现半角。这是由输入法的习惯和键盘布局决定的，也是类似指纹的标记，如果不换机器或输入法，通常不会有太大变化。</p>

<p>4 还有一些其他细节线索可以判断一个邮件是否是钓鱼。这方面大家可慢慢思考，不多说。而我们需要做到的原则是，不要在不能确认身份的情况下说重要的东西。</p>

<p>确认身份的方法包括但不限于：和对方谈一些细节问题，比如谈谈@cosbeta的具体业务，看看对方是否知道。我今天和@cosbeta第一次直接聊天的时候，也聊了不少话。这些对话都可以从细节中确认对方身份。</p>

<p>当然，如果能打个电话问一下，可能会更容易点。对方的声音和说话习惯，是更难伪造的。在电话中多说几句，还可以注意到对方所处环境，是否局促，是否紧张，是否反应速度慢，这些迹象都代表了有异常发生，要特别注意。</p>

<p>最好的方法还是双方都使用OTR签名，这是判断身份和保护信息安全的重要手段，虽然麻烦，但非常有效。当然送个QQ号这种小事就不用麻烦 @cosbeta 专门装个OTR了，我通过对话已经能确认他的身份了。具体做法很多，可以以此为基础，推导出来更多的办法。</p>

<p>一个基本的原则是，要至少通过两个渠道来确认。比如 在twitter上dm一下，然后在gtalk上说一下，在网上说一下，电话说一下。让不同渠道说的内容相关，这样就可以确认出两边是否是一个人。这个思路可以举一反三。</p>

<p><br />
总结一下必须具备的意识： 1 理解重要信息可能被泄露，必须具有安全意识 2 保证安全是繁琐的，但很重要。所以请用多种渠道确认对方身份，这是最基本的一步。 这两点非常基本，但是如果可以深刻理解，确实可以解决很多问题。</p>

<p><br />
技巧说完了，我总结一下教训： twitter上坏人还是存在的，一个QQ号都值得这样做。其他的信息想必也有各种人，出于不同的目的而感兴趣。所以，用不明来源的第三方上推的推友，请记得改密码，没准你的密码早被存下了。我非常非常非常相信，有人曾经用某个第三方或是某个api收集了大量twitter帐号的密码和信息，在某些时候会使用的。</p>

<p>安全意识必须常常记在心中，在关键问题上谨慎对待。注意，邮箱地址是可以伪造的，gmail难一些，但仍然有可能伪造。所以千万注意分寸，什么东西会让你丢钱，什么东西会让你送命。考虑好后果，做事就会谨慎。</p>

<p><br />
有一些不让人反感的确认信息小办法，可以分享。比如我要给别人汇款，对方短信过来一个帐号，怎么确认呢？礼貌起见，可以跟对方说：麻烦您能把具体金额再给我确认一下吗？对方如果能发出来细目，一般就差不多。第一次联系的人可以当作寒暄说一些往事，等等。</p>

<p>一般来说，安全是非常难达到的目标，我们可以默认自己的行为是不安全的，然后通过一系列的手段来降低不安全的概率，最终达到一个比较好的平衡。本文列出的是一些简单，易于实施的办法。深刻理解这些原则，未必可以保证绝对安全，但至少可以应付大部分麻烦。</p>]]>
        
    </content>
</entry>

<entry>
    <title>五毛的末日</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/03/24/post_72.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=676" title="五毛的末日" />
    <id>tag:blog.devep.net,2010:/virushuo//2.676</id>
    
    <published>2010-03-23T15:48:56Z</published>
    <updated>2010-03-23T23:46:24Z</updated>
    
    <summary>Google走了，对于我来说，这是意料之中的事情。 我在2个月前的一篇文章里面清楚的阐明了观点，说明了这个星球最大的信息传播者和最大的信息阻碍者之间的矛盾是如何的不可调和。所以Google走是必然的，也是好的。 信息审查本来是一个藏着掖着的事，这次被直挺挺的扔到了公众面前。就算新华社的通稿也不得不说：Google不愿在中国运营&quot;受到审查的互联网搜索引擎&quot;。而，这篇官方通稿，只敢提要遵守法律，不敢提具体条款。他们当然不敢，因为根本没有条款。 我相信，有条款，就算荒唐，也可以执行，没有条款就不可能执行。所以这篇官方通稿只不过是慌乱之中的掩耳盗铃。 我们看到了四处一面倒的舆论，这没什么大不了的，宣传机器全开，加上大量的威胁和金钱利诱，确实能看上去一片欣欣向荣，好像那四万亿扔下去的公路。可惜过 一段时间之后，潮水退去，下面是金子还是沙子，有目共睹。 某党被亿万人念诵其名，是大神，这没错。但Google被更多的人念诵其名，是超越大神的神。这故事，刚刚有了个开头。 不客气的说，整个互联网行业最近几年，是被Google照亮着道路。没有Google的时代，很快会看出来败向。而墙外的野草会得到更多的养料。 温室内的花朵会逐渐萎缩。那时候，就是五毛的末日，他们只剩下和自己玩了。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>Google走了，对于我来说，这是意料之中的事情。</p>

<p>我在2个月前的一篇文章里面清楚的阐明了观点，说明了这个星球最大的信息传播者和最大的信息阻碍者之间的矛盾是如何的不可调和。所以Google走是必然的，也是好的。</p>

<p>信息审查本来是一个藏着掖着的事，这次被直挺挺的扔到了公众面前。就算新华社的通稿也不得不说：Google不愿在中国运营"受到审查的互联网搜索引擎"。而，这篇官方通稿，只敢提要遵守法律，不敢提具体条款。他们当然不敢，因为根本没有条款。</p>

<p>我相信，有条款，就算荒唐，也可以执行，没有条款就不可能执行。所以这篇官方通稿只不过是慌乱之中的掩耳盗铃。</p>

<p>我们看到了四处一面倒的舆论，这没什么大不了的，宣传机器全开，加上大量的威胁和金钱利诱，确实能看上去一片欣欣向荣，好像那四万亿扔下去的公路。可惜过 一段时间之后，潮水退去，下面是金子还是沙子，有目共睹。</p>

<p><a href="http://blog.donews.com/sunnyliang/archive/2010/03/16/1570418.aspx">某党被亿万人念诵其名，是大神</a>，这没错。但Google被更多的人念诵其名，是超越大神的神。这故事，刚刚有了个开头。</p>

<p>不客气的说，整个互联网行业最近几年，是被Google照亮着道路。没有Google的时代，很快会看出来败向。而墙外的野草会得到更多的养料。</p>

<p>温室内的花朵会逐渐萎缩。那时候，就是五毛的末日，他们只剩下和自己玩了。</p>]]>
        
    </content>
</entry>

<entry>
    <title>&quot;原理小解&quot;读后感</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/03/15/post_71.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=675" title="&quot;原理小解&quot;读后感" />
    <id>tag:blog.devep.net,2010:/virushuo//2.675</id>
    
    <published>2010-03-15T02:29:26Z</published>
    <updated>2010-03-15T02:41:38Z</updated>
    
    <summary>强烈推荐阅读youxu这篇原理分析的文章，写得相当好懂，读的过程中解答了我两个疑问，读完想明白了，写这里做笔记了。 一 墙是不是经过简单升级就可以对付西厢 西厢其实并没有对墙做任何事，只是巧妙的利用了TCP协议的规则。正如墙利用了三次握手的不校验这个特点（这不是漏洞，而是特点）强行插入reset包一样，西厢也利用了这个特点，让客户端和服务器发送出了墙希望看到的数据包。这里的强大之处在于，一切都是在规则之内的。所以说，如果我们从更高的角度看来，墙和西厢是一种东西，TCP协议如果进行了校验，那就不会有西厢，同样也不会有墙。如果没有墙，也不会有西厢这种用法。 二 墙能用什么办法来对付西厢 TCP协议的三次握手而不校验，留下了可以被强行插入包这个弱点，产生了墙。这个地方这样处理的原因主要是为了性能。TCP是一种高性能协议，所以必须以信任为基础，不能做太多的干涉，否则性能就会大大下降。所以我们目前采用的TCP协议都不对包做什么校验。如前面所说，西厢同样利用了这个特点来获得所需要的数据包。墙如果想知道那些连接是真的断开，哪些是被西厢模拟断开，就必须维护连接状态，进行深度包检测。这样一来效率就会大大下降。众所周知，如果一个系统中存在一个点，可以令系统性能大大下降，会出现什么结果 三 其他系统是否有移植机会 从现在的情况看来，代码并不复杂。整个系统的难度其实在于对TCP协议的深入了解，对墙工作原理的深入了解。这些部分完成之后，原理并不复杂。 可以把目前的alpha版本看作一份用代码写成的论文，其中是详细的论证过程。从代码的wiki看来，原作者据说不继续开发了，不过没关系，论文写完了，其实也就不需要他们那么nb的人来写产品了。您总不指望着科学家来做产品吧？ 至于最终的产品，就期待别人了。熟悉网络开发的人，估计很快就可以写出来各种版本了。期待。 不知道我说的对不对，欢迎大家讨论。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="胡言乱语" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>强烈推荐阅读youxu这篇<a href="http://blog.youxu.info/2010/03/14/west-chamber/">原理分析</a>的文章，写得相当好懂，读的过程中解答了我两个疑问，读完想明白了，写这里做笔记了。</p>

<p>一 墙是不是经过简单升级就可以对付西厢</p>

<p>西厢其实并没有对墙做任何事，只是巧妙的利用了TCP协议的规则。正如墙利用了三次握手的不校验这个特点（这不是漏洞，而是特点）强行插入reset包一样，西厢也利用了这个特点，让客户端和服务器发送出了墙希望看到的数据包。这里的强大之处在于，一切都是在规则之内的。所以说，如果我们从更高的角度看来，墙和西厢是一种东西，TCP协议如果进行了校验，那就不会有西厢，同样也不会有墙。如果没有墙，也不会有西厢这种用法。</p>

<p>二 墙能用什么办法来对付西厢</p>

<p>TCP协议的三次握手而不校验，留下了可以被强行插入包这个弱点，产生了墙。这个地方这样处理的原因主要是为了性能。TCP是一种高性能协议，所以必须以信任为基础，不能做太多的干涉，否则性能就会大大下降。所以我们目前采用的TCP协议都不对包做什么校验。如前面所说，西厢同样利用了这个特点来获得所需要的数据包。墙如果想知道那些连接是真的断开，哪些是被西厢模拟断开，就必须维护连接状态，进行深度包检测。这样一来效率就会大大下降。众所周知，如果一个系统中存在一个点，可以令系统性能大大下降，会出现什么结果</p>

<p>三 其他系统是否有移植机会</p>

<p>从现在的情况看来，代码并不复杂。整个系统的难度其实在于对TCP协议的深入了解，对墙工作原理的深入了解。这些部分完成之后，原理并不复杂。</p>

<p>可以把目前的alpha版本看作一份用代码写成的论文，其中是详细的论证过程。从代码的wiki看来，原作者据说不继续开发了，不过没关系，论文写完了，其实也就不需要他们那么nb的人来写产品了。您总不指望着科学家来做产品吧？</p>

<p>至于最终的产品，就期待别人了。熟悉网络开发的人，估计很快就可以写出来各种版本了。期待。</p>

<p>不知道我说的对不对，欢迎大家讨论。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>修正Quicksilver的Trigger&quot;无法保存&quot;问题</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/03/06/quicksilvertrigger.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=674" title="修正Quicksilver的Trigger&quot;无法保存&quot;问题" />
    <id>tag:blog.devep.net,2010:/virushuo//2.674</id>
    
    <published>2010-03-06T09:49:26Z</published>
    <updated>2010-03-06T09:55:55Z</updated>
    
    <summary>Quicksilver 是 OS X上的神器。如果没有这个工具，OS X对我的吸引力至少降低1/3。强烈推荐给所有新用户使用，并且去youtube上看看其他用户使用这个工具 的视频，绝对大开眼界。 我推荐给笑来这个软件的时候，他说自定义的Trigger无法保存，一退出就没。我就试了一下，发现果然如此。这实在让人受不了。于是从svn拿了代码debug(这么强大的软件竟然是开源的) 很容易就在QSTriggerCenter.m找到了writeTriggers方法，其中performSelector的时候竟然是afterDelay:10.0，也就是说延迟10秒运行。这样创建了一堆触发器，如果没等够10秒退出了Quicksilver就不会保存了。 这地方的处理很奇怪，这地方保存的数据量和开销都很小，没必要延时。我就给改成了0，编译了一个版本出来。不一定适合所有人，所以也没向Quicksilver提交patch。 有兴趣自己修改的，可修改： Quicksilver/Code-QuickStepCore/QSTriggerCenter.m 第144行 - (void)writeTriggers { [self performSelector:@selector(writeTriggersNow) withObject:nil afterDelay:10.0 extend:YES]; } 把10.0修改成0.0就是立刻保存了，用XCode编译，然后把之前使用的Quicksilver中的Plugins目录( Quicksilver.app/Contents/PlugIns/ )复制过来，就可以正常使用了。 不想自己动手的可以下载我这个做好补丁，放入了基本的Plugi的版本 for 10.6 i368 http://dl.dropbox.com/u/3181901/Quicksilver.zip (请自行翻墙)...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="tips" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>Quicksilver 是 OS X上的神器。如果没有这个工具，OS X对我的吸引力至少降低1/3。强烈推荐给所有新用户使用，并且去youtube上看看其他用户使用这个工具<br />
的视频，绝对大开眼界。</p>

<p>我推荐给<a href="http://www.lixiaolai.com">笑来</a>这个软件的时候，他说自定义的Trigger无法保存，一退出就没。我就试了一下，发现果然如此。这实在让人受不了。于是从svn拿了代码debug(这么强大的软件竟然是开源的)</p>

<p>很容易就在QSTriggerCenter.m找到了writeTriggers方法，其中performSelector的时候竟然是afterDelay:10.0，也就是说延迟10秒运行。这样创建了一堆触发器，如果没等够10秒退出了Quicksilver就不会保存了。</p>

<p>这地方的处理很奇怪，这地方保存的数据量和开销都很小，没必要延时。我就给改成了0，编译了一个版本出来。不一定适合所有人，所以也没向Quicksilver提交patch。</p>

<p>有兴趣自己修改的，可修改：<br />
Quicksilver/Code-QuickStepCore/QSTriggerCenter.m</p>

<p>第144行</p>

<p>- (void)writeTriggers {<br />
    [self performSelector:@selector(writeTriggersNow) withObject:nil afterDelay:10.0 extend:YES];<br />
}</p>

<p>把10.0修改成0.0就是立刻保存了，用XCode编译，然后把之前使用的Quicksilver中的Plugins目录( Quicksilver.app/Contents/PlugIns/ )复制过来，就可以正常使用了。</p>

<p>不想自己动手的可以下载我这个做好补丁，放入了基本的Plugi的版本 for 10.6 i368 <a href="http://dl.dropbox.com/u/3181901/Quicksilver.zip">http://dl.dropbox.com/u/3181901/Quicksilver.zip</a> (请自行翻墙)</p>]]>
        
    </content>
</entry>

<entry>
    <title>android手机HTC Hero如何使用vpn</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/02/28/androidhtc_herovpn.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=673" title="android手机HTC Hero如何使用vpn" />
    <id>tag:blog.devep.net,2010:/virushuo//2.673</id>
    
    <published>2010-02-28T02:56:19Z</published>
    <updated>2010-02-28T04:40:13Z</updated>
    
    <summary>大家都知道，官方的HTC hero目前是android 1.5，所以没有vpn功能。据说将来会出android 2.1，就能够支持了。但是默认的pptp vpn还是不怎么好用，在任何平台上，我都比较喜欢openvpn。 android 1.5是有办法使用openvpn的，并不复杂，我的手机已经成功了。方法和解释如下： 原理： TUN/TAP是做虚拟网络的基础驱动，没有这个，就不会有vpn，无论pptp还是openvpn。而使用tun设备又需要root权限。 所以我们需要： 1 在手机上获得root权限 2 补上缺少的驱动。 整个做法非常安全，基本不会出问题。如果担心的话，可以搜索其他备份方法，很多论坛都有，我这里就不多说没用的了，只说跟openvpn有关的。 具体步骤： 1 把recovery image刷到手机上，好升级rom。 按照这个帖子进行 http://android.modaco.com/content/htc-hero-hero-modaco-com/291486/06-jan-installing-the-patched-recovery-image-on-your-device/ 其实大部分人买到的机器，应该已经被刷过了，可以试试关机，然后按住 home键开机，看看是否会进入一个绿色文字的recovery菜单界面，如果已经有了，那就不用刷这个了。但上面那个帖子里面的压缩包仍然值得下载，里面有adb/fastboot等等一系列工具，这些东西本来是在android sdk里面的，如果你不想下载上百兆的SDK，不妨下这个几兆的包。里面有win/linux/mac版本。 2 合适的rom 先看看自己的rom有没有tun.ko模块。方法是用usb连上手机，用上面说的压缩包中的adb shell看看 /system/lib/modules/tun.ko 是否存在。大部分rom是不存在的。 有这个模块的rom是modaco的，其实这也是我觉得最好的一个rom，相当的稳定。搜索 3.1-update-hero-modacocustomrom-core-signed.zip 四处都有下载。然后就是改成update.zip 传到sd卡，关机，按住home开机，进入recovery菜单，选择用update.zip刷机。很多地方都有教程，不细说。 3 让openvpn生效 到 http://sourceforge.net/projects/tunneldroid 下载 openvpn-binary.zip...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="tips" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>大家都知道，官方的HTC hero目前是android 1.5，所以没有vpn功能。据说将来会出android 2.1，就能够支持了。但是默认的pptp vpn还是不怎么好用，在任何平台上，我都比较喜欢openvpn。</p>

<p>android 1.5是有办法使用openvpn的，并不复杂，我的手机已经成功了。方法和解释如下：</p>

<p>原理：</p>

<p>TUN/TAP是做虚拟网络的基础驱动，没有这个，就不会有vpn，无论pptp还是openvpn。而使用tun设备又需要root权限。</p>

<p>所以我们需要：<br />
1 在手机上获得root权限<br />
2 补上缺少的驱动。</p>

<p>整个做法非常安全，基本不会出问题。如果担心的话，可以搜索其他备份方法，很多论坛都有，我这里就不多说没用的了，只说跟openvpn有关的。</p>

<p>具体步骤：</p>

<p>1 把recovery image刷到手机上，好升级rom。</p>

<p>按照这个帖子进行 <a href="http://android.modaco.com/content/htc-hero-hero-modaco-com/291486/06-jan-installing-the-patched-recovery-image-on-your-device/">http://android.modaco.com/content/htc-hero-hero-modaco-com/291486/06-jan-installing-the-patched-recovery-image-on-your-device/</a></p>

<p>其实大部分人买到的机器，应该已经被刷过了，可以试试关机，然后按住 home键开机，看看是否会进入一个绿色文字的recovery菜单界面，如果已经有了，那就不用刷这个了。但上面那个帖子里面的压缩包仍然值得下载，里面有adb/fastboot等等一系列工具，这些东西本来是在android sdk里面的，如果你不想下载上百兆的SDK，不妨下这个几兆的包。里面有win/linux/mac版本。</p>

<p>2 合适的rom</p>

<p>先看看自己的rom有没有tun.ko模块。方法是用usb连上手机，用上面说的压缩包中的adb shell看看 /system/lib/modules/tun.ko 是否存在。大部分rom是不存在的。</p>

<p>有这个模块的rom是modaco的，其实这也是我觉得最好的一个rom，相当的稳定。搜索 3.1-update-hero-modacocustomrom-core-signed.zip 四处都有下载。然后就是改成update.zip 传到sd卡，关机，按住home开机，进入recovery菜单，选择用update.zip刷机。很多地方都有教程，不细说。</p>

<p>3 让openvpn生效</p>

<p>到 http://sourceforge.net/projects/tunneldroid 下载 openvpn-binary.zip 这个包，解压，用adb上传到手机上。这时候又用到了第一步下载的那<br />
个包了。</p>

<p>先备份一下手机上的的文件<br />
<span bgcolor="#000000" text="#808080"><font face="monospace"><br />
adb remount<br><br />
adb shell<br><br />
<font color="#ffff00">cd</font>&nbsp;/system/lib<br><br />
cp libcrypto.so libcrypto-orig.so<br><br />
cp libssl.so libssl-orig.so<br><br />
<font color="#ffff00">exit</font><br><br />
</font></span></p>

<p></p>

<p>然后上传文件<br />
<font face="monospace"><br />
adb remount<br><br />
adb push libcrypto.so /system/lib/<br><br />
adb push liblzo.so /system/lib/<br><br />
adb push libssl.so /system/lib/<br><br />
adb push openssl /system/bin/<br><br />
adb push openvpn /system/bin/<br><br />
adb shell chmod <font color="#ff6060">4755</font>&nbsp;/system/bin/openssl<br><br />
adb shell chmod <font color="#ff6060">4755</font>&nbsp;/system/bin/openvpn<br><br />
</font><br />
可以在adb shell中测试一下，直接运行openvpn命令，看看是否能运行，就行了。</p>

<p>4 把vpn证书传到sd卡上。<br />
把xxx.ovpn这个配置文件和证书之类的东西都放在 /sdcard/openvpn目录下，如果没有就自己创建。</p>

<p><br />
5 去market装TunnelDroid<br />
装上就可以看的到刚才放的配置文件，点连接就可以用了。</p>

<p>其他怪问题可以参考这个讨论: <a href="http://android.modaco.com/content/software/291919/openvpn-on-android/">http://android.modaco.com/content/software/291919/openvpn-on-android/</a></p>

<p>在vps上架设openvpn服务的方法，可参考：</p>

<p><a href="http://www.douhua.im/2010/01/06/ubuntu-server-install-openvpn-server/">http://www.douhua.im/2010/01/06/ubuntu-server-install-openvpn-server/</a></p>

<p>如果能取得ip，不能连出去，一般是iptable的问题，<br />
试试运行一下</p>

<p>/sbin/iptables -p FORWARD ACCEPT</p>

<p>一般就能行了。</p>

<p>如果正常，看到手机的ip就是vpn的ip了...我们通过购买vpn的形式交了一笔上网税之后，终于享受了正常的手机功能。</p>]]>
        
    </content>
</entry>

<entry>
    <title>搜索世界的两端</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/01/24/post_70.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=672" title="搜索世界的两端" />
    <id>tag:blog.devep.net,2010:/virushuo//2.672</id>
    
    <published>2010-01-24T04:16:00Z</published>
    <updated>2010-01-24T04:22:02Z</updated>
    
    <summary>这是给FTChinese写的稿子，发表于 http://www.ftchinese.com/story/001030941 所谓搜索世界的两端，一端是美国，一端是中国，一端是Google，一端是百度。如果眼下这些乱七八糟的事情继续坏下去，两端都会继续背离，越走越远。 另外，我并非专业写评论的，只是个程序员。班门弄斧，博大家一笑。 ------------------------------------------------------------------------------------------ 在蒸汽机出现之前，就算用鞭子拼命抽打坐骑，也不能让速度变快一倍。机械时代开始之后，一切都变得不同，从铁路到航空，速度变快了数倍。在今天这个时代，现实中的运动速度已经基本到达上限。科技再发展10年，也未必能让飞机的速度再提高一倍。但网络可以。从第一次工业革命到现在，&quot;变快&quot;一直是人类经济活动的重要部分。 网络传递的是数据，而非实体物质。在网络普及之前，传递一份文件尚可通过传真，但传递一段声音，一段影像，除了传递存储介质之外，别无他法。当网络把一切都数字化--电子邮件，电子文档，音频流，视频流之后，这些都变得简单了。人们发现，越来越多的东西无需传递实体物质，仅传递信息即可。简单来说，我们手写一封信通过邮局投寄，需要传递给对方的只是信的内容，并非信的实体。对方只要获知了信中的内容，并不需要拥有信封信纸之类的实体物质。网络通过让信息快速移动的方式，再次让人类的活动&quot;变快&quot;。 互联网如同高速公路，四通八达。要想快速移动，只有路是不行的，还需要足够好的车。对于互联网来说，搜索引擎就是这辆车。搜索引擎帮助人们快速找到需要的东西，换言之，缩短了人和信息之间的距离。即使在互联网的时代，人们也从来没有这么方便过，一般来说，大部分需求，用不了半秒钟都可以得到满意的答复。搜索引擎缩短了人到信息的距离，广告也就接踵而来。这种广告也和以往大不相同，既然已经&quot;知道&quot;人需要的东西，于是便可毫不干扰用户的插入对应的广告。这种经过整理的广告，甚至可以被认为成信息的一种。你在找Macbook的价格？Google不仅告诉你价格，还告诉你哪在出售。这就是Google在前面10年中的主要工作。 Google有个响亮的口号，叫做&quot;整合全球信息&quot;，其意图非常明显，只需获取更多的信息，进行整理，等着人们来使用，把广告放在合适的位置，其收入就会持续增长。Google根据页面之间的关系，创造了PageRank的排名方法，根据这种算法排序搜索结果，绝不允许被人工干扰，广告和搜索结果有严格明确的区分，放在搜索结果右侧，绝不混淆。Google尽量去选择并提供用户可能需要的，绝不干扰用户原本的筛选行为和结果。对应到现实世界，就好像建设覆盖更广的高速公路，帮助更多的人到达目的地，同时在路边树立广告牌。不干扰用户，只给用户需要的东西，无论是信息还是广告。对于这样一家公司，信息越多，流动越快，人们就越需要Google来整合信息，使用Google的次数也就越多。这也就意味着广告可以被展示更多，进而带来更多的点击，创造更多的利润。这家公司几乎是最近10年来信息流动最大的推动者，他们甚至希望把用户接入网络的ISP费用都免掉，以便让信息流动的更快。Google不仅&quot;不作恶&quot;，而且&quot;无需作恶&quot;。事实上，任何作恶行为（比如改变用户的搜索行为和结果）都会阻挡信息正常流动，最终受损害的不仅是用户的利益，更是Google的利益。 一个伟大的事业，不会只有一种盈利方法。在中国，其竞争对手百度，找到了另外一条道路。起初，百度和Google类似，也整合信息，缩短人和信息之间的距离。在百度的模式中，可以将一些付费的内容放在搜索结果页面中比较靠前的位置。这是一个相当有趣的平衡，百度同样希望缩短人和信息之间的距离，百度也需要用户点击他们提供的广告来获得盈利，他们比google走得远得多：他们将广告直接置入搜索结果，以鱼目混珠式的点击获得更快捷的盈利。这听起来有点像高速公路上的收费站。收费站当然不希望让高速公路完全拥堵，车辆仍然会在那里堵上个几分钟，缴纳过路费。甚至，他们只在乎过路费，并不太在意人们最终是否能够到达目的。几年前，百度特别热门的关键词搜索结果前几页都是付费广告，且没有任何标记，在这种情况下，人们很难利用百度找到有用的信息。一旦百度开始左右用户的搜索结果，就很难停下来，因为一旦停止，利润就会快速下跌。百度也在力图改变这个微妙的平衡，经过几年的努力，现在搜索结果中的广告会被标明&quot;推广&quot;，而且最热门的关键词，也只有半页的付费结果了。 好的利润和坏的利润并不那么区别明显，何况，百度也在力图让自己的搜索结果更有用。但这仍不可避免的令公司陷入很多麻烦事中，前面的几年中，我们看到广告主，网站站长，代理商等各种角色对百度发泄过不满。百度是一家不错的公司，但他们确实很难和Google一样宣称自己&quot;Don&apos;t be evil&quot;，他们显然也并不相信这个。对于Google来说，IPO只是一个起点，甚至到今天，Google仍然还远远没有到达巅峰，对于这家伟大的公司来说，这颗星球上还有太多的信息需要被整合，下至传统出版物，上至人们随身携带的移动设备。这些都将逐渐成为Google广阔帝国的一部分，Google仍然在关注如何缩短人和信息的距离，让信息流动的更快。至于这些地方是否被树立上广告牌，那并非第一优先考虑的事情。但对于百度，利润永远是第一的，百度的平衡仍然会继续下去，他们将走向另外一种模式。也许再经过5年的时间，我们可以看到&quot;中国的Google&quot;变得和Google截然不同。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="随便" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>这是给FTChinese写的稿子，发表于 <a href="http://www.ftchinese.com/story/001030941">http://www.ftchinese.com/story/001030941</a></p>

<p>所谓搜索世界的两端，一端是美国，一端是中国，一端是Google，一端是百度。如果眼下这些乱七八糟的事情继续坏下去，两端都会继续背离，越走越远。</p>

<p>另外，我并非专业写评论的，只是个程序员。班门弄斧，博大家一笑。</p>

<p>------------------------------------------------------------------------------------------</p>

<p>在蒸汽机出现之前，就算用鞭子拼命抽打坐骑，也不能让速度变快一倍。机械时代开始之后，一切都变得不同，从铁路到航空，速度变快了数倍。在今天这个时代，现实中的运动速度已经基本到达上限。科技再发展10年，也未必能让飞机的速度再提高一倍。但网络可以。从第一次工业革命到现在，"变快"一直是人类经济活动的重要部分。</p>

<p>网络传递的是数据，而非实体物质。在网络普及之前，传递一份文件尚可通过传真，但传递一段声音，一段影像，除了传递存储介质之外，别无他法。当网络把一切都数字化--电子邮件，电子文档，音频流，视频流之后，这些都变得简单了。人们发现，越来越多的东西无需传递实体物质，仅传递信息即可。简单来说，我们手写一封信通过邮局投寄，需要传递给对方的只是信的内容，并非信的实体。对方只要获知了信中的内容，并不需要拥有信封信纸之类的实体物质。网络通过让信息快速移动的方式，再次让人类的活动"变快"。</p>

<p>互联网如同高速公路，四通八达。要想快速移动，只有路是不行的，还需要足够好的车。对于互联网来说，搜索引擎就是这辆车。搜索引擎帮助人们快速找到需要的东西，换言之，缩短了人和信息之间的距离。即使在互联网的时代，人们也从来没有这么方便过，一般来说，大部分需求，用不了半秒钟都可以得到满意的答复。搜索引擎缩短了人到信息的距离，广告也就接踵而来。这种广告也和以往大不相同，既然已经"知道"人需要的东西，于是便可毫不干扰用户的插入对应的广告。这种经过整理的广告，甚至可以被认为成信息的一种。你在找Macbook的价格？Google不仅告诉你价格，还告诉你哪在出售。这就是Google在前面10年中的主要工作。</p>

<p>Google有个响亮的口号，叫做"整合全球信息"，其意图非常明显，只需获取更多的信息，进行整理，等着人们来使用，把广告放在合适的位置，其收入就会持续增长。Google根据页面之间的关系，创造了PageRank的排名方法，根据这种算法排序搜索结果，绝不允许被人工干扰，广告和搜索结果有严格明确的区分，放在搜索结果右侧，绝不混淆。Google尽量去选择并提供用户可能需要的，绝不干扰用户原本的筛选行为和结果。对应到现实世界，就好像建设覆盖更广的高速公路，帮助更多的人到达目的地，同时在路边树立广告牌。不干扰用户，只给用户需要的东西，无论是信息还是广告。对于这样一家公司，信息越多，流动越快，人们就越需要Google来整合信息，使用Google的次数也就越多。这也就意味着广告可以被展示更多，进而带来更多的点击，创造更多的利润。这家公司几乎是最近10年来信息流动最大的推动者，他们甚至希望把用户接入网络的ISP费用都免掉，以便让信息流动的更快。Google不仅"不作恶"，而且"无需作恶"。事实上，任何作恶行为（比如改变用户的搜索行为和结果）都会阻挡信息正常流动，最终受损害的不仅是用户的利益，更是Google的利益。 </p>

<p>一个伟大的事业，不会只有一种盈利方法。在中国，其竞争对手百度，找到了另外一条道路。起初，百度和Google类似，也整合信息，缩短人和信息之间的距离。在百度的模式中，可以将一些付费的内容放在搜索结果页面中比较靠前的位置。这是一个相当有趣的平衡，百度同样希望缩短人和信息之间的距离，百度也需要用户点击他们提供的广告来获得盈利，他们比google走得远得多：他们将广告直接置入搜索结果，以鱼目混珠式的点击获得更快捷的盈利。这听起来有点像高速公路上的收费站。收费站当然不希望让高速公路完全拥堵，车辆仍然会在那里堵上个几分钟，缴纳过路费。甚至，他们只在乎过路费，并不太在意人们最终是否能够到达目的。几年前，百度特别热门的关键词搜索结果前几页都是付费广告，且没有任何标记，在这种情况下，人们很难利用百度找到有用的信息。一旦百度开始左右用户的搜索结果，就很难停下来，因为一旦停止，利润就会快速下跌。百度也在力图改变这个微妙的平衡，经过几年的努力，现在搜索结果中的广告会被标明"推广"，而且最热门的关键词，也只有半页的付费结果了。</p>

<p>好的利润和坏的利润并不那么区别明显，何况，百度也在力图让自己的搜索结果更有用。但这仍不可避免的令公司陷入很多麻烦事中，前面的几年中，我们看到广告主，网站站长，代理商等各种角色对百度发泄过不满。百度是一家不错的公司，但他们确实很难和Google一样宣称自己"Don't be evil"，他们显然也并不相信这个。对于Google来说，IPO只是一个起点，甚至到今天，Google仍然还远远没有到达巅峰，对于这家伟大的公司来说，这颗星球上还有太多的信息需要被整合，下至传统出版物，上至人们随身携带的移动设备。这些都将逐渐成为Google广阔帝国的一部分，Google仍然在关注如何缩短人和信息的距离，让信息流动的更快。至于这些地方是否被树立上广告牌，那并非第一优先考虑的事情。但对于百度，利润永远是第一的，百度的平衡仍然会继续下去，他们将走向另外一种模式。也许再经过5年的时间，我们可以看到"中国的Google"变得和Google截然不同。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Google百度和谷歌的那些事</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/01/14/blog56google_blogtinyfool_1_go.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=671" title="Google百度和谷歌的那些事" />
    <id>tag:blog.devep.net,2010:/virushuo//2.671</id>
    
    <published>2010-01-14T14:59:06Z</published>
    <updated>2010-01-16T13:49:33Z</updated>
    
    <summary>很久不在这个blog上写和技术无关的东西了，尤其不想写跟业界有关的东西，觉得太空，太忽悠，对别人没价值。但这次，我想写写这5，6年对google和百度的一些观察心得。这里面，这里面存在大量的个人推论，我并不能担保完全正确，请只当作是一次思想的碰撞。 这篇blog主要由我完成，Tinyfool提出了大量修改意见，亦有重要贡献。 1 google，不作恶，信息流动 众所周知，google的目标是&quot;整合全球信息&quot;。从另外一个角度看来，这可以看作加快信息流动。信息流动变快是有巨大的经济价值的。加速，始终是人类经济活动的主线，快即是价值。从蒸汽时代到现在，每一次让移动速度加快的方式都造成了人类巨大的变化，只不过，在蒸汽和机械的时代，加快的是人和货物的移动，信息时代加快的是信息的流动。 仔细观察，可以发现，很多事情不再需要实体物质的流动。比如，我们不再需要人去送一封信，而只需传递一封电子邮件。我们也不那么需要去订阅一份报纸送上家门，而只需要浏览门户网站。这是信息时代带来的改变。而Google所做的，是继续加快这种信息流动的速度，让人们需要的东西更快的呈现在眼前。 Google始终坚持Pagerank排名，除了惩罚作弊者，并未干预过任何排名。这是因为，信息的正常流动才会加速，加速信息是Google的价值，也带来巨大的经济价值。Google绝对不允许把广告插入到搜索结果中。否则搜索结果质量会下降-&gt;用户不满意-&gt;搜索量降低-&gt;广告点击降低，最终仍然造成收入下降。（后面我们会讲到百度完全不同的做法） 投放过Adwords的同学会发现，并非价格越高越好，就算单价非常高，如果匹配度很低，广告点击率就会很低。这样Google仍然会降低这种匹配的出现频率。这样就避免了在A在B的搜索结果中投放&quot;我是B&quot;的广告来误导用户。 在这个体系下，有用的东西就是有用的，信息流动会变快，Google会推动这种信息变的更快，没用的东西就是垃圾，会阻碍信息流动，Google就让他变的更慢，直到被放弃。 Don&apos;t be evil 这句口号，可以理解为东欧出生的布林对人生的追求，也可以理解为Google商业利益的准则。因为，越是不作恶，越是让信息有序，正常的流动，给Google带来的实际利益也就越大。很多人认为这只是一句作秀的口号，事实上这是商业和个人追求的双重准则。 2 baidu，竞价排名，Google 百度显然看到了搜索的巨大价值，于是挤进了这个市场。我们且不论搜索质量，先看百度的利润来源。 百度同样有右侧广告(类似Adwords)和左侧排名。左侧排名就是所谓的竞价排名，这是百度的&quot;创新&quot;。竞价排名是百度收入的主要来源(注1)。 前面说过，竞价排名会干扰用户搜索体验，这大家都深有体验，某些热门关键词，百度前几页的结果都是竞价结果。那么为什么Google不敢这样做，而百度这样做就赚翻了呢？ 昨天我在twitter上说过一句话：&quot;adsense是促使信息有序流动并盈利，竞价排名是破坏信息流动并盈利。也难怪两个公司的人看问题截然不同。&quot; 很多人有体验，如果你的搜索结果比较靠前，百度会有销售来找你做竞价排名，如果不做的话，很快你的搜索结果就骤减。这种&quot;巧合&quot;正好说明了阻碍信息流动也是可以盈利的。换言之，帮助别人照看孩子可以赚钱，威胁别人家孩子来收保护费也可以赚钱。 那么，按照前面的说法，阻碍信息流动的应该会被用户抛弃，在百度这边为什么情况相反呢？ 搜索引擎的结果好坏实际很难评价，通常来说，&quot;好10%&quot;是完全没有意义的。这在这个市场上反复被证实，仅仅让搜索结果比对方好10%，或差10%，不会对用户体验影响太大。第二梯队中的搜狗，有道，搜索结果未必真的比百度差多少，但无论如何也无法翻身。同样的竞争也发生在了Google,Bing,Yahoo之间。换言之，搜索引擎产品是一种先入为主的产品。 在百度起家的年代，Google遭遇了最严重的屏蔽。大家应该都有体验，在大公司内基本无法正常访问Google。我们且不去讨论这种屏蔽的始作俑者是否是百度(无论百度是否加快了这种行为，最终的结果也必然发生)。那几年，又正好是中国互联网用户增长最快的年代(注2)。大量的新互联网用户直接成为了百度的用户。 搜索引擎市场上，&quot;获得第一批用户&quot;是至关重要的。 比较百度和Google的产品和收购策略，百度通常收购能带来巨大流量的产品，包括hao123，天空软件站等等。而Google收购的通常是具有独特的技术，可产生独特数据的产品，比如Analytics,blogger。 百度的主要企业运营行为是围绕&quot;获得第一批用户&quot;的。这些方法包括：工具条，hao123，和软件下载站合作等等。Google被屏蔽看作这种行为的反向手法，无论是否百度造就的，至少这个结果导致了百度获得了更多的第一批用户。 在一个基本没有竞争对手的市场上，百度可以&quot;挟流量以令诸侯&quot;，这时候，他破坏一部分信息正常流动也不会造成太严重的后果。因为用户毫无比较。 Google的铁杆用户分为两类。一类是早期用户，这部分用户用过Google，也用过百度。有明确的比较和鉴别能力。他们最终选择了Google。另外一类是专业用户，他们真的发现百度找不到他们需要的东西。这时候Google对比百度的优势大大增加，到达了用户满意程度的临界点，于是这部分用户也选择了Google。 在中国互联网上，大部分用户偏重娱乐。这些用户很难分辨Google和百度的区别。甚至他们会觉得百度更好一些，因为百度提供了方便无比的MP3搜索。他们一旦先尝试了百度，那么就会留下，继续成为百度的用户。这就是我们今天看到的样子。 3 谷歌做了什么 2006年，Google决定开设中国办公室，并命名为谷歌。这是Google创始以来，最大胆，也是最小心的尝试。他们从来没有过试图进入一个需要过滤某些内容的国家(如前所述，这是阻碍信息流动，同时也背叛了Google的价值观)。 我们可以从一些细节看到Google的小心翼翼。比如，Google.cn是没有Google Account的。用户不能注册，也就没有密码，因此也就没有泄密之忧。后来有人嘲笑谷歌音乐可以用各种帐号登录，但就是不能用Google Account登录。所有需要登录的Google服务都没有进入中国。包括Gmail,Gtalk,Blogger等等等。 Google从进入中国那一天，就给自己设置好了底限。这种底限，就是李开复所说的&quot;总部压力&quot;。 李开复的谷歌，是谷歌，绝不是Google。是一个像百度的外企。 3个字可以来概括谷歌几年的工作：&quot;倒流量&quot;。倒流量的工作由一系列的合作(迅雷，sina，天涯，265)完成。这和Google的传统做法完全不同，Google几乎不去主动谋求流量，产品质量会解决所有问题。但谷歌必须谋求流量，一个急进，喜欢去大学讲座和写书的职业经理人，不会有创始人那样的耐心慢慢的守着一个市场。这让谷歌越来越像百度。 众所周知，用和对手一样的手段不可能打倒对手。 谷歌推出的最重量级产品，是谷歌音乐。这显然是看到了百度在MP3搜索上获得的好处，意图获得以娱乐为主的用户。当然，鉴于Google全球的品牌，这些音乐需要有版权。我不评价这个产品的好坏，但这显然和Google总部习惯格格不入。难道Google不知道去做一个音乐下载产品吗？难道Google不能去做一个下载站吗？总部不去做，只不过是因为这和价值观不符。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="随便" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>很久不在这个blog上写和技术无关的东西了，尤其不想写跟业界有关的东西，觉得太空，太忽悠，对别人没价值。但这次，我想写写这5，6年对google和百度的一些观察心得。这里面，这里面存在大量的个人推论，我并不能担保完全正确，请只当作是一次思想的碰撞。</p>

<p>这篇blog主要由我完成，<a href="http://tiny4.org/myhome/">Tinyfool</a>提出了大量修改意见，亦有重要贡献。</p>

<p><big><strong>1 google，不作恶，信息流动</strong></big></p>

<p>众所周知，google的目标是"整合全球信息"。从另外一个角度看来，这可以看作加快信息流动。信息流动变快是有巨大的经济价值的。加速，始终是人类经济活动的主线，快即是价值。从蒸汽时代到现在，每一次让移动速度加快的方式都造成了人类巨大的变化，只不过，在蒸汽和机械的时代，加快的是人和货物的移动，信息时代加快的是信息的流动。</p>

<p>仔细观察，可以发现，很多事情不再需要实体物质的流动。比如，我们不再需要人去送一封信，而只需传递一封电子邮件。我们也不那么需要去订阅一份报纸送上家门，而只需要浏览门户网站。这是信息时代带来的改变。而Google所做的，是继续加快这种信息流动的速度，让人们需要的东西更快的呈现在眼前。</p>

<p>Google始终坚持Pagerank排名，除了惩罚作弊者，并未干预过任何排名。这是因为，信息的正常流动才会加速，加速信息是Google的价值，也带来巨大的经济价值。Google绝对不允许把广告插入到搜索结果中。否则搜索结果质量会下降->用户不满意->搜索量降低->广告点击降低，最终仍然造成收入下降。（后面我们会讲到百度完全不同的做法）</p>

<p>投放过Adwords的同学会发现，并非价格越高越好，就算单价非常高，如果匹配度很低，广告点击率就会很低。这样Google仍然会降低这种匹配的出现频率。这样就避免了在A在B的搜索结果中投放"我是B"的广告来误导用户。</p>

<p>在这个体系下，有用的东西就是有用的，信息流动会变快，Google会推动这种信息变的更快，没用的东西就是垃圾，会阻碍信息流动，Google就让他变的更慢，直到被放弃。</p>

<p>Don't be evil 这句口号，可以理解为东欧出生的布林对人生的追求，也可以理解为Google商业利益的准则。因为，越是不作恶，越是让信息有序，正常的流动，给Google带来的实际利益也就越大。很多人认为这只是一句作秀的口号，事实上这是商业和个人追求的双重准则。</p>

<p><br />
<big><strong>2 baidu，竞价排名，Google</strong></big></p>

<p>百度显然看到了搜索的巨大价值，于是挤进了这个市场。我们且不论搜索质量，先看百度的利润来源。</p>

<p>百度同样有右侧广告(类似Adwords)和左侧排名。左侧排名就是所谓的竞价排名，这是百度的"创新"。竞价排名是百度收入的主要来源(<a href="http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-reportsAnnual">注1</a>)。</p>

<p>前面说过，竞价排名会干扰用户搜索体验，这大家都深有体验，某些热门关键词，百度前几页的结果都是竞价结果。那么为什么Google不敢这样做，而百度这样做就赚翻了呢？</p>

<p>昨天我在twitter上说过一句话："<a href="http://twitter.com/virushuo/status/7729290302 ">adsense是促使信息有序流动并盈利，竞价排名是破坏信息流动并盈利。也难怪两个公司的人看问题截然不同。</a>"</p>

<p>很多人有体验，如果你的搜索结果比较靠前，百度会有销售来找你做竞价排名，如果不做的话，很快你的搜索结果就骤减。这种"巧合"正好说明了阻碍信息流动也是可以盈利的。换言之，帮助别人照看孩子可以赚钱，威胁别人家孩子来收保护费也可以赚钱。</p>

<p>那么，按照前面的说法，阻碍信息流动的应该会被用户抛弃，在百度这边为什么情况相反呢？</p>

<p>搜索引擎的结果好坏实际很难评价，通常来说，"好10%"是完全没有意义的。这在这个市场上反复被证实，仅仅让搜索结果比对方好10%，或差10%，不会对用户体验影响太大。第二梯队中的搜狗，有道，搜索结果未必真的比百度差多少，但无论如何也无法翻身。同样的竞争也发生在了Google,Bing,Yahoo之间。换言之，搜索引擎产品是一种先入为主的产品。</p>

<p>在百度起家的年代，Google遭遇了最严重的屏蔽。大家应该都有体验，在大公司内基本无法正常访问Google。我们且不去讨论这种屏蔽的始作俑者是否是百度(无论百度是否加快了这种行为，最终的结果也必然发生)。那几年，又正好是中国互联网用户增长最快的年代(<a href="http://news.xinhuanet.com/newmedia/2005-07/22/content_3251081.htm">注2</a>)。大量的新互联网用户直接成为了百度的用户。</p>

<p>搜索引擎市场上，"获得第一批用户"是至关重要的。</p>

<p>比较百度和Google的产品和收购策略，百度通常收购能带来巨大流量的产品，包括hao123，天空软件站等等。而Google收购的通常是具有独特的技术，可产生独特数据的产品，比如Analytics,blogger。</p>

<p>百度的主要企业运营行为是围绕"获得第一批用户"的。这些方法包括：工具条，hao123，和软件下载站合作等等。Google被屏蔽看作这种行为的反向手法，无论是否百度造就的，至少这个结果导致了百度获得了更多的第一批用户。</p>

<p>在一个基本没有竞争对手的市场上，百度可以"挟流量以令诸侯"，这时候，他破坏一部分信息正常流动也不会造成太严重的后果。因为用户毫无比较。</p>

<p>Google的铁杆用户分为两类。一类是早期用户，这部分用户用过Google，也用过百度。有明确的比较和鉴别能力。他们最终选择了Google。另外一类是专业用户，他们真的发现百度找不到他们需要的东西。这时候Google对比百度的优势大大增加，到达了用户满意程度的临界点，于是这部分用户也选择了Google。</p>

<p>在中国互联网上，大部分用户偏重娱乐。这些用户很难分辨Google和百度的区别。甚至他们会觉得百度更好一些，因为百度提供了方便无比的MP3搜索。他们一旦先尝试了百度，那么就会留下，继续成为百度的用户。这就是我们今天看到的样子。</p>

<p><br />
<big><strong>3 谷歌做了什么</strong></big></p>

<p>2006年，Google决定开设中国办公室，并命名为谷歌。这是Google创始以来，最大胆，也是最小心的尝试。他们从来没有过试图进入一个需要过滤某些内容的国家(如前所述，这是阻碍信息流动，同时也背叛了Google的价值观)。</p>

<p>我们可以从一些细节看到Google的小心翼翼。比如，Google.cn是没有Google Account的。用户不能注册，也就没有密码，因此也就没有泄密之忧。后来有人嘲笑谷歌音乐可以用各种帐号登录，但就是不能用Google Account登录。所有需要登录的Google服务都没有进入中国。包括Gmail,Gtalk,Blogger等等等。</p>

<p>Google从进入中国那一天，就给自己设置好了底限。这种底限，就是李开复所说的"总部压力"。</p>

<p>李开复的谷歌，是谷歌，绝不是Google。是一个像百度的外企。</p>

<p>3个字可以来概括谷歌几年的工作："倒流量"。倒流量的工作由一系列的合作(迅雷，sina，天涯，265)完成。这和Google的传统做法完全不同，Google几乎不去主动谋求流量，产品质量会解决所有问题。但谷歌必须谋求流量，一个急进，喜欢去大学讲座和写书的职业经理人，不会有创始人那样的耐心慢慢的守着一个市场。这让谷歌越来越像百度。</p>

<p>众所周知，用和对手一样的手段不可能打倒对手。</p>

<p>谷歌推出的最重量级产品，是谷歌音乐。这显然是看到了百度在MP3搜索上获得的好处，意图获得以娱乐为主的用户。当然，鉴于Google全球的品牌，这些音乐需要有版权。我不评价这个产品的好坏，但这显然和Google总部习惯格格不入。难道Google不知道去做一个音乐下载产品吗？难道Google不能去做一个下载站吗？总部不去做，只不过是因为这和价值观不符。</p>

<p>同样的价值观不符，还包括和天涯合作的来吧。之前说过，除了独特的数据，Google不会主动创造内容。以Google的胸怀，可以去索引百度贴吧和知道，并放在结果的显著位置，但没必要自己去模仿一个贴吧出来。这种竞争的水平太低了。</p>

<p>甚至，谷歌把中国访问Google.com的流量"劫持"到了Google.cn，以便提高自己的"占有率"。这件事让很多Google老用户恼火，Zola曾经在某个李开复参与的活动中举手提问，如何才能在中国正常的访问Google.com。</p>

<p>"倒流量"之后，谷歌的市场占有率有所上升。这是应该的。不过，新上升的占有率中，有多少是真正的搜索流量就不得而知了。正如百度搜索和贴吧等产品的比值是个秘密一样。</p>

<p>百度跟在Google后面，而谷歌跟在百度后面。</p>

<p>除了倒流量，谷歌也在"抓收入"。</p>

<p>投放过Adsense的朋友，大概会记得，Adsense的匹配质量越来越差，医疗方面的内容也越来越多。之前经常有人因为作弊被封掉帐号，后来再也没人说过自己的帐号被封。</p>

<p>我07年的两篇blog提到了这件事：<br />
<a href="http://blog.devep.net/virushuo/2007/04/05/zhaigao-or-guge-adsense.html">对不起，这是谷歌，不是google</a><br />
<a href="http://blog.devep.net/virushuo/2007/04/19/remove_google_adsense.html">去掉了blog上的google adsense</a></p>

<p>这两个特点都不是Google Adsense应有的特性。Google Adsense应该是匹配准，不干扰用户，且提供有用信息。时常读英文内容的人会时常看到Adsense广告的匹配相当精确，时而有点击的必要。</p>

<p>离开了这两个特点，可以把谷歌的广告看作一个大的广告联盟。这和拿了很多小网站的Banner的流量去找广告主谈价本质是一样的。在这种广告销售策略下，不需要匹配，不需要杜绝点击欺诈。最舍得花钱投这种广告的，无非是医疗，美容几类。</p>

<p>这几类是最赚钱的部分。不仅对于谷歌，对于百度，甚至对电视台都是一样的。</p>

<p>关于Adsense的故事，可以看看Tiny这篇文章 :<a href="http://tiny4.org/tinygoogle/2007/08/google-adsense.html">我和Google Adsense那点故事</a></p>

<p>在这5年中，最常被记者们提起的"谷歌困境"就是"总部压力"。在我列出的这些部分，都已经触及到了Google价值观，所以Google必然不满。</p>

<p>有兴趣的同学可以对比一下2005~2010这5年，Google做了什么，谷歌做了什么。你会看到截然不同的项目。虽然结果看起来似乎都是："市场份额增加，收入增加"，Google在这几年，砸实了搜索的基础，扩大了搜索的内容来源和范围，把索引伸向了非数字内容，完成了地图/卫星图/Earth/街景等一系列重要产品，完成了在移动和3G方面的布局。谷歌做了什么呢？音乐，热榜，还有一个抄袭的输入法。</p>

<p>从谷歌存在的那天，我就写过一篇文章，核心意思是：要么把中国当作研发基地，投资，研发，但不运营，要么就干脆去印度开分公司。不幸言中。</p>

<p><big><strong>4 孙云丰的观点</strong></big></p>

<p>从商业价值和经济利益方面考量，都可以看出Google的不作恶，并不是作秀的口号。对于一个靠信息有序化赚钱的公司，必须要不作恶才行。百度正好相反，必须要作恶才行。</p>

<p>Google是幸福的，可以把商业价值建立在一个正确的价值观之上。这确实是可遇不可求的机会。很不幸，百度不行。</p>

<p><a href="http://tiny4.org/jsjy/sxl/2010/01/google.html">孙云丰的言论</a>是无法自圆其说的。一方面，他认为Google不是人权斗士，只是个为了利润的市侩分子。另一方面，他又高举社会公平的大旗，宣称百度的道德感。这两者之间有明确的冲突。如果Google只为了利润，那么百度同样不应该有道德可言。</p>

<p>一方面，他宣称自己观点毫无错误，另一方面，他又删掉了自己的文章。有人说删贴未必是他自己的意愿。那么，作为宣称"有道德感"的百度员工，他不应该屈从别人的意见删掉自己认为正确的东西。作为百度高管，不应该允许百度公关去打电话要求别人删贴。</p>

<p>今天有一些百度员工为孙云丰辩护，这些说法同样无法自圆其说。试图证明百度是一家很好的公司，并不能证明孙云丰说的正确。正如纳粹德国有一支很有战斗力的军队，并不能证明希特勒是正义的。他们甚至自相矛盾，认为孙云丰对竞争对手恶言相对是正确的，其他人骂孙云丰是错。如果孙云丰代表自己骂了一家公司，该公司的用户有权回击。如果孙云丰代表百度，那他严重的缺乏职业道德。从任何角度，我也得不出百度员工和前员工的那些结论。</p>

<p>当然，我从来也没认为过百度是一家很糟糕的公司，甚至很多次认为百度正在逐渐变成一家有责任感的公司。遗憾的是，从高管到员工，似乎都没和这家公司一样完成这种转变。</p>

<p>不要以为这次事件打击了Google在中国的份额就幸灾乐祸，事实上，中国的互联网市场消失了。这和市场份额无关，和宏观形势有关。这个国家温情脉脉的互联网时代就此结束，就好比IT精英们看不起的那些传统生意人一样，慢慢被兼并，重组，消亡，剩下的那一点，会被扫倒利润微薄的边边角角。就好比，你家楼下菜市场那个可怜的菜农，守着那一点点收入，还要担心城管。这是这个行业中每个人的悲剧。</p>

<p>Tinyfool说:百度的矛盾在于，Google的成功是他在全世界资本市场受宠的原因，但他们可能无时无刻不想google死掉会更好。在全世界范围内，这是不可能出现的，现在在中国出现了，他们真的会高兴吗？</p>

<p>Google给我们的最大价值，除了信息流动加速，就是信息永存。当我写完这篇blog，发布在我的blog上，按下"发布"之后的几分钟，各种蜘蛛就会蜂拥而至，把这篇文章复制若干次，存在这世界的各个角落。这文章即永存。无法被某个组织控制或删除，也无法阻止其流动。公关公司不行，某个国家政府也不行。孙云丰的言论，和百度其他员工的言论，也将和这篇文章一样，被永存，成为历史的一部分。这是我们热爱Google的原因。</p>

<p>现在，我要按下发布按钮了。</p>]]>
        
    </content>
</entry>

<entry>
    <title>百度首席产品设计师孙云丰评论谷歌退出中国事件</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2010/01/13/post_69.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=670" title="百度首席产品设计师孙云丰评论谷歌退出中国事件" />
    <id>tag:blog.devep.net,2010:/virushuo//2.670</id>
    
    <published>2010-01-13T12:42:24Z</published>
    <updated>2010-01-13T13:03:48Z</updated>
    
    <summary>我的看法： 1 百度忘了自己是怎么被CCTV菊爆的了？ 2 百度忘了自己的股价和google永远是波动一致的了？ 原帖他自己删了，CSDN转载的 http://news.csdn.net/a/20100113/216459.html 被百度的人要求删掉，所以我就在这里再多备份一次。 声明：本文由 @dupola 备份。现原文已被删除。原页面截图在此 http://tweetphoto.com/8630311 ，感谢霍炬 @virushuo 帮忙。 update2010年1月13日20:22:51 又有截图：http://www.flickr.com/photos/46280976@N08/4271559306/sizes/o/ 感谢 @Bamind 提供。 关于谷歌退出中国_在地铁站 - http://hi.baidu.com/whomi/blog/item/2b1001e9be877834b80e2df6.html 作者：百度首席产品设计师孙云丰 google宣称要退出中国，所证明的，恰恰不是市面上的那些g粉所宣称的那样，google是个&quot;人权斗士&quot;，而刚好反了过来，正好证明google是个市侩分子。 google的首席法律顾问的调调让我感到恶心。因经济利益退出，就直白白的说好了，把自己涂脂抹粉一番，还煞有介事的提到google被中国人攻击，中国异议分子的Gmail信箱被攻击，把这些事情作为退出中国的铺垫，这种论调是侮辱中国普通老百姓的智商，但还真有可能迎合那帮目空一切，但从未到过中国、对中国没有丝毫了解，却又喜欢对中国说三道四的西方人的假想。 只提一个假设，如果谷歌占据了中国80%的搜索市场份额，google的高管，还会这么高调的宣称要do no evil，从中国退出吗？ 整个事情给我的唯一感受，就是恶心。 科普一点： 信息不对称是造成社会不平等最主要的原因之一。而对普通百姓最为关键的信息，并非中南海秘闻，而是最为常规的经济、文化、科技等领域信息。尽可能的为普通老百姓对这些领域的信息提供便捷，并消弭信息占有的不对称，这是搜索引擎存在的最大社会政治意义之一。 从这个角度而言，尽可能的设法为百姓提供便捷的信息获取技术服务，提供切实的价值，而不是挂羊头卖狗肉的宣称自己do no evil和政府撕破脸皮搞壮烈，才是一种真切的负责态度。找台阶下可以，但不要拿一个高管制国家的民众感情来做台阶，这是极其不道德的。 政治环境短期内是无法改变的。在中国，每个企业或者个人，都必须戴着镣铐跳舞。其实在别国一样，只是程度之别。但这是现实。在有限的条件下，尽可能的提供自己勉力而为的一份子，才是一个真切的做企业、做人态度。 在我博客上乱喷的兄弟，甚至还有搞笑的喷我five毛党的，都回家好好的念点书，再回来喷吧。希望看得见点水平的，而不是除了咒死爹死娘就不知道说啥的。 80年代的愤青，可不是现在这副衰样儿。 -------------- 以上是作为一个曾经的忠实google用户而说的，和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="胡言乱语" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>我的看法：</p>

<p><font color="red"><br />
1 百度忘了自己是怎么被CCTV菊爆的了？<br />
2 百度忘了自己的股价和google永远是波动一致的了？</p>

<p>原帖他自己删了，CSDN转载的 http://news.csdn.net/a/20100113/216459.html 被百度的人要求删掉，所以我就在这里再多备份一次。<br />
</font><br />
声明：本文由 @dupola 备份。现原文已被删除。原页面截图在此 http://tweetphoto.com/8630311 ，感谢霍炬 @virushuo 帮忙。<br />
update2010年1月13日20:22:51 又有截图：http://www.flickr.com/photos/46280976@N08/4271559306/sizes/o/ 感谢 @Bamind 提供。</p>

<p></p>

<p>关于谷歌退出中国_在地铁站 - http://hi.baidu.com/whomi/blog/item/2b1001e9be877834b80e2df6.html<br />
作者：百度首席产品设计师孙云丰</p>

<p>google宣称要退出中国，所证明的，恰恰不是市面上的那些g粉所宣称的那样，google是个"人权斗士"，而刚好反了过来，正好证明google是个市侩分子。</p>

<p>google的首席法律顾问的调调让我感到恶心。因经济利益退出，就直白白的说好了，把自己涂脂抹粉一番，还煞有介事的提到google被中国人攻击，中国异议分子的Gmail信箱被攻击，把这些事情作为退出中国的铺垫，这种论调是侮辱中国普通老百姓的智商，但还真有可能迎合那帮目空一切，但从未到过中国、对中国没有丝毫了解，却又喜欢对中国说三道四的西方人的假想。</p>

<p>只提一个假设，如果谷歌占据了中国80%的搜索市场份额，google的高管，还会这么高调的宣称要do no evil，从中国退出吗？</p>

<p>整个事情给我的唯一感受，就是恶心。</p>

<p>科普一点：</p>

<p>信息不对称是造成社会不平等最主要的原因之一。而对普通百姓最为关键的信息，并非中南海秘闻，而是最为常规的经济、文化、科技等领域信息。尽可能的为普通老百姓对这些领域的信息提供便捷，并消弭信息占有的不对称，这是搜索引擎存在的最大社会政治意义之一。</p>

<p>从这个角度而言，尽可能的设法为百姓提供便捷的信息获取技术服务，提供切实的价值，而不是挂羊头卖狗肉的宣称自己do no evil和政府撕破脸皮搞壮烈，才是一种真切的负责态度。找台阶下可以，但不要拿一个高管制国家的民众感情来做台阶，这是极其不道德的。</p>

<p>政治环境短期内是无法改变的。在中国，每个企业或者个人，都必须戴着镣铐跳舞。其实在别国一样，只是程度之别。但这是现实。在有限的条件下，尽可能的提供自己勉力而为的一份子，才是一个真切的做企业、做人态度。</p>

<p>在我博客上乱喷的兄弟，甚至还有搞笑的喷我five毛党的，都回家好好的念点书，再回来喷吧。希望看得见点水平的，而不是除了咒死爹死娘就不知道说啥的。 80年代的愤青，可不是现在这副衰样儿。</p>

<p>--------------</p>

<p>以上是作为一个曾经的忠实google用户而说的，和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G 粉的兄弟，请勿跟帖瞎喷，你们根本不懂什么叫搜索引擎，什么叫自由人权。</p>

<p>--------------</p>

<p>btw，评论关闭。要喷到twitter上喷吧。我的地盘不欢迎。</p>]]>
        
    </content>
</entry>

<entry>
    <title>使用php,js来对内容做rsa加密</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2009/12/27/phpjsrsa.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=669" title="使用php,js来对内容做rsa加密" />
    <id>tag:blog.devep.net,2009:/virushuo//2.669</id>
    
    <published>2009-12-27T10:56:46Z</published>
    <updated>2009-12-27T13:21:19Z</updated>
    
    <summary> http://code.google.com/p/phpjsrsa/ 这是一个用于文本加密的库，主要用于http协议下的防窃听。一般来说，如果应用https协议可以有效的避免窃听。但有几种情况必须考虑。 (1) 主机同时有https和http协议，部分用户通过https协议访问，获得了保护。但也有用户通过http访问，这部分用户会遭到窃听。除非关闭http请求，全面转向https。 (2) 主机并没有https支持。 很多情况下，我们需要保证主机安全，最好的办法是将其混入数字森林中。即：这台主机输出的内容没有人能看得懂的，只由无意义的代码和数字组成。用户浏览这台主机，不会触发任何关键词扫描。甚至该主机连https协议都不使用，更凸显其低调本色。 换言之，一个网站如果把自己的内容都变成字母和数字的组合，且不使用https协议，那么他就是数字森林中的一片树叶，丝毫不引人注意。 我们的目标应该是传输过程中不引人注意，并非绝对的不可破解的安全。 因此这个库的工作流程是： 1 php对&quot;内容&quot;做rsa加密-&gt;将加密结果输出到页面上。 2 用户浏览页面，html代码中的&quot;内容&quot;被加密成数字形态。私钥可以直接输出在页面代码中，也可由用户输入一次，保存在cookie中。使用cookie会降低密钥泄露的危险，更加有效。 3 通过javascript在用户浏览器上将这些数字解密为内容。 4 通过javascript dom来把内容写回到页面上。用户即可浏览。 利用javascript解密，可以把运算负担分散到客户端上。窃听者如要窃听每一个页面的内容，则必须要 1 获得密钥 2 用密钥解密内容 在已知密钥情况下，如客户端的每个页面运算负担为 1 ，页面数量n ，那么窃听者获得密钥之后的运算负担为 1*n。 为了运算效率，使用小质数作为rsa的p,q，理论上窃听者可以通过因数分解算出密钥，其运算负载为k，注意k 远远大于1。 如果每个站点使用不同的密钥，共计m个站点，窃听者的运算负担为 m*k+1*n，且负载集中。 而，如果采用双向可逆加密方法，在得知算法的情况下，窃听者运算负载极小。如果在通过变换算法来增加难度，又无法做到通用，给用户正常浏览造成困难。使用rsa方法，算法是标准的，用户使用成本很低，窃听成本很高。 在项目代码中，我已经实现了这一目标。但仍然有效率问题。 目前问题： 1 在没有bcmath和gnumath函数的php主机上，php加密内容的运算效率很低。和bcmath差距几十倍。好在大部分情况下，主机都是有bcmath函数的。这个问题不严重。 2...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="偶尔谈谈技术" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p><br />
<a href="http://code.google.com/p/phpjsrsa/">http://code.google.com/p/phpjsrsa/</a></p>

<p>这是一个用于文本加密的库，主要用于http协议下的防窃听。一般来说，如果应用https协议可以有效的避免窃听。但有几种情况必须考虑。</p>

<p>(1) 主机同时有https和http协议，部分用户通过https协议访问，获得了保护。但也有用户通过http访问，这部分用户会遭到窃听。除非关闭http请求，全面转向https。<br />
(2) 主机并没有https支持。</p>

<p>很多情况下，我们需要保证主机安全，最好的办法是将其混入数字森林中。即：这台主机输出的内容没有人能看得懂的，只由无意义的代码和数字组成。用户浏览这台主机，不会触发任何关键词扫描。甚至该主机连https协议都不使用，更凸显其低调本色。</p>

<p>换言之，一个网站如果把自己的内容都变成字母和数字的组合，且不使用https协议，那么他就是数字森林中的一片树叶，丝毫不引人注意。</p>

<p>我们的目标应该是传输过程中不引人注意，并非绝对的不可破解的安全。</p>

<p>因此这个库的工作流程是： <br />
1 php对"内容"做rsa加密->将加密结果输出到页面上。<br />
2 用户浏览页面，html代码中的"内容"被加密成数字形态。私钥可以直接输出在页面代码中，也可由用户输入一次，保存在cookie中。使用cookie会降低密钥泄露的危险，更加有效。<br />
3 通过javascript在用户浏览器上将这些数字解密为内容。<br />
4 通过javascript dom来把内容写回到页面上。用户即可浏览。</p>

<p>利用javascript解密，可以把运算负担分散到客户端上。窃听者如要窃听每一个页面的内容，则必须要 1 获得密钥 2 用密钥解密内容</p>

<p>在已知密钥情况下，如客户端的每个页面运算负担为 1 ，页面数量n ，那么窃听者获得密钥之后的运算负担为 1*n。</p>

<p>为了运算效率，使用小质数作为rsa的p,q，理论上窃听者可以通过因数分解算出密钥，其运算负载为k，注意k 远远大于1。</p>

<p>如果每个站点使用不同的密钥，共计m个站点，窃听者的运算负担为 m*k+1*n，且负载集中。</p>

<p>而，如果采用双向可逆加密方法，在得知算法的情况下，窃听者运算负载极小。如果在通过变换算法来增加难度，又无法做到通用，给用户正常浏览造成困难。使用rsa方法，算法是标准的，用户使用成本很低，窃听成本很高。</p>

<p>在项目代码中，我已经实现了这一目标。但仍然有效率问题。</p>

<p>目前问题：</p>

<p>1 在没有bcmath和gnumath函数的php主机上，php加密内容的运算效率很低。和bcmath差距几十倍。好在大部分情况下，主机都是有bcmath函数的。这个问题不严重。<br />
2 JS的bigint运算效率很低，主要是powmod的效率低，而这是rsa解密最频繁的操作。</p>

<p>希望有兴趣的朋友加入这个项目。效率问题解决后，还需要port在一系列常用软件上。比如dabr或twitese等。</p>

<p>另外，需要的质数可以在 <a href="http://www.prime-numbers.org">http://www.prime-numbers.org</a> 找。</p>

<p>我放了一个demo在： <a href="http://blog.devep.net/rsatest/test.php">http://blog.devep.net/rsatest/test.php</a> 可以看html代码，里面是没有中文内容的。</p>

<p>update: 使用了 <a href="http://www-cs-students.stanford.edu/~tjw/jsbn">http://www-cs-students.stanford.edu/~tjw/jsbn/</a> 的大数运算库，效率提高很多。</p>]]>
        
    </content>
</entry>

<entry>
    <title>beta技术沙龙的snmp话题的个人总结</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2009/08/28/betasnmp_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=668" title="beta技术沙龙的snmp话题的个人总结" />
    <id>tag:blog.devep.net,2009:/virushuo//2.668</id>
    
    <published>2009-08-28T06:11:35Z</published>
    <updated>2009-10-17T06:03:01Z</updated>
    
    <summary>如前所述，这次活动我分享了银杏搜索在使用snmp监控方面的一些经验和演变过程。其实起初我认为这是一个相当冷僻的话题，没多少人会有类似的需求或是兴趣。没想到的是还是有很多同学说有用，也在沙龙上碰到了一些正好也在做这方面开发的朋友。非常令人欣慰。 总体来说，这个方案还是有很大的局限性。局限性首先来源于我们的服务特性，可以说是为了解决特殊问题的特殊方案。其次，还有很多地方不完善，仍然需要在应用中进一步完善。 ppt放在这里了： Beta Huoju 090823View more presentations from zhu02. 另外做个广告，敏捷中国大会 2009即将召开，含金量颇高。有兴趣参加的，可联系 agilechina@cn.infoq.com 购票，说是我介绍来的可以有100块钱优惠 :D...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="偶尔谈谈技术" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>如前所述，这次活动我分享了银杏搜索在使用snmp监控方面的一些经验和演变过程。其实起初我认为这是一个相当冷僻的话题，没多少人会有类似的需求或是兴趣。没想到的是还是有很多同学说有用，也在沙龙上碰到了一些正好也在做这方面开发的朋友。非常令人欣慰。</p>

<p>总体来说，这个方案还是有很大的局限性。局限性首先来源于我们的服务特性，可以说是为了解决特殊问题的特殊方案。其次，还有很多地方不完善，仍然需要在应用中进一步完善。</p>

<p>ppt放在这里了：</p>

<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNTE*Mzk3Nzk*NDUmcHQ9MTI1MTQzOTgxNTY1NSZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89YWExNWI2NmFlNzFlNDEzODliNjY4YTY3NzQ5Y2E*ZDMmb2Y9MA==.gif" /><div style="width:425px;text-align:left" id="__ss_1917933"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/zhu02/beta-huoju-090823" title="Beta Huoju 090823">Beta Huoju 090823</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=betahuoju090823-090827224024-phpapp01&stripped_title=beta-huoju-090823" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=betahuoju090823-090827224024-phpapp01&stripped_title=beta-huoju-090823" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/zhu02">zhu02</a>.</div></div></p>

<p>另外做个广告，<a href="http://www.agilechina.net/">敏捷中国大会 2009</a>即将召开，含金量颇高。有兴趣参加的，可联系 agilechina@cn.infoq.com 购票，说是我介绍来的可以有100块钱优惠 :D</p>]]>
        
    </content>
</entry>

<entry>
    <title>本次beta技术沙龙我来分享银杏搜索利用snmp作服务监控的话题</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2009/08/18/betasnmp.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=667" title="本次beta技术沙龙我来分享银杏搜索利用snmp作服务监控的话题" />
    <id>tag:blog.devep.net,2009:/virushuo//2.667</id>
    
    <published>2009-08-18T08:08:00Z</published>
    <updated>2009-08-18T09:01:20Z</updated>
    
    <summary>应大家要求，上场讲一次。但是我作的事情多而杂，实在想不出来讲什么。以前我blog写过一篇我们是怎么使用snmp来做到免配置的监控搜索服务的，包括获得搜索服务的各种状态数值。很多同学对这个有兴趣，于是这次就分享这个吧。 时间地点 2009年8月23日 14:30 在西直门，奇遇花园咖啡馆: 交通和地图 欢迎来捧场 话题简介： &quot; 对于大规模的服务软件，尤其在SAAS服务中，对所有服务的状态进行管理和监控是系统的难 点之一。本次活动分享银杏搜索基于snmp协议实现的免配置的服务管理方法。通过这种方法 ，银杏搜索管理着分布在10多台服务器上数百个服务程序的状态，增加和减少服务设备时， 不需要进行任何人工配置。 &quot; 可参考我过去这篇blog：在你自己的软件中应用snmp和agentx协议传递信息...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>应大家要求，上场讲一次。但是我作的事情多而杂，实在想不出来讲什么。以前我blog写过一篇我们是怎么使用snmp来做到免配置的监控搜索服务的，包括获得搜索服务的各种状态数值。很多同学对这个有兴趣，于是这次就分享这个吧。</p>

<p>时间地点  2009年8月23日 14:30  在西直门，奇遇花园咖啡馆: <a href="http://storygarden.me/cafe/map">交通和地图</a></p>

<p>欢迎来捧场</p>

<p>话题简介：<br />
"<br />
对于大规模的服务软件，尤其在SAAS服务中，对所有服务的状态进行管理和监控是系统的难<br />
点之一。本次活动分享银杏搜索基于snmp协议实现的免配置的服务管理方法。通过这种方法<br />
，银杏搜索管理着分布在10多台服务器上数百个服务程序的状态，增加和减少服务设备时，<br />
不需要进行任何人工配置。<br />
"</p>

<p><br />
可参考我过去这篇blog：<a href="http://blog.devep.net/virushuo/2009/05/08/custom-snmp-by-agentx.html">在你自己的软件中应用snmp和agentx协议传递信息</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>谈谈《程序员修炼之道》</title>
    <link rel="alternate" type="text/html" href="http://blog.devep.net/virushuo/2009/08/08/post_68.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blog.devep.net/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=2/entry_id=666" title="谈谈《程序员修炼之道》" />
    <id>tag:blog.devep.net,2009:/virushuo//2.666</id>
    
    <published>2009-08-07T15:30:13Z</published>
    <updated>2009-08-07T16:09:03Z</updated>
    
    <summary>学过高中物理的人，应该会记得，原子中的电子获得能量之后，将发生能级跃迁，到达更高的能量状态。其实任何工种都是一样的，要跳出自己的水平，到达更高的级别，不是件容易的事，这个跳跃过程总需要一些东西的辅助。诚然，如果要成为一个好人，那么只要做好在幼儿园中学到的一切就足够。如果要成为一个好程序员，所需要的道理也不太多，只不过，当水平不够的时候，永远不能认识到那些朴素道理的重要。而当水平达到的时候，这些道理自然会明白。所以一本帮助程序员进阶的书，很容易落到低手觉得是废话，高手也觉得是废话的悲惨境地。 很多年以前，有人和我推荐过这本《程序员修炼之道》，甚至专门买了一本送到我家。而当年的我，不知道是由于无知，自负，浮躁，或是其他，只草草翻了一下，就下了个&quot;烂书&quot;的定义，扔在书架一角。后来有朋友在我书架上发现，如获至宝，说已经买不到了。我当然乐得送了人情。在我心目中，最好的入门书永远是《代码大全》，那也是对我影响最深的一部书。 过了很多年之后，再来谈这本书，发现很多人的评价比我高的多，自知不妙，赶快找来重读，这才知道错过了什么。在一个滥俗的译名之下，在一个看起来不知所云的目录之后，在一些读起来拗口的句子之中，隐藏的竟然是相当伟大的思想，朴素而真挚，简单而有效。这时候我突然明白，这是一本不逊于《代码大全》的伟大著作，后者一直被我誉为&quot;新手圣经&quot;。 经验这个东西，往往并不能告诉我们什么一定对，但是可以告诉我们什么一定不对。这本书完全是经验凝成，没有大道理，没有新观念。这些朴素的道理就是创造一个合格软件和作一个好程序员所必须了解的。比如 &quot;提示44 不要靠巧合编程&quot;，这句话表达的意思是&quot;不要预设立场&quot;。听起来简单，但是只要随手翻翻你最新写过的一段程序，通常都会发现代码中做了大量的&quot;假设&quot;。书中用一道习题，假设了用户使用命令行环境，假设用户懂英语....都可能导致问题。怕了吧？幸好还有&quot;提示30 你不可能写出完美的软件&quot;，这可不是帮你开脱责任，而是在讲如何控制需求，这正是能顺利完成一个项目的根本前提，可惜事实上往往到了项目失败的时候，人们才想起来需求出了问题。 这本书涉猎的范围相当广，如何设计架构，如何思考问题，如何测试，如何编码，如何处理文档...如果细心琢磨，构建软件的所有主干和细微枝节都有所涉及。和很多人的看法不同，我不认为这是一本可以轻松读完的书。一方面，这本书涉及的内容太多，虽然已经尽量讲述，但所有话题都可以继续引申出无限的内容，如果用心，还可以配合附录中所提到的各种论文和资源继续学习。习题也需要仔细思考。这绝不是一本小说。另一方面，作者用了大量的隐喻，导致读起来有一定难度。开始我认为是翻译质量有问题，不过慢慢发现美国的读者读起来也未必容易。原因还是涉及到的范围过大。我特意模仿这种风格写了本文的第一段。虽然是中文，读起来也不容易吧。 相信以上的两点会阻挡一部分人阅读这本书。我也算是曾经受阻的人之一。 不过，好书并不会随着时间的推移和平台变化而消亡，好书只会成为经典。无论是《人月神话》，还是《代码大全》，都在时间的长河中沉淀下来，传颂至今。这本书，虽然历史只有10年，不过现在再来翻看，不仅毫不落伍，甚至感觉穿透了时间，看到了这些年中不少自己犯过的错误，我相信这也是一本能经的起时间沉淀的书，只不过需要多点耐心。因此，我郑重的写下这篇书评，希望再能读到这本书的人多一点耐心，越过语言的障碍，直入本质，直至跃向更高级别。这个希望，不仅仅是对新手说的，其实也包括我自己。如本书开头所说：注重实效的程序员应该不断学习。我们都应该不断的学习下去。...</summary>
    <author>
        <name>virushuo</name>
        <uri>http://www.devep.net</uri>
    </author>
    
        <category term="读读书，写写字" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.devep.net/virushuo/">
        <![CDATA[<p>学过高中物理的人，应该会记得，原子中的电子获得能量之后，将发生能级跃迁，到达更高的能量状态。其实任何工种都是一样的，要跳出自己的水平，到达更高的级别，不是件容易的事，这个跳跃过程总需要一些东西的辅助。诚然，如果要成为一个好人，那么只要做好在幼儿园中学到的一切就足够。如果要成为一个好程序员，所需要的道理也不太多，只不过，当水平不够的时候，永远不能认识到那些朴素道理的重要。而当水平达到的时候，这些道理自然会明白。所以一本帮助程序员进阶的书，很容易落到低手觉得是废话，高手也觉得是废话的悲惨境地。</p>

<p>很多年以前，有人和我推荐过这本《程序员修炼之道》，甚至专门买了一本送到我家。而当年的我，不知道是由于无知，自负，浮躁，或是其他，只草草翻了一下，就下了个"烂书"的定义，扔在书架一角。后来有朋友在我书架上发现，如获至宝，说已经买不到了。我当然乐得送了人情。在我心目中，最好的入门书永远是《代码大全》，那也是对我影响最深的一部书。</p>

<p>过了很多年之后，再来谈这本书，发现很多人的评价比我高的多，自知不妙，赶快找来重读，这才知道错过了什么。在一个滥俗的译名之下，在一个看起来不知所云的目录之后，在一些读起来拗口的句子之中，隐藏的竟然是相当伟大的思想，朴素而真挚，简单而有效。这时候我突然明白，这是一本不逊于《代码大全》的伟大著作，后者一直被我誉为"新手圣经"。</p>

<p>经验这个东西，往往并不能告诉我们什么一定对，但是可以告诉我们什么一定不对。这本书完全是经验凝成，没有大道理，没有新观念。这些朴素的道理就是创造一个合格软件和作一个好程序员所必须了解的。比如 "提示44 不要靠巧合编程"，这句话表达的意思是"不要预设立场"。听起来简单，但是只要随手翻翻你最新写过的一段程序，通常都会发现代码中做了大量的"假设"。书中用一道习题，假设了用户使用命令行环境，假设用户懂英语....都可能导致问题。怕了吧？幸好还有"提示30 你不可能写出完美的软件"，这可不是帮你开脱责任，而是在讲如何控制需求，这正是能顺利完成一个项目的根本前提，可惜事实上往往到了项目失败的时候，人们才想起来需求出了问题。</p>

<p>这本书涉猎的范围相当广，如何设计架构，如何思考问题，如何测试，如何编码，如何处理文档...如果细心琢磨，构建软件的所有主干和细微枝节都有所涉及。和很多人的看法不同，我不认为这是一本可以轻松读完的书。一方面，这本书涉及的内容太多，虽然已经尽量讲述，但所有话题都可以继续引申出无限的内容，如果用心，还可以配合附录中所提到的各种论文和资源继续学习。习题也需要仔细思考。这绝不是一本小说。另一方面，作者用了大量的隐喻，导致读起来有一定难度。开始我认为是翻译质量有问题，不过慢慢发现美国的读者读起来也未必容易。原因还是涉及到的范围过大。我特意模仿这种风格写了本文的第一段。虽然是中文，读起来也不容易吧。</p>

<p>相信以上的两点会阻挡一部分人阅读这本书。我也算是曾经受阻的人之一。 不过，好书并不会随着时间的推移和平台变化而消亡，好书只会成为经典。无论是《人月神话》，还是《代码大全》，都在时间的长河中沉淀下来，传颂至今。这本书，虽然历史只有10年，不过现在再来翻看，不仅毫不落伍，甚至感觉穿透了时间，看到了这些年中不少自己犯过的错误，我相信这也是一本能经的起时间沉淀的书，只不过需要多点耐心。因此，我郑重的写下这篇书评，希望再能读到这本书的人多一点耐心，越过语言的障碍，直入本质，直至跃向更高级别。这个希望，不仅仅是对新手说的，其实也包括我自己。如本书开头所说：注重实效的程序员应该不断学习。我们都应该不断的学习下去。</p>]]>
        
    </content>
</entry>

</feed> 

