[imagem de um Admirável Mundo GNU]
Admirável Mundo GNU - Edição Número 33
Copyright © 2001 Georg C. F. Greve <greve@gnu.org>
Traduzido para o português por Hilton Fernandes <fernandesh@yahoo.com>
Revisado por Fernando Lozano <fernando@lozano.eti.br>
A declaração de permissão segue abaixo.

[DE | EN | FR | JA | ES | KO | PT]

Benvindo a mais uma edição da Admirável Mundo GNU. Depois de introduzir um "clássico", este número se torna relativamente técnico, mas creio que ele será interessante até mesmo para os leitores não técnicos.

GNU grep

Bernhard Rosenkraenzer tornou-se o novo mantenedor do GNU grep [5]. Gostaria de aproveitar a oportunidade para escrever um pouco sobre o projeto.

A maioria dos usuários do GNU/Linux devem conhecer o GNU grep e usá-lo quase que diariamente, mas deve haver alguns que ainda não tenham se familiarizado com ele, por isso darei uma breve introdução a sua funcionalidade.

O GNU grep busca em arquivos ou na entrada padrão por certos padrões, em geral cadeias de caracteres de texto, e mostra as linhas que atendam a esse padrão. Também é possível buscar em múltiplos arquivos, para determinar quais arquivos contém o padrão. Os usos típicos dele vão do processamento de textos e do encontro de passagem, ao afunilamento da saída de outros programas a informações relevantes.

O grep é definitivamente um dos comandos padrões de qualquer sistema similar ao Unix, e o GNU grep inclui não apenas os recursos padrão, mas também opções como a busca recursiva por diretórios, ou a saída baseada em palavras.

Uma vez que ele já está sendo usado em uma infinidade de sistemas, não há dúvida que ele está pronto para o uso diário. Não tenho certeza da idade exata do GNU grep, mas o Changelog chega a 1993, e a primeira nota de copyright da FSF data de 1988, ou três anos antes da criação do núcleo do Linux. Este fato é interessante, não apesar da idade do projeto, mas devido a ela, pois mostra quão vívido o Software Livre é -- mesmo quando ele atinge uma idade tão elevada.

Ao longo dos anos, mais de 80 pessoas contribuíram com o GNU grep, e o desenvolvimento ainda continua. Na lista de todo, ou "por fazer", estão pequenas alterações para a completa adesão ao POSIX.2, e umas poucas opções. Entre elas, por exemplo, uma opção uma opção "--max-count", uma opção para habilitar as PCRE (expressões regulares compatíveis com o Perl), além de uma opção de iluminação para gerar saídas com cores.

Mas até mesmo um pacote assim tão antigo, estável e popular precisa de ajuda. São muito benvindos usuários que desejem testar as versões de desenvolvimento para portabilidade entre GNU/Linux e FreeBSD, ou para detectar bugs. Como o mantenedor atual fala apenas inglês, alemão e francês, ele não pode de fato determinar se o suporte a caracteres multibyte está de fato funcionando.

Assim, particularmente os usuários nas "áreas multibyte" devem se sentir estimulados a participar nos testes.

GNU UnRTF

GNU UnRTF [6] é uma recente adição ao Projeto GNU, criada por Zachary T. Smith. Ele permite transferir documentos do RTF (Formato de Texto Rico) para outros formatos. RTF é bastante usado como formato de transferência de usuários do Windows, mas outros processadores de palavras também o usam para gravar textos com informações de formatação.

Graças a este projeto, agora é possível converter esses documentos em texto puro, HTML, Latex e Postscript. Assim, este projeto vai beneficiar quem quer use RTF, ou que dependa de pessoas que o usam.

A licença do projeto sempre foi a Licença Geral Pública do GNU (GPL), mas é possível que algumas pessoas tenham conhecido o projeto sob seu nome anterior, "rtf2htm.".

O foco atual do processo de desenvolvimento são as rotinas de conversão de caracteres, assim como a saída em LaTeX. Também está nos planos o suporte a mais formatos de saída. Independentemente do desenvolvimento atual, o projeto está definitivamente pronto para ser usado.

QTreeMap

O projeto QTreeMap [7], de Alexander Rawass, implementa "Treemaps", ou "mapas de árvores" como um Qt-Widget, ou "controle Qt", sob a Licença Pública Menos Geral do GNU (LGPL).

