2010-12-12

三体杂评

  三体是年来看过最好的科幻小说系列.
  没有之一.
  因为这确实是许多年以后,才又第一次看起来科幻.

  从在某年某月某日把倪匡的除木兰花系列的所有科幻都看完之后,就再没碰过科幻小说.

  当然,这不是说倪匡的作品已经前无古人,后无来者了.
  只是说,那时候,知道的东西渐渐多了起来.
  于是,没有了童年,也自然没有了科幻.

  所谓科幻,如词所表达的.
  即是科学,又是幻想.

  它的魅力在于可有可无之间.

  当年着迷的倪匡便是如此.

  许多年过去之后,就没有碰过国内的小说.
  一部分原因是如四姑娘的阴影.
  
  当看到幻城末尾最有深度的人物刻画来自于古龙小说之后,便对国内小说水平从此绝望.

  当然,这里也不是要谈幻城,也不是要谈郭总.
  
  从三体3上市开始,twitter和reader里便不乏相关的消息.
  timeline上剧透和反剧透的在互相较量.
  
  此时的三体于我来说,毕竟不过是一本比较热门的书.
  即便,在一些比较"高端"/"成熟"/"理性"的圈子里,也有不少对刘慈欣的赞誉.
  但,也仅限于此.
  
  甚至于当同事看完三体3兴奋地向周围推荐的时候,植根深入的对国内小说的悲观感让我回了句:
  "都几岁了,还看科幻".

  在这本书被传阅几个人之后,终于也还是有了点兴趣.
  
  一句题外话,这便是social network的魅力/营销.
  所谓的口碑营销和virus便是如此.
  从一个节点外延扩散,然后形成爆炸趋势.

  找回了三体前两部来看.
  感觉与其说是科幻小说,不如说是科普小说.

  三体一谈论的是混沌.
  借用三体有些的发展来描述科学探索方法的演变.
  从纯经验,到纯理论,到理论结合试验.
  
  当到达现代物理的时候,混沌的出现以及不可观测性造成数学上的不和谐之后.
  刘慈欣把"智子"引入了进来.

  这是一个很有意思的想法.
  用这个来解释混沌和理论物理的各种不完美.
  犹如书中提到的靶子的例子.

  某种程度上说,这是一个有神论上帝式的科幻观点.
  规律还是存在,只不过在于一个观察不到的"维度"上.

  虽然这个科幻观点深入下去有些索然无味.

  三体一另外一个有趣的地方在于对文革的描写.
  对于纯幻想小说来说,很少会纠结到现实.
  
  而刘慈欣对"现实"的执着使我在翻开前几页的时候因为这是一本描写文革时期/知青的书.
  当然,也许这也是三体让人有"代入"感到理由.
  利用现实拉深科幻的层次.

  相对于三体一着眼于方法论,黑暗森林则更偏向于哲学/世界观层面.
  有一点博弈的感觉,但更多的是对于世界观的设置.

  从内容深度上说,三体二没有第一部那么"科幻".
  因为它已经超越的纯粹科幻的场面,而致力于营造一种世界框架.
  即所谓的黑暗森林体系.

  所有有点"科幻"味道的描写都在于补充强化"生存",这个第一法则.

  三体三则是对前两部的一个补充和扩展.
  从维度上进行的扩展.
  只是,想表达的东西有些模糊.

  似乎主要只是把黑暗森林法则进行扩展.

  于是,从这个程度上说,三体其实只有后两部在理念上是合一的.
  第三部跟第一部的联系也许只在于对一些前沿理论的科普式宣传和描绘.
  尽管,有些看起来比较玄.

  比如关于维度展开和跨越,智子的制造方式,四维宇宙的描述和维度坍塌.

  当然,对于量子/前沿理论物理我所知的并不多.
  对于维度的理解也只是限于它数学上的纯粹维度.
 
  比如描述宇宙需要11个基本变量,便是11维度.
  于是,对于"维度坍塌",能想象到的也就是"投影".
  "坍塌的维度"也即是被限制了的那个投影维度.

  所以,对于坍塌的景象,也许只是一个观测上的不同而已.

  回到主题.
 
  对于三体系列,从某些方面来说确实承担得了那些赞誉.
  毕竟,对于目前以"毫无根据的胡扯"居多的中文小说来说,算是一缕曙光.

  借用某人的一句评价就是:
  "还可以,就是有些地方太罗嗦."

  其实,作为科幻小说,能提供给人一些有理有据的白日梦就已经是成功.    
  只是,像三体这样没有明显硬伤的小说似乎已经越来越少了.    

2010-12-05

Java Class.cast的问题

  以前没觉得java的类型系统有什么问题.
  不过就两条机制在,box/unbox的问题而已.

  当然,接触java的时间不算久,所以没有经历过那段没有autobox的日子.

  不过,从一些例子看来,autobox也未必是好事情.
  比如这段代码

  int n = 0;
  int another = int.class.cast(n);


  从表面上看来,这应该是一段很符合表面语义的代码.
  一个类型转换,而且应该是没什么问题的.

  只是,由于cast的函数声明参数是一个Object.
  而在java里,primitive和object是两套类型系统.
  
  在java引入autobox之前,这段代码应该是会编译错误的.
  但是,有了autobox之后,没有编译错误,但是肯定会有运行错误.

  在调用的时候,java隐式地将int box成java.lang.Integer.
  
  想想,既然有autobox,那么应该也问题不大.
  最多返回Integer之后,再unbox隐式转换回int.

  但问题是,cast做了一些类型兼容的检测.
  从jvm的角度来说,int和Integer是两个不兼容的类型.
  于是,在调用cast的时候,会抛一个ClassCastException.

  也就是说,在java两套类型系统存在的前提下,
  primitive.class.cast()的行为就变得有些古怪了.
  
  一些语义上看上去无误的代码,也许运行时就必然要抛异常.
  
  当然,对于这类可以显式调用的也许可以避免.
  但程序复杂了就难免会有这样那样的trick/trap.

  比如:

  void  Type method(Class type){
       ....
      return type.class.cast(value);
  }
  
  这段代码.

  初看上去似乎还行.实现了某种程度的模板/复用.
  但是,注意那个cast.
  
  所以,很难保证在实际情况下不会出现这种box/unbox带来的cast的问题.

  于是,解决方案就是尽量避免使用cast做转型,或者时刻记住box/unbox的问题.
  
  问题是,如果不用cast转型就要自己写个检测null的东西了.
  这当然不是什么大问题.

  最好的方法估计还是统一一下类型系统吧.
  做接口的时候也许最好是使用非primitive的类型吧.
  这样或许能够避免一些问题.
  
  虽然在诸如做序列化的时候,非primitive类型会有一些额外开销.
  不过,真要做序列化的话,这些开销也是可以避免的.

  比如,最直接的一堆if,else做对应的类型映射.
  
  总而言之,java的两个类型系统是个头疼的存在.
  不仅存在陷阱,还使得在做reflect的时候经常让人崩溃.

  在这方面,后来者C#做得貌似就好得多了.

  比较,Java老了.

  语言这东西,也许不是说年代越久越成熟.

  毕竟,需要解决的总是新问题.

2010-11-28

发掘用户的支出成本

  周末在看一本讲犹太人的书.
  里面的一些内容带来的联想比较有意思.

  犹太人的经商理念里,借贷似乎是一件很自然的事情.
  从现代经济的概念来说,这是杠杆行为.
  但是,从另外一些角度来考察的话,似乎也能挖掘出一些东西出来.

  事实上,不论是所谓的杠杆,还是直接的借贷,本质上说,就是将一件东西从一个地方转移到另一个地方.
  回归到人身上,并且局限点说,就是把一个人暂时不用的/处理优先级比较低的资源转移到急需的/处理优先级比较高的人手中.
  
  就借贷来说,是从资本充裕到资本急需的转移过程.
  换句话说,这是一个转换/汇聚到过程.

  不考虑借贷双方资本数量级的关系的话,借贷本身是一个资本重定向/重定义的过程.

  简单点说,就是把资本从一个形式转换为另一个形式.
  
  这个的意义在于,如果把它推广开来,其实能在很多地方找到相似的痕迹.
  比如腾讯QQ的在线时间累计等级体系.

  用前面的话说,就是把用户的时间"借"过来,沉淀成为量化的"固定资产",然后进行资本形式的转换,变成一种会员体系,回过头来"贷"回给用户.
  
  其中的重点在于,把零散的时间收集起来,变化为价值.

  从用户层面上看,某种程度上来说,这是一种把支出收益比最大化的过程.
  在没有会员成长体系之前,付出的在线时间是0回报.
  而又了之后,价值在于所谓的QQ等级.

  虽然实际上,这种收益是腾讯认为制造出来的.
  但不可否认,这是一种一定程度上的双赢局面.

  延伸出来的一个话题就是,如果发现这种最大化收益的方式呢?

  回溯到QQ会员上.
  可以看出的是,关键点在于找到支出项.
  或者说成本项.

  就像做理财,要优化收支状况,先要知道收入支出的的详细情况.
  
  对于做产品来说,就是在收入不变的前提下,发现支出状况.
  同时改善之.

  于是,当把用户在线时长考虑到支出项目之后,就很容易有把支出变为收入的思路.

  换句话说,就是想办法让用户的每个操作的价值最大化.
  
  想想WOW的成就系统,其实差不多也是这个思路.
  把用户的各种零散行为汇聚提炼,尽可能地将之变回可视,可衡量的东西.
  认为地制造出价值所在.

  这是第一次层面.
  也就是从用户角度的增效投入产出比.

  第二层面应该是对service provider的实际利益来说的增效.
  WOW的成就系统通过设置阶梯式的成就,由简入繁地"培养"用户行为,从而将这些行为成为游戏的一种玩法.
  从另一个层面推动游戏本身的多元性而间接提升游戏价值.
  QQ的会员体系则是通过反向促进在线时长增加了用户粘性,从而进一步回馈回整个QQ生态系统.

  可以看出,这是一个类似螺旋型的推动方式.
  先推动用户观感上的投入产出价值的提高(等级/成就),然后在提到一个程度之后,介入.
  用一句白话说,就是设个套,入套之后圈之.

  因为一个普遍的理由是,人们对于已经获得的东西,通常第一观感是继续持有.
  所以,对于等级制度/成就系统,大多数人在力所能及的范围内,将一直追入下去.

  所以,根本的在于如何发现支出,并尽可能把它转换为收入.  

2010-11-22

谈谈通胀以及其他

  中国的经济是个很神奇的存在.
  
  一方面对外出口产生巨大逆差,美国人喊着要人民币升值.
  另一方面国内却物价飞涨,已然是通货膨胀的姿态.

  贸易顺差产生的财富貌似不能被国内自己消化.
  加之比较严格的外汇管制,创汇回来的美元需要转化为等值的人民币才能进入正常的国内流通渠道.

  于是,结果就是随着外汇继续创新高,印钞厂的工作流水线也跟着创新高.

  一般来说,在这种贸易顺差的情况下,由于一国的自我消耗循环,从长远来看,是会自动平衡两国间贸易出入和货币情况的.
  理由是,在充分自由的前提下,顺差要么沉淀为国民财富,要么成为流通中剩余的部分,从而因通胀带来变相的贬值,导致贸易中的差额优势减小.

  中国目前的出口贸易还主要是劳动密集型,在产业纵深度上层次比较浅.
  换句话说,出口企业的创汇很难通过产业链带入到其他行业,从而形成比较健康的资金循环.
  
  创汇产生的财富,还是主要集中在个人/小团体上.

  如此巨额的财富是很难通过个人的纯消费行为进行消化的.
  而产业的纵深感不强,也阻碍了其对资金的消化能力.
  于是,便产生了目前所谓的莫名热钱.

  中国经济系统里,比较缺乏各种可靠和有效的金融手段.
  于是,剩余的资本既不能通过直接反馈回各行业中,也不能通过金融手段间接地作用于市场.
  
  那么,囤积的资本如何处置?

  想想高热的房地产市场或许能找到答案.

  除了金融手段之外,最为保险的保值方式莫过于投资于不动产.
  既有抗通胀的天然优势,有不失为一个合适的增值投资途径.

  于是,可以理解为何如今的房地产行业如此火热,资金不断.
  即便是有所谓的调控手段在,也阻碍不了高企的房市.

  究其原因,还是这股热潮并不是由一般消费需求导致的,而是由于巨额资金的消化不了所致.

  回观央行的一系列政策,包括准备金上调和加息.
  这些,相对于正趋火热的地产市场的收益比来说,是很难拉动资金回头的.

  另一个也许可以说明问题的就是,几次对于其他物品的物价哄抬行为,表明着这股自己在寻找除了房地产之外的消化渠道.
  或者说,房地产不过是一种选择之下的表象而已.
  即便说能通过及其严厉苛刻的手段限制房价/地产发展,也不能避免出现第二个"楼市"情况.

  因为其根源在于无法消化的营养过剩.

  那么,普遍程度上的物价上涨和通胀味道如何解释呢?
  这也许不过是经过漫长的消费扩散之后,资金终于有一部分反馈回正常流通领域的结果.
  就好象说,一股洪流结果蜿蜒曲折的途径之后,终于有一部分变成细流回归到各个田地.

  也就是说,"财富"的某种程度上平衡的结果.
  从少数人手上接过多次流通交易,对宏观流通量产生的微弱影响.

  如同当初迅猛的房市一样,如今物价的上涨不过是一种比较缓和迟缓的上升房市而已.

  如果找不到缺口,无限期的上涨是可以预期的.
  
  但这并不意味这回发生通胀或者说货币贬值.
  
  至少,在相当一段时期内,这种情况还是不太可能发生的.
  原因在于,这种流通消化方式的增长速度相对缓慢.
  也就是说,明显的货币增发感需要一段比较长的时间才能完全反馈回市场.

  加上掌握资本的少数人无时无刻不在寻找投机机会,进行再次的财富聚累.
  其结果最直接的便是财富从穷人手上转移到富人手上.

  通过资本话事权进行市场的投机操控,从而吸引其他资本进入,然后快速推出.
  这是一种劫掠式的财富增长方式.

  从宏观层面上说,就是越来越多的财富掌握在越来越少的人手上.

  把这种非平衡的分配方式推向极致呢?
  
  假设政府还存有控制能力的话,自然最后会对财富入口进行限制.
  也就是就以抑制出口的方式,用一个比较长的萧条时期来消化过多的财富.
  自然,前提是还有能力控制.

  当然,如果"乐观"点,物价上涨速度加快,形成全面性的通胀,从而从一定程度上宣告货币贬值,也许也不失为一个快速消磨资本的方式.
  毕竟,在一个投机的巅峰时刻,通过突然对资本进行稀释,也能起到相当范围内的效果,尤其是对"中小"规模的资本巨头.
  原因是,按比例稀释的话,这些资本也许就不能够很好地维持资金链,从而因为暂时的断裂而引起多米诺效应.

  当然,这个时期必然不能太长.因为贬值的另一个结果就是可能加剧资本的体积.
  贬值一定程度上是加剧了贸易顺差,从而引入更多的不良资金.
  这样只会加剧情况,使得物价无止境地上扬和失控.

  而且,巨大的吸金能力可能不单是影响中国经济了.
  各路资本的嗜血性很可能将其演变成为一个全球性的资本灾难.
  
  源源不断,不顾后果地流向中国.  

