`
ideage
  • 浏览: 327522 次
社区版块
存档分类
最新评论

OpenRJ 的D语言实现

阅读更多

最近一直在琢磨,如何把一些很少变化的元数据保存到一个简单的文件,曾经使用Sqlite,但发现修改麻烦,也想用XML,但感觉也有些小题大做。看了OpenRJ,发现这比INI更简单,精致,更符合以前用数据的方式。没有过多的强制,经典!

 

1.简介
Record-Jar格式是一个宽松的数据保存格式,来源于《Unix编程艺术》,类似于XML,它也是自描述的。如同数据库表一样,你可以保存你的表格数据到openRJ文件,或者RJ的流。D语言在标准库中实现了OpenRJ格式的操作实现。如同你看到的一样,简单的很:总计三个类,Field,Record,Database,数据库包含多条记录,记录包含多个域(列)。

 

2.格式规范
每个域都由一个键值对组成,是 名称:值 的形式,用冒号分隔的一个行。行末由空格结束。如果一个行不够,可以用 \ 斜杠来换行。每个空行都将被忽略。不会强制要求你如同数据库的表:不要求有相同的列,列名也可以不同。同名的列也是可以的。也可以用%%两个百分号来写一个注释行。

 

来一个原著的例子:

 

%% Books data 
%% Created:   28th June 2004
%% Updated:   29th June 2004
Author:       Donald E. Knuth
Title:        Art of Computer Programming, The, Volume 1: Fundamental Algorithms
Publisher:    Addison-Wesley
Year:         1997
Description: %% 
Author:       Eric Raymond
Title:        Art of UNIX Programming, The 
Url:          http://www.awprofessional.com/title/0131429019
Publisher:    Addison-Wesley
Year:         2003
Description:  This is a great book if you want to learn about the \
           history of UNIX. It inspired the \
           <a href = "../libraries/index.html#openrj">Open-RJ</a> project
%% 
Author:       Rector and Sells
Title:        ATL Internals
Publisher:    Addison-Wesley
Year:         1999
Description: ok
%% 

 

3.在D中使用

 

D语言的std.openrj实现中有操作的例子。但编译后无法使用。发现Phobos中注释了Field的opCmp操作。把注释去掉后,好了。还要在编译程序中,添加openRJ.d的引用,否则编译后还不能使用。

例如,我的例子为:dmd orj.d d:\d\dmd\src\phobos\std\openrj.d

 

每个Field(域)都是一个值和名称;因为D的关联数组,Record(记录)提供了很方便的方法,可以根据名称,顺序访问域;数据库类(Database)提供了访问所有记录和所有域的方法,也可以查找包含某个名称的记录。

 

4.OpenRJ能做什么

你可能会有很多元数据要保存到一个简单的格式中,OpenRJ提供了一个精巧,符合数据库思路的精致实现。当然,如果你的数据经常修改,还要求事务并发,那么就算了。当然,INI格式来实现配置数据的保存,也很好用。终于不用自己去定义麻烦的数据格式了!马上就可以把元数据写成OpenRJ格式了!

分享到:
评论
2 楼 sw2wolf 2009-02-21  
存在就是合理的
1 楼 ray_linn 2008-12-17  
会抓老鼠的猫有一只就成了...不明白为啥要这个东西。

相关推荐

    基于STM32单片机的激光雕刻机控制系统设计-含详细步骤和代码

    内容概要:本文详细介绍了基于STM32单片机的激光雕刻机控制系统的设计。系统包括硬件设计、软件设计和机械结构设计,主要功能有可调节激光功率大小、改变雕刻速率、手动定位、精确雕刻及切割。硬件部分包括STM32最小系统、步进电机驱动模块、激光发生器控制电路、人机交互电路和串口通信电路。软件部分涉及STM32CubeMX配置、G代码解析、步进电机控制、激光功率调节和手动定位功能的实现。 适合人群:对嵌入式系统和激光雕刻机感兴趣的工程师和技术人员。 使用场景及目标:① 适用于需要高精度激光雕刻的应用场合;② 为开发类似的激光雕刻控制系统提供设计参考。 阅读建议:本文提供了详细的硬件和软件设计方案,读者应结合实际应用场景进行理解,重点关注电路设计和代码实现。

    白色简洁风格的前端网站模板下载.zip

    白色简洁风格的前端网站模板下载.zip

    HarmonyException如何解决.md

    HarmonyException如何解决.md

    sdfsdfdsfsdfs222

    sdfsdfdsfsdfs222

    (177373454)html+css+js学习代码.zip

    html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+j

    usbgps2.apk

    usbgps2.apk

    白色简洁风格的家居建材网站模板下载.zip

    白色简洁风格的家居建材网站模板下载.zip

    EventEmitError解决办法.md

    EventEmitError解决办法.md

    白色简洁风格的工艺品展览企业网站源码下载.zip

    白色简洁风格的工艺品展览企业网站源码下载.zip

    matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特率性能仿真,matlab代码 OFDM simulink 包括添加保

    matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特率性能仿真,matlab代码 OFDM simulink 包括添加保护间隔(cp),信道均衡(ZF MMSE MRC MA LMSEE) 代码每行都有注释,适用于学习,附带仿真说明,完全不用担心看不懂

    build(1).gradle

    build(1).gradle

    贴标飞达sw16全套技术资料100%好用.zip

    贴标飞达sw16全套技术资料100%好用.zip

    其实这就是历年摘出来的

    其实这就是历年摘出来的

    地理遥感图像区域合并分割的大规模高效算法研究

    内容概要:本文针对大规模高分辨率遥感图像的处理问题,提出了一种基于图像分块的可扩展区域合并分割框架。传统的图像分块方法会导致分块边界上的伪影,影响最终结果。为解决这一问题,文中定义了稳定性边缘的概念,并给出了其数学表达,以确保分割结果与不分块时相同。此外,文章还介绍了一种高效的框架实现方法,用于在资源受限的设备上处理大型图像。 适合人群:从事遥感图像处理、计算机视觉及地理信息系统相关领域的研究人员和技术人员。 使用场景及目标:适用于需要处理大规模高分辨率遥感图像的应用场景,如环境监测、自然资源管理等。主要目标是提供一种能够高效处理大规模图像同时保持分割质量的方法。 其他说明:实验结果表明,所提出的算法不仅能够避免分块边界的伪影,而且能够在不同尺度下获得与不分块处理相同的分割结果。

    白色简洁风格的手机图片展示博客网站模板.rar

    白色简洁风格的手机图片展示博客网站模板.rar

    白色简洁风格的外科医疗整站网站源码下载.zip

    白色简洁风格的外科医疗整站网站源码下载.zip

    基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)

    基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计),本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、毕业设计、期末大作业和课程设计使用需求,如果有需要的话可以放心下载使用。 基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医疗领域问答系统实现源码+使用说明(毕业设计)基于python知识图谱医

    在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip

    在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip

    .archivetemp阅读天数.py

    .archivetemp阅读天数.py

Global site tag (gtag.js) - Google Analytics