知识信息练习I报告201811528(星期三组)
- 这个存储库是...
- 知识信息练习中的“构建OPAC”任务中创建的问题I。
- 被授予班级大奖。 (2019)
介绍
此页面是关于“知识信息练习I”中“构建OPAC”问题的报告,这是Spring AB模块的开放知识信息和图书馆科学。
内容
- 1。您构建的OPAC的URL
- 2。CGI程序源列表及其描述
- 3。关系(表)结构及其解释
- 4。理想点
- 5。发现
1。您构建的OPAC的URL
我们构建的OPAC系统“简单OPAC ”的索引页是https://cgi.u.tsukuba.ac.jp/~s1811528/opac/index.html 。
下图是OPAC目录下方的层次结构以及每个文件的解释。
W:wwwscgi-binopac > tree /F
フォルダー パスの一覧: ボリューム vol_home01
ボリューム シリアル番号は 000000FB 8082:1532 です
W:.
│ .htaccess...ユーザのサーバ設定ファイル
│ report.html...レポートページ
│ index.html...トップページ
│ sitemap.xml...サイトの構造文書
│ yet_list.html...未実装/実装したい機能のメモ
│
├─.git
│
│(省略)
│
├─data
│ bib_sche.sql...opac.dbスキーマ
│ kakou.rb...jbisc.txtをcsvに成形するプログラム
│ isbn.txt...isbn(10桁)を抽出したもの
│ jbisc.txt...書誌情報の元データ
│ kd.csv...DBにimportできる形式にしたもの
│ opac.db...書誌データベース
│
├─css
│ index.css...index.htmlのCSS
│ search.css...search.cgi
│ accurate.css...accurate.cgi
│ yet_list.css...yet_list.html
│ report.css...report.html
│
├─img
│ icon.png...ページicon
│ notfound.png...書誌画像がnullの時表示される画像
│ requirement.png...要件のスクリーンショット
│
├─cgi
│ accurate.cgi...書誌の詳細表示ページ
│ search.cgi...検索結果一覧ページ
│ def.rb...上記2つのcgi内で用いる関数を集めたもの
│
└─md
yet_list.md...yet_list.htmlの雛型
report.md...report.htmlの雛型▲图1,OPAC系统的分层结构
2。CGI程序源列表及其描述
源列表
以下是我创建的CGI程序的页面和源代码的列表。
解释
search.cgi(每个函数都写在def.rb中)
- makeword(CGI)
- 这是一种处理从index.html检索到的数据的方法,使其更容易分离搜索词。
- <field>:<value>形状
- gsub(/[ r n]/“)消除了变量单词中的线路断裂
- delete_if {| i | ...}删除和 /或null项目。
- 返回值编辑搜索语句
- makekeys(单词)
- 将收到的搜索语句从makeword()拆分到每个关键字中,将其扔进SQL查询并将其插入数组中
- 或者,当或来时,将其插入
- 当标题:或ed:进来时,它是{“ title” =>“ val”}的哈希,或类似的东西,插入它。
- 如果没有指定字段,请按原样插入
- 返回是包含哈希和字符串的阵列
- all_any_search(键,db)
- 进行任何搜索(从所有字段中搜索)并从数据库检索数据
- 返回值是一个二维阵列,其中包含热门数据的NBC(国家参考书目编号)[[NBC1],[NBC2],...,[NBCN]]
- field_search_s(键,db)
- 执行个人搜索指定字段
- 返回值是一个2D阵列,其中包含HIT数据的NBC(国家书目编号)。
- Andor(钥匙,DB)
- 分别迭代从makekeys()中收到的值,然后分别将搜索结果插入适当传递给all_any_search()和all_any_search()的数组中。
- 如果或通过或通过,请按原样插入数组
- 返回值是二维阵列,其中包含NBC(国家书目编号)的命中数据
- strinterpret(键)
- 解释Andor(密钥,数据库)的返回值的OR和和和和和和和和和创建最终搜索结果
- 如果[datan]后面是[datan+1],则采用联合([datan] | [datan+1])。
- 当[Datan]之后的下一个或或或或或或或或或或或以下[Datan+1]和下一个[Datan+1],以及累积集([Datan]&[Datan+1])
- 返回值是一维数组
- ret_hitdata(命中,DB)
- 从NBC中获取完整的书目字段数据,这些数据是使用Strinterpret(键)创建的HIT书目数据
- 回报是整个热门书目数据
- create_paging_link(命中,par)
- 生成媒体功能的页面链接
- 如果从索引页或搜索中收到的PS(PAGESIZE)的值为空,请将其设置为20。
- p(page)是当前可用的页面数量的值
- 考虑到搜索和PS的数量,将所需的页面数(=页面链接数)分配给HMP。
- 如果p_size = 0,则HMP = 0
- 插入页面链接中的pagelinks
- 返回值是表中页面链接的HTML
- create_table_html(数据,PAR)
- 霉菌搜索结果进入HTML表
- 给每个标题一个链接,将NBC发送到准确。
- 考虑p和ps,从数据(= ret_hitdata(hit,db))中提取所需的语句
- 返回值是表的html
- rep_hide(per)
- 通过更改PS接管/保存重新加载的GET值
- 将其嵌入<输入type =“ hidden”>
- 返回值是<输入type =“ hidden”>的HTML,它嵌入了ps以外的其他值。
- main()(#main()和search.cgi中写的部分)
- 执行每个功能的一部分
- DB和CGI将OPAC.DB指定为SQLite模块的数据库对象,并具有CGI对象。
- CGI_VALUE必须使用cgi.instance_variable_get(:@params)具有所有获取值
- 开始
救援当搜索表中什么都没填写时,End会避免错误 - hit_num分配了命中次数
- 在search_display中有一个搜索字
- 如果HIT_NUM为0,则媒体和结果表将不会在标题中显示。
- 在标题元素和<H1 />之间更改搜索字
- 单击“重新加载”时发送rep_hide(或使用PS输入表单输入)。
cucicate.cgi(每个函数都写在def.rb中)
- ISBNTO13(ISBN10)
- 将ISBN从10个数字转换为磅
- 返回值是字符串(13位数字)
- field_search_a(键,db)
- 从search.cgi接收NBC以检索整个书目数据
- 返回值是包含一本书的所有书目数据的数组
- bibimage(isbn13,per)
- 获取书籍图像
- 访问OPENDB端点,并检查是否有书目数据(=图像)
- 如果JSON为零,请通过404图像显示HTML到Bibhash
- 如果json不是零,请将副本显示html传递给bibhash
- 返回值是<img ... />的html
- main()(用# -main()和准确的cgi编写的部分)
- DB和CGI将OPAC.DB指定为SQLite模块的数据库对象,并具有CGI对象。
- 从search.cgi带有field_search_a(key,db)[0]从search.cgi传递的所有字段的参考书目数据(nbc)[0]
- 行[1] .scan(/[0-9]/)。加入[0,10],仅从10个数字开始就取上ISBN字段中的数字,并且将其与行一起传递给ISBNTO13,然后将其传递给ISBNTO13与行一起使用,并且称为图像显示HTML。
- 每个项目都显示为表。
3。关系(表)结构及其解释
结构
以下是在OPAC.DB中创建表Bibdata时的SQL(data/bib_sche.sql)。
CREATE TABLE bibdata (
NBC TEXT primary key ,
ISBN TEXT ,
TITLE TEXT ,
AUTH TEXT ,
PUB TEXT ,
PUBDATE TEXT ,
ED TEXT ,
PHYS TEXT ,
SERIES TEXT ,
NOTE TEXT ,
TITLEHEADING TEXT ,
AUTHORHEADING TEXT ,
HOLDINGSRECORD TEXT ,
HOLDINGPHYS TEXT ,
HOLDINGLOC TEXT ); ▲图2,SQL创建表Bibdata
解释
每个值都被解释。
- NBC
- ISBN
- ISBN编号(10位数字)
- 例如)4-86004-040-6
- 标题
- auth
- 酒吧
- 出版和发行
- 例如)tsuchiura tsukuba shorin
- PubDate
- ed
- 物理
- 系列
- 系列
- 例如)kobunshapaperbacks; 41
- 笔记
- 笔记
- 例如)Colophon标题(印刷错误)老师与学生之间的友谊故事
- 标题头
- 作者头
- 作者的阅读
- ex)Masao的Omori(Omori,Masao)
- HoldingsRecord
- 抱着
- Holdingloc
通过组合要插入的值,可以插入可能具有多个值的字段。
我没有进行任何标准化,所以我想对此进行反思。
由于NBC始终是唯一的(标题和HoldingLoc不是唯一的),因此我将其指定为主要键。
4。理想点
支持和/或搜索
选择/输入分页项目的数量
- 现在,您可以输入/选择使用<Datalist>显示的页面数。 ##搜索框中的现场指定搜索
- 我们现在使搜索每个字段成为可能。
- 起初,我没有考虑从表格中搜索字段,因此我考虑添加操作员指向特定字段,例如“标题:tsukuba”。
设计
- 总体而言,它易于阅读,即使在智能手机上观看时,显示器也不会破裂。
- 我们还制作了一个配色方案/尺寸,即使对于视力障碍的人来说也很容易看到。
为站点的层次结构创建站点地图
- 我创建了SiteMap.xml。
- 我正在读一本爬行者书,发现“我应该写关于它”,所以我写了它。
HTML和CSS验证/标准化
- 由于HTML文档没有获得基本错误,因此使用W3C的验证器(HTML/CSS)执行标准化,以检查格式,继承关系,层次结构以及HTML标签是否包含任何应包含任何应写入CSS中的内容的问题。
5。发现
构建服务器端系统
ㅤ通常,我们看到的网页是前端,由HTML/CSS/JS组成。我们无法在该服务器上查看程序或系统。在此练习中,创建动态页面时,我们能够通过创建内部程序来了解它们的工作方式。我们还加深了同时参加的PHP + MySQL课程的知识。
使用网页样式表设计
ㅤ到目前为止,当我开始创建网页时,我没有使用Markdown或Bootstrap编写太多CSS。但是,为了专注于设计,我从一开始就写了CSS。我认为我使用样式表获得了网页设计的基本知识。
创建结构化文档
ㅤ我获得了有关HTML和XML结构化文档的标记的知识。
使用SQLite的DB构造
ㅤ我基本上在Python和Ruby中使用MySQL,但这是我第一次尝试SQLite。我能够学习符号,内置变量和插入格式的差异。
网站上的差异管理
差异作为茄子/opac管理。