Exercice d'information sur les connaissances I Signaler l'affectation 201811528 (Mercredi Group)
- Ce référentiel est ...
- Problèmes créés dans la tâche "Building OPAC" dans l'exercice d'information sur les connaissances I.
- Récompensé comme grand prix en classe. (2019)
Introduction
Cette page est un rapport sur la question de "Building OPAC" dans " Knowledge Information Exercise I", qui est l'ouverture du module Spring AB pour les informations sur les connaissances et la science des bibliothèques.
Contenu
- 1. L'URL de l'OPAC que vous avez construit
- 2. Liste des sources du programme CGI et leur description
- 3. Structure de la relation (tableau) et son explication
- 4. Points idéaux
- 5. Résultats
1. L'URL de l'OPAC que vous avez construit
La page d'index pour le système OPAC " Simple OPAC " que nous avons construit est https://cgi.u.tsukuba.ac.jp/~s1811528/opac/index.html .
Vous trouverez ci-dessous un diagramme qui résume la structure hiérarchique sous le répertoire OPAC et les explications de chaque fichier .
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の雛型▲ Figure 1, Structure hiérarchique du système OPAC
2. Liste des sources du programme CGI et leur description
Liste de sources
Vous trouverez ci-dessous une liste des pages et du code source du programme CGI que j'ai créé.
explication
search.cgi (chaque fonction est écrite en def.rb)
- Makeword (CGI)
- Il s'agit d'une méthode de traitement des données récupérées à partir d'index.html pour faciliter la séparation des termes de recherche.
- <Field>: <value> Forme
- gsub (/ [ r n] / ") supprime les ruptures de ligne dans le mot variable
- Delete_if {| i | ...} supprime et, et ou les éléments nuls.
- La valeur de retour est éditée instruction de recherche
- Makekeys (mots)
- Divisez l'instruction de recherche reçue de makeword () dans chaque mot-clé pour le jeter dans la requête SQL et l'insérer dans un tableau
- Ou, quand ou vient, insérez-le tel quel
- Lorsque le titre: ou ED: vient, c'est un hachage de {"title" => "val"} ou quelque chose de similaire, insérez-le.
- S'il n'y a pas de champ spécifié, insérez-le tel quel
- Les retours sont des tableaux contenant des hachages et des chaînes
- all_any_search (key, db)
- Effectuer une recherche (recherche à partir de tous les champs) et récupérer les données de la base de données
- La valeur de retour est un tableau bidimensionnel contenant le NBC (numéro bibliographique national) des données HIT [[NBC1], [NBC2], ..., [NBCN]]
- field_search_s (key, db)
- Effectue des recherches individuelles pour des champs spécifiés
- La valeur de retour est un tableau 2D contenant NBC (numéro bibliographique national) des données de vie.
- Andor (Keys, db)
- Itérer les valeurs reçues de Makekeys () et insérer les résultats de recherche dans le tableau adapté de manière appropriée à all_any_search () et all_any_search () respectivement.
- Si ou, ou est passé, insérez-le dans le tableau tel quel
- Les valeurs de retour sont des tableaux bidimensionnels contenant NBC (numéro bibliographique national) de données hit
- Striterprefre (Keys)
- Interprète la OR et et de la valeur de retour d'Andor (Keys, DB) pour créer le résultat de la recherche final
- Si [datan] est suivi de [datan + 1], alors le syndicat ([datan] | [datan + 1]) est pris.
- Lorsque le prochain ou ou ou ou vient après [datan], prenez le suivant [datan + 1] et le suivant [datan + 1], et l'ensemble d'accumulation ([datan] & [datan + 1])
- Les valeurs de retour sont un tableau unidimensionnel
- ret_hitdata (hit, db)
- Obtenez des données complètes sur le terrain bibliographique de NBC de données bibliographiques à succès créées avec SterTerprefre (Keys)
- Les rendements sont l'ensemble des données bibliographiques à succès
- create_paging_link (Hits, par)
- Génération de liens de page pour la fonctionnalité de pagenation
- Si la valeur de PS (pages) reçue de la page d'index ou Search.cgi est vide, définissez-la sur 20.
- P (page) est la valeur du nombre de pages actuellement disponibles
- Attribuez le nombre requis de pages (= nombre de liens de page) à HMP, en tenant compte du nombre de recherches et de ps.
- Si p_size = 0, hmp = 0
- Insérer des liens de page dans PageLinks
- La valeur de retour est le HTML du lien de la page dans le tableau
- CREATE_TABLE_HTML (DATA, PAR)
- Résultats de recherche de moisissure dans la table HTML
- Donnez à chaque titre un lien pour envoyer NBC à précis.cgi
- Compte tenu de P et PS, l'instruction requise est extraite des données (= RetT_HitData (hit, db))
- La valeur de retour est HTML de la table
- rep_hide (par)
- Prenez / enregistrez la valeur de get pour le rechargement en changeant PS
- Intégrer dans <input type = "Hidden">
- La valeur de retour est le html de <input type = "Hidden">, qui incorpore obtient des valeurs autres que ps.
- main () (# main () et la pièce écrite dans search.cgi)
- Partie d'exécution de chaque fonction
- DB et CGI spécifient OPAC.DB comme objet de base de données du module SQLite et ont des objets CGI.
- cgi_values doit avoir toutes des valeurs en utilisant cgi.instance_variable_get (: @ params)
- Commencer
sauvetage La fin évite les erreurs lorsque rien n'est rempli dans le formulaire de recherche - hit_num attribue le nombre de coups
- Avoir un mot de recherche dans Search_Display
- Si hit_num est 0, la table de pagenation et de résultat ne sera pas affichée dans la cap.
- Modifier le mot de recherche entre l'élément de titre et <h1 />
- Envoyez Rep_Hide lorsque vous cliquez sur "Recharger" (ou entrez en utilisant le formulaire d'entrée PS).
Précis.cgi (chaque fonction est écrite en def.rb)
- ISBNTO13 (ISBN10)
- Convertir ISBN de 10 à 13 chiffres à Pound OpenDB
- La valeur de retour est une chaîne (13 chiffres)
- field_search_a (clé, db)
- Recevez NBC de Search.cgi pour récupérer l'intégralité des données bibliographiques
- Les valeurs de retour sont des tableaux contenant toutes les données bibliographiques d'un livre
- Bibimage (ISBN13, PER)
- Acquérir une image de livre
- Accédez au point de terminaison OpenDB et vérifiez s'il y a des données bibliographiques (= image)
- Si JSON est nul, passez 404 Affichage d'image HTML à Bibhash
- Si JSON n'est pas nulle, passez l'affichage de copie HTML à Bibhash
- La valeur de retour est HTML de <img ... />
- main () (la pièce écrite dans #main () et le précis.cgi)
- DB et CGI spécifient OPAC.DB comme objet de base de données du module SQLite et ont des objets CGI.
- Les données bibliographiques pour tous les champs obtenues à partir de la valeur GET (NBC) sont passées de Search.cgi avec Field_Search_A (Key, DB) [0] à Row
- Row [1] .Scan (/ [0-9] /). JOIN [0,10], seul le numéro dans le champ ISBN est pris à partir du début de 10 chiffres, et il est transmis à ISBnto13 avec Row, et il est transmis à ISBnto13 avec Row, et il est appelé Image Display Html.
- Chaque élément est affiché sous forme de table.
3. Structure de la relation (tableau) et son explication
structure
Vous trouverez ci-dessous le SQL (DATA / BIB_SCHE.SQL) lors de la création de Table Bibdata dans 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 ); ▲ Figure 2, SQL pour créer des bibdata de table
explication
Chaque valeur est expliquée.
- NBC
- Numéro bibliographique national
- ex) JP20564340
- ISBN
- Numéro ISBN (10 chiffres)
- Ex) 4-86004-040-6
- TITRE
- titre
- Ex) une histoire d'amitié entre un enseignant et un élève
- Authentification
- auteur
- ex) Écrit par Omori Masao
- PUB
- Publication et distribution
- ex) tsuchiura tsukuba shorin
- Pubdate
- Année de publication
- Ex) 2004.1
- Élégant
- Édition
- ex) 1ère révision
- Chèque
- formulaire
- ex) 248p; 19cm
- SÉRIE
- série
- ex) Kobunshapaperbacks; 41
- NOTE
- Notes
- Ex) titre de colophon (erreur typographique) Une histoire d'amitié entre un enseignant et un élève
- Tête de titre
- Lire le titre
- Ex) Sensei a vu le miaule
- Auteur
- Lecture de l'auteur
- ex) Omori, Masao (Omori, Masao)
- HoldingsRecord
- Nombre d'identification de matériaux individuels
- Ex) JP20564340-01
- Phys
- Nom de lieu
- ex) Union africaine se dirigeant vers le 21e siècle
- Holdingloc
- Numéro de classification
- ex) F9-128
Les champs qui pourraient avoir plusieurs valeurs ont été insérés en combinant les valeurs à insérer.
Je n'ai fait aucune normalisation, donc j'aimerais y réfléchir.
Étant donné que NBC est toujours unique (le titre et HoldingLoc ne sont pas uniques), je l'ai spécifié comme clé principale.
4. Points idéaux
Supports et / ou recherche
- Et / ou les recherches peuvent être effectuées à l'aide de l'opérateur et / ou de l'opérateur.
Sélectionner / saisir le nombre d'éléments de pagination
- Vous pouvez désormais saisir / sélectionner le nombre de pages affichées à l'aide de <datalist>. ## Recherche spécifiée sur le terrain dans la zone de recherche
- Nous avons maintenant permis de rechercher chaque champ.
- Au début, je n'ai pas pensé à rechercher des champs du formulaire, alors j'ai pensé à ajouter un opérateur pour pointer un champ spécifique, tel que "Title: Tsukuba".
conception
- Dans l'ensemble, il est facile à lire et l'écran ne se casse pas même lorsqu'il est visualisé sur un smartphone.
- Nous avons également fait une palette de couleurs / taille qui est facile à voir même pour les personnes atteintes de troubles visuellement.
Création d'un site pour une structure hiérarchique d'un site
- J'ai créé SiteMap.xml.
- Je lisais un livre de chenilles et je l'ai trouvé "je devrais écrire à ce sujet", alors je l'ai écrit.
Validation / normalisation HTML et CSS
- Étant donné que les documents HTML n'obtiennent pas d'erreurs de base, la normalisation a été réalisée à l'aide du validateur de W3C (HTML / CSS) pour vérifier s'il y a des problèmes de format, de relations successives, de structure hiérarchique et si les balises HTML contiennent un contenu qui doit être écrit en CSS.
5. Résultats
Construire un système côté serveur
ㅤ Habituellement, les pages Web que nous voyons sont frontales et se composent de HTML / CSS / JS. Nous ne pouvons pas afficher les programmes ou les systèmes de ce serveur. Dans cet exercice, lors de la création de pages dynamiques, nous avons pu comprendre comment ils fonctionnent en créant les programmes internes. Nous avons également approfondi nos connaissances dans les classes PHP + MySQL que nous suivions en même temps.
Conception à l'aide de feuilles de style de page Web
ㅤ Jusqu'à présent, lorsque j'ai commencé à créer des pages Web, je n'ai pas écrit beaucoup de CSS en utilisant Markdown ou Bootstrap. Cependant, pour me concentrer sur le design, j'ai écrit CSS depuis le début. Je pense que j'ai acquis des connaissances de base de la conception de pages Web à l'aide de feuilles de style.
Création d'un document structuré
ㅤ J'ai acquis des connaissances sur le balisage des documents structurés HTML et XML.
Construction DB à l'aide de SQLite
ㅤ J'utilise MySQL essentiellement dans Python et Ruby, mais c'est la première fois que j'essaie SQLite. J'ai pu apprendre les différences de notation, les variables intégrées et les formats d'insertion.
Gestion de différence sur le site Web github
Les différences ont été gérées comme des aubergines / OPAC.