2010-11-09

厮混

  好久没写东西了.
  
  原本在某个独立博客也写了些,但是不稳定的VPS导致数据丢失,也因此罢了折腾的想法.
  想想,还是这里舒服些.
  虽然多少有些限制.
  但,对于不怎么折腾的话,大概也就如此了.

  直觉上,最近思绪一直比较乱.
  许久没有新的东西刺激.
  而当有新鲜感的时候,会很快觉得疲倦.

  也许这就是所谓真正老了?
  毕竟,也不算是什么年轻人了.

  辗转地,回到了毕业最初的公司.
  外面绕了一圈,也确实没有比这里好的了.

  也许是所谓屈服.
  潜意识地承认世界上没有完美的东西.

  尽管,直觉上,完美这个词本身就是个瑕疵.
  只是,更多地,追求完美是一种精神,或者说境界.

  所谓的超然,其实就是把不可能当作目标而形成一种观念.
  或者说动力.

  毕竟,耐性有时候因为着消磨.
   
  有个词叫水滴石穿.

  时间可以磨灭很多东西.
  包括好的以及不好的.

  有时候,看到大学班群的名字,才会蓦然想起,大学是什么年代的事情.
  其实,这或许并不长久.
  只是,许多人,许多事都在悄无声息地改变.

  某年某月某日,群里还在荡漾着各种企业的传说.
  又某年某月某日之后,群里面依然荡漾着各种企业的传说.
  只不过前者有着光环,后者的更多是风华的背后.

  这或许便是事实.
  永远是充满许多想笑,却无力去笑的现象.

  能做的,只是努力保持这种笑意.

  世人皆醉我独醒,或者世人皆醒我独醉.
  这并无所谓.

  一个人活着,能在乎自己的意志,这本身已经不是一件容易的事情.
  尤其是当越入世,则愈难出世.

  因为羁绊,不仅仅来自于自己.

  想想,人活着是为什么,这个被无数人嗤之以鼻的话题.
  
  无他,聊以培养睡意.

  到底是年龄大了,还是神经衰弱?

  为伊消得人憔悴也不过是因为熬夜睡眠不足导致罢了.

  如此而已.

2010-06-16

再谈Redis

  
  redis的hash/key lookup的实现就是在redis.c的lookupKey里.
  里面除了hash的查找过程dictFind之外,还有一些关于swap/vm的内容.
  暂且按下不表.
  
  redis的hash表"实现"是dict这个数据结构,在dict.h里定义.

typedef struct dict {
    dictType *type;
    void *privdata;
    dictht ht[2];
    int rehashidx; /* rehashing not in progress if rehashidx == -1 */
    int iterators; /* number of iterators currently running */
} dict;

typedef struct dictht {
    dictEntry **table;
    unsigned long size;
    unsigned long sizemask;
    unsigned long used;
} dictht;

  可以看出,redic是用了两个数组做hash table.
  
  至于为什么要用两个hash tbale,这个可以从dictRehash函数里看出.
  在做rehash的时候,其实是把ht[0]的所有内容移到ht[1].然后再把两者交换而已.
  
  至于什么时候以及为什么要rehash,一般是在查key的entry的时候,也就是_dictKeyIndex这个拿table index的时候,会看当前table里元素的大小.
  扩容的策略很简单,double.

  接下来看下table的分布情况.
  对于key计算出来的hash值,_dictKeyIndex先会将其跟table的sizemask做一个掩码.
  sizemask的值其实是table的"size" -1.
  
  由于table是按幂级数扩容的,于是sizemask上基本就是说,保留hash值的低级位的bit而已.

  得到计算出来的掩码之后,就以这个计算出来idx作为table的index.
  
  事实上,hash table数组里的值是一个链表.
  
  换句话说,其实redis hash table的分布方式类似内存的分页.

  用sizemask找出key所在的页,然后直接loop这个页的内容.
 
  于是,单对查找时间来衡量的话,当然是页内的东西越少查找越快了(因为是线性查找).
  换句话说,对于32bit的hash值,出去sizemaske的bit越多,查找理论上会越快.
  也就是说,当table越大,hash表越大的时候,查找效率会越高.
  当然,这也只是理论上的.
  
  而且,是在一定数量范围内才成立.

  因为redis毕竟是基于内存的,当数量超过可用内存的时候,自然效率不能担保.
  还有就是redis做save的时候(save到硬盘是通过fork clone一个进程做到的),也会占用一部分.

  所以,在处理redis的时候,需要考虑好内存的使用状况.
  不然out of memory的问题就麻烦了.

  至于redis的vm选项,貌似当开启的时候,不是用的内存而是用的swap或者说文件来存储的.
  这个可以在 lookupKey里看出点端倪.

  但vm选项开启,并且,第一次lookup出来的值没有REDIS_VM_MEMORY标记的时候,是从文件load进来的.

  至于,什么时候swap出去的嘛.
  还没看明白.

2010-06-12

浅谈Redis

 
  redis的源代码(v1.3.14)应该算是挺简单的.
  "核心"部分就在redis.c,大概也就1W多行,不多.
  除去各种命令的处理,整体框架只有几千行吧.

  基本的处理流程在aeMain里.

  当然,在此之前,会先load数据.
  毕竟,这是一个基于基于内存的key-value.
  也所以呢,这成为它的第一个问题.
 
  appendonly模式下,是通过读log来恢复数据的.
  实际上,log的内容大概就是命令的内容,制造了一个fackeclient将log的内容重放一边.

  在非appendonly模式下,则是读数据文件,一个个都add回去.

  两者的不同在于,明显,非appendonly的文件必然是某个时期的数据快照.
  而log,只能说是某一段时间的数据操作过程吧.

  也就是说,如果停机回复的话,大概在log和数据文件上要小心处理.
  当然,省事的情况就是只load快照文件.

  不管是何种情况,可以肯定的一点是,启动时间跟数据量成正比.
 
  启动完成之后会在aeMain里面loop.
 
  redis是事件风格的,或者说是poll风格的.
  也就是说,每个命令会形成一个事件,然后如队列.
  在一次循环过程中poll出来处理.
  完了再下一次的从队列里select ready的event.


void aeMain(aeEventLoop *eventLoop) {
    eventLoop->stop = 0;
    while (!eventLoop->stop) {
        if (eventLoop->beforesleep != NULL)
            eventLoop->beforesleep(eventLoop);
        aeProcessEvents(eventLoop, AE_ALL_EVENTS);
    }
  }


  处理的基本主题在aeProcessEvents里.
  当然,更直接的是在aeApiPoll里.
  
  apiPoll里面会涉及到具体的socekt操作.
  其实也并不复杂,就是把ready的file descriptor放到read write的ready列表里.然后设置相应的事件标记.
  剩下的只是返回一个ready的数量,其余的依然在aeProcessEvent里.

  值得注意下的是,其实apiPoll有三个实现,通过宏控制.
  对应的其实就是通常io的三个基本模型,select,epoll,kqueue.

  不仅仅apipoll
. 所有aeApi族的函数都相对应于三个版本.
  
  某种程度上说,这其实是api族函数其实是跟io相关的底层调用.
  
  值得注意的是,在apipoll里面,只是准备好fd,实际的read write实在processevent里做的.
  更实际的get set等操作,其实是在更早之前的beforeSleep里.

  也就是eventloop那一段.
  
  实话,beforeSleep这个名字多少有些不恰当.
  因为它并不sleep,相反,还做了挺多事情.
  
  核心的redis命令执行入口call()就是在这里调用的.

  一个while循环各个ready的client.
  
  对于每个client,尝试取一个command来执行,调用call.
  完了之后,如果还有堆积的命令则调用processInputBuffer,有里面的processCommand做未竟的事业.
  等所有client处理完了,则会根据参数配置,看是否对log做一次flush操作.
  
  注意到这一个过程是单进程单线程的.
  考虑到client很多,并且请求很多的话,恐怕数据的顺序就不好说了.
  
  运气好的api call,恰好在靠前的client队列里,那自然就在log里比较靠前了.
  一种理论上的极端情况是,两个并发写同一个key值,先发起的也许由于机遇问题,分在了靠后的client的话,那么,不管你早多少,事实上先写到库的是后发的那个连接.
  某种程度上说,这靠的不是先天,而是后知后觉.

  所以,目前来看,redis在高并发的时候情况可能不会很乐观.

  连接数多,导致loop ready client处理api call的时候,靠后的client在时序上靠后了.
  理论上,不能保证比较强的时序性.

  其次就是每次loop 完rady client之后的写操作.
  尽管,通过参数配置,可以让它隔一段时间再写,但毕竟这是同步写过程,属于block io吧.
  而且,如果reids并发访问很高,那么加上loop ready client时所花费的时间,积累的log越多,block io的时间会越来越长吧.
  
  当然,这只是纯纸上谈兵.实际如何,很难说.
  因为,怎样才算是高并发和高频读写呢,这个没有确切说法吧.
  
  至于各个readis命令的大致实现以及hash的内存策略问题,有空再谈谈.
  其实也挺简单的.

2010-05-16

