知識信息練習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管理。