主题:【原创】浏览器是怎么变成操作系统的 -- 美人他爹
前面5点都同意,溢美之词就不多说了。
最后一条我没有解释清楚。举个例子,譬如我手机上存着2008年的地图数据,假如云计算平台上的地图数据已经更新到了2009年版本,那么应该如何更新我手机上的地图数据呢?
最简单的办法,先删除手机上2008年版本的数据,然后下载2009年版本的数据。但是这样的做法,隐含着必须下载整套地图数据,从而占用带宽很多。
鉴于2009年版地图数据,比2008年版差不了太多。所以,如果云计算平台先算出2009版与2008版之间的差额,然后手机就只需要下载这个差额,差额+2008版=2009版。
师弟的办法是,先把2008版和2009版分割成若干小碎片,然后逐个比较小碎片之间的差距。这些差距的总汇,就是前面说的差额。
这个办法当然是可行的,但是很难保证差额的尺寸尽可能小。把问题简化一下,或许能够解释得更清楚。假设有两个byte arrays。2008版的数组有100个bytes。2009版的数据与2008版相差不多,只不过在2008版开头插入了新的5个bytes,这样2009版总共有105个bytes。
假如按照师弟的办法,先把2008版的数组分割为10段,每段10个bytes。同时把2009版的数据也按10个bytes一段,进行分割,这样分了11段。接下来,逐对比较这些小碎片,从第一对,到第10对,每对都有5个bytes的差异。总共差额至少有(5x10 + 5 = 55)bytes,但是事实上,差异只是头上5个bytes。
总之,分割再比较的办法,对于如何分割十分敏感。感觉这个办法不够皮实。
我去年和data domain的人聊过,他们的领域是用硬盘做差分备份,他们也面对同样的问题:如何在一个文件的两个版本里面找到最小的差异,这样可以帮他们节省空间,在我们这个问题里面,可以节省的是带宽。
他们的做法,貌似是用版本v1的某些字段,在版本v2里面找对应,然后这个查找有窗口,可以对付v2里面的添加删除和修改。和diff的办法差不多,但是我想里面应该有很多的heuristics。
嗯,添一段数学描述。
这个问题如师兄所言,是一个比较两个串的距离的问题:串s1和串s2之间的最短距离diff(s1, s2)。这个问题有经典解法,但是如果串很长,比如数百兆,那么计算起来太困难。
那么我们加入一些heuristics:比如我们知道其实s2是s1的更新,那么其实s2和s1只有有限的差别,其他地方都是一样的。我们就可以用分而治之的办法,也就是说,存在一个对s1和s2的分割D,使得:
D将s1和s2分割成相同数目的段p,每个段长度不同,但是这里面sigma(diff(p1i, p2i)) = diff(s1, s2)
那么我们的目标,就是找到一个分割D',使得这个分割计算出来的diff,最接近D的diff值。
如果再加一些heuristics,我们知道一般的文件都是有内部结构的,我们对于这些结构,可以加以利用,比如mpeg4的文件是分帧的,html/xml是树形的等等。这些都可以帮助我们建立这个分割。
在HTTP和FTP层中早已解决。关键在WEB与FTP server和Browser与FTP client两端同时支持最新版的HTTP和FTP协议。与TCP/IP层(含下面的协议层)没有任何关系。据俺了解现在的Browser不支持HTTP1.1的几乎没有。
处理数据的时候还得看是要干什么,再用具体的语言工具好点。
一般勾引你去学的时候给的例子都特简单,一旦你要去做东西就发现tnnd,不研究orm的实现作什么都是错,可是有工夫学习orm还不如拿现在的工具搞定算数了。
Torch Mobile(Iris Browser),下面是连接。
Iris Browser完全基于WEBKIT,BB买下它的用意何在?准备把WEBKIT用Java改写一遍?
看来Webkit真的要火
ANDROID, WebOS, iPhone OS,Symbain,BB OS是最后一个?
而且这个被收购的公司是全球为数不多的几个提供WM平台WEBKIT方案的公司。
那么它的性能会下降很多吗?
回头去下载一个webkit跑跑
提供相应的syscall就得了。哪儿需要用java重写啊
我能想到的,是增加新功能,比如允许网络应用在本地存储,或者增加网页的render方式。还有啥好玩的?
玩这个东西前必须回答一个问题 --- 2D图形库用谁家的?
ANDROID上玩,没有选择,只有SKIA了。
APPLE,Cario、Quartz 2D。
Symbian,QT。
WINDOWS,这几个东西都能玩。
国内有个猛人,居然自己开发了一个叫MINIGUI的2D库来替代上面这些图形库,搞自己的WEBKIT组合。
各家的WEBKIT方案的一个看点就是2D库的组合。原始的WEBKIT自然是Cario,GOOGLE家自然是SKIA,Symbian就是QT(Trolltech.com 依然变成Nokia的一分子)。RIM买的这家用的是QT,据此可以看看BB OS的未来动向。
2D图形的问题回答完毕,你就可以在网上找WEBKIT的开发包了。
注:RIM用JAVA重写WEBKIT纯粹是玩笑话,当不了真的。
兄弟做了几年的cairo,后来没做了。
没想到啊,居然翻身鸟。