Geralmente, hierarquias profundas ou árvores são mostradas na forma de uma árvore, que pode ser colapsada ou aberta através de cliques de mouse. Os mapas de árvores possuem a capacidade de mostrar esssas hierarquias completas em um único olhar.

O princípio pode ser entendido mais facilmente através de um exemplo. Assim, ele será explicado através da operação do KDirStat[8], que usa QTreeMaps para a visualização do uso do disco rígido.

Os QTreeMaps são apresentados em áreas retangulares; a área total do retângulo representa o tamanho total da partição a ser visualizada. Os diretórios e arquivos são mostrados em áreas proporcionais a seu tamanho. A estrutura de um diretório usando um terço do espaço disponível em uma partição vai também ocupar um terço da área disponível para exibição. Um subdiretório dessa estrutura contendo metade do tamanho de toda estrutura ocuparia metade da área de exibição, e assim por diante.

Mapas de árvores são particularmente úteis em situações nas quais têm de ser apresentadas hierarquias dependentes de tamanho, como sistemas de arquivos, tráfego de rede, e gerenciamento de conteúdo ou de organização.

QTreeMap suporta mapas de árvores clássicos, quadráticos e diferentes esquemas de cores, baseados em expressões regulares. Os mapas de árvores gerados podem ser carregados e gravados em XML, ou salvos como bitmaps.

De acordo com o autor, os problemas específicos do QTreeMap são os problemas usuais, específicos do KDR. como a falta de um algoritmo de "cushion", como aquele existente em "Sequoia View", o programa proprietário que inspirou QTreeMap. Ele não pôde ser implementado porque Alexander não conseguiu compreender os coneceitos matemáticos usados em sua construção.

QTreeMap foi escrito em C++, depois de Alexander ter experimentado com o algoritmo em Python. De acordo com ele, há dois projetos similares, mas ambos escritos em Java. Como os projetos KDirStat e KProf [9] mostram, QTreeMap é usável, e por isso os desenvolvedores interessados devem dar uma olhada.

Dap

Outro novo membro do Projeto GNU é Dap [10], de Susan Bassein. Dap, que significa "Data Analysis & Presentation", ou "Análise e Apresentação de Dados", é liberado sob GPL, Licença Pública Geral do GNU.

Dap oferece as funções básicas para gerenciamento, análise e visualização gráfica de dados, da forma que são comumente usados em consultoria estatística e educação. Ele também é útil para gerenciar conjuntos de dados; a própria Susan usa o Dap para fazer seu imposto de renda e a folha de pagamento de seu empregado.

O programa é escrito em C, e usuários com experiência em C não devem ter nenhum problema depois de estudar os exemplos fornecidos com o pacote.

Uma vez que o Projeto GNU já incluia um pacote estatístico chamado "R", ele agora oferece duas alternativas. Ao passo que R é orientado ao objeto, Dap segue a abordagem procedural. Os usuários dos programas proprietários "S" ou "S-Plus" provavelmente vão preferir o R, e os usuários do pacote não livre "SAS" vão rapidamente se sentir em casa com o Dap.

O Dap usa melhor a memória. R primeiro lê todo o arquivo na memória, ao passo que Dap trabalha orientado a linhas, o que o torna recomendável para conjuntos muito grandes de dados.

Os problemas mencionados por Susan são de que o Dap tem menos testes estatísticos que o R, e que não foi otimizado para maior velocidade. São metas para desenvolvimento futuro o reparo dessas falhas, bem como o aumento de sua funcionalidade.

Apesar desses problemas, Dap tem sido usado há quase três anos; por isso foi rigorosamente testado, e pode ser recomendado para os usuários interssados.

GNUComm

Os três projetos a seguir tem como objetivo fazer avançar o metaprojeto GNUComm [11], que está criando um ambiente para comunicações completo e flexível, baseado em componentes interativos.

Uma parte do metaprojeto GNUComm é o Bayonne [12], o servidor de telefonia introduzido no número 16 [13]. Um dos aspectos focais do desenvolvimento do GNUComm é a interoperabilidade e a integração com o projeto GNU Enterprise [14]. O GNU Enterprise trabalha para ser uma solução completa no campo do assim chamado "Enterprise Resource Planning" (ERP), ou "Planejamento dos Recursos da Empresa", e trará o Software Livre a esta área largamente proprietária. Mais informações podem ser encontradas no número 24 [15] do Admirável Mundo GNU.

