EXERCÊNCIO DE INFORMAÇÕES DE CONHECIMENTO I Relato a atribuição 201811528 (Grupo de quarta -feira)
- Este repositório é ...
- Questões criadas na tarefa "Building OPAC" no Exercício de Informações do Conhecimento I.
- Concedido como o grande prêmio da aula. (2019)
Introdução
Esta página é um relatório sobre a questão do "Building OPAC" no " Exercício de Informações do Conhecimento I", que é a abertura do módulo Spring AB para obter informações sobre o conhecimento e a ciência da biblioteca.
Conteúdo
- 1. O URL do OPAC que você construiu
- 2. Lista de origem do programa CGI e sua descrição
- 3. Estrutura de relacionamento (tabela) e sua explicação
- 4. Pontos ideais
- 5. Achados
1. O URL do OPAC que você construiu
A página de índice do sistema OPAC " simples OPAC " que construímos é https://cgi.u.tsukuba.ac.jp/~s1811528/opac/index.html .
Abaixo está um diagrama que resume a estrutura hierárquica abaixo do diretório OPAC e as explicações de cada arquivo .
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の雛型▲ Figura 1, estrutura hierárquica do sistema OPAC
2. Lista de origem do programa CGI e sua descrição
Lista de origem
Abaixo está uma lista das páginas e código -fonte do programa CGI que eu criei.
Search.cgi
- Link da página
- Código -fonte
precisão.cgi
- Link da página
- Código -fonte
explicação
search.cgi (cada função é escrita em def.rb)
- Makeword (CGI)
- Este é um método de processamento de dados recuperados do index.html para facilitar a separação dos termos de pesquisa.
- <Field>: <Value> Shape
- gsub (/[ r n]/") remove quebras de linha na palavra variável
- Delete_if {| i | ...} exclui e, e ou itens nulos.
- O valor de retorno é editado pela declaração de pesquisa
- MakeKeys (palavras)
- Divida a declaração de pesquisa recebida de makeword () em cada palavra -chave para jogá -la na consulta SQL e insira -a em uma matriz
- Ou, quando vier ou vier, insira -o como está
- Quando o título: ou ed: entra, é um hash de {"title" => "val"} ou algo semelhante, insira -o.
- Se não houver campo especificado, insira -o como está
- Retornos são matrizes contendo hashs e strings
- all_any_search (chave, db)
- Faça uma pesquisa (pesquisa de todos os campos) e recupere dados do banco de dados
- O valor de retorno é uma matriz bidimensional que contém a NBC (número bibliográfico nacional) dos dados de acerto [[NBC1], [NBC2], ..., [NBCN]]
- field_search_s (chave, db)
- Executa pesquisas individuais por campos especificados
- O valor de retorno é uma matriz 2D contendo NBC (número bibliográfico nacional) de dados de acerto.
- Andor (chaves, dB)
- Itere os valores recebidos de MakeKeys () e insira os resultados da pesquisa na matriz apropriada passada para all_any_search () e all_any_search (), respectivamente.
- Se ou ou for passado, insira -o na matriz como está
- Os valores de retorno são matrizes bidimensionais contendo NBC (número bibliográfico nacional) de dados de hit
- estrinterpret (chaves)
- Interpreta o valor de retorno de Andor (chaves, dB) para criar o resultado da pesquisa final
- Se [Datan] for seguido por [Datan+1], o Union ([Datan] | [Datan+1]) será levado.
- Quando o próximo ou ou vier depois de [Datan], pegue o próximo [Datan+1] e o próximo [Datan+1], e o conjunto de acumulação ([Datan] & [Datan+1])
- Os valores de retorno são uma matriz unidimensional
- ret_hitdata (hit, db)
- Obtenha dados completos de campo bibliográfico da NBC de dados bibliográficos de sucesso criados com estrinterpret (chaves)
- Retornos são todos os dados bibliográficos de sucesso
- create_paging_link (hits, par)
- Gerando links de página para funcionalidade de pagenação
- Se o valor do PS (PageSize) recebido da página de índice ou pesquisa.cgi estiver vazio, defina -o para 20.
- P (página) é o valor do número de páginas atualmente disponíveis
- Atribua o número necessário de páginas (= número de links de página) ao HMP, levando em consideração o número de pesquisas e ps.
- Se p_size = 0, hmp = 0
- Insira links de página em Pagelinks
- O valor de retorno é o html do link da página na tabela
- create_table_html (dados, par)
- Resultados da pesquisa de molde em tabela HTML
- Dê a cada título um link para enviar a NBC para precisa.cgi
- Considerando P e PS, a declaração necessária é extraída dos dados (= ret_hitdata (Hit, DB))
- O valor de retorno é HTML da tabela
- REP_HIDE (PER)
- Assuma/salve o valor Get para recarregar mudando PS
- Incorporá -lo em <input type = "Hidden">
- O valor de retorno é o html de <input type = "hidden">, que incorporam valores que não sejam ps.
- main () (#main () e a parte escrita em search.cgi)
- Parte de execução de cada função
- DB e CGI Especifique o Opac.db como o objeto de banco de dados do módulo SQLite e possui objetos CGI.
- CGI_Values deve ter todos os valores usando cgi.instance_variable_get (:@params)
- Começar
resgatar Final evita erros quando nada é preenchido no formulário de pesquisa - hit_num atribui o número de acertos
- Tenha uma palavra de pesquisa em Search_Display
- Se hit_num for 0, a tabela Pagenation e Result não será exibida no título.
- Alterar a palavra de pesquisa entre o elemento do título e <h1 />
- Envie Rep_hide quando clicar em "Recarregar" (ou digite usando o formulário de entrada PS).
Preciso.cgi (cada função é escrita em def.rb)
- ISBNTO13 (ISBN10)
- Converta o ISBN de 10 a 13 dígitos em libra open
- O valor de retorno é string (13 dígitos)
- field_search_a (chave, db)
- Receba NBC do Search.cgi para recuperar todos os dados bibliográficos
- Os valores de retorno são matrizes contendo todos os dados bibliográficos de um livro
- Bibimage (ISBN13, por)
- Adquirindo uma imagem de livro
- Acesse o endpoint do OpendB e verifique se há dados bibliográficos (= imagem)
- Se JSON for nulo, passe 404 imagem exibir html para bibhash
- Se JSON não estiver nulo, passe a cópia de exibição html para bibhash
- O valor de retorno é html de <img ... />
- Main () (a parte escrita em #Main () e a precisa.cgi)
- DB e CGI Especifique o Opac.db como o objeto de banco de dados do módulo SQLite e possui objetos CGI.
- Dados bibliográficos para todos os campos obtidos a partir do valor GET (NBC) passados do search.cgi com field_search_a (chave, db) [0] para linha
- Linha [1] .Scan (/[0-9]/). Junho [0,10], apenas o número no campo ISBN é retirado do início de 10 dígitos e é passado para o ISBNTO13 junto com a linha e é passado para o ISBNTO13 junto com a linha e é chamado de exibição de imagem HTML.
- Cada item é exibido como uma tabela.
3. Estrutura de relacionamento (tabela) e sua explicação
estrutura
Abaixo está o SQL (Data/bib_sche.sql) ao criar a tabela bibdata em 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 ); ▲ Figura 2, SQL para criar a tabela bibdata
explicação
Cada valor é explicado.
- NBC
- Número bibliográfico nacional
- Ex) JP20564340
- ISBN
- Número ISBN (10 dígitos)
- Ex) 4-86004-040-6
- TÍTULO
- título
- ex) uma história de amizade entre um professor e um aluno
- Auth
- autor
- ex) escrito por Omori Masao
- PUB
- Publicação e distribuição
- ex) tsuchiura tsukuba shorin
- Pubdate
- Ano de publicação
- ex) 2004.1
- Ed
- Phys
- SÉRIE
- série
- ex) Kobunshapaperbacks; 41
- OBSERVAÇÃO
- Notas
- Ex) Título do Colofão (erro tipográfico) Uma história de amizade entre um professor e um aluno
- Titleheading
- Lendo o título
- ex) Sensei viu miau
- Authorheading
- Leitura do autor
- ex) Omori, Masao (Omori, Masao)
- HoldingsRecord
- Número de identificação de materiais individuais
- Ex) JP20564340-01
- Holdingphys
- Nome da localização
- ex) União Africana em direção ao século 21
- Holdingloc
- Número de classificação
- Ex) F9-128
Os campos que poderiam ter vários valores foram inseridos combinando os valores a serem inseridos.
Eu não fiz nenhuma normalização, então gostaria de refletir sobre isso.
Como a NBC é sempre única (título e holdloc não são únicos), eu a especifiquei como chave primária.
4. Pontos ideais
Suporta e/ou pesquisa
- E/ou pesquisas podem ser feitas usando o e/ou operador.
Selecione/insira o número de itens de paginação
- Agora você pode inserir/selecionar o número de páginas exibidas usando <datalist>. ## Pesquisa especificada pelo campo na caixa de pesquisa
- Agora, tornamos possível procurar cada campo.
- No começo, não pensei em procurar campos a partir do formulário, então pensei em adicionar um operador a apontar para um campo específico, como "Título: Tsukuba".
projeto
- No geral, é fácil de ler e a tela não quebra mesmo quando vista em um smartphone.
- Também fizemos um esquema de cores/tamanho fácil de ver, mesmo para pessoas com deficiência visual.
Criando um mapa do site para uma estrutura hierárquica de um site
- Eu criei sitemap.xml.
- Eu estava lendo um livro de rastreador e descobri que "eu deveria escrever sobre isso", então escrevi.
Validação/padronização HTML e CSS
- Como os documentos HTML não recebem erros básicos, a padronização foi realizada usando o validador do W3C (HTML/CSS) para verificar se existem problemas com formato, relacionamentos de herança, estrutura hierárquica e se as tags HTML contêm qualquer conteúdo que deve ser escrito em CSS.
5. Achados
Construindo um sistema do lado do servidor
ㅤ Normalmente, as páginas da web que vemos são front-ends e consistem em HTML/CSS/JS. Não podemos visualizar os programas ou sistemas nesse servidor. Neste exercício, ao criar páginas dinâmicas, conseguimos entender como eles funcionam criando os programas internos. Também aprofundamos nosso conhecimento nas aulas PHP + MySQL que estávamos fazendo ao mesmo tempo.
Projetando usando folhas de estilo de página da web
ㅤ Até agora, quando comecei a criar páginas da web, não escrevi muito CSS usando o Markdown ou o Bootstrap. No entanto, para se concentrar no design, escrevi o CSS desde o início. Acho que adquiri conhecimento básico do design da página da web usando folhas de estilo.
Criando um documento estruturado
ㅤ Ganhei conhecimento sobre a marcação de documentos estruturados HTML e XML.
Construção de dB usando SQLite
ㅤ Eu tenho usado o MySQL basicamente em Python e Ruby, mas esta é a primeira vez que experimentei o SQLite. Consegui aprender as diferenças de notação, variáveis internas e formatos de inserção.
Gerenciamento de diferenças no site github
As diferenças foram gerenciadas como berinjelas/OPAC.