高山流水
msgbartop
动之则分,静之则合,无过不及,随曲就伸。
msgbarbottom

12 四 07 Millennium系统OPAC整合之三:构建自己的WebBridge

Millennium系统的OPAC中,有一个产品叫WebBridge,通过它,读者可以在查阅相关书目信息的同时,以OPENURL的方式在各类开放数据库中获取相关全文、电子图书、搜索引擎结果及其他相关信息。如下图所示(点击放大):

(应要求,不得放截图,大家要看自己找去~嘿嘿,若被授权,可email偶)

示例用的是香港大学的OPAC系统,大家可以通过
http://library.hku.hk/ 体验一下。
不可否认,WebBridge是个好东西,但是好东西往往意味着高价钱,(应要求,此处省略若干字…..若被授权,请EMAIL偶)。有句俗话叫癞蛤蟆想吃天鹅肉,小钟就像那见过了天鹅,却只能流着口水的癞蛤蟆,始终惦记在心里啊~
所谓庸人自扰,相思成病,看着好东西却得不到是很伤的,所以小钟无奈之下退而求其次——天鹅肉吃不到,但鸭子咱会养,咱整个鸭子试试!
言归正传,分析一下这个WebBridge,关键在于其针对读者的检索结果,在结果页面上提供了一个或若干个相关参数,通过这些参数,可以构建出相应的URL,从而提交到各类开放数据库。
就这么个简单的东西。
那么小钟要做的事情就两点:
一、找出一个有用的参数。这个参数可以是检索词,题名或者ISBN号等等。
二、找出一个可以修改检索结果页面的地方,让检索结果页面可以显示部分自定义的内容。
而这两点其实都不难。
一、(应要求,在此省略字数400多字,若被授权并需进一步交流,请email小钟)

二、对页面进行修改,这就更简单了,只要能输入HTML的地方,就可以任意嵌入我们想要嵌入的东西,方法有很多,比如,嵌入一个IFRAME、嵌入一个DIV、嵌入一段脚本……

具体实现过程如下:

一、(应要求,此处省略300多字,若被授权并需进一步交流,请email小钟)

二、提供一个webbridge.asp网页,该网页用于接收参数并实现相关功能,例如:

dim para ‘参数

para=trim(request(”para”))

