在平时开发的过程中,经常会查找一些资料,从网上下载一些网页,压缩格式文件到自己的电脑中,然后阅读。程序有别于其他行业的一个特征是,所有的资料,数据,压缩文件,只用于产生可以工作的代码,这才算达到目的,解决问题。再漂亮的文档,源代码,如果没有解决问题,产生代码,这样的搜索也是失败。一般在解决问题之后,这些文章,也遗落在硬盘里面,像下面的文件这样
从技术的角度,来看图中的文件,我是在以下几个问题的解决方法:设置VSS2005使支持通过Internet访问。可是一不小心,看到有用的资料,比如电子书《乔布斯传——神一样的传奇》,也顺便把他们下载到了硬盘中。随着时间的积累,这样的文档形式,技术和非技术的文件会越来越多,而自己通常很懒惰,不想去仔细的把他们整理到一起。
在刚开始参加工作的时候,遇到好的技术资料,会用EverNote软件,规范的整理好
这个动作是需要花时间和耐心,我承认随着工作年限的变长,这方面的激情越来越缺乏。
再来看另一种形式的数据,片段式的数据,格式因数据源的不同有差异,请看下图
这是博客园网站上人才招聘的一则信息,这则信息的要点是,公司名称,职位描述,技术要求,联系方式。通常在上网之后,会把这个网页存到本地硬盘中,以方便查找。随着时间的积累,这样的文档也越来越多。这个例子解释的是,对于零散的,片段式的数据,也需要一种方式整理到一起,以方便查看。
来设计一下找工作的场景,以增加对片段式数据的理解。打开已经设计好的应用程序,运行它,应用程序会自动在人才网站(中华英才网,无忧人才)中搜索合适的公司信息,并且把它存到本机数据库中,大约一杯咖啡的时间,再用写好的程序从本机数据库中读取工作数据,根据情况,适当的发送简历或是打电话。如果还想对公司的情况进行判断,比如我想查一下这个公司的信用记录,是否被网友曾经很严厉的批评过,借助于IT公司速查数据库系统,可以看到这个公司的评价。以这样的情景来找工作,找到合适的机率会高一些。记住,这里面所指的程序,都是已经写好的程序,不需要开程序语言和编译器,这些程序会在后面的章节中展现出来。
互联网时代,订阅RSS聚合数据,是一种简单方便的搜集资料的方法。我选择Greate News作为RSS聚合软件
Greate News有一个非常优秀的地方是,它的数据库系统是Sql Lite,也就是说,可以用它作为RSS订阅工具,然后再用代码,读取它的有数据库文件到我的文档管理系统中。本来是要完全写一个RSS聚合软件的,虽然不难,但是要做到稳定,好用也不容易,当我发现Greate News的数据库类型时,欣喜若狂。这也让我的知识管理系统,多了一层数据来源,RSS聚合数据。Web 2.0这个名词已经很老了,得到实实在在的技术创新的好处,我看到的就是RSS。
再看别外一种情况,在网页中浏览数据,请看下面的图片
这是MSN中国的一篇文章,《中国式金融垄断——致温州中小企业“跑路潮”》,我觉得这几个原因分析的不错,于是有Ctrl+C的冲动,但是,这要求我必要开Word或是WordPad文字处理软件,来保存这一段文件,而且还要给出文件名,保存到硬盘中,时间一长,就又回到了第一种情景,大量的文章,技术,非技术的,片段式的,夹杂在一起。于是,我想到网上有一种专门从网页中拷贝数据,然后进入到自定义的程序中。对头,我就是要造出这个程序来,选中需要的文件,点热键,然后这个片段文字,温州老板“跑路”内部原因,就进入到了我的数据库系统中。
整理一下,到现在为止,已经提到了三种场景
- 本地文件,需要导入到本机数据库系统中,以方便查找,编辑。
- 网页数据,不带格式,一小段数据,需要保存到本机数据库系统中
- 网页数据,带格式,比如上面提到的找工作的情形,需要有公司简介,职位要求,联系方式,是格式化的数据
- RSS 聚合数据源 以Sql Lite数据库格式存在
对于本地文件,扩展一下上面的认识和理解,需要对本机文件系统中的任何格式的文件,扫描然后导入到数据库系统中。经常遇到的doc/docx,pdf,pst/ost/eml,htm/mht,txt/rtf,应用程序可以读取这些格式,并导入到数据库中。
这里要提出两点差异化的内容,按照是否可以对数据库中的文档进行编辑,划分出两类的文档管理系统。一种是只能Viewer,只能查看,不能进行编辑,另一种则可以编辑文档。很明显,我这里是扫描文件进入系统,肯定有很多不需要或是杂乱的内容,肯定需要Edit功能。另外,文档数据库系统,一种形式是把文件放在原始的地方,在数据库中中予以引用,另一种是直接把文件存到数据库中,拷贝数据库,就可以完成数据库系统的部署,对于这两者的选择,肯定后者优于前者,比如我要共享我的开发文档给同事,我只需要把我的数据库文件mdf/ldf拷贝给同事就可以,而不需要再对我的电脑进行任何形式的共享。
当把文档保存到数据库中后,要在海量的数据库中查找需要的内容,肯定需要搜索功能。数据库选择SQL Server 2005,这样优秀的数据库系统,平时我们都用来存采购单,销售单,在这个知识管理系统中,我用来保存文档,这个文档可以是任何格式的。因为SQL Server 内置了全文搜索,所以保存为varbinary(max)格式。在Google中找到的精准的描述是:Store the document in a varbinary instead,not ntext,image to use build-in full text search。这是依照后期的需求,对文档进行搜索而做的改变。关于SQL Server的全文搜索,可以参考这本书《Apress.Pro.Full-Text.Search.in.SQL.Server.2008》,这个知识点在后面的文章中会有详细解释。SQL Server的Product Sample中也有一个ItemFinder可以参考。
最后来看一下这个软件的目标群体。一开始我想到的是给自己整理文件用的,后来扩展到整理任何形式的数据。这样一来,喜欢搜索资料和数据的朋友,肯定会喜欢这个软件,既节省硬盘空间,又很有条理和逻辑的归纳数据。我一开始出来工作时,把做好的网站给客户之前,还要先输入一些文章,数据到系统中,以让网站的内容丰满,页面漂亮,这样一说,这个软件也适合网站编辑。我那时有一个工作项就是去别人的网站,比如东莞阳光网(sun0769.com)拷贝数据到客户的网站中,现有有这个软件系统了,设置好目标网站和抓取规则,程序后台自动运行,完全可以留更多的时间,做更有意义的内容编辑工作。再扩大一下目标群体,比如我有一个朋友,喜欢读小书,特别是最新的网络小说,可以通过这个程序,自动抓取最新的小说(起点小说网)到本机数据库系统中,通过导出功能,下载到手机中。这样可以省去了手工操作的时间。最后,所有需要对数据和文档进行归纳整理的朋友,都可以从这个软件系统中获益,它对数据的编辑整理能力,可以让你节省大量的时间和精力。本来是以编辑数据,资料Data为主的软件,经过演化,数据就是知识Knowledge,所以这个系列的软件就叫知识管理系统Data Solution。下图是组件之一Data Loader的主界面
在博客园看到一篇很好的文章,介绍知识管理系统VS文档管理系统的区别,其中有一个表格,借用一下
这里还要解释下,为什么没有选择SharePoint作为文档管理系统。SharePoint是个优秀的平台,如果要把我的目标架设在它的既定的架构上,需要花很多精力和时间去研究Sharepoint,这在后面的扩展部分,会提到Data Solution与SharePoint集成,但是,现在是我需要的知识管理系统,不单指文档,还有片段式数据。所以在项目决策时,没有考虑用SharePoint作为基础的框架和平台。
希望能给你的工作,学习带来帮助。