- 主题:在MS的xls中见到了史上最奇葩的设计
看过一个例子:对于1M的文件,需要在第10字节插入一个字符,现在的机器就直接全读进来然后全写回去好了。
但是在软盘+低内存时代这个是无法接受的,产生了有不少技巧,比如文件头预留一部分固定长度描述后面有什么patch,然后把这个字符当作patch插入文件尾部。这样能节省很多io。
下次'另存为‘的时候,这些patch才有机会被合并成新文件。
--
FROM 101.93.138.*
哈哈,你这个例子在那个年代估计也确实合理
MS的ppt二进制格式里面,也会把用户每次修改的对象,单独存储,叫UserEditAtom
【 在 vabc3 的大作中提到: 】
: 看过一个例子:对于1M的文件,需要在第10字节插入一个字符,现在的机器就直接全读进来然后全写回去好了。
: 但是在软盘+低内存时代这个是无法接受的,产生了有不少技巧,比如文件头预留一部分固定长度描述后面有什么patch,然后把这个字符当作patch插入文件尾部。这样能节省很多io。
: 下次'另存为‘的时候,这些patch才有机会被合并成新文件。
--
FROM 125.35.123.*
上千人年,作者对office的工作量估计。
但博客本身,也是吐槽文档格式的BIFF,增加了解析的难度。核心结论就是,这种格式根本没有考虑interchangeable ,就是为了快。
解析的难度还来自复杂漫长的历史,比如1900和1904那个例子。
总而言之,你解析这个,还是很厉害的。好好干,是career ,不是job了。
【 在 z16166 的大作中提到: 】
: 这不是我,哈
: “上千人年”是说搞office、wps那种解析、渲染、编辑一体的吧,文档的每个角落都要触及,还不能有大bug
:
--
FROM 36.45.32.*
诶是吗?我还以为都是和OLE有关的呢
【 在 z16166 的大作中提到: 】
: 是的,太烂了,有些是软盘时代的遗产(为了节省存储而大量使用奇葩的紧凑设计),
: 而且doc/ppt/xls这些老格式各自为阵,每个都不一样,明显是几个team单独搞的,没有统一规划
: 即便是docx/pptx/xlsx这些新格式,里面也有不统一的地方
: ...................
--
FROM 222.71.112.*
听起来像ZIP格式
【 在 vabc3 的大作中提到: 】
: 看过一个例子:对于1M的文件,需要在第10字节插入一个字符,现在的机器就直接全读进来然后全写回去好了。
: 但是在软盘+低内存时代这个是无法接受的,产生了有不少技巧,比如文件头预留一部分固定长度描述后面有什么patch,然后把这个字符当作patch插入文件尾部。这样能节省很多io。
: 下次'另存为‘的时候,这些patch才有机会被合并成新文件。
--
FROM 222.71.112.*
我看成了xsl..
【 在 z16166 的大作中提到: 】
: 只解析其中的子集。要是全部特性都解析,吐血也搞不完的。搞docx/pptx/xlsx还得花钱买OOXML的标准文档才能搞清全部细节
: 另外一个是RTF格式,这个格式明显是基于TeX搞的,必须要从头读到尾,不支持随机位置的读取。当然,早已经被MS抛弃了,只是提供兼容。
:
--
FROM 115.198.25.*
别把file parser想那么难,有规范文档的,对着文档弄就完事了
除非是那种什么巨老的连格式文档都找不到的
当然,要想少出点漏洞,得搞一堆的测试用例和fuzzy
【 在 DoorWay 的大作中提到: 】
: 上千人年,作者对office的工作量估计。
: 但博客本身,也是吐槽文档格式的BIFF,增加了解析的难度。核心结论就是,这种格式根本没有考虑interchangeable ,就是为了快。
: 解析的难度还来自复杂漫长的历史,比如1900和1904那个例子。
: ...................
--
修改:z16166 FROM 125.35.123.*
FROM 125.35.123.*