五千年(敝帚自珍)

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

共:💬233 🌺560
全看树展主题 · 分页首页 上页
/ 16
下页 末页
家园 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,后来没做了。

没想到啊,居然翻身鸟。

全看树展主题 · 分页首页 上页
/ 16
下页 末页


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

Copyright © cchere 西西河