omnibib-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[omnibib-devel] gerenciador de tarefas e início da discussão


From: Rafael Bohrer Ávila
Subject: [omnibib-devel] gerenciador de tarefas e início da discussão
Date: Sat, 11 Oct 2003 11:28:30 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.4) Gecko/20030908 Debian/1.4-4

Ois,

Experimentei agora criar uma tarefa no Savannah. Acho que até deu certo, mas provavelmente tem muitos parâmetros errados/mal-configurados. A tarefa é aquela história de reimplementar o servidor pra usar processos em vez de threads e de limitar o número de conexões.

Como tinha dito no mail anterior, coloquei o Pilla como responsável por essa tarefa, mas particularmente não quero que ninguém se sinta "na obriga" de qualquer coisa até que tenhamos feito uma discussão inicial e todos tenham suas respectivas tarefas. Aliás, nem é preciso dizer que o projeto é um "hobby" e que todos nós sabemos que cada um tem suas responsabilidades com aulas, tese, etc. (embora muitas vezes pareça o contrário :-)).

Vamos começar a trocar idéias sobre o negócio?

Bom, a idéia do OmniBib surgiu de uma troca de emails há alguns meses sobre um conjunto de arquivos .bib que estávamos mantendo num CVS compartilhado, adicionada do "lançamento" do BibWebDB, do Rodrigo. O objetivo principal é compartilhar dados bibliográficos, mas com duas características particulares:

* ter a base distribuída, como um sistema peer-to-peer; cada um mantém
  suas próprias referências e as disponibiliza para o resto da galera

* permitir que um documento LaTeX possa ser "bibtexado" diretamente a
  partir do OmniBib, sem que o usuário tenha que explicitamente catar
  e armazenar localmente as referências que ele precisa

Algum tempo se passou até que eu resolvi colocar alguma coisa em prática, o que resultou na implementação que temos hoje. Como o negócio envolveria muita manipulação de texto, com expressões regulares e etc., me pareceu uma boa idéia usar Perl, mas não considero isso definitivo.

O "omnibib-server" é o daemon que permite a troca de informações entre os peers (dêem um telnet direto para ele pra ter uma idéia melhor do protocolo), e o "omnibib" é o script que faz o bibtex direto, mas também permite fazer procuras.

O servidor tem dois modos de operação: search e fetch. O search serve pra fazer procuras (ooohhh), que pode ser realizada em campos específicos das referências. Por exemplo, a busca pode ser feita somente nos nomes dos autores, ou no título, etc. Além disso, uma operação de procura é sempre repassada, pelo servidor, para todos os peers que ele conhece (arquivo "peers"), a fim de ampliar o alcance da operação. Entretanto, os peers, por sua vez, *não* fazem o mesmo, a fim de evitar um efeito avalanche na rede.

O modo fetch serve para "pegar" uma referência; a idéia é a mesma do search, ou seja, encontrar uma determinada referência na rede, mas com algumas diferenças:

* um fetch deve ser feito sobre o label exato
  (ex. "tanenbaum95distributed") que identifica uma referência,
  ao contrário do search que aceita palavras-chave (e futuramente
  expressões regulares)

* se a referência é encontrada no servidor local, ele não repassa a
  procura, pois não é mais necessário

* quando uma referência é encontrada num peer remoto, ela é adicionada à
  base local, como uma espécie de cache

* um fetch busca também as crossrefs que uma referência eventualmente
  tenha

Agora há pouco falei sobre os campos. Os campos são os mesmos do bibtex, com a adição de alguns para suportar outros tipos de informação como idioma do documento, ISBN, ISSN, abstract, etc. Vocês que usam estilo ABNT sabem do que eu estou falando... :-(

Bom, acho que por enquanto chega. Agora quero saber a opinião de vocês. Eu apresentei o OmniBib como está agora, nessa implementação "emergencial", mas nada disso é definitivo, portanto vale meter o pau, xingar (mas também elogiar, dizer que o código está muito bem documentado, etc. :-))))

Abraço
Rafael





reply via email to

[Prev in Thread] Current Thread [Next in Thread]