淘客熙熙

主题:【原创】浏览器是怎么变成操作系统的 -- 美人他爹

  • 共: 💬 233 🌺 560
5点同意,1点存疑

前面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。

总之,分割再比较的办法,对于如何分割十分敏感。感觉这个办法不够皮实。

恩,你的diff patch的方式更好一些。
应该不是简单的分割

我去年和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的几乎没有。

SQL看上去只是在操作数据库的时候优势巨大

处理数据的时候还得看是要干什么,再用具体的语言工具好点。

是,我发现orm的学习曲线很长

一般勾引你去学的时候给的例子都特简单,一旦你要去做东西就发现tnnd,不研究orm的实现作什么都是错,可是有工夫学习orm还不如拿现在的工具搞定算数了。

BB(RIM)刚买下了一个浏览器公司

Torch Mobile(Iris Browser),下面是连接

Iris Browser完全基于WEBKIT,BB买下它的用意何在?准备把WEBKIT用Java改写一遍?

非常有意思

看来Webkit真的要火

webkit几乎席卷了所有的SMARTPHONE平台。

ANDROID, WebOS, iPhone OS,Symbain,BB OS是最后一个?

而且这个被收购的公司是全球为数不多的几个提供WM平台WEBKIT方案的公司。

如果WEBKIT被用Java改写一遍

那么它的性能会下降很多吗?

你们说的我也痒痒了

回头去下载一个webkit跑跑

不用改写啊

提供相应的syscall就得了。哪儿需要用java重写啊

大家都玩webkit干啥呢?

我能想到的,是增加新功能,比如允许网络应用在本地存储,或者增加网页的render方式。还有啥好玩的?

玩WEBKIT之前的必答题。

玩这个东西前必须回答一个问题 --- 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?

兄弟做了几年的cairo,后来没做了。

没想到啊,居然翻身鸟。



有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河