[Top][All Lists]
[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
- [omnibib-devel] gerenciador de tarefas e início da discussão,
Rafael Bohrer Ávila <=