Wissensinformation Übung Ich melde Zuweisungen 201811528 (Mittwochsgruppe)
- Dieses Repository ist ...
- Probleme, die in der Aufgabe "OPAC" in Wissensinformation erstellt wurden. Übung I.
- Verliehen als Hauptpreis im Unterricht. (2019)
Einführung
Diese Seite ist ein Bericht über das Thema "Erstellen von OPAC" in der " Wissensinformationsübung I", bei der das Spring AB -Modul für Wissensinformationen und Bibliothekswissenschaft eröffnet wird.
Inhalt
- 1. Die URL des OPAC, den Sie gebaut haben
- 2. CGI -Programmquellliste und ihre Beschreibung
- 3.. Beziehung (Tabelle) Struktur und ihre Erklärung
- 4. Ideale Punkte
- 5. Ergebnisse
1. Die URL des OPAC, den Sie gebaut haben
Die Indexseite für das von uns erstellte OPAC -System " Simple OPAC " ist https://cgi.u.tsukuba.ac.jp/~s1811528/opac/index.html .
Nachfolgend finden Sie ein Diagramm, das die hierarchische Struktur unterhalb des OPAC -Verzeichnisses und die Erläuterungen jeder Datei zusammenfasst.
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の雛型▲ Abbildung 1, hierarchische Struktur des OPAC -Systems
2. CGI -Programmquellliste und ihre Beschreibung
Quellliste
Im Folgenden finden Sie eine Liste der Seiten und den Quellcode für das von mir erstellte CGI -Programm.
Search.cgi
Genauigkeit.cgi
Erläuterung
Search.cgi (jede Funktion ist in Def.RB geschrieben)
- MakeWord (CGI)
- Dies ist eine Methode zur Verarbeitung von Daten, die aus index.html abgerufen wurden, um die Trennung von Suchbegriffen zu erleichtern.
- <Field>: <wert> Form
- GSUB (/[ r n]/") entfernt Linienbrüche im variablen Wort
- Delete_if {| i | ...} Löschte und, und oder Nullelemente.
- Der Rückgabewert wird bearbeitet
- Makekeys (Wörter)
- Teilen Sie die von makeword () empfangene Suchanweisung in jedes Schlüsselwort auf, um sie in die SQL -Abfrage zu werfen und in ein Array einzulegen
- Oder, wenn oder kommt, wie ist es so wie es ist
- Wenn Titel: oder Ed: kommt herein, ist es ein Hash von {"title" => "val"} oder ähnlich, fügen Sie ihn ein.
- Wenn kein Feld angegeben ist, fügen Sie es so ein, wie es ist
- Renditen sind Arrays mit Hashs und Saiten
- All_any_search (Schlüssel, DB)
- Führen Sie jede Suche (Suche aus allen Feldern) durch und rufen Sie Daten aus der DB ab
- Der Rückgabewert ist ein zweidimensionales Array, das die NBC (Nationale Bibliographie) der Hit-Daten enthält [[[NBC1], [NBC2], ..., [NBCN]]
- field_search_s (Schlüssel, DB)
- Führt einzelne Suchanfragen nach bestimmten Feldern durch
- Der Rückgabewert ist ein 2D -Array, das NBC (nationale bibliografische Anzahl) von Hit -Daten enthält.
- Andor (Schlüssel, DB)
- Iterieren Sie die von makekeys () empfangenen Werte und fügen Sie die Suchergebnisse in das Array ein, das entsprechend an All_any_search () bzw. All_any_search () übergeben wurde.
- Wenn oder, oder wird übergeben, setzen Sie es so in das Array ein, wie es ist
- Rückgabewerte sind zweidimensionale Arrays, die NBC (National Bibliographic Number) von Hit-Daten enthalten
- Strinterpretation (Schlüssel)
- Interpretiert das OR und und des Rückgabewerts von Andor (Schlüssel, DB), um das endgültige Suchergebnis zu erstellen
- Wenn [datan] [datan+1] folgt, wird die Union ([datan] | [datan+1]) genommen.
- Wenn das nächste oder oder oder nach [datan] kommt, nehmen Sie den nächsten [datan+1] und den nächsten [datan+1] und den Akkumulationssatz ([datan] & [datan+1]).
- Rückgabewerte sind eindimensionales Array
- Retr_hitdata (Hit, DB)
- Holen Sie sich vollständige bibliografische Felddaten von NBC von HIT -bibliografischen Daten mit Strinterpret (Schlüssel).
- Renditen sind die gesamten bibliografischen Trefferdaten
- create_paging_link (Hits, par)
- Seitungslinks für die Pagenationsfunktionalität generieren
- Wenn der Wert von PS (pagessize), der von der Indexseite oder der Suche empfangen wird, ist cgi leer, setzen Sie ihn auf 20.
- P (Seite) ist der Wert der Anzahl der derzeit verfügbaren Seiten
- Weisen Sie HMP die erforderliche Anzahl von Seiten (= Anzahl der Seitenlinks) zu, wobei die Anzahl der Suchvorgänge und PS berücksichtigt werden.
- Wenn p_size = 0, hmp = 0
- Fügen Sie Seitenlinks in Pagelinks ein
- Der Rückgabewert ist der HTML des Seitenlinks in der Tabelle
- create_table_html (Daten, par)
- Formen -Suchergebnisse in die HTML -Tabelle
- Geben Sie jedem Titel einen Link zum Senden von NBC an genaue.cgi
- Bei der Betrachtung von P und PS wird die erforderliche Anweisung aus Daten extrahiert (= retr_hitdata (hit, db))
- Rückgabewert ist die HTML der Tabelle
- rep_hide (per)
- Übernehmen/speichern Sie den Wert zum Nachladen, indem Sie PS ändern
- Betten Sie es in <Eingabe type = "Hidden"> ein.
- Der Rückgabewert ist der HTML von <Eingabe type = "Hidden">, der andere Werte als PS erhalten.
- main () (#main () und der in such.cgi) geschriebene Teil)
- Ausführungsteil jeder Funktion
- DB und CGI geben OPAC.DB als Datenbankobjekt des SQLite -Moduls an und haben CGI -Objekte.
- cgi_values müssen alle Werte mit cgi.instance_variable_get (:@params) haben.
- Beginnen
Rettung Ende vermeidet Fehler, wenn im Suchformular nichts ausgefüllt wird - Hit_Num weist die Anzahl der Treffer zu
- Haben Sie ein Suchwort in Search_display
- Wenn Hit_num 0 ist, wird die Pagenierung und die Ergebnistabelle nicht in der Überschrift angezeigt.
- Ändern Sie das Suchwort zwischen dem Titelelement und <H1 />
- Senden Sie rep_hide, wenn Sie auf "neu laden" klicken (oder mit dem PS -Eingangsformular eingeben).
Genau.cgi (jede Funktion ist in Def.RB geschrieben)
- ISBNTO13 (ISBN10)
- Konvertieren Sie ISBN von 10 bis 13 Ziffern in Pound Opendb
- Rückgabewert ist Zeichenfolge (13 Ziffern)
- field_search_a (Schlüssel, DB)
- Empfangen Sie NBC von Search.cgi, um die gesamten bibliografischen Daten abzurufen
- Rückgabewerte sind Arrays, die alle bibliografischen Daten eines Buches enthalten
- Bibimage (ISBN13, per)
- Ein Buchbild erwerben
- Greifen Sie auf den OpendB -Endpunkt zu und überprüfen Sie, ob es bibliografische Daten gibt (= Bild)
- Wenn JSON NIL ist, passieren Sie 404 Bildanzeige HTML an Bibhash
- Wenn JSON nicht nil ist, übergeben Sie die Kopie -Anzeige HTML an Bibhash
- Der Rückgabewert ist HTML von <img ... />
- main () (der Teil in #main () und der genauen.cgi)
- DB und CGI geben OPAC.DB als Datenbankobjekt des SQLite -Moduls an und haben CGI -Objekte.
- Bibliografische Daten für alle Felder, die aus dem GET -Wert (NBC) von such.cgi mit field_search_a (Schlüssel, DB) [0] bis zur Reihe erhalten wurden
- Zeile [1] .Scan (/[0-9]/). Join.
- Jedes Element wird als Tabelle angezeigt.
3.. Beziehung (Tabelle) Struktur und ihre Erklärung
Struktur
Unten finden Sie die SQL (Data/bib_sche.sql) beim Erstellen von Tabellen Bibdata in OPAC.DB.
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 ); ▲ Abbildung 2, SQL, um Tabelle Bibdata zu erstellen
Erläuterung
Jeder Wert wird erklärt.
- NBC
- Nationale bibliografische Zahl
- Ex) JP20564340
- ISBN
- ISBN -Nummer (10 Ziffern)
- Ex) 4-86004-040-6
- TITEL
- Titel
- Ex) eine Geschichte der Freundschaft zwischen einem Lehrer und einem Schüler
- Auth
- Autor
- Ex) geschrieben von Omori Masao
- Pub
- Veröffentlichung und Verbreitung
- Ex) Tsuchiura Tsukuba Shorin
- Pubdate
- Veröffentlichungsjahr
- Ex) 2004.1
- Ed
- Phys
- SERIE
- Serie
- Ex) Kobunshapaperbacks; 41
- NOTIZ
- Notizen
- Ex) Kolophontitel (typografischer Fehler) Eine Geschichte der Freundschaft zwischen einem Lehrer und einem Schüler
- Titelheuling
- Den Titel lesen
- Ex) Sensei sah Meow
- Autorenhadering
- Lesung des Autors
- Ex) Omori, Masao (Omori, Masao)
- Holdingsrecord
- Identifikationszahl einzelner Materialien
- Ex) JP20564340-01
- Holdphys
- Standortname
- Ex) Afrikanische Union in Richtung des 21. Jahrhunderts
- Holdloc
- Klassifizierungsnummer
- Ex) F9-128
Felder, die mehrere Werte haben könnten, wurden eingefügt, indem die zu eingefügten Werte kombiniert werden.
Ich habe keine Normalisierung durchgeführt, deshalb möchte ich darüber nachdenken.
Da NBC immer einzigartig ist (Titel und Holdloc sind nicht einzigartig), habe ich es als Primärschlüssel angegeben.
4. Ideale Punkte
Unterstützt und/oder suchen
- Und/oder Suchvorgänge können mit dem und/oder Bediener durchgeführt werden.
Wählen/geben Sie die Anzahl der Paging -Elemente ein/geben Sie ein
- Sie können jetzt die Anzahl der Seiten eingeben/auswählen, die mit <Datalist> angezeigt werden. ## Feldspezifizierte Suche im Suchfeld
- Wir haben es jetzt ermöglicht, nach jedem Feld zu suchen.
- Zuerst habe ich nicht darüber nachgedacht, nach Feldern aus dem Formular zu suchen, also dachte ich darüber nach, einen Operator hinzuzufügen, der auf ein bestimmtes Feld wie "Titel: Tsukuba" verweist.
Design
- Insgesamt ist es einfach zu lesen, und das Display bricht nicht, wenn es auf einem Smartphone angezeigt wird.
- Wir haben auch ein Farbschema/eine Farbgröße erstellt, die selbst für Sehbehinderte leicht zu erkennen ist.
Erstellen einer Site -Karte für eine hierarchische Struktur einer Website
- Ich habe Sitemap.xml erstellt.
- Ich las ein Crawler -Buch und fand es zu sagen: "Ich sollte darüber schreiben", also schrieb ich es.
HTML- und CSS -Validierung/Standardisierung
- Da HTML -Dokumente keine grundlegenden Fehler erhalten, wurde die Standardisierung mit dem Validator (HTML/CSS) von W3C durchgeführt, um zu überprüfen, ob Probleme mit Format, Erbschaftsbeziehungen, hierarchische Struktur und ob die HTML -Tags Inhalte enthalten, die in CSS geschrieben werden sollten.
5. Ergebnisse
Erstellen eines serverseitigen Systems
ㅤ Normalerweise sind die Webseiten, die wir sehen, Frontendungen und bestehen aus HTML/CSS/JS. Wir können die Programme oder Systeme auf diesem Server nicht anzeigen. Bei dieser Übung konnten wir beim Erstellen von dynamischen Seiten verstehen, wie sie funktionieren, indem wir die internen Programme erstellen. Wir haben auch unser Wissen in den PHP + MySQL -Klassen, die wir gleichzeitig eingenommen haben, vertieft.
Entwerfen mit Webseitenstilblättern
ㅤ Bis jetzt, als ich anfing, Webseiten zu erstellen, habe ich nicht viel CSS mit Markdown oder Bootstrap geschrieben. Um sich jedoch auf Design zu konzentrieren, schrieb ich von Anfang an CSS. Ich denke, ich habe mit Style Sheets grundlegende Kenntnisse über Webseitendesign erhalten.
Erstellen eines strukturierten Dokuments
ㅤ Ich habe Kenntnisse über das Markup von HTML- und XML -strukturierten Dokumenten gewonnen.
DB -Konstruktion mit SQLite
ㅤ Ich habe MySQL im Grunde genommen in Python und Ruby verwendet, aber dies ist das erste Mal, dass ich SQLite probiert habe. Ich konnte die Unterschiede in Notation, eingebauten Variablen und Einfügungsformaten lernen.
Differenzverwaltung auf Website GitHub
Unterschiede wurden als Auberginen/OPAC verwaltet.