FRS文件库介绍

60
FRS 文文文文文 文文文 文文 everydo.com

Transcript of FRS文件库介绍

Page 1: FRS文件库介绍

FRS 文件库介绍

潘俊勇

易度 everydo.com

Page 2: FRS文件库介绍

2002 年

我开始推广 Plone

Page 3: FRS文件库介绍

世界级的 Plone

Page 4: FRS文件库介绍

做什么?内容管理 CMS:

• 网站内容管理 ( 做网站 )

• 企业内容管理– 文档管理– 档案管理– 数字资产

Page 5: FRS文件库介绍

( 此处略去辉煌若干 )

Page 6: FRS文件库介绍

2007 年

全面放弃 Plone

Page 7: FRS文件库介绍

为什么?

Page 8: FRS文件库介绍

让我们换个思路。。。

Page 9: FRS文件库介绍

我们曾经一无所有

Page 10: FRS文件库介绍

若干年的努力

Page 11: FRS文件库介绍

不断做加法

Page 12: FRS文件库介绍

实现了

现代化

Page 13: FRS文件库介绍

但我们的心灵

是否能真正得以休养?

Page 14: FRS文件库介绍

我们的新世界• 更加复杂• 依赖更多• 消耗更多• 管理成本很高• ….

Page 15: FRS文件库介绍

我们• 不能没有电• 不能没有互联网• 不能没有 qq

• 不能没有那么多的服务机构• 不能没有……

Page 16: FRS文件库介绍

任何一个环节崩溃之时

• 数据还能取出吗• 工作还能继续吗• 我们的生活?

Page 17: FRS文件库介绍

(思考 ing)

Page 18: FRS文件库介绍

我们需要什么?

Page 19: FRS文件库介绍

功能都是浮云

世界变化快的都在过时 ing

Page 20: FRS文件库介绍

内容才是永久的财富

(心灵才是呵护之本)

Page 21: FRS文件库介绍

读取内容的依赖下面任何一个环节出问题就玩完

• 文件系统• 操作系统• 数据库服务器• 应用服务器• 上层应用

Page 22: FRS文件库介绍

做减法

Page 23: FRS文件库介绍

什么是理想之所?

Page 24: FRS文件库介绍

Sphnix: 异军突起• 简单、规范化的内容编写格式• 放入版本库!• 生成静态的网站

http://sphinx.pocoo.org/

Page 25: FRS文件库介绍

一时间,

多少技术网站倒戈…

Page 26: FRS文件库介绍

Sphinx 的定位

程序员写文档发布到网站

Page 27: FRS文件库介绍

管理更多内容?

文件、网页、视频、音频、打包文件、 office 文档

Page 28: FRS文件库介绍

支持更多功能?

版本、回收站、快捷方式、元数据、格式转换

Page 29: FRS文件库介绍

面向大众?

非程序员

Page 30: FRS文件库介绍

FRS 诞生

( 其实早于 Sphinx)

Page 31: FRS文件库介绍

解决内容存储的问题

更简单、更可靠、更可扩展

Page 32: FRS文件库介绍

直接利用文件系统存储

数据库是浮云

Page 33: FRS文件库介绍

文件系统也是浮云

FAT32 , NTFS , EXTn , HDFS

Page 34: FRS文件库介绍

混乱着呢

Page 35: FRS文件库介绍

文件路径问题• 路径格式

– C:\windows– /home/panjy/docs

• FAT32 路径只支持 256 个字符• NTFS 上,支持 3200 长度

– 但路径必须用: \\?\c:\windows

• 路径编码各异– mbcs– utf-8

Page 36: FRS文件库介绍

Link 的支持硬盘空间不够?使用 Link 来扩展

• ext2 : 支持• FAT32 :不支持• NTFS :支持,但不方便

Page 37: FRS文件库介绍

windows 更多问题…• 读文件必须采用 rb !• 被使用文件不能移动

(windows error 32)

• …

Page 38: FRS文件库介绍

分布式文件系统?Hadoop 的分布式文件系统 HDFS