GNU ccRTP

O objetivo do projeto ccRTP [16] é implementar os padrões do RFC para o "Realtime Transport Protocol" (RTP), ou "Protocolo de Transporte em Tempo Real", que permite o transporte em uma rede de dados dependentes do tempo, como áudio ou vídeo.

Os fluxos são transmitidos em pacotes contendo informações de tempo, para permitir atribuições corretas na extremidade receptora. Tipicamente, isto é feito por pacotes UDP, pois os problemas de rede não bloqueiam sua transmissão, que destruiria a sincronização.

ccRTP implementa isso de modo orientado ao objeto em uma biblioteca de classes C++, sob a GPL, Licença Pública Geral do GNU. Os autores, David Sugar e Frederico Montesino Pouzols, desejam que ccRTP se torne a implementação do RTP mais versátil, de melhor desempenho e mais aderente aos padrões. Eles já deram vários passos nesta direção.

O GNU ccRTP já suporta multicast, assim como a transmissão ponto-a-ponto, múltiplos fluxos de entrada e RTCP, de "Real-Time Control Protcol", ou "Protocolo de Controle em Tempo Real". Além disso, a transição para o IPv6 já foi preparada, e é possível até mesmo a filtragem de pacotes em tempo real, bem como fluxos de de dados de modos mistos. Isto permite recursos como a sinalização do tipo RFC 2833 dentro de um fluxo de dados.

São possíveis as altas taxas de transmissão requeridas para dados de vídeo, bem como a reconstrução parcial de pacotes e o roteamento "Classe de Serviço". Assim, a biblioteca já pode ser usada tanto por clientes como por servidores.

O trabalho atual é feito no RSVP, de "Resource ReSerVation Protocol", ou "; e na finalização ao suporte a RTCP. O próximo passo será a documentação adequada do projeto, que está fazendo falta.

É muito benvinda a ajuda de especialistas em programação em tempo real, bem como bons autores de documentação. Particularmente os últimos são muito mais difíceis de encontrar do que se possa supor.

GNU ccAudio

O projeto ccAudio [17] também foi iniciado por David Sugar. Como o nome sugere, seu objetivo é a criação de uma biblioteca de "propósito geral" para a manipulação de dados de áudio, tanto no disco rígido como na memória.

Assim ccRTP, ccAudio é implementado como uma bibliioteca de classes em C++ sob a GPL (Licença Pública Geral do GNU) e, como se originou no projeto GNU Bayonne, ele é parte do meta projeto GNUComm.

Atualmente ccAudio suporta o acesso a dados de áudio a partir do disco rígido, através da libsndfile e outras bibliotecas, e oferece recursos básicos do processamento de sinal e áudio. Ele trata os dados de áudio na forma de amostras discretas e pode tratar com cabeçalhos RIFF, entre outras coisas.

David considera particularmente notável o tratamento de dados de áudio como conjuntos de amostras, em vez de buffers binárias em formato de byte. E ccAudio também pode lidar com diferentes formatos de codificação de amostragem, posição de dígitos (endianness), e canais múltiplos.

Quanto a possíveis plataformas para ccAudio, elas são sistemas similares ao Unix, bem como Win32. Por isso, os desenvolvedores nesta área devem se sentir encorajados a dar uma olhada.

Futuros desenvolvimentos serão dirigidos a um maior suporte a codecs carregáveis dinamicamente, bem como a tornar mais codecs disponíveis. David está também considerando incluir transformadas de Fourier (FFT) e diferentes formas de mistura (mixing) e transformação de áudio no ccAudio. Seria muito benvinda ajuda de alguém com mais experiência no processamento digital de áudio e de sinais.

ccScript

GNU ccScript [18] é, como Common C++, Bayonne, ccRTP e ccAudio, um projeto sob manutenção de David Sugar, que, bem humorado, declarou que isto faz dele um "penta-mantenedor".

A biblioteca de classes ccScript, escrita sob C++ e sob a GPL (Licença Pública Geral do GNU), fornece uma máquina virtual (VM) para aplicações em tempo real em sistemas de transição de estados dirigidos por eventos. A linguagem de montagem ("assembler") desta máquina está sendo usado no GNU Bayonne e em outras partes do projeto GNUComm para a criação de scripts para controlar a interação com o usuário.

