- OBJETIVO
- PASSO 01 - Instalação do stork no sistema operacional linux
- PASSO 02 - Configurando o seu site para hospeda o stork:
- PASSO 03 - Como criar um índice de pesquisa para o stork
- PASSO 04 - Como criar uma página de pesquisa usando o pacote stork instalado em https://files.stork-search.net
- PASSO 05 - Como criar uma página de pesquisa usando o pacote stork instalado no seu site
- Testando o índice criado por stork
- REFERÊNCIAS
OBJETIVO
- O pacote de pesquisa stork tem como objetivo indexar um site estático para fazer pesquisas no mesmo usando apenas as linguagens javascript e webassembler.
- Motivo:
- O servidor web github.io não permite instalar programas cgi, fastcgi ou módulo apache no servidor web sem que pague mensalidade para o mesmo.
PASSO 01 - Instalação do stork no sistema operacional linux
- Usando o gerenciador de pacotes rust
-
Instalar Rust toolchain para que o pacote cargo fique disponível
curl https://sh.rustup.rs -sSf | sh Rust is installed now. Great!
-
Instalar o pacote Stock
cargo install stork-search --locked
-
Referência
-
PASSO 02 - Configurando o seu site para hospeda o stork:
-
Baixe stork.js, stork.wasm e stork.js.map da Versão Stork - v1.6.0 Latest do Github e publique esses arquivos em seu servidor web.
-
Certifique-se de servir stork.wasm com o tipo MIME correto e certifique-se de chamar stork.initialize("stork.wasm") com o URL onde você está hospedando o arquivo stork.wasm.
-
Sirva esses arquivos de seu servidor web. Carregue os arquivos Javascript stork.js e WASM stork.wasm em seu servidor ou host da Web e os apresente publicamente como faria com uma folha de estilo ou imagem.
-
Certifique-se de servir o arquivo WASM com o application/wasm tipo MIME . Se você estiver colocando esses arquivos atrás do seu CDN, certifique-se de encaminhar o Content-Type cabeçalho da fonte do arquivo, por meio desse CDN.
-
Inicialize o Stork em sua página da Web com o URL do WASM. A página Javascript avançado descreve o stork.initialize() método, que instrui o Stork a carregar o WASM. Certifique-se de chamar este método - mesmo se estiver usando a stork.register() API mais simples - antes de chamar qualquer outro método Stork:
<script src="/js/stork.js"></script> <script> stork.initialize("/js/stork.wasm") stork.register("yourIndexName", "/index-file.st") </script>
-
NOTAS
- No site pssp.app.br o arquivo stork.js e stork.wasm deve ficar na pasta /js.
- Usando uma API JavaScript do WebAssembly.
- Como escrever políticas de segurança de conteúdo:
-
Stork conta com a capacidade de executar WASM no navegador. A maioria das definições de política de segurança de conteúdo bloqueará a execução do WASM por padrão. Você pode ver este manifesto como um erro de carregamento WASM genérico:
Uncaught (in promise) StorkError: Error while loading WASM at /stork.wasm Wasm code generation disallowed by embedder
-
Infelizmente, não há muitas boas opções para ter um CSP restritivo e executar o WASM no navegador, mesmo que você auto-hospede o arquivo WASM. Para que o Stork funcione, você terá que permitir a execução do WASM dentro de sua script-src diretiva. O seguinte CSP é o CSP minimamente permissivo que ainda permitirá que o Stork funcione em todos os principais navegadores:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'unsafe-eval';" />
-
O Google Chrome oferece suporte às políticas 'wasm-unsafe-eval'(ou, às vezes, ) em sua diretiva para permitir a execução do WASM. No entanto, no momento em que este livro foi escrito, o Safari e o Firefox exigem que você especifique a política em sua diretiva, o que torna seu CSP restritivo muito menos restritivo.'wasm-eval'script-srcunsafe-evalscript-src.
-
-
REFERÊNCIAS
PASSO 03 - Como criar um índice de pesquisa para o stork
-
Para criar um índice para arquivo stork.js, é necessário instalar o pacote stork descrito no passo 01 acima.
-
Cada arquivo da lista de arquivos as serem pesquisados, devem ter as palavras _\ _ _\ _ para marcar o trecho de código que deve ser pesquisado.
-
Exemplo:
<!-- markdownlint-disable-next-line --> <link type="text/css" href="../../../css/defaulttheme.css" rel="stylesheet" /> <!-- markdownlint-disable-next-line --> # Reflexão sobre fake, fatos e opinião > 1. Qual a diferença entre: fake x fatos x opinião? > 1. Fake news são textos que não descrevem a verdade ou descrevem verdades fora do contexto. > 1. Exemplo de mentira: > 1. O Brasil foi descoberto por Portugal. (Se havia morador ele não estava perdido). > 2. Exemplo de verdade fora do contexto: > 1. Uma doença enradicada em anos anteriores, pode ser anunciada no momento atual com imagens da época em que ela foi enradicada. > > 2. Fatos são textos que descrevem a verdade: > 1. Portugal não conhecia o Brasil até o ano de 1500. > 3. Opinião são textos que descrevem pontos de vista pessoal ou cultural: > 1. Portugal ao chegar no Brasil e perceber que as pessoas que aqui vivia não possuía a pólvora, decidiram se apropriar. > 2. Os políticos do Brasil são desonestos. <!-- markdownlint-disable-next-line -->
-
-
O programa de linha de comando stork, receberá um arquivo de configuração e criará um arquivo de índice. Um arquivo de índice é um blob serializado e compactado que a biblioteca Stork Javascript baixará e analisará. Geralmente tem a extensão de arquivo .st e tem aproximadamente o tamanho de um JPEG.
-
Para criar um índice de pesquisa, o projeto Stork requer que se crie um arquivo de configuração que declare quais documentos devem ser indexados. Este arquivo de configuração deve ter o formato de arquivo TOML.
-
Arquivo exemplo de meta-dados que o stork espera:
# index_stork.toml [input] base_directory = "" url_prefix = "" files = [ {path = "./linguas_humanas/portugues/producao_de_textos/fake_fato_opiniao.html", url = "0001", title = "Reflexão sobre fake, fatos e opinião"}, {path = "./linguas_humanas/portugues/producao_de_textos/descricao_de_textos.html", url = "0002", title = "Estudo da língua portuguesa"}, {path = "./programacao/html/js/stork/o_que_e_stork.html", url = "0001", title = "O que é pacote de pesquisa de site stork"} ]
- Notas:
- base_directory = diretório base que deve ser usado para resolver caminhos relativos. Esse caminho estará relacionado ao diretório de trabalho quando você executar o comando stork build.
- url_prefix = ???Não compreendi do que se trata
- files = A lista de arquivos e suas pastas juntamente com seus títulos
- Veja todos os atributos aceitos pelo arquivo basic.toml ...
- Veja como o arquivo basic.toml pode ter outros formatos de declaração...
- Notas:
-
Exemplo de como criar o índice list_stork.st usando o arquivo index_stork.toml descrito acima:
# Cria índice para stork.js stork build --input index_stork.toml --output list_stork.st
- Notas
- Todos os caminhos de arquivo no arquivo de configuração, incluindo o diretório base, são relativos ao diretório de trabalho quando você executa o comando Stork . Por exemplo, se você estiver no diretório ~/project, ao executar _stork build --input index_stork.toml --output list_stork.st, o Stork procurará os arquivos em:
- ./project/my_files/federalist-1.txt
- ./project/my_files/federalist-2.txt
- ./project/my_files/federalist-3.txt
- Todos os caminhos de arquivo no arquivo de configuração, incluindo o diretório base, são relativos ao diretório de trabalho quando você executa o comando Stork . Por exemplo, se você estiver no diretório ~/project, ao executar _stork build --input index_stork.toml --output list_stork.st, o Stork procurará os arquivos em:
- Notas
-
-
Referências:
PASSO 04 - Como criar uma página de pesquisa usando o pacote stork instalado em https://files.stork-search.net
-
Use o modelo abaixo para criar sua página de pesquisa:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Federalist Search</title> <!-- O Stork é altamente personalizável e, se você quiser, pode escrever CSS que faça com que a saída do Stork pareça exatamente como você deseja. Como alternativa, você pode usar um dos temas pré-existentes para criar rapidamente uma aparência polida para sua interface de pesquisa. Aqui, estamos usando o tema Básico: --> <link rel="stylesheet" href="https://files.stork-search.net/releases/v1.6.0/basic.css" /> </head> <bodY> <!-- Cada interface de pesquisa deve ter um elemento de entrada e um elemento de saída . (O wrapper é usado apenas pelo tema basic.css que incluímos acima.) --> <div class="stork-wrapper"> <input data-stork="federalist" class="stork-input" /> <div data-stork="federalist-output" class="stork-output"></div> </div> <!-- Você pode carregar a biblioteca Javascript do Stork CDN (com suporte do AWS Cloudfront) ou auto-hospedá-la. Logo antes da </body>tag de fechamento, inclua o script Stork e registre o index.--> <script src="https://files.stork-search.net/releases/v1.6.0/stork.js"></script> <script> stork.register( 'federalist', 'https://files.stork-search.net/releases/v1.6.0/federalist.st' ) </script> </body> </html>
-
Nota:
- Onde tiver a palavra federalist troca o nome do seu índice criado em...
- Neste exemplo de uso o índice está hospedado em...:
- O arquivo css de entrada e saída está hospedado em...:
- O programa Stork está hospedado em...:
- O Código fonte foi do projeto stork.js foi script em typescript, e o arquivo stork.js foi gerado pelo transpilador.
- Construindo uma interface de pesquisa
PASSO 05 - Como criar uma página de pesquisa usando o pacote stork instalado no seu site
-
Use o modelo abaixo para criar sua página de pesquisa e salve o arquivo na raiz do site:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Titulo de sua pesquisa</title> <!-- O Stork é altamente personalizável e, se você quiser, pode escrever CSS que faça com que a saída do Stork pareça exatamente como você deseja. Como alternativa, você pode usar um dos temas pré-existentes para criar rapidamente uma aparência polida para sua interface de pesquisa. Aqui, estamos usando o tema stork.css: --> <link rel="stylesheet" href="/css/stork.css" /> </head> <bodY> <!-- Cada interface de pesquisa deve ter um elemento de entrada e um elemento de saída . (O wrapper é usado apenas pelo tema stork.css que incluímos acima.) --> <div class="stork-wrapper"> <input data-stork="list_stork" class="stork-input" /> <!-- <div data-stork="list_stork" class="stork-output"></div> --> <div data-stork="list_stork-output" class="stork-output"></div> </div> <!-- Código javascript deve está localizado na pasta /js . O código /js/stork.js depende do código /js/stork.wasm --> <script src="/js/stork.js"></script> <!-- O código javascript precisa saber o nome da lista que le deve pesquisar --> <script> stork.initialize("/js/stork.wasm") stork.register('list_stork', 'list_stork.st' ) </script> </body> </html>
-
Nota:
- Onde tiver a palavra federalist troca o nome do seu índice criado em...
- Neste exemplo de uso o índice está hospedado em...:
- O arquivo css de entrada e saída está hospedado em...:
- O programa Stork está hospedado em...:
- O Código fonte foi do projeto stork.js foi script em typescript, e o arquivo stork.js foi gerado pelo transpilador.
- Construindo uma interface de pesquisa
Testando o índice criado por stork
-
Depois de escrever um arquivo de configuração, você pode querer testar o funcionamento da interface de pesquisa antes de carregá-lo em seu site. O Stork oferece um modo de teste, no qual ele criará seu índice de pesquisa e o carregará em uma interface da Web simplificada para que você possa brincar com a funcionalidade de pesquisa enquanto itera em sua configuração.
-
Para testar seu índice, execute:
stork test --config basic.toml # or stork test --index my-index.st
- Nota:
- Após executar o comando acima executar no browser http://localhost:1612, a página web servida pela Stork.
- Nota:
REFERÊNCIAS
- Link da versão mais recente do Stork no Github
- Construindo uma interface de pesquisa
- https://github.com/jameslittle230/stork
- Stork Demo 1
- Stork Turns One: Construindo uma ferramenta de busca para sites estáticos com Rust e WebAssembly
- Log de alterações do stork
- Estou encerrando meu trabalho com Stork.
- Stork: Pesquisa na Web incrivelmente rápida, com James Little
- stork-and-netlify - pelican