100
WWW.LINUXMAGAZINE.COM.BR tecnologia sem limites CD DO ASSINANTE: ASTERISK@HOME 2.5 Voz sobre IP p.23 » Monte um PBX VoIP em casa com o Asterisk » OpenWengo e Ekiga: alternativas ao Skype » Telefonia IP com o Linphone » KPhone: softfone versátil Veja tambem: » Hora certa na rede com NTP » A febre do jogo Sudoku chega ao Linux » Compilação multiplataforma de projetos Visual Basic » Aprenda a converter, copiar e rodar filmes no Sony PSP Controle total p.46 Análise dos principais gerenciadores de projetos Número 18 Março 2006 Google Maps API p.54 Acrescente mapas ao seu site Criação 3D Gráficos tridimensionais com Python p.72 Blender: tutorial de animação p.60 Klik p.84 Instalação fácil de programas 100 páginas! exemplar de assinante venda proibida http://supertuxbr.blogspot.com

linux magazine br 18

  • Upload
    -

  • View
    349

  • Download
    9

Embed Size (px)

DESCRIPTION

linux magazine br 18

Citation preview

WWW.LI N UXM AGAZI N E.COM .BR

tecnologia sem limites

CD DO ASSI NANTE: ASTERISK@HOME 2.5

Voz sobre IPp.23

» Monte um PBX VoIP em casa com o Asterisk» OpenWengo e Ekiga: alternativas ao Skype» Telefonia IP com o Linphone» KPhone: softfone versátil

Veja tambem:» Hora certa na rede com NTP» A febre do jogo Sudoku chega ao Linux» Compilação multiplataforma de projetos Visual Basic» Aprenda a converter, copiar e rodar filmes no Sony PSP

Controle total p.46

Análise dos principaisgerenciadores de projetos

Linux M

agazine

Núm

ero 18Vox so

bre IP A

sterisk O

penW

engo

Ekiga Lin

pho

ne

KPho

ne

Pytho

n

Blender

NTP

Sudo

ku PSP

Visual Basic

Núm

ero

18

Mar

ço 2

006

Google Maps API p.54

Acrescente mapas ao seu site

R$10,90€ 5,50Ed. 1803/2006

977

1806

9420

09

00

01

8

Criação 3DGráficos tridimensionais com Python p.72

Blender: tutorial de animação p.60

Klik p.84

Instalação fácil de programas100páginas!

100 págs.

exem

plar

de

assi

nant

e

vend

a pr

oibi

da

http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

FUD e autocríticaPrezado leitor, prezada leitora da Linux Magazine,

é fato: o Linux é mais seguro e tem um TCO (“Custo Total de

Propriedade”, que compreende o custo de propriedade, operação

e manutenção) bem menor que o do Windows®. Já falamos sobre

segurança no editorial da 6ª edição e sobre o TCO no da 4ª. Entre-

tanto, há motivos para abordar esses dois pontos novamente.

Para começar, um levantamento da alemã Soeren Research no

final de 2004 confere ao Linux na estação de trabalho corporativa um TCO 20%

menor do que o do Windows. À mesma época, pesquisa da australiana Cybersource

indicou um TCO entre 19% e 36% menor para o Linux. E um análise realizada em

fevereiro de 2006 pela norte-americana Enterprise Management Associates mostra

valores detalhados de reduções de custos em todas as áreas de TI de 200 empresas,

que indicam um TCO ainda mais baixo que os das análises anteriores.

É importante dizer que tanto o tema TCO quanto a questão da segurança são fre-

qüentemente usados para disseminar um conceito denominado FUD (acrônimo em

inglês para “Medo, Incerteza e Dúvida”). Historicamente atribuído a Gene Amdahl,

após ter deixado a IBM, para definir uma espécie de coerção implícita feita por um

fornecedor a um cliente, para intimidá-lo a não adquirir a solução do concorrente, o

neologismo FUD foi cristalizado pela expressão: “Ninguém jamais foi demitido por

comprar IBM”. Há dois tipos de FUD: o implícito, indireto, e o escancarado.

O relatório anual de vulnerabilidades do US-CERT (United States Computer

Emergency Readiness Team) é o exemplo mais recente de FUD implícito: nele, o

sumário das brechas de segurança de 2005 foi apresentado de uma forma que

passa a seguinte mensagem ao leitor: “O Windows é três vezes mais seguro que o

Linux!”. Afinal, foram relatadas ali “apenas” 812 vulnerabilidades para o Windows,

contra 2.328 para “Unix/Linux”. Olhando para o relatório mais de perto, entretan-

to, percebe-se que praticamente todas as falhas de segurança aparecem listadas

múltiplas vezes – para as diferentes distribuições Linux isoladamente. Se olharmos

para os números dos Technical Cyber Security Alerts (alertas sobre problemas de

segurança ao longo do tempo) publicados pelo mesmo US-CERT em 2005, vamos

encontrar o seguinte resultado: de um total de 22 alertas publicados, 11 foram

para plataformas Windows, 3 para produtos da Oracle, 2 para produtos da Cisco,

1 foi para o Mac OS X e nenhum foi para o Linux.

O segundo tipo de FUD é aquele em que a empresa que deseja atacar seu oponente

o faz diretamente. A campanha “Veja os fatos” da Microsoft é o melhor exemplo dessa

modalidade atualmente. Entretanto, se no exterior a malha de serviços em torno do

Linux e do Software Livre e de Código Aberto (SL/CA) já se encontra mais madura

e profissionalizada, no Brasil esse tipo de campanha ainda pode ter uma base de

verdade: quantos não serão os casos de empresas atualmente prestando serviços de

má qualidade em SL/CA? Que tal aproveitar a munição gratuita dos “casos de sucesso”

que a gigante de Redmond nos esfrega na cara para exercitar a nossa autocrítica e

melhorar a nossa oferta de serviços, produtos e soluções baseados em Linux? Uma

coisa é certa: se depender somente da tecnologia, empresas bem atendidas não terão

motivos para voltar para o mundo proprietário.

Rafael Peregrino da Silva

Editor

Expediente editorialEditores Rafael Peregrino da Silva, [email protected] Emerson Satomi, [email protected]

Direção de Arte e Projeto Gráfico Luciano Hagge Dias, [email protected] Judith Erb, [email protected]

Centros de Competência Centro de Competência em Software: Oliver Frommel, [email protected] Centro de Competência em Hardware: Mirko Dölle, [email protected] Centro de Competência em Redes e Segurança: Achim Leitner, [email protected]

Correspondentes & Colaboradores Alberto Planas, Ana M. Ferreiro, Augusto Campos, Christiano

Anderson, Denis Galvão, Frank Wieduwilt, Joe Casad, Jon Kent, José A. García Rodriguez, Kristian Kissling, Marc André Selig, Martin Loschwitz, Miguel Koren O’Brien de Lacy, Mirko Dölle, Oliver Frommel, Peter Kreusel, Rafael Peregrino da Silva, Simone Schäfer, Tim Schürmann.

Revisão Ermida, [email protected] Livea Marchiori, [email protected]

Design da Capa Pinball, [email protected]

Anúncios: www.linuxmagazine.com.br/Advertise Brasil Claudio Bazzoli, [email protected] Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Todos os países (exceto Alemanha, Áustria e Suíça) Brian Osborn, [email protected] Tel.: +49 (0)6509 910 495 Fax: +49 (0)6509 910 497 Alemanha, Áustria e Suíça Osmund Schmidt, [email protected] Tel.: +49 (0)6335 9110 Fax: +49 (0)6335 7779Diretoria Rafael Peregrino da Silva, [email protected] Claudio Bazzoli, [email protected]

Linux Magazine Rua Arizona, 1349 Conj. 5B – Cidade Monções 04567-003 – São Paulo – SP – Brasil Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410Assinaturas: www.linuxnewmedia.com.br Preço (12 edições incluindo CD mensal): R$159,90 Email: [email protected] Preço Unitário: R$10,90Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linux-magazin.ro – RomêniaApesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por conseqüências que advenham de seu uso. A utilização de qualquer material da revista bem como do CD-ROM incluso ocorre por conta e risco do leitor. O CD-ROM foi testado extensivamente e, até onde pudemos verificar, se encontra livre de qualquer vírus ou outro tipo de software de conteúdo malicioso, bem como de defeitos.Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, são fornecidos para publicação ou licenciamento a terceiros de forma mundial não exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado.Linux é uma marca registrada de Linus Torvalds.Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda., São Paulo/SP, Brasil.Direitos Autorais e Marcas Registradas © 2004 - 2005: Linux New Media do Brasil Editora Ltda.Distribuído por DistmagImpressão e Acabamento: ParmaISSN 1806-9428 Impresso no Brasil

www.linuxmagazine.com.br

março 2006 edição 18 3

Bem-vindo Editorial

http://supertuxbr.blogspot.com

Análises 40Do arco da velha 40No Arch Linux, menos é mais.

Controle Total 46Comparativo de gerenciadores de projetos.

Notícias 10Entrevista 10Rogério Araújo, diretor comercial da Mais Telecom.

Mundo livre em revista 12Dicas de [In]segurança 18Notícias do kernel 20

Capa 23Alô mundo! 23A revolução VoIP também pegou o Linux.

VoIP em casa 24Como usar o Asterisk na rede doméstica.

Alô, é o Linux? 30Conheço o softphone do KDE: o KPhone.

Bem conectado 32Linphone: um cliente simples e versátil.

Livre para ligar 36Conheça o OpenWengo e o Ekiga.

Tutoriais 54Distância segura 54Como usar a API do Google Maps.

Curvas suaves 60Crie objetos tridimensionais com o Blender.

Cartas 06

4www.linuxmagazine.com.br

Índice Linux Magazine

março 2006 edição 18

23 Alô mundo!O mercado de soluções VoIP (Voz sobre

Internet Protocol) vive um boom hoje no

Brasil. Como o Linux sempre foi rápido em incorporar e se

adaptar às novas tecnologias, atualmente há muito Software

Livre para telefonia IP.

Vamos abordar como confi gurar o consagrado programa

Asterisk para implementar um PBX VoIP doméstico. Analisa-

mos também dois dos mais versáteis softphones (telefones via

software): o KPhone, para KDE, e o Linphone.

Conheça também os clientes VoIP OpenWengo e Ekiga (o

antigo Gnome Meeting) e o framework de código aberto Tapio-

ca, desenvolvido no Brasil pelo InDT, instituto de pesquisas

fi nanciado pela Nokia.

46 Controle total

O gerencia mento

de pro jetos é uma

área não muito co-

nhecida no Linux,

mas conta com

muitas opções.

Neste compara-

tivo, analisamos

tanto ferramentas

para o desktop

(Gantt, Planner e Real Time) quanto as que rodam no nave-

gador (dotProject, Pro jectOpen e Gforge).

40 Do arco da velhaAs maiores

distribuições têm concentra-

do cada vez mais esforços na

usabilidade do Linux como

sistema para desktop.

Mas como fi cam os usuários

mais veteranos, ou que preferem

a boa e velha linha de comando? O Arch Linux vem para satisfazer

hackers sedentos por uma nova distribuição old school.

http://supertuxbr.blogspot.com

��

��

��

���

�����������������������������������������

67 SysAdmin67 Coluna do Augusto

Wiki fácil fácil: TiddlyWiki2.

68 Em pontoGaranta a hora certa da rede com o NTP.

72 Programação72 Manipulação 3D no Python

Visualização tridimensional com o VTK.

78 Portas abertasPortando projetos de Visual Basic para o Linux.

81 Linux User82 CD do Assinante

PBX caseiro com o Asterisk@Home.

84 Iniciar decolagemInstalação fácil com o Klik.

88 Luzes, câmera, ação!Como converter e rodar fi lmes no Sony PSP.

91 Lógica numéricaA febre do jogo Sudoku chega ao Linux.

94 Comunidade94 Planeta GNU

Liberdade e privacidade na web.

95 Serviços95 Mercado / Eventos / Anunciantes96 Linux.local98 Na próxima edição

www.linuxmagazine.com.br

5

Índice

março 2006 edição 18

54 Distância seguraO Google Maps foi um

dos serviços mais inovadores de 2005.

Essa foi uma boa notícia também para

desenvolvedores web, já que a ferra-

menta é aberta para implementações

externas. Saiba como acrescentar ma-

pas do Google ao seu site.

60 Curvas suavesNesse primeiro tutorial

sobre o Blender (para

autoria 3D profi ssio-

nal), vamos aprender

como criar um objeto

tridimensional, para

podermos animá-lo, na

próxima edição.

84 Iniciar decola-gem

A maior dor de cabeça

para usuários iniciantes

do Linux costuma ser a

instalação de progra-

mas. Muitas vezes, a

tarefa de baixar um

arquivo de um site

e instalá-lo se revela

um martírio frus-

trante: dependências,

incompatibilidades com

distribuições, arquivos

espalhados pelo sistema

de arquivos... O Klik

vem para resolver esse

problemas.

Linux Magazine

http://supertuxbr.blogspot.com

Cartas para o Editor

Permissão de escrita

✎ Música Sou músico e vendedor. Comecei a com-

prar a Linux Magazine há pouco tempo

e já quero migrar totalmente para esse

sistema operacional maravilhoso. No

caso da música, tenho um mini estúdio

de música em casa, onde utilizo o Sonar

5 e o Gigastudio 3 sobre o Windows XP ,

instalados no meu computador. Sendo

assim, gostaria de saber qual Linux utili-

zar e quais programas seriam indicados

para trabalhar com música e vídeo (se

existem similares ao Sonar 5 e Gigastu-

dio 3). Quanto a profi ssão de vendedor,

gostaria de saber como disponibilizar

um palmtop para Linux e qual Linux

utilizar nesse caso.

Evandro Oldra

Evandro, um bom projeto nessa área

de produção musical é o Planet CCRMA:

ccrma.stanford.edu/planetccrma/software/ . Tra-

ta-se de um repositório que possui prati-

camente todos os programas de produção

musical profi ssional. Mas é preciso usar

a distribuição Fedora, para se benefi ciar

desse sistema.

Uma boa alternativa em Linux ao So-

nar é o Ardour. No entanto, ele não tem

funções MIDI. Para isso, talvez seja melhor

o LMMS. Sobre os palmtops, distribuições

Linux são bem compatíveis com PDAs da

Palm, aproveitando praticamente todas

as suas funções (através do programas

como o KPilot). Há PDAs top de linha que

rodam versões do Linux como sistema

operacional. Entre eles, o Life Drive, da

Palm, e o Sharp Zaurus. ■

✎ Linux Magazine Sou assinante da Linux Magazine Bra-

sil e, recentemente, também da edição

americana. Sou Engenheiro de Compu-

tação e uso Linux há 4 anos em casa,

no trabalho, e também na universidade.

Não pude resistir em comparar as duas

versões da mesma: a impressão que te-

nho depois de ler ambas é que a edição

americana é muito mais voltada para

o público desenvolvedor de Software

Livre e para administradores de redes

e sistemas. Já nas últimas edições de

Linux Magazine Brasil, tenho notado

uma forte tendência para o uso domés-

tico de Linux. Sinceramente, sou a favor

de uma abordagem mais técnica como a

edição americana. Entendo que outros

fatores infl uem, como questões merca-

dológicas, porém mesmo assim gostaria

de uma maior participação desse tipo de

artigo na revista.

Giovane Moreira, Trindade - Goiânia

Olá Giovane. É por isso que dizemos

que a Linux Magazine não

é uma mera tradução,

mas uma “tropicaliza-

ção” das edições alemã,

internacional (à qual

você se refere como “ame-

ricana”) e espanhola.

Hoje, como só temos um

título, temos que atender

a gregos e a troianos, e,

se não fi zermos isso com

cuidado, acabamos por

não satisfazer ninguém.

Aguarde boas novidades a partir do mês

de abril. Vamos ter uma razão para subir

o nível da Linux Magazine brasileira, que

vai passar a ser mais técnica e corpora-

tiva, como é o caso da versão alemã da

Linux Magazine (muito mais pesada que

a versão internacional). ■

✎ Filosofi a de Vida Venho me juntar aos inúmeros leitores

da Linux Magazine e usuários satisfei-

tos (com certeza!) do Linux. Comecei

utilizando o Linux por curiosidade e, de

teste em teste, fui passando por diver-

sas distribuições até, fi nalmente, chegar

ao Suse Linux , que acreditei (por um

bom tempo) possuir todos os atributos

que buscava (apesar de ser muito len-

to)… Isso até conhecer o Ubuntu Linux !

Convertido na verdade em Kubuntu, com

a ajuda do KDE 3.5 .

O Kubuntu é rápido, com uma inter-

face gráfi ca atraente e muito funcional.

Procuro sempre que posso, aprender

Escreva para a Linux MagazineSe você tem dúvidas sobre o mundo Linux, críticas ou sugestões que possam ajudar a melhorar nossa revista, escreva para [email protected]. Devido ao volume de correspondência, é impossível responder a todas as mensagens, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas nesta seção. Para dúvidas ou críticas referentes à sua assinatura da Linux Magazine, use o endereço: assinaturas@linux magazine.com.br

Se você tem interesse em contribuir com um artigo, leia primeiro as dicas e instruções em nosso site, na seção Torne-se Autor, e entre em contato conosco através do endereço [email protected].

Aguardamos sua colaboração!

Cartas para a gente

6

Escreva para a gente

www.linuxmagazine.com.br

mês 200X edição xxhttp://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

um pouco mais sobre o Linux, por-

que quando você conhece o sistema do

pingüim, passa a adotá-lo como uma

“Filosofi a de Vida”.

Na edição de número 14, com a maté-

ria de capa: Linux no Escritório, à página

26 era informado que o OpenOffi ce.org

era incapaz de abrir arquivos do Excel

protegidos com senha. Hoje ao tentar

abrir um arquivo protegido por senha o

Calc me surpreendeu e abriu o arquivo

sem problema. Tentei abrir outro arquivo

e novamente consegui.

Celio de Andrade Filho

O lado social e “fi losófi co” do GNU/Linux

é apaixonante mesmo. Felizmente, o siste-

ma não se resume a isso. Também é bem

prático. Sobre o OOo, provavelmente você

está rodando uma versão mais nova dele.

Esse recurso só foi implantado com segu-

rança a partir da versão 2.0 beta. ■

✎ CD Venho acompanhando essa revista há

algum tempo, e sempre que há assun-

tos interessantes eu compro em bancas,

como fi z com a edição 17. Vi que essa

edição vem com CD, mas o mesmo não

veio junto. Lendo um pouco mais vi que

estou sendo prejudicado em relação a

quem assina a mesma. Gostaria de saber

como receber esses CDs ou baixar da

Internet os mesmos.

Celso Henrique

Celso Henrique, você não está sendo

prejudicado. A retirada do CD, em conjun-

to com outras medidas possibilitou uma

redução de aproximadamente 27% no

preço da revista. Quanto a efetuar uma

assinatura da Linux Magazine, experi-

mente e você verá que é diferente. A ver-

são da distribuição que disponibilizamos

em CD nesta edição pode ser baixada

diretamente em iso.adamantix.org/downlo-

ad/adamantix-v1.0.4-4.iso . ■

✎ Que dia? Gostaria de parabenizá-los por esta

excelente publicação, pois a cada mês

a revista esta melhor, porém eu tenho

uma queixa a fazer: que dia do mês a

revista sai? Tenho todos os números,

mas me parece que a cada mês ela sai

em data diferente. Assim que acabo de

ler a revista do mês não vejo a hora

da próxima sair, a data parece não

ser padrão.

Leandro de Araujo Julio, Diadema - SP

Olá Leandro. Obrigado pela mensa-

gem. Tentamos todos os meses colocar

a Linux Magazine nas bancas na pri-

meira semana de cada mês. No entanto,

eventualmente, isso não é possível por

problemas de logística. ■

Cartas para a gente

8

Escreva para a gente

www.linuxmagazine.com.br

mês 200X edição xxhttp://supertuxbr.blogspot.com

Please examine materials carefully. For concerns, immediately contact Jamie Isanhart at 312.220.3629.

Client: Oracle Corporation

File Name: 405G1029.indd

Description Short: Grid_ConnectDbSrvr/

Brazil#

Production Category: Print

Palette: 4/C

Release Date: 04.20.05

Size: Page

Non Bleed:

Bleed: 215 x 295 mm

Trim: 205 x 275 mm

Live:

Java

Oracle Grid

Copyright © 2005, Oracle. Todos os direitos reservados. Oracle é uma marca registrada da Oracle Corporation e/ou de suas afi liadas.Outros nomes podem ser marca registrada de seus respectivos proprietários.

oracle.com/gridou ligue para 0800.901.985

Oracle GridÉ rápido... é barato...

E está sempre disponível

Obs.: “Sempre disponível” indica que, se um servidor cair, seus aplicativos continuam rodando.

Todos os seus bancos de dados

Em GRIDSem desperdício de capacidade

Sem desperdício de dinheiro

Sem ponto único de falha

http://supertuxbr.blogspot.com

O mercado de telefonia IP está finalmente tomando forma no Brasil. Já há diversas operadoras em atividade, além de um sem-número de empresas fornecedoras de serviços. Conversamos com a Mais Telecom para obter informações atualizadas sobre telefonia IP na terra brasilis.Por Rafael Peregrino da Silva

Rogério Araújo, Diretor Comercial da Mais Telecom

Fale mais,pague menos!

A Mais Telecom está no mercado

há quatro anos. Inicialmente

atuando como representante da

StarNetwork, uma das primeiras empre-

sas a comercializar VoIP no Brasil (hoje

sem presença no país), e, posteriormente,

associada ao Grupo Conceito Telecom, a

empresa passou a ter vida própria como

operadora de telefonia IP a partir de 2004.

Rogério Araújo, diretor comercial da

Mais Telecom, nesta entrevista exclusi-

va para a Linux Magazine, fala sobre as

características e tendências do mercado

brasileiro de telefonia web.

Linux Magazine» Como está o mercado de pro-

vedores VoIP para clientes domésticos?

Rogério Araújo» O mercado está começan-

do a aquecer. As empresas já estabeleci-

das nesse mercado estão começando a

voltar seus olhos para a “pessoa física”.

Nós, por exemplo, fechamos parcerias

com empresas de TV a cabo e prove-

dores de Internet de banda larga, uma

vez que eles já possuem uma carteira

expressiva de clientes em pessoa física

e têm interesse em oferecer o serviço de

telefonia web para esses usuários. Em

geral, essas empresas, entretanto, não

têm estrutura e conhecimento para ofe-

recer o serviço e estão se associando a

provedores VoIP. Falando apenas das

projeções da Mais Telecom, que são as

que conheço, a estimativa é de que até o

final do primeiro semestre de 2006 nós

tenhamos 400.000 usuários domésticos

operando na nossa plataforma. Hoje eu

já tenho testes realizados e contratos

fechados para colocar em operação o

serviço para cerca de 220.000 usuários

– todos eles usando os chamados sof-

tphones (aplicativos que simulam um

telefone no computador). Além disso,

estamos agregando outros serviços à

telefonia IP, como os de televisão e tele-

jornalismo, usando para isso um cliente

VoIP especial. Por exemplo, através de

uma parceria com a TV Cidade, que é

uma operadora de TV a cabo da região

de Marília, nós vamos disponibilizar o

conteúdo da Band News através desse

canal de comunicação.

LM» Quais são as dificuldades inerentes

à tecnologia?

RA» A tecnologia é complexa, mas desde

que se faça a coisa certa, os resultados

são excelentes. Mas você tem que saber

o que está fazendo. As configurações

têm que estar corretas em cada plata-

forma. Além disso, a tecnologia mudou

radicalmente de um ano e meio para cá.

Antigamente, o protocolo utilizado era

o H.323 e agora quase todo mundo está

usando SIP (do inglês Session Initiation

Protocol, ou Protocolo de Iniciação de

Sessão). Também não se deve procurar

baixar custos indiscriminadamente. Há

operadoras que compram “minutagem”

no exterior para baixar os custos ao

máximo e isso leva inevitavelmente a

problemas de qualidade da conexão.

LM» Mas os preços são muito menores

de qualquer modo, não?

RA» São, mas a gente tem que olhar as

coisas com calma. Primeiro: como fun-

ciona uma ligação de longa distância (a

famosa DDD), ou mesmo uma chamada

internacional (a DDI) via VoIP? A idéia

é simples: em geral, o cliente liga para

o meu servidor usando um softphone,

por exemplo de São Paulo para Salva-

dor. A ligação dele cai no meu servidor

alocado na Diveo, aqui da Vila Olímpia,

em São Paulo, que roteia os dados da

ligação para um parceiro meu em Salva-

dor. Em Salvador, essa chamada VoIP é

convertida em uma chamada telefônica

convencional e o número solicitado é

chamado. O custo dessa ligação para

a operadora é o de uma chamada local.

Quando a infraestrutura VoIP estiver

Foto: cortesia Mais Telecom

Notícias

10

O mercado VoIP no Brasil

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

totalmente estabelecida no Brasil e todas

as operadoras VoIP puderem interoperar

com as prestadoras de serviço telefônico

comutado tradicional, as coisas vão ficar

ainda melhores.

Agora voltemos à questão da qualida-

de: se eu uso a infraestrutura da Embra-

tel para fazer ligações, eu ainda pago um

valor relativamente alto, pois a Embratel

me cobra caro pela “minutagem” que

eu compro dela todos os meses. Afinal,

meu volume de “minutagem” mensal

não é tão alto – pelo menos ainda. Mas

a qualidade é ótima. Há empresas aqui

no Brasil, entretanto, que compram a

“minutagem” de outras operadoras VoIP

nos Estados Unidos – que também aten-

dem em todo o Brasil. Essas operadoras

americanas, por conta do volume de

“minutagem” que compram da mesma

Embratel, têm um preço de R$ 0,05 por

minuto (com impostos). Uma ligação

VoIP de São Paulo para Uberlândia, por

exemplo, é roteada até Miami e rerote-

ada até Uberlândia, de modo que esses

dados viajam muito antes de chegarem

ao destinatário. Eles saem do Brasil, são

roteados até os Estados Unidos e de lá

voltam para o Brasil, sendo reconvertidos

para chamada convencional na cidade

destino da ligação. Conseqüentemente,

há grande perda de qualidade de sinal.

Só que as empresas que trabalham as-

sim podem vender um pacote de 100

minutos para o usuário por R$10,00 e

ainda ter uma margem excelente. A gente

paga, trafegando somente aqui dentro do

Brasil, em torno de R$ 0,12 por minuto

(com impostos). Diversas operadoras

brasileiras recompram esses minutos

das prestadoras de serviço americanas,

que repassam esses minutos para elas.

Só que a qualidade é ruim.

LM» Os provedores VoIP brasileiros fun-

cionam com outros softphones além dos

fornecidos por eles?

RA» Se o provedor utiliza um padrão

aberto (SIP, IAX, H323), você pode usar

qualquer softphone que “converse” nes-

ses protocolos. O que pode acontecer é

que você demore um pouco mais para

configurar de maneira correta o seu

softphone “genérico”, mas o suporte

do provedor pode te ajudar. Além dis-

so, muitas operadoras estão oferecendo

outros serviços agregados aos seus soft-

phones, como é o nosso caso com o for-

necimento de TV. Isso só vai funcionar

com o nosso software.

LM» Quanto tempo você acredita que vai

levar para que a telefonia IP substitua a

telefonia convencional aqui no Brasil?

RA» Veja, a Anatel está regulamentando

o mercado. A partir de junho, ligações

via VoIP vão funcionar nos dois sentidos,

ou seja, você vai poder fazer e receber

chamadas via telefonia IP. Essa mudança

vai dar um grande impulso na disse-

minação da tecnologia. Nós fechamos

o ano passado com uma participação

de 4% do mercado – 80% somente com

planos para pessoa jurídica. Segundo

um estudo da Teleco (www.teleco.com.br),

nos próximos quatro anos a tecnologia

VoIP deverá atingir uma penetração de

30% do mercado brasileiro.

LM» Já seria possível receber chamadas

via VoIP no Brasil?

RA» Sim, para as empresas que já pos-

suem uma faixa de numeração e dispo-

nham da tecnologia adequada (como

a fornecida pela empresa SIPURA, re-

centemente adquirida pela Cisco), já é

possível fornecer números de telefone

aos usuários, para os quais qualquer

um pode ligar. O problema é que essa

tecnologia ainda é muito cara, de modo

que é melhor recomendar ao cliente con-

tinuar utilizando o sistema tradicional

de telefonia para receber as chamadas,

deixando o VoIP apenas para realizar

ligações – pelo menos até que equipa-

mentos mais acessíveis cheguem ao

mercado. No Brasil, a empresa Ebrax

está desenvolvendo os gateways para

recepção das chamadas.

LM» Como é que as operadoras de tele-

fonia tradicionais estão encarando esse

crescimento da telefonia IP?

RA» Elas estão assustadas e “se mexen-

do”. A Telefônica está com sua oferta

de serviços VoIP pronta para lançar, a

Embratel também, e a Telemar já deve

ter lançado a sua quando você estiver

lendo esta entrevista – o lançamento

estava planejado para fevereiro de 2006.

O problema é que, devido à complexi-

dade da tecnologia, são os detalhes e

a experiência da equipe técnica que

fazem toda a diferença. As empresas e

as operadoras especializadas em VoIP

já trazem todo esse know-how no seu

bojo – e vai levar tempo até que a Te-

lefônica, a Embratel e as outras “teles”

desenvolvam essa experiência.

Além disso, uma vez que as opera-

doras VoIP fechem parcerias ou criem

pontos de presença (PoPs) em outras

cidades, os seus clientes, quando ligarem

para essas cidades, estarão na verdade

fazendo praticamente uma ligação local.

Para que então pagar por um DDD da

Embratel ou da Telefônica? Além do mais,

com a tecnologia VoIP é provável que em

cada cidade de médio porte haverá uma

operadora local, muito mais próxima do

cliente do que as operadoras tradicio-

nais e, assim, muito mais capacitadas

a dar um atendimento diferenciado e

de melhor qualidade para a sua base

instalada de linhas telefônicas. No fundo,

a tecnologia VoIP deverá ser um fator

que vai trazer uma melhoria sensível na

qualidade dos serviços telefônicos em

geral, e já representa efetivamente uma

evolução nos serviços de comunicação

de voz em geral. ■

www.linuxmagazine.com.br

março 2006 edição 18 11

O mercado VoIP no Brasil Notícias

http://supertuxbr.blogspot.com

Mundo livre em revista❐ A polêmica GPL3Após 15 anos de versão 2 da GPL (GNU

Public License), a FSF (Free Software

Foundation) liberou um rascunho da

terceira versão dessa licença, que cobre

quase tudo no mundo Linux. As princi-

pais mudanças são o objetivo de impe-

dir que software sob a GPL seja usado

em mecanismos de restrições digitais

ou DRM (Digital Rights Management) e

uma nova forma de proteger programas

contra patentes de software.

Logo veio a polêmica. No começo de

fevereiro, Linus Torvalds anunciou que o

kernel não será licenciado por essa nova

versão da GPL, permanecendo na versão 2.

É o velho embate GNU X Linux, Stallman

X Torvalds, filosofia X business...

Linus fez o anúncio na lista de discus-

são do kernel, junto com outros comentá-

rios. Para ele, a luta contra as restrições

digitais não deveria acontecer no campo

do desenvolvimento de software. Ele

sugere que os ativistas dessa área façam

isso no campo do conteúdo.

A possibilidade de que determinado

hardware só rode kernels assinados di-

gitalmente, por exemplo, em uma típica

proteção DRM, não incomoda Torvalds.

“O fato de que o hardware é fechado é

uma questão de licença do hardware, não

do software. Sugiro que você contate a

empresa de hardware e, possivelmente,

decida não comprar esse equipamento”,

escreveu Torvalds, publicamente, em res-

posta ao desenvolvedor Pierre Ossman.

Situações onde seja impossível rodar

um kernel modificado não seriam uma

má idéia, em muitos casos, na opinião do

criador do Linux. Ele deu o exemplo de

módulos assinados digitalmente para que

o kernel só possa rodar esse tipo de com-

ponente, seguro e bem testado. Ou, então,

esses módulos não-oficiais até poderiam

ser carregados, mas o kernel seria mar-

cado como “manchado”, em uma política

menos segura. Esse tipo de implementação

seria impossível sob a GPL3. Ossman fez

a seguinte pergunta a Linus:

– Então combinar software aberto e

hardware fechado em algo que eu não

possa modificar é OK para você?

– Mas você pode modificar a parte do

software! Essa é a única parte que eu

ligo e, talvez (pelo menos para mim), a

mais importante. Porque é a única parte

que nós criamos. É a única parte que sin-

to termos o direito moral de controlar.

Já Stallman, como fundador e presi-

dente da FSF, não tolera qualquer tipo de

DRM, em uma posição alinhada com a

da Electronic Frontier Foundantion.

Em seu preâmbulo, o rascunho da

nova licença diz que a GPL “assegura

que o software por ela coberto não será

sujeito, nem sujeitará outras obras, a

restrições digitais das quais seja proibido

escapar”. O preâmbulo termina assim:

“Queremos evitar o perigo especial de

que redistribuidores de um Software

Livre obtenham patentes individuais,

tornando o programa de fato proprie-

tário. Para prevenir isso, a GPL deixa

claro que qualquer patente tem que ser

licenciada para uso livre por qualquer

pessoa, ou então que não seja licenciada

de nenhuma outra forma”.

O rascunho da GPL3 está em gplv3.fsf.

org/draft. Uma tradução (feita pelo escri-

tório de advocacia Kaminski, Cerdeira

e Pesserl) pode ser conferida em tinyurl.

com/7sqga. Já o site Groklaw publicou

uma tabela (em inglês) de diferenças

entre a GPL2 e 3: tinyurl.com/bbmrg. ■

CurtasSMS livreO projeto brasileiro jSMS (jsms.com.br) passou a marca de 100 mil downloads na página codigolivre.org.br. Trata-se de um programa em Java para enviar mensagens SMS para celulares da Brasil Telecom, Claro, Vivo, Oi e TIM (é necessário ser cliente da operadora em questão). Por ser escrito em Java, roda nas três principais plataformas: Linux, Mac OS X e Windows®.

Imagens de satéliteO projeto WW2D (ww2d.csoft.ne), de visualização de imagens de satélites, já está quase alcançando a versão 1.0 (no fechamento desta edição, encontrava-se na versão 0.99.87). Feito em Java, está disponí-vel para Linux, Mac OS X e Windows®. É um programa similar ao Google Earth e ao Nasa World Wind, com as opções de se explorar imagens da Lua e de Marte. Requer placa de vídeo com OpenGL funcional.

Procura-se tradutoresA equipe do projeto brasileiro Poseidon Linux (www.poseidon.furg.br) começou a a tradução do Kurumin para o inglês e o espanhol. A distribuição é baseada no Ku-rumin, mas se volta especificamente para o público acadêmico e científico. Quando essas traduções forem concluídas, serão revertidas também para o Poseidon. Atual-mente, faltam pessoas que possam traduzir do português para o espanhol.

Código do Windows será reveladoPara evitar uma multa de € 2,4 milhões por dia, a Microsoft ofereceu revelar uma nova porção do código fonte do Windows® à comissão antitruste da União Européia, no início de fevereiro. Esse grupo já havia alertado de que a empresa seria multada, caso não revelasse informações que permitam às empresas concorrentes desenvolverem programas que se integrem a redes Windows. Até o fechamento desta edição, a resposta da UE ainda não havia sido divulgada. Esse processo antitruste co-meçou em dezembro e deve ser concluído em março deste ano.

Notícias

12

Mundo livre em revista

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

CurtasFirefox atinge 20% na EuropaMais de 20% dos internautas na Europa estariam usando o navegador Firefox, segundo uma pesquisa da empresa de estatísticas web XiTi. O estudo se baseou em 32 milhões de acessos vindos de IPs da Europa no dia 8 de janeiro. A Finlândia é o país onde seu uso está mais difundido, respondendo por 38% dos acessos, seguida por Eslovênia (36%) e Alema-nha (30%). O país com o menor uso é a Ingla-terra (11%). No entanto, essa pesquisa não é muito representativa, já que foi feita em um domingo, quando o uso do Firefox sobe muito. Durante a semana, quando as pessoas usam os computadores do trabalho, esse índice cai.

Solaris sob GPLv3Jonathan Schwartz, presidente da Sun, está consi-derando lançar o Solaris (e todo o Solaris Enterpri-se System) com uma licença dupla: GPLv3 e CDDL (atual licença do Solaris, criada pela Sun com base na licença pública do Mozilla). O motivo é que isso permitiria que o Solaris atingisse clientes e desenvolvedores que preferem a GPL, além de ser uma política que permite mais intercâmbio de componentes entre o Linux e o Solaris. Desde o início do projeto OpenSolaris, em que é possível baixar o sistema gratuitamente (além de poder rodá-lo na plataforma x86), já houve 4 milhões de downloads. 65% dessas instalações rodam em hardware que não é da Sun.

Software Livre na VenezuelaEntrou em vigor este ano na Venezuela um decreto do presidente Hugo Cháves para que todos os órgãos públicos federais migrem para Software Livre em um prazo de dois anos. O objetivo dessa medida é reduzir gastos com licenças e fortalecer a indústria nacional de software. Em 2005, o governo venezuelano gastou US$ 7,5 milhões de dólares com licen-ças proprietárias e outros US$ 12,5 milhões com serviços de “processamento de dados”.

PC pré-pago no segundo semestreO PC pré-pago da Microsoft deve começar a ser vendido no Brasil no segundo semestre, durante o teste mundial desse programa de inclusão digital da Microsoft. Já foram feitos testes em Minas Gerais, Mato Grosso, Paraná e São Paulo. Mas as vendas dessas máquinas de teste continuam sen-do feitas pelo Magazine Luiza. O computador deve custar cerca de R$ 600. Já os cartões com créditos liberam as funções de alguns programas. Quando determinado número de horas for adquirido, o PC passa a pertencer ao usuário.

❐ O Firefox dos tocadoresO Songbird promete chacoalhar o mundo dos tocadores multimídia da mesma forma como

o Firefox agitou o universo dos navegadores. Trata-se de um media player de código aberto,

com navegador embutido e API de extensões aberta. A interface é baseada na linguagem

XUL (XML User Interface Language), usada nos aplicativos da fundação Mozilla.

Assim como o navegador Firefox, o Songbird estará disponível para as três princi-

pais plataformas: Linux, Mac OS X e Windows®. Por enquanto (no fechamento desta

edição), o programa está ainda na versão 0.1, sendo apenas uma "demonstração

de tecnologia", para Windows. A previsão era de que a versão 0.2 fosse lançada

ainda em fevereiro, já para as três plataformas.

Além de ser um programa para gerenciar e tocar músicas em praticamen-

te todos os formatos, ele

também funciona como

um navegador que toca

músicas na web sem sair

da página, além de poder

abrir páginas da internet

como se fossem playlists.

Também deve se integrar

a diversas lojas online de

músicas, além de gravar ou

importar CDs de áudio. ■

www.songbirdnest.home

❐ Cai o preço do Computador para TodosAs redes varejistas brasileiras já estão

oferecendo computadores com Linux

pré-instalado por preços na faixa de R$

1.100, com parcelamento em 12 vezes

sem juros ou prazos de até 25 meses

(com taxas inferiores às do mercado).

O que está impulsionando essa redu-

ção de preços é o programa Computador

para Todos do Governo Federal, a com-

petição entre as redes varejistas, além

da queda do dólar e o credenciamento

de mais empresas junto ao programa de

inclusão digital do governo. Segundo a

Fundação Instituto de Pesquisas Econô-

micas da USP, o preço dos computadores

baixou 14,96% nos últimos 12 meses.

Nas lojas do grupo Pão de Açúcar (in-

cluindo o Extra), por exemplo, um com-

putador Novadata (com a distribuição

Insigne) sai por R$ 1.099 a vista. Outra

empresa que está oferecendo computa-

dores por um preço bem competitivo é

a Compujob (compujob.com.br). O site da

empresa anuncia um PC com processa-

dor Celeron por R$ 999 ou em 25 vezes

de R$ 60. A distribuição que acompanha

esse PC é o Suse 10.0.

No começo de janeiro, o presidente

Luiz Inácio Lula da Silva assinou um

decreto que permite a participação de

empresas com acionistas estrangeiros

na venda do Computador para Todos.

Agora, redes como Carrefour e Walmart

também vão participar.

Fabricantes de computadores estão

produzindo a todo vapor. A Novada-

ta, por exemplo, que atende à rede

Extra, produziu um primeiro lote de

12 mil computadores. Só o Magazine

Luiza já vendeu 21 mil unidades do

Computador para Todos entre 20 de

dezembro e 30 de janeiro. ■

Notícias

14

Mundo livre em revista

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Curtas Criador do Samba premiado Andrew Tridgell ganhou o Free Software Award 2005, por suas contribuições ao Software Livre. Tridgell criou o servidor e cliente Samba fazendo engenharia reversa com o protocolo SMB ( Server Message Blo-ck ). Dessa forma, sistemas livres podem se integrar facilmente a redes Windows®. Ele também é o criador do rsync , o protocolo livre mais usado hoje para a sincronização de servidores de arquivos. Tridgell também criou em 2005 um cliente livre para inte-roperar com o BitKeeper , o sistema proprie-tário de controle de versões que era usado no desenvolvimento do kernel Linux. Isso fez a empresa responsável pelo BitKeeper remover a licença gratuita concedida aos desenvolvedores do kernel, forçando o uso de uma solução livre: o git , desenvolvido pelo próprio Linus Torvalds. Esses foram os motivos apontados pela Free Software Foundation para a premiação de Tridgell.

Simulador de cidades Está disponível para download o jogo LinCity-NG ( lincity-ng.berlios.de ). O game é uma versão mais trabalhada do clássico LinCity , com um novo engine 3D e uma nova interface de usuário. Há versões para Linux e Windows®.

MySQL no governo americano A empresa MySQL AB fechou um contrato de cinco anos com a Administração Geral de Serviços do governo federal norte-ame-ricano. O banco de dados MySQL já roda em muitas repartições federais, estaduais e municipais americanas, como o Depar-tamento de Defesa, a NASA, o Centro de Pesquisas Geológicas, o Laboratório Nacio-nal de Los Alamos, entre outras... Com esse contrato, clientes federais da MySQL AB vão passar a adquirir e implementar solu-ções MySQL através da empresa Carahsoft Technology Corporation.

Aliança vai incentivar Software Livre Grandes empresas de telecomunicações se uniram em uma aliança, chamada SCOPE, para acelerar a adoção de plataformas abertas, hardware padrão e componentes de Software Livre. Fazem parte da SCOPE: Alcatel, Ericsson, Motorola, NEC, Nokia e Siemens. O objetivo é padronizar especifi cações de base para a infra-estrutura técnica de provedores de serviços de telecomunicações nos EUA.

❐ Sonho brasileiro Lançada em fevereiro, o Dreamlinux é a mais nova distribuição brasileira. Trata-se de

um Live CD – baseado em Debian , Knoppix e Morphix – com o ambiente XFCE . Se o

usuário quiser, há a opção de instalar o sistema. Um dos objetivos do Dreamlinux é

fornecer ferramentas gráfi cas para que usuários normais – sem grandes conhecimentos

técnicos – possam projetar e

montar uma distribuição Linux

personalizada. Isso pode ser fei-

to com o MKDistro, uma solu-

ção para a construção de uma

distribuição a partir do zero. A

versão Dreamlinux XFCE 1.2.1 já

está disponível para download,

em um arquivo .iso de 320 MB.

Requer apenas 64 MB de RAM

do computador. ■

www.dreamlinux.com.br

❐ Mandriva cresce no Brasil A Mandriva Conectiva fechou o ano de

2005 com um crescimento de 42% em re-

lação a 2005, com um faturamento de R$

5,1 milhões. Entre as áreas em que a em-

presa mais cresceu, está o setor de treina-

mento, cuja base de parceiros aumentou

50%. Outro fator para o crescimento da

empresa foram as parcerias para sistemas

OEM ( Original Equipment Manufacturer )

com a HP, Positivo Informática e Leader

Tech. No começo deste ano, a Mandriva

Conectiva também fechou parcerias com

a IBM e a Skype. ■

❐ PCs só com Linux Em conjunto com a fabricante Mirus

Innovations, a Linspire lançou uma linha

de PCs em que o Linux é a única opção

de sistema operacional. Trata-se dos mo-

delos Koobox , por enquanto disponível

apenas nos EUA. Essa é a primeira linha

de um grande fabricante de computado-

res feita exclusivamente para rodar uma

distribuição Linux.

O modelo básico custa US$ 299, com

CPU AMD Sempron, 256 MB de RAM e

disco rígido de 40 GB (sem monitor). ■

www.koobox.com

❐ Menor PC do mundo A empresa japonesa Shimafuji lançou o

SEMC5701A, um PC que mede apenas

5 cm x 5 cm e roda Linux. Vem com

processador NEC VR5701 de 333 MHz,

16 MB de memória fl ash (onde fi ca o

sistema operacional) e 64 de memória

SDRAM, além de conectores de áudio,

de rede, USB 2.0 e leitor Compact Flash .

Custa US$ 1.330. ■

http://www.shimafuji.co.jp/product/

semc5701a01.html

❐ A empresa japonesa Shimafuji lançou o

www.linuxmagazine.com.br

março 2006 edição 18 15

Mundo livre em revista Notícias

http://supertuxbr.blogspot.com

❐ Autodesk Discreet Flame para LinuxO Discreet Flame, principal sistema de

efeitos visuais da Autodesk (empresa que

faz o AutoCAD), agora roda em Linux.

Até então esse software profissional

estava disponível apenas para Irix, o

Unix da Silicon Graphics. O programa

é hoje muito usado para a criação de

efeitos cinematográficos em comerciais

televisivos e vinhetas de canais. Além

do Flame, o Discreet Flint e o sistema de

edição Discreet Smoke também foram

portados para o Linux. ■

www.autodesk.com/flame

CurtasOracle compra Berkeley DBA Oracle anunciou a compra da Sleepycat Soft-ware, que tem os direitos do banco de dados embarcado Berkeley DB, em 14 de fevereiro. O DB está entre os bancos de dados embarcados de código aberto mais usados do mundo. Entre os programas que implementam de alguma maneira o Berkeley, estão: MySQL, Apache, Subversion e OpenLDAP. O produto possui um licença dupla: BSD ou comercial. Com a aqui-sição, não foi informado se haveria mudanças nessa política.

Banco do Brasil abandona o FreedowsO Banco do Brasil e sua empresa de tecnologia, a Cobra, abadonaram o Freedows Consortium, um plano para que a distribuição Freedows fosse implementada entre seus membros. A informação foi publicada no jornal Valor, no começo de fevereiro. Um dos motivos para o rompimento teria sido o fato de que o Freedo-ws não teria seu código 100% aberto, já que usa componentes da empresa Codeweavers (responsável pelo “emulador de Windows” Crossover Office). Mas a Free Software respon-de nessa reportagem que estavam previstas duas versões do Freedows: uma 100% aberta, sem os componentes Codeweavers, e outra restrita. Não havendo, portanto, nenhum descumprimento de acordo.

Novell disponibiliza XglA Novell tornou público o projeto em que seus engenheiros já vinham trabalhando desde o final de 2004: o Xgl (www.novell.com/linux/xgl-release), uma camada de aceleração 3D OpenGL para o X. Com isso, ambientes desktop como o Gnome poderão ter efeitos gráficos avançados, sem que isso pese muito para o processador. Não vai demorar para que muitas distribuições comecem a embutir esse componente junto com o X.org 7.0, de estrutura modular.

Palm Linux é apresentandoA Access Co. Ltd., empresa que comprou a divisão de software da Palm, demonstrou seu novo sistema operacional para portáteis: o Access Linux Plattform, durante a feira 3GSM, em Barcelona, no começo de feverei-ro. Além de um kernel Linux, o sistema con-tará com os aplicativos Palm de telefonia e organização pessoal. Será compatível com os aplicativos desenvolvidos para as atuais versões dos sistemas operacionais Palm. Deve ser disponibilizado para programado-res de smartphones no final deste ano.

❐ Goobuntu?No final de janeiro, renasceu o boato sobre

uma distribuição Linux feita pelo Google.

Trataria-se de uma versão do Ubuntu, cha-

mada de Goobuntu. Essas especulações

foram levantadas por um artigo do site The

Register, com base em uma reportagem do

Financial Times, sobre a versão customi-

zada do Ubuntu usada internamente no

Googleplex. A empresa confirmou que

usa uma versão customizada do Ubuntu

nos desktops internos da empresa e que

ela realmente se chama Goobuntu. Mas

negou a existência de quaisquer planos

para lançar essa distribuição.

Uma boa notícia real envolvendo as pa-

lavras-chave Google e Linux é que alguns

aplicativos da empresa de busca vão rodar

mesmo no Linux. Um deles é o gerencia-

dor/editor de fotos gratuito Picasa. O Goo-

gle e a Codeweavers (que faz o Crossover

Office) estão trabalhando em uma versão

do Picasa que rode no Linux. Mas não será

uma versão nativa, serão usados recursos

do Wine. O visualizador de imagens de

satélite Google Earth é outro programa que

está sendo portado para Linux. ■

br-linux.org/linux/node/2722

tinyurl.com/7j96e

br-linux.org/linux/node/2772

❐ Lançado o BrOffice.org.brFoi lançada no final de janeiro a ONG (Orga-

nização Não Governamental) BrOffice.org,

junto com o site de mesmo nome. Criado

em 2002, o projeto OpenOffice.org.br atuou

ativamente na tradução e desenvolvimento

da versão BR do OOo, além de incentivar

sua adoção no país. Vale ressaltar que o

BrOffice.org.br não é um derivado do Open-

Office. É a mesma coisa. Só muda o nome

e a linguagem da interface. A alteração foi

necessária porque a marca OpenOffice.org

já estava registrada no Brasil. ■

broffice.org.br

Notícias

16

Mundo livre em revista

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

Dicas de [In]segurança

❐ Mozilla/Firefox O Mozilla é um navegador de código

aberto; cliente avançado de email, lis-

tas de discussão e IRC ; e editor HTML .

O Firefox é um navegador, mantido pelo

projeto Mozilla.

Igor Bukanov descobriu uma brecha

no modo como o interpretador Javascript

do Mozilla “desreferencia” objetos. Se um

usuário visitar uma página com código

que se aproveite dessa vulnerabilidade,

o Mozilla pode travar ou executar código

arbitrário com os direitos do usuário que

estiver rodando o programa.

O projeto Common Vulnerabilities and

Exposures ( cve.mitre.org ) deu a essa falha

o código CVE-2006-0292 .

Foram descobertos mais dois erros

no Mozilla. moz_bug_r_a4 descobriu

uma falha na função XULDocument.per-

sist() . Uma página com código malicio-

so poderia injetar dados RDF arbitrários

no arquivo localstore.rdf do usuário.

Isso pode fazer o Mozilla executar código

Javascript arbitrário quando um usuário

roda o Mozilla ( CVE-2006-0296 ).

O terceiro erro foi descoberto no his-

tórico. Uma falha do tipo negação de

serviço foi encontrada no modo como

o Mozilla salva dados no histórico. Se

um usuário visitar uma página com

um título bem longo, é possível que o

Mozilla trave ou demore muito para ini-

ciar na próxima vez que for executado

( CVE-2005-4134 ). ■

Referência no Red Hat: RHSA-2006:0199

Postura das principais distribuições Linux quanto à segurançaDistribuição Referência de Segurança ComentáriosConectiva Info: distro2.conectiva.com.br/

Lista: [email protected] e distro2.conectiva.com.br/listaReferência: CLSA-... 1

Possui uma página específi ca; não há link para ela na página principal. Os alertas são sobre segurança, mas distribuídos através de emails assinados com a chave PGP da empresa para assegurar sua autenticidade. Contém também links para os pacotes atualizados e para fontes de referência sobre o problema sendo corrigido.

Debian Info: www.debian.org/securityLista: lists.debian.org/debian-security-announceReferência: DSA-… 1

Alertas de segurança recentes são colocados na homepage e distribuídos como arquivos HTML com links para os patches. O anúncio também contém uma referência à lista de discussão.

Gentoo Info: www.gentoo.org/security/en/gsla/index.htmlFórum: forums.gentoo.orgLista: www.gentoo.org/main/en/lists.xmlReferência: GLSA: … 1

Os alertas de segurança são listados no site de segurança da distribuição, com link na homepage. São distribuídos como páginas HTML e mostram os comandos necessários para baixar versões corrigidas dos softwares afetados.

Mandriva Info: www.mandriva.com/securityLista: www1.mandrdrivalinux.com/en/flists.php3#2securityReferência: MDKSA-… 1

A Mandriva tem seu próprio site sobre segurança. Entre outras coisas, inclui alertas e referência a listas de discussão. Os alertas são arquivos HTML, mas não há links para os patches.

Red Hat Info: www.redhat.com/errataLista: www.redhat.com/mailing-listsReferência: RHSA-… 1

A Red Hat classifi ca os alertas de segurança como “Erratas”. Problemas com cada versão do Red Hat Linux são agrupados. Os alertas são distribuídos na forma de páginas HTML com links para os patches.

Slackware Info: www.slackware.com/securityLista: www.slackware.com/lists (slackware-security)Referência: [slackware-security] … 1

A página principal contém links para os arquivos da lista de discussão sobre segurança. Nenhuma informação adicional sobre segurança no Slackware está disponível.

Suse Info: www.novell.com/linux/securityLista: www.novell.com/linux/download/updatesReferência: suse-security-announce Referência: SUSE-SA … 1

Após mudanças no site, não há mais um link para a página sobre segurança, que contém informações sobre a lista de discussão e os alertas. Patches de segurança para cada versão do Suse Linux são mostrados em vermelho na página de atuali-zações. Uma curta descrição da vulnerabilidade corrigida pelo patch é fornecida.

1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.

Notícias

18

Dicas de [In]segurança

www.linuxmagazine.com.br

março 2006 edição 18

LM18_seguranca.indd 18LM18_seguranca.indd 18 24.02.06 13:18:5524.02.06 13:18:55

http://supertuxbr.blogspot.com

❐ OpenSSH Foi descoberta uma falha na implementa-

ção do comando de cópia segura scp , mais

precisamente quando se faz uma cópia de

arquivo local para arquivo local: nomes

de arquivos que contenham metacarac-

teres do shell ou espaços são expandidos

duas vezes. Isso poderia levar à execução

de comandos arbitrários se um usuário

fi zesse uma cópia scp de um arquivo com

o nome especialmente construído.

As atualizações fornecidas empurra-

ram o OpenSSH para a versão 4.3p1. Com

isso, vieram algumas diferenças. Um

exemplo é a autenticação PAM . Especifi -

camente, o arquivo padrão sshd_config

agora só aceita conexões em protocolo 2 e

o UsePAM vem desativado por padrão.

Em sistemas com métodos de autenti-

cação alternado (por exemplo, LDAP ) que

usam a pilha do PAM para autenticação,

será necessário ativar o UsePAM . Note

que o arquivo padrão /etc/pam.d/sshd

também foi modifi cado, para usar o mó-

dulo pam_listfile.so , que vai recusar

o acesso de todos os usuários listados

em /etc/ssh/denyusers (por padrão,

apenas o usuário root). Isso é requerido

para preservar o comportamento espe-

rado quando a opção PermitRootLogin

without-password é usada. ■

Referência no Mandriva: MDKSA-2006:034

Referência no SuSE: SUSE-SR:2006:003

❐ kdelibs O kdelibs contém as bibliotecas básicas

do KDE . Um estouro de memória foi des-

coberto. A parte afetada é o kjs , o inter-

pretador JavaScript usado pelo Konqueror .

Um agressor poderia criar um código cui-

dadosamente talhado para explorar essa

falha. O projeto Common Vulnerabilities

and Exposures ( cve.mitre.org ) deu a essa

falha o código CVE-2006-0019 . ■

Referência no Debian: DSA-948-1

Referência no Red Hat: RHSA-2006:0184-11

Referência no Suse: SUSE-SA:2006:003

❐ Ipsec-tools A implementação do IKEv1 ( Internet

Key Exchange , versão 1) – isakmp_

agg.c – no ipsec-tools possui brechas

em versões anteriores à 0.6.3. Se o

ipsec-tools estiver rodando em agres-

sive mode , é possível que agressores

provoquem uma negação de serviço

(com travamento após desreferencia-

mento nulo) através de pacotes IKE

especialmente preparados, como de-

monstrado no PROTOS ISAKMP Test

Suite para IKEv1.

O projeto Common Vulnerabilities and

Exposures ( cve.mitre.org ) deu a essa falha

o código CVE-2005-3732 . ■

Referência no Debian: DSA-965-1

Referência no Mandriva: MDKSA-2006:020

❐ Wine O Wine é uma implementação livre da

API do Windows® para sistemas deriva-

dos do Unix.

H. D. Moore descobriu que o Wine

implementa a função de escape (“inse-

gura por natureza”) SETABORTPROC GDI ,

para arquivos WMF ( Windows Metafi le ).

Um agressor poderia incitar um usuário

a abrir com o Wine um WMF especial-

mente talhado, podendo levar à execução

de código arbitrário com os direitos do

usuário atual. ■

Referência no Debian: DSA-954-1

Referência no Gentoo: GLSA 200601-09

Referência no SuSE: SUSE-SR:2006:002

❐ ClamAV O ClamAV é um antivírus GPL.

A ZDI (Zero Day Initiative) reportou

uma vulnerabilidade de estouro da

pilha no ClamAV. O problema se deve

a uma checagem incorreta de limites,

nos dados fornecidos pelo usuário,

antes de copiá-los para um buffer in-

sufi ciente de memória. A falha ocorre

quando o ClamAV tenta manipular ar-

quivos UPX compactados.

Por exemplo, ao enviar um arquivo UPX

maliciosamente construído para um ser-

vidor integrado com ClamAV, um agressor

poderia executar código com privilégios

maiores. O projeto Common Vulnerabi-

lities and Exposures (cve.mitre.org) deu a

essa falha o código CVE-2006-0162. ■

Referência no Debian: DSA-947-2

Referência no Gentoo: GLSA 200601-07

Referência no Mandriva: MDKSA-2006:016

Referência no SuSE: SUSE-SR:2006:001

❐ gd O pacote gd contém bibliotecas gráfi cas

usadas para a criação dinâmica de ima-

gens como PNG e JPEG .

Foram encontrados diversos estouros

de memória no modo como o gd faz

a alocação de memória. Um agressor

poderia criar uma imagem com código

arbitrário para ser executado no caso de

a vítima usar um programa ligado a essa

biblioteca para abrir o arquivo. O projeto

Common Vulnerabilities and Exposures

( cve.mitre.org ) deu a essa falha o código

CVE-2004-0941 . ■

Referência no Red Hat: RHSA-2006:0194-4

Referência no SuSE: SUSE-SR:2006:003

❐ TeTeX O TeTex é uma implementação do TeX , que

pega um arquivo de texto e um conjunto

de comandos de formatação para gerar

um arquivo .dvi ( DeVice Independent ).

Várias falhas foram descobertas na

biblioteca de análise de PDF do TeTex.

Um PDF especialmente construído pode-

ria travar ou fazer o programa executar

código arbitrário. O projeto Common

Vulnerabilities and Exposures ( cve.mitre.

org ) deu a essa falha os códigos CVE-2005-

3191 , CVE-2005-3192 , CVE-2005-3193 , CVE-

2005-3624 , CVE-2005-3625 , CVE-2005-3626 ,

CVE-2005-3627 e CVE-2005-3628 . ■

Referência no Debian: DSA-937-1

Referência no Mandriva: MDKSA-2006:011

Referência no Red Hat: RHSA-2006:0160-14

www.linuxmagazine.com.br

março 2006 edição 18 19

Dicas de [In]segurança Notícias

LM18_seguranca.indd 19LM18_seguranca.indd 19 24.02.06 13:18:5724.02.06 13:18:57

http://supertuxbr.blogspot.com

Por Zack Brown

Notícias do Kernel❐ Muro do silêncioA série Reiser 4 versus Kernel continua.

Agora, a atitude de muitos desenvolvedores

Linux frente à inclusão da versão 4 do

ReiserFS parece ser de indiferença explícita.

Para que ele seja incluído, “os programado-

res do Reiser só precisam enviá-lo, pronto

para inclusão”, de acordo com membros

da turma do kernel. Nossos amigos do

kernel acham que já explicaram o que os

camaradas do Reiser precisam fazer. Seria

até simples: basta que eles façam. Mas o

buraco é mais embaixo.

Geralmente, quando alguém envia uma

pergunta sobre o status de determinado

recurso do kernel, um responsável (ou al-

guém com conhecimento sobre o assunto)

responde com um resumo do andamento

dessa implementação. No caso do Reiser-

FS, além de não haver ninguém da área

respondendo, não há desenvolvedores

dispostos a sair das vagas especulações.

Perguntas sobre detalhes mais precisos

são respondidas com referências aos ar-

quivos da lista. Essas mensagens antigas

indicam que o progresso chegou a um

ponto sem avanços – ou, pelo menos, um

ponto que os desenvolvedores do kernel

consideram dessa forma.

Vamos contextualizar. O líder do pro-

jeto ReiserFS tem a fama (justa? Isso é

outra história) de ficar elogiando seu

próprio trabalho e desmerecendo a quali-

dade do código do kernel em geral. Além

disso, é conhecido também por insultar

e ignorar mensagens do time do kernel,

praticamente ordenando que eles ajudem

na inclusão do projeto. Como resultado,

pelo menos no momento, uma névoa de

silêncio caiu sobre os grupos.

Se o desenvolvimento do kernel se

manter fiel à tradição, eventualmente a

turma do Reiser vai enviar mais patches.

Eles serão criticados por qualquer um que

queira apontar o dedo ou serão ignorados,

caso itens questionados anteriormente

não tenham sido resolvidos. ■

❐ Missão travadaO driver Raw está marcado para remo-

ção desde a versão 2.6.3. Adrian Bunk

arregaçou as mangas. Mãos à obra. Mas

limpar esse acúmulo será uma missão

muito mais complicada do que parecia.

O driver Raw permite a entrada e saída

de dados do tipo raw em dispositivos de

bloco. Mas passar O_DIRECT para a função

de sistema open() dá no mesmo. Esse é

o método preferido. Portanto, esse driver

foi marcado como obsoleto, devendo ser

removido gradualmente. Mas muitos pro-

gramas externos ainda não terminaram de

converter seus códigos para o O_DIRECT.

Até que façam isso, a eliminação desse

driver vai encontrar resistência.

O comentário de um dos mais respeita-

dos desenvolvedores, Alan Cox, resume

a situação: "Tornar obsoletos elementos

do tipo configuração interna é uma coi-

sa. Já quando há funções do núcleo do

sistema envolvidas, é preciso um ciclo

muito mais longo".

Independente de quaisquer motivos para

manter o driver, essa confusão também

é uma tremenda chateação para Adrian,

que gasta muito suor nessa faxina rotinei-

ra. Principalmente agora, ao perceber que

muito de seu trabalho foi em vão.

É o tipo de coisa que... acontece. Talvez

o driver Raw não se desgrude nunca mais

do kernel. Freqüentemente, decisões sobre

esse ou aquele recurso são feitas precipita-

damente. E se descobre tarde demais que

boa parte do espaço do usuário depende

disso. Nos casos mais graves, uma mudan-

ça em um recurso é feita para consertar

uma decisão equivocada. Mas a conclusão

dessa mudança se mostra inviável e, agora,

com parte dela já implementada, é preciso

manter os dois erros. Abre-se campo até

para um terceiro...

Quando a sorte ajuda, basta algo ser

marcado como obsoleto para motivar

boa parte dos desenvolvedores do espaço

do usuário a converter seu código e se

adaptar à evolução. Talvez, a conversão

O_DIRECT vingue mesmo e Adrian real-

mente remova o driver. ■

❐ Mata tudoNosso bravo “faxineiro” não desiste.

Felizmente! Adrian Bunk também tem

suado muito no processo de remoção dos

drivers OSS, em uma saga que já está

completando uma era. Bit por bit, ele

caça drivers baseados no obsoleto OSS,

melhora os equivalentes em ALSA, junta

informações e, um a um, vai limpando o

caminho, tomando muito cuidado para

não derrubar nada por engano.

Recentemente, ele convocou a ajuda

da comunidade para três missões do

tipo “identifique e mate (ou mantenha

vivo)”. Na primeira, serão catalogados

os drivers ALSA 100% funcionais que já

substituem drivers OSS em determinados

hardwares. Na segunda, é preciso saber

quais drivers ALSA (correspondentes aos

OSS) têm defeitos ou nem funcionam. Na

terceira, não há equivalentes ALSA. ➟

Notícias

20

Kernel

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

Para a primeira categoria, Adrian está

planejando um cronograma agressivo

de extermínio. Na segunda categoria,

ele quer especificar um intervalo em

que bugs ALSA podem ser reportados.

No último caso, drivers OSS que não

tenham um equivalente ALSA serão

mantidos no kernel.

Surpreendentemente, cada uma des-

sas convocações resultou em progresso

considerável. Mas ainda há muito o que

fazer. Cerca de 50 drivers OSS ainda

precisam ser analisados, para futura

remoção, atualização (na versão ALSA)

ou para serem portados para o novo

sistema de som. ■

❐ Código ilegal, socorro!Greg Kroah-Hartman estranhou comen-

tários em alguns arquivos, presentes

no kernel já há algumas versões – pelo

menos desde a era BitKeeper. Esses ar-

quivos têm chamativos comentários,

com aparentes violações de copyright.

Como esse: “this is unpublished pro-

prietary source code of Motorola” (isso

é código fonte proprietário e não publi-

cado da Motorola).

Após investigação mais profunda,

descobriu-se naturalmente que tudo

está devidamente licenciado sob a GPL,

através de um README no mesmo dire-

tório. Mas Greg e outras pessoas acha-

ram que esse tipo de nota causa uma

impressão meio estranha. Pelo menos

entre os não iniciados.

Revelou-se que a verdadeira autoria

do código é da Freescale, empresa sub-

sidiária da Motorola, com data de julho

de 2004. Matt Waddel, da Freescale, se

ofereceu para “dar um tapa” no comen-

tário, deixando-o mais claro. Mas como

Alan Cox apontou, não há nenhum pro-

blema nesse comentário. O objetivo do

ajuste de Matt é apenas não confundir os

desenvolvedores, já que o status legal do

código não será alterado em nada. ■

❐ Abre-te Silicon ImageApós acalorada discussão nos bastidores,

a Silicon Image permitiu que Jeff Garzik

distribua a documentação sobre o fun-

cionamento dos controladores SATA 3114

e 3124. Isso já vai regando o terreno para

a possível abertura da documentação (e

sua compatibilidade com o kernel) do

NCQ (Native Command Queueing) da

Silicon Image, muito útil para a troca

super-rápida de dados em aplicações que

dependem de desempenho. ■

❐ Chama o dono do cachorro!Kumar Gala descobriu que não havia

nenhum mantenedor responsável pelos

drivers watchdog. Basicamente, watchdo-

gs são dispositivos de hardware que dis-

param um reset no programa principal

devido a algum problema.

Calma, nada de pânico. Foi apenas um

descuido. Arnd Bergmann confirmou

que Wim Van Sebroeck é quem costuma

cuidar disso. O próprio Wim tratou de

se apressar para “autografar” o arquivo

MAINTAINERS. ■

❐ SATA=SCSI?Randy Dunlap enviou um patch para mo-

ver a configuração SATA para bem longe

da zona SCSI, ganhando sua própria se-

ção. A lógica por trás dessa idéia é que

as configurações SCSI são apenas um

detalhe que os usuários não precisam

conhecer para que usem discos SATA.

Embora essa não seja uma lógica

reconhecida em todo o universo, nin-

guém torceu muito o nariz. Muitos até

ofereceram sugestões de pequenas me-

lhorias no patch. Mas o próprio Randy

já puxou o breque. Ele não está interes-

sado em se descabelar com a perfeição

desse patch. Alegou que queria apenas

ouvir a opinião da comunidade sobre

a idéia, não tendo como objetivo ter

seu patch aceito e – talvez aí esteja o

problema! – aperfeiçoado.

A idéia vingou e, com a ajuda de ou-

tros desenvolvedores, mais cedo ou mais

tarde, isso vai fazer parte do kernel. ■

❐ Framebuffer obsoletoMichael Hanselmann enviou um patch

que remove um antigo driver framebuffer

para ATI Radeon, que já havia sido subs-

tituído por um novo. O driver removido

estava marcado como “Old”, sem receber

atualizações significativas desde 2002.

A reação de desenvolvedores vete-

ranos, como David S. Miller foi muito

positiva, embora o novo driver tam-

bém tenha lá seus problemas. Como

David apontou, a rotina para limpar a

tela pode confundir o X, dificultando

o retorno das imagens e caracteres. ■

❐ API Wireless ExtensionMichael Buesch vem lutando para rees-

crever a API WE (Wireless Extension), um

conjunto genérico de chamadas para fa-

zer interface com redes wireless. A atual

API foi escrita por Jean Tourrilhes sob

os auspícios da Hewlett Packard. Mas a

versão de Michael se baseia em portas do

tipo netlink, uma maneira mais limpa de

comunicação entre o kernel e o espaço

do usuário (userspace).

Embora, essa versão ainda não esteja

pronta para uma bateria de testes alfa,

vamos torcer para que o código de Mi-

chael traga uma interface mais simples

e fácil entre o kernel e qualquer rede

sem fio das redondezas. ■

Sobr

e o

auto

r

A lista de discus-são linux-kernel é o núcleo das atividades de desenvolvimento do kernel. Uma das poucas pessoas corajosas o suficiente para perder-se nesse oceano de mensagens e manter-se atuali-zada é Zack Brown.

Notícias

22

Kernel

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

O Linux sempre foi rápido em incorporar novas tecnologias. Com a revolução VoIP não é diferente.Por Joe Casad

Ferramentas Linux para Voz sobre IP

Alô mundo!

V oz sobre IP (VoIP) é um conjunto de tecnologias que

possibilitam a comunicação por voz via redes TCP/IP.

A maior rede desse tipo é a própria Internet e o objetivo

final da indústria de serviços VoIP sempre foi achar um modo

de usá-la para ligações telefônicas comuns.

Os primeiros esforços para deslanchar essa tecnologia deram

de cara com muitos desafios, incluindo: qualidade do áudio,

questões de hardware e a falta de banda. Mas basta prestar

atenção em muitos anúncios na Internet hoje para perceber que

esses desafios já foram, em sua maioria, superados. Serviços

telefônicos via Internet estão se popularizando rapidamente,

principalmente pela economia que proporcionam em relação

à convencional. Hoje, já há provedores VoIP no Brasil com

taxas mensais inferiores a R$ 20.

É bem fácil fazer dois computadores se comunicarem. A

outra parte do problema é fazer um computador VoIP com

telefone falar com uma linha telefônica convencional. Para

acessar uma rede telefônica, é preciso ser cliente de um serviço

de telefonia via Internet, ou provedor VoIP. As taxas variam,

dependendo da localização e dos recursos necessários. Mas,

de qualquer jeito, tanto uma ligação vinda de uma cabine

pública no Alaska ou de um computador na sala ao lado, a

chamada para seu micro chega como uma ligação VoIP.

O GNU/Linux sempre foi rápido em integrar novas

tecnologias. A “revolução VoIP” não foge à regra. Mui-

tas ferramentas estão disponíveis agora mesmo para

auxiliar nas tarefas do cotidiano, nessa era de telefonia

via Internet. Nesta edição, vamos analisar alguns

desses aplicativos.

Começaremos com o Asterisk, uma central telefônica base-

ada em software. Um servidor Asterisk permite, por exemplo,

a implementação de um PBX doméstico, para que outros com-

putadores ou telefones IP usem a Internet para fazer ligações.

O servidor Asterisk conta com um ponto de configuração

central e possui muitos dos recursos avançados das soluções

proprietárias para sistemas telefônicos de escritório.

Também falaremos sobre o Linphone e o Kphone, clientes

VoIP (também chamados de softphones) simples e versáteis.

Para coroar, fechamos com os aplicativos OpenWengo, Ekiga

e o framework de desenvolvimento Tapioca. Se você está

pronto para mergulhar no mundo da Voz sobre IP, ou se quer

apenas experimentar, confira esta série

especial sobre telefonia pela

Internet no Linux. ■

VoIP em casa 24Monte um PBX com o Asterisk.

Alô, é o Linux? 30KPhone: um softphone versátil.

Bem conectado 32Telefonia pela Internet com o Linphone.

Livre para ligar 36Conheça o OpenWengo e o Ekiga.

www.linuxmagazine.com.br

março 2006 edição 18 23

VoIP Capa

http://supertuxbr.blogspot.com

Basta um computador antigo e o Asterisk para montar um servidor telefônico VoIP em uma rede caseira.

Por Martin Loschwitz

Monte um sistema VoIP doméstico com o Asterisk

VoIPem casa

S istemas VoIP possibilitam esta-

belecer ligações de áudio bas-

tante rápidas pela Internet, além

de outras vantagens. Por exemplo, a

qualidade da voz costuma ser melhor

que a de linhas convencionais (apesar

de boatos que afirmam o contrário) e

ligações internacionais não têm custo

adicional. Só esses motivos já seriam

suficientes para justificar pelo menos

“uma olhada” nessa tecnologia.

Obviamente, para usar a Internet

como uma plataforma telefônica, não

basta simplesmente puxar o gancho e

começar a falar. É preciso primeiro se

registrar em um provedor de serviços

VoIP. Uma lista de provedores pode ser

encontrada em [1]. Ao assinar um plano

VoIP, é possível usar o login fornecido

para usar a conexão com a Internet

para se logar no respectivo servidor

SIP (Session Initiation Protocol). SIP é

hoje um dos principais protocolos VoIP,

junto com o H.323. Após completar essa

etapa, você também vai precisar de um

aparelho de telefone VoIP ou de um sof-

tphone (telefone via software) instalado

em um computador com placa de som

e microfone (ou um headset).

Atualmente, um dos sistemas VoIP mais

conhecidos e usados por profissionais da

área está disponível gratuitamente na

Internet. Trata-se do Asterisk [2], hoje um

sinônimo de software de telefonia. O Aste-

risk tem muitas opções úteis, incluindo a

habilidade de funcionar como um sistema

telefônico doméstico completo.

Neste tutorial, vamos imaginar um

sistema que tenha de lidar com muitas

ligações por dia. A linha telefônica – e

também a conexão ADSL com a In-

ternet – é baseada no antigo sistema

analógico POTS (Plain Old Telephone

Service ou “o bom e velho sistema de

telefonia fixa”). Por motivos diversos,

um upgrade para o sistema mais mo-

derno RDSI (Rede Digital de Serviços

Integrados – ou ISDN, na sigla em in-

glês), estaria fora de questão.

Nesse caso, a tecnologia VoIP é uma

boa opção, já que ela pode trabalhar

numa boa com o sistema POTS e, de-

pendendo do plano no provedor VoIP,

permite mais de uma ligação simultânea

com uma única conta, além da opção de

se obter um número de telefone como se

fosse uma linha convencional.

Mão na massaA dificuldade para se configurar esse sis-

tema varia. Quanto mais complicada for

a aplicação, obviamente mais difícil será

a tarefa. O Asterisk não é uma exceção a

essa regra. Além de instalar, configurar

e adicionar alguns extras ao aplicativo, o

programa também deve funcionar como

uma secretária eletrônica virtual. Esse

artigo não vai mostrar como usar o As-

terisk como um servidor VoIP comercial.

Então, não espere poder competir com

serviços do tipo ao fim da leitura.

Para configurar o Asterisk como um

servidor doméstico, você vai precisar

de uma conta VoIP em um provedor

do tipo. A vantagem dessa solução é

que qualquer PC (ou telefone IP) nessa

rede poderá ter acesso VoIP através do

servidor Asterisk.

Essa configuração do Asterisk é útil

para uma rede local. Nesse tipo de ce-

nário, o acesso à Internet geralmente

passa por um router com firewall e NAT

(Network Address Translation). Aqui co-

meça o problema. O protocolo SIP não

conversa muito bem com o NAT, então

será preciso fazer alguns “buracos” no fi-

rewall para habilitar o SIP na rede. Qual

porta precisa ser aberta é uma questão

que depende de seu provedor. Vamos

assumir que essa porta é a 5060/tcp, já

que ela é o padrão do SIP. Com essa

porta liberada, o Asterisk vai cuidar das

questões envolvendo NAT.

Capa

24www.linuxmagazine.com.br

março 2006 edição 18

Asterisk

http://supertuxbr.blogspot.com

InstalaçãoInstalar o Asterisk não é complicado, já

que a configuração só será feita depois.

A maioria das distribuições incluem um

pacote do programa. Como o Asterisk se

integra bem ao Debian, usaremos essa

distribuição como exemplo desse arti-

go. Mas os arquivos de configuração e

seus parâmetros são os mesmos, inde-

pendente da distribuição Linux usada.

Para o caso da compilação do Asterisk

a partir do código fonte, leia o quadro 1

(“Compilando o Asterisk”).

Após a instalação do Asterisk no De-

bian, haverá alguns arquivos .conf em

/etc/asterisk. O Asterisk é um aplica-

tivo minimalista: contém apenas uma

dúzia de pequenos módulos, que são

carregados “on the fly” quando neces-

sários. O compacto “kernel” do Asterisk

contém as funções centrais que contro-

lam esses módulos. Há um arquivo de

configuração para cada um deles. Isso

evita a necessidade de um arquivo de

configuração global e gigantesco, em-

bora isso embole um pouco o diretório

/etc/asterisk.

A maioria desses arquivos não nos

interessa – pelo menos para este tu-

torial. Eles se referem a partes do As-

terisk que não se costuma usar. Mas

há duas exceções: o sip.conf e o

extensions.conf.

sip.confA maioria dos provedores VoIP usam o

protocolo SIP. Mas existem outros, como

o IAX2 e SCCP. Nosso artigo terá como

foco o SIP. Para isso, o módulo necessá-

rio é o chan.sic. O arquivo de configu-

ração correspondente é o sip.conf.

Os parâmetros em sip.conf permi-

tem que o Asterisk se logue no servi-

dor VoIP como se fosse um telefone. De

modo semelhante, os usuários da rede

local vão se logar no servidor Asterisk

como se fossem telefones.

O Asterisk funciona como um servidor

proxy. Ele redireciona conexões locais

para a Internet e conexões exteriores

para o respectivo telefone. Ao configurar

o arquivo sip.conf, tenha os dados do

seu provedor VoIP.

Seção geralOs arquivos de configuração são organiza-

dos em seções. A primeira seção do sip.conf

é chamada [general], como nos outros ar-

quivos dos outros módulos. Por padrão, ela

já vem preenchida. Mas teremos que fazer

algumas mudanças. Em seu editor preferi-

do, abra o sip.conf e localize a linha con-

tendo a expressão disallow=all. Remova o

ponto-e-vírgula (“;”) no início dessa linha

(ele serve para “comentar” a linha, para

que ela não seja lida pelo sistema). Repita

isso para as próximas duas linhas, que

começam com language e adicione uma

linha com a expressão allow=alaw.

Se o servidor Asterisk usa um router

NAT para acessar a Internet, será preciso

“descomentar” (tirar o ponto-e-vírgula) a

linha nat=no e mudar “no” para “yes”. Isso

especifica que o Asterisk deve manipular

conexões para dentro e para fora da rede.

Identifique-seO Asterisk se loga no servidor SIP do

provedor VoIP como se fosse um telefone.

A configuração referente a esse login

também fica no sip.conf. Cada linha

referente a um provedor VoIP começa

com “register” e segue a sintaxe:

register => nome:senha@servidor SIP/U

extension

Se você tem contas em vários prove-

dores, será preciso uma linha para cada

um. Por enquanto vamos deixar de lado

a parte extension. Mais tarde, isso é o

que vai informar ao Asterisk quais telefo-

nes/PCs vão se conectar a determinados

servidores SIP (dos provedores VoIP). Por

enquanto, digite apenas o seu nome de

usuário no lugar de “extension”.

Acesso para o provedorO próximo passo é modificar o sip.conf

para permitir que o provedor VoIP envie

comandos ao Asterisk. Ele também possi-

bilita entradas do tipo peer (ponto/ramal)

para organizar chamadas. Uma entrada

desse tipo se parece com a seguinte:

[Provedor VoIP]

type=peer

secret=Senha

username=nome

host=servidor VoIP

fromuser=nome

fromdomain=Servidor VoIP

insecure=very

É preciso uma entrada como essa,

mas com nomes diferentes para cada

linha do tipo register em sip.conf, no

final desse arquivo. Certifique-se de

que os valores batem com os das linhas

register no sip.conf. ➟

Quadro1: Compilando o AsteriskPara compilar a partir do código fonte, use o seguinte procedimento (independente da distribuição utilizada). Baixe o código fonte e descompacte o pacote com o comando tar cvfz nomedoar-quivo. Use o comando cd para entrar no diretório com o código e inicie o processo com o coman-do make. Finalmente, digite make install (como root) para finalmente instalar o Asterisk no lugar adequado do seu sistema de arquivos.

Cuidado: os arquivos não ficam no diretório /usr; em vez disso, são colocados na raiz (/). Para mu-dar esse (mal) comportamento, abra o arquivo Makefile em um editor e modifique a linha que começa com INSTALL_PREFIX=, digitando “/usr/local” logo após o sinal de igual. Isso evita que arquivos do sistema sejam prejudicados sem aviso e permite uma remoção mais fácil do Asterisk.

www.linuxmagazine.com.br

março 2006 edição 18 25

Asterisk Capa

http://supertuxbr.blogspot.com

Acrescentando telefonesA próxima e última etapa é acrescentar

linhas para permitir que telefones SIP

da rede local possam se registrar no

servidor. Eles podem ser tanto apare-

lhos VoIP (figura 1) quanto softphones

(figura 2). No final do arquivo, escreva

primeiro um nome para o PC/apare-

lho da rede local: [Nome]. Você pode

escolher qualquer nome, com letras

e números. Uma entrada completa

fica mais ou menos assim (“2000” é

o nome do PC/aparelho):

[2000]

type=friend

secret=senha

mailbox=100

canreinvite=yes

context=default

insecure=very

host=dynamic

A maneira para se configurar pontos

adicionais é similar. Você só precisa es-

pecificar um nome de usuário e senha

para cada entrada e mudar o número

no campo mailbox. Uma maneira fácil

é usar nomes numéricos e apenas ir au-

mentando progressivamente. O mesmo

vale para o número da mailbox (por

exemplo: 2001, 2002... e 101, 102...).

Após configurar a seção [general]

e criar contas para o servidor VoIP e,

pelo menos, um cliente local, salve o

arquivo sip.conf. A listagem 1 mostra

um exemplo didático desse arquivo.

Criando um dialplanO dialplan (plano de discagem) é seu

painel de conexões para ligações via

Asterisk. Ele especifica como direcionar

chamadas externas e locais. Um plano

de discagem é complexo por natureza,

mas nada que a maioria dos usuários

não consiga administrar.

O plano fica em /etc/asterisk/ex-

tensions.conf. O arquivo padrão no

Debian possui muitos exemplos inúteis.

Talvez seja melhor renomear o arquivo

para extensions.conf.old e criar um

do zero. Esse arquivo começa, nova-

mente, com uma seção [general], que

sempre inicia assim:

[general]

static=yes

writeprotect=no

O comando padrão no extensions.

conf é exten. Ele é chamado tanto para

ligações externas, quanto locais; e dire-

ciona a ligação para a rede local ou para

a Internet. A sintaxe é:

exten => numero_chamado,prioridade,ação

A opção prioridade não é usada para

determinar a importância da ligação,

mas para definir a ordem em que os

comandos em ação serão executados,

quando houver diferentes opções em

várias linhas do tipo exten.

DefaultA primeira coisa que temos a fazer é

criar uma seção [default]. Ela será

usada para manipular ligações não defi-

nidas. Teoricamente, você pode dividir

o extensions.conf em quantas seções

quiser, mas limitaremos isso para man-

ter o arquivo simples.

A primeira parte da seção [default] é

genérica e obrigatória. Ela contém o cha-

mado echo test, necessário para se checar

a conexão entre o Asterisk e o telefone:

[default]

exten => 600,1,Playback(demo-echotest)

exten => 600,2,Echo

exten => 600,3,Playback(demo-echodone)

exten => 600,4,Goto(s,6)

A seção [default] também é onde

se especifica o que fazer com ligações

para fora. Uma opção útil é exigir que

um número seja discado para obter a

linha externa. Isso permite que você use

o Asterisk para ligações entre os ramais

internos. A linha a seguir determina

que o Asterisk direcione chamadas para

fora que começam com “0” para o pro-

vedor “ProvedorVoIP”:

exten => _0.,1,Dial(SIP/U

${EXTEN:1}@ProvedorVoIP)

Figura 1: Os aparelhos VoIP de hoje têm recursos bastante convenientes – um deles é o visual, idêntico ao de um aparelho comum, além de display com várias linhas e teclas programáveis.

Capa

26

Asterisk

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Esse comando é menos complicado

do que parece. _0. significa que isso

será feito com todas as ligações que co-

meçam com “0”. 1 indica a prioridade

(“1” nesse caso, já que há pouco o que

se fazer com uma ligação para fora, a

não ser direcioná-la para fora).

Dial(SIP/${EXTEN:1}@ProvedorVoIP)

especifica que o comando de discagem

interno do Asterisk deve ser usado. SIP

informa que o protocolo SIP deve ser

utilizado para fazer a chamada. A barra

(“/”) separa o protocolo do número a ser

discado. Nesse caso, ele está na variável

${EXTEN}. O :1 remove o primeiro dígito

do conjunto de números a ser discado, já

que o “0” foi usado para se obter linha.

A expressão @ProvedorVoIP especifica

o provedor VoIP para onde a chamada

será direcionada.

Você pode repetir isso para quan-

tos provedores desejar. Mas use nú-

meros diferentes para se obter linha

externa, de acordo com cada pro-

vedor. E insira o nome do provedor,

de acordo com o nome especificado

para ele em sip.conf.

Telefonemas de foraSe você iniciar o Asterisk agora, vai

poder fazer ligações, mas não receber.

Esse é o obstáculo final. Nas linhas do

tipo register em sip.conf, o último

valor de cada linha é o nome que o

Asterisk usa para gerenciar chamadas

de fora para esse servidor. Naquele

exemplo, esse valor é o seu nome de

usuário no provedor VoIP.

Se você usou “2000” como nome de

usuário do primeiro telefone (como em

nosso exemplo), você pode usar as li-

nhas a seguir. Apenas substitua “Nome”

pelo nome de usuário no provedor VoIP

(o último valor da linha register):

exten => Nome,1,Dial(SIP/2000,15,tTr)

exten => Nome,2,VoiceMail,u2000

exten => Nome,102,VoiceMail,b2000

exten => Nome,103,Hangup

A primeira linha direciona chamadas

de fora para o usuário/telefone de nome

“2000”. As linhas 2 e 3 iniciam a secretária

eletrônica virtual do Asterisk, caso o

telefone “2000” esteja ocupado ou não

disponível. A linha 4 desliga o telefonema

ao fim das três etapas anteriores. ➟

Figura 2: Uma alternativa ao aparelho VoIP é o uso de um softphone, ou telefone via software (como o Linphone), desde que o computador tenha placa de som e um headset.

Listagem 1: sip.conf (provedor Exemplo)01 nonumber02 [general]03 port = 506004 bindaddr = 0.0.0.005 disallow=all06 allow=ulaw07 allow=alaw08 maxexpirey=360009 defaultexpirey=12010 context=default11 language=pt (br)1213 register => 5552XXX:[email protected]/5552XXX1415 [provedorexemplo]16 type=peer17 secret=SENHA18 username=5552XXX19 host=provedorexemplo.com.br20 fromuser=5552XXX21 fromdomain=provedorexemplo.com.br22 insecure=very2324 [2000]25 type=friend26 secret=Senha27 mailbox=10028 canreinvite=yes29 context=default30 insecure=very31 host=dynamic

www.linuxmagazine.com.br

março 2006 edição 18 27

Asterisk Capa

http://supertuxbr.blogspot.com

Repita essa última etapa para todas

as linhas do tipo register em seu sip.

conf. Se precisar direcionar ligações

para outros telefones além do “2000”,

apenas mude os números após SIP/.

A listagem 2 exemplifica um arquivo

extensions.conf.

Iniciando o AsteriskComo estamos nos baseando na distri-

buição Debian, ainda há uma etapa aqui.

O pacote .deb do Asterisk não permite

que você rode o programa logo após a

instalação. Para mudar esse comporta-

mento, é preciso abrir o arquivo /etc/

default/asterisk e mudar o valor “no”

de RUNASTERISK= para “yes”. Aí sim será

possível iniciar o Asterisk com o coman-

do /etc/init.d/asterisk start.

ConveniênciaO Asterisk tem uma secretária eletrônica

virtual 100% funcional, que precisa ser

habilitada para cada telefone/usuário. O

programa adicional addmailbox ajuda mui-

to nessa tarefa. Apenas guarde o nome de

usuário para quem você quer adicionar a

secretária (em nosso exemplo, “2000”).

Em nosso sip.conf, associamos a cai-

xa de mensagens (mailbox) “100” para o

usuário “2000”. Como root, digite add-

mailbox no terminal. Se o programa per-

guntar sobre o contexto (context), digite

“default”. Quando for solicitado o número

da mailbox, digite “100”. Esse script se

encarrega do resto, configurando todos

os arquivos necessários.

Estão disponíveis mensagens da se-

cretária eletrônica em algumas línguas.

No Debian, é possível usar apt-get

install para instalar um pacote do tipo

asterisk-prompt-xx (“xx” é o código

do idioma) para mensagens prontas

em outras línguas. Por enquanto, não

há um em português brasileiro. Mas

é possível gravar respostas personali-

zadas no formato .wav e convertê-las

para .gsm com o aplicativo SoX [3]. O

formato .gsm é um arquivo de áudio

bem compactado, ideal para áudio que

será transmitido por telefone.

Caixa postalFinalmente, é pre-

ciso fazer com que

o Asterisk toque

as mensagens gra-

vadas. Para isso, é

preciso novamente

modificar o arquivo

extensions.conf.

Acrescente as se-

guintes linhas:

exten => 2999,1,Ringing

exten => 2999,2,VoicemailMain,s2000

Agora, quando você discar 2999 de

um telefone interno, será automatica-

mente conectado à caixa postal do usu-

ário 2000. Na primeira vez que você

se logar, será preciso especificar uma

senha de acesso. Mais tarde isso não

será necessário.

Se a rede estiver configurada como

VPN (Virtual Private Network), é pos-

sível usar um softphone em conjunto

com o OpenVPN para acesso remoto ao

servidor Asterisk. Um site que pode ser

bastante útil para quem estiver iniciando

é o Asterisk Brasil [4]. ■

Informações[1] Lista de provedores:

www.teleco.com.br/voip.asp

[2] Asterisk: www.asterisk.org

[3] SoX: sox.sourceforge.net

[4] Comunidade Asterisk Brasil: www.asteriskbrasil.org

Listagem 2: extensions.conf01 nonumber02 [general]03 static=yes04 writeprotect=no0506 [default]07 exten => 600,1,Playback(demo-echotest)08 exten => 600,2,Echo09 exten => 600,3,Playback(demo-echodone)10 exten => 600,4,Goto(s,6)1112 exten => 2999,1,Ringing13 exten => 2999,2,VoicemailMain,s20001415 exten => _0.,1,Dial(SIP/${EXTEN:1}<\@>provedorexemplo)1617 exten => 5552XXX,1,Dial(SIP/2000,15,tTr)18 exten => 5552XXX,2,VoiceMail,u200019 exten => 5552XXX,102,VoiceMail,b200020 exten => 5552XXX,103,Hangup

Figura 3: O softphone SJphone localizou o servidor Asterisk e os dois sistemas estão conectados.

Capa

28

Asterisk

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

A Voz sobre IP não precisa ser complicada. Com o KPhone, uma placa de som e uma conta em um provedor VoIP, é possível falar com o mundo.Por Mirko Dölle

VoIP com KPhone

Alô, é o Linux?

O KPhone [1] é uma ferramenta sim-

ples de telefonia para o KDE que

permite aproveitar a economia

que a tecnologia VoIP oferece sobre a

telefonia convencional. Sua configuração

é bem fácil, o que faz dele um aplicativo

muito útil no desktop. Já é um programa

maduro e algumas distribuições (como

Suse) passaram a incluir o aplicativo no

conjunto padrão de programas.

Na primeira vez em que o aplicativo

roda, algumas informações de configura-

ção são solicitadas, como mostra a figura

1. Basta especificar o usuário (User Part

of SIP URL) e o domínio (Host Part of SIP

URL) do provedor VoIP (confira uma lista

de provedores em [2]). O campo Outbound

Proxy só é necessário no caso de firewalls

bastante restritivos. Inicialmente, é uma

boa idéia preencher esse campo (caso

a rede tenha mesmo um proxy), mas o

KPhone pode – em alguns casos – rodar

sem a especificação de nenhum proxy,

mesmo que ele exista. Mais tarde, vale

a pena tentar essa opção.

O campo q-value serve para que a

qualidade da conexão seja especificada.

Se ele não for preenchido, o aplicativo

ajusta a qualidade dinamicamente. Re-

duzir a qualidade manualmente pode

ser útil para diminuir a banda exigida

pelo KPhone, mas a maioria dos usu-

ários pode usar a opção padrão sem

problema nenhum.

Senha inseguraDepois de digitar seus dados, basta pres-

sionar o botão Register para se conectar

com o provedor. A opção Auto Register

faz o programa se conectar com o pro-

vedor assim que o programa é iniciado.

Isso é bastante útil, já que só será possí-

vel receber ligações se o KPhone estiver

conectado ao servidor SIP.

A senha do provedor VoIP sempre será

exigida na hora do login. É possível salvar

essa senha, mas isso é uma opção arrisca-

da já que a senha será gravada em texto

puro, sem proteção nenhuma, no arquivo

de configuração do KPhone. E esse arqui-

vo ainda tem permissão de leitura uni-

versal. Infelizmente, não há como mudar

isso, já que o KPhone reescreve o arquivo

de configuração toda vez que o programa

fecha, ajustando a permissão automati-

camente para leitura universal. Um jeito

de contornar essa brecha é restringir o

acesso ao diretório de configurações Qt

com o comando chmod 700 ~/.qt. Isso

protege o arquivo de configuração em

questão, mas o administrador do sistema

ainda vai poder ver essa senha.

Dependendo da configuração de seu

router, talvez seja preciso um servidor

STUN para poder fazer e receber liga-

ções. Isso porque o computador pode

não conseguir identificar a porta e o IP

públicos que o router usa para conexões

VoIP. Nesse caso, o cliente requer um

servidor STUN, que fornece o IP e a porta

ao cliente, permitindo que os dados cor-

retos sejam passados para o computador

ou telefone que vai receber a ligação.

Há servidores STUN públicos, como os

Figura 1: O KPhone não exige muitas informações quando você roda o programa pela primeira vez. Basta o usuário e o domínio do provedor VoIP (protocolo SIP).

Capa

30

KPhone

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

listados em [3]. Um programa com fun-

ções VoIP para Windows® que também

possui um cliente STUN embutido é o

Google Talk, que acessa servidores STUN

do próprio Google.

Clique no menu Preferences | SIP Pre-

ferences. Na aba Socket (figura 2), digite

o nome e porta do provedor STUN, no

campo STUN Server. É preciso marcar

Yes na opção Use STUN server. Aqui, vale

a mesma regra para o servidor proxy:

comece tentando com um servidor STUN,

mas tente usar o KPhone sem esse re-

curso, mais tarde.

Será preciso ainda modificar a con-

figuração de seu firewall para permitir

que o KPhone faça e receba ligações. O

programa sempre usa as portas 5004,

5060 e 10000 para pacotes UDP. Também

será preciso liberar as portas UDP entre

61000 e 61099, se a opção STUN estiver

sendo usada.

Primeira ligaçãoApesar de toda essa configuração, o

KPhone é bem fácil de usar. No mais

simples dos casos, basta digitar a URL

SIP da pessoa que receberá a ligação,

ou o número de telefone convencional,

no campo da janela principal. É possí-

vel também clicar no ícone de telefone

antes disso. Surge então uma janela

que pede o número ou URL. Para fa-

zer uma chamada de vídeo, clique no

ícone da filmadora.

A possibilidade de ligar para linhas

convencionais usando VoIP depende de

seu provedor VoIP. Alguns chegam a exi-

gir pagamento antecipado e, enquanto

isso não for feito, só são possíveis as

ligações para outros clientes VoIP. Já

ligações de linhas convencionais para

VoIP podem ser feitas normalmente, com

a cobrança de taxas telefônicas locais.

Alguns provedores VoIP seguem regras

que fogem um pouco àquelas utilizadas

em contratos de serviços telefônicos tra-

dicionais. Por exemplo, o código de área

(no caso do fornecimento de um número

telefônico convencional para o cliente)

pode ser baseado no endereço fornecido

para o pagamento das contas, ao invés

do local onde está sendo realizado a

conexão VoIP.

O redirecionamento de chamadas de

emergência (quando disponíveis nos

provedores) também pode se basear no

endereço fornecido pelo cliente. Como

a telefonia via Internet pode ser feita de

qualquer parte do mundo, pode levar

algum tempo para que chamadas de

emergência sejam redirecionadas para

os serviços públicos locais, de onde a

chamada está sendo feita. O procedi-

mento usado em ligações de celulares

ou linhas convencionais faz mais sen-

tido, já que elas são direcionadas para

os serviços da região onde o telefone

está localizado.

Livro de contatos fechadoO KPhone possui seu próprio livro de

contatos, incompatível com qualquer

outro aplicativo. Ele fica no arquivo de

configuração ~/.qt/kphonerc. Mas é

fácil de usar. Para abrir o editor, sele-

cione Preferences | Phone book. Aqui é

possível associar telefones/URLs para

cada contato. O KPhone mostra uma pe-

quena lista com as entradas do livro de

contatos. Acionar o livro pelo menu só é

necessário na hora de acrescentar novos

contatos. Para acessar algum contato,

basta dar um duplo clique nele.

Para o KPhone receber chamadas,

é preciso minimizá-lo. A cada liga-

ção, surgirá uma janela e a chamada

sonora tocará via placa de som. Uma

desvantagem é que o KPhone não pode

ser iniciado automaticamente como um

serviço no painel do KDE. Isso tornaria

as coisas mais fáceis, para deixar o pro-

grama sempre ativo.

Um problema para usuários brasi-

leiros pode ser a tradução incompleta.

Além disso, em nossos testes, surgiram

caracteres estranhos no lugar de letras

acentuadas na interface. ■

Sobr

e o

auto

r

Mirko Dölle dirige nosso Centro de Competência de Hardware, na Ale-manha. Portanto, testa mais ou menos tudo aquilo em que coloca as mãos. Em seu tempo livre, é o desenvolvedor principal da mini-distribui-ção para “operações de resgate” Ro-Resc e co-criador da distribuição LinVDR. Nos finais de semana, ele inverte o sonho al-quimista e transforma ouro em chumbo...

Informações[1] Kphone: www.wirlab.net/kphone/

[2] Lista de provedores VoIP: www.voipcenter.com.br/modules/smartpartner/

[3] Servidores STUN públicos: www.voip-info.org/wiki-STUN

GlossárioSTUN: Simple Traversal of UDP over NATs. Protocolo cliente-servidor que permite (e me-lhora) o recebimento de dados em dispositivos atrás de um firewall, às vezes sem a necessida-de de alterar regras no firewall/router.

Figura 2: Especificando parâmetros do servidor STUN nas configurações de portas (Socket).

www.linuxmagazine.com.br

março 2006 edição 18 31

KPhone Capa

http://supertuxbr.blogspot.com

Ao ligar para amigos e parentes em países distantes, não tire

o telefone do gancho. Saque o headset e dispare o Linphone.

Por Simone Schäfer

Telefonia na Internet com o Linphone

Bem conectadoO método mais popular de se bene-

ficiar da tecnologia VoIP é atra-

vés dos softphones. Basicamente,

tratam-se de programas que podem fazer

e receber ligações. O Linphone [1] é um

dos mais populares aplicativos desse

tipo no Linux. Apesar de ter sido feito

para Gnome, pode ser usado no KDE sem

problemas. Neste artigo, vamos abordar

a instalação, configuração, o uso com

um provedor de VoIP e a resolução de

problemas no Linphone.

Apesar de se tratar de um softphone,

ainda será preciso algum “hardware”

para rodá-lo: um fone de ouvido, um

microfone e uma placa de som. Já se

você quiser usá-lo como um substituto

completo do telefone, será necessário

assinar um plano de algum provedor

VoIP. Para os exemplos nesse artigo, va-

mos nos referir a duas contas fictícias

em dois provedores internacionais: o

Sipsnip e o Purtel (o modo de operação

deles é similar ao de muitos provedores

brasileiros). Nosso usuário fictício faz

ligações via Sipsnip, mas precisa receber

telefonemas via Purtel.

InstalaçãoO código fonte para versão 1.2.0 e

suas bibliotecas podem ser baixados

em [2]. O Mandriva 2006 vem com a

versão 1.1.0., assim como o Gentoo

Linux. Nas versões 9.3 e 10.0 do Suse,

há o Linphone 1.0.0, que também pode

ser usado sem problemas. No Debian

(repositório testing) e no Ubuntu 5.10,

a versão do Linphone é a 1.0.1.

Para quem prefere compilar, é im-

portante seguir a ordem correta de

procedimentos. O Linphone usa a bi-

blioteca Libosip2 para se comunicar

com o provedor VoIP. Ela precisa ser

instalada antes.

Como root, descompacte o pacote

com o código fonte usando o comando

tar xzf libosip2- 2.2.0.tar.gz e

entre no diretório criado. Os seguintes

comandos vão compilar e instalar a

biblioteca no sistema:

./configure --prefix=/usr

make

make install

ldconfig

Agora é a vez do Linphone. Descompacte

o arquivo com o comando tar xzf linpho-

ne-1.2.0.tar.gz. Entre no diretório criado

e siga o mesmo processo para compilar e

instalar a biblioteca Libosip2.

No processo de compilação, podem ficar

faltando alguns pacotes de desenvolvimen-

to – um exemplo é a versão dev dos codecs

Speex. Use a ferramenta de instalar pacotes

de sua distribuição para instalar o pacote

speex-dev ou outro de nome parecido.

Figura 1: Com o Linphone, é muito fácil realizar comunicações VoIP.

Capa

32

Linphone

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Criando uma contaPara configurar o Linphone, são necessá-

rios os dados do provedor VoIP – assim

o programa pode se logar no servidor.

Além de usuário e senha, você também

terá um domínio, do mesmo modo como

um endereço de email. O SIP ID (ou seja,

seu número de telefone VoIP) contém

seu nome e o domínio.

Em nosso exemplo, o SIP ID é

[email protected] para a conta no prove-

dor Sipnip. Já no provedor Purtel, o ende-

reço é um pouco diferente: pinguim@deu1.

purtel.com. A página do provedor VoIP

fornece acesso a seus dados e permite que

você faça alterações se necessário.

Depois de colocar os dados de sua

conta, ainda falta configurar alguns

detalhes. O menu Go tem um item cha-

mado Preferences. Clique primeiro na

aba SIP e digite seu ID ou seu endereço

SIP. Em nosso exemplo, precisamos co-

locar [email protected] em Your sip

address:. Não esqueça de desmarcar a

opção Automatically guess a valid host-

name, que não é necessária nesse caso.

A próxima etapa é dizer ao Linphone

em qual servidor de Internet você precisa

se conectar quando faz uma ligação. Na

seção Remote services, clique em Add pro-

xy/registrar. Na janela que surgir, digite

o endereço completo do SIP ID em SIP

Identity e o hostname do servidor SIP em

SIP Proxy. No nosso exemplo, eles são os

mesmos que o domínio. Agora clique em

OK para confirmar. Seu usuário e senha

serão solicitados. Esses dados serão grava-

dos e não será mais preciso digitá-los.

Linha diretaSe os servidores aceitaram seus dados,

já é possível fazer sua primeira ligação.

Digite o SIP ID abaixo de Sip address: na

janela principal (leia o quadro 1: “Nú-

meros de telefone e SIP IDs”, no caso de

outros números). A partir da versão 1.1.0

é possível selecionar uma de suas contas

VoIP, se você tiver mais de uma.

Selecione um servidor proxy em Proxy

to use. Depois clique em Call or answer

para fazer a chamada. Hangup or Refuse

faz o programa desligar a chamada ou

recusar uma que esteja tocando.

Para tornar as coisas mais fáceis, use

o Adress book (lista de contatos). Com

ele é possível adicionar nome, endereço

SIP e, caso tenha mais de uma conta

VoIP, especificar qual delas será usada.

Assim, basta clicar em Select para car-

regar esse contato, deixando a ligação

pronta para ser feita.

Se você marcar a opção Show more, se-

rão mostradas opções como volumes de

entrada e saída. A aba My online friends

leva para um painel onde seria possível

ver qual de nossos contatos está onli-

ne. Mas isso não funcionou em nossos

testes – provavelmente devido a algum

problema com os provedores.

Quando você completar uma ligação

qualquer, pode ter certeza de que sua con-

figuração funciona. Se ligações de linhas

convencionais ou de celulares também

chegarem ao seu computador, então agora

você tem uma opção completa de telefone

econômico. No entanto, alguns obstáculos

podem impedir a chegada a esse ponto. ➟

Quadro 1: Números de telefone e SIP IDsNo mais simples dos casos, o número de telefone será um simples número telefônico, seguido por um domínio SIP, como [email protected]. Se você precisar ligar para outra conta VoIP, a maneira mais fácil é digitar o SIP ID (como [email protected]) ou apenas o número telefô-nico com o domínio ([email protected]).

Infelizmente, nem todos os provedores possibilitam esse tipo de “discagem”. Clientes de um provedor X podem ligar para clientes Y de graça (sim, de graça!). Mas, em alguns casos, não basta colocar o SIP ID. Muitos provedores exigem um código especial seguido pelo número do provedor compatível.

www.linuxmagazine.com.br

março 2006 edição 18 33

Linphone Capa

http://supertuxbr.blogspot.com

ProblemasA maioria dos usuários fica “atrás” de

algum firewall em sua conexão com a

Internet. Nesse cenário, os protocolos do

Linphone podem se atrapalhar.

O SIP (Session Initiation Protocol) é

um protocolo de rede que gerencia li-

gações para um ou mais pontos. Mas

ele apenas manipula a coordenação, ou

seja, a sinalização da ligação. O trans-

porte dos dados é feito pelo protocolo

RTP (Realtime Transport Protocol). A

maioria dos dispositivos VoIP usam

o SIP, que já está tornando obsoleto

o protocolo H.323 e se estabelecendo

como padrão industrial.

Tanto o SIP quanto o RTP dependem

do protocolo UDP. Isso, e o fato de que a

tecnologia VoIP depende do SIP e do RTP,

pode trazer problemas em conexões com

firewall, já que o SIP informa ao prove-

dor VoIP tanto o endereço IP quanto a

porta na qual quer se conectar.

Se você estiver com problemas de som

e não possuir um roteador, mas tiver um

firewall local, primeiro libere as portas

7078/udp e 5060/udp. Se tiver um roteador,

redirecione essas portas para seu IP local.

Se os problemas continuarem, a causa

provavelmente está na placa

de som ou nos codecs.

Para confirmar se o pro-

blema está mesmo na pla-

ca, use algum programa

de gravação para gravar

sua voz pelo microfone ou

headset. Para o Gnome, há

o Audio Recorder. No KDE,

existe o Krecord.

Se o arquivo de gravação

parecer vazio ao ser tocado,

ajuste o volume no Kmix (fi-

gura 2) do KDE ou no Gnome-volume (figu-

ra 3). As opções mostradas dependem de

sua placa de som. A aba Output permite

que você emudeça a saída do microfone

na sua placa de som, o que pode ser uma

boa idéia para não ter que ouvir sua pró-

pria voz capturada pela placa. A aba Input

permite que você aumente gradualmente

o volume do microfone e, possivelmente,

o volume da captura (Capture).

O ícone do microfone abaixo desses

controles deve estar habilitado. Se apare-

cer uma aba Switches (ou Alternadores),

use a opção Mic Boost para aumentar o

ganho no sinal do microfone.

Use a aba Options para selecionar o

dispositivo de gravação, ou seja, seu

microfone. No KDE, tenha certeza de

que os LEDs verdes para Input e Capture

estão desligados; os LEDs vermelhos,

por outro lado, devem necessariamente

estar acesos. Ambos precisam estar em

um nível alto de gravação. Novamente,

você pode precisar selecionar a fonte e

habilitar a opção Mic Boost na aba Swi-

tches (Alternadores).

Métodos de compressão (ou codecs) ra-

ramente causam problemas em VoIP. Mas,

como há vários tipos de codecs, em alguns

casos um lado da comunicação pode não

reconhecer o que estiver sendo usado do

outro. No entanto, o Liphone possui uma

bela coleção de codecs e nenhum proble-

ma do tipo ocorreu em nossos testes.

Se encontrar problemas, tente mudar

a ordem dos codecs na aba Codecs do

item de menu Preferences. A maioria dos

programas usa PCMU e PCMA. Mova

essas opções para o topo da lista se os

problemas continuarem. O melhor codec

em termos de qualidade é o Speex, com

sampling rate de 16 kHz.

ConclusãoO Linphone é hoje um programa

maduro. Talvez, por isso mesmo,

seu ritmo de desenvolvimento di-

minuiu. Mesmo assim muitos usuá-

rios ainda gostariam que o aplicativo

tivesse melhor compatibilidade com

firewalls. Isso poderia ser feito com

a implementação do protocolo STUN.

Felizmente, parece que os desenvol-

vedores vão adicionar isso logo logo.

No geral, o Linphone é um softphone

muito útil e conveniente. ■

Figura 3: Usuários do Gnome podem usar o Gnome-volume para mudar as configurações de som.

Figura 2: Cheque as configurações da placa de som se estiver tendo dificuldades com entrada e saída de som.

Informações[1] Linphone: www.linphone.org

[2] Código fonte do Linphone: simon.morlat.free.fr/download

O a

utor

Simone Schäfer estuda Computação Gráfica e passa a maior parte de seu tempo ajustando seu sistema Arch Linux. Quando não está fazendo isso, também gosta de testar outras distribuições.

Capa

34

Linphone

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

O COC DIMINUIU EM 30% OS CUSTOSDE GERENCIAMENTO AO ADOTAR O WINDOWSSERVER SYSTEM EM VEZ DO LINUX.

“Utilizávamos o Windows Server System™ em baixaplataforma e em algumas aplicações, mas tambémtínhamos soluções rodando em Linux. Essa diversidadeacabava dificultando o processo de gerenciamentoda rede e gerava altos custos operacionais.Ao repensar a forma como nossa estrutura de TI haviasido concebida, chegamos a cogitar a possibilidadede adotar apenas o Linux. Porém, acabamosdescartando essa idéia ao considerarmos que adesejada redução de TCO só seria alcançada com oWindows Server.” - Gustavo Hubalde,Diretor de TI, COC.

Para obter o estudo completo do caso e outrasconclusões de terceiros, visite microsoft.com/brasil/fatos

VEJA OS FATOS.

FÁCIL DE GERENCIARMUDANÇAS EM DIAS, NÃO EMMESES

REDUÇÃO DO CUSTO TOTAL DE PROPRIEDADE

LINUXOU WINDOWS SERVER

© 2005 Microsoft Corporation. Todos os direitos reservados. Microsoft, o logotipo do Windows, Windows Server e Windows Server System são marcas registradas ou marcas da Microsoft Corporation nos EstadosUnidos e/ou outros países. Os nomes das empresas e produtos reais mencionados aqui podem ser marcas comerciais de seus respectivos detentores.

500784_216X286.indd 1 2/17/06 2:35:57 PM

500784_216X286.indd_2.pdf �ebruary 17, 2006

http://supertuxbr.blogspot.com

Atualmente quando se fala em VoIP, o nome Skype soa quase em uníssono da boca dos usuários. Entretanto, muito embora gratuito, o código

fonte do Skype e de outros aplicativos de telefonia web populares não é aberto. Neste artigo, vamos mostrar as alternativas livres para eles.

Por Rafael Peregrino da Silva

Alternativas livres para o Skype

Livre para ligar

N a 15ª edição da LM, no artigo

“Alô? É da Internet?” [1] , à página

85, o autor Rafael Rigues realizou

testes com os dois aplicativos VoIP mul-

tiplataforma mais populares atualmente

entre usuários desse tipo de tecnologia:

o Skype e o Gizmo . No mesmo artigo, o

autor comenta que nenhum desses apli-

cativos é Software Livre, completando o

comentário com a seguinte afi rmação:

“os puristas irão, com certeza, reclamar

e indicar um sistema obscuro com me-

tade dos recursos como a ‘alternativa

perfeita’”. Resolvemos aceitar o “desafi o”

e buscar pelas alternativas realmente

livres – e encontramos várias.

WengoPhone O WengoPhone é o softphone livre cria-

do no âmbito do projeto OpenWengo [2] ,

uma comunidade patrocinada pelo pro-

vedor VoIP francês Wengo , subsidiária

do grupo Neuf Cegetel . Da mesma forma

que o Skype usa uma rede própria para

a comunicação de seus usuários, os usu-

ários do WengoPhone também dispõem

da rede Wengo para se comunicar e fazer

chamadas para telefones fi xos conven-

cionais. A boa notícia é que, ao contrário

do Skype, toda essa infraestrutura é ba-

seada em padrões abertos (SIP e H.323),

de modo que com o WengoPhone você

www.sxc.hu – Päivi R

ytivaara

pode usar qualquer provedor de serviços

que opere usando esses padrões.

O código fonte do WengoPhone está

licenciado sob a GPL. O aplicativo traz

recursos de telefonia IP, mensageiro ins-

tantâneo, vídeo conferência e SMS.

Para usar os serviços da prestadora

Wengo, é necessário criar uma conta na

sua página web e carregá-la com créditos

para efetuar esse tipo de conexão – a pro-

vedora já lhe fornece € 0,20. As chamadas

são realizadas usando por padrão a porta

5060. Se você estiver atrás de um fi rewall,

pode realizar as chamadas através de um

túnel HTTP. O sistema fornece suporte

também para conexões via

servidor proxy e para crip-

tografi a via SSL.

A interface gráfi ca do pro-

grama “clássico” multipla-

taforma é escrita em C++

usando as bibliotecas Qt, da

Trolltech. No site do proje-

to há pacotes para Linux

(DEB e RPM), Windows®

e Mac OS X. Uma grande

novidade é que o sistema

está evoluindo para uma

interface baseada em XUL,

a ser carregada como exten-

são do navegador Mozilla

Firefox (já disponível em

versão preliminar). Do ponto de vista da

tecnologia, vale ressaltar que o progra-

ma utiliza um codec de áudio de código

aberto chamado Speex , sobre o qual não

incide nenhum tipo de patente.

A operação do programa é bastante

intuitiva. Basta entrar o nome do usuá-

rio com quem se deseja falar no campo

correspondente – ou um número de tele-

fone comum – e pressionar o botão com

a imagem de um telefone verde. Uma

janela vai se abrir e mostrar o status da

conexão. Quando o usuário atender do

outro lado, uma indicação do tempo de

conexão será mostrada. ➟

Figura 1: O OpenWengo não deve nada para as soluções proprietárias similares disponíveis no mercado.

Capa

36

Alternativas livres para telefonia web

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Worldwide Series

World’s leading Trade Event for Linux and Open Source in business

LinuxWorld Conference & Expo –

Mexico City February 14 – 17, 2006 www.linuxworldexpo.com.mxSydney March 28 – 30, 2006 www.linuxworldexpo.com.auBoston April 3 – 6, 2006 www.linuxworldexpo.comMadrid April 18 –19, 2006 www.linuxworldexpo.comKuala Lumpur April 20, 2006 www.linuxworldexpo.comToronto April 24 – 26, 2006 www.linuxworldcanada.comShanghai April 2006 www.linuxworldchina.comMilan May 15 – 16, 2006 www.linuxworldsummit.itJohannesburg May 16 – 19, 2006 www.linuxworldexpo.co.zaSão Paulo May 23 – 25, 2006 www.linuxworldexpo.comStockholm May 31, 2006 www.linuxworldexpo.comTokyo May 31 – June 2, 2006 www.linuxworldexpo.comSeoul June 5 – 7, 2006 www.linuxworldkorea.comWarsaw June 21 – 22, 2006 www.linuxworldexpo.comSingapore July 19, 2006 www.linuxworldexpo.comBeijing August 2006 www.linuxworldchina.comSan Francisco August 14 – 17, 2006 www.linuxworldexpo.comMoscow September 4 – 6, 2006 www.linuxworldexpo.ruUtrecht October 11 – 12, 2006 www.linuxworldexpo.nlLondon October 25 – 26, 2006 www.linuxworldexpo.co.ukGuangzhou November 2006 www.linuxworldchina.comCologne November 14 – 16, 2006 www.linuxworldexpo.de

INTERNATIONAL MEDIA SPONSORhttp://supertuxbr.blogspot.com

EkigaO Ekiga [3] é o novo nome que o bom e

velho GnomeMeeting [4] ganhou a partir

da versão 2.0. Sua versão preliminar está

disponível para download para diversas

versões de Debian, do Ubuntu e do Fe-

dora em [5]. Os recursos do aplicativo,

no que tange à conectividade, deixam

poucos desejos não realizados: compa-

tibilidade com padrões H.323v4 e SIP,

suporte a conexões via proxy, redire-

cionamento e monitoramento de cha-

madas, ligações para a rede telefônica

convencional, faixa de portas de conexão

configurável, mensageiro instantâneo

integrado, suporte a NAT transparente

e assistido (STUN – Simple Traversal of

UDP over NATs) e a conexões de áudio e

vídeo, além de compatibilidade com IPv4

e IPv6, para citar apenas alguns.

A interface gráfica do programa tam-

bém é simples e intuitiva. A nacionali-

zação para o português do Brasil ainda

está um pouco “capenga”, mas apesar

das misturas com o inglês em alguns

elementos da interface, serve plenamente

aos seus propósitos.

A primeira vez que o programa é exe-

cutado, um assistente é chamado para a

configuração inicial do aplicativo. Esse

assistente compreende 10 passos, nos

quais diversas informações são solici-

tadas ao usuário. Entre elas, há uma

solicitação dos dados de sua conta em

um provedor VoIP compatível com SIP

ou H.323. Caso você ainda não tenha

nenhuma, há um vínculo nessa mesma

janela de diálogo para a página web do

provedor do próprio projeto Ekiga. O

assistente verifica também se o seu PC

se encontra atrás de um firewall reali-

zando NAT e se há restrições de acesso

à porta padrão de comunicação VoIP via

protocolo SIP, caso em que o próprio

assistente sugere a ativação de suporte

STUN, de modo a permitir comunica-

ção através do firewall. Por último, o

assistente analisa suas configurações

de áudio e vídeo, esta última para o

caso de comunicação com imagem via

webcam. Em seguida, a janela do apli-

cativo se abre e você já pode começar

a se comunicar.

O aplicativo também é capaz de fazer

chamadas do PC para aparelhos de telefo-

ne tradicionais. Se você já não dispõe de

uma conta em uma operadora VoIP que

disponibilize esse serviço, o aplicativo

sugere a você que abra uma conta “PC-

para-Telefone” junto a uma provedora

parceira do projeto, que é a Diamondcard

Worldwide Communication Service™. Nes-

sa provedora você pode comprar “minuta-

gem” (mínimo de 10 dólares) e gerenciar

a sua conta telefônica.

Tapioca VoIPO Instituto Nokia de Tecnologia de Ma-

naus criou um framework VoIP completo,

o Tapioca [6], cujo objetivo principal é

permitir a integração e o desenvolvimen-

to de recursos VoIP a qualquer tipo de

aplicativo, através da disponibilização

de uma interface modular para diferentes

protocolos, tais como SIP e H.323.

Atualmente em seus estágios iniciais de

desenvolvimento, não há pacotes prepara-

dos para nenhuma distribuição Linux do

Tapioca. Tudo tem que ser compilado di-

retamente dos fontes, inclusive as biblio-

tecas e aplicativos dos quais ele depende.

Além disso, essa compilação deve ser feita

em uma seqüência determinada e versões

específicas de cada uma das bibliotecas

deve ser utilizada. Há um cliente para o

sistema escrito em GTK+.

Apesar de já estar disponível para a

plataforma de desenvolvimento Maemo

do Nokia 770 Internet Tablet, a análi-

se do sistema fugiria ao escopo deste

artigo, de modo que pretendemos de-

dicar um artigo específico para a sua

configuração em uma edição futura da

Linux Magazine.

ConclusãoPodemos respirar aliviados: há clientes,

frameworks e até infraestruturas VoIP

totalmente livres à disposição de quem

se proponha a usá-los. Para melhorar,

todas essas soluções são baseadas em

padrões abertos e buscam usar tecno-

logias livres de patentes.

Tanto o OpenWengo quanto o Ekiga:

estão equipados para atender às neces-

sidades de qualquer usuário. E o projeto

Tapioca está no caminho para se tornar

um opção viável de tecnologia, capaz

de possibilitar a integração desse tipo

de tecnologia a qualquer aplicativo de

comunicação web. Com a Nokia como

patrocinador, é muito provável que, com

o perdão do trocadilho, o Tapioca rapida-

mente crie raízes em inúmeros projetos

da comunidade. ■

Figura 2: Que Skype que nada! Com o Ekiga o usuário tem tudo o que precisa à mão..

Informações[1] Alô? É da Internet, Linux Magazine Brasil,

15ª edição, página 85.

[2] WengoPhone: www.openwengo.org

[3] Ekiga: www.ekiga.org

[4] GnomeMeeting: www.gnomemeeting.org

[5] Pacotes atualizados do Ekiga: snapshots.gnomemeeting.org

[6] Tapioca: tapioca-voip.sourceforge.net

Capa

38

Alternativas livres para telefonia web

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

Para quem procura um sistema rápido, estável e moderno, sem pesadas interfaces gráficas para tudo, o Arch pode significar o fim dessa busca.

Por Jon Kent

No Arch Linux, menos é mais

Do arcoda velha

U ltimamente, as mais famosas distribuições têm dado

ênfase ao uso do Linux como estação de trabalho,

além da facilidade de instalar e configurar o sistema

sem a necessidade de se aventurar por nenhuma linha de

comando. Apesar do sucesso dessa iniciativa, um segmento

significativo da comunidade Linux ainda prefere um ângulo

mais “simples”. Esses usuários querem clareza, estabilidade

e desempenho, sem dar a mínima para assistentes de confi-

guração e ferramentas gráficas. Essa turma sempre gravitou

em torno de distribuições como Slackware, Gentoo ou Debian.

Mas um novo integrante dessa família vem ganhando cada

vez mais peso: o Arch Linux [1].

A distribuição foi criada pelo canadense Judd Vinet em

2001, ao constatar que nenhum sistema satisfazia seus ideais.

Assim nasceu o Arch, com muitos dos conceitos do Debian,

Gentoo e Slackware. Gradualmente, a distribuição evoluiu e

se tornou uma opção simples, poderosa e estável, com uma

base fiel de usuários e desenvolvedores.

Como há poucas ferramentas de configuração, esse não é um

sistema para usuários iniciantes. A filosofia do Arch é manter

o usuário bem próximo da estrutura interna da distribuição. É

necessário manipular diretamente arquivos de configuração,

como nos “bons e velhos tempos”. Há vantagens nítidas sobre

outras distribuições “simples”, como o Slackware. Por exem-

Figura 1: É preciso configurar todo o sistema editando os bons e velhos arquivos de configuração.

Análise

40

Arch Linux

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

plo, o suporte hotplug e o gerenciamento

mais eficiente de pacotes.

Além disso, o Arch é otimizado para

processadores i686, trazendo mais de-

sempenho que distribuições projetadas

para rodar em uma gama maior de arqui-

teturas. Usuários do Arch garantem que

o sistema possui “a estabilidade e a sim-

plicidade do Slackware com a velocidade

do Gentoo”. O quadro 1 (“A comunidade

explica”) contém mais comparativos com

outras distribuições.

Embora seja difícil aprender a usar

uma distribuição como o Arch, a van-

tagem é que uma vez que você domina

a fera, adquire conhecimento profundo

sobre Linux. Neste artigo vamos iniciá-lo

no Arch, desde a instalação até o uso de

seus recursos mais interessantes.

InstalaçãoAo contrário das grandes distribuições,

o instalador do Arch é baseado em texto.

Quem já instalou Slackware ou Debian

se sentirá em casa. O Arch é instalado

sem problemas ao lado de qualquer sis-

tema operacional pré-existente – mas

não deixe de fazer becapes dos dados

importantes por causa disso. Durante a

instalação, vale a pena ter acesso a outro

PC para consultar a boa documentação

no site do Arch [3].

Como na maioria das instalações, pri-

meiro é necessário particionar o disco.

Isso pode ser feito com o cfdisk. Se pre-

ferir, é possível deixar o Arch tomar

para si todo o disco rígido. Após criar

as partições e definir os pontos de mon-

tagem, é preciso selecionar os pacotes.

O recomendável é que você instale os

pacotes básicos nesse estágio, deixan-

do o restante para quando o sistema já

estiver rodando corretamente.

Depois que o sistema básico estiver

instalado, escolha um kernel confi-

gurado para IDE ou SCSI (que você

vai precisar, caso tenha dispositivos

SATA). É possível recompilar um ker-

nel mais a seu gosto, se preferir. Con-

tudo, nesse estágio, faz mais sentido

escolher um kernel pronto antes de fa-

zer uma mudança drástica como essa.

Opte por um kernel udev, mais atual,

em vez do devfs – o Arch já trabalha

com o novo udev. O último estágio é

a configuração do sistema. É nesse

ponto que o acesso à documentação

oficial vem a calhar. ➟

Quadro 1: A comunidade explicaUma seção no site oficial do Arch compara a distribuição com outros siste-mas populares [2]. Obviamente, a análise foi feita pelos desenvolvedores do Arch – os de outras distribuições devem ver a coisa de maneira diferen-te. Mas o texto fornece uma boa idéia dos objetivos do Arch.

GentooO Gentoo tem mais programas disponíveis para instalação. Já o Arch per-mite a distribuição tanto de binários quanto do código fonte. Os pacotes baseados em código fonte no Arch são mais fáceis de serem criados do que os ebuilds. O Gentoo é mais “portável” em uma instalação padrão, já que os pacotes são compilados para sua arquitetura específica. O Arch traz pacotes compilados apenas para a arquitetura i686 (embora versões para i586 e x64 estejam a caminho). Não há nenhuma prova documental de que o Gentoo seja mais rápido que o Arch.

CruxO Arch descende do Crux. Judd Vinet certa vez resumiu as diferenças entre eles: “Eu usava Crux antes de criar o Arch. O Arch começou, na verdade, como um Crux. Então criei o pacman e o makepkg para substituir meus pseudo-scripts em bash (comecei o Arch como um sistema Linux From Scratch) para gerenciamento de pacotes. As duas são distribuições completamente separadas mas, tecnicamente, são quase a mesma coisa. Um exemplo: ambas, oficialmente, têm meios de resolver dependências

– embora o Crux tenha uma comunidade que fornece outros recursos. O prt-get do Crux chega a dar conta de uma lógica de dependências, embora rudimentar. O Crux tende a ignorar muitos dos problemas que também temos, já que é um conjunto de pacotes bem minimalista”.

SlackwareO Slackware e o Arch são ambas distribuições “simples”. As duas usam scripts de inicialização do tipo BSD. Mas o Arch tem um sistema de geren-

ciamento de pacotes muito mais robusto, o pacman. Ao contrário do que é possível fazer com as ferramentas-padrão do Slackware, o pacman permite a atualização do sistema todo de forma simples. O Slackware tem um ciclo de lançamentos mais conservador, preferindo incluir programas em versões comprovadamente estáveis. Nesse aspecto, o Arch é muito mais

“atual”. O Arch roda apenas na arquitetura i686, enquanto o Slack pode rodar em sistemas i486. Resumindo, o Arch é um sistema muito bom para usuários do Slack que querem um gerenciamento de pacotes mais robusto e programas mais atuais.

DebianO Arch é mais simples que o Debian. Há menos redundância de programas e melhor estrutura para a construção de pacotes personalizados. O Arch é também mais permissivo no que se refere a pacotes “não-livres”, conforme a definição GNU. O Arch é otimizado para i686. E os programas são mais atuais que os do Debian.

Distribuições “gráficas”As distribuições gráficas são bem parecidas, e o Arch é bem diferente delas. Ele é baseado em texto e na linha de comando. Para quem quer aprender Linux, o Arch vence. As distribuições gráficas vêm com interfaces de instalação (como o Anaconda do Fedora) e interfaces de configuração (como o YaST do SuSE).

Arch X UbuntuO Arch tem uma base estrutural mais simples que a do Ubuntu. Se você quiser compilar seu próprio kernel, testar projetos CVS, ou com-pilar outros programas de vez em quando, o Arch é melhor. Se quiser um sistema pronto e produtivo bem rápido, sem precisar mexer nas tripas do sistema, o Ubuntu sai ganhando. No geral, desenvolvedores e fuçadores vão preferir o Arch ao Ubuntu.

www.linuxmagazine.com.br

março 2006 edição 18 41

Arch Linux Análise

http://supertuxbr.blogspot.com

Será apresentada uma lista de ar-

quivos de configuração que precisam

ser editados. Há comentários úteis

dentro desses arquivos, mas ajuda

muito se a pessoa souber a função

de cada um deles. Quem já tiver

configurado sistemas Linux, sem a

ajuda do instalador gráfico, não vai

estranhar essa parte. Por exemplo, o

rc.conf contém as configurações de

rede, nome da máquina, módulos do

kernel e serviços a serem iniciados. Editores como o vi

ou nano são fundamentais nessa etapa.

A ordem dos serviços no rc.conf é importante, já que eles

são iniciados exatamente na ordem em que foram colocados.

Não há checagem de interdependência de serviços. Então, se

um deles não iniciar, vale a pena verificar se a ordem está

correta. Por último, verifique (e depois verifique novamente)

as mudanças que você fez. O instalador vai prosseguir mesmo

que você não tenha editado todos os arquivos importantes

– nesse caso, certamente ocorrerão erros.

Quando terminar o processo de instalação, reinicie a

máquina. Agora já temos um sistema Arch mínimo. O

próximo passo é atualizar os pacotes com a ferramenta

pacman (mais informações sobre isso a seguir), antes de

começar a instalar novos programas.

Se você escolheu o udev no lugar do devfs, não haverá

problema nenhuma com esse tipo de atualização. Já, se

escolheu devfs, serão necessárias etapas adicionais para

converter o sistema devfs para udev.

InicializaçãoA principal filosofia do Arch é dar ao usuário o controle

completo da configuração do sistema. Como vimos durante

a instalação, nada é configurado automaticamente e nenhum

serviço é acionado, a não ser que você mesmo o faça. Isso

permite que os usuários entendam o funcionamento do Arch,

e do próprio Linux, bem rápido.

O Arch usa o sistema de inicialização do tipo BSD,

também usado no Slackware. Para alguns, esse é “O

Verdadeiro Sistema de Inicialização”, embora outros

prefiram o System V, usado por um número maior de

distribuições Linux. Esse último sistema também pode

ser usado, e seus scripts estão em /etc/rc.d.

Gerenciamento de pacotesA ferramenta para gerenciar pacotes binários é o pacman,

equivalente ao apt-get do Debian. O formato dos pacotes é

tar.gz e o banco de dados é baseado em texto.

Como no apt-get, o pacman permite a instalação/re-

moção de pacotes, consultas ao status de determinados

programas, atualização do banco de dados... O pacman

também permite a utilização tanto do repositório oficial

quanto os de usuários.

Os repositórios de usuários, ou AUR (Arch User Repositories)

[4] são um recurso bem útil, permitindo que um usuário

disponibilize um pacote ausente do repositório padrão. Um

bom exemplo disso é o fouiny_repo, que contém pacotes da

versão E17 do Enlightenment. É possível criar seu próprio

repositório com os pacotes que você queira compartilhar

com a comunidade.

Como qualquer outro bom gerenciador de pacotes, o pacman

permite que você faça um upgrade geral do sistema de maneira

fácil. Basta sincronizar a lista de pacotes de seu sistema com

a do repositório. Então, todos os pacotes serão atualizados

para suas últimas versões. Instalar também é fácil: todas as

dependências serão resolvidas e baixadas automaticamente.

Tabela 1: Scripts de inicialização do ArchArquivo Função

/etc/rc.sysinit Responsável pelo carregamento e configuração do sistema/etc/rc.single Script para o nível de sistema de usuário único (single user)/etc/rc.multi Nível multiusuário/etc/rc.local Nível multiusuário local

/etc/rc.shutdown Script para desligar o sistema/etc/rc.d/* Daemons configurados no sistema

Figura 2: Embora o foco do Arch seja a configuração manual, depois que isso é feito, o sistema torna-se tão confortável quanto qualquer outra distribuição com Gnome ou KDE.

Análise

42

Arch Linux

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

O pacman é configurado no arquivo /etc/pacman.conf. Nes-

se arquivo, é possível especificar os repositórios. Ele também

pode especificar que arquivos de configuração não devem ser

modificados por nenhuma instalação, além de poder “conge-

lar” a versão de um pacote instalado, para que ele não seja

atualizado nunca mais. Por exemplo:

NoUpgrade = etc/passwd etc/group etc/shadow etc/sudoers

HoldPkg = pacman glibc

Na seção de repositórios, é possível defini-los tanto dire-

tamente quanto “chamar” outro arquivo. Essa última opção

é útil para os repositórios oficiais, que contam com muitos

espelhos, conforme exemplifica a listagem 3.

Código fonteO Arch também fornece uma ferramenta para gerenciamento

de pacotes com código fonte. Trata-se do ABS (Arch Build Sys-

tem), que é quase igual ao emerge do Gentoo. Ele foi projetado

para empacotar programas fresquinhos (que ainda não es-

Figura 3: A interface gráfica Enlightenment E17 está disponível para download no fouiny_repo, um dos repositórios de usuários do Arch, ou AUR (Arch User Repositories).

Listagem 1: /etc/pacman.conf[repository-name]Server = ftp://server.net/repo

[current]# Add your preferred servers here, they will be used firstInclude = /etc/pacman.d/current

www.linuxmagazine.com.br

março 2006 edição 18 43

Arch Linux Análise

http://supertuxbr.blogspot.com

tão disponíveis em forma binária), para

customizar pacotes existentes de acordo

com seus parâmetros ou até recompilar

todo o sistema, usando suas próprias

flags de compilação.

O ABS constrói pacotes binários que

podem ser instalados pelo pacman. O

uso do ABS não é obrigatório, mas ele

permite que você faça ajustes finos na

compilação de programas.

O ABS depende do cvsup e do wget.

Portanto, eles precisam estar instala-

dos, antes de você começar a usá-lo

em compilações. Para instalar esses

pacotes, simplesmente digite:

pacman -Sy cvsup wget

Vale a pena sempre usar a opção -Sy

para se instalar programas. Isso garante

a instalação das últimas versões, já que

a opção atualiza a lista de pacotes antes

da instalação.

Use o comando abs para sincroni-

zar sua árvore ABS com a do servidor

CVS do Arch, que fica espelhada local-

mente, em /var/abs. A estrutura do

diretório é bem simples. Em /var/abs

cada diretório se refere a um progra-

ma, contendo um arquivo PKGBUILD

para a compilação do binário.

Para instalar programas com o ABS,

entre no diretório do pacote desejado

e execute o comando makepkg (isso

exige que haja um arquivo PKGBUILD

no diretório local). Após a compilação

do código fonte, é possível instalá-lo

com o pacman:

Instalar novo pacote:

pacman -A pacote.pkg.tar.gz

Atualizar pacote:

pacman -U pacote.pkg.tar.gz

Além desses diretórios, na raiz de

/var/abs há um diretório chamado lo-

cal. Ele serve para a compilação com

suas próprias flags. A idéia é que talvez

esses arquivos prontos do tipo PKGBUILD

não contenham as configurações que

você precisa. Para usar esse recurso, crie

um diretório em local, copie o arquivo

para lá, acrescente ou remova configu-

rações e rode o makepkg para compilar

e instalar o programa.

Para controlar quais otimizações do

gcc você quer, o makepkg usa um arquivo

de configuração, o /etc/makepkg.conf.

Se você já usou Gentoo, as opções dentro

desse arquivo não serão estranhas. Por

padrão, o Arch usa a opção -march=i686

-O2 -pipe. Se você gosta de viver peri-

gosamente, experimente a opção -O3.

Como o Arch é firmemente baseado em

i686, faz pouco sentido mudar a opção

-march, ao menos que você esteja com

delírios de aventura.

hwdPor padrão, o Arch usa os scripts de de-

tecção de hardware do tipo hotplug, os

mesmos da maioria das distribuições.

Esse sistema simplifica os módulos de

configuração, detecta dispositivos au-

tomaticamente e carrega os módulos

necessários. Contudo, os desenvolvedo-

res do Arch consideram o hotplug mui-

to lento. Então, foi criado um caminho

próprio: chamado hwd. Ao contrário do

hotplug, o hwd executa o modprobe em

processos-filhos, para que ele não tenha

que esperar o modprobe carregar cada

módulo, antes de continuar.

O hwd funciona tanto com o devfs

quanto com o udev. Como o hwd não

é uma ferramenta de configuração, ele

não altera arquivos no /etc. Isso iria

contrariar a filosofia do Arch. Ao invés

disso, ele detecta os componentes e for-

nece informações sobre como configurar

manualmente os arquivos.

Caso você esteja satisfeito com o ho-

tplug, não é necessário instalar o hwd.

Essa também é outra filosofia do Arch,

um componente extra é opcional de

verdade. Se o computador raramente

é reiniciado, ou se você consegue viver

com o tempo de boot um pouco maior do

hotplug, não há motivo para descartá-lo

e partir para o hwd.

Mas se quiser experimentar, digite:

pacman -Sy hwd lshwd

Agora é necessário configurar o ser-

viço hwd para ser iniciado junto com o

sistema e desabilitar o hotplug. Como

você já deve imaginar, o arquivo a ser

Tabela 2: Opções do pacmanOpção Função

-Sy Sincroniza a lista de pacotes-S pacote Instala, reinstala ou atualiza um pacote

-S extra/pacote Instala um pacote do repositório extra-Su Atualiza todos os pacotes instalados

-A /<caminho>/ pacote-version.pkg.tar.gz

Instala um pacote local

-R pacote Remove um pacote-Rs pacote Remove um pacote e suas dependências, se possível-Ss pacote Procura por um pacote-Si pacote Exibe as informações de um pacote

-Scc Limpa o cache dos pacotes baixados

Análise

44

Arch Linux

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

editado é o rc.conf. Basta acrescentar

a seguinte linha:

!hotplug hwd

O ponto de exclamação (“!”) na frente

de hotplug desabilita esse serviço. O pró-

ximo passo é baixar as últimas tabelas

pci/pcmcia, que o hwd usa para identi-

ficar o hardware. Faça isso com:

hwd -u

Reinicie a máquina. No lugar do hot-

plug, agora quem vai subir é o hwd.

Além da detecção de hardware, o

hwd e o lshwd podem ser usados tam-

bém para preparar um arquivo de con-

figuração inicial do X, ou ajudá-lo a

configurar o X:

hwd -x

Esse comando vai criar um arqui-

vo de exemplo do X.org em /etc/X11,

que pode ser usado como base para

o arquivo final.

Ambiente gráficoO Arch usa o X.org como servidor X

e possui pacotes para todos os gran-

des ambientes gráficos para o usuário:

KDE, Gnome e XFCE. Para cada um,

há todos os aplicativos mais popula-

res, incluindo programas

proprietários como o plugin

do Macromedia Flash para

o Mozilla e o leitor de PDFs

Acrobat Reader.

Alguns programas vão

entrar automaticamente no

menu principal do ambien-

te escolhido, outros exigem

que isso seja feito manual-

mente. Nesse quesito ainda

não há padrões para o Arch,

o que irrita um pouco. No

entanto, a velocidade com que o Gnome

ou o E17 rodam é impressionante – con-

seqüência da otimização para i686 de

toda a base funcional do Arch.

ConclusãoO Arch é uma distribuição rápida e leve.

E não há nenhum componente que con-

trarie o objetivo do projeto. Nesse sen-

tido, é uma das melhores distribuições.

Embora não haja ferramentas de confi-

guração, essa política obriga o usuário

a ganhar um entendimento profundo

sobre o Linux. Se você quer controle

absoluto sobre sua instalação, o Arch é

uma ótima opção.

Embora não se trate de uma distribui-

ção para iniciantes, a boa documentação

e os fóruns amigáveis [5] permitem que

você ponha a mão na massa sem muito

receio. Mesmo para quem tem pouca ex-

periência com Linux, essa é uma opção

que vale a pena. ■

Informações[1] Arch Linux: www.archlinux.org

[2] Arch X Outros: wiki.archlinux.org/index.php/Arch_vs_Others

[3] Guia de instalação: archlinux.org/docs/en/guide/install/arch-install-guide.html

[4] Repositórios de usuários: user-contributions.org/home/index.php

[5] Em português: tinyurl.com/cqy9f

Figura 4: O hwd detecta componentes de hardware e mostra informações sobre o sistema.

www.linuxmagazine.com.br

março 2006 edição 18 45

Arch Linux Análise

http://supertuxbr.blogspot.com

Conheça as ferramentas disponíveis e suas principais características. Para o uso no desktop, analisamos o Gantt, o Planner e o Real Time. Mas há também

os que rodam no navegador, como dotProject, ProjectOpen e Gforge. Por Miguel Koren O'Brien de Lacy

Comparativo de gerenciadores de projetos

Controle total

H oje, uma busca pela expressão

“project management” no site

Freshmeat (especializado em

Software Livre [1] ) traz cerca de 1.300

resultados. Mas boa parte não se en-

quadra na nossa defi nição de geren-

ciamento de projetos (leia o quadro 1:

“O que é gerenciamento de projetos?”).

Obviamente, não é possível listar to-

das as soluções disponíveis. O objetivo

deste artigo é mostrar os principais

aplicativos que podem ser usados no

Linux, não se prendendo apenas às

opções de Software Livre.

Atualmente, a tendência é a utilização

de sistemas na web, ou seja, que podem

ser usados no navegador de Internet. Po-

rém, mostraremos tanto essas quanto as

soluções para se instalar no computador

de trabalho, já que são mais ricas em

possibilidades de manipulação de cro-

nogramas (vale lembrar que gerenciar

projetos é muito mais do que acompa-

nhar um cronograma).

A difi culdade para se encontrar sis-

temas livres que nos ajudem “de ver-

dade” a gerenciar projetos parece estar

relacionada à dinâmica e fi losofi a de

trabalho no mercado de Software Livre.

Tradicionalmente, ele atende às áreas

ww

w.s

xc.h

u –

Shaffi

ck

J.

Quadro 1: O que é gerenciamento de projetos? Na prática, gerenciadores de projetos são pouco usados. E há uma confusão no mundo do Software Livre quando alguém fala de gerenciamento de projetos. Essa confusão não é muito diferente da que existe no mundo comercial, mas está mais difundida.

A palavra “project” é utilizada para denominar o resultado de um empreendimento. Já “project management” signifi ca o gerenciamento da execução do empreendimento que gerará o resultado. Ou seja, é o gerenciamento do empreendimento. No Brasil, isso é conhecido por termos como

“gerenciamento de projetos”, “administração de projetos” e “gestão de projetos”. A palavra “empre-endimentos” também costuma aparecer no lugar de “projetos”. Na área comercial, o termo “projeto” está associado ao trabalho de gerenciar o empreendimento. Mas no mundo do Software Livre é freqüentemente associado com o resultado do empreendimento. É por esse motivo que é muito comum ouvirmos falar de “projeto Linux” e “projeto Apache”, por exemplo.

Quem fala desses projetos está se referindo ao próprio servidor web Apache e seus programas asso-ciados e ao próprio kernel ou alguma distribuição Linux. Quando se fala em Software Livre, é comum vermos um sistema (formado por diferentes elementos como arquivos HTML, imagens, scripts PHP etc) ser chamado de projeto. Nesse caso, o “gerenciamento do projeto” normalmente signifi ca gerar o sistema instalável a partir dos componentes. Um exemplo desse uso do termo “project manage-ment” é o caso do Apache Maven [2] . Outro caso é o IDE ( Integrated Development Environment ) Anjuta [3] , onde “gerenciamento de projetos” signifi ca administrar os arquivos com o código fonte de forma organizada para que, no fi nal, possamos gerar o executável.

A prática do gerenciamento de projetos tem muito a ver com metodologia e cultura. Para situações onde a quantidade de projetos é maior, a quantidade de pessoas envolvidas é grande ou a dinâmica de trabalho é elevada, é necessário o uso de ferramentas especiais para isso. Neste artigo, defi nimos como “ferramenta” um aplicativo voltado para esse segmento, que roda em um computador. Dese-jamos separar as soluções que serão analisadas de outros aplicativos como planilhas eletrônicas, que também podem servir a essa prática.

Existem ferramentas para gerenciamento de projetos há cerca de 50 anos. Não estamos encarando um problema ou mercado novo. O que tem mudado muito desde o início do uso dessas ferramen-tas é a capacidade computacional disponível, a possibilidade de acesso a elas e as necessidades que a própria prática do gerenciamento de projetos vai criando. O foco hoje é a colaboração dos envolvidos, não mais os cálculos sofi sticados de caminho crítico. Muitas atualmente nem possuem visualização de cronograma. O que importa é a simplicidade e a clareza de operação, informações relevantes, oportunas (ou seja, aparecem no momento em que são necessárias) e sem erros.

Análise

46

Gerenciamento de projetos

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

de interesse dos desenvolvedores. Por

isso, há muitos aplicativos de webmail,

segurança, multimídia ou desenvolvi-

mento na web. Mas há poucos sistemas

para gerenciamento de projetos, GIS

(Geographic Information System) ou CAD

(Computer-Aided Design), por exemplo.

Além disso, a dinâmica de trabalho das

equipes que desenvolvem Software Li-

vre é menos estruturada, em termos

gerais, do que a de empresas comerciais.

Isso acontece devido, em grande parte,

à natureza voluntária da participação

dos programadores no desenvolvimento

de software livre.

São poucas as iniciativas que possuem

estruturas formais – quatro exemplos

são o Linux, o Apache, o OpenOffice.org

e o Plone. Muitas delas têm equipes que

nem respondem a emails ou que abando-

nam os projetos. Obviamente, isso não

é uma crítica à qualidade do Software

Livre nem sobre a validade desse modelo

de desenvolvimento. É apenas uma re-

flexão sobre o estado atual do mercado,

já que no ambiente comercial também

há empresas que não respondem a seus

emails e que abandonam seus projetos.

Essa situação faz com que o geren-

ciamento de projetos seja considerado

menos importante. As equipes de desen-

volvimento de Software Livre acreditam

em frases como “release early, release

often” (algo como “entregue rápido, en-

tregue freqüentemente"). Em princípio,

isso não atrapalha o desenvolvimento

dos aplicativos de gerenciamento de

projetos, mas aliado ao arraigado con-

ceito de “está terminado quando ficar

pronto”, faz essa área não ser muito

popular no mundo do SL. Outra filo-

sofia de trabalho que atenta contra as

práticas comuns de desenvolvimento

de software são frases como “o código

fonte é a documentação”. Em resumo,

no mundo do Software Livre ainda falta

conhecimento sobre gerenciamento de

projetos devido à falsa noção de que isso

não é necessário.

Há instituições específicas hoje para o

apoio ao gerenciamento de projetos. Por

exemplo, o PMI (Project Management Ins-

titute [4]) e o IPMA (International Project

Management Association [5]). Elas for-

necem regras ou conselhos para ajudar

no sucesso de projetos gerenciados. Toda

ferramenta para gerenciamento de pro-

jetos que seja de utilidade geral deveria

atender de alguma forma às diretrizes

dessas instituições. Neste artigo, utili-

zaremos a divisão de áreas principais

do PMBOK (Project Management Body of

Knowledge – Corpo de Conhecimento de

Gerenciamento de Projetos) como fonte

para posicionar as diferentes ferramentas

com as necessidades práticas. Avaliamos

o atendimento dos diversos programas

nas áreas de gerenciamento de:

P Integração

P Escopo

P Tempo

P Custo

P Qualidade

P Recursos humanos

P Comunicação

P Risco

P Aquisições

Antes de qualquer outra consideração,

deve-se entender que hoje não existe

Software Livre ou comercial que atenda

perfeitamente a todos os requerimentos

dos organismos de gerenciamento de

projetos. Mas, nesse mercado, os sis-

temas comerciais estão muito à frente

dos livres. Devido à grande variedade de

ferramentas que podem ser aplicadas no

segmento de “gerenciamento de projetos”

– incluindo sistemas de groupware, work-

flow, fórum, suporte etc – limitamos a

discussão às ferramentas que tenham

algum destaque especial. Por exemplo,

possuir uma forma prática de gerenciar

o cronograma, administrar muito bem

custos ou ser expansível.

Deixamos de lado programas para

Windows que poderiam, com bastante

dificuldade, serem usados no Linux atra-

vés de programas como Wine, CrossOver

Office, Qemu ou VMWare. Selecionamos

os aplicativos que atendem as áreas de

conhecimento do PMI e são populares

no mundo e no Brasil. Outro critério foi

a existência de algum diferencial fun-

cional, além de trajetória sólida e planos

concretos de evolução. Deixamos de lado

também a possibilidade de juntar ou

integrar diferentes ferramentas para se

obter um sistema de gerenciamento de

projetos mais completo.

OpçõesPara a avaliação de uma ferramenta,

sugerimos que o avaliador forme uma

matriz com critérios desejáveis e as no-

tas que ele atribui a esses critérios. Para

selecionar os programas que entrariam

neste artigo seguimos esse método. En-

tre muitos potenciais candidatos com

chance de serem avaliados, escolhemos

os seguintes (a ordem mostrada não cor-

responde a nenhuma preferência):

Instalação no desktop

P Gantt Project

P Planner

P Real Time Project

Interface web

P dotProject

P ProjectOPEN

P Gforge

Eles foram escolhidos por apresen-

tarem filosofias de implementação dis-

tintas, abrangendo desde intuitividade

da interface gráfica, uso em múltiplas

plataformas, até a possibilidade de

acesso via web, além das necessidades

regionais do Brasil. Esses programas

têm um histórico de evolução técnica

e periodicidade de novas versões – o

que nos tranqüiliza quanto à sua futu-

ra disponibilidade. O grande perigo no

uso de qualquer software, seja livre ou

www.linuxmagazine.com.br

março 2006 edição 18 47

Gerenciamento de projetos Análise

http://supertuxbr.blogspot.com

comercial, é seu abandono por parte

da empresa ou equipe desenvolvedora

– algo que deve ser evitado ao máximo

pelos desenvolvedores.

Não entraremos em muitos detalhes

sobre as características de cada pro-

grama – consulte os sites oficiais dis-

poníveis na seção Informações. Como

o Software Livre tem uma evolução

rápida, esses detalhes ficariam desa-

tualizados em pouco tempo. Em vez

disso, nos concentramos em alguns pon-

tos de utilidade geral e o potencial de

cada um. Comentamos sobre a origem

e experiência da equipe que desenvolve

cada programa, seu foco estratégico, a

possibilidade de usar os dados de proje-

to nos “concorrentes” (possível quando

as bases de dados seguem um padrão

como o SQL) e sua utilização em dife-

rentes sistemas operacionais.

Gantt ProjectO projeto Gantt [6] está focado na ela-

boração de cronogramas para necessida-

des simples, com acompanhamento de

prazos. Como é desenvolvido em Java,

pode ser utilizado em vários sistemas

operacionais. No caso do Linux, basta

descompactar o arquivo baixado do site

em um diretório apropriado. No caso do

Windows®, a instalação é extremamente

simples, com um

instalador de as-

pecto totalmente

profissional. Ela

pode ser feita sem

problema nenhum

por pessoas que te-

nham experiência

somente na insta-

lação de programas

tipo “desktop”.

Adicionalmente,

em ambiente cor-

porativo ele pode

ser instalado pelo

mecanismo java web start. Mesmo sendo

um sistema desktop, seu TCO (Total Cost

of Ownership) é bem vantajoso. Para au-

mentar ainda os atrativos desse sistema,

atualmente há uma versão de desenvol-

vimento em forma de applet, e ele está

disponível em português do Brasil. O

que destaca esse aplicativo é sua grande

facilidade de uso e a clareza da interfa-

ce. Também vale considerar que ele se

integra com alguns programas que não

são de uso habitual em gerenciamento

de projetos, mas que são proveitosos.

Por exemplo, ele se comunica com o

Freemind [7], um aplicativo livre para

gestão de idéias, e pode ser utilizado

como o módulo de planejamento do

4D-Cad [8], programa de visualização

temporal em CAD.

A versão 2 do Gantt está em estágio

de testes (beta), mas já mostra boa esta-

bilidade. Ela possui algumas melhorias

importantes em relação às versões 1.x.

Por exemplo, consegue importar e expor-

tar no formato do Microsoft Project. Outro

exemplo: sua interface de cronogramas

foi melhorada, mostrando visualmente

o caminho crítico e permitindo tolerân-

cias (“lag”) nos relacionamentos lógicos.

Também aceita feriados nos calendários

dos recursos, permite definir campos

novos nas atividades, trabalha em visão

PERT/CPM e pode ser integrado ao IDE

(Integrated Development Environment)

Eclipse [9]. Essa última novidade pode

ser bem útil em ambientes de desenvol-

vimento de software.

O Gantt é indicado para situações em

que o cronograma é importante, assim

como a facilidade de uso e a necessidade

de usá-lo em diversos sistemas opera-

cionais. Já a possibilidade de lidar, em

outros programas, com os dados gerados

pelo Gantt é bastante limitada, já que

ele os salva em arquivos XML ao invés

de usar um banco de dados SQL.

PlannerEsse aplicativo é uma continuação do

antigo Mr Project, abandonado, mas que

já foi bastante popular entre usuários de

Software Livre. Incluímos o Planner [10]

nessa seleção porque ele tem recursos de

cronograma relativamente avançados e

é uma boa escolha para quem usa Linux

no desktop. O programa faz parte do

Gnome Office e está incluído em muitas

distribuições. É um software nativo para

Linux, mas há planos de oferecer uma

versão para Windows – os mantenedo-

res tencionam competir na arena das

soluções multiplataforma. A empresa

Imendio, da Europa, é quem apóia e

desenvolve o Planner. No entanto, sua

evolução ainda é lenta.

As características e a interface lem-

bram muito o Microsoft Project. O pro-

Figura 1: Feito em Java, o Gantt possui interface clara e fácil de usar.

Figura2: O Planner faz parte do Gnome Office e está na seleção oficial de programas de muitas distribuições.

Análise

48

Gerenciamento de projetos

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

grama tem bons recursos para cálculo

do caminho crítico e sua tela de crono-

grama é interativa. Outro recurso útil

é o uso do banco de dados PostgreSQL.

Assim, informações do projeto podem

ser usadas de outras maneiras.

Devemos lembrar que essa integração

requer conhecimentos relativamente

avançados. Há inclusive a possibilidade

de nivelamento de recursos utilizando um

plugin externo, inicialmente desenvolvi-

do para o Mr Project, mas que funciona

no Planner em alguns casos. Se você usa

o programa profissionalmente e precisa

dessa função, talvez tenha que ajustar o

código fonte: a evolução do Mr Project

para o Planner quebrou a compatibilidade

com alguns plugins úteis.

O Planner é recomendado para quem

usa Linux no computador de trabalho,

tem conhecimentos mais avançados

de informática e precisa calcular o

caminho crítico.

Real Time ProjectA empresa Advanced Management So-

lutions oferece no mercado a suíte de

módulos para gerenciamento de projetos

Real Time [11], entre os quais destaca-se

o Real Time Project, para gerenciamento

de projetos. Seus pontos fortes são crono-

grama, WBS (Work Breakdown Structure

ou estrutura ana-

lítica do projeto),

recursos e custos.

Seu nome origi-

nal era Schedule

Publisher, quando

estava disponível

para os sistemas

operacionais GEM

e Macintosh.

No início dos

anos 90, foi porta-

do para o Windows

e, há alguns anos,

para Linux. Hoje

o Real Time Project está disponível para

Linux/Unix, Windows e Macintosh na

forma de binários específicos para cada

plataforma. Sendo assim, ele não roda

em qualquer distribuição Linux. No Bra-

sil, além das distribuições conhecidas

(como Red Hat e Suse), tivemos sucesso

com distribuições locais como Conectiva

(hoje Mandriva) e Kurumin (derivada

do Knoppix). O site da empresa lista as

distribuições oficialmente compatíveis.

O programa tem recursos poderosos e

completos no apoio ao planejamento e

acompanhamento de um projeto, tanto

no aspecto do cronograma, quanto no

lado organizacional – custos e recur-

sos. Sua função

de gerar relatórios

gráficos é bem

poderosa e ele

também oferece

compatibilidade

entre as versões

para outras plata-

formas.

A interface de

usuário para ma-

nipular o crono-

grama é de longe a

mais simples e po-

derosa. Para gerar

atividades, basta

dar um clique e arrastar o cursor den-

tro da área do cronograma, selecionar

as atividades e conectá-las. Possui um

servidor de projetos próprio, otimizado

para alto desempenho, e pode armazenar

dados tanto em arquivos locais quanto

em bancos de dados SQL. Digna de nota

é a possibilidade de personalização com

scripts em Python. É o competidor direto

do Microsoft Project, sendo a solução

mais completa para estações de trabalho

rodando Linux. O Real Time Project é re-

comendado para usuários individuais ou

empresas que precisem de uma solução

abrangente de gerenciamento de projetos

que funcione localmente, como um pro-

grama instalado na própria máquina.

dotProjectEsse sistema [12] é totalmente baseado

na web e, por isso, também pode ser

utilizado em sistemas operacionais di-

ferentes. Foi desenvolvido em PHP, que

normalmente roda em servidores Linux,

na clássica combinação LAMP (Linux,

Apache, MySQL, PHP) mas também pode

ser instalado em Windows com servidor

web Apache ou MS IIS.

A grande vantagem de um sistema em

web é a centralização dos dados do proje-

to. A desvantagem é a necessidade de se

Figura 3: O Real Time Project roda em Linux, Unix, Windows e Macintosh.

Figura 4: O dotProject roda em LAMP (Linux, Apache, MySQL e PHP) e é indicado para classificação de projetos e gerenciamento de documentos.

www.linuxmagazine.com.br

março 2006 edição 18 49

Gerenciamento de projetos Análise

http://supertuxbr.blogspot.com

trabalhar sempre conectado ao servidor

pela intranet ou Internet. Mas ele pode

ser instalado localmente no equipamento

do usuário, mesmo sendo uma solução

baseada em web. Seu desenvolvimento

está sendo liderado por pessoas expe-

rientes na área de gerenciamento de

projetos via software. A documentação

disponível é bastante completa, incluin-

do um site do tipo wiki.

O dotProject não está focado no cro-

nograma. Ele o exibe apenas de forma

estática, ou seja, não permite a mani-

pulação direta do cronograma, como o

GanttProject, Planner ou Real Time. Mas

possui facilidades extras nas tarefas de

classificar projetos e gerenciar a docu-

mentação associada. Permite inclusive

a emissão de alertas sobre alterações

nos documentos.

A instalação é relativamente simples

e direta, mas apenas para usuários fa-

miliarizados com a configuração de

servidores. Sua utilização não requer

uma compilação especial do PHP, o que

é uma vantagem para quem roda uma

distribuição padrão.

O diferencial do dotProject é sua ope-

ração via web e o uso de um banco de

dados SQL, o que proporciona bastante

flexibilidade no uso dos dados para fins

não previstos ou ainda não implemen-

tados pela equipe de desenvolvimento

– como o uso de “gatilhos” (triggers), en-

vio de alertas e visões diferentes para

relatórios. Hoje, o programa usa o My-

SQL, mas há intenção de possibilitar o

uso de outros bancos de dados, como

por exemplo PostgreSQL.

Seu uso é recomendado para departa-

mentos ou empresas em situações onde o

foco é a agenda de tarefas dos membros

da equipe, gerenciamento da documenta-

ção associada aos projetos e apropriação

de horas trabalhadas; com menos ênfase

na manipulação do cronograma.

ProjectOpenO ProjectOpen [13] tem como objetivos

principais a administração dos custos

de um projeto e a colaboração entre

membros da equipe, possuindo inclusive

uma área colaborativa do tipo wiki e até

chat. Wikis são páginas web editáveis

de forma simples pelo usuário – usando

o navegador – e ideal para trabalho co-

laborativo. Ele é apresentado como um

sistema ERP (Enterprise Resource Plan-

ning) para projetos com funcionalidade

bastante variada, incluindo apropria-

ção de horas e gestão de conhecimento,

implementado nesse caso na forma de

um mecanismo de

busca.

O aplicativo tem

um conceito de

EPM (Enterprise

Project Manage-

ment) declarado.

Sua estrutura fa-

cilita a configura-

ção para atender

diferentes solu-

ções verticais. Por

exemplo, consul-

toria, publicidade

etc. Além dos mó-

dulos básicos, há

módulos adicionais que precisam ser

adquiridos. Incluímos esse sistema na

seleção porque os módulos básicos já

são o suficiente para utilizá-lo de forma

completa. O sistema é apoiado por uma

empresa na Espanha (com sociedade

alemã), formada por pessoas experien-

tes no segmento e dedicada a soluções

corporativas. O fundamento teórico do

sistema é bastante sólido.

Ele possui configurações próprias para

diferentes cenários de uso. Por exemplo,

em agências de publicidade, empresas de

consultoria, de desenvolvimento de soft-

ware, engenharia etc. Além disso, possui

um módulo específico de workflow.

A instalação é complexa, pois requer

programas que não são de uso comum.

Deve ser feita por alguém experiente

em servidores Linux. Existe também a

possibilidade de instalá-lo em Windows,

nas versões 2000, XP e 2003. O pacote

de instalação em Windows, bastante

simples de usar, inclui o sistema de

eLearning .LRN [14].

De todos os programas apresentados, o

ProjectOpen tem de longe a melhor segu-

rança e integração, dividindo muito bem

o acesso de pessoas com funções distin-

tas. Por exemplo, executivos, gerentes de

projeto, contadores etc. Trabalha com os

bancos de dados PostgreSQL e Oracle.

Mas para o mercado brasileiro, há dois

inconvenientes significativos:

P 1. Ele é baseado em uma tecnologia

incomum e pouco conhecida, apesar

de robusta e flexível. Por outro lado,

isso também é um destaque e um

ponto forte, pois sua integração com

outros programas é bem simples e ele

usufrui dos benefícios dessa tecno-

logia de base. O ambiente funcional

é o CMS (Content Management Sys-

tem) OpenACS [15] que opera com o

servidor web da AOL. Além de usar

um ambiente diferenciado, a custo-

mização do sistema deve ser feita na

Figura 5: O ProjectOpen também roda na web, possuindo recursos de wiki e até chat entre os membros.

Análise

50

Gerenciamento de projetos

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

linguagem TCL. Essas características

não são desvantagens do sistema, mas

um ponto de alerta para sua possível

implantação.

P 2. O sistema não está disponível

em português. Mas como se trata de

Software Livre, pode ser adaptado às

necessidades da empresa.

O ProjectOpen é um sistema apropria-

do para empresas que estão dispostas a

investir em tecnologias alternativas e

procuram um sistema sólido, focado nos

custos e colaboração de equipes.

GForgeQuem procura um sistema para gerenciar

projetos de software estará bem servido

com o GForge [16]. O aplicativo atende

às necessidades de todo o ciclo de vida

de um software.

Nesse contexto, ele atua também como

um sistema de registro de bugs e de re-

positório de distribuição (código fonte,

executáveis etc). Em termos de cronogra-

ma, ele permite a visualização da mesma

forma que o dotProject e ProjectOpen,

mas tem a possibilidade de utilizar um

plugin comercial para interagir com o

Microsoft Project.

É um aplicativo na linha divisória

entre gerenciamento de projetos e ges-

tão de código fonte, suporte ao usuário

etc. Trata-se de um sistema web com

Linux, Apache, PHP e o banco de dados

PostgreSQL. Mas requer componentes

opcionais. Por exemplo, servidor de chat

Jabber, Perl, mailman, entre outros. A

origem desse produto é o programa usa-

do no site Sourceforge.net. Há hoje uma

versão comercial, disponível pelo Gforge

Group, chamada Enterprise CDE.

A instalação é própria para quem tem

experiência em servidores. Mas algumas

distribuições, entretanto, procuram tor-

nar o processo todo bastante simples.

No Debian, por exemplo, basta digitar o

comando apt-get install gforge. Já

a configuração não é nada

trivial. O GForge é indica-

do para empresas em que

o ponto central do projeto

é a gestão de documentos

(já que ele gerencia código

fonte), tarefas a desenvolver

e interação da área de aten-

dimento ao usuário (help

desk), além de gerencia-

mento de bugs. Uma opção

interessante é seu uso como

interface entre o cliente (ou

usuário final) e a organização que desen-

volve determinado programa.

ConclusãoNão há um “ganhador” entre as opções

apresentadas, já que esse não é o obje-

tivo deste artigo. Preferimos apresentar

as opções mais interessantes e deixar o

leitor se aprofundar nos detalhes, po-

dendo fazer sua escolha de acordo com

as necessidades. Qualquer um desses

sistemas pode ser de grande utilidade

para gerenciar projetos com pouca com-

plexidade, especialmente as opções que

podem ser instaladas no próprio com-

putador do interessado – isto é, que não

dependem de um servidor.

Alguns, como o Gantt Project, se

destacam pela facilidade de uso e pelo

conjunto de boas características. Outros,

têm destaques relacionados ao uso cor-

porativo, devido à abrangência da solu-

ção e à centralização dos dados, como o

ProjectOpen. O GForge destaca-se pelo

foco nos projetos de software e a pos-

sível interface com o cliente. No Linux,

definitivamente há soluções que atendem

quaisquer necessidades com um alto

grau de adequação. Nesse caso, não se

aplica a desculpa de que não é possível

gerenciar um projeto por falta de ferra-

mentas. Vale a pena lembrar também que

a escolha do aplicativo certo é somente

uma parte menor do problema. ■

Figura 6: O GForge gerencia projetos de desenvolvimento de software, incluindo registro de bugs e distribuição de arquivos.

Sobr

e o

auto

r

Miguel Koren O'Brien de Lacy usa Software Livre desde 1997. É diretor da Konsultex Informática, repre-sentante da Artemis International Solu-tions Corporation (www.aisc.com) e da Advanced Management Solutions (www.amsusa.com) na América Latina, além de dar palestras sobre Software Livre. [email protected].

Informações[1] Freshmeat: freshmeat.net

[2] Apache Maven: maven.apache.org/what-is-maven.html

[3] Anjuta: anjuta.org

[4] Project Management Institute: www.pmi.org

[5] International Project Management Association: www.ipma.ch

[6] Gantt Project: ganttproject.sourceforge.net

[7] Freemind: freemind.sourceforge.net

[8] 4D-Cad: typo3.medien.uni-weimar.de/ index.php?id=124

[9] Eclipse: www.eclipse.org

[10] Planner: developer.imendio.com

[11] Real Time Project: www.amsusa.com

[12] dotProject: www.dotproject.net

[13] ProjectOpen: www.project-open.com

[14] .LRN: dotlrn.org

[15] OpenACS: openacs.org

[16] GForge: gforge.org

www.linuxmagazine.com.br

março 2006 edição 18 51

Gerenciamento de projetos Análise

http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

Saiba como incorporar mapas interativos em suas páginas webPor Alberto Planas

Como usar a API do Google Maps

Distância segura

O Google Maps foi um dos serviços

mais inovadores da Internet em

2005. Essa foi uma boa notícia

também para desenvolvedores, já que

sua API (Application Programming Inter-

face) é aberta. Baseada em JavaScript (ou

ECMAScript [1]), ela permite a criação de

aplicativos que usam os mapas e ima-

gens de satélite do Google. As páginas

abrem tranqüilamente nos navegadores,

sem a necessidade de nenhuma infra-

estrutura extra no servidor web. Neste

artigo, vamos criar uma aplicativo de

exemplo que calcula a distância de um

trajeto marcado em um mapa.

ChaveA API do Google Maps está disponível

gratuitamente, desde que se respeite

algumas regras [2]. Por exemplo, o

aplicativo precisa ser gratuito para o

público e não pode exceder um certo

número de consultas por dia aos ser-

vidores do Google. Também não pode

esconder a marca Google.

Para usar a API, é preciso antes obter

uma chave [3]. Para isso, é preciso uma

conta no Google (um Gmail já basta

ou, então, é possível criar uma conta).

Cada chave é associada a uma URL. Se

você não tem espaço para hospedar

seu aplicativo, mas tem um servidor

Apache local, é possível registrar o en-

dereço http://localhost.

Tome cuidado, contudo, na hora de in-

dicar uma URL: caso ela contenha erros

ou for mal digitada, não será possível

acessar a API. É importante fornecer o

endereço completo, incluindo portas e

diretórios. Por exemplo, em nossos testes

– com Apache na porta 8080 – criamos

um diretório chamado “maps”. É aqui

que nosso site de exemplo será hospeda-

do. O endereço que fornecemos foi:

http://localhost:8080/maps/

Tutorial

54

API do Google Maps

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

É possível criar quantas chaves forem

necessárias. Uma vez que os termos de

uso tenham sido aceitos, você recebe

uma longa cadeia de caracteres alfa-

numéricos. Essa chave libera a API do

Maps em seu aplicativo.

A documentação oficial dessa API

[4] recomenda o uso de XHTML no

lugar de HTML convencional. A ra-

zão para isso é a maior portabilidade

dos documentos XHTML. Na listagem

1 temos um exemplo de documento

que acessa a API do Google Maps. O

formato XHTML é declarado através

do DOCTYPE, na linha 1. As linhas 2, 5 e 9

permitem que o navegador Internet Ex-

plorer exiba corretamente os efeitos da

biblioteca JavaScript do Google Maps

(particularmente, os efeitos de trajetos,

como será explicado depois).

Para incluir o arquivo de Java-

Script contendo a chave da API, use

um comando como o da linha 10 na

listagem 1. Temos que alterar o trecho

…&key=XXXXX, incluindo a chave forne-

cida pelo Google. Curiosamente, todo

o XHTML desse primeiro exemplo está

entre as linhas 27 e 29. Nesse ponto, após

carregar o documento HTML, o nave-

gador precisa executar a função Java-

Script onLoad, definida na linha 14. Na

linha 28, temos um div de 500 x 500

pixels, com um identificador map, que

iremos descrever mais tarde.

A função onLoad inicia o mapa. Como

já mencionamos, toda a API é escrita

em JavaScript. Esse código vai rodar no

navegador do visitante. Como nem todos

os navegadores implementam a mesma

versão e funcionalidade do JavaScript,

Listagem 1: teste1.html 1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/U TR/xhtml1/DTD/xhtml1-strict.dtd”> 2. <html xmlns=”http://www.w3.org/1999/xhtml” xmlns:v=”urn:schemas-microsoft-U com:vml”> 3. <head> 4. <title>Exemplo 1 - teste1.html</title> 5. <style type=”text/css”> 6. v\:* { 7. behavior:url(#default#VML); 8. } 9. </style>10. <script src=”http://maps.google.com/maps?file=api&v=1&key=XXXXX”U type=”text/javascript”></script>11. <script type=”text/javascript”>12. //<![CDATA[13. 14. function onLoad() {15. if (GBrowserIsCompatible()) {16. var map = new GMap(document.getElementById(“map”));17. map.addControl(new GSmallMapControl());18. map.addControl(new GMapTypeControl());19. map.addControl(new GScaleControl());20. map.centerAndZoom(new GPoint(-122.1419, 37.4419), 4);21. }22. }23. 24. //]]>25. </script>26. 27. <body onload=”onLoad()”>28. <div id=”map” style=”width: 500px; height: 500px”></div>29. </body>30. </html>

www.linuxmagazine.com.br

março 2006 edição 18 55

API do Google Maps Tutorial

http://supertuxbr.blogspot.com

pode haver incompatibilidades. Para

garantir que o aplicativo rode em todos

os navegadores oficialmente compatíveis,

vamos usar a função GBrowserIsCom-

patible (linha 15). Se o usuário esti-

ver usando o Firefox, Safari, Opera ou

Internet Explorer 5.5 (ou superior) não

teremos nenhum tipo de problema. Na

próxima linha, vamos criar um objeto

do tipo GMap.

Vamos passar ao “construtor” o obje-

to div identificado por map. Esse objeto

HTML será usado pelo GMap para inserir

um mapa com o tamanho associado de sua

tag. O GMap oferece uma interface cuja

documentação pode ser consultada em [3]

(há diversos tipos de “construtores” para

esse objeto). Já na linha 17 começamos a

usar o método addControl(). Usaremos

esse método para adicionar diversos con-

troles ao mapa, que nos permitirão modifi-

car seu comportamento. Poderemos

rolar o mapa, simplesmente pressio-

nando o botão esquerdo do mouse e

arrastando o cursor. Podemos usar

também um componente que per-

mite mudar o nível de zoom.

Esse componente é aquele que

adicionamos na linha 17 da listagem

1. Ele corresponde ao controle no

canto superior direito da figura 1.

Podemos “brincar” um pouco com

o código, mudando-o para:

map.addControl(new U

GLargeMapControl());

Desse modo, podemos incluir

controles de zoom e posição separa-

dos. Há outros dois tipos de controle

que podemos adicionar: um seletor

de tipo de mapa e um controle de

escala, tanto em milhas quanto qui-

lômetros. Desses dois, o primeiro é

o mais importante. Ele foi incluído

na linha 18 da listagem 1. Há três

tipos de mapas: normal, satélite e

híbrido (uma mistura dos dois pri-

meiros). Esses tipos de mapas estão

exemplificados entre as figuras 2 e

4. No entanto, mapas com nomes

de ruas e endereços, atualmente, só

estão disponíveis para os Estados

Unidos, Inglaterra e Japão.

Na linha 20 centramos a imagem,

especificando latitude, longitude e

nível de zoom. Para esse exemplo,

escolhemos as coordenadas de Palo

Alto, na Califórnia. É preciso um

pouco de cuidado na hora de indicar

as coordenados do ponto onde va-

mos centrar o mapa. Primeiro, temos

que indicar a longitude e depois a

latitude (no geral, coordenadas cos-

tumam ser passadas na ordem in-

versa). Após essa introdução, vamos

adicionar a parte do programa que

calcula as distâncias (listagem 2).

Figura 1: O grande controle da esquerda corresponde a um GLargeMapControl. O de tamanho médio na direita é um GSmallMapControl. O menor é um GSmallZoomControl.

Figura 2: O mapa com as ruas de uma região de Palo Alto, no estado da Califórnia.

Figura 3: A foto de satélite dessa mesma área, mostrando as casas e terrenos vazios.

Figura 4: O modo híbrido mistura os dois tipos. É possível ver os nomes das ruas na própria foto.

Tutorial

56

API do Google Maps

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

EsferaQualquer ponto da Terra pode ser

localizado usando-se dois números:

latitude e longitude. Mas, se souber-

mos as coordenadas de dois pontos na

superfície de uma esfera, ainda não

poderemos calcular a distância entre

esses dois locais.

Precisamos de mais uma informação:

o raio da esfera. Se considerarmos que

a Terra tem, na média (o planeta não é

uma esfera perfeita), um raio de 6378

km, podemos usar geometria esférica

para calcular distâncias baseadas em

latitudes e longitudes [5]. Primeiro

precisamos converter latitudes e lon-

gitudes de graus para radianos. Então,

aplicamos a fórmula:

d = 6378.7 * acos(seno(lat1)

* seno(lat2) + coseno(lat1) *

coseno(lat2) * coseno(lon2 - lon1))

Essa equação não requer muita discus-

são, já que seu uso pode ser examinado na

função calcDistancia, da listagem 2.

A listagem 2 é ligeiramente diferente

do primeiro exemplo. A primeira dife-

rença é que, na chamada ao construtor

GMap, estamos fornecendo um parâme-

tro extra (linha 21). Esse parâmetro é

uma matriz de elemento único. Nós a

usamos para indicar que só queremos

o modo de exibição do tipo satélite. A

API permite a associação de funções

em uma lista pré-definida de eventos.

Dessa maneira, podemos alterar o com-

portamento do sistema em resposta a

um clique, uma rolagem ou à adição de

uma marca, por exemplo. Há uma lista

completa de eventos na documentação

oficial. Nosso exemplo requer a captura

de dois eventos. Um deles é a rolagem.

Após esse evento, o aplicativo precisa

redesenhar o mapa na nova localidade.

O outro evento é um clique no mapa,

para que possamos definir o trajeto em

que o cálculo de distância será feito. A

API do Google permite diversas manei-

ras de capturar eventos. Vamos fazer

isso da seguinte maneira:

GEvent.addListenerU

(map, 'click', functionU

(overlay, point) {

map.recenterOrPanToLatLngU

(point);

});

Quando usamos o método addListe-

ner() na classe GEvent, devemos indi-

car o evento que queremos capturar e a

função que irá manipulá-lo. Nesse caso,

estamos capturando o clique do mouse

no mapa (evento click).

A função específica para esse evento

pode receber dois parâmetros: o overlay

www.linuxmagazine.com.br

março 2006 edição 18 57

API do Google Maps Tutorial

http://supertuxbr.blogspot.com

Listagem 2: distancia.html 1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//U EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> 2. <html xmlns=”http://www.w3.org/1999/xhtml” xmlns:U v=”urn:schemas-microsoft-com:vml”> 3. <head> 4. <title>Calculando dist‚ncias</title> 5. <style type=”text/css”> 6. v\:* { 7. behavior:url(#default#VML); 8. } 9. </style> 10. <script src=”http://maps.google.com/maps?file=api&vU =1&key=XXXXX” type=”text/javascript”></script> 11. <script type=”text/javascript”> 12. //<![CDATA[ 13. 14. // Pontos do trajeto (GMaker) 15. var points = new Array; 16. // Ultima linha desenhada 17. var polyLine; 18. 19. function onLoad() { 20. if (GBrowserIsCompatible()) { 21. var map = new GMap(document.U getElementById(“map”), [G_SATELLITE_TYPE]); 22. map.addControl(new GSmallMapControl()); 23. map.addControl(new GScaleControl()); 24. 25. GEvent.addListener(map, ‘moveend’, function() { 26. var center = map.getCenterLatLng(); 27. var latLngStr = ‘(‘ + center.y + ‘, ‘ + U center.x + ‘)’; 28. document.getElementById(“latlong”).innerHTML U = latLngStr; 29. }); 30. 31. GEvent.addListener(map, ‘click’, U function(overlay, point) { 32. if (overlay) { 33. removeOverlay(map, points, overlay); 34. } else if (point) { 35. addOverlay(map, points, new U GMarker(point)); 36. } 37. 38. polyLine = drawLine(map, points, polyLine); 39. 40. var distance = calcDistancia(points); 41. document.getElementById(“distance”).innerHTML U = distance + “ Km”; 42. }); 43. 44. map.centerAndZoom(new GPoint(-4.48333, U 36.66667), 4); 45. } 46. 47. function drawLine(map, points, lastLine) { 48. var p = new Array(); 49. for (var i = 0; i < points.length; i++) {

50. p.push(new GPoint(points[i].point.x, U points[i].point.y)); 51. } 52. var newLine = new GPolyline(p); 53. 54. if (lastLine) { 55. map.removeOverlay(lastLine); 56. } 57. map.addOverlay(newLine); 58. 59. return newLine; 60. } 61. 62. function addOverlay(map, points, overlay) { 63. map.addOverlay(overlay); 64. points.push(overlay); 65. } 66. 67. function removeOverlay(map, points, overlay) { 68. map.removeOverlay(overlay); 69. var oi = -1; 70. for (var i = 0; i < points.length; i++) { 71. if (points[i] == overlay) { 72. oi = i; 73. break; 74. } 75. } 76. points.splice(oi, 1); 77. } 78. 79. function calcDistancia(points) { 80. var distance = 0.0; 81. var p1 = points[0]; 82. for (var i = 1; i < points.length; i++) { 83. var p2 = points[i]; 84. var lat1 = p1.point.y * Math.PI / 180.0; 85. var lon1 = p1.point.x * Math.PI / 180.0; 86. var lat2 = p2.point.y * Math.PI / 180.0; 87. var lon2 = p2.point.x * Math.PI / 180.0; 88. distance += 6378.7 * Math.acos(Math.sin(lat1) U * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * U Math.cos(lon2 - lon1)); 89. p1 = p2; 90. } 91. 92. return distance; 93. } 94. } 95. 96. //]]> 97. </script> 98. 99. <body onload=”onLoad()”>100. <div id=”map” style=”width: 500px; height: U 500px”></div>101. <div id=”latlong”></div>102. <div id=”distance”></div>103. </body>104. </html>

Tutorial

58

API do Google Maps

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

(ou marca onde clicamos) e o ponto con-

tendo as coordenadas do clique.

Na linha 25, capturamos o evento mo-

vend, que será produzido cada vez que

terminarmos uma rolagem do mapa. Um

importante evento é capturado na linha

35 da listagem 2, quando acrescentamos

nosso próprio gerenciador de cliques. As-

sim permitimos que o visitante coloque

diversas marcas, que serão armazenadas

em uma matriz. Se clicarmos de novo

nessas marcas, podemos removê-las

tanto do mapa quanto da matriz. Nesse

caso simples, vamos definir um trajeto

que podemos traçar com uma linha azul.

Nosso cálculo de distância será baseado

nesse trajeto.

Tanto marcas quanto linhas são cha-

madas de overlays na documentação

oficial do Google Maps. Cada overlay é

um objeto sobreposto ao mapa. Embora

possamos definir ícones personaliza-

dos nas marcas (vide a documentação),

podemos também usar diretamente o

conjunto padrão fornecido. Uma marca

pode ser criada e posicionada no mapa

da seguinte maneira:

var m = new Gmarker (new GPoint(lon1, U

lat1));

map.addOverlay(m);

Devemos criar uma marca em co-

ordenadas específicas. Depois, vamos

acrescentá-la ao mapa usando o método

addOverlay() da classe GMap. Esse é o

mesmo método que usaremos para dese-

nhar o trajeto, mas em vez de acrescentar

um objeto do tipo GMarker, usaremos

um GPolyline.

var p = new Array;

p.push(new GPoint(lon1, lat1));

p.push(new GPoint(lon2, lat2));

...

map.addOverlay(new GPolyline(p));

Isso é apenas o que as funções addO-

verlay() e drawLine() fazem em nosso

código. Um exemplo de um trajeto dese-

nhado é o caminho mostrado na figura 5.

Uma vez que o caminho (ou parte dele) é

terminado, podemos calcular a distância

usando a fórmula já citada.

ConclusãoUsando não mais que quatro objetos e

oito métodos diferentes, criamos um

aplicativo capaz de calcular o com-

primento de um caminho desenhado

interativamente em um mapa aberto

em um navegador. A API do Google

Maps torna fácil a criação de aplica-

tivos inovadores e interessantes que,

de outra maneira, exigiriam profun-

das noções de programação, além de

conhecimento elevado de matemática

e navegação global.

A API fornece outro grupo de objetos

para “acesso assíncrono a dados XML

por JavaScript”, tecnologia mais co-

nhecida como Ajax [6]. Esse conjunto

de objetos permite o armazenamento

de uma grande quantidade de dados

em um banco de dados, para que eles

possam ser “pintados” instantânea-

mente na medida em que o usuário

vai navegando pelo mapa. Muitos

usuários dessa API estão desenvol-

vendo aplicativos interessantes – veja

os curiosos exemplos [8], [9] e [10].

Também há objetos para a geração de

sinais, que são mostrados após cliques

(ou outros eventos pré-definidos) em

locais determinados. Esse sinais são

úteis para a associação de comentários

em mapas, como notas sobre algum

monumento ou explicações sobre cru-

zamentos confusos.

Vale lembrar que a API do Google

Maps ainda está em estágio beta de

desenvolvimento – ou seja, seu fun-

cionamento está sujeito a mudanças

repentinas. É possível monitorar a

evolução dessas mudanças, os novos

recursos e a troca de experiências entre

seus usuários no grupo de discussão

do Google Maps [7]. Caso desenvolva

algum aplicativo baseado nessa API,

não se esqueça de anunciá-lo ao grupo

para que todos possamos tê-lo como

possível fonte de inspiração. ■

Informações[1] ECMA-262: www.ecma-international.org/

publications/standards/Ecma-262.htm

[2] Termos de uso: www.google.com/apis/maps/terms.html

[3] API do Google Maps: www.google.com/apis/maps/

[4] Documentação da API: www.google.com/ apis/maps/documentation/

[5] Latitudes e longitudes: www.meridianworlddata.com/Distance-Calculation.asp

[6] Ajax: en.wikipedia.org/wiki/AJAX

[7] Grupo de discussão do Google Maps: groups-beta.google.com/group/Google-Maps-API

[8] Monumentos em Paris: www.kahunablog.de/ gmaps.php?map=paris

[9] WikiMap: www.wikyblog.com/Map/Guest/Home

[10] Tráfego na Inglaterra: www.gtraffic.info

Figura 5: Um caminho de 0,77 km desenhado no mapa. Podemos adicionar e remover as marcas de balões vermelhos da maneira que quisermos para desenhar outros caminhos.

www.linuxmagazine.com.br

março 2006 edição 18 59

API do Google Maps Tutorial

http://supertuxbr.blogspot.com

Embora a obra-prima de Walt Disney permaneça inesquecível, a animação tradicional é coisa do passado. Neste primeiro artigo sobre o Blender, vamos aprender a construir um modelo em três dimensões.Por Peter Kreusel

Modelagem 3D com Blender

Curvas suaves

E ste artigo esclarece os fundamen-

tos da modelagem 3D tomando

como exemplo a construção de

um boneco simples. Os modelos es-

paciais são criados, a princípio, a par-

tir de uma “estrutura de arame” ou

“malha”(wireframe). Depois, a adição

de uma superfície e de texturas trans-

forma esses modelos primitivos em uma

cena artificial em três dimensões. Esse

processo é chamado renderização.

O Blender [1] é um aplicativo de códi-

go aberto capaz de lidar com todos os

passos da criação de um modelo digital:

desde a sua construção, passando pela

composição da superfície, até a rende-

rização da cena tridimensional.

Movimento em 3DAlém disso, o Blender oferece podero-

sos recursos de animação. Eles serão

apresentados na seqüência deste artigo,

na próxima edição. Nela, o personagem

apresentado neste tutorial vai aprender

a dar os seus primeiros passos.

Na verdade, o Blender não necessita

de nenhuma instalação: descompacte o

arquivo com os binários do aplicativo

disponível para download no site oficial

do Blender [1] e mova o diretório criado

para o local apropriado do sistema de

arquivos. Copie também o subdiretório

.blender para o seu diretório pessoal.

Com isso, o seu computador tem tudo o

que é necessário para a modelagem 3D.

Quadro 1: Leia-me!Este artigo é apenas uma introdução à cons-trução de objetos tridimensionais no Blender, um poderoso aplicativo gráfico 3D de código aberto. A seqüência, na próxima edição, irá apresentar as funções de animação do Blender.

Figura 1: O Inkscape fornece a matéria-prima para a construção de objetos 3D: siga os contornos e depois dê o acabamento com [Ctrl]+[L].

Tutorial

60

Blender

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Para facilitar a nossa vida, este tutorial

utiliza, além do Blender, o programa de

criação de ilustrações vetoriais Inkscape

[2]. Apesar de ser possível desenhar as

curvas que servem como base da cons-

trução do seu modelo tridimensional

diretamente no Blender, usar o Inkscape

para essa finalidade é realmente muito

mais fácil. Caso necessário, um pacote

RPM estático do Inkscape pode ser en-

contrado em [3].

Inicie o Inkscape e escolha a ferramen-

ta de desenho à mão livre pressionando

a tecla [F6]. Com a “rodinha” do mouse

pode-se mudar o fator de zoom e com a

tecla do meio move-se a área de exibição

mostrada na tela. A figura 1 mostra o

esboço de um personagem de “gibi”; é

ele que queremos transformar em uma

figura tridimensional.

Desenhe com o mouse o contorno da

metade esquerda do boné, de acordo

com o modelo da ilustração. Mantenha

o botão [Shift] pressionado para poder

interromper a qualquer momento o de-

senho e reiniciar de onde parou. Pros-

siga da mesma forma com a cabeça e o

tronco da figura. Observe, no plano de

fundo, que o desenho não reproduz a

forma original do personagem, já que

o seu braço esconde uma parte do cor-

po. A linha magenta na figura 1 mostra

como deve ser o contorno do corpo sob

o braço. Se você selecionar uma das li-

nhas desenhadas e pressionar [Ctrl]+[L]

algumas vezes, o Inkscape vai alisá-la.

Para encerrar, selecione toda a figura

com [Ctrl]+[A], mova-a para a margem

superior esquerda da área de desenho

e salve o arquivo.

“Tridimensionalizando”Chegou a hora de iniciar o Blender. O

programa roda sempre em tela cheia,

sem a costumeira estrutura de janelas.

Ele começa com um cenário padrão, que

contém um cubo no meio. Se pressio-

narmos a tecla [X] o Blender pergunta:

“Erase selected?” (apagar a área selecio-

nada?). Confirme com [Enter] para apa-

gá-lo. Clique em File | Import | Paths no

menu principal, na parte superior da

tela. No menu que aparece, clique em

Inkscape (.svg). Na janela de seleção de

arquivos, abra o arquivo SVG que con-

tém as linhas que acabamos de desenhar

em nosso esboço. O menu

Select Size aparece na tela.

Selecione Scale on Width e,

com o mouse, mude o fator

de zoom até que o preen-

chimento da linha esteja

visível. Com [Ctrl]+[4],

[6], [8] e [2] no teclado

numérico você pode, se

necessário, movimentar

a área de desenho.

Ao iniciar o Blender você

tem uma vista de cima da

cena. A figura importada

está, portanto, em um pla-

no sobre a superfície. Para

girá-la, coloque o cursor

na extremidade inferior

da curva. Pressionar a te-

cla [1] no teclado numérico comuta o

modo de visualização para o aspecto

frontal. Agora, do perfil da figura você

ainda só consegue ver uma linha reta.

Tome cuidado para que, também dessa

perspectiva, o cursor fique na margem

direita da linha. Se você quiser colocar

o cursor ou um objeto do espaço 3D em

uma posição específica, é preciso veri-

ficar o posicionamento sempre de dois

pontos de vista diferentes (figura 2). Leve

o cursor do mouse alguns centímetros

abaixo do cursor do Blender. Com as

teclas [R] (para rotacionar) e [X] (para

girar em torno do eixo X), rotacione a

curva até que o boneco fique em pé. Para

isso, gire a linha que sai do cursor em

exatamente 90° para a esquerda e dê um

clique com o mouse. Agora pressione

[Alt]+[C] e depois [Enter]. O Blender

converte o arquivo para um objeto do

tipo mesh. Objetos do tipo curva – como

os que resultam da importação da ilus-

tração vetorial criada com o Inkscape

– devem ser sempre convertidos, antes

que o Blender possa transformá-los em

objetos em três dimensões.

Para que o perfil possa ser transfor-

mado em um objeto tridimensional, ele

precisa ser girado em torno de um eixo

por ambas as extremidades. O cursor

que especifica a posição dos eixos de

rotação, usado na fase anterior do nosso

trabalho de edição da figura, encontra-se

ainda na posição correta. O Blender gira

as curvas sempre paralelamente à área

de desenho. Altere, portanto, com [7]

no teclado numérico, novamente para o

modo de visão “de cima”. Pressionar a

tecla [Tab] leva você ao chamado “modo

de edição”, através do qual modifica-

ções no objeto ativo podem ser efetuadas

– usando para isso as opções no terço

inferior da janela. A tecla [A] seleciona

todos os pontos da linha, que passam

a ser apresentados em amarelo. Clique

agora no campo Degr: (figura 3) e arras-

Figura 2: Na vista frontal, o cursor parece estar diretamente sobre a linha e, na face lateral, ele fica à direita da curva. A perspectiva aérea mostra que ele está bem à frente do final da linha, no entanto a uma distância apropriada no eixo das ordenadas (Y).

www.linuxmagazine.com.br

março 2006 edição 18 61

Blender Tutorial

http://supertuxbr.blogspot.com

te o mouse para a direita, com o botão

esquerdo pressionado, até que o valor

desse campo alcance 360.

Faça o mesmo com o campo Steps:

até que o seu valor chegue em 36. Um

clique em Spin faz aparecer o boné, a

cabeça e o tronco da figura a partir do

perfil do esboço (figura 3). Saia do modo

de edição com a tecla [Tab]. O Blender

mostra a seguir o objeto produzido a

partir do esquema “máquina giratória”

com uma superfície sombreada. Na

face frontal (pressione [1] no teclado

numérico) você verá o boné, a cabeça

e o tronco do nosso personagem.

Mãos e PésOs braços são construídos tomando-se

um círculo como base. Para desenhá-los,

com o desenho na vista frontal (pressio-

ne [1] no teclado numérico), coloque o

cursor à direita, ao lado do corpo. Se-

lecione Add | Mesh | Circle no menu na

parte superior da tela. O

Blender constrói uma su-

perfície circular plana e

entra no modo de edição.

Tecle [A] para apagar a se-

leção. Posicione o cursor 3D

no meio do círculo, mexa

o cursor do mouse alguns

centímetros para a direita e

selecione novamente todos

os pontos do círculo teclan-

do [A]. Pressione a tecla [S].

Diminua o círculo, arras-

tando o mouse até que ele

corresponda ao diâmetro

do braço da figura (figura 5).

Um clique no mouse fixa a

mudança de tamanho. Pres-

sione [R] e [X] para girar

o círculo paralelamente à

superfície, a fim de que ele apareça como

uma linha simples.

Para realizar uma extrusão, tecle [E],

escolha em seguida Only Edges no menu

popup que aparecer e mova para baixo

a cópia do círculo resultante, que dará

origem a um “tubo” representando o

comprimento da parte reta do braço. O

[A] realça todos os pontos marcados do

objeto. Pressione a tecla [B] e o botão

esquerdo do mouse simultâneamente

para criar uma área de seleção retan-

gular. Selecione desse modo o círculo

na parte superior do braço e realize a

extrusão pressionando [E] e clicando em

Only Edges no menu popup que aparece

em seguida, movendo um pouco para

cima e para a esquerda. Com um clique

no mouse você fixa a posição da linha do

círculo. Para construir o cotovelo, gire o

corte transversal superior da figura. Ar-

raste o mouse alguns centímetros acima

do arco do círculo e pressione a tecla

[R] seguida de [Y]. Gire o cursor com o

mouse em 45° (figura 5, centro). Realize

uma nova extrusão do círculo e gire-o

novamente conforme explicado, até re-

sultar em um novo segmento do braço

(figura 5, à direita). O braço esquerdo

está pronto. Saia do modo de edição com

[Tab]. Pressione a tecla [G] para mover

o braço até a posição correta.

No modo objeto é possível selecionar,

redimensionar, mover e girar objetos

com um clique no botão direito do

mouse. Crie uma cópia do braço pres-

sionando [Shift]+[D]. Pressione [G] e

em seguida [X] para mover essa cópia

no eixo X para a esquerda, por sobre o

corpo. Para espelhá-la, posicione o cur-

sor no meio do corte transversal superior.

Pressione [Ctrl]+[M] e selecione X Local

para espelhar o braço. Use [G] e [X] para

colocá-lo em posição.

As pernas, assim como os braços, são

construídas com auxílio da técnica de

extrusão. Na vista frontal ([1] no teclado

numérico), posicione o cursor próximo

ao corpo, à direita, e insira um círculo

selecionando Add | Curve | Bezier Circle.

Depois de sair do modo de edição, gire-o

paralelamente ao plano da área de de-

senho com as teclas [R] e [X]. [Alt]+[C]

o converte em um objeto Mesh. [S] o

redimensiona para um tamanho que cor-

responda ao diâmetro da perna (figura 6,

corte transversal 1). A tecla [Tab] o leva

de volta ao modo de edição, de modo

que é possível selecionar todos os pontos

da linha Mesh. Pressione [E] e escolha

Individual Faces para iniciar a extrusão.

Desloque o novo quadrante para baixo,

na extensão do comprimento da perna

(figura 6, seção transversal 2).

Para modelar o calcanhar, você precisa

primeiro girar a área de desenho pressio-

Figura3: O Blender produz, através da rotação de um perfil bidimensional (linhas amarelas na vista frontal), um corpo espacial simétrico.

Figura 4: Desative o botão Limit Selection to visible para poder selecionar também os pontos ocultos usando a ferramenta de seleção.

Tutorial

62

Blender

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

nando seis vezes o

[4] no teclado nu-

mérico. Posicione

o cursor na extre-

midade direita da

seção transversal

inferior. Depois de

acionar a tecla [E]

e selecionar Indivi-

dual Faces, pressio-

ne também a tecla

[R]. Use o mouse

para girar o novo

corte em 45°em

torno do cursor.

O recorte dos pés

será oval. Portanto,

reduza a linha ati-

va do círculo para

dois terços do seu

tamanho original

teclando [S] e [Z] (redimensionamento

na direção Z – figura 6, recorte 3).

Realize novamente uma extrusão e

gire-o novamente, de modo que a borda

do círculo resultante fique na vertical

(figura 6, recorte 4). Redimensione-o no-

vamente em dois terços e execute uma

extrusão da planta do pé, sem rotacioná-

lo (figura 6, recorte 5). O corte transver-

sal deve ser reduzido novamente para

dois terços do seu tamanho. Depois de

uma última extrusão em alguns milí-

metros, posicione o cursor 3D no centro

da seção transversal ativa através dos

comandos [Shift]+[S] e selecionando

Cursor -> Selection. Encurte seu tama-

nho para algo próximo de zero teclando

[S] (figura 6, corte 6). A perna está final-

mente pronta. Depois de deixar o modo

de edição, coloque-a no lugar apropriado.

Quando você mudar para a vista frontal

pressionando [1] no teclado numérico, é

provável que ainda precise deslocá-la na

direção X, de modo que ela fique do lado

correto do corpo. Com [Shift]+[D] você

duplica a perna, e com a tecla esquerda

do mouse você a coloca em posição. Com

isso o corpo da figura está pronto e você

pôde adquirir um bocado de experiência

em extrusão.

Cirurgia PlásticaAgora só falta a criação do rosto. Para

isso vamos empregar as chamadas su-

perfícies NURBS. Elas consistem em

objetos com os quais, através de pontos

de controle, as formas de superfície são

manipuladas. Posicione o cursor junto

à cabeça e adicione uma esfera: Add

Surface | NURBS Sphere. Agora posicione

o cursor sobre a esfera e desloque-o na

direção horizontal (largura, eixo das

abscissas) com as teclas [S] e [X]. Gire

a área de desenho em 90° pressionan-

do 6 vezes [4] no teclado numérico e

deforme a esfera nessa perspectiva, até

que ela fique semelhante a uma lente

achatada ([S] e [Y]).

Volte para a vista frontal ([1] no tecla-

do numérico) e apague a seleção teclan-

do [A]. Depois de pressionar a tecla [B],

selecione (com o retângulo de seleção

que aparece) os pequenos pontos de

controle cor de rosa no canto direito das

linhas de apoio. Acione novamente a te-

cla [B] e com a tecla [Shift] pressionada,

selecione também o ponto de controle

superior direito. Pressione [G] e desloque

ambos um pouco para cima. Assim, a

curvatura da metade de cima do círculo

passa a se assemelhar a um retângulo.

[7] no teclado numérico mostra de cima

o novo objeto. Ative todos os três pontos

de controle do meio e ainda os inferiores

à esquerda e à direita. Arraste a parte

selecionada um pouco para baixo, de

modo a obter uma curvatura.

A superfície em forma de lente resul-

tante pode agora ser colocada sobre o

rosto. Finalize o modo de edição, mude

para a vista frontal e mova o objeto para

sua posição. Agora, mude para vista late-

ral e arraste a nova estrutura construída

para próximo da cabeça e posicione o

cursor sobre ela. Incline-a levemente ([R]

e [X]) e a desloque em um terço para

dentro da cabeça (figura 7). As pupilas

são criadas a partir de esferas, adicio-

nadas usando Add | Mesh | UVSphere e

depois redimensionadas e colocadas na

posição correta. Verifique, como é praxe

nos procedimentos de criação de objetos

tridimensionais, as vistas frontal e la-

teral, para se certificar de que os olhos

estão posicionados corretamente.

Para produzir as orelhas, mude para

a vista lateral. Posicione o cursor à di-

reita, junto à cabeça. Insira um círculo

NURBS (Add | Curves | NURBS Circle).

Em seguida, redimensione o círculo para

o tamanho correto. Com o botão direito

do mouse e a tecla [Shift] pressionados,

marque os dois pontos de controle su-

periores do círculo e, após pressionar a

tecla [G], desloque-os um pouco para

cima. A metade de cima do círculo de-

verá tomar uma forma parecida com a

Figura 5: O que a técnica de extrusão significa na prática é duplicar, mover e girar discos de seção transversal. É com base nesses cortes que o Blender calcula o objeto no espaço tridimensional.

Figura 6: As pernas, assim como os braços, são construídas com a ajuda da extrusão. Os cortes de 3 a 6 são criados através de deslocamento.

www.linuxmagazine.com.br

março 2006 edição 18 63

Blender Tutorial

http://supertuxbr.blogspot.com

de um quadrado. Não arraste os pontos

de controle para muito longe, senão apa-

recerá uma forma parecida com a letra

“B”. Repita essa operação para os dois

pontos de controle inferiores e deixe o

modo de edição.

Mude agora para a vista frontal di-

gitando [1] no teclado numérico. Pres-

sionando [Alt]+[C] você transforma a

curva em um objeto Mesh. Teclando

[Tab] seguido de [A] você entra nova-

mente no modo de edição e seleciona

todos os pontos da linha. Pressione [E]

e escolha Individual Faces para trans-

formar a linha em um disco achata-

do. Ative todos os pontos da malha

(wireframe) teclando duas vezes em

[A]. Escolha Mesh | Edges | Subdivide

Smooth para provocar um leve arre-

dondamento do lado direito do disco.

Deixe o valor da porcentagem em 100%

e saia do modo de edição. Vire a orelha

um pouco para a esquerda, seguin-

do o formato da cabeça, e coloque-a

em posição. Duplique a orelha com

[Shift]+[D]. Posicione o cursor no meio

dessa cópia e espelhe-a com [Ctrl]+[M]

e selecionando Z Local, posicionando

em seguida a segunda orelha.

O nariz é criado a partir de uma

simples esfera, adicionada ao desenho

com Mesh | UVSphere. Em ambos os

popups que se seguem, deixe os pa-

râmetros Segment e Rings com o valor

16. Diminua o di-

âmetro da esfera

para uma medida

condizente com

o tamanho do

nariz (figura 10)

e encaixe-a com

ajuda das vistas

frontal e lateral,

de modo que ape-

nas metade dela

apareça sobre o

rosto. Em seguida,

teclando [A] no

modo de edição,

selecione todos

os seus pontos.

Mude para a vis-

ta frontal e selecione com um clique

no botão direito do mouse o ponto

mais externo da esfera. Ative agora

Proportional Editing no menu Mesh, na

margem inferior da área de desenho, e

ajuste proporcionalmente o seu tama-

nho em Proportional Falloff Sphere.

Na vista lateral, se a tecla [G] for

pressionada e o ponto de controle se-

lecionado for movido para cima e à

direita, toda a esfera será “esticada”

no comprimento: Proportional Editing

significa que a modificação de um dos

pontos de controle influencia todos os

outros pontos ao seu redor. O parâme-

tro falloff define como essa influência

diminui conforme a distância cresce.

Infelizmente, a esfera se movimenta

por inteiro na direção do ponto des-

locado, sendo necessário posicionar

o nariz, que já está pronto, mais uma

vez. O modelo 3D do nosso persona-

gem só precisa de um último ajuste

para ficar pronto: selecione, teclando

em [A], todos os objetos, que ficarão

assim marcados em rosa. Ajuste agora,

no terço inferior da tela, na região sob

a inscrição Mesh, os dois campos de

texto na linha Subdiv: para 2, clicando

no campo e movimentando o mouse

para a direita. Ao clicar em SubSurf, o

Blender irá “alisar” todas as superfí-

cies. A curvatura do braço está agora

arredondada, como na figura renderi-

zada (figura 10). ➟

Figura 7: O fundo branco dos olhos é constituído a partir de um objeto do tipo NURBS, modelado pelos pontos de controle.

Figura 10: Atingimos nosso objetivo: a renderização do nosso personagem de gibi com sombras, iluminação e brilho realistas. Na seqüência deste artigo, na próxima edição, nosso herói vai despertar para a vida e aprender a se mexer!

Tutorial

64

Blender

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

Fazendo cenaAntes de finalizar a renderização

do nosso herói, é necessário acertar

a posição de câmera e a iluminação.

Observe o nosso personagem de cima,

mudando para a perspectiva aérea,

pressionando [7] no teclado numérico.

Caso necessário, ajuste o fator de zoom

até obter uma visão à direita, debaixo

da câmera, e fixe-a com um clique no

botão direito do mouse. Digitando [0]

no teclado numérico, muda-se para a

perspectiva da câmera. O quadro cen-

tral mostra agora a parte renderizada

da figura. Coloque o cursor no canto

superior direito deste quadro e leve o

mouse um pouco para a esquerda e

para baixo. Com [S] e o mouse você

pode variar a distância da câmera. Po-

sicione-a de modo que o nosso perso-

nagem de gibi ocupe todo o espaço da

área de desenho. Agora, tecle [G] para

mover a câmera até que o homenzinho

fique bem no centro da tela. Com [R] e

[S] gire a cena de forma a ser possível

olhar o personagem diretamente nos

olhos. Um ângulo de rotação levemente

oblíquo fica melhor do que uma posi-

ção totalmente frontal (figura 10).

Agora você ainda tem que determi-

nar a luz correta para a sua criação:

mude novamente para a vista de cima.

Adicione duas lâmpadas, uma do tipo

Spot e outra do tipo Hemi através do

menu Add | Lamp,

como mostrado na

figura 8, à esquerda.

Verifique pela vista

frontal se todas as

lâmpadas estão mais

ou menos na altura do

busto do personagem

e movimente-as para

essa posição. Para

orientar as lâmpa-

das como na figura 8

é necessário (depois

de tê-las posiciona-

do) redimensioná-las

e girá-las na direção correta.

A cena virtual está preparada para

um “instantâneo fotográfico”. Para obtê-

lo, clique em [F12]. A figura gerada pelo

Blender em uma nova janela deve – à

exceção das cores – corresponder ao

personagem da figura 10. E o último

passo do nosso trabalho é exatamen-

te o ajuste de cores. Marque as partes

do gráfico criadas a partir das curvas

do Inkscape (gorro, cabeça e tronco) e

entre no modo de edição. Selecione o

gorro, pressionando a tecla [B]. A letra

[P] o separa do resto do corpo e faz dele

um objeto isolado. Repita esse proce-

dimento para a cabeça e deixe o modo

de edição. Agora o gorro, a cabeça e o

corpo podem ser selecionados e colo-

ridos individualmente.

Vamos começar pelo gorro. A tecla

[F5] muda o terço inferior da interface do

Blender para o modo de sombreamento.

Em Preview, o Blender dá uma amostra das

condições da superfície sob uma ilumina-

ção padrão. Ajuste as cores da superfície

clicando no campo de cores, próximo ao

campo Col (figura 9). Selecione as cores que

desejar para cada parte da figura.

A seguir...Um modelo tridimensional é muito mais

que um desenho enriquecido com nuan-

ces de iluminação: quando você o coloca

sobre uma superfície, sombras naturais

têm que aparecer. Você pode movê-lo e

transformar os movimentos em arquivo

de vídeo. A animação será o tema da

próxima edição. Você encontra mais in-

formações no site oficial do Blender [1] e

também na documentação do aplicativo,

disponível em [4]. ■

Figura 8: Lâmpadas virtuais iluminam a cena como em um verdadeiro estúdio de filmagem.

Figura 9: Ao clicar no retângulo (destacado em laranja na imagem), abre-se a paleta de cores.

Informações[1] Blender: www.blender.org

[2] Inkscape: www.inkscape.org

[3] Downloads do Inkscape: www.inkscape.org/download.php

[4] Documentação do Blender: www.blender.org/cms/Documentation.628.0.html

Tutorial

66

Blender

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Conheça o TiddlyWiki2, um gerenciador de conteúdo do tipo wiki, que não requer nenhum recurso extra no servidor web.Por Augusto Campos

Crie um wiki simples e rápido

O bloco de notasdo admin

E m uma coluna recente, tive a opor-

tunidade de mencionar boas práti-

cas de administração de sistemas

para evitar ser chamado – fora do expe-

diente ou em pleno feriadão – a resolver

problemas que poderiam ter sido evita-

dos. Um dos aspectos daquela coluna que

mais gerou e-mails de leitores foi minha

menção ao Hipster PDA [1], um método

extremamente barato e confiável (e de

baixa tecnologia) de manter as infor-

mações essenciais sobre seus sistemas,

agendamentos e idéias sempre à mão.

Isto me leva a crer que não estou so-

zinho em atribuir grande importância à

capacidade de contar com a informação

relevante sempre disponível nas ativida-

des de administração de sistemas.

A repercussão do Hipster PDA me leva

a dedicar mais uma coluna ao tema,

mas, dessa vez, indicando um meio de

armazenamento um pouco mais tecno-

lógico: o TiddlyWiki [2]. A menos que

você tenha vivido em uma caverna nos

últimos 2 anos, você já sabe que wikis

são websites com recursos que facilitam

a adição ou edição de conteúdo pelos

usuários, geralmente de forma colabo-

rativa, e que o exemplo mais popular

dessa categoria é a enciclopédia online

Wikipédia [3]. De modo geral, os wikis

são construídos a partir de software

especial que roda em um servidor web

– no caso da Wikipédia, o software utili-

zado é o MediaWiki [4], que já foi ana-

lisado aqui na Linux Magazine.

ww

w.sxc

.hu

– Ga

ston

TH

AU

VIN

E é justamente aí que reside o gran-

de diferencial do TiddlyWiki: ele não

precisa de nenhum software adicional

no servidor. Trata-se de um documento

“vivo”, editável diretamente no navega-

dor (sem recorrer a editores externos),

publicável, e totalmente contido em um

único arquivo HTML (que naturalmente

inclui em si os necessários trechos de

CSS e Javascript, além do conteúdo que

você adicionar). Você poderá usá-lo onde

for: ele é compatível com navegadores

populares em Linux, Mac e Windows®.

Após editar ou acrescentar um artigo

(ou nota, ou lembrete, ou o que quer

que você queira armazenar) basta usar

a ferramenta “Salvar como” do seu na-

vegador e pronto.

Você pode disponibilizar o seu ti-

ddlywiki na web sem nenhum “truque

sujo” – basta fazer o upload para qual-

quer servidor. É possível também usar

o tiddlywiki gravando apenas em discos

locais (ou compartilhados em rede local),

ou ainda carregá-lo em um pen drive

USB – mas lembre-se de fazer bons be-

capes e de preservar dados confidenciais

– afinal estamos falando de informações

sobre administração de sistemas!

As vantagens sobre a tradicional alter-

nativa de usar um arquivo TXT com as

informações essenciais são várias: além

de poder usar hipertexto, links (internos

e externos) e a riqueza da linguagem

de marcação típica dos Wikis, o docu-

mento é automaticamente organizado e

indexado, facilmente consultado e ainda

por cima tem vantagens inequívocas no

momento de publicar ou divulgar.

Se você não conhece os recursos de

marcação dos wikis, vale a pena dar uma

olhada no Tutorial do TiddlyWiki [5], que

explica como o uso criativo de colchetes

e outros sinais gráficos pode acrescentar

imagens, links, listas e outros recursos

visuais e estruturais importantes para

seus documentos. O próprio tutorial é

feito em TiddlyWiki, mas para ver um

exemplo do funcionamento do sistema,

o melhor é visitar o próprio site oficial

do programa (aliás, o site também é feito

com ele), fazer o download do arquivo

empty.html para o seu micro e abri-lo

em seu navegador – você certamente irá

se surpreender. ■

Sobr

e o

auto

r Augusto César Cam-pos é administrador de TI e, desde 1996, mantém o site BR-linux.org, onde cobre a cena do Software Livre no Brasil e no mundo.

Informações[1] Hipster PDA: www.hipsterpda.com

[2] TiddlyWiki: www.tiddlywiki.com

[3] Wikipedia: pt.wikipedia.org

[4] MediaWiki: www.mediawiki.org

[5] Tutorial do TiddlyWiki: www.blogjones.com/TiddlyWikiTutorial.html

www.linuxmagazine.com.br

março 2006 edição 18 67

Coluna do Augusto SysAdmin

http://supertuxbr.blogspot.com

Redes exigem uma manutenção precisa de hora e data. O NTP (Network Time Protocol) garante que isso será feito.Por Marc André Selig

Hora certa na rede

Em pontow

ww

.sxc.h

u – le

vi sze

kere

s

A tualmente, qualquer relógio bara-

to de pulso consegue manter de

maneira mais eficiente a hora do

que os chips de computadores modernos.

Apesar de haver alguns truques para me-

lhorar a precisão – por exemplo, calcular

a média do desvio e aplicar um vetor de

correção – não há uma alternativa real

aos relógios altamente precisos.

Computadores, geralmente, obtêm a

hora através de relógios de referência

externos extremamente precisos. Por

exemplo, um terminal receptor DCF77

conectado a uma porta serial ou USB per-

mite que um PC receba a hora certa de um

relógio de referência, como o da figura 1.

Se você precisa desse tipo de precisão,

mas não quer investir em hardware adi-

cional, é possível usar relógios de referên-

cia disponíveis na Internet. O protocolo

necessário para isso é o NTP (Network

Time Protocol), que pode usar tanto TCP

quanto UDP (porta 123) para a comunica-

ção. No Linux, o daemon ntpd implemen-

SysAdmin

68

NTP

www.linuxmagazine.com.br

março 2006 edição 18

Figura 1: O Physikalisch-Technische Bundesanstalt, em Brunswick, na Alemanha, possui relógios atômicos altamente precisos. O nível de variação desses relógios não chega a 0,001 segundo por ano. Eles são usados como referência para servidores NTP.

http://supertuxbr.blogspot.com

ta esse protocolo. Esse protocolo depende

de uma série de truques para conseguir

uma sincronização precisa dentro de um

certo período de tempo. O tempo de re-

ferência usado é conhecido como UTC

(Universal Time/Coordinated). O NTP não

faz a sincronização de várias estações,

mas sincroniza uma única máquina com

o UTC, da melhor maneira possível.

Para fazer isso, o NTP usa uma estru-

tura hierárquica (figura 2). Alguns com-

putadores estão conectados a relógios

altamente precisos – os mais comuns

são os relógios atômicos. Servidores que

usam diretamente essas fontes como

referência ocupam o topo da hierarquia:

o nível 1. Há outros níveis, como 2, 3,

4, 5 etc. Há uma lista de servidores do

nível 1 e 2 em [1]. Cada computador nesse

sistema pode se conectar com diversas

máquinas em níveis superiores.

Modos NTPO NTP possui três modos diferentes para

passar sinais com data e hora de um

computador para outro. Em operações

típicas do tipo cliente/servidor, um com-

putador vai consultar o outro para obter

a hora. O cliente pode aceitar o sinal de

um servidor, mas não o contrário. Esse

é o primeiro modo.

O modo simétrico é parecido. No en-

tanto, a direção da transmissão pode ser

revertida. Se a fonte de um servidor cair,

esse servidor assume a função de fonte

de data e hora para outros computadores.

Em outras palavras, cada máquina é um

ponto da rede.

A figura 3 mostra um grupo de três pon-

tos que servem como fontes de tempo de

maneira redundante (“redundância” em

engenharia significa prevenção contra fa-

lhas). Esse grupo serve como o back-end

dos clientes. Mas, normalmente, grandes

redes funcionam sem problemas no modo

assimétrico (cliente/servidor), consultan-

do diversos servidores NTP na Internet.

No terceiro modo NTP, todos os servi-

dores transmitem sinais. Cada um trans-

mite um pacote sinalizando que está

funcionando e informando aos clientes

seu IP, para que a requisição NTP possa

ser feita. Isso evita a configuração ma-

nual dos clientes.

DaemonMuitos sistemas Linux e Unix incluem o

antigo daemon ntpd, que usa o arquivo

de configuração /etc/ntp.conf. No mais

simples dos casos, típico para a maioria

dos sistemas Linux, esse arquivo contém

apenas o nome ou IP do servidor NTP.

Para que os administradores não tenham

que atualizar freqüentemente quais servi-

dores NTP os clientes devem usar como

fonte de tempo, o projeto NTP [2] roda um

alias de DNS chamado pool.ntp.org. Ele se

refere a um grupo de servidores públicos.

A listagem 1 mostra como essa configura-

ção pode ser simples. O daemon considera

apenas um dos três IPs desse arquivo.

Computadores precisam acertar a hora

o mais cedo possível na fase de boot,

mesmo se não tiverem um daemon NTP.

O comando ntpd -q cuida disso. Ele

inicia temporariamente o ntpd e obtém a

hora correta. Depois, termina automati-

camente. Muitas distribuições usam essa

técnica em seus scripts de boot. A fer-

ramenta ntpdate é uma alternativa que

fornece resultados similares, mas não

possui o mesmo requinte de funciona-

mento de seu irmão mais velho. Por isso

é visto como uma programa obsoleto,

embora ainda seja muito usado.

ProblemasMuitos problemas podem ocorrer duran-

te a sincronização da data e hora, mas

o ntpd tem um leque de truques para

evitá-los. Se o computador está com a

hora errada, o programa evita fazer uma

sincronização imediata, pois isso cau-

saria problemas. Por exemplo, se um

cronjob estiver rodando e o ntpd decidir

www.linuxmagazine.com.br

março 2006 edição 18 69

NTP SysAdmin

Figura 2: Uma rede NTP é organizada hierarquicamente em múltiplos níveis. Fontes de tempo como relógios atômicos ficam no nível 0; computadores conectados diretamente a esse tipo de relógio ficam no nível 1, provendo um tempo de referência confiável aos computadores no nível 2.

Nível 0Relógios Atômicos

Nível 1

Nível 2

http://supertuxbr.blogspot.com

voltar um pouco o relógio, essa tarefa

vai rodar de novo.

O daemon precisa garantir continui-

dade, fornecendo incrementação linear

do tempo, sem saltos bruscos para frente

ou para trás. Para conseguir isso, ele

ajusta o relógio em passos pequenos, um

de cada vez. Para ser mais preciso, ele

aumenta ou diminui o relógio em meio

milissegundo por segundo. E continua

fazendo isso até que o computador esteja

sincronizado com o servidor.

Para ajustar o relógio em um segundo

leva-se 2.000 segundos com essa técnica

(ou seja, mais de meia hora). Para corri-

gir a hora o mais rápido possível, o ntpd

apela para um recurso comprometedor.

Se ele nota um desvio com mais de 128

milissegundos, ajusta a hora de uma

vez. Então, retorna a técnica anterior de

ajustes finos em milissegundos.

Fontes incorretasQuando se usa diversas fontes na Inter-

net, é preciso algum tipo de proteção

contra relógios incorretos. Um cliente

NTP resolve esse problema comparando

a hora em múltiplos servidores e encon-

trando qual deles está mais próximo do

tempo UTC. Então, sincroniza apenas

com esse servidor.

O problema é que mesmo o melhor

dos algoritmos pode retornar resultados

incorretos de vez em quando – princi-

palmente se muitos servidores estiverem

na jogada. Contudo, há um plano para

prevenir esse tipo de acaso. Se o daemon

NTP notar um certo grau de inexatidão

(por padrão, mais de 1000 segundos),

ele não vai corrigir a hora.

O NTP também pode lidar com situa-

ções em que a conexão de rede ou o ser-

vidor configurado não estão disponíveis.

Nesses casos, o daemon mede a precisão

do relógio do sistema e corrige as va-

riações usando como base sua própria

análise, quando uma referência externa

esteja temporariamente fora do ar.

Conexões lentasA variação na latência (intervalo entre

o início de um processo e seu primeiro

efeito) de conexão no servidor NTP é

outro problema em potencial. Uma cone-

xão DSL ou ISDN sem grande sobrecarga

tem latência de até alguns milhares de

milissegundos. Mas se um grande upload

ou download estiver em andamento, a la-

tência pode aumentar rapidamente para

múltiplos segundos em qualquer uma

das direções. Como o servidor NTP não

tem como prever as variações de latência,

pode ficar ajustando seguidamente o

relógio do sistema. Mas nem tudo está

perdido: o ntpd tem um filtro especial

para lidar com esse tipo de situação, em-

bora não esteja ativado por padrão. Se

quiser contornar esse problema, ative o

filtro acrescentando o comando tinker

huffpuff 7200 ao /etc/ntp.conf.

Como os clientes de rede costumam

rodar sem muitas configurações espe-

ciais, a configuração automática do NTP

pode ser preferível. Há muitas soluções

para isso. A menos flexível é a adotada

pela Apple em seus computadores Mac.

Se o administrador ativa o daemon NTP,

ele usa um servidor de tempo padrão e

fixo. O pool do projeto NTP é uma al-

ternativa muito mais sensata e simples.

A versão 4 do NTP ainda possibilita a

configuração automática com o daemon

usando um recurso chamado Manycast,

que consulta computadores na rede e

encontra automaticamente um servidor

NTP apropriado.

SegurançaAdministradores estão sempre preocupa-

dos com segurança de rede. No caso do

NTP, há razões de sobra para isso. Basi-

camente, há dois diferentes cenários de

ataque: de dentro e de fora do protocolo.

Trabalhando com o protocolo, um

agressor pode fornecer um sinal de hora

incorreto para bagunçar os logs ou até

lançar um ataque do tipo negação de ser-

viço (denial of service). Os administrado-

SysAdmin

70

NTP

www.linuxmagazine.com.br

março 2006 edição 18

Figura3: Os três servidores NTP da esquerda estão rodando em modo simétrico e agindo como fontes mútuas e redundantes. O cliente (na direita) simplesmente consulta um dos servidores para obter a hora certa.

Servidor 1

Servidor 2

Servidor 3

Cliente 1

Listagem 1: /etc/ntp.conf típico01 server pool.ntp.org02 server pool.ntp.org03 server pool.ntp.org04 restrict default kod notrap nomodify nopeer noquery

http://supertuxbr.blogspot.com

res precisam acrescentar uma linha do

tipo restrict ao arquivo de configuração,

como uma maneira simples de prote-

ção. Já a única proteção contra sinais de

tempo incorretos é a criptografia. Nesse

campo, o ntpd fornece diversas opções

de autenticação [3].

Como o ntpd tipicamente roda como

usuário 0 (root), ele é um alvo em poten-

cial de ataques que não usam o protocolo.

Um estouro da memória (buffer overflow)

bastaria para o sistema ser comprome-

tido e o agressor ganhar o controle. A

única solução é usar a opção -q do ntpd.

Ou seja, usar um cronjob para garantir

que o programa não esteja rodando o

tempo todo.

AlternativasO NTP fornece um sistema de manuten-

ção do tempo extremamente preciso e o

daemon pode ser administrado facilmen-

te. Contudo, há outras ferramentas com

essa mesma função. Uma delas é o RDate,

que usa o protocolo padronizado no RFC

868 [4] e a porta 37 TCP/UDP.

O RDate sempre usa um valor binário

no lugar de um formato em texto. Além

disso, há o protocolo Daytime (RFC 867

[5]), que usa a porta 13 TCP/UDP para

transferir um valor de tempo na forma de

uma cadeia de caracteres em texto. Mas

esse formato é mais útil para a resolução

de problemas ou bugs.

Tanto o RDate quanto o Daytime exi-

gem portas abertas no firewall. Se isso

não puder ser feito, sua única alternativa

é o “mau uso” de portas não bloqueadas.

Por exemplo, o programa HTTPDate [6]

simplesmente se conecta a um servidor

HTTP ou HTTPS e pega o valor na time-

stamp de resposta do servidor, para ser

usado como data e hora de referência.

Obviamente, o uso do HTTPDate exige

que o servidor usado como referência

tenha um relógio preciso. ■

www.linuxmagazine.com.br

março 2006 edição 18 71

NTP SysAdmin

Sobr

e o

auto

r

Marc André Selig gasta metade de seu tempo trabalhando como assistente científico na Universidade de Trier e como médico residente no hospi-tal de Schramberg, na Alemanha. Quando consegue achar uma brecha na agenda, se ocupa em programar bancos de dados web em diversas plataformas Unix.

Informações[1] Servidores NTP: ntp.isc.org/bin/

view/Servers/WebHome

[2] Projeto NTP: www.ntp.org

[3] Autenticação no NTP: www.eecis.udel.edu/ ~mills/ntp/html/authopt.html

[4] RFC 868 - Time Protocol: www.faqs.org/rfcs/rfc868.html

[5] RFC 867 - Daytime: www.faqs.org/rfcs/rfc867.html

[6] HTPDate: www.clevervest.com/htp/

http://supertuxbr.blogspot.com

Atualmente, o mundo dos objetos 3D já faz parte do cotidiano: é só reparar no uso que a indústria do entretenimento faz dessa tecnologia. Aprenda como usar o Python para lidar com 3D, com o VTK. Por Ana M. Ferreiro e José A. García Rodríguez

Visualização tridimensional com o VTK

Manipulação 3D no Python

A representação gráfi ca em 3D ofe-

rece a possibilidade de se criar

mundos virtuais. Com a visuali-

zação 3D, torna-se possível explorar e

entender sistemas complicados rapida-

mente, graças à evolução das linguagens

orientadas a objetos, que permitem criar

programas de melhor qualidade e de

fácil manutenção.

Entre as diferentes ferramentas de

visualização, representação e proces-

samento de imagens 3D, vale destacar

o VTK ( Visualization Toolkit ) [1] , uma

biblioteca de código aberto (implemen-

tada em C++ ) com wrappers para TCL ,

Python e Java , permitindo o desenvolvi-

mento de aplicações completas, de um

modo efi ciente e com o uso de scripts

simples. Por tudo isso, o VTK é hoje

bem utilizado na visualização 3D nas

áreas médica, industrial, na recons-

trução de superfícies a partir de digi-

talização a laser ou nuvens de pontos

desorganizados etc.

A seguir, veremos os conceitos básicos

usados pelo VTK para criarmos uma cena

ww

w.sxc

.hu

– wo

lf fried

ma

nn

e, através de uma série de exemplos de-

senvolvidos em Python, vamos criar nos-

sos próprios cenários de visualização.

Instalação Para nossos exemplos, é preciso ter

instalado o Python e o VTK (com

Quadro 1: Como compilar o VTK Para instalar o VTK a partir do código fonte, que podemos baixar no site do VTK [3] , podemos esco-lher uma das versões em .tgz ou acessar o CVS e fazer o download da última versão. No segundo caso, criaremos uma pasta chamada “VTK” em /opt e, para ter acesso ao repositório CVS, digitamos:

cvs -d :pserver:anonymous@public. Ukitware.com:/cvsroot/VTK login(responder com a senha: vtk)

Para baixar o código fonte, teclamos:

cvs -d :pserver:[email protected]:/cvsroot/VTK checkout VTK

Em qualquer um dos casos, para compilar o VTK precisamos do Cmake , que pode ser obtido em www.cmake.org/HTML/Download.html . Se preferir, também pode-se obter o Cmake pelo CVS:

cvs -d :pserver:[email protected]:/cvsroot/CMake Ulogin password: cmake

Para baixá-lo, digitamos:

cvs -d :pserver:[email protected]:/cvsroot/CMakeco CMake

Uma vez que tenhamos baixado e instalado o Cmake, podemos compilar o VTK. Para isso, devemos entrar na pasta onde está o VTK e teclar a partir da linha de comando: cmake -i.

Um prompt vai perguntar o que se quer compilar. Devemos prestar atenção e, quando aparecer a pergunta sobre a opção de se instalar os wrappers para Python, responder afi rmativamente (já que a resposta não é automática). Então, basta teclar make e depois make install .

Programação

72

Python/3D

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

suporte para Python). Além disso, a

placa de vídeo precisa estar com o

OpenGL funcionando.

Há duas maneiras de instalar o VTK:

a primeira é baixar e instalar os pacotes

binários. No caso do Suse, Fedora ou

Mandriva (Mandrake), basta procurar

pelos seguintes pacotes RPM (em nosso

exemplo, para o Mandrake 10.1):

P vtk-4.2.2-5mdk.i586.rpm

P vtk-python-4.2.2-5mdk.i586.rpm

P vtk-tcl-4.2.2-5mdk.i586.rpm

P vtk-examples-4.2.2-5mdk.i586.rpm

P vtk-devel-4.2.2-5mdk.i586.rpm

Esses pacotes podem ser baixados

através do repositório RedIris [2]. A ou-

tra maneira é compilar o código fonte,

conforme explicado no quadro 1: “Como

compilar o VTK”.

Modelos de objetos VTKPara os iniciantes no mundo da vi-

sualização 3D, vamos resumir uma

explicação sobre a estrutura do VTK,

pois isso permite compreender melhor

cada passo deste tutorial.

Imagine uma cena de um desenho

animado como, por exemplo, “A Era do

Gelo”. Se nos concentrarmos em uma

única seqüência, veremos personagens

animados, luzes de diferentes tonalida-

des, câmeras que mudam o ponto de

vista, características dos personagens

(cor, forma etc)… Mesmo que você não

acredite, todos esses conceitos são a base

da visualização gráfica. Vejamos como

é essa estrutura.

A biblioteca VTK foi projetada a

partir de dois modelos, claramente

distintos: o modelo gráfico e o modelo

de visualização.

P Modelo gráfico – Captura as principais

características de um sistema gráfico

3D, de modo fácil de compreender e

utilizar (figura 1). A abstração está

baseada na indústria do cinema. Os

modelos básicos que constituem esse

modelo são: vtkRenderer, vtkRen-

derWindow, vtkLight, vtkCamera,

vtkProp, vtkProperty, vtkMapper,

vtkTransform (a tabela 1 descreve

cada um desses objetos).

P Modelo de visualização – O papel do

modelo gráfico é o de transformar da-

dos gráficos em imagens, enquanto

que o modelo de visualização trans-

forma informações em dados gráficos.

Isso significa que o modelo de visua-

lização é o responsável por construir

a representação geométrica que é ren-

derizada através do modelo gráfico. O

VTK se baseia na aproximação dos da-

dos para transformar a informação em

dados gráficos. Há dois tipos básicos

de objetos envolvidos na aproximação

(descritos na tabela 2): vtkDataObject

e vtkProcessObject.

Os diferentes tipos de dados que po-

dem constituir um objeto são: pontos,

retas, polígonos, pontos estruturados,

malhas estruturadas, malhas não es-

truturadas etc (figura 2).

Primeira cenaJá estamos prontos para construir a nos-

sa primeira cena. Vamos nos colocar no

papel do diretor de cinema. Nos exem-

plos a seguir, veremos como empregar

as classes que acabamos de descrever.

Para isso, assim como dissemos no início,

vamos usar instâncias de objetos VTK

dentro dos scripts Python. ➟Figura 1: Estrutura do modelo gráfico.

Figura 2: Os diferentes tipos de dados que podem constituir um objeto: a) dados poligonais; b) pontos estruturados; c) malha não estruturada; d) malha estruturada.

www.linuxmagazine.com.br

março 2006 edição 18 73

Python/3D Programação

http://supertuxbr.blogspot.com

Por meio de qualquer editor de texto,

criamos um arquivo cone.py . A primeira

coisa a fazer é importar o pacote VTK do

Python. Isso é bastante simples. Basta a

seguinte linha: import vtk .

Agora já podemos criar instâncias

de qualquer objeto VTK, apenas es-

crevendo vtk.nome_classe no códi-

go do programa. Precisamos também

criar nossa janela de renderização vtk.

vtkRenderWindow, que chamaremos de

renWin, e à qual associaremos uma área

de renderização vtk.vtkRenderer (que

denominamos ren), através do método

AddRenderer(). Isso é feito com as li-

nhas de código a seguir:

ren=vtk.vtkRenderer()

renWin=vtk.vtkRenderWindow()

renWin.AddRenderer(ren)

iren=vtk.vtkRenderWindowInteractor()

iren.SetRenderWindow(renWin)

Para que possamos manipular a

câmera por meio do mouse, o objeto

vtkRenderWindowInteractor (deno-

minado no código como iren ) deverá

ser instanciado. Note que a janela de

renderização renWin se associa ao ob-

jeto de interação iren através do méto-

do SetRenderWindow . Nesse momento,

ainda não percebemos a utilidade

disso. Paciência, vamos compreender

sua importância quando tivermos um

“ator” em nosso cenário.

Fechamos o arquivo e, na linha de

comando, executamos o programa digi-

tando python cone.py. E… nada acon-

tece! Isso ocorre porque devemos iniciar

a interação do usuário e indicar que a

janela de renderização deve permanecer

visível até que o usuário fi nalize sua

execução, fechando-a. Para isso, basta

adicionar ao código:

iren.Initialize()

iren.Start()

Ao executarmos novamente o pro-

grama, veremos uma janela negra se

abrir, com seus botões de maximizar,

minimizar e fechar, e que só será fe-

chada quando o usuário quiser ( figura

3 ). Ela será o “armazenador” da nossa

pequena cena. Note que as duas linhas

de código que acabamos de escrever

devem fi car no fi nal do arquivo. As de-

mais linhas que venham a ser escritas

deverão fi car logo antes.

Não vamos criar um ator muito

complicado, pois queremos ver logo

alguma coisa acontecer.

O VTK contém uma série de clas-

ses que nos permitem criar objetos

tridimensionais simples como esferas

( vtkSphereSource ), cones ( vtkCo-

neSource ) e cilindros ( vtkCilin-

derSource ), entre muitos outros.

Tomaremos como exemplo um cone

– no entanto, você pode optar por qual-

quer um dos outros objetos. O seguinte

código cria nosso primeiro “ator”:

cone=vtk.vtkConeSource()

coneMapper=vtk.vktPolyDataMapper()

coneMapper.SetInput(cone.GetOutput())

coneActor=vtk.vtkActor()

coneActor.SetMapper(coneMapper)

Tabela 1: Modelo gráfi co Objeto Descrição

vtkRenderer Cria uma área de renderização que coordena luzes, câmeras e atores.vtkRenderWindow Classe que representa o objeto dentro do qual se coloca uma ou mais áreas de renderização (vtkRenderer).

vtkLight Objeto que permite manipular as luzes da cena. Quando se cria uma cena, as luzes são incluídas automaticamente.vtkCamera Objeto que controla como uma geometria 3D é projetada dentro da imagem 2D durante o processo de renderização. A

câmera tem diferentes métodos que permitem defi nir o ponto de vista, o foco e a orientação.vtkProp Objeto que representa os diferentes elementos (atores) que se situam dentro da cena. Cabem destacar as seguintes sub

classes: vtkActor, vtkVolume, vtkActor2D.vtkProperty Representa os atributos de renderização de um ator, incluindo cor, iluminação, mapa da estrutura, estilo de desenho e estilo

de sombra.vtkMapper Representa a defi nição da geometria de um ator e mapeia os objetos mediante uma tabela de cores (vtkLookupTable). O

mapper proporciona a fronteira entre o modelo de visualização e o modelo gráfi co.vtkTransform Objeto que consiste em uma matriz de transformação 4x4 e métodos para modifi car a matriz mencionada. Especifi ca a

posição e orientação de atores, câmeras e luzes.

Figura 3: A janela de renderização automática.

Programação

74

Python/3D

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Por meio do objeto vtk.vtkConeSour-

ce , criamos a representação poligonal

de um cone que chamamos de… “cone”.

A saída do cone ( cone.GetOutput() ) é

um conjunto que se associa ao “mapper”

( coneMapper ) ( vtk.vtkPolyDataMapper )

através do método SetInput() . Criamos

o “ator” (objeto a ser renderizado) ao

qual se associa a representação geométri-

ca que resulta em coneMapper . Note que

os passos indicados aqui são, geralmente,

os que precisamos seguir para construir

um ator ( figura 4 ).

Quando criamos um ator, ele não

é inserido automaticamente na cena.

É preciso antes adicioná-lo ao Render

com um AddActor e renderizar a cena

posteriormente. Isso é possível com

as linhas:

ren.AddActor(conoActor)

renWin.Render()

Ao executá-lo novamente, iremos

visualizar um cone de cor cinza (cor

inserida automaticamente) dentro da

nossa janela ( fi gura 5 ). Além disso, é

nesse momento que a interação com

o mouse se mostra importante: com o

botão esquerdo é possível rotacionar a

câmera; o botão central permite rea-

lizar traslados e, com o botão direito,

nos aproximamos ou nos afastamos do

objeto. Além disso, uma luz foi inserida

automaticamente para observarmos os

objetos iluminados.

Experimente comentar a linha

renWin. Render() . O que acontece?

Como você já deve ter-se dado conta,

o cone não aparece. Isso porque, cada

vez que adicionamos um ator, é neces-

sário renderizar a cena, pois, se não a

retomamos, é como se não houvéssemos

adicionado um novo ator.

Propriedades Se você seguiu o tutorial até esse ponto

já terá criado seu cone cinza. Mas, prova-

velmente, não está muito satisfeito. Tal-

vez outra cor fosse melhor, como branco

e fundo azul, por exemplo. Na seqüência,

vamos ver como modifi car a janela de

renderização, a câmera e as propriedades

do ator. No fi nal será possível fazer todas

as alterações que desejar.

Você já deve ter observado que a ja-

nela de renderização se abre com um

tamanho pré-determinado. Para fi xar o

tamanho da janela é preciso empregar

o método SetSize , no qual indicamos

a altura e largura em pixels: renWin.

SetSize(450,325) .

Se o que queremos é mudar a cor de

fundo da cena ( vtkRenderer ), empre-

gamos o método SetBackground(RGB) ,

no qual informamos a cor desejada

Tabela 2: Modelo de visualização Objeto Descrição

vtkDataObject Classe genérica que permite representar diferentes tipos de dados. Os objetos de dados consistem em estruturas geométricas e topológicas (pontos e célu-las), e também em atributos associados, tais como escalares ou vetores.

vtkProcessObject Objeto que faz referência aos fi ltros, que atuam sobre os atores, modifi cando-os.

Figura 4: O passo-a-passo para se criar um “ator”.

ADados-fonte para construir o objeto (pontos, polígonos…)

Gera saída de dados: A.GetOutput()

Associamos dados para gerar a malha: B.SetInput()

O ator que vamos criar é associado à malha que o gerou: B.SetMapper()

BvtkPolyDataMapper () (tipo de “mapper”)

CvtkActor()

Figura 5: Cone dentro da cena.

www.linuxmagazine.com.br

março 2006 edição 18 75

Python/3D Programação

http://supertuxbr.blogspot.com

no formato RGB. Se quisermos um

fundo azul, basta digitar ren.Set-

Background(0.0, 0.0, 1) .

Conforme já explicado, a área de ren-

derização ( vtkRenderer ) coordena a

câmera e as luzes. Através do método

GetActiveCamera() temos acesso à câ-

mera criada na cena e assim podemos

aplicar a ela todos os métodos do objeto

vtkCamera para modifi car a visualiza-

ção como quisermos. Se o que queremos

é que todos os atores sejam vistos em

sua totalidade dentro da área de ren-

derização, é preciso chamar o método

ResetCamera() . Nas linhas seguintes,

podemos observar alguns dos métodos

relativos à câmera:

ren.ResetCamera()

camera=ren.GetActiveCamera()

camera.Azimuth(60)

camera.Pitch(5)

camera.Yaw(5)

camera.Roll(50)

camera.Elevation(20)

camera.Zoom(1.5)

Os métodos Azimuth , Pitch , Yaw , Roll

e Elevation são responsáveis por rota-

cionar a câmera ou o ponto de foco em

diferentes posições e tem, como argu-

mento, o ângulo de rotação. O melhor é

brincar um pouco com a câmera e ver o

que acontece, testando cada um desses

métodos em separado.

Por exemplo, para ver qual o efeito

do método Azimuth aplicado à câmera,

comente as linhas de código restantes,

caso contrário, estaria misturando mé-

todos de rotação diferentes e, mesmo

assim, não seria possível saber direito o

que está acontecendo. Não se preocupe

se em algum momento o ator sumir de

cena. O que está acontecendo é que o

ângulo de rotação é tal que é impossí-

vel ver o ator dentro da cena. A figura 6

explica de maneira simplifi cada como

atua cada um desses métodos levando

em consideração o foco (representado

por uma esfera branca).

A partir desse ponto, comente as linhas

de código correspondentes aos métodos

que atuam sobre a câmera, deixando só

a linha camera.Zoom(1.5) ativa. Assim

podemos ver uma coisa de cada vez e,

logo, poderemos mesclar o código.

Agora sabemos modificar a cena,

mas o cone continua sendo visto na

cor cinza, um pouco apagado. Para

se alterar as propriedades de qual-

quer ator vtkActor , devemos utilizar

o método GetProperty() , que gera

uma instância do objeto

vtkProp , associada ao

referido ator.

As linhas seguintes

permitem modificar a

cor, transparência e es-

pessura das linhas:

conepro=coneActor.U

GetProperty()

conepro.SetColor(1,0.2,0)

conepro.SetOpacity(0.5)

conepro.SetLineWidth(3)

conepro.SetResolution(40)

conepro.SetRepresentationU

ToWireframe()

A última linha desse código indica

que queremos ver a estrutura básica que

constitui o ator, ou seja, a malha. O VTK

já vem com teclas de atalho associadas à

cena: ao pressionar a tecla [S], todos os

objetos são vistos renderizados ( figura

7 ). Já ao teclar [W], vê-se apenas a ma-

lha ( figura 8 ). Agora é possível observar

melhor a diferença entre a malha e a

estrutura renderizada. Nada melhor que

poder enxergar as coisas!

A linha conepro.SetResolution(40)

modifi ca a resolução com a qual se ren-

deriza o cone. Mas esse método não

serve para todos os atores, apenas para

certos objetos que já são incluídos pelo

VTK, tais como esfera ( vtkSphereSour-

ce ), cone ( vtkConeSource ), cilindro

( vtkCilinderSource ) etc.

Figura 6: Comportamento dos métodos da câmera a) Azimuth - fl echas vermelhas; b) Pitch - fl echas azul-celeste; c) Yaw - fl echas azul-escuro d) Elevation - fl echas verdes e) Roll - fl echa amarela. A esfera branca representa o foco.

Figura 7: Vista da superfície do cone.

Figura 8: Vista da malha do cone.

Programação

76

Python/3D

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Qualquer objeto pode ser rotacionado,

escalonado, ter suas dimensões mostra-

das etc, utilizando-se as propriedades de

um vtkActor em particular (para mais

informações, consulte a ajuda do VTK

sobre o vtkProp3D , que é a classe pai).

Para rotacionar e escalonar nos-

so cone, usamos as linhas:

coneActor.RotateX(30)

coneActor.RotateY(45)

coneActor.SetScale([1,3,2])

Agora você já sabe como criar

sua própria cena, modifi car

suas propriedades, adicionar

um ator com as opções que

quiser e modifi car a posição

da câmera. No caso de dese-

jar adicionar mais atores à sua

janela de renderização, basta

seguir o mesmo procedimento

empregado na criação do nos-

so cone. Na listagem 1 são adicionados

à cena um cone e uma esfera que se

intersectam ( figura 9 ). ■

Informações [1] VTK: public.kitware.com/VTK/

[2] RPMs do VTK no Mandrake: ftp.rediris.es/sites3/carroll.cac.psu.edu/mandrakelinux/official/10.1/i586/media/contrib/

[3] Downloads VTK: www.vtk.org/get-software.php

[4] Enthought. Ferramentas científi cas para Python: www.scipy.org

[5] MayaVi: mayavi.sourceforge.net

Listagem 1: cone_esfera.py 01 import vtk0203 # Geramos a estrutura para visualizar um cone04 cone = vtk.vtkConeSource()05 coneMapper = vtk.vtkPolyDataMapper()06 coneMapper.SetInput(cone.GetOutput())07 coneActor = vtk.vtkActor()08 coneActor.SetMapper(coneMapper)0910 # Criar fonte de esfera, mapeador e ator11 esfera = vtk.vtkSphereSource()12 esferaMapper = vtk.vtkPolyDataMapper()13 esfera.SetPhiResolution(10)14 esfera.SetThetaResolution(20)15 esfera.SetCenter(0.3,0.0,0.0)16 esferaMapper.SetInput(esfera.GetOutput())17 esferaActor = vtk.vtkActor()18 esferaActor.SetMapper(esferaMapper)19 esferaActor.GetProperty().SetColor(0.7,0.0,0.25)20 esferaActor.GetProperty().SetOpacity(0.75)21 esferaActor.GetProperty().SetLineWidth(1)2223 # Criamos: Renderer, RenderWindow, U RenderWindowInteractor24 ren = vtk.vtkRenderer()25 renWin = vtk.vtkRenderWindow()26 renWin.AddRenderer(ren)

27 iren = vtk.vtkRenderWindowInteractor()28 iren.SetRenderWindow(renWin)2930 # Adicionamos o ator na área de renderização (Renderer)31 ren.AddActor(coneActor)32 ren.AddActor(esferaActor)3334 #Fixamos a cor de fundo, o tamanho e damos zoom sobre35 #a área de Renderização36 ren.SetBackground(1, 1, 1)37 renWin.SetSize(450, 425)38 camera=ren.GetActiveCamera()39 ##camera.Zoom(1.5)4041 coneActor.RotateX(30)42 coneActor.RotateY(45)43 conepro=coneActor.GetProperty()44 conepro.SetColor(0,0.6,1)45 ##conepro.SetOpacity(0.5)46 conepro.SetLineWidth(2)47 ren.ResetCamera()48 ##camera=ren.GetActiveCamera()49 camera.Zoom(1.5)5051 cone.SetResolution(40)5253 iren.Initialize()54 renWin.Render()55 iren.Start()

Figura 9: Cena com dois atores em intersecção, uma esfera sobre um cone. au

tore

s Ana M. Ferreiro e José García Rodríguez estudaram matemática, mas são apaixo-nados por informática e dedicam a ela grande parte de seu tempo.

www.linuxmagazine.com.br

março 2006 edição 18 77

Python/3D Programação

http://supertuxbr.blogspot.com

O Realbasic é uma solução simples para converter programas feitos em Visual Basic para Linux.

Por Frank Wieduwilt

Portando projetos de Visual Basic para o Linux

Portasabertas

O Visual Basic deve sua popula-

ridade no mundo do Windows®

ao fato de ter uma reputação de

ser fácil de aprender e entender. Nor-

malmente, programadores que migram

para o Linux precisam reescrever esses

programas em alguma linguagem si-

milar, já que variantes livres do Basic

como Gambas [1], HBasic [2] ou WX-

Basic [3] ainda estão bem distantes do

VB no que se refere à tarefa de portar

programas tranqüilamente. O KBasic

[4] chega a prometer compatibilidade

sintática completa com o concorrente,

mas ainda é um beta bastante instável,

apesar de todos os anos de desenvolvi-

mento. A solução, por enquanto, existe

apenas na forma proprietária.

A Real Software lançou recentemente

o Realbasic [5], uma ferramenta comer-

cial que abre projetos VB e permite aos

usuários rodar esses programas tanto

no Linux quanto no Mac OS X, além do

próprio Windows.

Mas o modelo de licença do Realbasic

é bastante estranho. Além de adquirir o

programa, o direito de atualizar o soft-

ware é vendido separadamente, por um

período de tempo determinado. Após

esse tempo ainda é possível usar o pro-

grama, mas não atualizá-lo. No entanto,

como a Real Software promete lançar

uma nova versão a cada 90 dias, usu-

ários licenciados podem esperar novos

recursos em intervalos fixos.

A versão Standard Edition para Linux é

gratuita. Já a Professional Version custa 330

euros (US$ 399,95), incluindo seis meses de

atualizações. Outros tipos de licença estão

disponíveis. A tabela 1 contém as principais

diferenças entre as duas versões.

Um recurso útil da versão Professional

para Linux é que ela pode criar programas

para qualquer versão do Windows, do 95

até o XP. E os programas criados não exi-

gem nenhum arquivo DLL adicional. No

Linux, os programas gerados se resumem

a um único arquivo executável. A versão

Standard também produz binários para

teste em Windows e Mac OS, mas são

apenas demonstrações, já que o runtime

funciona por apenas cinco minutos.

InstalaçãoOs pacotes são bem simples de instalar.

Há RPMs específicos para distribuições

voltadas para estações de trabalho cor-

porativas (como o Red Hat Desktop e o

Novell Desktop), mas o programa tam-

bém está disponível em TGZ. Ambas as

versões funcionam perfeitamente em

qualquer distribuição recente. A boa

documentação (em PDF) foi incluída

no pacote e está também disponível

no site da empresa.

Quando executado pela primeira

vez, o programa pede seu nome e um

endereço de email, antes de baixar

uma chave de licença.

Uma atualização da versão Standard

para Professional requer apenas uma

chave diferente, que destrava os recur-

sos bloqueados. Não há necessidade

de se reinstalar do zero.

Tabela 1: Versões Standard e ProfessionalStandard Professional

Cria programas Linux (x86) + +Cria programas Linux, Mac OS e Windows - +Converte e importa projetos Visual Basic + +Banco de dados integrado (instância única) + +Acesso a bancos de dados externos (Access, PostgreSQL, MySQL e ODBC) - +Suporte a SSL - +

Programação

78www.linuxmagazine.com.br

março 2006 edição 18

Realbasic

http://supertuxbr.blogspot.com

InterfaceA interface do Realbasic se assemelha

à da maioria dos outros ambientes de

desenvolvimento (figura 1), e programa-

dores migrando do Visual Basic vão se

familiarizar rápido, como se estivessem

usando qualquer IDE (Integrated Develop-

ment Environment) consagrado. O editor

possui destaque de sintaxe, complemen-

tação automática de palavras, variáveis

e métodos. Ele também possui o recurso

de esconder ou mostrar longos blocos de

código para ajudar no monitoramento de

grandes projetos.

O editor de formulários fornece wid-

gets para todas as três plataformas com-

patíveis. Também possui elementos OLE

(Object Linking and Embedding) para

que os desenvolvedores possam embu-

tir objetos do Microsoft Word ou Excel,

por exemplo. Obviamente, isso não vai

funcionar no Linux, mas o recurso é

mostrado assim mesmo na caixa de fer-

ramentas da versão para Linux.

Posicionar e alinhar elementos gráfi-

cos é bem fácil, devido a uma grade que

mostra uma linha verde com os limites

de outros objetos, além de possuir um

recurso de “grudar” (snapping) quando

algum elemento se encontra a 90 graus

de um objeto de referência (figura 2).

Portando códigoVocê deve estar se perguntando como

os projetos criados no Visual Basic se

comportam no Realbasic. Isso funciona

de maneira relativa. O site da

Real Software fornece instru-

ções (em inglês) para desen-

volvedores de Visual Basic [6]

apontando os pontos delicados

desse procedimento.

Embora seja bem fácil modi-

ficar as palavras-chave que são

usadas de maneira sutilmente

diversa no Realbasic ou os ti-

pos de dados diferentes (tabela

2), a rotina de importação do

Realbasic provavelmente vai fa-

lhar se o código contiver muitos

Tabela 2: Tipos de dadosDados Visual Basic RealbasicInteiro16-bit Integer Não compatível, usa

inteiro 32-bitInteiro 32-bit Long IntegerNúmero de ponto flutuante de 4 bytes Single SingleNúmero de ponto flutuante de 8 bytes Double DoubleCadeia de caracteres String StringNumero de ponto decimal fixo com 8 bytes Currency Memory BlockInteiro 8-bit Byte Memory BlockBooleano Boolean BooleanColor Não compatível ColorVariant Variant VariantObject Object Object

Figura 1: O Realbasic é fácil de usar e oferece um rico conjunto de recursos.

www.linuxmagazine.com.br

março 2006 edição 18 79

Realbasic Programação

http://supertuxbr.blogspot.com

componentes ActiveX ou controles exó-

ticos demais. A documentação descre-

ve essas funções, dando a chance de

você analisar as condições de como

o código é importado, antes de se de-

cidir pela compra. Por exemplo, no

Realbasic, o ListBox é o equivalente do

popular Flex Grid do Visual Basic.

A Real Software oferece uma ferra-

menta de conversão [7] (figura 3) para

ajudar programadores a converter

arquivos de projetos do Visual Basic,

módulos e formulários para o formato

Realbasic (baseado em XML). Mas,

infelizmente, essa ferramenta só roda

no Windows. O programa detecta e

remove erros de sintaxe durante esse

processo. Uma falha que detectamos

é um erro causado quando

controles de etiqueta pos-

suem caracteres incomuns.

Os nomes saem truncados na

primeira ocorrência desses

caracteres.

O conversor registra todos

os problemas que encontra,

com possíveis soluções, em

um arquivo HTML (figura

4). E o novo código contém

comentários com dicas para

otimizar os resultados.

Banco de dadosA versão Standard usa apenas um banco

de dados interno baseado no SQLite. Já

a Professional tem plugins que permi-

tem o acesso a bases de dados MySQL,

MS SQL e MS Access. Para permitir que

mais interfaces de conexão sejam de-

senvolvidas, a Real Software fornece

um kit de desenvolvimento de plugins

gratuito [8]. Como esses bancos de dados

usam linguagem SQL padrão, aplicações

desenvolvidas com o sistema interno

também devem funcionar com os outros

bancos de dados.

Quem estiver migrando do Visual

Basic para o Realbasic não precisa se

preocupar com as diferenças entre os

“dialetos” SQL. O programa de conversão

cuida disso. O Realbasic também usa

uma técnica diferente de integrar contro-

les de bancos de dados, mas o conversor

também trata disso sozinho.

ConclusãoProgramadores vão precisar de pouco

esforço para portar programas feitos

em Visual Basic para o Linux. Con-

tudo, é necessário o Windows para

rodar o conversor. Se o programa não

depende excessivamente de controles

ActiveX, controles próprios ou contro-

les da caixa de ferramentas, é possível

migrar o projeto com poucas mudanças

no código original. E os programas

vão poder rodar em Linux, Windows,

Mac OS X e até no Mac OS Classic. A

documentação bem feita ajuda muito

também nessa transição. ■

Sobr

e o

auto

r

Frank Wieduwilt estudou História e vem trabalhando há alguns anos como autor técnico freelancer para edi-toras na Alemanha, escrevendo manu-ais de soluções de bancos de dados. Frank é colaborador regular da Linux Magazine, especializado em assuntos SOHO, como programas gráficos e de escritório.

Informações[1] Gambas: gambas.sourceforge.net

[2] HBasic: hbasic.sourceforge.net

[3] WXBasic: wxbasic.sourceforge.net

[4] KBasic: www.kbasic.org

[5] Realbasic: www.realbasic.com

[6] Instruções para programadores de Visual Basic: www.realbasic.com/support/whitepapers/portingvisualbasic/

[7] Conversor Visual Basic: highspeed.realsoftware.com/REALbasic55/VBPC.zip

[8] Kit de desenvolvimento de plugins: highspeed.realsoftware.com/REALbasic2005r4/PluginsSDK.zip

Figura 3: O conversor de Visual Basic transforma projetos para o formato Realbasic, mas apenas no Windows.

Figura 4: O conversor registra problemas e suas possíveis soluções em um arquivo HTML.

Figura 2: Uma espécie de grade indica o limite de outros objetos e ajuda a posicionar elementos gráficos.

Programação

80

Realbasic

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

CD do Assinante: Asterisk@home ............. 82O Asterisk com interface gráfi ca.

Iniciar decolagem .................................... 84Instalação fácil de programas com o Klik.

Luzes, câmera, ação! ................................ 88Como copiar e rodar fi lmes para o Sony PSP.

Lógica numérica ....................................... 91A febre do jogo Sudoku chega ao Linux.

Esta é uma seção especial dedicada a destacar programas úteis e interessantes para ajudá-lo

no seu trabalho diário com o Linux no desktop. Aqui você encontrará informações sobre como

utilizar programas comuns de forma mais efi ciente, obterá um valioso embasamento

técnico e conhecerá as últimas novidades em software para seu sistema operacional favorito.

Bem-vindo à Linux User!

http://supertuxbr.blogspot.com

O Asterisk@Home é a ferramenta ideal para quem está se iniciando no mundo da telefonia IP. Saiba como dar os primeiros passos.Por Denis Galvão

PBX VoIP mais fácil

Asteriskdoméstico

“C anivete Suíço”. Esse é o codino-

me do Asterisk [1]. Como toda

ferramenta do tipo, ele pos-

sui seus acessórios e apetrechos. Já o

Asterisk@Home [2] pode ser considerado

como a união de todos esses acessórios,

em um único lugar. Ou melhor, em uma

única distribuição, baseada no CentOS 4

(na versão 2.5 do Asterisk@Home).

Essa solução funciona como a porta

de entrada de todo “fuçador” que quer

começar a desfrutar das incontáveis pos-

sibilidades do Asterisk. Por isso o nome

Asterisk@Home (“Asterisk em casa”). Essa

característica deve-se ao fato de o processo

de instalação ser bem semelhante ao NNF

(Next, Next, Finish) da Microsoft.

Hoje, o projeto está bem maduro e, em

alguns casos, pode até ser aplicado em

pequenas implementações, voltadas para

usuários domésticos ou pequenas empre-

sas (o tal mercado SOHO - Small Office

Home Office). Este artigo pretende trazer

uma visão geral da instalação e configu-

ração do Asterisk@Home 2.5, presente

no CD do assinante desta edição.

RequisitosA máquina ideal para uma implementa-

ção doméstica ou em pequenas redes (de

até 10 ramais IP), com uma interface de

telefonia opcional – caso o PBX precise

ser conectado à PSTN (Public Switch Tele-

phny Network - rede de telefonia pública),

pode ser similar a esta: Pentium III, com

128 MB de RAM, 10 GB e, opcionalmen-

te, Placa Digium TDM01B (é possível

acrescentar módulos adicionais nessa

placa) com um 1 canal FXO.

InstalaçãoInsira o CD do Asterisk@Home e reinicie

o computador. Quando aparecer a men-

sagem “boot:”, tecle [Enter] para iniciar

a instalação da distribuição. Cuidado:

o instalador irá formatar todo o disco

sem aviso prévio. Aguarde a instalação

de todos os pacotes e a posterior reini-

cialização do sistema.

Após a reinicialização, serão com-

pilados todos os pacotes do Asterisk

e afins... Depois disso, haverá ainda

mais um reboot. Então serão realizadas

mais algumas configurações adicionais

e pronto! Seu Asterisk@Home está

prontinho para ser configurado.

ConfiguraçãoEfetue o login no sistema como root:

login: root

Password: password

Quadro 1 - Dicas do Asterisk P 1. O Asterisk, assim como qualquer

software que trabalhe com coders e decoders, utiliza muito E/S de CPU. Então, prefira máquinas com mais capacidade de processa-mento do que memória RAM.

P 2. Procure utilizar uma interface de rede de boa qualidade para implementações VoIP. Todo o tráfego de voz ficará a cargo dela. Esqueça coisas do tipo rtl8139...

P 3. Máquinas com menos dispositivos onboard são preferíveis, pois o compartilha-

mento de IRQs pode se revelar um caos se você utilizar interfaces de telefonia (como a placa Digium citada).

P 4. A base de toda a interface web é o AMP (Asterisk Management Portal), que traz todos os recursos de administração de um pequeno PBX. É através dela que configuramos ramais, troncos, rotas, usuários etc.

P 5. O Asterisk@Home Handbook [3], traz toda a documentação (em inglês) de instala-ção, configuração e utilização desse sistema. Não deixe de baixar e estudar!

Figura 1: A tela inicial do Asterisk@Home. O sistema é administrado por interface web.

LinuxUser

82

CD do Assinante

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

É preciso configurar a rede digitando o

comando netconfig. Entre com os dados

de sua rede e salve as configurações. Em

seguida, digite service network res-

tart para ativar as novas definições de

rede. Acesse o IP que você especificou

nas configurações de rede (utilizando o

seu browser preferido). A tela inicial do

Asterisk@Home deve aparecer (figura 1).

ConexãoAgora acesse o seu IPBX (Intranet Private

Branch eXchange, ou PBX VoIP)como

root e execute o seguinte comando (so-

mente se a placa FXO não estava pre-

sente durante a instalação do sistema):

genzaptelconf -s -d.

Isso irá criar os arquivos /etc/zaptel.

conf e /etc/asterisk/zapata-auto.

conf com as configurações da sua placa

FXO e os respectivos canais. Para reali-

zar chamadas, será preciso configurar o

tronco (Interface FXO) e uma rota de sa-

ída que irá encaminhar as chamadas por

esse tronco. Para isso, escolha a opção

Asterisk Management Portal (AMP).

Clique em Setup e, em seguida, em

Trunks. Edite o tronco, já criado, Zap/g0

e altere o parâmetro Zap Identifier (para

Zap Identifier = g0). Provavelmente

ele já vai estar configurado corretamente,

mas vale a pena verificar. Agora é neces-

sário criar uma rota para esse tronco. O

Asterisk@Home já traz uma rota padrão

pronta para ser usada. Acesse o link Ou-

tbound Routing e veja a rota 9_outside.

Em Dial Patterns, é preciso verificar a

existência da entrada 9|X.

Esse padrão de chamada significa

que todas as ligações que começarem

com “9” serão encaminhadas para o

tronco Zap/g0 (já criado pelo sistema e

verificado acima). Porém, essa rota irá

remover (“|”) o dígito “9” e então irá

encaminhar a chamada para o destino

final. Conecte a sua linha telefônica

na placa FXO e pronto, já temos uma

conexão para o mundo!

RamaisChegou a hora de configurar alguns

ramais e começar a desfrutar desse pe-

queno IPBX doméstico. Acesse o link

Asterisk Management Portal (AMP) na

opção Setup. Clique em Extensions para

criar um ramal SIP:

Extension Number = 100 (número do U

ramal)

secret = 100 (senha do ramal)

É possível habilitar a secretária eletrô-

nica (voicemail) e o diretório para esse

ramal. Basta escolher enable na respec-

tiva combinação. A partir desse ponto,

já podemos configurar um dispositivo IP

para se registrar no Asterisk@Home.

MonitoramentoÉ possível monitorar os ramais, salas

de conferência e a utilização de troncos

através do link Flash Operator Panel. O

FOP, como é conhecido na comunidade,

foi desenvolvido por um conterrâneo de

Maradona e é distribuído livremente,

porém, somente na forma compilada.

Quem quiser o código fonte terá que

pagar alguns pesos...

Outro recurso interessante do

Asterisk@Home é a integração com

o excelente software do tipo CRM

(Customer Relationship Manager) Su-

gar CRM (figura 2).

O Asterisk – e por conseqüência o

Asterisk@Home – também gerencia

salas de conferências. É possível pro-

teger salas por senha e banir ou deixar

mudos alguns dos participantes, por

exemplo. Há uma interface web para

isso: o WebMeetMe Control.

ConclusãoO Asterisk@Home é a opção ideal para

iniciantes e curiosos que querem expe-

rimentar um pouco mais sobre o mundo

da telefonia IP. Já para quem procura

uma solução para média ou grande rede

de telecomunicações, é recomendável

que se utilize uma ferramenta (que tam-

bém pode ser baseada no Asterisk) mais

robusta e com mais opções de configu-

ração e escalabilidade. ■

Sobr

e o

auto

r

Denis Galvão é o respon-sável técnico pelo desen-volvimento do PBX VoIP da iSolve e pelas soluções de telecom da empresa. Fundador da Asterisk-Brasil.org, dedica parte do seu tempo ao Software Livre. Pode ser encontrado através do email [email protected].

Informações[1] Asterisk: www.asterisk.org

[2] Asterisk@Home: asteriskathome.sourceforge.net

[3] Asterisk@Home Handbook: asteriskathome.sourceforge.net/ handbook

Figura 2: O Asterisk@Home se integra ao CRM (Customer Relationship Manager) Sugar CRM.

Figura 3: Dentro do AMP é possível acessar os relatórios de estatísticas do IPBX.

www.linuxmagazine.com.br

março 2006 edição 18 83

CD do assinante LinuxUser

http://supertuxbr.blogspot.com

O Klik cria uma maneira fácil e rápida de se instalar programas. Tudo pode ser feito em apenas dois cliques.

Por Tim Schürmann

Instalação fácil com o Klik

Iniciardecolagem

D istribuições que rodam direto do

CD ajudam a atrair novos usuá-

rios de Linux e são muito úteis

na hora de reparar uma instalação. Mas,

freqüentemente, uma ferramenta que

você precisa não está no sistema; e ten-

tar instalá-la pode ser uma experiência

frustrante. Dependências mal resolvidas,

bibliotecas ausentes, sistema de arquivos

com acesso somente leitura... Mesmo que

essa instalação seja concluída, ela pode

se revelar bastante instável. Outro mo-

mento incômodo, principalmente para

novos usuários, acontece quando se quer

testar um programa, sem arriscar uma

instalação global.

O projeto Klik [1] resolve essas ques-

tões. O nome vem de KDE-based Live

Installer for Knoppix+Kanotix mas, hoje,

não é um sistema apenas para KDE –

também roda no Gnome. Basicamente,

seus criadores adotaram o conceito de

empacotamento da Apple, em que um

pacote nada mais é que um arquivo

compactado com todas as bibliotecas e

programas necessários para se rodar o

programa. Esse arquivo funciona como

um executável. Para “instalá-lo”, basta

copiá-lo para o desktop e pronto! Já é

possível rodá-lo.

As complexas etapas envolvidas nesse

processo são invisíveis para o usuário

(figura 1). Não há necessidade de longas

instalações ou de se espalhar itens por

todo o sistema de arquivos. Por isso, é

possível até instalar duas versões dife-

rentes do mesmo aplicativo. O sistema

Linux básico permanece intocado. Por

isso, é possível gravar programas em

chaveiros USB, por exemplo, para exe-

cutá-los a partir de um Live CD.

KernelPara rodar o Klik, são necessárias al-

gumas “preparações” na distribuição.

Algumas já vêm prontas para o Klik.

Por exemplo, o Suse 10, distribuições

modernas baseadas no Debian e o Kno-

ppix, além de seus derivados (afinal, foi

o Knoppix que deu origem ao desenvol-

vimento do Klik). Leia mais no quadro

1: “Distribuições compatíveis”.

Se a sua distribuição não é diretamen-

te compatível, o requerimento mínimo

é que o kernel tenha suporte ao sistema

de arquivos Cram-

fs. No código fonte

do kernel, ele está

normalmente dis-

ponível na forma

de um módulo

– mas é possível

compilar o kernel

com esse recurso

embutido “estaticamente”. O mesmo vale

para o recurso de loop necessário para

a montagem dos arquivos.

ClienteDepois de concluir a instalação de algum

requisito do Klik em sua distribuição,

digite na linha de comando wget klik.

atekon.de/client/install -O - | sh.

Isso vai baixar um script que instala o

cliente. O procedimento precisa ser feito

na conta de cada usuário do sistema em

questão. Se você não for o usuário root,

precisará também digitar os comandos:

su

sh klik-cmg-install-root

Isso acrescenta algumas linhas ao

/etc/fstab, necessárias ao Klik. Se tudo

correr bem, uma janela vai informar que

você já pode começar a instalar pacotes

Klik. Em seguida, o Konqueror abre na

Quadro 1: Distribuições compatíveisAs seguintes distribuições são plenamente compatíveis com o Klik: Suse Linux 10 (incluindo o OpenSuse), Debian, Linspire, Ubuntu, Kubuntu, Ka-notix e Knoppix. O Fedora Core 4 será compatível em breve. Já Gentoo e Mandriva não possuem suporte ao Cramfs no kernel, por isso não rodam instalações Klik.

As versões atuais do Knoppix, Kanotix, a versão Slick do OpenSuse [2] e o CPX-MINI já incluem o cliente Klik.

LinuxUser

84

Klik

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

página do Klik, que contém diversas instruções (recipes) para

pacotes Klik. Mas usar o Konqueror não é um pré-requisito

(leia mais no quadro 2 : “Outros navegadores”).

Klik em mim!O site do projeto contém um catálogo que lista qual URL corres-

ponde a qual programa. Mais de 4.000 aplicativos estão disponí-

veis. Clicar em um link inicia um download do tipo Klik.

Se surgir uma mensagem de erro do tipo “Error while trying

to run program” (falha durante a execução do programa), é

provável que tenha acontecido algum problema na rede: ou

a conexão com a Internet caiu ou o servidor Klik pode estar

temporariamente fora do ar. Levando em conta os tópicos do

fórum Knoppix [3], isso parece ser algo freqüente. Se estiver

interessado em criar seu próprio servidor Klik leia o quadro

3 : “Criando um servidor Klik”.

FuncionamentoCom exceção das inserções no arquivo /etc/fstab, nenhum

dos processos de instalação requer privilégios de adminis-

tração. O script afeta só o diretório home do usuário atu-

al. A instalação do Klik pode até passar despercebida, sem

um olhar atento. Há apenas dois pequenos scripts (ocultos):

.klik e .zAppRun. As outras mudanças afetam arquivos de

configuração do KDE. Por exemplo, surgirá o item Applica-

tions (installed by klik) no menu do KDE. A tabela 1 lista os

arquivos modificados.

É por isso que o Klik não precisa de uma interface gráfica.

Quando um script é iniciado, ele requisita o programa ao ser-

vidor. Se o programa existir, chega um outro script, chamado

de instrução (recipe). Ela contém detalhes sobre onde estão

as versões binárias do programa requerido e as bibliotecas

Figura 1: A arquitetura Klik: quando um link do tipo klik:// (1a) é digitado no navegador, o cliente contata o servidor Klik (2). O servidor envia um script, chamado de instrução (3), que o cliente usa para criar um AppDir (4). O diretório é então empacotado, comprimido (5) e, finalmente, montado pelo script .zAppRun (6).

Client kontaktiert

Server

User clicks ona klik:// link

User clicks ona klik:// link

O usuário baixa umpacote Klik já pronto

Essa imagem, então,é montada e executadapelo script .zAppRun

O usuário acessaum link tipoklik://programa

O servidor Kliké contatado

O servidor cria eenvia um scriptcontendo instruções

O cliente cria um pacoteseguindo as instruções

Imagem compactada

AppdirWrapper

/usr

/bin

/etc

...

1a. 1b.

2.

3.

4.

5.

6.

Quadro 2: Outros navegadoresO Klik também é compatível com alguns outros navegadores: o Mozilla, o Firefox e o Opera são automaticamente configurados pelo script de instalação. No caso de outros navegadores (ou se houver problemas com esses citados), será preciso registrar o protocolo Klik.

A maioria dos navegadores possui uma opção para se fazer isso. No Ope-ra, por exemplo, isso está no menu Preferences... | Advanced | Programs. Após criar um novo protocolo, associe a ele o programa .klik de seu diretório home.

Quadro 3: Criando um servidor KlikO cliente Klik, por padrão, baixa os programas do servidor Klik. Mas pode ser uma boa idéia criar seu próprio servidor, no caso de intranets, para garantir que os usuários baixem programas de uma lista pré-definida.

Para apontar o cliente Klik para determinado servidor, procure pela linha do script de instalação que chama o programa wget, para pegar as ins-truções (recipes). Mude essa linha para que seu servidor seja listado. Não esqueça de verificar se os pacotes estão disponíveis no servidor local.

www.linuxmagazine.com.br

março 2006 edição 18 85

Klik LinuxUser

http://supertuxbr.blogspot.com

necessárias, além de conter instruções

sobre como construir esse pacote con-

tendo tudo o que for necessário para a

distribuição Linux em questão.

Essa receita também consegue resolver

dependências. O produto final é um “pa-

cotão” compactado de arquivos. Há exem-

plos desses pacotes em [4] e [5]. Todas as

bibliotecas e componentes necessários

para o programa rodar estão incluídos.

O programa consegue isso “contrabande-

ando” esses itens adicionais para dentro

do pacote. Por isso, é possível ter e rodar

pacificamente duas versões diferentes de

um mesmo programa.

Como você já deve ter entendido, esses

pacotes não estão prontos para serem

baixados. Eles são construídos automa-

ticamente, de acordo com a requisição

dos usuários e da distribuição utilizada.

Isso não apenas economiza espaço nos

servidores Klik como também deixa os

desenvolvedores originais com o contro-

le final sobre seus programas. Mas há um

porém. Gerar pacotes com binários de

programas grandes, a partir de pacotes

binários originais, é uma tarefa bastante

complexa. Por exemplo, a distribuição

Suse usa pacotes RPM. No caso de al-

gum pacote Debian também entrar num

pacote Klik para o Suse, isso significa

que ele terá de ser convertido.

E cada distribuição possui seu pró-

prio “ambiente”. Por isso, as instruções

podem acabar gerando pacotes imper-

feitos para algumas distribuições, no

caso de combinações de pacotes de

outras distribuições. É por isso que

há uma área do Klik para agregados

montados artesanalmente, que rodam

em todas as distribuições compatíveis.

Há até uma lista de agregados especi-

ficamente para Suse [6], embora essa

área esteja sem atualizações já há al-

gum tempo.

Nesse contexto, pode ocorrer outro

problema. Como a maioria das 4.000

instruções Klik foram geradas por pro-

gramas, muitas delas resultam em erros

em determinadas situações. Quando isso

ocorre, surge a mensagem “This package

contains no application. klik can't han-

dle it” (Este pacote não contém nenhum

aplicativo. O Klik não pode manipulá-

lo). Mas, aos poucos, os responsáveis

pelos servidores Klik estão removendo

as instruções problemáticas.

EstruturaPara entendermos o que acontece quan-

do você inicia um aplicativo Klik, va-

mos dar uma olhada na estrutura do

pacote agregado. Ele contém um siste-

ma de arquivos compactado com todos

os diretórios de programas e arquivos.

Os sistemas de arquivos usados são o

Cramfs ou o Zisofs. A figura 2 resume a

estrutura: o construtor primeiro coleta

todos os arquivos e bibliotecas neces-

sárias em um único diretório, chamado

de AppDir (diretório do aplicativo). Um

script especial, chamado de wrapper, fica

na raiz de cada AppDir.

Quando um usuário clica no AppDir,

o sistema operacional não muda para

o subdiretório. Ao invés disso, ele ini-

cia o script wrapper. Como diretórios

são bem complexos de se distribuir, o

empacotador freqüentemente apenas

acrescenta um AppDir para um paco-

te agregado conhecido, que pode ser

uma arquivo .zip ou, no caso do Klik,

uma imagem de sistema de arquivos.

Na verdade, não há diferença entre

o AppDir e o pacote agregado. Fora

do Linux, esses termos podem signi-

ficar coisas diferentes. A Apple, por

exemplo, chama esse tipo de pacote

de AppFolder.

O script .klik monta a imagem em

/temp/app/1. Se você clicar no agregado

via Konqueror, é possível acessar o con-

teúdo do arquivo. Se mais de uma ins-

tância do aplicativo for iniciada, o Klik

Quadro 4: Execução diretaO script .klik (executado com o protocolo klik://programa) sempre cria um pacote com o sufixo .cmg e, então, inicia o programa ali contido. Contudo, isso não é preciso caso o agregado já esteja em seu desktop.

Nesse caso, basta rodar o script .zAppRun passando o nome do programa como parâmetro. Isso é o que acontece quando se clica duas vezes no arquivo .cmg no KDE. Se preferir, use o programa Binfmt para registrar agregados como arquivos executáveis normais:

mount -t binfmt_misc none /proc/sys/fs/binfmt_miscecho ':CMG:E::cmg::/pfad/zu/.zAppRun:' > /proc/sys/fs/binfmt_misc/register

Tabela 1: Arquivos criados ou modificados pelo KlikArquivo Função/home/usuario/.klik Cliente Klik criado na instalação/home/usuario/.zAppRun Executa pacotes .cmg/home/usuario/.kde/share/services/klik.protocol klik:// protocol/home/usuario/.kde/share/applnk/klik/klik.desktop klik:// protocol/home/usuario/.kde/share/applnk/klik/.directory Entrada no menu KDE/home/usuario/.kde/share/mimelnk/all/cmg.desktop MIME Type para .cmg/home/usuario/.kde/share/applnk/.hidden/AppRun.

desktopAssocia o Klik a arquivos .cmg

/etc/fstab Entradas adicionais para a montagem dos arquivos .cmg

LinuxUser

86

Klik

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

associa um outro número serial para a

montagem no diretório temporário. Por

exemplo, /temp/app/2.

Para permitir que usuários acessem

isso, o arquivo precisa ter pontos de

montagem no /etc/fstab. O script

de instalação do Klik já cria isso auto-

maticamente. Se necessário, é possível

descompactar o agregado usando o co-

mando /sbin/fsck.cramfs -x prog

prog.cmg. Então é possível iniciar o

script wrapper com cd prog; ./wrapper.

Incidentalmente, isso significa que você

pode modificar o pacote e empacotá-lo

novamente com o comando /sbin/fsck.

cramfs prog/ prog.cmg.

Oito vezesO kernel Linux restringe o número de

dispositivos de loop que podem estar

montados simultaneamente. Como essa

é a técnica usada para montar os agre-

gados no diretório temporário, não é

possível iniciar mais do que oito apli-

cativos Klik ao mesmo tempo. Embora

seja possível aumentar esse valor (para

64 nesse exemplo) com a opção de boot

linux max_loop=64, ou uma entrada

options loop max_loop=64 no arqui-

vo /etc/modules.conf, é difícil rodar

um sistema produtivo todo baseado em

pacotes Klik.

Diretórios do tipo AppDir só podem

abrigar programas de comportamento

“exemplar”. Por exemplo, se um aplica-

tivo espalhar arquivos de configuração

por dezenas de diretórios do sistema,

isso vai gerar problemas. Além disso,

não há garantias de que nunca haverá

mesmo conflito de versões de um mesmo

programa. Como o Klik monta os agre-

gados no sistema de arquivos (em /tmp),

conflitos podem ocorrer, de acordo com

a complexidade das dependências dos

programas em questão.

ConclusãoO Klik é uma solução elegante e de es-

trutura simples, mesmo em sua parte

“oculta”. O programa facilita muito a

instalação e a distribuição de pacotes.

Essa também é uma tecnologia bastante

útil para desenvolvedores (leia mais no

quadro 5: “Desenvolvedores”), já que ela

permite que duas versões de um mesmo

programa estejam instaladas.

Programas empacotados com o Klik

nem tocam no sistema básico Linux

durante a instalação. Remover esses

aplicativos é tão simples quanto apagar

um único arquivo. Em conjunto com

chaveiros USB e distribuições Live, essa

solução também é muito útil para se

usar programas extras, ausentes no Live

CD. Mas essa ainda não é uma forma

de gerenciar instalações que cobre todo

tipo de necessidade. A restrição a oito

aplicativos simultâneos e a ausência de

um mecanismo de atualização automá-

tica impede que o Klik substitua os tra-

dicionais gerenciadores de pacotes das

distribuições Linux. ■

Informações[1] Klik: klik.atekon.de

[2] Klik no Slick: www.opensuse.org/SUPER_KLIK

[3] Seção Klik no fórum do Knoppix: www.knoppix.net/forum/viewforum.php?f=17

[4] Instrução Klik para o Scribus: http://klik.atekon.de/ scribus.recipe.example

[5] Exemplo de instrução, com comentários: klik.atekon.de/architecture/recipe.php

[6] Pacotes prontos para Suse 10: opensuse.linux.co.nz/klik/10.0/

[7] Informações para desenvolvedores: klik.atekon.de/docs/?page=A%20note %20to%20application%20developers

O a

utor

Tim Schürmann estudou Ciências da Com-putação na Universidade de Dortmund, no oeste da Alemanha. Ele trabalha com Engenharia de Tráfego Assistida por Com-putador e escreve diversos artigos sobre Linux e Software Livre, principalmente aplicativos de escritório.

Quadro 5: DesenvolvedoresProgramadores interessados em criar pacotes Klik devem seguir as regras abaixo:

P Evitar referências a caminhos (paths) abso-lutos.

P O ideal é trabalhar apenas com pacotes .deb, .rpm e .tar.gz/.tgz.

P Considere o uso de bibliotecas antigas.

P Evite, se possível, a biblioteca Libstdc++.so.6 e o GCC 4.

Para distribuir seu programa pelo servidor Klik, desde que seguidas essas regras, basta conta-tar o líder do projeto, “probono”. Mais detalhes sobre isso podem ser encontrados em [7].

Figura 2: Cada agregado contém um sistema de arquivos Linux com um wrapper no topo. O diretório com os arquivos é chamado de AppDir, que é compactado. Como mostra a figura, não há problema em haver diversos agregados em um mesmo diretório.

Sistema(apenas leitura)

Imagem compactada Imagem compactada

...

Appdir Appdir

Diretório Home ou outro qualquer

/usr

/bin

/etc

...

/sbin Wrapper

/usr

/bin

/etc

...

Wrapper

/usr

/bin

/etc

...

www.linuxmagazine.com.br

março 2006 edição 18 87

Klik LinuxUser

http://supertuxbr.blogspot.com

O PSP (PlayStation Portable) não serve só para jogar. Isso não é novidade. Mas você sabe como converter arquivos .avi comuns para rodá-los no aparelho?

Por Kristian Kissling

D esde o lançamento, centenas de milhares de pessoas

já compraram o PSP, o console de videogame portátil

da Sony. Um dos motivos do aparelho estar fazendo

sucesso é a possibilidade de saídas “criativas” para rodar

jogos e outros conteúdos. Por exemplo, filmes podem ser

convertidos para o formato especial do PSP e transferidos

para o aparelho, via Linux, inclusive.

No caso de arquivos grandes e de alta qualidade, esse

truque só é possível com outro produto da Sony, o Memory

Stick Pro, cartão de memória da Sony com capacidade de

até dois GigaBytes, mais que suficiente para armazenar

um filme completo. É necessário ainda uma versão antiga

do firmware (abaixo de 2.0.1), além do programa Ffmpeg

para converter o arquivo.

Uma boa descrição das versões de firmware do PSP,

além de links para aplicativos relacionados, está em [1].

O artigo está em inglês. Em português, é possível achar

conteúdo similar buscando-se com as palavras-chave

“psp”, “downgrade” e “firmware”.

O link [2] explica como fazer o downgrade no firmware,

também em inglês. Até o momento, isso só é possível nos

aparelhos com firmware 2.0, 1.5 e 1.0. A partir da versão 2.0.1

(e nas versões 1.5x), isso não é possível.

Tome muito cuidado também com um arquivo de nome

Trojan.PSPBrick. Ele destrói completamente o sistema, ao

invés de instalar o antigo firmware. Como precaução, é bom

escanear o programa a ser instalado com um antivírus.

Fotos e músicasCertos tipos de conteúdos rodam no PSP oficialmente, sem ne-

nhum bloqueio. O manual do aparelho explica detalhadamente

como rodar fotos e músicas no PSP, com o cartão de memória.

Isso pode ser feito usando o Linux também. Para copiar

arquivos para o PSP, conecte o aparelho ao PC com um

cabo USB, abra um terminal e, como root, digite tail – f

/var/log/messages, para descobrir que arquivo de dispo-

sitivo corresponde ao PSP.

Figura 1: Depois de configurar a conexão USB entre o PSP e o Suse, uma janela vai mostrar os diretórios do Memory Stick.

LinuxUser

88

PSP

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Se não aparecer nenhum resultado,

é preciso ativar o modo de transferên-

cia USB no PSP. Para isso, aperte a

tecla HOME do aparelho, para acessar

o menu principal.

Desloque o cursor, pressionando a

tecla da seta esquerda para o ícone da

mala, à esquerda do menu, abaixo do

qual está a opção Settings.

Navegue com as setas até encontrar o

ícone USB-Connection. Pressione [x] no

lado direito para ativar o modo USB do

PSP. Experimente de novo o comando

tail e confira o resultado:

Feb 14 15:24:07

linux kernel: sda sda1

Isso indica que o Linux conecta o

PSP no dispositivo dev/sda1. O Suse,

por exemplo, abre automaticamente

uma janela do Konqueror que mostra

os arquivos do PSP (figura 1), da mes-

ma maneira que um chaveiro USB. No

Debian, é possível montar o PSP manu-

almente (como root) com os comandos

mkdir /mnt/psp e mount – t auto/dev/sda1

/mnt/psp.

Um novo aplicativo que facilita bas-

tante o uso do PSP no KDE é o KPSP

[3]. Basta digitar o protocolo psp:// no

Konqueror e pronto, está montado. Mas

vamos partir do princípio que precisa-

mos fazer tudo na mão.

Faça um teste copiando algumas fotos

do memory stick. Um detalhe importante

é que o PSP só reconhece fotos quando

elas estão no diretório apropriado, criados

a partir do Konqueror ou do terminal com

os comandos mkdir/ mnt/psp/PSP e mkdir/

mnt/psp/PSP/PHOTO.

Copie então suas fotos para o novo

diretório. É imprescindível que você es-

creva os nomes das pastas e dos arquivos

em letras maiúsculas – do contrário, o

PSP não vai reconhecer os arquivos.

As músicas são copiadas de modo se-

melhante. Também é necessário criar

um diretório específico com mkdir /mnt/

psp/PSP e mkdir /mnt/psp/PSP/MUSIC.

É possível ainda criar subdiretórios.

Por exemplo, para álbuns e artistas, no-

meando-os como Madonna, Salsa...

Ação!Para copiar e rodar um filme no PSP,

é necessária uma pequena prepara-

ção. Primeiro, os nomes dos diretórios

precisam, novamente, de convenções

especiais: crie na raiz do cartão de me-

mória do PSP um diretório com o nome

MP_ROOT. Depois crie um subdiretório

100MVN01. É aí onde o filme será copiado

mais tarde. Para que o arquivo rode no

PSP, ele precisa ter resolução, formato

e frame-rate específicos. ➟

www.linuxmagazine.com.br

março 2006 edição 18 89

PSP LinuxUser

http://supertuxbr.blogspot.com

Para isso, você vai precisar de uma

versão CVS (Concurrent Version System)

do programa Ffmpeg, que por sua vez

requer uma instalação do Faac.

Comece baixando o arquivo faac-

18102004.tar.gz em [4] e o des-

compacte com o comando tar xvfz

faac-18102004.tar.gz. Entre no di-

retório criado nesse processo e digite

chmod u+x bootstrap para modificar

as permissões do script bootstrap.

Ao rodar esse script com o comando

sh ./bootstrap, serão informados quais

arquivos estão faltando para a compila-

ção. Quando providenciar tudo, crie um

arquivo configure. Por fim, prossiga com

os próximos três passos-padrão para uma

compilação: ./configure, make e make

install, tudo como root. Depois de ins-

talar o Faac, baixe o Ffmpeg do CVS:

cvs z9 -d:pserver:anonymous@mplayerhqU

hu:/cvsroot/ffmpeg co ffmeg

Talvez você precise antes instalar o

programa cvs, através de seu gerenciador

de pacotes preferido. Mude para o subdi-

retório ffmeg e configure a compilação

com o comando ./configure --enable-

shared --enable-faac. Para encerrar

o processo de instalação, prossiga com

make e make install.

Agora é hora de pegar um arquivo .avi

e convertê-lo para o formato reconhecido

pelo PSP. Vamos usar o teste.avi:

ffmpeg -i teste.avi -f psp -r 14.985 -s U

320x240 -b 768 -ar 24000 -ab 32 U

M4V00001.MP4

Ele transforma o arquivo .avi em um

arquivo de nome M4V00001.MP4. Mas

o que significam esses parâmetros ci-

frados? O PSP só pode rodar em uma

resolução (-s) de no máximo 320x240

pixels e o bit-rate do vídeo (-b) não pode

ultrapassar 768 KBytes.

Caso você escolha outro frame-rate

(-r) ao invés de 14.985 (como no exem-

plo), a apresentação do filme poderá

mostrar problemas. Em alguns casos,

a freqüência de sampling do áudio

(-ar) suporta 24.000 Hz; e o bit-rate

do áudio (-ab), 32 KBytes.

Se o Ffmpeg reclamar que está faltan-

do alguma biblioteca, adicione (como

root) os caminhos /usr/lib e /usr/

local/lib ao arquivo de configuração

/etc/ld.so.conf. E rode o ldconfig

mais uma vez.Agora precisamos copiar o arqui-

vo para o PSP. Digite no terminal cp M4V00001.MP4 /mnt/psp/MP_ROOT/100MVN01 (letras sempre maiúsculas!). Note que o arquivo no PSP não terá nenhuma extensão.

Na interface do aparelho, escolha a opção Video no menu principal e aperte (x) duas vezes para rodar o filme. ■

Informações[1] Programas caseiros no PSP:

en.wikipedia.org/wiki/ PlayStation_Portable_homebrew

[2] Downgrade do PSP: www.hackaday.com/ entry/1234000687060851

[3] KPSP: tinyurl.com/8mmhq

[4] FAAC: www.audiocoding.com/modules/mydownloads

Figura 2: É possível assistir às palhaçadas dos Simpsons no PSP, desde que os nomes dos arquivos estejam em caixa-alta.

LinuxUser

90

PSP

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

O jogo Sudoku está se tornando as palavras cruzadas do século 21. Veja como começar a brincar com duas versões livres desse puzzle.Por Oliver Frommel

Quebra-cabeças no Linux

Lógicanumérica

S udoku é o jogo do ano. Não importa onde você esteja.

No metrô, no parque, em casa... Sempre encontrará

pessoas preenchendo quadradinhos com números. É

um fenômeno mundial que, aos poucos, também vai tomando

conta das grandes cidades brasileiras.

Se preferir uma versão econômica, pode fazer com que

seu computador Linux projete os quebra-cabeças para você

imprimir e poder jogar a qualquer momento. Um jogo “sem

fim” é garantido, já que um tradicional Sudoku de 9 X 9

fornece cerca de 6 x 10 elevado a 21 combinações diferentes

[1]. Seriam precisas várias encarnações para esgotar todas

as possibilidades. Hoje, muitos sites de jornais do mundo

disponibilizam puzzles de Sudoku na Internet. No final

deste artigo, há dois exemplos (fácil e avançado) para você

tentar resolver. Para saber mais sobre o Sudoku, confira o

verbete na Wikipedia [2].

LógicaO jogo é baseado em uma idéia muito simples. É preciso

preencher todos os quadradinhos em uma disposição 9 X 9,

de modo que os números entre 0 e 9 apareçam apenas uma

vez em cada linha, coluna e quadrados 3 X 3 (figura 1). Em

japonês, Sudoku significa algo como “números solteiros”.

Baseado nessas regras e em números existentes, o jogador

precisa restringir a escolha de inserções para um quadrado

vazio até que sobre apenas um candidato.

Não é preciso somar nem fazer nenhuma conta. Jogar Su-

doku é usar seu poder de dedução. Também ajuda muito ter

uma boa memória, já que alguns jogadores costumam anotar

as possíveis soluções ao lado de cada quadrado para mais

tarde se lembrar do que estavam planejando. ➟

Figura 1: O Gnome-Sudoku gera puzzles e dá dicas sobre como finalizá-los.

www.linuxmagazine.com.br

março 2006 edição 18 91

Sudoku LinuxUser

http://supertuxbr.blogspot.com

Há muitas estratégias para se resolver

um jogo. Por exemplo, faz sentido con-

siderar quais números estão faltando

em um quadrado 3 X 3 e, então, che-

car linhas e colunas que cruzam esse

quadrado para ver se estão disponíveis.

Em muitos casos, isso deixa apenas um

número como opção, que é então acres-

centado ao quadrado.

Ajuda do computadorClaro que esse tipo de lógica casa como

uma luva com computação. Fãs do Gno-

me vão preferir o Gnome-Sudoku [3],

escrito na linguagem Python. Ele pode

gerar puzzles com diferentes graus de

dificuldade e o usuário precisa apenas

ir colocando números diretamente em

uma janela do Gnome (figura 1).

É necessário pelo menos a versão 2.4

do Python para instalar esse jogo (ape-

nas as distribuições mais novas vêm

com essa versão). O jogo roda bem, em

princípio, mas contém muitos bugs. Eles

não chegam a travar a aplicação, mas

deixam o jogo mais lento.

O problema começa

quando você usa o desli-

zador para selecionar um

nível, de Easy até Hard.

Já que isso não causa

nenhum efeito visível, é

preferível checar a lista

na janela do programa

para começar um jogo de

acordo com seu nível.

Mas o Gnome Sudoku

tem pontos que compen-

sam, como um recurso

bem prático chamado

Tracker. Ele grava de-

terminado número de

movimentos e então re-

torna para uma posição

anterior específica com

um único clique. Tam-

bém há uma função de

desfazer (undo) que permite regredir

movimentos individuais.

O jogo também dá dicas. Ao passar

o mouse sobre um quadrado, aparece

uma lista com todas as possibilidades.

Mas esse recurso esconde um bug. Se

o cursor do mouse não estiver sobre

nenhum quadrado e você pedir uma

dica, surge uma mensagem de erro. Há

uma opção Resume Game (continuar

jogo) que permite continuar um puzzle

interrompido. A ajuda (em inglês) do

aplicativo contém uma introdução sobre

os princípios do Sudoku e explica como

usar o programa.

Conveniência com KO Sudoku para KDE se chama Ksudoku.

Além do código fonte (cuja compilação

exige bibliotecas KDE), há pacotes biná-

rios para Fedora e Debian na página do

projeto [4]. Após digitar ksudoku para

iniciar o jogo, surge uma janela como

a da figura 2.

O fato de o Ksudoku destacar linha,

coluna e a atual caixa 3 X 3 faz parte

da conveniência extra do programa, em

comparação com a versão para Gnome.

Há dois modos de adicionar um número

a um quadrado. Você pode selecionar um

na barra vertical da esquerda e depois

clicar em um quadrado ou, então, digitar

um número no teclado. Se a inserção for

inválida, o programa vai colorir o núme-

ro de vermelho e será preciso clicar com

o botão direito para removê-lo.

Um das funções mais práticas é a pos-

sibilidade de anotar potenciais candida-

tos para determinado quadrado. Para

isso, escolha um número com o menu

ou o teclado e clique com o botão direi-

to. O número fica gravado no quadrado

com uma fonte pequena. Embora não

haja limite de inserções, o programa só

pode mostrar quatro devido ao limite

de visualização.

Obtendo ajudaSe você clicar em Hint (dica), o Ksudoku

simplesmente preenche o quadrado atu-

al. Já a tecla [Shift] dá uma ajuda mais

sutil. São mostrados outros quadrados

em que o mesmo número poderia entrar

(figura 3). Essa é uma ajuda e tanto em

comparação com as versões em papel.

Por isso, se você quiser realmente saber

Figura 2: O Ksudoku exibe uma grade vazia no começo. Durante o jogo, ele destaca linha, coluna e caixa 3 X 3 atuais.

Figura 3: Ao pressionar [Shift], o Ksudoku mostra todos os quadrados que poderiam conter o número sob o cursor do mouse. Os outros quadrados ficam cor de rosa.

LinuxUser

92

Sudoku

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

o quanto é bom no jogo, evite a todo

custo essa “trapaça”.

Mas a ajuda do Ksudoku é extrema-

mente breve. Não há instruções para

o jogo ou para o programa. Há, porém,

uma versão em 3D (figura 4), que for-

nece a jogadores experientes uma nova

e interessante perspectiva.

Viciados em Sudoku tam-

bém podem experimentar

puzzles maiores com mais

de 9 X 9. Como números de

1 a 9 não seriam suficientes,

são usadas letras.

Além do Ksudoku e do

Gnome-Sudoku há outros

programas baseados no

jogo. Por exemplo, o Su-

doku-Solver [5] resolve jo-

gos nos quais até experts já

“pediram água”. Já o Sudoku-

Explainer [6] não traz sim-

plesmente uma solução. Ele

analisa um jogo e explica

como resolvê-lo. Mas exige

inserções no formato ASCII,

o que requer a digitação do

puzzle em um arquivo de texto.

ConclusãoSe você não abre mão de um progra-

ma Gnome, logicamente a opção é o

Gnome-Sudoku, mesmo com suas de-

ficiências menores. Mas o Ksudoku é

superior em muitos aspectos, desde os

destaques da linha, coluna e quadrado

atuais até as valiosas dicas quando o

jogo parece travar. ■

Figura 4: O modo 3D do Ksudoku tem as mesmas regras.

Sobr

e o

auto

r

Oliver Frommel foi programador e administrador de sistemas da Ars Electronica Center, em Linz (Áustria), por muitos anos. Após concluir seus estudos de Filosofia, Linguística e Ciência da Computação, se tornou editor da Bavarian Broadcasting Corporation. Hoje é editor do Centro de Competência de Software da Linux New Media AG.

Informações[1] A matemática do Sudoku (inglês):

web.inf.tu-dresden.de/~bf3/sudoku/sudoku.pdf

[2] Sudoku no Wikipedia: pt.wikipedia.org/wiki/Sudoku

[3] Gnome-Sudoku: gnome-sudoku.sourceforge.net

[4] Ksudoku: ksudoku.sourceforge.net

[5] Sudoku-Solver: www.katletz.at/katsudoku

[6] Sudoku-Explainer: sourceforge.net/projects/sudoku-sensei

AvançadoFácil

www.linuxmagazine.com.br

março 2006 edição 18 93

Sudoku LinuxUser

http://supertuxbr.blogspot.com

Ne

vra

x De

sign

Te

am

Bem-vindos a mais uma edição do Planeta GNU, sua fonte de informação de Software Livre, licenciamento, conhecimento livre e cultura. Por Christiano Anderson

Liberdade digital

O direitoà privacidade

E ste mês vamos falar sobre direitos

de privacidade e como a indústria

de software coleta e trabalha com a

informação individual de cada usuário.

Todos têm o direito à privacidade. Então,

devemos nos perguntar: até que ponto

você pode confi ar nas informações que

forneceu para algum serviço ou até mes-

mo para alguma empresa de software?

Electronic Frontier Foundation Como já foi citado algumas vezes nessa

coluna, a EFF ( Electronic Frontier Foun-

dation ) [1] é um grupo de pessoas de paz

– advogados, tecnólogos, voluntários e

visionários – trabalhando para prote-

ger a liberdade digital. Vivemos em um

mundo onde a briga pela informação é

constante e o poder está concentrado

naquelas empresas que detêm o maior

número de informações. A mídia e as

grandes redes de comunicação nem sem-

pre são confi áveis. Às vezes, acabam

omitindo informações para benefi ciar

seus anunciantes, políticos ou pessoas

que tenham algum tipo de poder (fi nan-

ceiro) sobre esses dados. Aqueles que

gostam de notícias imparciais acabam

procurando mídias alternativas, produ-

zidas por jornalistas independentes e

que são comprometidos com a verdade e

a imparcialidade. Um bom site indepen-

dente de notícias é o Indymedia [2] .

Isso nos leva a pensar no anonimato

como uma questão positiva. Sabe-se que

alguns jornalistas independentes sofre-

ram algum tipo de represália por falar a

verdade sobre determinado produto ou

até mesmo sobre a política de seu país.

Essas represálias poderiam ter sido evi-

tadas se esse indivíduo tivesse instalado

em seu computador algum software que

garante a sua privacidade. Um dos mais

bem sucedidos é o Tor [3] , criado pela

própria EFF e destinado àqueles que pro-

curam sua liberdade na grande rede. O

Tor é Software Livre e está baseado no

conceito de “onion routers”, que são rotas

aleatórias e criptografadas, que tornam o

rastreamento praticamente impossível.

Você pode estar pensando: O que isso

tem a ver com Software Livre? A respos-

ta é bem direta: o SL não é apenas um

movimento de programadores, técnicos

e pessoas envolvidas com software. É

também um movimento social, preo-

cupado com questões da liberdade da

informação, privacidade e cultura di-

gital. O termo “liberdade” está ligado

ao Software Livre e essa liberdade está

diretamente relacionada à informação e

ao seu direito de privacidade.

Política de privacidade É muito importante ler a política de priva-

cidade de todos os serviços web em que

você pretende se cadastrar ou até mesmo,

quando está instalando algum software

em seu computador, é importante levar

isso em consideração. Um software licen-

ciado sob a licença GPL ( General Public

Licence ) garante a total liberdade ao usuá-

rio e não é necessário informar a ninguém

que você está utilizando esse software e

qual o objetivo desse uso.

A indústria de software nem sem-

pre age assim, algumas coletam todo

e qualquer tipo de informação de seus

usuários, tentando mantê-los sob total

controle. Essas informações podem ser

usadas para envio de propaganda, pode

ser vendida a terceiros com o propósito

de informar o perfi l de usuários, o que

ele faz, qual seu poder aquisitivo e por

aí vai. Com o software proprietário, você

também não consegue garantir se o uso

está sendo monitorado ou não.

Como o desenvolvimento de Software Li-

vre é feito da maneira mais desinteressada

possível e todos podem ter acesso ao código

fonte, é muito difícil alguma distribuição

fazer alguma coisa para burlar a privaci-

dade de seus usuários. O único interesse

dos desenvolvedores é com o bem-estar de

seu usuário e suas liberdades. ■

Sobr

e o

auto

r

Christiano é desenvolvedor de Software Livre, atua como voluntário no Projeto GNU, com a missão de difun-dir essa fi losofi a e colaborar com projetos relacionados à educação. Quando não está na frente do computador programando, seu hobby é astronomia e bons fi lmes.

Informações [1] Electronic Frontier Foundation: www.eff.org

[2] Indymedia: www.indymedia.org

[3] Tor: tor.eff.org

Comunidade

94

Planeta GNU

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Calendário de eventosEvento Data Local WebsiteLinux Park CeBIT 9 a 15 de Março Hannover, Alemanha www.cebit.deTelefonia IP com Software Livre II 11 de Março Universidade São Marcos, SP eventos.temporeal.com.brLinux Park 15 de Março São Paulo, SP www.linuxpark.com.br1º Desktop Livre 16 a 18 de Março Lorena, SP www.desktoplivre.org.brSingle Sign On - LDAP Roadmap 25 de Março FIAP, SP eventos.temporeal.com.brFlisol (Festiv. Lat. Amer. de Inst. de Soft. Livre) 25 de Março Campinas, SP (+19 cidades bras.) www.musicalmente.org/flisolII Latinoware 27 de Março Foz do Iguaçu, PR www.latinoware.orgFISL 7.0 (7º Fórum Int. Software Livre) 19 a 22 de Abril Porto Alegre, RS fisl.softwarelivre.orgBases de Dados com Software Livre III 29 de Abril Universidade São Marcos, SP eventos.temporeal.com.brI Ensol (Enc. Soft. Livre da Paraíba) 12 a 14 de Maio João Pessoa, PB www.ensol.org.brLinuxWorld Conferecence & Expo Brasil 23 a 25 de Maio São Paulo, SP www.linuxworldexpo.comServidores de Aplicação J2EE 27 de Maio FIAP, SP eventos.temporeal.com.brLinux Park 26 de Junho São Paulo, SP www.linuxpark.com.br

Índice de anunciantesAnunciante Site Página4Linux www.4linux.com.br 45A Casa do Linux www.acasadolinux.com.br 95ARC System www.go-global.com.br 43Devmedia www.devmedia.com.br 65Desktop Linux www.desktoplivre.org.br 55Easy Linux www.revistaeasylinux.com.br 17FISL fisl.softwarelivre.org 39Green Treinamento e Consultoria www.green.com.br 57Guia de TI - Soluções em Tecnologias Abertas www.linuxnewmedia.com.br 02Intel www.intel.com.br 100ISolve www.isolve.com.br 33Itautec www.itautec.com.br 07Linux.local www.linuxnewmedia.com.br 13Linux Mall www.linuxmall.com.br 57Linux Magazine www.linuxmagazine.com.br 99Linux Park www.linuxpark.com.br 52, 53Linux World www.linuxworldexpo.com 21, 37Locasite www.locasite.com.br 29LPI www.lpi.org.br 95Microsoft www.microsoft.com.br 35Oracle www.oracle.com.br 09Simples Consultoria www.simplesconsultoria.com.br 71

Serviços

www.linuxmagazine.com.br

março 2006 edição 18 95

ServiçosEventos

Mercado de negócios

http://supertuxbr.blogspot.com

O Linux.local é um diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 2161-5400 ou [email protected]

Linux.localFornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3

Literatura / Editora = 4 Fornecedor de Software = 5

Consultoria / Treinamento = 6

Empresa Cidade Endereço Telefone Web 1 2 3 4 5 6

Espírito Santo

Linux Shopp Vila Velha Rua São Simão (Correspondência), 18 – CEP: 29113-120 27 3082-0932 www.linuxshopp.com.br ✔ ✔ ✔ ✔

Megawork Consultoria e Sistemas Vitória Rua Chapot Presvot, 389 – Praia do

Canto – CEP: 29055-410 sl 201, 202 27 3315-2370 www.megawork.com.br ✔ ✔ ✔

Spirit Linux Vitória Rua Marins Alvarino, 150 – CEP: 29047-660 27 3227-5543 www.spiritlinux.com.br ✔ ✔ ✔

Minas Gerais

Instituto Online Belo Horizonte Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011 31 3224-7920 www.institutoonline.com.br ✔ ✔

Linux Place Belo Horizonte Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000 31 3284-0575 corporate.linuxplace.com.br ✔ ✔ ✔ ✔

TurboSite Belo Horizonte Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141 0800 702-9004 www.turbosite.com.br ✔ ✔ ✔

Paraná

iSolve Curitiba Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000 41 252-2977 www.isolve.com.br ✔ ✔ ✔

Mandriva Conectiva Curitiba Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430 41 3360-2600 www.mandriva.com.br ✔ ✔ ✔ ✔

Rio de Janeiro

NSI Training Rio de Janeiro Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 21 2220-7055 www.nsi.com.br ✔ ✔

Open IT Rio de Janeiro Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120 21 2508-9103 www.openit.com.br ✔ ✔

Rio Grande do Sul

Solis Lajeado Rua Comandante Wagner, 12 – São Cristóvão – CEP: 95900-000 51 3714 6653 www.solis.coop.br ✔ ✔

Datarecover Porto Alegre Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003 51 3018-1200 www.datarecover.com.br ✔ ✔

LM2 Consulting Porto Alegre Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140 51 3018-1007 www.lm2.com.br ✔ ✔ ✔

Lnx-IT Informação e Tecnologia Porto Alegre Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193 51 3331-1446 www.lnx-it.inf.br ✔ ✔ ✔ ✔

Plugin Porto Alegre Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 51 3287-1700 www.plugin.com.br ✔ ✔ ✔ ✔

TeHospedo Porto Alegre Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008 51 3286-3799 www.tehospedo.com.br ✔

São Paulo

Ws Host Arthur Nogueira Rua Jerere, 36 – Vista Alegre – CEP: 13280-000 19 3846-1137 www.wshost.com.br ✔ ✔ ✔

DigiVoice Barueri Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010 11 4195-2557 www.digivoice.com.br ✔ ✔ ✔ ✔ ✔

Dextra Sistemas Campinas Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045 19 3256 6722 www.dextra.com.br ✔ ✔ ✔

Insigne Free Software do Brasil Campinas Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001 19 3213-2100 www.insignesoftware.com ✔ ✔ ✔

Microcamp Campinas Av. Thomaz Alves, 20 – Centro – CEP: 13010-160 19 3236-1915 www.microcamp.com.br ✔ ✔

Savant Tecnologia Diadema Av. Senador Vitorino Freire, 465 – CEP: 09910-550 11 5034 4199 www.savant.com.br ✔ ✔ ✔ ✔

Epopéia Informática Marília Rua Goiás, 392 – Bairro Cascata – CEP 17509-140 14 3413-1137 www.epopeia.com.br ✔

Redentor Osasco Rua Costante Piovan, 150 – Jd. Três Montanhas – CEP: 06263-270 11 2106-9392 www.redentor.ind.br ✔

Go-Global Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038 11 2173-4211 www.go-global.com.br ✔ ✔ ✔ ✔

AW2NET Santo André Rua Edson Soares, 59 – CEP: 09760-350 11 4990-0065 www.aw2net.com.br ✔ ✔ ✔

Async Open Source São Carlos Rua Orlando Damiano, 2212 – CEP 13560-450 16 3376-0125 www.async.com.br ✔ ✔ ✔

Delix Internet São José do Rio Preto Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909 11 4062-9889 www.delixhosting.com.br ✔ ✔ ✔

4Linux São Paulo Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031 11 2125-4747 www.4linux.com.br ✔ ✔

A Casa do Linux São Paulo Al. Jaú, 490 – Jd. Paulista – CEP 01420-000 11 3549-5151 www.acasadolinux.com.br ✔ ✔ ✔

Accenture do Brasil Ltda. São Paulo Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004 11 5188-3000 www.accenture.com.br ✔ ✔ ✔ ✔

Serviços

96

Linux.local

www.linuxmagazine.com.br

março 2006 edição 18http://supertuxbr.blogspot.com

Empresa Cidade Endereço Telefone Web 1 2 3 4 5 6

São Paulo (continuação)

ACR Informática São Paulo Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010 11 3873-1515 www.acrinformatica.com.br ✔

Agit Informática São Paulo Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030 11 3255-4945 www.agit.com.br ✔

Altbit - Informática Comércio e Serviços LTDA. São Paulo Av. Francisco Matarazzo, 229, Cj. 57 – Água

Branca – CEP 05001-000 11 3879-9390 www.altbit.com.br ✔ ✔ ✔ ✔

AS2M -WPC Consultoria São Paulo Av. Tiradentes, 615, Ed. Santiago, 2º andar Bom Retiro – CEP: 01101-010 11 3228-3709 www.wpc.com.br ✔ ✔ ✔

Big Host São Paulo Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010 11 3033-4000 www.bighost.com.br ✔ ✔ ✔

Blanes São Paulo Rua André Ampére, 153 – 9º andar – Conj. 91 11 5506-9677 wwww.blanis.com.br ✔ ✔ ✔ ✔ ✔

Commlogik do Brasil Ltda. São Paulo Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000 11 5503-1011 www.commlogik.com.br ✔ ✔ ✔ ✔ ✔

Computer Consulting Projeto e Consultoria Ltda. São Paulo Rua Vergueiro, 6455, Cj. 06 – Alto do

Ipiranga – CEP: 04273-100 11 5062-3927 www.computerconsulting.com.br ✔ ✔ ✔ ✔

Consist Consultoria, Sistemas e Representações Ltda. São Paulo Av. das Nações Unidas, 20.727 – CEP: 04795-100 11 5693-7210 www.consist.com.br ✔ ✔ ✔ ✔

Domínio Tecnologia São Paulo Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080 11 5017-0040 www.dominiotecnologia.com.br ✔

EDS do Brasil São Paulo Av. Pres. Juscelino Kubistcheck, 1830 T4 5º andar 3707-4100 www.eds.com ✔ ✔ ✔

Ética Tecnologia São Paulo Rua Nova York, 945 – Brooklin – CEP:04560-002 11 5093-3025 www.etica.net ✔ ✔ ✔ ✔

Getronics ICT Solutions and Services São Paulo Rua Verbo Divino, 1207 – São Paulo/SP – CEP: 04719-002 11 5187-2700 www.getronics.com/br ✔ ✔ ✔

Hewlett-Packard Brasil Ltda. São Paulo Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000 11 5502-5000 www.hp.com.br ✔ ✔ ✔ ✔ ✔

IBM Brasil Ltda. São Paulo Rua Tutóia, 1157 – CEP: 04007-900 0800-7074 837 www.br.ibm.com ✔ ✔ ✔ ✔ ✔

iFractal São Paulo Rua N. Sra. do Outeiro, 480, Sala 19 – CEP: 04807-010 11 5667-9308 www.ifractal.com.br ✔ ✔ ✔

Integral São Paulo Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001 11 5545-2600 www.integral.com.br ✔ ✔

Itautec S.A. São Paulo Rua Santa Catarina, 1 – Tatuapé – CEP: 03086-025 11 6097-3000 www.itautec.com.br ✔ ✔ ✔ ✔ ✔ ✔

Linux Komputer Informática São Paulo Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001 11 5034-4191 www.komputer.com.br ✔ ✔ ✔ ✔

Linux Mall São Paulo Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001 11 5087-9441 www.linuxmall.com.br ✔ ✔ ✔

Livraria Tempo Real São Paulo Al. Santos, 1202 – Cerqueira César – CEP: 01418-100 11 3266-2988 www.temporeal.com.br ✔ ✔ ✔

Locasite Internet Service São Paulo Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000 11 2121-4555 www.locasite.com.br ✔ ✔ ✔

Microsiga São Paulo Av. Braz Leme, 1631 – CEP: 02511-000 11 3981-7200 www.microsiga.com.br ✔ ✔ ✔ ✔

Novatec Editora Ltda. São Paulo R. Luis Antonio dos Santos, 110 – Santana – 02460-000 11 6979-0071 www.novateceditora.com.br ✔

Novell América Latina São Paulo Rua Funchal, 418 – Vila Olímpia 11 3345-3900 www.novell.com/brasil ✔ ✔ ✔ ✔

Oracle do Brasil Sistemas Ltda. São Paulo Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5ºandar – CEP: 04726-170 11 5189-3000 www.oracle.com.br ✔ ✔ ✔

Proelbra Tecnologia Eletrônica Ltda. São Paulo Av. Rouxinol, 1.041, Cj. 204, 2º andar

Moema – CEP: 04516-001 11 5052- 8044 www.proelbra.com.br ✔ ✔ ✔

Provider São Paulo Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005 11 2165-6500 www.e-provider.com.br ✔ ✔ ✔

Red Hat Brasil São Paulo Av. Angélica, 2503, 8º andar Consolação – CEP: 01227-200 11 3124-6000 www.latinsourcetech.com.br ✔ ✔

Samurai Projetos Especiais São Paulo Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002 11 5097-3014 www.samurai.com.br ✔ ✔ ✔ ✔

SAP Brasil São Paulo Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000 11 5503-2400 www.sap.com.br ✔ ✔ ✔

Simples Consultoria São Paulo Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010 11 3898-2121 www.simplesconsultoria.com.br ✔ ✔ ✔

Snap IT São Paulo Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000 11 3731-8008 www.snapit.com.br ✔ ✔ ✔

Stefanini IT Solutions São Paulo Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919 11- 3039-2000 www.stefanini.com.br ✔ ✔ ✔ ✔

Sun Microsystems São Paulo Rua Alexandre Dumas, 2016 – CEP: 04717-004 11 5187-2100 www.sun.com.br ✔ ✔ ✔ ✔ ✔

Sybase Brasil São Paulo Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000 11 3046-7388 www.sybase.com.br ✔ ✔ ✔

The Source São Paulo Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020 11 6698-5090 www.thesource.com.br ✔ ✔ ✔

Unisys Brasil Ltda. São Paulo Rua Alexandre Dumas, 1711, 10º andar, Ed. Birmann 11 – São Paulo/SP – CEP: 04717-004 11 3305-7000 www.unisys.com.br ✔ ✔ ✔ ✔ ✔

Utah São Paulo Av. Paulista, 925, 13º andar – Cerqueira César – São Paulo/SP – CEP: 01311-916 11 3145-5888 www.utah.com.br ✔ ✔ ✔

Visuelles São Paulo R. Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP 04455-310 11 5614-1010 www.visuelles.com.br ✔ ✔ ✔

Webnow São Paulo Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000 11 5503-6510 www.webnow.com.br ✔ ✔ ✔

WRL Informática Ltda. São Paulo Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 11 3362-1334 www.wrl.com.br ✔ ✔ ✔

Systech Taquaritinga Rua São José, 1126 – Centro - Caixa Postal 71 – CEP: 15.900-000 16 3252-7308 www.systech-ltd.com.br ✔ ✔ ✔

www.linuxmagazine.com.br

março 2006 edição 18 97

Linux.local Serviços

http://supertuxbr.blogspot.com

Abril de 2006

Na próxima edição...❐ Vida artificialNessa segunda parte de nosso tutorial

sobre o programa de autoria 3D Blender,

vamos usar o personagem criado na pri-

meira lição (desta edição) e animá-lo.

Usaremos recursos como key frames

(especificação de duas cenas, para que

o programa calcule e gere automatica-

mente as cenas intermediárias) e movi-

mentação do esqueleto (Armature), que é

a estrutura básica de movimento. Dessa

forma, o “revestimento” é animado au-

tomaticamente. ■

❐ Linux TuningAs mais novas distribuições Linux são muito fáceis de instalar. Há

poucos parâmetros que realmente exigem atenção cuidadosa. Por

exemplo, a senha de root e o fuso horário local. No entanto, a

configuração padrão desses instaladores gráficos pode não trazer

todo o desempenho que seu hardware agüenta. No Linux, são

inúmeros os ajustes finos que melhoram a performance.

Nessa série de artigos, vamos começar com o

hdparm e a técnica DMA (Direct Memory Access)

para aumentar a velocidade de leitura e gravação de

dados. Como há muitos tipos de HDs, não há uma

solução que otimize o desempenho em todos eles.

Como conseqüência, é grande a chance de que seu

disco não esteja tão rápido como poderia estar.

Serão abordadas também técnicas para melho-

rar a resposta de aplicativos multimídia, através

do gerenciamento das prioridades do sistema. Es-

pecificamente, a prioridade de tempo real, para

que certos programas ganhem uma fatia maior dos

recursos disponíveis.

Por fim, vamos comparar os principais sistemas de

arquivos disponíveis, para facilitar a escolha certa, de

acordo com aplicação. ■

❐ Nascidos para voarDistribuições Linux mais experimentais podem assumir riscos na busca por de-

sempenho otimizado. Conheça duas dessas experiências que mais prometem: o

Super Linux e o Underground Desktop. Basicamente, o Super é uma distribuição

cobaia para testar novas tecnologias, que podem ser incorporadas no Suse. Já o

Underground é uma otimização de uma distribuição já otimizada, o Arch Linux.

A diferença é que se trata de um sistema mais amigável. ■

Preview

98 março 2006 edição 18

O que vem por aí

www.linuxmagazine.com.brhttp://supertuxbr.blogspot.com

http://supertuxbr.blogspot.com

WWW.LI N UXM AGAZI N E.COM .BR

tecnologia sem limites

CD DO ASSI NANTE: ASTERISK@HOME 2.5

Voz sobre IPp.23

» Monte um PBX VoIP em casa com o Asterisk» OpenWengo e Ekiga: alternativas ao Skype» Telefonia IP com o Linphone» KPhone: softfone versátil

Veja tambem:» Hora certa na rede com NTP» A febre do jogo Sudoku chega ao Linux» Compilação multiplataforma de projetos Visual Basic» Aprenda a converter, copiar e rodar filmes no Sony PSP

Controle total p.46

Análise dos principaisgerenciadores de projetos

Linux M

agazine

Núm

ero 18Vox so

bre IP A

sterisk O

penW

engo

Ekiga Lin

pho

ne

KPho

ne

Pytho

n

Blender

NTP

Sudo

ku PSP

Visual Basic

Núm

ero

18

Mar

ço 2

006

Google Maps API p.54Acrescente mapas ao seu site

R$10,90€ 5,50Ed. 1803/2006

977

1806

9420

09

00

01

8

Criação 3DGráficos tridimensionais com Python p.72Blender: tutorial de animação p.60

Klik p.84Instalação fácil de programas100

páginas!

100 págs.

exem

plar

de

assi

nant

e

vend

a pr

oibi

da

http://supertuxbr.blogspot.com