É intuitivo que uma velocidade de execução bem definida seja muito importante para ambientes em tempo real, exatamente para o que ccScript foi escrito. Qualquer operação em ccScript é determinística. A única exceção disto são operações para as quais isteo é impossível, como consultas a bancos de dados e similares. Devido a isso, ele não pode tratar de expressões complexas ou com término em aberto, ou "open-ended".

Mesmo que ofereça funcionalidade generalizada e macros, ccScript não deve ser confundido com projetos como Guile ou Tcl, pois eles são muito mais versáteis, e não tem capacidade de tempo real equivalentes.

Os próximos passos no desenvolvimento do ccScript são: a sintaxe será reestruturada e um tanto clarificada; outras partes da linguagem serão oferecidas como módulos carregáveis. Este projeto também precisa de ajuda em sua documentação -- por isto, se você sente que pode fazer isto, por favor faça-o.

Chega

Muito já foi escrito por este mês. Uma única coisa ainda: gostaria de informar que a "GNU Transport Layer Security Library" (GTLS), ou "Biblioteca GNU de Nível de Transporte de Segurança", está procurando um novo logotipo, e iniciou o "GNUTLS Logo Contest", [19], ou "Concurso para o Logotipo do GNUTLS". Se você gostaria que seus trabalhos artísticos fizessem parte do Projeto GNU, esta é uma boa oportunidade.

É claro que estou pedindo que enviem muitos impulsos, idéias, comentários, críticas e novos projetos por e-mail [1].

Informações
[1] Enviem idéias, comentários e questões para Admirável Mundo GNU <column@brave-gnu-world.org>
[2] Página inicial do Projeto GNU http://www.gnu.org/home.pt.html
[3] Página inicial da Admiravel Mundo GNU, de Georg Greve http://brave-gnu-world.org/brave-gnu-world-2001.pt.html
[4] Campanha "Nós rodamos GNU" http://www.gnu.org/brave-gnu-world/rungnu/rungnu.pt.html
[5] Página inicial do GNU grep http://www.gnu.org/software/grep/
[6] Página inicial do GNU UnRTF http://www.geocities.com/tuorfa/unrtf.html
[7] Página inicial do QTreeMap http://qtreemap.sourceforge.net
[8] Página inicial do KDirStat http://kdirstat.sourceforge.net/kdirstat/
[9] Página inicial do KProf http://kprof.sourceforge.net
[10] Página inicial do Dap http://www.gnu.org/software/dap/dap.html
[11] Página inicial do projeto GNUComm http://www.gnu.org/software/gnucomm
[12] Página inicial do GNU Bayonne http://www.gnu.org/software/bayonne
[13] Admirável Mundo GNU - número 16 http://www.gnu.org/brave-gnu-world/issue-16.en.html
[14] Página inicial do GNU Enterprise http://www.gnue.org
[15] Admirável Mundo GNU - número 24 http://www.gnu.org/brave-gnu-world/issue-24.pt.html
[16] Página inicial do GNU ccRTP http://www.gnu.org/software/ccrtp
[17] Página inicial do GNU ccAudio http://www.gnu.org/software/ccaudio
[18] Página inicial do GNU ccScript http://www.gnu.org/software/ccscript
[19] Concurso para Logotipo do GNUTLS http://www.gnu.org/software/gnutls/logo-contest


[ Número anterior | Página inicial do Admirável Mundo GNU ]

Retornar à Página inicial do GNU.

Envie perguntas & questões sobre a FSF & o GNU para gnu@gnu.org.
Também existem outras formas de contactar a FSF.

Envie comentários (em inglês ou alemão) sobre o Admirável Mundo GNU de Georg Greve para column@gnu.org,
envie comentários sobre estas páginas na Web para webmasters@www.gnu.org,
envie outras questões para gnu@gnu.org.

Copyright (C) 2001 Georg C. F. Greve
Tradução para o português por H. Fernandes e Fernando Lozano

É dada permissão para fazer e distribuir cópias literais deste transcrito, desde que sejam mostrados o copyright e esta declaração de permissão.

Last modified: Mon Dec 17 12:43:53 CET 2001