谈谈PrivNote

  阅后即焚 https://privnote.com/其实是一个挺值得玩味的应用.
  初看的时候,看到了twitter的影子.
  也许是因为两者都很轻,都有一言看上去就有的"局限"

  140字的限制,阅后即焚.

  有时候很钦佩twitter的一点就是,它能把短处作为自己的产出.
  当然,也许这个短处跟最初的产品定位有关.
  但是,能在发展起来之后,不盲目变更,而是把它发展成一种特色一种潮流,这确实让人佩服.
  短,而后快.

  从某个程度上来说,privnote也是短而快.
  因为它是只读一次便消失.
  也就说,它的消化代谢速度很快.

  对于无用的消息,这个速度的优势在于能够迅速中止消息的传递,减少消息噪音.
  
  对于有价值的消息就比较有意思了.

  考虑到目前各种微博和SNS的存在,即时信息的传递已经不是什么大问题.
  信息已经在各种tweet和statues中传递,乃至洪范.

  对于一条有传播潜力的privnote,一般来说并不会因为单次传递之后就消失了.
  通过用户已有的关系网络可以很迅速地往其他social network扩散出去.
  这自然也包括通过privnote进行二次传播.

  一个问题是,为什么一开始要选择privnote做传播起点.
  而且,就目前的privnote来说,还是单点单向传播.

  对于这个问题,换个角度想.
  为什么一定要在privnote现有的框架谈呢?

  privenote可以是一种基于熟人网络的social network.
  因为其private的特性,可以作为一个类似悄悄话的东西.
  但这样的话,最多只能成为一个流行的sns应用,或者附属品.

  那么,privenote还能以什么形式出现呢?

  考虑下FML和糗事百科.
  以及twitter.

  FML和糗事百科是匿名的,而他们的信息流模式跟twitter也很相似.

  如果抛开FML和糗事百科的匿名性来说的话,其他它门就是某种程度上的twitter.
  不是么?

  说和听.
  follow和tweet.

  在信息的组织和流动形式上,其实是差不多的.
  唯一的区别在于,tweet更具有流动性.

  回到privnote.
  它其实是一种FML的特殊表现形式.
  像是泛化,又像子集.

  说泛化,是因为它的内容不限,可以是任何内容如何信息.
  说是子集,是因为同样的类匿名性质.

  因为privenote的标准信息流里只有写和读两个参与者.
  对于其他人来说都是匿名的.

  而如果把privenote扩展下,变成像FML一样的完全匿名.
  也就说,读的人不知道写的人是谁,写的人也不知道谁会读到.

  这就有点像漂流瓶游戏.
  往海里扔一个装有信息的瓶子,然后期待一个未知的通讯.
  而收到瓶子的人也不知道当初是谁放的这个瓶子.

  那么这种通讯的意义在于?
  或者说,为什么要做这种"漫无目的"的通讯?

  考察下twitter.
  
  twitter其实是一个很典型的subscribe模式.
  从理念上说,twitter是个陌生人网络.
  这也就注定了tweets从发布的一刻就不期待着有收听者.
  或者说,tweet只是为发而发.
  
  从这个层面上来说,tweet是一个silence的网络,或者是一个no response的网络.
  但事实上是,twitter是一个信息流动最迅速,最活跃的social network.
  
  其原因在于,它把所有人放到了一个同等的位置.
  或者说,某种参赌上,twitter不是去中心化的,而是强中心化的.

  所有用户都别联系到一个twitter网络上.
  用户虽然是孤立的,但是他们连接同一个节点.
  twitter就像网络里的交换机,通过twitter,信息能够在任意节点流动.
  也就是说,twitter的网络其实是一个中心要害的扁平系统.

  对于privnote的启示是,尽管note是单点甚至单向流通的.
  但是,它流通的载体可以是泛化的,公开的.
  就像是twitter的信息平台.
  或者说FML.

  于是,对于privnote的信息流来说,传播并不是问题.
  甚至说,privnote有它自己的一个先天优势.
  就是,对于无用信息,能够及早中止传播.
  
  但同时,这也是它的一个潜在劣势.
  因为它的流通性取决于读到信息的人的判断.
  如果他觉得信息无用,那么这种传播就会马上中止.

  但事实是这样么?
  未必.
  
  对于privenote自身网络来说,确实存在这种风险.
  但是,本身privenote要做传播的话,依靠的并不是自己的网络,而是已经存在的诸如twitter和sns网络.
  因此,只要信息转手一次,那么理论上他就已经传播出去了.
  
  于是,到这里,就有了一个悖论.
  既然privenote立足是,能够迅速中断传播.
  而传播又必须依靠其他不可中断的网络.
  那么,事实上这个定位是不靠谱的.

  也就是说,privnote以这种方式做信息流是不可行的.

  换个思路,从匿名性下手呢?

  匿名信息发布的话,似乎没什么意义.
  因为除了贵国需要规避跨省问题之外,匿名貌似没什么意义.

  当然,可以想想有什么信息是需要发布,但有需要匿名的.

  继续换思路.

  本质上来说,privnote是一个单向网络.
  因为它是发起方对接收方有私密要求.

  这一点的话,似乎也薄弱了点.
  对于sns来说,悄悄话已经足够.

  而如果把privnote建立在一个生人网络的话,单向私密要求似乎是没有基础的.
  因为本就不熟悉不认识,也就无所谓私密了.

  于是,或许只能走试探性的生人网络.
 
  就是说,每个人的信息都是公开的,但是可以匿名想某个人发送消息.
  一个pre-sns.
  作为以恶生人网络型sns想熟人sns转换的一个桥梁工具.

  当然,更广泛一点,是可以作为一个准社交工具.
  一个偏重主动方隐私的sns.

2010-05-03

Twitter和Google bot

  Google bot把整个互联网都爬了个遍.
  于是Google的搜索引擎在互联网上变得近乎无所不知.

  但是,现在的互联网已经不是纯粹的互联网了.
  web2.0的持续进化.facebook的SNS,twitter的微博客,互联网已经不是单纯的电子网络.

  如今的互联网,是一个柔和了真实人物性格的social network.
  那个著名的互联网狗理论也许就要被打破了.

  这并不是不可能.
  
  想想.SNS和微博的扩散.每个人都在网络中有意无意地流下了许多痕迹.
  最终一个人的成本变得不再高.

  你的每一个like,每一个share都是你真实意识的反映.
  它的准确度是潜意识范围上的.
  某种程度上说,这比面对面的调查或者问卷可能更准确地反映了一个人的特征.

  当年Google用爬虫征服了互联网.
  但如今的Google却必须想办法守住互联网.

  如今的互联网已经不是简单的机器所能推倒预算的了.
  当人的活动愈发地和互联网结合,也就意味这互联网的信息流向将会变得更加复杂和不可预测.

  因为人本身的行为是很情绪化的.
  有时候甚至是非理性的.
  尽管,有时候这是可以引导的,但并不意味这你能够准确预知最终信息的流向.

  机器味十足的互联网,google可以通过算法来认识.
  而对于高度复杂和不稳定的social network,google目前显然有些难以应付.
  
  这里不谈google.
  而是换个思路认识这个莫测的互联网.

  还是foursquare.

  其实还是twitter.
  foursquare只不过像是一个实验模型,用来证明twitter有能力掌握social network.

  foursquare的checkin机制其实跟google的bot很像.
  
  用户的每一次checkin算是一种加权行为.
  也算是一种network的追踪描绘过程.
  checkin的人越多,checkin的次数越多,那么个人的特征也就越明显,群体的趋势也就更有能力把握.

  针对每一个个体,每一次foursquare的checkin其实都算是生活轨迹的一次快照.
  如同google的爬虫对网页的每一次抓取.

  checkin的频率越高,就代表着某个人越活跃.
  某个地方的chekin总数越高,也就意味这某个地方的权重更高.
  
  至少,从浅层来看,foursquare有能力绘制一张动态的流量图.
  来表明人群的趋势热点以及习惯.

  这对于social network来说,其实是人生生活当中,行为轨迹的一种分析数据.
  通过checkin的数据,特征化人的行为方式,地方的集散特征.
  
  如果在综合个人的SNS情况,将LBS信息结合起来,那么,得到的就不是单纯一个地方一个人的特征信息.而是一个群体的活动模式.
  
  换回google的bot来说,这便是pagerank和search.
  
  了解了人的活动方式,其他的也就顺水推舟了.

  Foursquare所体现的只不过是twitter信息聚合抽象能力的一部分.
  它可以看作是twitter这个平台上的一个实例.
  
  或者放宽一点来考虑.
  facebook的open graph.
  这其实也是对人的一种信息聚合能力.

  尽管,在facebook的connect已经遍布许多地方.
  但是,这还不够.
  facebook以及facebook的生态圈依靠的是无休止的扩散.

  就像Google的爬出必须爬满整个互联网一样,facebook也必须把自己遍布全球的每一个角落,这样才能更广泛地抽象出用户行为,从而从中提取商业价值.

  但twitter和这两个稍微有点区别.
  google和facebook目前所做的有一个共同点就是,尽可能地把用户的数据收集到自己门下,作为数据挖掘统计的基础.
  更一般的共同点是,他们依赖的是已经存在在互联网上的内容.
 
  twitter与facebook和google一样,也在尽力挖掘这个social network的流向模型.
  但是,twitter采取了一个很开放的状态.

  注意到twitter上产生的内容.
  它不能说不是互联网的内容.
  但跟普通的blog和新闻文章等有一个区别就是它可能看上去meaning less.
  或者说,它的内容无意识的成分更多.
  
  反过来,也就是说它浓缩了更多的人的行为.

  facebook的like虽然也很无意识,但它比较被动.
  它依靠的依然是现有互联网的输出.

  buzz和twitter相似,但是问题在于用户量不多.
  
  因此twitter的优势在于既有用户多,信息种类足够多样性.

  但与此同时,过于杂乱的信息也让不是twitter本身能够消化吸收的.
  面多诸多的混乱信息,twitter不可能象google一样用机器去解决分析归类.
  因为twitter面对的不是固定的语义明确的网页,而是不可测的,语义复杂的人类思维.

  也许,正因为twitter认识到这点,所以它才没有想google那样急忙地拓宽影响力,也没有像facebook一样拼命地扩展.
  twitter想做的是一个信息平台.
 
  如同现在的google一样,做一个信息入口.

  twitter想要的应该是无数的像foursquare一样的,某个独立侧面的挖掘应用的存在.
  一个基于twitter复杂数据的生态环境.

  或者说,twitter的目标是成为一个social network的数据仓库.

  就像google的爬虫一样.
  twitter所做的是不停地收集.
  
  而分类的事情,交给想foursquare那样的应用去做吧.

  所以,从这个层面上来看的话,twitter比google和facebook走得都更远.
  因为它更早地明白了这个social network的特质.
  
  海量的信息,杂乱无序的状态.
  这不是任何一家或者几家公司所能力并掌握的.

2010-05-02

岁月神偷

  从头到尾把片子看完,也没明白,为什么这部片叫岁月神偷.

  影片开头罗进二的独白,让我恍然觉得这是一部描述香港过去的片子.

  可惜它不是.
  从始至终,它给我的感觉就是提心吊胆.
  犹如那台风中的罗屋.
  犹如悬悬地拉住房顶的罗爸.
  让人关心的只是这命运颠簸的一家人.

  岁月.
  在这里已经被一家人的莫定命运掩盖了.

  它不如天水围的日与夜搬真实琐碎.
  
  说是对旧香港的描写,也只是突兀的几个历史镜头罢了.

  罗家的命运与香港无关.
  与时代无关.

  犹如那条小巷.
  如同罗奶奶所说,看到这里没人就进来占领.
  纯粹的无论魏晋不知有汉.

  唯一跟时代挂钩的是那面英国国旗,和地痞般的警察.

  过多的煽情,让剧情有些流于俗套.
  斧凿直白的剧情暗示,也让影片成为纯粹的音乐欣赏.

  也许,唯一能够让人联想到过去的唯有那一幕幕的背景乐.
  时代气息浓重.

  作为一部温情片,开头确实起得不错.
  尤其是罗太的good fit.
  寥寥几笔,已经生活味浓重.

  顽皮的罗进二,老师的体罚,罗进一的学校生活,兄弟间的大闹.
  这便是岁月神偷应该描写的故事.
 
  街头的理发店,巷尾的鞋店,露天的聚餐.
  这才是时代味道十足的生活场景.

  可惜,岁月神偷没有坚持.
  它依然走了一条不是主线的主线.
  
  罗进一和芳菲的暧昧其实也没什么.
  只是为什么一定要造就一个贫富悬殊的境地?

  也许,这只是为了牵引出香港当时的动乱,移民出走的时代背景.
  但这一切未免过于牵强.
  也让罗进一很芳菲之间的暧昧变得有些突兀.

  忽然的自卑,忽然的释然.
  只是急匆匆地要赴战乱的时代背景.
  慌忙地得剧情而剧情.

  在罗进一谈到死后墓碑上不知道刻什么的时候,大概也就猜到了后面的剧情.

  由于之前就听说了这是"催泪弹".
  想想也该是这类剧情.

  只是,这句话一出来,难免想起了韩剧.
  所谓的伏笔,这也太生硬了.

  在罗进一死前芳菲的出现也是很突兀.
  为什么要安排她出现?

  完全没有必要.
  如果要凸显的这个家庭的悲剧的话,买粥这一段已经足够了.
  芳菲的出现,完全是画蛇添足.
  
  而且整部片一个很明显的地方就是,时间线不明朗.
  包括穿插的各个年代黑白影片,已经各种事件的前后顺寻显得过于随意.

  尤其是罗进一生病的那一段.
  全然没有交代各个时间段.
  
  这也是的在芳菲出现的时候,让人觉得突兀.
  她什么时候走的.走了多久.
  罗进一什么时候病的,病了多久.
  她回来的时候,他进医院多久了.

  这或许真得算是岁月神偷了.

  时间的流逝完全没有轨迹可言.

  罗奶奶的存在,似乎也不过是为了那句貌似这里的苦海.
  罗爸与巡警的偏见在初见的时候似乎有故事可讲,但直到结尾才发现,这不过是个美丽的错觉.
  矛盾的前后果也并没有交代清楚.

  贯穿全剧的鱼也不过是暗合罗太的难佳调子.
  
  综合来看,这一步片子不过死讲述一家人如何苦难,如何慢慢度过的.
  也纯粹是如此.

  并没有励志成分,也没有时代厚度.
  唯一的就是煽情.

  音乐,效果,剧情安排.
  步步地,貌似安静祥和平顺的家庭,却处处让人看到危险奔溃的信号.

  罗进一墓碑内容的暗示.
  台风里支离破碎的棚屋的暗示.
  罗母北上时,通宵修鞋的罗爸.
  
  有太多家庭悲剧的暗示.
  却少了最应该描写的平常岁月生活.
 
  整部片子如结局般让人不知所措.

  整部片子不可思议地以罗进二的死作为结束,却又唐突地交代罗爸的去世.
  
  让人看完除了记住罗家的悲剧之外,剩下的就是匆匆.

  太匆匆.

  论深度,论温情,论生活.
  岁月神偷距离天水围的日与月还很远很远.

2010-04-25

