谢涛

Results 135 comments of 谢涛

## 关于 Search 的(结果集)替换指示符 Z39.50 Search 请求中,SearchRequestInfo 有个 m_lReplaceIndicator 成员,如果它为 true 的话表示检索时候在创建结果集之前,如果发现同名的结果集已经存在,则替换这个结果集。如果它为 false,如果同名结果集已经存在,则要返回出错,错误码为 ``` ``` 目前暂时没有实现这个功能,默认是无论如何都替换。如果要实现这个功能,需要对 dp2kernel 的 Search() API 进行增强,也添加一个这样的 bool 参数。

## 关于 chordInstaller 中 dp2Capo 实例管理界面的一些思考 目前 chordInstaller 在打开 dp2Capo 实例管理对话框的时候,还是传统的做法,即把所有 dp2Capo 实例都停止服务,然后等对话框关闭后自动重新启动所有 dp2Capo 实例。 后面考虑把这个做法改进为,在打开实例管理对话框的过程中,尽可能不要停止 dp2Capo 实例的服务。比如大部分配置操作,只涉及到对 capo.xml 和 config.xml 的修改,只需要在实例管理对话框关闭的时候,将修改涉及到的 dp2Capo 实例重新启动一次即可,修改的参数就兑现了。 但有一些配置修改,是对没有关闭的 dp2Capo 实例发生影响的。比如对 dp2Capo 所连接的 dp2library...

## Z39.50 用量统计 希望增加 Z39.50 用量统计的功能

## 用户名用法 用户名可以直接使用 dp2library 的工作人员账户。例如 `public` 还可以使用读者账户。不过,读者账户名前需要增加一个符号 '~' 以和工作人员账户名相区别。例如 `~R0000001` 读者账户名除了可以使用证条码号以外,还可以使用下列几种形态: 1) 如果以"NB:"开头,表示姓名生日。姓名和生日之间间隔以'|'。姓名必须完整,生日为8字符形式。例如 `~NB:张三|19950101` 2) 如果以"EM:"开头,表示email地址。例如 `~EM:email:[email protected]` 3) 如果以"TP:"开头,表示电话号码。例如 `~TP:13933445106` 4) 如果以"ID:"开头,表示身份证号。例如 `~ID:320923198901142757` 5) 如果以"CN:"开头,表示证件号码。例如 `~CN:C12345`

## 安全性、可靠性测试 * Z39.50 前端请求发送超大包测试。可以用 Initialize() 等任何一种功能来测试 * 一个 Present() 请求返回超多记录,突破 ExceptionalMessageSize 测试

3) 操作历史的每一行的右上角出现一个叉,点了可以删除此行,想法是很好的,还可以再改进一下: 最好是鼠标指针移动到上面的时候,再浮现出叉来,然后鼠标指针可以变为小手,表示这里可以按下。 一般情况下,操作历史因为比较重要,其实是不会用到删除功能的。 由于你的显示方法,最新的显示在最上是可以的。其实我们反过来想,如果这个区域总是保证可见,内容太高了会自动卷滚的话,那么只要保证最新的一行卷滚到可见位置,那么这一行即便排在最下面也是没事的。我这是随便说说,不是要你改的意思。 4) 如果操作出现报错,现在操作历史此行左边会出现一个感叹号图标,提醒操作者注意,但强调程度还不够,可以考虑左侧有一定面积的红色竖条,更醒目一些。 5) 从操作出错情况的操作历史行来看,现在的多栏布局,其中显示出错提示文字的这一栏内容较多,被撑起来较高,而其他栏内容显得单薄。可否改为,其他栏依然是横向排列显示,但出错提示这一栏新占据一行,左右占据通栏?这样应该会更好看一些。可能我还是受到 dp2circulation 快捷出纳窗做法的暗示较多吧 ~

6) “证条码号”这个提示文字左边其实已经有了一个小人头图标;“册条码号”左边也有一个小书本的图标,光是图标已经足够表意了,似乎可以把文字去掉。 7) 在目前界面不支持高速操作的情况下,也就是说当页面正在访问服务器的时候,应该在让页面显示为 disabled 的状态,并且在醒目位置显示转动的轮子之类这样的等待符号,避免用户盲目操作造成问题。 8) dp2circulation 的出纳窗和快捷出纳窗中,TextBox 扫入一个号码后,提交,然后这个 TextBox 内的文字被自动全选,变成蓝色底子。这之后,如果用户再扫入,因为选中的文字会被自动替换,所以不会有功能上的问题。当时这么设计,一方面是考虑残留信息可以提醒用户刚才做过什么操作,另外自动全选对后续操作基本不构成负面影响。但其实这里面隐含一个问题,就是要给用户介绍清楚选中的文字再后面新输入的时候会被自动替换这个小知识。否则会造成烦恼 --- 比如用户不放心会特意去删除以后再输入,或者抱怨为什么开发人员不把用过的文字自动清除。 所以这次开发新的界面,上面问题都值得重新思考一下。我能想到两点意见:第一是,如果要沿用以前的用后不清除文字的做法,要自动选定它,以保持严谨;第二是,其实可以试试用后自动清除的做法。 沿着用后清除,这个思路想一想。如果操作成功,左下方有操作历史,用户忘了刚才做过什么操作,可以去看。如果操作不成功,是不是就不要清除 TextBox 中的文字?这个值得想想。不清除的理由是,可以为后面排除故障后继续操作提供便利,可少输入一次。

这里也吐槽一下“操作历史”这个东西。 dp2circulation 快捷出纳窗,中间是一个 Task List,这里好像是操作历史。但其实右边固定面板区又有一个专门的操作历史,是不清除的,一直会追加显示下去。两者的功能是不同的。由于快捷出纳窗的高并发特性,中间的 Task List 显示的实际上是“正在等待处理的任务”,不一定是完成了的任务,所以不一定是“历史”。可以说是用户需要眼观六路的一种动态显示信息。 另外,中间这个 Task List,当时还有一个设想,是设计成把针对同一读者的多个操作用某种视觉办法聚集在一起显示,让人一看就明白。这个目标没有实现,主要是技术上的某些原因。也计划过用 WPF 的界面重写实现。 所以,对目前 ilovelibrary 这个新界面,我有两个小希望:第一个是操作历史显示部分,可否承担一点同一读者的若干操作视觉上紧密聚集的任务。第二个是将来程序有并发的能力后,那么这里可能会演变为 Task list。第一个希望,其实可以通过横向划线来解决,属于不同读者的两行之间划一条线,就容易看清楚了。第二个就不着急了。

#### 按册显示 请注意给馆员看的表格中,关于图书的信息应该是每册的信息。比如每一册的索取号需要显示出来。 #### 显示索取号 索取号很重要,因为馆员要看到这个号码才能在书库里面定位找到图书。 索取号一般是两行,第一行是分类号。注意和用户交流的时候,用户所说的“分类号”是索取号里面的这个第一行,而不是书目记录中的分类号。 #### 显示馆藏地 或者 按馆藏地筛选 如果图书馆的馆藏地很多,那么还需要显示出馆藏地字符串。否则光凭索取号无法定位图书。不过,实际工作中,可能每个馆藏地的工作人员希望列表中只列出当前自己所在这个地点的所有已到书册,所以馆藏地可能需要成为界面上的一个筛选条件。

要列出当前所有的已经到书的预约册信息,可以参考内务的源代码 ReservationListForm.cs。 原理是,检索预约到书队列库,所有状态不为空的记录。队列记录的 XML 格式需要在本 Issue 里分析一下,便于解释清楚功能该怎么实现。