if IsNumeric(replace(para,”x”,”"))=true then
‘如果传入的是ISBN号

response.Write(”随书光盘:“)
‘查找随书光盘信息

….

if
…. then

如有光盘可请求上网


else

下载光盘

end
if

….

response.Write(”电子图书:“)
‘查找电子图书

超星数字图书

方正电子图书

书生电子图书

NetLibrary

GOOGLE查找电子图书

response.Write(”电子期刊:“) ‘查找期刊

….

else ‘如果传入的是检索词

….

end if

效果如下图(点击放大):

(应要求,不得随便截图,自己看去,若被授权,可EMAIL偶)

读者点击下载光盘,可以下载《Thinking in
java》这本书的随书光盘,点击GOOGLE查找免费电子图书,可以提交检索到GOOGLE图书等等。

当然,由于能用的参数有限,也没有用到AJAX,目前大概也只能做到这个程度,聊胜于无吧。

其实,对于所需的各类参数,即使Millennium的OPAC系统一个参数都不提供,我们也完全可以使用javascript
+
Dom,进行用户页面分析获得,进而通过AJAX,与各类数据库进行无刷新操作!

而这就是小钟下一步要去做的事情:
一个基于JAVA+AJAX的,独立的、开源的书目TAGGING系统,敬请期待。

一点补充:在上面的webbridge.asp文件中,仅仅通过判断传入的参数是否为数字而确定是不是ISBN号存在一些bug,建议根据来源页面判断传入的参数是检索词还是ISBN号。在ASP中,判断来源页面的环境变量为HTTP_REFERER

Tags: , , ,

23 三 07 Millennium系统OPAC整合之二:如何禁用读者借阅信息登录中的PIN

OPAC和网站整合任务之二中,要实现读者登录了网站后,可以直接查看自己的借阅信息,而无需登录OPAC系统。那么就要求网站自动帮助读者完成这一登录过程。
Millennium系统默认读者通过OPAC查询自己的借阅信息时,需要输入姓名、bcode(校园卡号)和PIN进行登录。用户的姓名、bcode都可以直接从网站用户数据库中获取,但PIN就比较讨厌。我们尝试采用对付ILAS的办法对付它——即全部用户指定PIN(例如999),从而绕过它——但Millennium系统不买帐,必须要在web客户端进行验证后才能确定,这显然是不可行的。
所以最好能够禁用它。
网上看了一下其他使用Millennium系统的图书馆的OPAC,打电话咨询了几个馆,都不知道在哪里设置,设置了的也说是公司帮忙设置的。呵呵,看来香港同行所说的“如果能用好Millennium系统一半的功能,就很不错了”并不假。
无奈之下,系统管理员赵老师开始截图,准备向公司寻求帮助了,但自己总觉得既然可以设置的,那么就应该找得到它,再次琢磨web option,发现禁用PIN这类的功能,涉及到的不仅仅是OPAC页面,而是关乎整个系统。思路有了后,马上通过系统选项进去查看相关内容,果然是顺藤摸瓜,爽!
相关信息如下,希望能给使用这一系统的朋友们一点帮助:)
(应要求,此处省略具体实现过程,100多字,若被授权并需要进一步交流,请email小钟)

。。。。。。
将此选项改为NO即可。

Tags: , ,

22 三 07 Millennium系统OPAC整合之一:将字符转换成unicode的脚本

这段时间赶着做Millennium系统的OPAC整合,已经七七八八,实在是忙得够呛。

对于此次新系统的OPAC整合工作,虽然受Millennium系统本身的限制甚多,我还是想做好一些,希望能能按照标准的XHTML来编写网页文件,以方便开展下一步的用户自定义模块工作;希望能实现心中的关于用户检索词热点记录系统、关于书目TAGGING系统的一些设想;希望能做出一两个可轻松部署的,独立于网站及自动化系统之外的开源模块。当然这些希望的实现,可能一两个月,也可能半年一年。毕竟Millennium系统从招标到安装,从培训到测试,我都没有接触,现在临阵磨枪,有点压力;另外,工作也不能只做自己感兴趣的东西,有些不感兴趣的事情,也要认真做好。

没太多思路写博客,只能将上午的工作记录一下,都是些细节的东西,不过也耗费了些时间,忽然发现当自己没有状态的时候,写程序真是痛苦不已。

呵呵,废话就不说了,讲讲这两天做的事情。此次OPAC整合,任务很简单——一是实现网站首页提交检索,返回检索结果;二是实现用户登录网站后,可直接查看借阅信息及进行续借预约等操作,无需二次登录;三是把显示页面改一下,以符合网站的风格。至于上面所提到的希望,则是我感兴趣的东西。当务之急,当然是完成任务先。
总的来说,进展还算顺利,但今天早上碰到了编码问题,却也让我着急了一阵。当然,解决方案还是有的,但总觉得不是我想要的效果,不过也只能带点遗憾匆匆上马。问题是这样的:

Millennium系统的webopac模块采用Unicode进行编码,而我们的网站采用的字符集是gb2312(痛哭啊,刚开始做网站的时候还年轻,没想到那么多……),所以,当我们想从网站提交检索词到OPAC系统时,由于编码不同,在OPAC中显示为乱码,检索不能正常进行,同样的问题也出现在用户从网站登录系统的脚本中。因此,必须将网站提交的字符串进行编码,才能提交给Millennium OPAC系统。

主要是用到了javascript的encodeURI()函数将提交字符编码。

<script
language=”javascript”>

<!–

function opac()

{

var t=”";

var s=”";

t=document.all.t.value;

s=document.all.s.value;

s=encodeURI(s);

s=”http://202.116.13.244/search*chx/a?searchtype=”+t+”&searcharg=”+rs+”&searchscope=1″;

window.location.href=rs;

}

–>

</script>

<select
name=”t” id=”t” style=”width: 80%”>

<option value=”X” >关键词</option>

<option value=”t”
selected=”selected”>题名</option>

<option value=”a”>责任者</option>

<option value=”i”>ISBN</option>

<option value=”d”>主题</option>

<option value=”c”>索书号</option>

</select>

<input name=”s” id=”s” style=”width: 80%” onFocus=this.select()
onMouseOver=this.focus() value=”请输入检索词” size=”20″
onKeyPress=”if(event.keyCode==13)
document.all.alink.click();”>

<a href=”#” id=”alink” onClick=”javascript:opac();”><img
src=”img/buttom.gif” width=”65″ height=”18″
border=”0″></a>

初衷是用脚本将检索词编码后,再重新赋值给表单项,然后通过表单提交检索,但实践证明编码后的检索词,浏览器会再次编码,OPAC系统同样无法接收正确的检索词;那么只能直接提交正确的URL至OPAC系统。脚本中没有用window.open(),进行提交,因为用户可能拦截弹出窗口,所以用上了window.location.href,不过缺点之一是在当前窗口打开,不是很好,其次是不能使用form,用户输完检索词后直接回车没有提交反应,所以针对检索图标按钮作了个判断,如果用户在文本框中回车则点击提交。任务之一实现了,不过感觉怪怪的:(
任务之二中,解决方式和ILAS同出一辙,思路都是从网站中得到用户账户信息,再通过表单提交到系统,从而通过其验证。按道理来说,Millennium系统应该有更好的方式选择,可惜在网上能检索到的信息太少,也只能这么个样子将就了。
任务之三倒是做了点有意思的事情,大量的采用DIV进行布局,加上CSS,感觉很是美妙,呵呵~先打个基础,下一步的拖曳、自定义显示,就从这里出发了~
其实所做的是个小事情,但正因为小,我几乎没能google或者baidu到什么有用的关于Millennium
OPAC系统整合资料,也只能到各个用此系统的图书馆看看,Millenium系统帮助全英文,在OPAC方面的描述也不是很清晰,对我来说,非常不友好。

希望能得到高人的指点,一是如何更好的解决这个编码问题,二是在哪里能找到Millennium系统的web
opt设置方面的清晰的参考。

希望接下来,能有之二之三。

Tags: , , ,

15 三 07 科学神秘主义惊现暨大图书馆网站!!!

话说领导的报告提及网站,于是小钟就准备整理一些网站的统计数据作说明。一如既往地连接进入数据库,噼里啪啦输入一段用来从日志表中按月份统计网站首页的登录人数的SQL语句:

select to_char(登录时间,’yyyy-mm’)
month,count(*) vistcount from 日志表 where 访问对象=首页 group
by to_char(登录时间,’yyyy-mm’);

小钟端起破茶杯,正要喝下一口劣质铁观音时,突然,运行结果出现了!!!!!!!!!!

……

2006-12
103704

2007-01
82621

2007-02
25283

2007-03
49003

2007-06
3

注意上面红色的记录,2007年6月还没到,已经有三次访问了,哈哈,科学神秘主义事件!未来人出现了!

真是个不合格的网管,当我看到这个数据时,第一反应居然真的是好玩,未来人出现了,第二反应才是网站被黑了……

呵呵,既然反应网站被黑了,那么还是要表示一下关注的:

select * from 日志表 where
to_char(登录时间,’yyyy-mm’) = ‘2007-06′;

——– —– ———————— ———-
————

1666288    资源库
12-6月
-07   218.192.***.***

1666289
首页 12-6月
-07   218.192.***.***

1666290    资源库
12-6月
-07   222.200.***.***

1666291    资源库
12-6月
-07   218.192.***.***

1666292    资源库
12-6月
-07   218.192.***.***

1666293     首页
12-6月
-07   202.116.***.***

1666294     评论 12-6月
-07   222.200.***.***

1666295    资源库
12-6月
-07   218.192.***.***

1666296     首页
12-6月
-07   202.116.***.***

——– —– ———————— ———-
————

共有9条2007年6月份的网站操作记录,而且均为2007年6月12日这一天,由于ID连续,那么应该是较短的时间内的发生的,于是进一步查看具体时间,同时把前后的记录取出来进行对比:

alter session set
nls_date_format=’yyyy-mm-dd hh24:mi:ss’;

select * from 日志表 where ID号 between 1666286
and 1666298;
——– —–
———————— ———- —————

1666286
资源库   2006-06-12
16:02:19    218.192.***.***

1666287     首页
2006-06-12
16:02:23    218.192.***.***

1666288
资源库   2007-06-12
16:02:01    218.192.***.***

1666289     首页
2007-06-12
16:02:03    218.192.***.***

1666290
资源库   2007-06-12
16:02:03    222.200.***.***

1666291
资源库   2007-06-12
16:02:04    218.192.***.***

1666292
资源库   2007-06-12
16:02:07    218.192.***.***

1666293     首页
2007-06-12
16:02:07    202.116.***.***

1666294
评论   2007-06-12
16:02:09    222.200.***.***

1666295
资源库   2007-06-12
16:02:10    218.192.***.***

1666296     首页
2007-06-12
16:02:11    202.116.***.***

1666297
资源库   2006-06-12
16:02:15    218.192.***.***

1666298
资源库   2006-06-12
16:02:20    202.116.***.***

——– —–
———————— ———-
—————

看了上面的结果,事情初步明了,所有异常的记录都发生在16:00:01至16:00:11这十秒钟之间,不会是被黑,那么究竟是什么原因造成这一异常呢?
想到进一步查看系统日志,结果才发现该段时间的日志已经因空间问题清除了……

那么真的是科学神秘事件吗?
哈哈,当然不是啦~要是电脑可以这么随便蹦一点异常出来,那么帮我把银行里面的存款也蹦一下多好啊~

和同事小徐[注:暨大图书馆技术部真正的牛人,超级纯情小男生~]讨论了一下,觉得应该是在测试服务器时间的时候,误用了date命令所致,呵呵,至此,科学神秘主义事件终了!

Tags: ,

01 三 07 javascript和vbscript脚本帮助文件

下载地址:
javascript 5
语言参考
vbscript 5.5
语言参考

Tags: , ,