Netty/NIO和多线程杂谈.

 
  近来貌似无所事事.
 
  能写的东西也不多.

  在新单位遇到个"好领导",于是倒也乐得清闲,没事就翻翻Netty的代码.
  虽然,看来也没什么大的收获.
  但至少有事情做.

  当然,眼下的事情貌似应该是考虑试用期过之后怎么办了.
  毕竟,按照目前的情况,继续被冷处理的话,试用期是过不了的.
  除非上上级给面子.

  这些都是后话了.
 
  这里扯两句Netty这东西.

  说是Netty,但基本还是NIO的内容吧.

  以前单纯美好地认为NIO也不过如此.
  也不过是轮询select各个socket.

  但了解过之后才知道,这其实是跟平台相关的.
  准确点说,这是跟jvm的配置有关.
  
  默认地,JVM或根据所在的平台选择相应的nio provider.
  在linux kernel 2.6下,这个provider使用的select策略是epoll.

  当然,这是文档的说法.
  具体它怎么用epoll是jvm的事情了.
  
  要从openjdk里找出来,也不容易.
  
  顺手去翻了下这个epoll的一些资料.
  稍微有点明白大概的实现机制.

  以前的poll确实是轮询处理的.
  而epoll用高级点的话说,就是事件机制,通过注册相应的事件,来响应io.
  减少无谓的时间消耗.

  看了一些资料和代码的结论是,这种事件也是通过回调完成的.

  猜测可能kernel在处理io的时候被插入了一些回调函数.
  当io ready的时候触发这些函数,通知注册事件.

  这点有写ajax的味道.
  或者说用ajax模拟的server push.方式.
  
  当然,明显可能是后者模仿前者.

  这样做的结果就是cpu从io等待中解脱出来了.
  等待io的事情交给了最底层的io硬件.
  
  反正都是要等的,就不在乎等完之后多做点事情.

  这里想起来线程复用的问题.

  Java里面有个cachedthradpool之类的东西.
  说是可以线程复用.(Excutor的概念).

  进Java代码里看来下,也不过是将线程进队列,依次start.
  作用貌似只是保证同时运行的线程不过超过一定数量.

  当时很好奇,所谓线程复用怎么做的.

  于是就尝试写了个thread去跑,跑的内容是一个植入的回调函数.
  让它跑两次.中间替换一次植入函数.

  结果当然是抛异常.

  顺便说句,在做上面这件事情的时候无比渴望有lambda支持.
  省得写多几行代码.

  看来下Thread的start,里面会有个标记为看是否是新创建的线程.
  一个threadstate的int型.
  
  在java里并没有看到有改动这个值的,想想,应该是在native里实现的.

  总是,大概是启动之后这个值就被改变了吧.
  于是当再次调用语言级别的start之后,异常就抛出了.

  也就是说,当一个线程执行完之后,自然是交给gc了.
  因为从java来看的话,并不能使它再次运行.

  当然,也许cachedthreadpool是用来native的方法去改变threadstate.
  这自然也可以.

  不过要从纯Java角度来看的话,也不是不可能,只不过要做的事情比较多罢了.

  考虑对run()这个thread的实现做一个回调植入.
  比如
  public void run()
  {
     while(true)
     {
       this.getFunction().excute();
     }
  }
  
  这样,很roughly地,就让一个线程不死了.
  也就能实现所谓的reused了.

  当然,这里能改善的地方还很多.
  比如对this.getFunctin()做个改变,让他是从一个queue里pop出来的.
  这样,在while就变成看queue是否为空来选择是执行呢,还是wait一下.

  愿意的话,还可以在queue空的时候,把thread注册到一个free queue里.
  然乎run里直接wait()或者yeild()或者sleep()退出时间片的竞争.
  当需要的时候,再从queue里激活.

  想想,这个memory pool 其实是差不多的道理.

  说了这么多,貌似跟Netty没太大的关系.

  其实就目前的进度来说,netty还真没什么可以说的.

  总的来说,这是一个流水作业的io框架.

  有一个sendUpstream和sendDownstream,来分别处理上行下行的ChannelEvent.
  event在一个pipelien里流动.
  自上而下,自下而上.

  pilieline其实就是一个由ChannelHandler组成的queue,或者说list.
  当然,pileline也不一定会把io在chain里流过handler.
  有时候也会通过ChannelHandlerContext这一类的东西改变流向.

  ChannelHandlerContext里面其实也是ChannelHanlder.
  只不过带来一些附属品而已.
  也就是说,其实它只是一个有状态的channelhandler.

  具体的read write操作最后归结到sendUpstream和sendDownstream里.
  当然,最后还是通过NIO的selector来做的.

  不过这个过程是由一群IOWorker线程来完成传递的.

  大致浏览量下,boss线程组貌似是专门用来accpet的.ioworker是用来读写的.
  这个目前不确定.
  不过也有道理.
  因为貌似这两个线程组netty是尝试分到不同的cpu上面的.
  
  具体还是未知.

2010-04-12

流思

所谓生老病死.

本还是年轻人,不该早早谈论这些.
只是世事无常,不想不代表不需.

大学也不过恍然还在昨天.
却接连地有人或离去,或病倒.

当鲜活的东西忽然黯然了,才突然觉醒如何生活.

漫漫地在这世间爬着.
忽然然间见到有人倒了,才抬起头来看看天空.

这便是这一代人.

某个他,曾经是个很努力的人,在终于要毕业了,才离绝了这个尘世.
才抛弃了他所肩负所重压的东西.

又某个他,终于大学毕业,进来个颇有前途的企业.
当他父母遥想着如何过些悠闲日子的时候,却不意地,孩子病倒了.

20几年往往,换来的却是一次次不期而遇地玩笑.

年轻的时候,总想着有挥霍不完的资本.
年复年日复日.
却不曾想到也许青春已经慢慢远离.

但那种挥霍的态度却依然不去.

也许并不是不懂生活,而是没得选择.

现实的经历便是在一步步往前走,往上爬.
这是时代赋予的人生意义.

20年一孝子.
30年一成人.

云云总是眼盼着这俗套的成长过程.
受着当下的苦,去等待未来的点点滴滴.

所谓的生活希望.

有时候也许并不是生命太脆弱.
只是生活让它变得不堪一击.

在瀚海小舟上.
即便钢铁身躯,也只难逃覆舟的命运.

社会夹缝这个词其实很确切.

只有前后的选择.
没有左右其他.

即便你不往前走,最终不是被后来的人推着便是被踩在脚下.

从出生到教育到社会.

有时候人们会笑放羊的故事.
子子孙孙无穷尽地牧羊.

其实笑的便是自己.

成家立业.
娶妻买房生子养老.
反反复复.

而愈见疯癫的社会,也逐渐将这单调乏味的模式惊起来阵阵波澜.

如履薄冰.
大致如是.

整个社会机器对于个体的倒下无能为力.
却又时刻地要求着个体的奉献.

如奴隶般.

所谓的社会保障,空许了个美好的前程.
却在人祸天灾纷沓的时候,破灭如肥皂.

每每望着日渐华丽高耸的楼层.
却想起来里面多少外表光鲜,内力疲惫的灵魂.

有多少人是能超然于这个社会枷锁的?

每天蝼蚁般忙碌着.
为了什么.

仅仅为了家庭自我能求得一个立足之地.

却不曾想过为之付出过多少.

只是淳朴地想活着.
却被绑到一个空妄宏大的蓝图里.

成为机器的零件.
消耗着自己.

人本因有着诸多希望.
却凭凭地被生活现实所压抑着.

父母拼死地养大孩子.
教育心血.
战战兢兢.

到头来,也许便是一场空.

不单人脆弱.
连希望也如此易碎.

2010-04-05

Social的电子商务

说到social network,还有一个可以考虑的东西是电子商务.

看上去这是两个不太靠谱的东西.
唯一相同的大概是都是互联网的东西.

其实换个角度看,social network谈的是人.
电子商务虽然表面上是种营销,但骨子里还是要看人的因素.

毕竟,转化率,跳率等等,最终还是取决于人.

所以,电子商务其实应该是social network应用的一个前沿.

groupon某种程度上说就是电子商务.
或者根本就是电子商务.

所理解的电子商务就是利用互联网做营销.
groupon不但是用互联网做营销,而且是用互联网最前沿的东西做营销.

在目前,social network讲究的是去中心话.
这跟传统的营销观念好像有点背道而驰.

经典的营销理论应该是有一个好的从中心到四周的扩散.
也就是说,有一个中心媒体却影响受众.
报纸,电视,乃至于丛立各处的广告,某种程度上说都是这个媒体.

groupon看上去是在构建一个新的平台或者说媒体.
事实上,确实可以这么理解.

"中心媒体"和"去中心化"并不像看上去那么风马牛不相及.

考虑下所谓的长尾.

一个群体的是否去中心化,其实很难衡量.
毕竟,去中心化并不是完全地割裂各个个体间的联系.
而是把一个大的整体碎片化.

由里面的个体自由组合而成的小群体.

因此,在一个面向所有人的模型里,去中心化本身是没有什么意义的.
它只不过是长尾的另一个表述而已.

而电子商务不就是关注长尾么?

当然,时下的电子商务已经远远超出了最初的关注长尾的范畴了.

一些"精准化"的电子商务模式也有.
但最终还是脱离不了长尾的影子.

因为,电子商务最终目的是营销.
营销在于尽可能多的用户,尽可能多的目标用户.

基数永远是越大越好.
尤其是当转化率是万年不变的时候.
大的基数就代表着更多的用户.

回到social network.
说它适合电子商务,不单在于它能提供非常理想的能够不断增长的长尾.
还在于,它是基于人的.

考虑下Amazon的模式.
推荐系统,评论系统.
这都是基于人的行为主导的.

长尾是一个因素,能挖掘出数据,找对长尾,才是关键.
Amazon做到了.

事实上,amazon也算是利用了social network.
只不过它是一个比较封闭的,传播度比较低的网络.

更重要的一点是,它的关系性很弱.

中国有个词叫口碑.
amazon用的就是口碑效应.
只不过是线上的口碑效应.

而如果能够把social netowrk引入,线上线下就统一了.

对于电子商务来说,利用social network某种程度上是一种回归.
一种通过虚拟网络的营销,变为回到以人为本的营销.

只不过区别在于,不再是单纯的线上线下营销.而是渗透 到人的日常生活的方方面面的营销.

所谓把广告做到生活的每一个方面.
潜移默化.

将每个转化成功的用户变成一个宣传点,像病毒一样复制.
这是有点恐怖的事情.

2010-03-23

黯然的谷歌

 
  刚刚twitter上收到消息,g.cn跳转到了www.google.com.hk了.

  从官方博客逛了圈回来,大致意思是说把搜索,新闻和图片服务前移到了香港那边.
  而研发和销售团队将保留.
  销售团队会视block的情况增减.
  谷歌希望通过这种方式,能让贵国政府有所表态.
  当然,也做了最坏的打算,就是连.hk一起block.

  所以说,谷歌会退地很巧妙.
  
  尽管,没有想到会先退到香港.
  但至少,除了搜索之外,其他东西都没有退.
  这是它的巧妙之处.

  事实上,整件事情的矛盾焦点在于对搜索结果的审查上.
  所以,最后无论事情怎么解决,都还只会影响到搜索.
  其他的至少在一段时期内不会受影响.

  当然,如果真地搜索被block,其他不受影响是不可能的,但至少要过上一段时间.

  有意思的是,声明里称,前移到香港是合法.
  因为香港没有对应的审查体制,说要去过滤搜索结果.

  这样一来,像是谷歌把香港当局也来下水了.
  
  如果中央对香港施压,香港怎么办?

  素来,就有部分香港人反对近年来港府的一些作为.
  觉得他们越来越不民主自由了,越来越不透明了.
  
  如果港府受压顶不住,那么估计会引发港民的不满.
  在一个还算自由民主的地方,不满意味着什么.
  也许就是再一次的高铁吧.
  
  一面是上层的压力,一面是民众的压力.
  港府该何去何从?
  这是个问题.

  如果倒像民众另一边,那某种程度上也就意味这香港的制度已经开始崩塌.
  
  自由民主形象受到影响,很难不会对其自由贸易和经济体形象造成影响.

  一旦估值不好,香港就算玩完了.
  失去的自由贸易和经济中心的位置.
  香港就不是香港了.

  也就是说,如果港府想贵国妥协,那么代价是整个香港经济.
  
  而如果不妥协,那么至少在中央和港府关系上会出现一些微妙的裂痕.
  
  尽管,大陆方面大可以通过block谷歌的方式达到驱逐谷歌的目的.
  但是,由于港府的阻挠,很难说,中央不会对港政府的"忠诚度"做重新的评估.

  港府赞成谷歌做法的话,估计以后中央对港府政府成员的任命上,会更加严格和限制.
  以避免出现类似的情况.

  如果以后的港府官员都是中央一派,那么香港的自由民主迟早也会崩坍.
  到时,实际失去的也是整个香港.

  只是比起强硬态度来说,迟来许久而已.

  那么,从中央来考虑,对于谷歌这种退居做法,最有效的方法就是当作什么都没有发生.
  然后任你们访问.hk.
  
  因为GFW的存在,即使谷歌不过滤敏感词,但是搜索敏感词的话依然会触发GFW.
  所以,对于正常的搜索,不屏蔽.
  对于敏感词,有GFW在.

  所以,估计谷歌退居香港之后,.hk只不过又是另外一个.com而已.
  有时候能用.
  有时候不能用.

  而对于谷歌来说,其实结果没什么大的区别.
  
  .cn和.com的区别在于敏感内容的过滤.
  .cn不予显示.
  .com被重置,也就是某种程度上的不显示.

  所以谷歌退居香港,对中央的政治不会有任何实质性影响.
  对谷歌自己的业务来说,也不会有大的影响.

  一切如旧.

  当然,这只是在中央采取不闻不问态度下的,也算是比较好的情况.

  而如果采取完全屏蔽完全屏蔽谷歌的做法的话.
  对于谷歌来说,只能潸然泪下.
  算是彻底无缘大陆市场.
  这个,对谷歌来说,打击还是会比较明显的.
  
  而对于中央当局来说,这么做完全就是杀鸡儆猴.
  相当于给外商来华投资制定了一条潜规则.
  遵守则相安无事.
  不遵守的话,下场跟谷歌一样.

  这么做的后果,有待观察国际社会的反应.

  如果国际社会觉得这是可以接受的,那么让我们期待西朝鲜时代的来临.
  而如果国际社会觉得这是不可接受的话,那至少还有些希望.

  因为不接受的结果很实际,就是经济的影响.
  在华投资的缩减.
  
  外资撤离,对整体经济影响并不大.
  因为主要还是外贸.
  撤不撤其实差不多.

  唯一的影响在于,没有了外资环境,有些行业估计要没落了.
  尤其是技术相关的.
  毕竟,在很多方面,还是外资在起作用.

  杜绝了一切外资后,那就是国企的天下了吧.
  于是,就是官僚资本主义的到来了.

  如果稍带些经济制裁的话,那应该是最好的情况.

  这样,经济必然全面受到影响.
  再结合当前有危机味道的国内经济.
  中央也不得不慎重考虑一些做法是否合适.

  这样,或许才能对目前的环境有所改变吧.

  只是,前面说了,这种可能性不是很高.

  因为有最保险的做法.

  GFW.
 