• 原生是 java 的接口• 接口使用差异非常大

Page 39: FRS文件库介绍

杯具的 Python 文件操作封装

分散在三个包:

• os

• os.path

• shutils

Page 40: FRS文件库介绍

能否统一?

让内容有可靠的栖身之所?

Page 41: FRS文件库介绍

亮剑

FRS : File Repository System

Page 42: FRS文件库介绍

FRS特点• 一个简单的 python 文件操作软件包• 虚拟文件系统:统一的文件路径• 统一的文件操作• 元数据• 回收站• 版本• 缓存• 可扩展…

Page 43: FRS文件库介绍

建立虚拟文件系统• VFS = Virtual File Systeme

• 统一文件的路径• 通过配置文件,设置虚拟文件路径和实际

存储位置的映射关系• 统一基本文件操作

Page 44: FRS文件库介绍

神奇的 .frs 文件夹

Page 45: FRS文件库介绍

元数据. frs/abc.txt/metadata.json

• {• "main": {• "right_col":"",• "left_col":"",• "contenttype":"document"• },• "dublin": {• "description": "",• "title": " 易度云办公平台 , 互联网时代的新型 OA"• }• }

Page 46: FRS文件库介绍

多版本• .frs/abc.txt/archived/1.txt

Page 47: FRS文件库介绍

回收站• .frsremoved

• 按照文件夹和删除时间区分

Page 48: FRS文件库介绍

缓存文件• Pdf->html• Doc->html• Doc->text• Zip 解压… .• …• 上述文件可由原始文件生成,丢失也不可怕

• 因此备份策略不同

Page 49: FRS文件库介绍

理解 3种 path

• ospath : 文件系统的路径• vpath : 虚拟文件系统的路径• site_path : 应用的路径(网站的路径)

转换:• vpath = frs. sitepath2Vpath(site_path)

• ospath = frs.ospath(vpath)

Page 50: FRS文件库介绍

配置 :frs.conf

• [cache]• path = /var/everydo-frscache

• [root]• sites = /var/everydo-frs• members=/var/home

• [site]• /=/sites• /members=/members

Page 51: FRS文件库介绍

初始化from zopen.frs.core import loadFRSFromConfig

frs = loadFRSFromConfig(file(frsconf).read())

Page 52: FRS文件库介绍

基本使用• frs.listdir()

• frs.dirs()

• frs.joinpath()

• frs.exists

• frs.basename

• frs.walk

• …

Page 53: FRS文件库介绍

元数据def getMetadata(self, vpath):

def saveMetadata(self, vpath, metadata_body):

Page 54: FRS文件库介绍

版本管理

    def archive(self, path, id=None, **archiveInfo):

    def listArchives(self, path):

    def getArchiveInfo(self, path, archivename):

    def copyArchive(self, path, archiveName, dstPath):

    def removeArchive(self, path, archiveName):

Page 55: FRS文件库介绍

回收站def recycleAssets(self, path, srcNames):

def listRemoves(self, path):

def listRemovedAssets(self, path, removeName):

def revertRemove(self, path, removeName, assetNames=[    def realRemove(self, path, removeName, assetNames=[]):

Page 56: FRS文件库介绍

数据缓存• def getCacheFolder(self, vpath, cachenam

e=None):

• def hasCache(self, vpath, cachename=None):

• def removeCache(self, vpath,cachename=None):

• def moveCache(self, src, dst):

• def copyCache(self, src, dst, **kw):

Page 57: FRS文件库介绍

源代码• zopen.frs.core

FRS 文件库核心包http://code.google.com/p/zopen-frs

• zopen.cms一个使用 frs 管理内容的简单内容管理系统充分利用 restructuredTexthttp://code.google.com/p/zopen-cms/

Page 58: FRS文件库介绍

使用案例• 网站 :

– http://czug.org– http://everydo.com– http://zopen.cn– http://benky.czug.org

• 易度文档管理系统 (http://edodocs.com)

Page 59: FRS文件库介绍

还需要 Plone 吗

不需要了如释重负了

Page 60: FRS文件库介绍

Thanks