星期三, 七月 27, 2005

Re: XML Schema 的最佳实践原则

ARTS (零售技术标准协会)的 IXRetail 最近提出了规范 XML Schema 设计的最佳实践原则,共有17条:

1. 所有的 XML 命名采用UCC (首字大写的大小写混合)方案,单词间无空格或连字符。
解释:大小写混合方案(camel case)分为UCC与LCC两种。UCC要求以大写字母开头,例如:NewBookName;LCC则以小写字母开头,例如:newBookName。 为了统一命名,IXRetail 推荐使用UCC,且不允许使用空格或下划线,即不能用New_Book_name或New Book Name。
2. 可读性比标记长度更重要。
解释:IXRetail认为,为了便于用户理解 XML 文档,增加标记的长度也是值得的。例如:CompanyID就比ID_Comp要好。
3. 尽量避免在元素、属性和类型的命名中使用缩写。但是 GTIN(全球贸易项目编号)、ID(标识号)、POS(电子收款机系统)除外。
解释:本原则是依据 ARTS 数据模型而提出的。例外情况是针对零售业而言,其它行业可以规定本行业的可缩写术语。
4. 尽量不要在属性命名中包括实体名。
在 ARTS 数据模型中,实体名通常被用作属性名字前缀。然而 XML 已具清晰的层次结构,包含前缀的属性名只会徒然增加标记长度。本原则也适用于本地元素命名。
5. 使用 W3C XML Schema,不要用 DTD 或其他 Schema 方案。
解释:与 DTD 相比,W3C 的 XML Schema具有很多优点,如:XML Schema 是 XML文档;一个XML文件可以对应多个Schema;XML Schema 的内容模型可以随意扩充;XML Schema支持多种数据类型,且能自定义;XML Schema允许使用本地名称;XML Schema 可以使用空值,等等(参见http://www.w3.org/TR/xmlschema-0)。其他方案包括微软早期向 W3C 提交的 XML Schema 方案等。
6. 枚举值的命名,应该遵循元素命名原则,且不包含数字;尽量不要使用 IXRetail 创造的新名字;尽量使用 ISO 标准命名而不是国家标准或协会标准命名。
解释:包含数字的命名是不规范的,且给处理带来困难。自然语言词汇已经暗示了其数值,何乐而不为?
7. 枚举值应该使用由英语单词组成的名字。
解释:能够暗示数值的自然语言命名没有多少选择余地,而在 ARTS 数据模型中已经提供了英语命名,可以使用它们的衍生词作为名称。
8. 命名不应与所在结构重复。
解释:本原则是4.的推广。例如:在 元素中的 元素就不要使用 NewBookName。
9. 所有的 XML Schema 的全局名字空间统一命名为 IXRetail,它的 URI 是 http://www.nrf-arts.org/IXRetail/namespace/
解释:本原则可以避免与其他名字空间冲突。URI 末尾的"/"代表它是目录而不是文件名。这并不重要,因为 URI 是用于给名字空间命名而不是对其定位的。其他行业可以自行规定名字空间。
10. 所有来自 IXRetail 的 XML 实例都要指定 IXRetail 为默认名字空间。   

解释:本原则可以避免在使用本行业术语时都要加上名字空间前缀 IXRetail。各行业可以指定自己的默认名字空间。注意:本原则仅适用于 XML 实例,而不是 XML Schema。
11. 所有来自 IXRetail 的 XML Schema 都要指定 IXRetail 为默认名字空间以及目标名字空间。
解释:在本原则下,W3C 不再是默认名字空间,相应的标准命名都要加上名字空间前缀。注意:本原则仅适用于 XML Schema 而不是 XML 实例。
12. 凡是领域专家认为可重用的数据类型,无论是 simpleType 还是 complexType,应该在全局名字空间而不是在 Element 属性中定义。
解释:数据类型名称很少用在标记里,即使全局名字空间里定义,并且加上领域名称和作者等前缀,也不会影响标记的总长度。
13. Schema 中的元素名称,应该使用嵌套 Element 定义,其数据类型可以被显式或隐式定义;不要用 ref 引用全局定义。
解释:本原则与12.相反。元素名称在标记中频频出现,因此,精简了附加信息的本地元素名称可以大大缩短标记总长度。
14. 来自 IXRetail 的 Schema 的各个版本,都应该在 schemaLocation 属性中指定其 URI;URI 要遵循 ARTS-NRF 制定的规范 (每个 schemaLocation 都是 http://www.nrf-arts.org/IXRetail/schemaLocation/ 的子目录,且是 UTF-8 文件)。开放标记 的 version 属性不能为空,且必须与 schemaLocation 属性一致。schemaLocation 属性和 version 属性的值都要与 Schema 的许可、实施、发行信息中所述一致;还要包含符合 W3C 日期格式的发行日期
解释:为了规范 XML Schema 的版本控制机制,任何发行版本,包括第一版的 XML Schema ,都应该遵循本原则。任何 XML 处理器均支持 UTF-8 格式,但只有少数处理器支持简/繁体中文、日语等 UTF-16 格式的语言,因此要用 UTF-8 格式。所谓 W3C 日期格式,是指 yyyymmdd 格式,如:20020211(2002年2月11日)。版本控制机制尚未统一,故其他机构制定的规范可能与本原则有出入。
15. 尽量使用 ARTS XML 字典中的词汇。
解释:ARTS XML 字典中包含了 ARTS 数据模型的实体名和属性名、来自 IXRetail schemas 的名称,以及它们的衍生词。目前它的词汇以零售业为主,可以扩充到任何行业。
16. 从全局名字空间选取名称时,尽量选取能揭示被命名对象的特定意义的复合词。
解释:词汇具有多义性,通用词更是如此。如果不加选择,就会引起岐义,从而影响文档的可读性。本原则对于用 Element 定义的本地词汇不适用,它们所在的层次限定了其含义。
17. 名字空间前缀要保持统一;使用 IXRetail 名字空间不需要加前缀。

只能使用下列前缀和定义:
(1) xml(在可扩展标示语言标准方面定义)
(2) xmlns(在可扩展标示语言标准的 Namespaces 中定义)
(3) xs http://www.w3.org/2001/XMLSchema
(4) xsi http://www.w3.org/2001/XMLSchema-instance
解释:前述10.与11.两条原则已经规定了 IXRetail是默认名字空间,故不需加前缀。本原则提到的可用前缀还可进一步完善。
小结:以上17条原则是由 IXRetail 提出来,以规范零售业的 XML Schema 的设计。基本的原则包括:规范命名的形式、合理选词、规范名字空间、与现行工业标准接轨。具体应用时,可视情况加以调整。

星期四, 七月 21, 2005

如何用diskboot.img制造Redhat AS 4.0 USB启动安装盘?

http://www.raimokoski.com/lineox/4.0/i386/os/README-x86-en.html

Another image file contained in the images/ directory is diskboot.img. This file is designed for use with USB pen drives (or other bootable media with a capacity larger than a diskette drive).
Use the dd command to write the image. dd if=bootdisk.img of=/dev/sd0
(Windows 用RawWrite.exe)

Note

The ability to use this image file with a USB pen drive depends on the ability of your system's BIOS to boot from a USB device.



如何把RedHat 的Boot.iso放到USB 盘上,直接启动,不要再刻CD了。Cool

4.4. 为采用 USB 闪盘引导方法准备文件

第4章 获取系统安装介质

4.4. 为采用 USB 闪盘引导方法准备文件

如果采用 USB 闪盘引导你需要一台运行支持 USB 的 GNU/Linux 系统。 你应该确定 usb-storage 内核模块已经装入 ( modprobe usb-storage ) 然后尝试找出 USB 闪盘映射到的那个 SCSI 设备。 在这个例子中是 /dev/sda )。 为了 写入你的闪盘,你可能需要关闭它的写保护开关。

注意,准备的 USB 闪盘应该至少有 128MB 的容量 ( 在更小的尺寸安装也是可能的,请参照 第4.4.2节 , "拷贝文件 ── 灵活的方法 " )。

4.4.1. 拷贝文件 ── 轻松的途径

这里有一个单一的文件 hd-media/boot.img.gz 。其中包括了所有的 安装文件 (包括内核),以及 SYSLINUX 和它的配置文件。你只需要把它直接 解到你的 USB 闪盘内:

gzip -dc boot.img.gz >/dev/sda

当然这会删除这个设备上的所有内容,因此小心你使用的是正确的 USB 闪盘设备名称。

之后,挂接 USB 闪盘 ( mount /dev/sda /mnt )。里面应该 存在一个 FAT 文件系统,并且存有一个 Debian 网络安装盘或者名片型 ISO 映象。请注意文件 名必须以 .iso 结尾。 解挂闪盘 (umount /mnt) 后结束。

4.4.2. 拷贝文件 ── 灵活的方法

如果你需要更多的灵活性或者只是想了解其间发生了什么,你应该使用如下的方法来把文件放到你的闪盘。 我们将显示如何安装闪盘来使用其第一个分区,而不是整个设备。

由于大多数 USB 内存条预先装载了一个单一的 FAT16 分区,你可能不需要重新分区或者重新格式化 USB 内存条。如果你必须这么做,请使用 cfdisk 或者其他的分区工具来 创建一个 FAT16 分区并且输入

mkdosfs /dev/sda1

小心你使用的是 USB 盘正确的设备名称。mkdosfs 命令包含在 dosfstools Debian 包中。

如果想要在 USB 闪盘引导后启动内核,我们将在 USB 闪盘上放入一个引导装载程序。尽管任何引导装载程序 (比如 LILO) 应该可以胜任这个工作。不过还是使用 SYSLINUX 更方便。主要是它使用一个 FAT16 分区并且用编辑一个文本文件 就能进行配置。任何支持 FAT 文件系统的操作系统可以用来改变引导装载程序的配置文件。

为了把 SYSLINUX 放到你的 USB 闪盘的分区上,请安装 syslinuxmtools 包在你的系统里, 然后输入

syslinux /dev/sda1

请再次确保你使用的是正确的设备名称。在开始 SYSLINUX 的时候 不能挂接分区。这个程序会写入分区的引导扇区并且创建 ldlinux.sys 文件。它主要包含引导装载器的代码。

接下来挂接分区 (mount /dev/sda1 /mnt) 并且 从 Debain 文件库拷贝下列文件到内存条上:

  • vmlinuz (内核执行文件)

  • initrd.gz (初始化内存映像)

  • syslinux.cfg (SYSLINUX 配置文件)

  • Optional kernel modules

如果你想重命名这些文件,请注意 SYSLINUX 只能处理 DOS (8.3) 文件名。

syslinux.cfg 配置文件应该含有下列两行:

default vmlinuz
append initrd=initrd.gz ramdisk_size=10000 root=/dev/rd/0 init=/linuxrc devfs=mount,dall rw

请注意, ramdisk_size 参数在需要的时候可能要增大,这取决于 你正在引导的内存映像大小。

现在你需要把任意 Debian ISO 映像 (名片式,网络安装式或者甚至是完全安装版) 放入你的 USB 闪 盘 (如果它装的下的话)。这样的一个映象文件后缀必须是 .iso

如果你想通过网络安装而不需要一个 ISO 映像,你当然需要跳过以前的步骤。并且你必须要使用来自 netboot 目录的内存映像来取代来自 hd-media 的内存映像。这是因为 hd-media/initrd.gz 并不包含网络支持。

当你完成的时候,解挂 USB 闪盘memory stick (umount /mnt) and activate its write protection switch.

警告

如果你的系统拒绝从 USB 闪盘引导,那么闪盘可能装有一个无效引导扇区记录 (MBR)。 使用来自 mbrinstall-mbr 命令也许可以解决这个问题:

install-mbr /dev/sda

星期四, 七月 07, 2005

SCM Principle Microsoft SourceSafe VS CVS/Subvision

SourceSafe:The Lock-Modify-Unlock Solution
CVS/Subvison:The Copy-Modify-Merge Solution

which is better?

LMU(SourceSafe ) is better for common.

星期日, 七月 03, 2005

测试Email Post

Email Post:

--------
测试风格.
  TSS

星期五, 七月 01, 2005

window command line shutdown

DOS ECHO G=FFFF:0000 ? DEBUG Reboot Warm boot, sometimes cold boot.
May not work with "exotic" memory managers, like Quarterdeck's QEMM or DesqView; in that case, use RESET.COM instead.
Win31* ECHO G=FFFF:0000 ? DEBUG Task Manager popup And sometimes reboot
Win9* RUNDLL USER.EXE,ExitWindows Shutdown (2)  
Win9* RUNDLL USER.EXE,ExitWindowsExec See Remarks Win95: various results, usualy fast shutdown (and lock PC), sometimes restart Windows, sometimes reboot.
Win98: Restart Windows, sometimes reboot.
Win9* RUNDLL SHELL.DLL,RestartDialog Restart dialog "System Settings Changed, Do you want to restart your computer now?" dialog
Win98 RUNDLL32 KRNL386.EXE,exitkernel Poweroff Poweroff for ATX boards only, otherwise normal shutdown (3)
Win98/ME RUNDLL32 SHELL32.DLL,SHExitWindowsEx n See Remarks
n can be any combination (sum) of the following numbers: (4)
0    Logoff
1    Shutdown
2    Reboot
4    Force
8    Poweroff (if supported by the hardware)
Win98/ME RUNONCE.EXE -q Reboot (4)  
NT4 See Reboot NT on my Solutions found in alt.msdos.batch page Reboot Reboot immediately
NT4 RUNDLL32 USER32.DLL,ExitWindowsEx
RUNDLL32 USER32.DLL,ExitWindowsEx
Logoff Most systems require the command to be called twice before logging off
NT4+RK
W2K+RK
SHUTDOWN /L /R /T:0 /Y Reboot Immediate shutdown & reboot
NT4+RK
W2K+RK
SHUTDOWN /L /T:10 /Y /C