Foursquare和广告2.0

  很想写写Foursquare和Groupon.
  却不知道怎么下手.

   Foursquare的出色之处在于,它把个人的位置信息也即时更新了.
  
  之前通过Twitter只能做到别人现在在想什么,或者在做什么.当然也可能知道被人在哪里.
  但是Foursquare显然更直接.

  它不管你其他任何东西,只是纯粹的I`m xxx.

  Twitter的好处在于信息多元.
  而这也正好是它的弱点.
  多元也就意味这信息的繁杂.
  虽然对于twitter来说,这并不构成什么大问题.

  但就如同buzz暴露出的问题一个.
  虽然twitter是一个开放的平台,信息流的来去随个人喜好.
  但,如果有一种方式能过过滤提取某一类的信息,那自然是更好了.

  于是,就有了Foursquare.
  它只是专注地提供一个人的位置信息.

  那么,为什么会有人对这类信息感兴趣呢.

  某种程度上说,你做到一个人在那里,就基本做到他在做什么.
  在餐厅基本就是吃饭.
  在车站也就意味着出行.
  
  Foursquare自觉不自觉地把一些人没有主动提及的信息,通过地点的活动扩散到Social Network中.
  通过走动的地点和路径,往往能够知道这个人在干什么,是一个什么身份,甚至于生活习惯兴趣爱好也能窥见到一点.

  这似乎是很违背个人隐私的东西.
  那么为什么还那么多人用呢?

  考虑下SNS的特点.

  Social Network其实还脱离不了web2.0的一些东西.
  或者说,它其实是web2.0的强化.

  尽管Social Network既Social又Network,但本质上,还是以"我"为中心.

  Facebook是把"我"是怎样一个人放到网络中,让别人去认识认可.
  它的起步也非常的web2.0.
  日志,相册,自建群组,feed.
  说到底,还是以"我"为中心.

  而Twitter更是一个自我的平台.
  Fo和Unfo是由个人控制的.
  也就是说,即便微观的各种信息的流向是不确定的.
  但是总体是,它是跟你个人的兴趣爱好一致的.
  你不关注的不喜欢的,自然很难长期存在在timeline里.
  
  而同时,tweet也是非常自主的一件事情.
  对于大多数人来说,tweet只是一个自言自语.没有考虑说听众如何.
  实际上,除非是极个别情况(做营销的),你无法界定你的follower是怎样的人.
  
  因为实际上你并不了解你的follower,你了解的是你follow的人.

  相比于Facebook,Twitter是一个纯粹的个人意愿输出平台.

  不管是Facebook还是Twitter,本质上,这些用户都有着同一个目的.
  就是把自己通过互联网扩散出去.

  于是,这也就不难理解为什么有人愿意通过Foursquare把自己的行踪作为tweet发出去.
  
  对他来说,这是一种social方式.跟写日子发推是一回事情.
  都是让别人知道,你是谁,在干什么,想什么.

  除此之外,Foursquare就没什么其他可谈的了么?

  注意到,Social Network的用户目的是把自己通过互联网social出去.
  在social的同时,必然会把自己暴露出来.
  
  也就是说,要social你就要让别人知道你是谁.

  换句话说,作为一个厂商,就有可能通过Social Network了解你,从而确定你是否为潜在用户.
  
  就如同Google的Pagerank,通过分析Social Network,就能够分析出一个人的商业价值.

  具体到Foursquare,它比Twitter更有价值的原因在于.
  一个人的生活行为基本暴露了出来.
  
  前面说过,通过一个人去的地方,大致可以看出一个人的生活方式.
  这跟twitter的价值是一样的.

  而换个角度.
  通过Foursquare,就可以看到某个地方是否是热点.
  某个地方都是些什么样的人去.
  甚至于,某些地方在某些时候是最多某种人去的.
 
  诸如这些信息,对于做产品的,做市场细分的,都是无比的财富.
  因为它比任何调查都更直接和准确.

  它是用户自愿自觉贡献出来的. 
  完全是一种潜意识的贡献.
  这跟twitter上,自主的,随意的信息来说,更有针对性和价值.

  退一步来考察Foursquare.
 
  其实它利用的就是用户的自觉的分享.
  因为用户有分享的意愿,愿意让别人做到"我"的状态. 
  于是,它去挖掘到一种特定的用户行为.
  位置信息.

  顺着这条思路,看一下Groupon.

  其实某种程度上说,它们是相似的.
  Groupon挖掘的是某些人对某些物品的需求.
  
  当然,不同的地方在于.
  Groupon是先圈定一个范围,然后在让你这个范围内"分享"自己的状态(刺激团购).
  实际上,通过Facebook,twitter等Social Network,Goupon到底还是通过用户的分享在运作的.
  只不过,它需要先推,然后吸引有兴趣的用户去传播.
  较之Foursquare更为主动.

  可以看到,这些产品的一个共同点是传播性.
  Social Network里,用户永远都在传播各种各样的东西.
  而如果你能让用户有意无意得传播你的东西.
  那么,还要广告做什么?

  或者说,其实Social Network就是新型的广告.
  从厂商创造宣传广告,
  到用户自己创造宣传广告.

  又一个2.0时代.
 

2010-03-19

更年期心理

  很久没有写东西了.
  
  某种程度上也说明很久没有东西可以写了.
  
  这是句废话.却也是实话.
  很长一段时间以来,已经没有什么东西能够激起兴趣.

  Google Reader里的很多东西其实已经不想读了.
  或者觉得读不出新的感觉来了.

  政治的依然政治.
  UE也已经渐渐淡下来,也不外如是.
  SEO不关心很久了.毕竟没有真地去经营.
  技术类的也浮躁了,很难潜下心来.而且,也似乎到了一个瓶颈,进退两难.
  新闻类变成了每天不得不去面对的东西.轻度的强迫症.
  剩下的就是一些猎奇的东西.偶尔还能赏心悦目地笑笑.
  更多的是各种聚合信息,高度重复,而有疲乏.

  考虑慢慢退订吧.

  毕竟,要有自己的生活.

  想想,自己的生活确实过得一塌糊涂.
  没有条理.

  有时候会开始会感觉力不从心.
  就像面对每天几百条的Reader,不停刷新的twitter timeline.
  还有buzz.

  过多的时间和精力消耗在了无谓的事情上.

  很多次想要减少过载的资讯,但结果总是反而增加了更多的东西.
  
  所谓的贪婪不知节制,大致便是如此.

  有些不禁思量地离开一个地方,回到一个地方.
  也有意无意地得以空闲一段时间.

  生命里,儿戏也不止一次了.
  也许改不了.
  但总得想着,能玩的时间不多了.

  有时候会感叹,年轻是一个渐行渐远的词.
  毕竟,距离要面对现实的时期越来越近.
  或者其实已经到来.

  所谓三十而立.
  四十才能不惑.

  想想以后如何.
  却是一个头疼的问题.

  尽管希望能随遇而安,能够活得道家一点.
  可惜,终究不够勇气.
  不敢坦荡荡地奔向自己的阳朔.

  回到广州,也简单梳理了下过去几个月的东西.
  
  说多不多,说少也不少.

  初到北京也游走了一些地方.
  但终究还是宅的本性使然.
  也或许是北京大概便是这样一个城市.

  如秋天般.
  似乎沧桑,似乎深厚,似乎端庄,似乎威严.
  其实看多了,也不过只是一座城.

  只不过在被时代碾过的时候,还保留有一些本性罢. 

  唯一觉得有些意外的是北京阳明的一面.
  也许是所处行业使然,也许是环境使然.
  北京,确实是一个容易有所谓梦想追求的地方.
 
  因为很多人都是怀揣着梦想走到北京.
  不管最初的你是如何考虑,最终多少会被这种感情所影响.

  当然,梦想多数时候也只是一个空想.
  所以,北京也是一个容易浮躁的城市.

  尽管看上去,它很庄严肃穆.
  但里面的人,有时候过多地一厢情愿了.

  也或许这便是北方和南方的不同.
  空想与市侩的区别.
  将这两个词往中性上靠,大概就是区别了.

  总得来说,北京也算是一个比较有韵味的城市.
  除去那些体制和政治的味道.

  不管怎样,终究还是离开了北京.
  所谓的留恋就让它慢慢散去.

  有些东西总是要在离开后才会慢慢回味起来的.
  有些东西也总是要在接触之后才会慢慢忘记的.

  离开北京,回到广州.
  也算是回到某种生活的轨道.

  不管这是曾想的抑或不曾想的.
  它都已然或将然要是事实了.

  也许,冒冒失失地过了这么多年,也确然是要把自己往规则里面靠了.
  就如同某人说的,毕竟年纪差不多了,有些事情还是要考虑了的.
  
  也许不应该用还债这个词.
  但某种程度上,却唯有它能确切形容.
  正如某调侃段子所说,学业事业家也,从出生到死都套在头上.

  想要超然逃脱.
  所付出的,则要是多得多.

  有时候不想去承认所谓的羁绊.
  只是,有时候越来越多地不得不去想.

  或许是环境问题吧.
  宅的多了,就不单是身体局限的问题了.

  也或着只是周期性迷茫.
  毕竟,热血完了,总会暂时缺氧的.  

  当然.
  也许这其实只是更年期到了.

2010-02-23

Google buzz的意义

  感觉google推buzz有些太激进了.

  诚然.social network是比互联网更高级的网络.
  对于google来说,抢先寻找人与人之间的page rank比维护现有的网页与网页的page rank更有意义.
  
  如果google能发掘并且量化衡量social network的page rank,至少对于google的广告和搜索来说,帮助更大.
  
  就广告来说,这其实是twitter也正在做的事情.
  通过让广告在social network里流动,比让其在单纯的互联网里流动,所能传播的范围更广.
  原因在于长尾性和social network本身的复杂性.

  social network是一个糅合了互联网的一个复杂系统.
  一个人,他集齐了许多互联网关系网络.
  他的一举一动都可以通过各种各样的关系网络扩散出去.

  也就是说,在单纯的互联网模式里,无论如何地长尾,一个广告都只能传播一次.
  而在social network里,广告的传播可反反复复,一直衰减,直到几乎整个网络的人都接受过了之后,才开始失效.
  也就是说,某种意义上,基于social network的广告营销,理论上,一个广告,可以让互联网上的所有人都接收到.
  甚至,如果存在一个连接跨互联网的social network存在的话,它可以把影响扩散到世界上的每一个角落.

  而对于搜索,social network的pagerank有助于google把搜索变得更准确和个性化.

  一旦google成功分析social network,并建立与之相对应的pagerank,那么当你搜索的时候,其实已经不单是你一个人在搜索了.
  它可能是google分析过你的社会关系,分析过你的背景,分析过你的职业兴趣等等之后,猜测出你对信息的敏感点,从而有侧重地从这些敏感点建立搜索页.

  比如说,google通过social network发现你是一个java程序员,那么也许在你搜索诸如"电脑崩溃"等关键字的时候它就会更偏向于推荐那些偏技术方面的结果.
  而如果是非it人员,则可能会偏向于一些操作性更强一些的结果.

  甚至,即时你没有明确地让googel知道你是IT人员,但是你的social network里IT人员的比率很高,那么google有可能会对技术方面的结果赋予更高的权重.
  有或者,在搜索的时候,会综合你social network里各种关系对同类关键字的搜索结果的选取,做一个更优化的搜索页面,这也不是不可能的.
  
  也就是说,当googel了解你的social network之后,了解你的信息是如何在social network流动的时候,它就有更多的一句去分析很预测你的下一个信息流向.
  无论是对于广告还是搜索,更准确的预测就意味着这更高的投放精度.

  回头看看buzz.
  
  twitter的网络是google一直以来想要得到的一个social network的分析样本.
  对于google来说,所有美好的未来都基于那个全新page rank.
  但这套新系统需要有一个对信息流向习惯的研究场所.

  而twitter的去中心化和关系的从零开始的自发发展,对于google来说都是绝佳的标本.

  可惜的是google一直得不到.

  虽然推出了实时搜索,能够窥探到这种social information的流动方式.
  但google需要的不单是过程和结果,它需要的更多的是信息传播的方式,以及人与人之间的关系.
  单纯的实时搜索很难提供足够方便和详尽的数据,供google建立social network的page rank.

  建立一个类twitter的buzz,就是googel自己建立了一个social network的实验样本.
  这个网络的运行状态,一举一动,google随时都可以拿过来分析研究.
  而不像实时搜索,只能被动地抓取数据.

  而且,buzz的一个好处在于,google可以得到它想要的任何形式的数据.
  虽然,即使没有buzz,google依然可以借助抓取twitter来分析.
  
  所以,从这个侧面说,twitter还不能成为google推buzz的原因.

  google之所以要独立一个buzz,关键在于,它要分析的不是单一形式的social network,不是twitter风格的信息流,而是更广意义上的,潜藏在互联网里的人与人之间的,人与信息之间的交流.
  
  buzz连接了reader,连接了blogger,连接了twitter.

  从信息的产生,接收,传播,扩散,各个阶段各种风格,buzz都能够介入.
 
  如果说,实时搜索是google对social network的第一阶段的研究.
  那么buzz应该是第二阶段.
 
  第一阶段是特定风格的social network.
  第二阶段是更普遍意义的social network.

  所以,buzz不必成为一款非常成功的产品.
  它只需要足够流行就,信息足够繁杂,流动足够真实就可以了.
  对google,它需要的只是一个新的研究样本.  

  只是有些担心google.
  是否野心太大了点,动作太急了点.
  毕竟,在android和chrome的互联网战略还未成型的时候,又在搞这么超前的东西.

  也或许,这才是google成功的原因吧.
  永远走在世界的前面.

  也许有一天醒来,会发现,其实google就是martix.
  生活的世界其实只是zion.  

2010-02-08

专制与社会主义

  社会主义市场经济.这是一个很微妙的词.

  社会主义经济制度基于这么一种假设:
  生产力高度发达,从而使得分配制度演化为按劳分配.
  而更高一阶的共产主义,则是按需分配的.

  也就是说,在这么一种社会经济形态中,不会再存在竞争.
  因为生产力高度发达,物质资料充足,从而使得竞争变得毫无意义.

  竞争的存在,是依靠稀缺资源,或者资源间的不平衡.
  一旦资源足够充裕,或者资源的分配已经不受资源本身的影响了.
  那么竞争将不复存在.

  也就是说,进入社会主义或者共产主义的一个明显的结果就是竞争这条机制的不复存在.
  物质资料的分配将通过另外一种模式展开.
  即按劳,或者按需分配.

  所以,从某些理论上看,社会主义和共产主义确实是一个理想的或者说终极的社会形态.

  但问题的关键在于,它存在么?
  或者说能自然发展起来吗?

  世界经济的发展始于竞争.

  无论是在资源极度稀缺的原始社会,还是物质资料极大丰富的资本主义时代,竞争都无处不在.

  为生存而竞争优势资源.
  为资本的扩张而互相竞争.

  用生物方面的一个词来形容就是,弱肉强食.
  
  因为在这几个社会阶段,生产力还不是"高度发展"的.
  也就是说,这时候的生产力还不足以支付更高级的分配方式.
  于是,只能是通过系统内部的自我竞争来抢占资源.

  那么这种竞争将一直持续下去么?

  自然竞争的一个结果是各个个体在相互竞争中取得一种微妙的平衡.
  如同自然界存在的生物链一般,没有特别优势的资本能够打破这种竞态平衡.

  但始终没有一个足够强势的资本,能够统御整个系统的时候,自然竞争的结果应当是发展成为直接或间接的合作.
  
  由于每个资本都有自己的稀缺资源需求,同时也有着自己的优势资源(不然这个资本就会被其他资本兼并).
  因此,在长期的竞争期间里,就有可能跟其他非直接竞争的资源结成联盟,互为合作.

  如果在这个结盟时期依然没有一个突出的资本出现,统一各国的话,那么最后的结果是社会处于一个动态平衡状态.
  由于没有哪一个资本能够拥有所有资源,因此,也就无法产生所谓的按劳分配制度.
  因为每个资本自身都存在着不受自己控制的资源分配方式.
  
  也就是说,当资本的发展最终是走向一个动态平衡状态的时候,讨论社会主义是没有意义的.
  就如同讨论永动机一样.
  缺乏实际的理论基础.

  那么,如果在资本的互相竞争过程中,有一个优势资本能够打败其他资本,从而统一生产力呢?

  这在理论上也是有可能的.
  
  资本主义发展出的垄断,在某种上就有可能变为这种优势资本.
  因为它已经掌握了社会经济系统中,某个生产切面的所有资料.

  当这些垄断资本不断的通过互相兼并和吞食达成资本的大融合的时候,一种优越的强势资本便诞生了.
  这个新诞生的优势资本将能够"自给自足"而不依赖于其他资本的存在.

  也就是说,当这种资本存在并发展下来之后,将慢慢地实现生产力发展的自我满足.
  当它极端发展,达到一个物质丰富的极端水平的时候,便有可能在这个资本环境内实现生产资料的按劳分配.
  
  因为对于一个高度发达的自给自足经济系统来说,竞争是没有意义的.
  尤其是在产出远远大于消耗的时候.

  当生产力达到能够支撑按劳分配存在的时候,社会主义就有了立足之地.
  也才能够发展起来.

  因此.从某种程度上说,社会主义如果能够自然发展起来的话,那么应该是通过垄断这一经济形式逐步演化而来的.
  也就是说,社会主义应当是在资本高度垄断集中的时候,才有可能萌芽和发展起来的.

  从现有的经济发展阶段看,能够使资本高度垄断集中.
  一是计划经济体制.
  二是垄断资本主义.

  两者的共同点在于,资本都有一个高度统一的意志形态.
  不然,将无法操纵如此庞大的资本力量.

  于是,当社会主义经济制度建立之后,这种统一意识,至少在一段时间之内,不会别抹去.
  也就是说,对于社会主义制度,必将存在一定时期的专制期.
  这是由于资本的内在的发展统一性的需求.

2010-02-06

Nexus one OTA之路.

  某天为了刷Nexus one 的OTA,折腾了许久.
  
  本来如果没去刷root的话,这会是件很简单容易的事情.
  但无奈有签名机制在.
  root过的boot.img签名对不上,于是总是卡在签名验证失败那个环节.
 
  尝试把脚本里的签名验证去掉,却发现脚本本身的签名不正确了.
  无奈.

  google了一下,似乎有人放出来用来签名的东西,于是download之.
  打个包,签名一下,reboot,recovery.
  依然失败.

  翻了翻开发文档,惆怅地发现这套机制是基于RSA的.
  查了查网上零碎的资料之后,也终于明白为什么这个OTA包会带sign这个字眼来.

  因为RSA的私钥似乎是硬编码进去的.
  也就是说,你想自己打包,然后妄图通过验证.
  那应该是不可能的.

  为什么说应该,因为其实我也没认真看它如何验证签名的.
  
  因为即使不能绕过签名,也能够通过手工的方法把OTAupdate过去.
  毕竟已经对bootloader解锁了,可以用fastboot写rom.

  问题在于,出签名错误的东西叫boot.img.
  
  可以把所有东西都flash进去,但是结果可能是boot不起来了.
  因为boot.img没刷.
  谁知道不同的boot.img会造成什么影响.
  
  如果到时连fastboot都不work了,那Nexus one就成纸片了.
  
  称呼砖头或许不确切.

  于是,先考虑下有没把握搞定boot.img.
  
  OTA下面有个boot.img.p.
  
  从名字上看应该就是boot.img了.
  即使不是,也应该相差不远.

  但是它真的是boot.img么?
  
  不知道.

  于是看源代码去.

  刷机的过程是从recovery进去了,于是就找了recovery来看.
  也于是,终于有打开了千年未启动过的visual studio.

  简单Ctrl+c,Ctrl+v完事.
  毕竟只是读,不用考虑编译什么的问题.
  error和warning都不用管,只管找到main就好了.

  浏览一遍,明显看到install_package和maybe_install_firmware_update这两个函数.
  
  在install_package里,主要做了RSA的签名验证,以及读取update.zip.

  签名的东西就不去管它了.
  一个安全机制方面的东西,无伤大雅.

  看看handle_update_package.
  里面短短几行.
  
  说几行其实还说说多了.
  出去容错处理之类的,有内容的也就try_update_binary这个函数的调用.

  在这个函数里,首先会把zip文件里的 META-INF/com/google/android/update-binary复制到/tmp/update-binary下面.
  这些东西都是硬编码进去的.
  也就是说,其实如果你要自己打包更新的话,也必须有这个update-binary,并且放在同样的目录结构里.

  然后会pipe和fork一下.
  
  重点关注下子线程里的execv.
  因为此时原线程所做的只不过是接子线程的一些手尾罢了.

  execv执行的就是update-binary.
  到这里,线索似乎又断了.

  因为你不做到updater-binary做了什么.
  尤其是,你不做到update-binary到底是android的标准呢,还是依赖于厂商各自的实现.

  幸好,下面有个目录叫updater.
  又是直接main.

  终于看到updater-script的影子了.
  
  一番读文件和parse,regist之后,简化为一个邪恶的Evaluate.
  
  有时候设计模式很好,因为减少了很多重复代码.
  有时候设计模式也不是很好,因为看代码变成了找代码.

  于是只能向当年本科论文读mysql时一样,大部分靠直觉和函数名确定了.
   
  有时候,良好的命名规范还是有点用处的.

  看脚本里,除了check签名,剩下的基本就是apply_check了.
  于是,直接锁定ApplyPatchFn.

  十几二十行下来,有意义的也就大概是applypatch.
  一个extern生命又让人无奈了.

  所幸这还是可以找到的.

  一眼扫过,又见到RSA字眼,惆怅.
  跳过继续.

  结果一番对文件的处理封装之后,终于到了确定patch类型的时候.
  
  由于开始关注的是boot.img,所以很自然地直接跳到处理MTD那段.
  
  此处会检验一下patch文件,也就是哪个image.img.p文件的文件头.
  打开看了下,那个otp的文件头是IMGDIFF.
  所以patch的方式是ApplyImagePatch.

  jump into看一下.
  依然会做一个类似文件类型检测的东西,读一下头部,确定后面内容的意义.
  又打开文件看了下,十六进制里,明显是CHUNK_NORMAL.
  
  这就省事了,因为处理它的只有短短几行.
  实际上是ApplyBSDiffPatch和ApplyBSDiffPatchMem.
  到这里,原理上说,已经能够把boot.img.p变成boot.img了.
  
  但转念一想,发觉,只是不可能的.

  因为自从刷了root之后,boot.img就已经不一样了.
  也因此才导致SHA RSA等的签名错误,不能OTP升级.
  所以,即便在最后找到了patch的实现,但是到底还是依赖于原来的boot.img.

  无奈,只好放弃.
  
  本还在考虑时候要看下如何编译个boot.img的.
  于是找nexus one的源码.
 
  而恰好在XDA上有人放出了自称是N1原版镜像.
   
  当然,这个所谓"原版"还得打个问号.
  事实上,HTC似乎并没有放出来.

  鉴于XDA的权威性,也就当是原版了.
  下回来fastboot flash boot boot.img.
  刷回原来的boot.img.
 
  再按照在场的otp升级流程.
  看到verfiy过了之后的那一段,终于释然了.
  
  看来确实是原版的img.
  刷完之后看下信息,依然是android 2.1 update1.

  试了下,浏览器,map,gallary等都支持多点触摸了.
  还有就是设置里多了个关于底座的设置.
  不过这都是没多大意义的.
  毕竟没有底座.

  至于google声称的修复3G通话的问题,因为还是2G网络,也无从验证.

  不过至少,通过这个OTA,多少了解了下Android的一点东西. 

2010-01-17

阿凡达

  阿凡达没有想象中精彩.
  也许是因为认真看,也许是因为过多地接触了关于它的信息.
  总之,它没有给我惊艳的感觉.

  潘多拉的悬浮山让我想到了蜀山.
  想到了国产RPG里那个住满剑仙的蜀山.

  这浮空的物体并没有带来多少震撼.
  甚至于感觉上,已经有了审美疲劳.

  随着剧情的推移,更多的时候,是在寻找往昔里RPG的影子.

  男主角的成长就像传统的RPG.
  一个选择,一条道路.
  最初不被任何人看好,最后却成为所有人里的赢家.

  当情节到驯服坐骑的时候,逼着眼睛也想象出来主角改如何危险而又前无古人地完成驯服过程.
  当谈到魅影骑士传说的时候,我仿佛已经看到主角骑着它纵横潘多拉.

  与最俗套的RPG剧情里,绝世的神兵,传说的武器,最后都落在的主角身上.
  而阿凡达的这一设定,也落在的RPG"经典"的设定里.
  毫无悬念.

  当潘多拉受到攻击,众人围绕在生命之树旁边的时候.
  我想起来黑客帝国里墨菲斯在zion里那番煽情的演讲.
  
  可惜,杰克没有那种煽动力.
  尽管场景相似,剧情也相似,动作也相似.
  但有些东西,不是相似就够了的.
  生命之树下的演讲,少了zion里的那种信仰和激情.

  而巨柱的倒掉,也并没有引发更多的深入性主题.
  有的只是空虚的哭泣和泛泛的火海.
  明显的,导演在注重技术效果的同时,忘记了如何通过镜头的细节去表达烘托场面.
  只懂得用特效去渲染场景,缺乏了电影应该具有的灵气.
  空显高大,却也无神.

  在人物塑造上,杰克是个实实在在的RPG男主角.
  一个在反面环境中学习成长,最后成为领袖的俗套男主角.
  即使在反叛期间所表现出的迷茫和彷徨,也只能导演只是点到而止,并没有考虑深入刻画.
  
  在这一点上,比较幽城幻剑录里的夏侯仪实在是差太远了.  

  相比之下,女主角尼特利的性格更为突出一点.
  至少,她那句you should not be here让我多少记住了她.
  
  但是,即便如此,也无奈剧本的匆匆.
  尤其是在抱着她父亲尸体的一幕.
  一切太匆匆.

  本来能够有的许多冲突,被特效所淹没.
  片子充斥着无谓的大场景,却少了些应有的细腻.

  如果说整部片有什么值得称道的,那么应该是那位执着的上校.
  从一开始露面,就是一个纯粹的军人.
  直到结束,依然是保持着军人的作风.
  战斗,或者说战争就是他唯一存在的目的.

  如果把入侵潘多拉的行为改变为反抗外星侵略者的话,那么这位上校的形象应该是无比光辉伟大的.
  因为作战对于他来说,已经成为日常生活的一部分.
  他是纯粹的战士.

  阿凡达的另一处硬伤是,没有很好地构建好潘多拉这个世界.
  事实上,它甚至对潘多拉的版图,也并没有很好地规划好.

  从开始只是引入生命树部落,后来却出现其他更多的部落.
  而且在最后会战的时候,完全没有交代那些后来的部队是从何时开始过来的.
  为什么到最后才被人们发觉支援部队已经汹涌过来了.
  这是编剧上的一个重大缺陷.

  加上对于潘多拉世界神秘宗教伊娃的遮遮掩掩,使得潘多拉作为一个虚构世界,缺乏足够多的严密性.
  
  在影片最后,所谓生灵崛起的那一幕,整个潘多拉的最后反抗,隐喻的是自然对人类欲望的反抗.
  本来,前期对潘多拉植物神经的论调已经有可能把它提升到matrix的境界.
  但是,即使在动物大暴走的完成之后,在潘多拉人民反抗成功,男主角和女主角从此过上幸福生活之后,也没有把潘多拉的这种存在描述清楚.

  伊娃是什么?
  所谓的潘多拉神经系统就这样一笔带过?
  最后抗争成功归结于不可解释的自然奇迹?

  这些,对于一部标榜科幻的电影来说,是十足的硬伤.
  不解释清楚,草草了结的话,就别说是科幻片.
  而是幻想片.

  一切不需要解释.
  只要设备够强悍,特技够炫丽,技术够超前就行了.

  人物?剧情?严密性?人与自然的主题?
  算了吧.  

默哀

  说实话,很希望Google彻底退出中国.
  将所有业务搬离这篇神奇的国度.
  让全世界看看,在这片热土上,每天都在上演着怎样的荒诞剧.

  但心里也明白,Google不会真地离开.
  g.cn对Google的意义并不大.
  
  Adsense和Adword才是Google当前的大业务.
  未来战略里的Android,也才刚刚走上舞台.
  而Chrome也还在孕育当中.

  所以,Google把g.cn撤除,对它并没有多大的影响.
 
  有影响的其实还是贵国.
  
  当g.cn消失,而世界看到Google并没有因此受到多少损失的时候,人们会开始考量这个所谓的巨大市场意义几何.
  一旦这种重新评估觉得这块蛋糕其实只是个纸老虎的话,那么对贵国经济将是一大打击.
  贵国吹出来的国际地位也将再一次跌到谷底.
  哥本哈根上的疯狂嚣张,也将成为历史.

  而这,除了对贵国有司是一种麻烦之外,对于其他任何人来说都是利好的消息.
  虽然,暂时的经济低迷在所难免.
  但对于新制度的建立来说,这种镇痛是难免的.

  只是就目前的发展情况来说,虽然Google事件在国际上产生了一些影响.
  但似乎还没有达到想象中的状态.

  一来或许是因为海地地震,分散了关注度.
  二来也确实是因为Google业务的特殊性,让它不能成为西方资本的普遍案例.毕竟,它经营的不是实体经济.

  所以,资本世界似乎并没有很认真地打算重新评估这个市场.

  那么,贵国经济环境到底会如何?

  封闭的互联网环境,对互联网以外的企业并不会造成直接的影响.
  况且,贵国的出口业务跟互联网没有丝毫关系.

  因此,只要对对外资的贸易政策没有改变,至少在出口方面和劳动力方面是不会产生什么大的立刻影响的.
  
  会受到影响的,之后互联网行业.
  而即便Google不退出,国外的互联网行业也很难进入中国.
  或者说,国外的互联网行业很少会考虑进入中国.

  因为事实已经证明,国外互联网进入的结果一般都是很悲惨.
  ebey,yahoo,myspace和现在的google都是很好的例子.
  
  所单纯g.cn的退出其实并不能立刻引发很大的经济连锁反应.
  即使有,也只是对国内的互联网企业而言:
 
  中小企业生存艰难,大企业将在一段时间内占领国内市场,形成类似电信行业一样的格局.
  然后,国家队开始介入,尝试参与竞争.
  从一些国内互联网企业没有涉及的业务开始,占有统领这些市场.
  然后开始对个别大企业的业务干涉,以各个击破的方式,逼退国内的互联网公司,从而形成一个普遍的经济格局--国有资本控制重要行业(也许互联网之前不算是重要行业,但是进入web2.0时代之后,尤其是在CCAV等传统媒体公信力降到极低点的时候,新媒体的地位的重要性就凸显出来了).

  所以如果Google在退出计划的第一步,也就是撤离g.cn没有得到足够的重视的话,那么互联网企业将成为这场博弈中唯一的输家.
  而互联网的倒下,接下来就是很长一段事件网民很群众的倒下.

  但是,如果Google的第一步引起国际重视的话,情况可能会稍有些不同.
  
  Google退出除了声明里的那些原因之外,应该还是一场政治博弈的一部分.

  人权和言论自由向来是美国攻击贵国的武器之一.
  这一次也不例外.

  在Google宣布这一结果之后,美国政府就有相当迅速的反应.
  这应该不是偶然.

  那么,如果Google退出是政治博弈的一步棋的话,那么它就有可能把所有业务撤离中国.
  因为一旦美国成功吸引其他国家,并说服他们共同发起经济制裁的话,不单Google,其他公司也会把业务撤离贵国.犹如20年前一样.

  而外资的撤离,对贵国经济将产生如何的影响呢?
  首当其冲的自然是对外贸易部分.
  而当前这一部分还很大程度是劳动密集型的产品出口行业.

  出口的死去,就意味着大批的劳动人口失业.
  如何安置这些劳动力是一个问题.
  更关键的是,有没有能力安置.

  一个可能的情况就是,大批的基建项目计划出台.
  从而试图拉动内需,带动各个行业的前进,以暂时吸收和消化剩余劳动力.
  
  如果短期内,经济制裁结束,那么对外贸易回复正常,这些劳动人口再次流向原有行业.
  而对于Google等这一类经济制裁中的棋子,也将陆续回到原来状态.
  一切照旧.

  如果这个拉锯时期比较长的话,对于贵国,基建的内需拉动效果并不能维持很久.
  因此,如果贵国经济首先抗不住的话,剩余劳动力无法得到充分安置的话,社会问题将会突出.
  拉锯的时间越长,问题就会越严峻,也就越有可能会发生体制层面的变革.
  
  当然,如果拉锯时间过长,对于Google这样的棋子来说,损失也会很惨重,甚至影响其生存.
  但是,如果Google的盟友够多,战线够长的话,情况也许会不一样.
  考虑下,如果Google成功地将对Web的革命变为下一个工业革命.

  企业的营销在开发的互联网环境里,演化为依靠即时信息平台进行传播和推广(twitter+adsens),产品的销售正式进入电子商务时代(google checkout/nexus one).
  那么,此时的商品经济就是一个建筑在互联网环境里的开放经济模式.

  而贵国,构建的是一套缓慢的封闭式互联网.
  于是,对于零售业来说,它的销售业务就无法有效的展开.而如果采取传统方式进行营销的话,又有可能造成相对过大成本支出,使得其考虑放弃市场的开拓.
  而对于制造业来说,可能影响不大.

  于是,如果贵国在经济制裁的拉锯战里,世界经济模式发生根本改变,那么,对贵国的影响是,成为一个真正意义的世界工厂.
  
  因此,即便美国能够拉拢足够的人进行经济制裁,对于贵国来说,最坏的结果也只是成为纯粹的世界工厂.

  更何况,美国并不能保证它这条统一战线能够建立成功.
  虽然,贵国在哥本哈根上的强势,让许多人产生了警惕.

  诚然,贵国的经济虽然还称不上举足轻重,但是却也小看不了.
  
  贵国已经是美国的头号债主,拥有的美元是越来越多.
  尽管,美元汇率的波动使得贵国手中的财富不断缩水.

  但实际上,对于贵国来说,没有所谓的缩水不缩水.

  考虑到贵国货币是纯粹的实物货币.
  也就是说,货币背后的并不是实实在在的硬通货,而是一系列的产业估值.
  所谓估值,就是你估计你的价值大概有多少.

  某种程度上说,这是一个信口开河的东西.
  所以,很长时间以来,对于这类货币,国际上一直没给予太大地位.
  只不过由于进十几年,市场的开放,让这个市场事实上成为可进入的.
  于是,便有可能通过实际的交易行为来判定和接受这一货币.
  因为有了市场,毕竟就有可能将这种价值通过劳动力转换成实在的硬通货.

  因此,从宏观来说,持有美国国债就等于持有美元,持有美元事实上就等于持有黄金这种硬通货.
  而在国际承认现行汇率的情况下,越多的硬通货,就意味着在汇率问题上有更多的话语权.
  因为持有的是实实在在的货币.

  而汇率话语权,一定程度就意味这经济话语权.
  尤其是在对外贸易上.
  对汇率有更多的话语权,就因为这有更多的贸易优势.
  贸易的优势,带来的就是具体的经济优势.

  所以,随着贵国对美国国债的增持,其经济地位进一步巩固和提升.
  于是,在哥本哈根上,贵国凭借已有的经济实力和管有的拉拢手段,某新的国际地位.

  在一直以来事实上拉拢了一堆第三世界国家之后,财大气粗的贵国开始考虑谋取新的政治地位.
  而美国显然也意识到了这点,但可惜已经有点晚.

  加上各国对美国超级大国的地位总有意见.
 于是在哥本哈根上,美国输了一局.

  面对失势,美国意识到贵国的野心.
  于是有了这次政治博弈.

  之所以选择Google事件作为切入点,也确实是因为Google声明中所提到的事情.
  再就是隐私权利向来是公认的普世价值,容易得到声援和赞成.
  而且美国一度暗示,这并不是美国及其企业会受到的待遇,其他企业也存在商业秘密被刺探的危险.
  于是,在美国的算盘里,只要把这种件事情上升到影响商务发展的层次,那么,就有可能促使各国共同向贵国施压,以确保其商业利益,同时抑制贵国愈发强硬的态度.

  但对于美国来说,现在单凭言论和人权论调还尚不足以说服各国以实际行动加入.
  因此,目前各国还停留在纯发声明的观望态度.
  
  美国只有拿出进一步的证据说服贵国的言论管制不单是管制,还有可能涉及到不公平竞争的话或信息不安全的话,才有可能说服各个发动联合制裁.

  对于对于贵国不明真相的群众来说,希望Google退出能带来变革的机会怕是微乎其微了.
  除非发生经济制裁,并且美国能够长期拉锯,并最终坚持到胜利.
  而这个结局,目前来看怕是很难达到了.

  于是,这场博弈结束之后
  结果是,g.cn离开.
  而互联网行业,也将变成一个由少数几个巨头们操作和把持的封闭行业.
  
  而最主要的是,信息的管制将愈发的无形,和难以逃离.

Google光环

  在某群上发了条有关google的消息.
  于是被说是G粉.

  其实是不是,自己也并不清楚. 
  只知道google帐号下的服务越来越多.

  如果单纯看数量的话,也许确实算得上.

  就搜索引擎来说. 
  从前用百度,现在用google.

  这里并不是说百度搜索不好,也不是说因为google能搜索到更多的东西.

  事实上,如果不是因为用了很多的google服务,以及一些偶然的因素,也许现在还在用百度.
  
  就搜素来说,两者都只是获取信息的工具而已.
  如何使用,使用得好不好是个人问题.

  第一个正式的google服务是gmail.
  当时是因为它开放注册了,终于不用邀请了.
  
  但是由于当时已经有了新浪邮箱,所以使用地也并不多.
  最主要的是,当时并没有使用email的习惯.
  注册邮箱,只是因为注册其他东西的时候需要用到.

  也正是因为这个原因,在很多年后的今天,新浪邮箱被各种无谓的信息所充斥.
  而gmail也所幸由于这个原因,渐渐地成为了正式的私人邮件.
  当然,有了新浪的前车之鉴,也并不敢过多使用gmail,尤其是在国内.

  这并不是说国内邮箱服务如何,而是因为国内邮件很多因为没有相关法律约束,都不提供退订服务.
  所以,一般来说,都避免使用gmail.
  在多数情况下,还是用新浪邮箱.
  如果需要正式一点的,而又对其邮件政策有怀疑的,就用QQ邮箱.
  能够完全信任的,才启用gmail.

  所以,事实上,除了没有搜索情结之外,也并没有gmail情结.
  即便是在众人说gmail安全性如何如何,以及对这次google事件里gmail的表现的推崇.

  事实上,电子邮件的安全性很大程度上并不在于邮件系统本身,而在于法律环境如何.
  国内邮件提供商因为众所周知的原因,不得不留有后手.
  而作为未来者的google,也并不是说不会受到约束.

  只要明确立法,并通过正常的法律流程,gmail内容依然是可审查的.
  所以,只要贵国有司脸皮足够厚,当着众多不明真相的群众把审查制度拉到全国人民的面前,google就会乖乖地协助审查.

  但是,google对于这种非法手段的威胁和偷盗,自然是有足够理由拒绝的.

  所以,并不需要过于神话google这次的做法.
  它也只是做了应该做的事情.

  回到话题.
  投入google怀抱是从blospot开始的.

  这个必须感谢腾讯.
  如果不是它封了辛苦写了几年的Qzone的话,或许还没有机会接触google.

  在体验和尝试过许多BSP之后,最后选择了blogspot.

  因为相比许多博客提供商来说它的优点在于:
  1.开放性很高.基本上可以完全定义blog.
  2.服务稳定.
  3.没有难以理解的内容审查机制.

  对于第一点,虽然现在国内已经有了许多可高度定制的BSP,但是,只能说这是缘分.
  从Qzone流亡之初,当时这样的BSP还不多,即便有,用起来也并不方便.
  或者是开放程度依然不够高.
  而后来,有了一些比较优秀的BSP的时候,人已经在blogspot了.
  
  定居了,就不想搬家了.
  况且,搬回来的话,还不指望那天会忽然又被封了.
  
  辛辛苦苦断断续续写了几万字,说没就没了.
  这种心情并不好受.

  而且,一个明显的好处在于,写的时候不怕碰上什么敏感词.
  尤其是在一个任何词汇都可能成为敏感词的时代.

  虽然写博客并不是一定要谈敏感的东西.
  但问题在于,什么是敏感,这个你是不可能事先完全了解的.

  好的服务在于,开始是你选择了它.
  接下来是你追随着它.
  
  所以,即使在它再次被墙之后,依然会翻墙过来.
  套用一句话,叫做非战之罪.
  它,也只不过是个受害者而已.

  在定居blospot之后,开始接触和了解google. 
  
  为了给博客弄个门面,四处找模板.
  从单纯的套用,到一些小改动.
  于是发觉,google对blogspot的保留并不多.

  在从一个如何改动都可能要付费的BSP出来的时候,这自然会有很大的钦佩.
  尤其是在意识到,它提供的比自己想象的东西多的时候.

  第三款是reader.
  这里,需要向抓虾说声谢谢和抱歉.
  如果不是说要关停服务,也不会迁移到google.
  虽然,一直到现在,仍然还能登陆抓虾.

  但只能说声抱歉和以示同情.
  尤其是在抓取feed的时候,还要过滤信息.
  
  某种程度上说,中国互联网企业都是不容易的.
  除了实现基本的领域功能之外,还需要额外地添加过滤服务.
  
  后来就是news,webmasters,analytics,feedburner等等.
  尤其是那些跟数据分析有关的,深深地被google的强大所折服.

  无偿提供数据给人分析已经不错了.
  更不错的是还提供了如此便捷和强大的分析工具.
  这已经不是简单的气度所能来形容的了.

  再后来,就是了解接触google对开发人员开放的一系列工具,产品和服务.

  从始至终,google都以一个开放者的姿态出现.
  于是,终于被google所折服.
  在选择许多东西都开始首选google.
 
  甚至于一些并不常用甚至稍显老旧的服务,诸如picasa,calendar,alerts等等都开启了.
  完全是在google的光环下,自觉不自觉的动作.
  
  在google推出每一项新服务,或者每一个新动作的时候,都在关注着.
  理由是几乎没有理性的:
  google出品.

  如果说google是一门宗教的话,那么或许我已经成为了它的信徒.

  对于一个google教徒来说,google已经不是一个公司.
  而是一种信仰.
  一种信念的存在.

2010-01-09

从拼音输入法谈起(下)

  之所以会抛弃QQ拼音,而转用谷歌拼音.
  其实也并没有很好的理由.

  偶然的推介,加上QQ拼音本身并不靠谱的做法,所以选择了尝试谷歌拼音.

  中国有句话叫士别三日,当刮目相看.
  用来形容谷歌拼音并不为过.

  对于输入法本身,各家做的其实都差不多了.
  于是,腾讯开始想着如何整合QQ拼音.
  搜狗想着如何把市场扩大.
  
  但最终还是脱离不了输入法的范畴.

  但谷歌拼音做到了.
  一个lua扩展,就已经足够让人遐想无限了.

  从技术上说,能支持lua,也就能支持其他脚本语言.
  而如果有心思往下挖掘的话,把输入法做成命令行又有何不可呢?
  
  至少简单的,可以做一些简单的命令,调调窗口,移移文件也是可以的.
  
  当然,把输入框作为复杂交互接口,其实并不合适.
  毕竟,窗口大小有限.

  当然,显示区域大小不是问题.
  只不过,在把交互变复杂之后,就不是谷歌输入法,而是带输入功能的工具了.
  所以,这是其实还是百度的框计算的概念.

  输入法入口强于搜索入口之处在于,就国人来说,输入法输入的东西更符合人的日常行为.
  也就是说,输入法更能够接触到人的日航生活.
  你所打的一字一词,从理论上,是可以分析出你的个人风格,乃至兴趣爱好.

  在不知不觉中,搜索引擎就能够学习到你的个人特征.
  这样,不论是在搜索引擎对你做的推荐,以或者是你在使用搜索引擎的时候,都更可能高且快速地命中需求.
  因为搜索引擎已经通过你的日常生活了解到了关于你的所有特征.

  犹如一个无处不在的管家.
  在尽心揣摩之后,为你做出最合适的动作.

  数据分析,把人与网络的距离拉得更近.

  从前,有个说法:
  你永远不知道,屏幕背后跟你聊天的是不是一只狗.

  现在,这个说法在渐渐地被打破.
  至少,许多应用已经实际上或试图了解你的一个方面.

  国外的亚马逊,国内的豆瓣.
  基于数据挖掘的推介服务,已经成为了一个产品.

  当然,这些服务目前还不是很通用.
  因为它实际上还是基于你的一个比较明显的意图,购买,或者打标签.

  事实上,豆瓣也许能够做地比亚马逊好.
  因为它收集数据的方式,并不需要用户很有目的性.
  
  虽然,一定程度上,这样会对分析结果产生一些"噪声".
  但是,所谓的噪声也并不一定是没用的.
  只不过是因为没有找到合理的解释.
  所谓存在即是合理,有这样的什么样的数据,就表明用户可能会有什么样的行为.

  对于豆瓣,它不仅经有用户对各种事物打的标签.
  它还有小组,还有博客,还有各种各样能表征用户行为的系统在内.
  
  从统计角度来看,数据越多,某种程度上说,也就越可能还原出实际方程的样式.
  而对于豆瓣这种大杂烩式的地方,它可分析的数据量是非常多的.

  但以用户发布的文字来说,比如广播,比如评论,比如小组发言.
  即便只是采用搜索引擎的惯用的方式进行关键字分析,也能够对用户生成一大批标签.
  越多的标签,也就意味这越多的潜在价值.

  用googel的方式来说,越精确的关键词,也就越精确的广告投放,也就是越多的广告投放量,也就是越多的盈利来源.
  
  所以,从这个角度来说,豆瓣这种方式,其实是很有潜力超越google的.
  因为豆瓣现在所有的,其实就是google一直想要得到的一种模式.

  想想google的服务.
  picasa,youtube和google earth的关系,已经他们对google 搜索的影响.
  屡次传出收购twtitter的意图.
  friend connet的建立.
  google一直在试图寻找人与人之间的联系.
  把互联网的pagerank带到现实世界.

  而豆瓣手头上有的正是google一直梦寐以求的.

  豆瓣自己或许也明白这一点.
  所以才会有了现在的购书单.

  但这不应该是豆瓣追求的.
  豆瓣应该做的是把自己做成像google一样的广告商.
  而不是把自己做成一个卖家.

  懂得和所有人合作,才不会被任何人打败.

从拼音输入法谈起(上)

  其实只是想把金山词霸从1.0升到2.0.
  但是,顺手也把输入法从QQ拼音升到了谷歌拼音.

  其实一开始并不喜欢谷歌拼音,不喜欢它微软拼音风格的输入方式.
  于是,在还用搜狗拼音的时候,没有选择它.

  当然,那时候也还完全认识google.

  也当然,谷歌并不完全等于google.

  不管怎么样,在搜狗拼音的时代,没有选择google.
  因为它还不够好.
  而且,确实,当时的一些做法,对于一个刚刚进来,并要挑战别人的产品来说,并不恰当.
  尽管,词库这东西并没有说一定受到产权保护.

  后来投奔了QQ拼音.
  
  因为它比搜狗好.
  当时的搜狗已经开始弹窗了,已经开始玩皮肤了.

  这些,让我想起来千千静听.
  
  贵国的软件产品,不乏好的,但缺乏能长远发展的.
  毕竟,温饱问题还是当前的一个大事.

  对于许多团队来说,开始可以做一款颇为成功的产品.
  然后能够以非常迅速的速度占领市场.
  但是接下来,很多产品都会堕落,止步不前.

  当一款产品成为第一之后,面临的危险不亚于刚刚起步.
  它需要更多的思量和考虑.

  如何继续创新,这是一道坎.
  新点子出来之后,市场反应如何.

  通常,即便能有好的点子,但是投放市场之后,往往没有得到"预期中"的强烈反响.
  于是,做产品的人开始急了.
  反响不强烈,也就意味这市场增长可能会放缓.
  这是许多人都考虑.

  于是,各种各样奇淫技巧就用上了.
  比如弹窗,比如所谓的联合推广,比如许多其他为用户所不适的做法.

  其实回头想.
  这些点子的反响真的不强烈么?

  未必.

  一款产品,在一个从无到有的市场里打拼,可以成长地很快.
  迅速的成功容易让人失去理智的判断,误以为在这个市场,成长就应该是如此迅速.
  而事实上忽略了市场本身始终是有一定承载能力的.

  再拼命地扩张,也只能得到微小的回报.
  投入产出比并不如想当然中的理想.

  这也恰恰可以很好地解释,为什么当初的暴风千千搜狗,在成功之后,却变得面目狰狞.
  因为市场已经就这么大.
  对于产品上,再继续地改进似乎并不能在短期内带来很好的收益.
  所以它们选择了所谓的横向扩展.

  现在,QQ拼音也走到了这条路上.
  
  从一款单纯的产品来说,QQ拼音的生命已经结束.
  当它需要靠一切额外的条件来吸引人的时候,也就默认,产品本身已经不能够给人带来更多的东西.

  但注意到,QQ两个字.

  作为腾讯旗下的一款产品,QQ拼音走上这条路,某种程度上是它的宿命.

  和许多腾讯的产品一样,它的责任只是尽可能地拉拢和巩固腾讯的帝国版图.
  
  想想.
  当一个人使用了越来越多的QQ产品的时候,它就越难离开QQ.
  当一个人还在用QQ的时候,如果有一款QQ产品能替代他现有使用的工具,那么他也很可能会投靠过来.

  而这,也正是为什么腾讯一直在模仿的原因.
  因为模仿,所以超越.

  一旦加入到腾讯的网络中,很少人能够全身而退.
  就如同在企业应用里,一旦委身微软,oracle,sap,IBM等巨头,就很难再抽身出来一样.

  依赖性很产品本身错综复杂的关系,让一个人脱离的成本迅速增大.
  你要脱离的不单单是一款产品,而是一条产品线.

  某种程度上说,这也可以解释,为什么linux和开源产品会受到追捧.
  因为你只能选择linux,不然就选择windows.
  无论选择那边,都被绑定到一条既有的产品线上.
  至于商业产品,自然是它本身的产品线.
  至于开源自由产品,自然是整个open source的产业链.
  
  无论是哪边,一旦选择,更换的成本就变得非常之大了.

  所以,QQ拼音,只是腾讯日常产品生命周期里的一个例子而已.
  
  某种程度上说,QQ拼音的生命现才开始.
  因为作为产品,它出不出色其实无所谓.
  重要的是能符合用户的习惯,能把现有市场上的用户拉拢过来.
  只要能做到这点就足够了.

  某种程度上说,腾讯是个善于搭顺风车的企业.
  不能否认,它有比较敏锐的市场嗅觉,做到抄什么有前途.
  
  只是希望,它在占领市场之后,能走出自己的特色.
  
  而这一点,是腾讯还需要学习的.
  不单要学习微软,还要学习Google.

  某种程度上说,腾讯和google还是有相似之处的.
  在于他们都懂得以最小的成本去开拓新兴市场.
  只不过google采用的是扶植合作方式.
  而腾讯则是直接的寄生蚕食.

  当然,这也是没有办法.
  毕竟,google的盈利方式允许它不介入已有市场的竞争.
  因为它靠的只是广告.

  但腾讯,至少在目前为止还不能.
  实际上,腾讯的核心还只是在它的QQ网络.
  而对于这个网络,腾讯其实还没有找到很好的盈利模式.
  不然,腾讯帝国的版图不会如此庞大.

  从某种方面来说,腾讯的臃肿,恰恰是其没有真正利用好自己核心竞争力的原因.
  不然它不会如此乐此不疲地在各个领域跑动吆喝.  

聊聊卡布里尼

最近看了部片叫卡布里尼,算是可能这段时间来比较有意思的一部电影. 故事也不算复杂,就是一个意大利修女去美国传教,建立慈善性质医院的故事. 某种程度上来说,也很一般的西方普世价值主旋律. 但是如果换一套叙事手法,比如共产国际的社会主义革命建立无产阶级广厦千万间的角度来看的话,也不是...