تمرين معلومات المعرفة أنا أبلغ عن تعيين 201811528 (مجموعة الأربعاء)
- هذا المستودع ...
- القضايا التي تم إنشاؤها في مهمة "بناء OPAC" في تمرين معلومات المعرفة I.
- منحت الجائزة الكبرى في الفصل. (2019)
مقدمة
هذه الصفحة هي تقرير عن مسألة "بناء OPAC" في " تمرين معلومات المعرفة I" ، وهو افتتاح وحدة الربيع AB لمعلومات المعرفة وعلوم المكتبات.
محتويات
- 1. عنوان URL من OPAC الذي قمت ببنائه
- 2. قائمة مصدر برنامج CGI ووصفها
- 3. هيكل العلاقة (الجدول) وتفسيره
- 4. النقاط المثالية
- 5. النتائج
1. عنوان URL من OPAC الذي قمت ببنائه
صفحة الفهرس لنظام 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 | ...} حذف و ، أو عناصر فارغة.
- قيمة الإرجاع عبارة عن بيان بحث تم تحريره
- Makekeys (كلمات)
- اقسم بيان البحث الذي تم استلامه من MakeWord () إلى كل كلمة رئيسية لرميها في استعلام SQL وإدخاله في صفيف
- أو عندما أو يأتي ، أدخله كما هو
- عندما العنوان: أو ed: يأتي ، فهو عبارة عن تجزئة من {"title" => "val"} أو شيء مشابه ، أدخله.
- إذا لم يكن هناك حقل محدد ، أدخله كما هو
- العوائد هي صفائف تحتوي على علامات التجزئة والسلاسل
- all_any_search (مفتاح ، ديسيبل)
- قم بأي بحث (بحث من جميع الحقول) واسترداد البيانات من DB
- قيمة الإرجاع عبارة عن صفيف ثنائي الأبعاد يحتوي على NBC (الرقم الببليوغرافي الوطني) لبيانات HIT [[NBC1] ، [NBC2] ، ... ، [NBCN]]
- field_search_s (المفتاح ، ديسيبل)
- يؤدي عمليات البحث الفردية عن الحقول المحددة
- قيمة الإرجاع عبارة عن صفيف ثنائي الأبعاد يحتوي على NBC (الرقم الوطني للببليوغرافيا) لبيانات HIT.
- Andor (Keys ، DB)
- قم بتكرار القيم المستلمة من Makekeys () وإدراج نتائج البحث في الصفيف الذي تم تمريره بشكل مناسب إلى all_any_search () و all_any_search () على التوالي.
- إذا أو ، أو تم تمريره ، أدخله في الصفيف كما هو
- قيم العائد هي صفائف ثنائية الأبعاد تحتوي
- Strinterpret (المفاتيح)
- يفسر أو و والقيمة الإرجاع لـ Andor (Keys ، DB) لإنشاء نتيجة البحث النهائي
- إذا تم اتباع [datan] [datan+1] ، يتم أخذ الاتحاد ([datan] | [datan+1]).
- عندما يكون التالي أو أو أو يأتي بعد [datan] ، خذ التالي [datan+1] والآخر [datan+1] ، ومجموعة التراكم ([datan] و [datan+1])
- قيم الإرجاع صفيف أحادي البعد
- retr_hitdata (ضرب ، ديسيبل)
- احصل على بيانات الحقل الببليوغرافي الكامل من NBC من بيانات HIT Bibliographic التي تم إنشاؤها باستخدام StrinterPret (KEYS)
- العوائد هي بيانات الببليوغرافيا الكاملة
- create_paging_link (Hits ، par)
- روابط صفحة توليد وظائف الترميز
- إذا كانت قيمة PS (Pagesize) المستلمة من صفحة الفهرس أو Search.cgi فارغة ، فقم بتعيينها على 20.
- P (الصفحة) هي قيمة عدد الصفحات المتاحة حاليًا
- قم بتعيين العدد المطلوب للصفحات (= عدد روابط الصفحة) إلى HMP ، مع مراعاة عدد عمليات البحث و PS.
- إذا p_size = 0 ، hmp = 0
- إدراج روابط صفحة في Pagelinks
- قيمة الإرجاع هي HTML من رابط الصفحة في الجدول
- create_table_html (البيانات ، par)
- نتائج بحث العفن في جدول HTML
- امنح كل عنوان رابطًا لإرسال NBC إلى Accurate.cgi
- بالنظر إلى P و PS ، يتم استخراج البيان المطلوب من البيانات (= Retr_hitdata (HIT ، DB))
- قيمة الإرجاع هي HTML للجدول
- rep_hide (لكل)
- استحوذ على/حفظ قيمة الحصول على إعادة التحميل عن طريق تغيير PS
- قم بتضمينه في <type type = "hidden">
- قيمة الإرجاع هي HTML لـ <input type = "hidden"> ، والتي تتضمن قيمًا أخرى غير PS.
- Main () (#main () والجزء المكتوب في Search.cgi)
- جزء التنفيذ من كل وظيفة
- حدد DB و CGI OPAC.DB ككائن قاعدة البيانات لوحدة SQLite ، ولديهما كائنات CGI.
- يجب أن يكون لجميع القيم CGI_VALUES قيمًا باستخدام cgi.instance_variable_get (:@params)
- يبدأ
ينقذ النهاية تتجنب الأخطاء عندما لا يتم ملء أي شيء في نموذج البحث - HIT_NUM يعين عدد الزيارات
- احصل على كلمة بحث في Search_Display
- إذا كان HIT_NUM 0 ، فلن يتم عرض جدول الترجيح والنتائج في العنوان.
- تغيير كلمة البحث بين عنصر العنوان و <H1 />
- أرسل rep_hide عند النقر فوق "إعادة التحميل" (أو أدخل باستخدام نموذج إدخال PS).
Accurate.cgi (كل وظيفة مكتوبة في def.rb)
- ISBNTO13 (ISBN10)
- تحويل ISBN من 10 إلى 13 رقمًا إلى جنيه أوبندب
- قيمة الإرجاع سلسلة (13 رقمًا)
- field_search_a (المفتاح ، ديسيبل)
- تلقي NBC من Search.cgi لاسترداد البيانات الببليوغرافية بأكملها
- قيم الإرجاع عبارة عن صفائف تحتوي على جميع البيانات الببليوغرافية لكتاب واحد
- bibimage (ISBN13 ، لكل)
- الحصول على صورة كتاب
- الوصول إلى نقطة نهاية OPENDB وتحقق مما إذا كانت هناك بيانات ببليوغرافية (= صورة)
- إذا كان JSON لا شيء ، فمرر 404 عرض صورة HTML إلى bibhash
- إذا لم يكن JSON لا شيء ، فقم بتمرير نسخ HTML إلى Bibhash
- قيمة الإرجاع هي html من <img ... />
- Main () (الجزء المكتوب في #Main () و Accurate.cgi)
- حدد DB و CGI OPAC.DB ككائن قاعدة البيانات لوحدة SQLite ، ولديهما كائنات CGI.
- بيانات الببليوغرافية لجميع الحقول التي تم الحصول عليها من قيمة GET (NBC) التي تم تمريرها من Search.cgi مع Field_Search_A (المفتاح ، DB) [0] إلى صف
- الصف [1] .scan (/[0-9]/). الانضمام [0،10] ، فقط الرقم في حقل ISBN مأخوذ من بداية 10 أرقام ، ويتم تمريره إلى ISBNTO13 مع الصف ، ويتم تمريره إلى ISBNTO13 مع الصف ، ويسمى عرض الصورة HTML.
- يتم عرض كل عنصر كجدول.
3. هيكل العلاقة (الجدول) وتفسيره
بناء
فيما يلي SQL (Data/Bib_sche.sql) عند إنشاء Table Bibdata في 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 ); ▲ الشكل 2 ، SQL لإنشاء جدول Bibdata
توضيح
يتم شرح كل قيمة.
- NBC
- الرقم الببليوغرافي الوطني
- على سبيل المثال) JP20564340
- ISBN
- رقم ISBN (10 أرقام)
- على سبيل المثال) 4-86004-040-6
- عنوان
- عنوان
- على سبيل المثال) قصة صداقة بين المعلم والطالب
- مصادقة
- مؤلف
- على سبيل المثال) كتبه Omori Masao
- حانة
- النشر والتوزيع
- على سبيل المثال) تسوتشيورا تسوكوبا شورن
- pubdate
- سنة النشر
- على سبيل المثال) 2004.1
- إد
- طبعة
- على سبيل المثال) المراجعة الأولى
- فيزياء
- استمارة
- على سبيل المثال) 248p ؛ 19 سم
- مسلسل
- مسلسل
- على سبيل المثال) Kobunshapaperbacks ؛ 41
- ملحوظة
- ملحوظات
- على سبيل المثال) عنوان كولوفون (خطأ مطبعي) قصة صداقة بين المعلم والطالب
- العنوان
- قراءة العنوان
- على سبيل المثال) رأى Sensei مواء
- المؤلف
- قراءة المؤلف
- على سبيل المثال) Omori ، Masao (Omori ، Masao)
- HoldingsRecord
- رقم تحديد المواد الفردية
- على سبيل المثال) JP20564340-01
- Holdingphys
- اسم الموقع
- على سبيل المثال) الاتحاد الأفريقي يتجه نحو القرن الحادي والعشرين
- القابضة
- رقم التصنيف
- على سبيل المثال) F9-128
تم إدخال الحقول التي يمكن أن يكون لها قيم متعددة من خلال الجمع بين القيم المراد إدراجها.
لم أفعل أي تطبيع ، لذلك أود التفكير فيه.
نظرًا لأن NBC دائمًا فريد من نوعه (العنوان و Holdloc ليسا فريدًا) ، فقد حددته كمفتاح أساسي.
4. النقاط المثالية
يدعم و/أو البحث
- و/أو يمكن إجراء عمليات البحث باستخدام و/أو المشغل.
حدد/إدخال عدد عناصر الترحيل
- يمكنك الآن إدخال/تحديد عدد الصفحات المعروضة باستخدام <stalist>. ## البحث المحدد في الحقل في مربع البحث
- لقد جعلنا الآن من الممكن البحث عن كل حقل.
- في البداية ، لم أفكر في البحث عن الحقول من النموذج ، لذلك فكرت في إضافة عامل للمشغل للإشارة إلى حقل معين ، مثل "العنوان: تسوكوبا".
تصميم
- بشكل عام ، من السهل القراءة ، ولا تنكسر الشاشة حتى عند عرضها على الهاتف الذكي.
- لقد صنعنا أيضًا نظامًا/حجمًا للألوان يسهل رؤيته حتى بالنسبة للأشخاص الذين يعانون من ضعف بصريًا.
إنشاء خريطة موقع للهيكل الهرمي للموقع
- لقد أنشأت sitemap.xml.
- كنت أقرأ كتابًا زاحفًا ووجدته ليقول "يجب أن أكتب عنه" ، لذا كتبته.
التحقق من صحة/توحيد HTML و CSS
- نظرًا لأن مستندات HTML لا تحصل على أخطاء أساسية ، فقد تم تنفيذ التقييس باستخدام مصادقة W3C (HTML/CSS) للتحقق مما إذا كانت هناك أي مشاكل في التنسيق ، وعلاقات الميراث ، والبنية الهرمية ، وما إذا كانت علامات HTML تحتوي على أي محتوى يجب كتابة في CSS.
5. النتائج
بناء نظام من جانب الخادم
ㅤ عادةً ما تكون صفحات الويب التي نراها من الأمام وتتألف من HTML/CSS/JS. لا يمكننا عرض البرامج أو الأنظمة على هذا الخادم. في هذا التمرين ، عند إنشاء صفحات ديناميكية ، تمكنا من فهم كيفية عملها من خلال إنشاء البرامج الداخلية. لقد أعماقنا أيضًا معرفتنا في فصول PHP + MySQL التي كنا نأخذه في نفس الوقت.
تصميم باستخدام أوراق نمط صفحة الويب
ㅤ حتى الآن ، عندما بدأت في إنشاء صفحات ويب ، لم أكتب الكثير من CSS باستخدام Markdown أو Bootstrap. ومع ذلك ، من أجل التركيز على التصميم ، كتبت CSS من البداية. أعتقد أنني اكتسبت معرفة أساسية بتصميم صفحة الويب باستخدام أوراق الأنماط.
إنشاء وثيقة منظمة
ㅤ اكتسبت معرفة عن ترميز المستندات المهيكلة HTML و XML.
بناء DB باستخدام SQLite
ㅤ كنت أستخدم MySQL أساسًا في Python و Ruby ، لكن هذه هي المرة الأولى التي أجربت فيها SQLite. تمكنت من تعلم الاختلافات في التدوين والمتغيرات المدمجة وتنسيقات الإدراج.
إدارة الاختلاف على موقع جيثب
تمت إدارة الاختلافات كما الباذنجان/أوباك.