Post on 25-Jan-2016
description
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
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, rperegrino@linuxmagazine.com.br Emerson Satomi, esatomi@linuxmagazine.com.br
Direção de Arte e Projeto Gráfico Luciano Hagge Dias, lhagge@linuxmagazine.com.br Judith Erb, jerb@linuxnewmedia.de
Centros de Competência Centro de Competência em Software: Oliver Frommel, ofrommel@linux-magazine.com Centro de Competência em Hardware: Mirko Dölle, mdoelle@linux-magazine.com Centro de Competência em Redes e Segurança: Achim Leitner, aleitner@linux-magazine.com
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, ermida@ermida.com Livea Marchiori, lmarchiori@linuxnewmedia.com.br
Design da Capa Pinball, info@pinball-werbeagentur.de
Anúncios: www.linuxmagazine.com.br/Advertise Brasil Claudio Bazzoli, anuncios@linuxmagazine.com.br Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Todos os países (exceto Alemanha, Áustria e Suíça) Brian Osborn, ads@linux-magazine.com Tel.: +49 (0)6509 910 495 Fax: +49 (0)6509 910 497 Alemanha, Áustria e Suíça Osmund Schmidt, anzeigen@linux-magazine.com Tel.: +49 (0)6335 9110 Fax: +49 (0)6335 7779Diretoria Rafael Peregrino da Silva, rperegrino@linuxmagazine.com.br Claudio Bazzoli, cbazzoli@linuxmagazine.com.br
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: assinaturas@linuxmagazine.com.br 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 cartas@linuxmagazine.com.br. 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 material@linuxmagazine.com.br.
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
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
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
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: seguranca-admin@distro.conectiva.com.br 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
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:senha@provedorexemplo.com.br/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
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 é
pinguim@sipnip.de 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 pinguim@sipnip.com 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 123456789@sipnip.com. Se você precisar ligar para outra conta VoIP, a maneira mais fácil é digitar o SIP ID (como pinguim@sipgate.de) ou apenas o número telefô-nico com o domínio (123456789@sipgate.de).
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
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. miguelk@konsultex.com.br.
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
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
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:anonymous@public.kitware.com:/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:anonymous@www.cmake.org:/cvsroot/CMake Ulogin password: cmake
Para baixá-lo, digitamos:
cvs -d :pserver:anonymous@www.cmake.org:/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 denis@isolve.com.br.
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 anuncios@linuxmagazine.com.br
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
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