Issuu on Google+

Klik p.84 Instalação fácil de programas

Asterisk OpenWengo Ekiga

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

venda proibida

Vox sobre IP

p.23

9 771806 942009

Número 18

Voz sobre IP

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

0018 exemplar de 0assinante

Linux Magazine

tecnologia sem limites

Março 2006

páginas!

Google Maps API p.54 Acrescente mapas ao seu site

Número 18

100 págs.

100

Linphone KPhone

Criação 3D

Python

Gráficos tridimensionais com Python Blender: tutorial de animação

p.72

p.60

Blender

Controle total

NTP Sudoku

Análise dos principais gerenciadores de projetos

p.46

PSP Visual Basic

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

http://supertuxbr.blogspot.com

W W W. L I N UX M AG A Z I N E . CO M . B R

C D D O A S S I N A N T E : A ST E R I S K @ H O M E 2 . 5


http://supertuxbr.blogspot.com


Expediente editorial

Editores 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 7779

Diretoria 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 5410

Assinaturas: 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,90 Na 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ênia

Apesar 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. Assumese 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 Distmag

Impressão e Acabamento: Parma ISSN 1806-9428

Impresso no Brasil

Bem-vindo

Editorial

FUD e autocrítica

Prezado 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ª. Entretanto, 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 freqü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, entretanto, 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

3

http://supertuxbr.blogspot.com www.linuxmagazine.com.br

março 2006

edição 18


Índice

Linux Magazine

Cartas

06

Notícias

10

Entrevista

Rogério Araújo, diretor comercial da Mais Telecom.

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

10

12 18 20

Capa

23

Alô mundo!

A revolução VoIP também pegou o Linux.

23

VoIP em casa

24

Alô, é o Linux?

30

Bem conectado

32

Livre para ligar

36

Como usar o Asterisk na rede doméstica. Conheço o softphone do KDE: o KPhone. Linphone: um cliente simples e versátil. Conheça o OpenWengo e o Ekiga.

Análises

40

Do arco da velha

40

No Arch Linux, menos é mais.

Controle Total

Comparativo de gerenciadores de projetos.

Tutoriais

Distância segura

54

Curvas suaves

Crie objetos tridimensionais com o Blender.

4

40

Do arco da velha

As maiores distribuições têm concentrado cada vez mais esforços na usabilidade do Linux como sistema para desktop. Mas como ficam 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.

46

54

Como usar a API do Google Maps.

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 configurar o consagrado programa Asterisk para implementar um PBX VoIP doméstico. Analisamos 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 Tapioca, desenvolvido no Brasil pelo InDT, instituto de pesquisas fi nanciado pela Nokia.

60

46

Controle total

O gerencia mento de projetos é uma área não muito conhecida no Linux, mas conta com muitas opções. Neste comparativo, analisamos tanto ferramentas para o desktop (Gantt, Planner e Real Time) quanto as que rodam no navegador (dotProject, ProjectOpen e Gforge).

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


� �

Índice

Linux Magazine

54

Distância segura

O 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 ferramenta é aberta para implementações externas. Saiba como acrescentar mapas do Google ao seu site.

60

67

SysAdmin

67

68

Curvas suaves Nesse primeiro tutorial sobre o Blender (para autoria 3D profissional), vamos aprender como criar um objeto tridimensional, para podermos animá-lo, na próxima edição.

Coluna do Augusto

Wiki fácil fácil: TiddlyWiki2.

Em ponto

Garanta a hora certa da rede com o NTP.

72 72 78

84

Programação

Manipulação 3D no Python

Visualização tridimensional com o VTK.

Portas abertas

Portando projetos de Visual Basic para o Linux.

81

Linux User

82

Iniciar decolagem

CD do Assinante

PBX caseiro com o Asterisk@Home.

84

A maior dor de cabeça para usuários iniciantes do Linux costuma ser a instalação de programas. Muitas vezes, a tarefa de baixar um arquivo de um site e instalá-lo se revela um martírio frustrante: dependências, incompatibilidades com distribuições, arquivos espalhados pelo sistema de arquivos... O Klik vem para resolver esse problemas.

88 91

Iniciar decolagem

Instalação fácil com o Klik.

Luzes, câmera, ação!

Como converter e rodar filmes no Sony PSP.

Lógica numérica

A febre do jogo Sudoku chega ao Linux.

94

Comunidade

94

95

95 96 98

Planeta GNU

Liberdade e privacidade na web.

Serviços

Mercado / Eventos / Anunciantes Linux.local Na próxima edição

5

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Cartas para a gente

Escreva para a gente

Cartas para o Editor

Permissão de escrita ✎ Música

✎ Linux Magazine

Sou músico e vendedor. Comecei a comprar 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 utilizar e quais programas seriam indicados para trabalhar com música e vídeo (se existem similares ao Sonar 5 e Gigastudio 3). Quanto a profissã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/. Trata-se de um repositório que possui praticamente todos os programas de produção musical profissional. Mas é preciso usar a distribuição Fedora, para se beneficiar desse sistema. Uma boa alternativa em Linux ao Sonar é 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. ■

6

Aguarde boas novidades a partir do mês Sou assinante da Linux Magazine Bra- de abril. Vamos ter uma razão para subir sil e, recentemente, também da edição o nível da Linux Magazine brasileira, que americana. Sou Engenheiro de Compu- vai passar a ser mais técnica e corporatação e uso Linux há 4 anos em casa, tiva, como é o caso da versão alemã da no trabalho, e também na universidade. Linux Magazine (muito mais pesada que Não pude resistir em comparar as duas a versão internacional). ■ versões da mesma: a impressão que tenho depois de ler ambas é que a edição americana é muito mais voltada para Venho me juntar aos inúmeros leitores o público desenvolvedor de Software da Linux Magazine e usuários satisfeiLivre e para administradores de redes tos (com certeza!) do Linux. Comecei e sistemas. Já nas últimas edições de utilizando o Linux por curiosidade e, de Linux Magazine Brasil, tenho notado teste em teste, fui passando por diveruma forte tendência para o uso domés- sas distribuições até, fi nalmente, chegar tico de Linux. Sinceramente, sou a favor ao Suse Linux, que acreditei (por um de uma abordagem mais técnica como a bom tempo) possuir todos os atributos edição americana. Entendo que outros que buscava (apesar de ser muito lenfatores influem, como questões merca- to)… Isso até conhecer o Ubuntu Linux! dológicas, porém mesmo assim gostaria Convertido na verdade em Kubuntu, com de uma maior participação desse tipo de a ajuda do KDE 3.5. O Kubuntu é rápido, com uma interartigo na revista. Giovane Moreira, Trindade - Goiânia face gráfica atraente e muito funcional. Olá Giovane. É por isso que dizemos Procuro sempre que posso, aprender que a Linux Magazine não Escreva para a Linux Magazine é uma mera tradução, mas uma “tropicalizaSe 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. ção” das edições alemã, br. Devido ao volume de correspondência, é impossível responder a todas as internacional (à qual mensagens, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas você se refere como “amenesta seção. Para dúvidas ou críticas referentes à ricana”) e espanhola. sua assinatura da Linux Magazine, use o endereço: assinaturas@linuxmagazine.com.br Hoje, como só temos um Se você tem interesse em contribuir com um título, temos que atender artigo, leia primeiro as dicas e instruções em a gregos e a troianos, e, nosso site, na seção Torne-se Autor, e entre em contato conosco através do endereço se não fi zermos isso com material@linuxmagazine.com.br. cuidado, acabamos por Aguardamos sua colaboração! não satisfazer ninguém.

✎ Filosofia de Vida

http://supertuxbr.blogspot.com mês 200X

edição xx

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Cartas para a gente

um pouco mais sobre o Linux, porque 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 OpenOffice.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 “filosófico” do GNU/Linux é apaixonante mesmo. Felizmente, o sistema 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 segurança a partir da versão 2.0 beta. ■

8

Escreva para a gente

✎ CD Venho acompanhando essa revista há algum tempo, e sempre que há assuntos 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 conjunto com outras medidas possibilitou uma redução de aproximadamente 27% no preço da revista. Quanto a efetuar uma assinatura da Linux Magazine, experimente e você verá que é diferente. A versão da distribuição que disponibilizamos em CD nesta edição pode ser baixada

diretamente em iso.adamantix.org/download/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 mensagem. Tentamos todos os meses colocar a Linux Magazine nas bancas na primeira semana de cada mês. No entanto, eventualmente, isso não é possível por problemas de logística. ■

http://supertuxbr.blogspot.com mês 200X

edição xx

www.linuxmagazine.com.br


Oracle Grid

Todos os seus bancos de dados

Em GRID Sem desperdício de capacidade Sem desperdício de dinheiro Sem ponto único de falha

Oracle Grid É rápido... é barato... E está sempre disponível

oracle.com/grid ou ligue para 0800.901.985 Obs.: “Sempre disponível” indica que, se um servidor cair, seus aplicativos continuam rodando.

http://supertuxbr.blogspot.com 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.


Notícias

O mercado VoIP no Brasil

Fale mais,

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

pague menos! 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

Foto: cortesia Mais Telecom

A

Mais Telecom está no mercado provedores VoIP. Falando apenas das Antigamente, o protocolo utilizado era há quatro anos. Inicialmente projeções da Mais Telecom, que são as o H.323 e agora quase todo mundo está atuando como representante da que conheço, a estimativa é de que até o usando SIP (do inglês Session Initiation StarNetwork, uma das primeiras empre- final do primeiro semestre de 2006 nós Protocol, ou Protocolo de Iniciação de sas a comercializar VoIP no Brasil (hoje tenhamos 400.000 usuários domésticos Sessão). Também não se deve procurar sem presença no país), e, posteriormente, operando na nossa plataforma. Hoje eu baixar custos indiscriminadamente. Há associada ao Grupo Conceito Telecom, a já tenho testes realizados e contratos operadoras que compram “minutagem” empresa passou a ter vida própria como fechados para colocar em operação o no exterior para baixar os custos ao operadora de telefonia IP a partir de 2004. serviço para cerca de 220.000 usuários máximo e isso leva inevitavelmente a Rogério Araújo, diretor comercial da – todos eles usando os chamados sof- problemas de qualidade da conexão. Mais Telecom, nesta entrevista exclusi- tphones (aplicativos que simulam um va para a Linux Magazine, fala sobre as telefone no computador). Além disso, LM» Mas os preços são muito menores características e tendências do mercado estamos agregando outros serviços à de qualquer modo, não? brasileiro de telefonia web. telefonia IP, como os de televisão e tele- RA» São, mas a gente tem que olhar as jornalismo, usando para isso um cliente coisas com calma. Primeiro: como funLinux Magazine» Como está o mercado de pro- VoIP especial. Por exemplo, através de ciona uma ligação de longa distância (a vedores VoIP para clientes domésticos? uma parceria com a TV Cidade, que é famosa DDD), ou mesmo uma chamada Rogério Araújo» O mercado está começan- uma operadora de TV a cabo da região internacional (a DDI) via VoIP? A idéia do a aquecer. As empresas já estabeleci- de Marília, nós vamos disponibilizar o é simples: em geral, o cliente liga para das nesse mercado estão começando a conteúdo da Band News através desse o meu servidor usando um softphone, voltar seus olhos para a “pessoa física”. canal de comunicação. por exemplo de São Paulo para SalvaNós, por exemplo, fechamos parcerias dor. A ligação dele cai no meu servidor com empresas de TV a cabo e prove- LM» Quais são as dificuldades inerentes alocado na Diveo, aqui da Vila Olímpia, dores de Internet de banda larga, uma à tecnologia? em São Paulo, que roteia os dados da vez que eles já possuem uma carteira RA» A tecnologia é complexa, mas desde ligação para um parceiro meu em Salvaexpressiva de clientes em pessoa física que se faça a coisa certa, os resultados dor. Em Salvador, essa chamada VoIP é e têm interesse em oferecer o serviço de são excelentes. Mas você tem que saber convertida em uma chamada telefônica telefonia web para esses usuários. Em o que está fazendo. As configurações convencional e o número solicitado é geral, essas empresas, entretanto, não têm que estar corretas em cada plata- chamado. O custo dessa ligação para têm estrutura e conhecimento para ofe- forma. Além disso, a tecnologia mudou a operadora é o de uma chamada local. recer o serviço e estão se associando a radicalmente de um ano e meio para cá. Quando a infraestrutura VoIP estiver

10

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


O mercado VoIP no Brasil

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 qualidade: se eu uso a infraestrutura da Embratel 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 atendem 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 reroteada 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 assim 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 funcionam 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” nesses 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 disso, muitas operadoras estão oferecendo outros serviços agregados aos seus softphones, como é o nosso caso com o fornecimento 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 disseminaçã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á possuem uma faixa de numeração e disponham da tecnologia adequada (como a fornecida pela empresa SIPURA, recentemente 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 continuar utilizando o sistema tradicional de telefonia para receber as chamadas, deixando o VoIP apenas para realizar

Notícias

ligações – pelo menos até que equipamentos 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 telefonia tradicionais estão encarando esse crescimento da telefonia IP? RA» Elas estão assustadas e “se mexendo”. 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 à complexidade 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 Telefônica, a Embratel e as outras “teles” desenvolvam essa experiência. Além disso, uma vez que as operadoras 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 tradicionais 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. ■

11

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Notícias

Mundo livre em revista

Mundo livre em revista Curtas

❐ A polêmica GPL3

SMS livre

O 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élite

O 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 tradutores

A 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 Kurumin, 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. Atualmente, faltam pessoas que possam traduzir do português para o espanhol.

Código do Windows será revelado

Para 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 começou em dezembro e deve ser concluído em março deste ano.

12

ponente, seguro e bem testado. Ou, então, Após 15 anos de versão 2 da GPL (GNU esses módulos não-oficiais até poderiam Public License), a FSF (Free Software ser carregados, mas o kernel seria marFoundation) liberou um rascunho da cado como “manchado”, em uma política terceira versão dessa licença, que cobre menos segura. Esse tipo de implementação quase tudo no mundo Linux. As princi- seria impossível sob a GPL3. Ossman fez pais mudanças são o objetivo de impe- a seguinte pergunta a Linus: dir que software sob a GPL seja usado – Então combinar software aberto e em mecanismos de restrições digitais hardware fechado em algo que eu não ou DRM (Digital Rights Management) e possa modificar é OK para você? uma nova forma de proteger programas – Mas você pode modificar a parte do contra patentes de software. software! Essa é a única parte que eu Logo veio a polêmica. No começo de ligo e, talvez (pelo menos para mim), a fevereiro, Linus Torvalds anunciou que o mais importante. Porque é a única parte kernel não será licenciado por essa nova que nós criamos. É a única parte que sinversão da GPL, permanecendo na versão 2. to termos o direito moral de controlar. É o velho embate GNU X Linux, Stallman Já Stallman, como fundador e presiX Torvalds, filosofia X business... dente da FSF, não tolera qualquer tipo de Linus fez o anúncio na lista de discus- DRM, em uma posição alinhada com a são do kernel, junto com outros comentá- da Electronic Frontier Foundantion. rios. Para ele, a luta contra as restrições Em seu preâmbulo, o rascunho da digitais não deveria acontecer no campo nova licença diz que a GPL “assegura do desenvolvimento de software. Ele que o software por ela coberto não será sugere que os ativistas dessa área façam sujeito, nem sujeitará outras obras, a isso no campo do conteúdo. restrições digitais das quais seja proibido A possibilidade de que determinado escapar”. O preâmbulo termina assim: hardware só rode kernels assinados di- “Queremos evitar o perigo especial de gitalmente, por exemplo, em uma típica que redistribuidores de um Software proteção DRM, não incomoda Torvalds. Livre obtenham patentes individuais, “O fato de que o hardware é fechado é tornando o programa de fato proprieuma questão de licença do hardware, não tário. Para prevenir isso, a GPL deixa do software. Sugiro que você contate a claro que qualquer patente tem que ser empresa de hardware e, possivelmente, licenciada para uso livre por qualquer decida não comprar esse equipamento”, pessoa, ou então que não seja licenciada escreveu Torvalds, publicamente, em res- de nenhuma outra forma”. O rascunho da GPL3 está em gplv3.fsf. posta ao desenvolvedor Pierre Ossman. Situações onde seja impossível rodar org/draft. Uma tradução (feita pelo escrium kernel modificado não seriam uma tório de advocacia Kaminski, Cerdeira má idéia, em muitos casos, na opinião do e Pesserl) pode ser conferida em tinyurl. criador do Linux. Ele deu o exemplo de com/7sqga. Já o site Groklaw publicou módulos assinados digitalmente para que uma tabela (em inglês) de diferenças o kernel só possa rodar esse tipo de com- entre a GPL2 e 3: tinyurl.com/bbmrg. ■

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Notícias

Curtas

❐ Cai o preço do Computador para Todos

Firefox atinge 20% na Europa

Mais 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 Alemanha (30%). O país com o menor uso é a Inglaterra (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 GPLv3

Jonathan Schwartz, presidente da Sun, está considerando lançar o Solaris (e todo o Solaris Enterprise 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 Venezuela

Entrou 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 semestre

O 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 sendo 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.

14

Mundo livre em revista

As 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 competiçã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 (incluindo o Extra), por exemplo, um computador Novadata (com a distribuição Insigne) sai por R$ 1.099 a vista. Outra

empresa que está oferecendo computadores por um preço bem competitivo é a Compujob (compujob.com.br). O site da empresa anuncia um PC com processador 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 Novadata, 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. ■

❐ O Firefox dos tocadores O 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 principais 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 praticamente 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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Mundo livre em revista

Notícias

Curtas

❐ 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áficas para que usuários normais – sem grandes conhecimentos técnicos – possam projetar e montar uma distribuição Linux personalizada. Isso pode ser feito 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

❐ PCs só com Linux

A Mandriva Conectiva fechou o ano de 2005 com um crescimento de 42% em relação a 2005, com um faturamento de R$ 5,1 milhões. Entre as áreas em que a empresa mais cresceu, está o setor de treinamento, 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. ■

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 modelos Koobox, por enquanto disponível apenas nos EUA. Essa é a primeira linha de um grande fabricante de computadores 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 flash (onde fica 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

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 Block). 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 interoperar com o BitKeeper, o sistema proprietá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-americano. O banco de dados MySQL já roda em muitas repartições federais, estaduais e municipais americanas, como o Departamento de Defesa, a NASA, o Centro de Pesquisas Geológicas, o Laboratório Nacional 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 especificações de base para a infraestrutura técnica de provedores de serviços de telecomunicações nos EUA.

15

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Notícias

Curtas

Mundo livre em revista

❐ Goobuntu?

Oracle compra Berkeley DB

A Oracle anunciou a compra da Sleepycat Software, 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 aquisição, não foi informado se haveria mudanças nessa política.

Banco do Brasil abandona o Freedows

O 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 Freedows 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 responde 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 Xgl

A Novell tornou público o projeto em que seus engenheiros já vinham trabalhando desde o final de 2004: o Xgl (www.novell.com/linux/xglrelease), 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.

❐ Lançado o BrOffice.org.br

No final de janeiro, renasceu o boato sobre Foi lançada no final de janeiro a ONG (Orgauma distribuição Linux feita pelo Google. nização Não Governamental) BrOffice.org, Trataria-se de uma versão do Ubuntu, cha- junto com o site de mesmo nome. Criado mada de Goobuntu. Essas especulações em 2002, o projeto OpenOffice.org.br atuou foram levantadas por um artigo do site The ativamente na tradução e desenvolvimento Register, com base em uma reportagem do da versão BR do OOo, além de incentivar Financial Times, sobre a versão customi- sua adoção no país. Vale ressaltar que o zada do Ubuntu usada internamente no BrOffice.org.br não é um derivado do OpenGoogleplex. A empresa confirmou que Office. É a mesma coisa. Só muda o nome usa uma versão customizada do Ubuntu e a linguagem da interface. A alteração foi nos desktops internos da empresa e que necessária porque a marca OpenOffice.org ela realmente se chama Goobuntu. Mas já estava registrada no Brasil. ■ negou a existência de quaisquer planos broffice.org.br para lançar essa distribuição. Uma boa notícia real envolvendo as palavras-chave Google e Linux é que alguns aplicativos da empresa de busca vão rodar mesmo no Linux. Um deles é o gerencia- O Discreet Flame, principal sistema de dor/editor de fotos gratuito Picasa. O Goo- efeitos visuais da Autodesk (empresa que gle e a Codeweavers (que faz o Crossover faz o AutoCAD), agora roda em Linux. Office) estão trabalhando em uma versão Até então esse software profissional do Picasa que rode no Linux. Mas não será estava disponível apenas para Irix, o uma versão nativa, serão usados recursos Unix da Silicon Graphics. O programa do Wine. O visualizador de imagens de é hoje muito usado para a criação de satélite Google Earth é outro programa que efeitos cinematográficos em comerciais está sendo portado para Linux. ■ televisivos e vinhetas de canais. Além br-linux.org/linux/node/2722 do Flame, o Discreet Flint e o sistema de tinyurl.com/7j96e edição Discreet Smoke também foram br-linux.org/linux/node/2772 portados para o Linux. ■

❐ Autodesk Discreet Flame para Linux

www.autodesk.com/flame

Palm Linux é apresentando

A 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 fevereiro. Além de um kernel Linux, o sistema contará 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 programadores de smartphones no final deste ano.

16

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Notícias

Dicas de [In]segurança

Dicas de [In]segurança ❐ Mozilla/Firefox O Mozilla é um navegador de código aberto; cliente avançado de email, listas 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.persist(). Uma página com código malicioso 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 histó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 iniciar 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ça Distribuição Referência de Segurança Conectiva Info: distro2.conectiva.com.br/ Lista: seguranca-admin@distro.conectiva.com.br e distro2.conectiva.com.br/lista Referência: CLSA-... 1 Debian

Gentoo

Mandriva

Info: www.debian.org/security Lista: lists.debian.org/debian-security-announce Referência: DSA-… 1 Info: www.gentoo.org/security/en/gsla/index.html Fórum: forums.gentoo.org Lista: www.gentoo.org/main/en/lists.xml Referência: GLSA: … 1 Info: www.mandriva.com/security Lista: www1.mandrdrivalinux.com/en/flists.php3#2security Referência: MDKSA-… 1 Info: www.redhat.com/errata Lista: www.redhat.com/mailing-lists Referência: RHSA-… 1 Info: www.slackware.com/security Lista: www.slackware.com/lists (slackware-security) Referência: [slackware-security] … 1 Info: www.novell.com/linux/security Lista: www.novell.com/linux/download/updates Referência: suse-security-announce Referência: SUSE-SA … 1

Comentários Possui uma página específica; 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. 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. 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.

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 A Red Hat classifica 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 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 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 atualizaçõ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.

http://supertuxbr.blogspot.com 18

março 2006

edição 18

www.linuxmagazine.com.br

LM18_seguranca.indd 18

24.02.06 13:18:55


Dicas de [In]segurança

❐ OpenSSH

Notícias

❐ Ipsec-tools

Por exemplo, ao enviar um arquivo UPX Foi descoberta uma falha na implementa- A implementação do IKEv1 (Internet maliciosamente construído para um serção do comando de cópia segura scp, mais Key Exchange, versão 1) – isakmp_ vidor integrado com ClamAV, um agressor precisamente quando se faz uma cópia de agg.c – no ipsec-tools possui brechas poderia executar código com privilégios arquivo local para arquivo local: nomes em versões anteriores à 0.6.3. Se o maiores. O projeto Common Vulnerabide arquivos que contenham metacarac- ipsec-tools estiver rodando em agres- lities and Exposures (cve.mitre.org) deu a teres do shell ou espaços são expandidos sive mode, é possível que agressores essa falha o código CVE-2006-0162. ■ duas vezes. Isso poderia levar à execução provoquem uma negação de serviço Referência no Debian: DSA-947-2 de comandos arbitrários se um usuário (com travamento após desreferencia- Referência no Gentoo: GLSA 200601-07 fi zesse uma cópia scp de um arquivo com mento nulo) através de pacotes IKE Referência no Mandriva: MDKSA-2006:016 o nome especialmente construído. especialmente preparados, como de- Referência no SuSE: SUSE-SR:2006:001 As atualizações fornecidas empurra- monstrado no PROTOS ISAKMP Test ram o OpenSSH para a versão 4.3p1. Com Suite para IKEv1. isso, vieram algumas diferenças. Um O projeto Common Vulnerabilities and O pacote gd contém bibliotecas gráficas exemplo é a autenticação PAM. Especifi- Exposures (cve.mitre.org) deu a essa falha usadas para a criação dinâmica de imacamente, o arquivo padrão sshd_config o código CVE-2005-3732 . ■ gens como PNG e JPEG. Foram encontrados diversos estouros agora só aceita conexões em protocolo 2 e Referência no Debian: DSA-965-1 Referência no Mandriva: MDKSA-2006:020 o UsePAM vem desativado por padrão. de memória no modo como o gd faz Em sistemas com métodos de autentia alocação de memória. Um agressor cação alternado (por exemplo, LDAP) que poderia criar uma imagem com código usam a pilha do PAM para autenticação, O Wine é uma implementação livre da arbitrário para ser executado no caso de será necessário ativar o UsePAM. Note API do Windows® para sistemas deriva- a vítima usar um programa ligado a essa que o arquivo padrão /etc/pam.d/sshd dos do Unix. biblioteca para abrir o arquivo. O projeto também foi modificado, para usar o móH. D. Moore descobriu que o Wine Common Vulnerabilities and Exposures dulo pam_listfile.so, que vai recusar implementa a função de escape (“inse- (cve.mitre.org) deu a essa falha o código ■ o acesso de todos os usuários listados gura por natureza”) SETABORTPROC GDI, CVE-2004-0941 . em /etc/ssh/denyusers (por padrão, para arquivos WMF (Windows Metafile). Referência no Red Hat: RHSA-2006:0194-4 apenas o usuário root). Isso é requerido Um agressor poderia incitar um usuário Referência no SuSE: SUSE-SR:2006:003 para preservar o comportamento espe- a abrir com o Wine um WMF especialrado quando a opção PermitRootLogin mente talhado, podendo levar à execução without-password é usada. ■ de código arbitrário com os direitos do O TeTex é uma implementação do TeX, que Referência no Mandriva: MDKSA-2006:034 usuário atual. ■ pega um arquivo de texto e um conjunto Referência no SuSE: SUSE-SR:2006:003 Referência no Debian: DSA-954-1 de comandos de formatação para gerar Referência no Gentoo: GLSA 200601-09 um arquivo .dvi (DeVice Independent). Referência no SuSE: SUSE-SR:2006:002 Várias falhas foram descobertas na O kdelibs contém as bibliotecas básicas biblioteca de análise de PDF do TeTex. do KDE. Um estouro de memória foi desUm PDF especialmente construído podecoberto. A parte afetada é o kjs, o inter- O ClamAV é um antivírus GPL. ria travar ou fazer o programa executar pretador JavaScript usado pelo Konqueror. A ZDI (Zero Day Initiative) reportou código arbitrário. O projeto Common Um agressor poderia criar um código cui- uma vulnerabilidade de estouro da Vulnerabilities and Exposures (cve.mitre. dadosamente talhado para explorar essa pilha no ClamAV. O problema se deve org) deu a essa falha os códigos CVE-2005falha. O projeto Common Vulnerabilities a uma checagem incorreta de limites, 3191 , CVE-2005-3192 , CVE-2005-3193 , CVEand Exposures (cve.mitre.org) deu a essa nos dados fornecidos pelo usuário, 2005-3624 , CVE-2005-3625 , CVE-2005-3626 , falha o código CVE-2006-0019 . ■ antes de copiá-los para um buffer in- CVE-2005-3627 e CVE-2005-3628 . ■ Referência no Debian: DSA-948-1 suficiente de memória. A falha ocorre Referência no Debian: DSA-937-1 Referência no Red Hat: RHSA-2006:0184-11 quando o ClamAV tenta manipular ar- Referência no Mandriva: MDKSA-2006:011 Referência no Suse: SUSE-SA:2006:003 Referência no Red Hat: RHSA-2006:0160-14 quivos UPX compactados.

❐ gd

❐ Wine

❐ TeTeX

❐ kdelibs

❐ ClamAV

http://supertuxbr.blogspot.com março 2006

edição 18

19

www.linuxmagazine.com.br

LM18_seguranca.indd 19

24.02.06 13:18:57


Notícias

Kernel

Notícias do Kernel Por Zack Brown

❐ Muro do silêncio

Se o desenvolvimento do kernel se A série Reiser 4 versus Kernel continua. manter fiel à tradição, eventualmente a Agora, a atitude de muitos desenvolvedores turma do Reiser vai enviar mais patches. Linux frente à inclusão da versão 4 do Eles serão criticados por qualquer um que ReiserFS parece ser de indiferença explícita. queira apontar o dedo ou serão ignorados, Para que ele seja incluído, “os programado- caso itens questionados anteriormente res do Reiser só precisam enviá-lo, pronto não tenham sido resolvidos. ■ para inclusão”, de acordo com membros da turma do kernel. Nossos amigos do kernel acham que já explicaram o que os O driver Raw está marcado para remocamaradas do Reiser precisam fazer. Seria ção desde a versão 2.6.3. Adrian Bunk até simples: basta que eles façam. Mas o arregaçou as mangas. Mãos à obra. Mas buraco é mais embaixo. limpar esse acúmulo será uma missão Geralmente, quando alguém envia uma muito mais complicada do que parecia. pergunta sobre o status de determinado O driver Raw permite a entrada e saída recurso do kernel, um responsável (ou al- de dados do tipo raw em dispositivos de guém com conhecimento sobre o assunto) bloco. Mas passar O_DIRECT para a função responde com um resumo do andamento de sistema open() dá no mesmo. Esse é dessa implementação. No caso do Reiser- o método preferido. Portanto, esse driver FS, além de não haver ninguém da área foi marcado como obsoleto, devendo ser respondendo, não há desenvolvedores removido gradualmente. Mas muitos prodispostos a sair das vagas especulações. gramas externos ainda não terminaram de Perguntas sobre detalhes mais precisos converter seus códigos para o O_DIRECT. são respondidas com referências aos ar- Até que façam isso, a eliminação desse quivos da lista. Essas mensagens antigas driver vai encontrar resistência. indicam que o progresso chegou a um O comentário de um dos mais respeitaponto sem avanços – ou, pelo menos, um dos desenvolvedores, Alan Cox, resume ponto que os desenvolvedores do kernel a situação: "Tornar obsoletos elementos consideram dessa forma. do tipo configuração interna é uma coiVamos contextualizar. O líder do pro- sa. Já quando há funções do núcleo do jeto ReiserFS tem a fama (justa? Isso é sistema envolvidas, é preciso um ciclo outra história) de ficar elogiando seu muito mais longo". próprio trabalho e desmerecendo a qualiIndependente de quaisquer motivos para dade do código do kernel em geral. Além manter o driver, essa confusão também disso, é conhecido também por insultar é uma tremenda chateação para Adrian, e ignorar mensagens do time do kernel, que gasta muito suor nessa faxina rotineipraticamente ordenando que eles ajudem ra. Principalmente agora, ao perceber que na inclusão do projeto. Como resultado, muito de seu trabalho foi em vão. pelo menos no momento, uma névoa de É o tipo de coisa que... acontece. Talvez silêncio caiu sobre os grupos. o driver Raw não se desgrude nunca mais

❐ Missão travada

20

do kernel. Freqüentemente, decisões sobre esse ou aquele recurso são feitas precipitadamente. 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 realmente remova o driver. ■

❐ Mata tudo Nosso 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. ➟

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Para a primeira categoria, Adrian está planejando um cronograma agressivo de extermínio. Na segunda categoria, ele quer especificar um intervalo em que bugs ALSA podem ser reportados. No último caso, drivers OSS que não tenham um equivalente ALSA serão mantidos no kernel. Surpreendentemente, cada uma dessas 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 comentários em alguns arquivos, presentes no kernel já há algumas versões – pelo menos desde a era BitKeeper. Esses arquivos têm chamativos comentários, com aparentes violações de copyright. Como esse: “this is unpublished proprietary source code of Motorola” (isso é código fonte proprietário e não publicado 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 diretório. Mas Greg e outras pessoas acharam 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 subsidiária da Motorola, com data de julho de 2004. Matt Waddel, da Freescale, se ofereceu para “dar um tapa” no comentário, deixando-o mais claro. Mas como Alan Cox apontou, não há nenhum problema 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. ■

22

Kernel

❐ Abre-te Silicon Image Após acalorada discussão nos bastidores, a Silicon Image permitiu que Jeff Garzik distribua a documentação sobre o funcionamento 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!

A idéia vingou e, com a ajuda de outros desenvolvedores, mais cedo ou mais tarde, isso vai fazer parte do kernel. ■

❐ Framebuffer obsoleto Michael Hanselmann enviou um patch que remove um antigo driver framebuffer para ATI Radeon, que já havia sido substituído por um novo. O driver removido estava marcado como “Old”, sem receber atualizações significativas desde 2002. A reação de desenvolvedores veteranos, como David S. Miller foi muito positiva, embora o novo driver també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. ■

Kumar Gala descobriu que não havia nenhum mantenedor responsável pelos drivers watchdog. Basicamente, watchdogs são dispositivos de hardware que disparam um reset no programa principal devido a algum problema. Calma, nada de pânico. Foi apenas um Michael Buesch vem lutando para reesdescuido. Arnd Bergmann confirmou crever a API WE (Wireless Extension), um que Wim Van Sebroeck é quem costuma conjunto genérico de chamadas para facuidar disso. O próprio Wim tratou de zer interface com redes wireless. A atual se apressar para “autografar” o arquivo API foi escrita por Jean Tourrilhes sob MAINTAINERS. ■ os auspícios da Hewlett Packard. Mas a versão de Michael se baseia em portas do tipo netlink, uma maneira mais limpa de Randy Dunlap enviou um patch para mo- comunicação entre o kernel e o espaço ver a configuração SATA para bem longe do usuário (userspace). Embora, essa versão ainda não esteja da zona SCSI, ganhando sua própria seção. A lógica por trás dessa idéia é que pronta para uma bateria de testes alfa, as configurações SCSI são apenas um vamos torcer para que o código de Midetalhe que os usuários não precisam chael traga uma interface mais simples conhecer para que usem discos SATA. e fácil entre o kernel e qualquer rede Embora essa não seja uma lógica sem fio das redondezas. ■ reconhecida em todo o universo, ninA lista de discusguém torceu muito o nariz. Muitos até são linux-kernel ofereceram sugestões de pequenas meé o núcleo das lhorias no patch. Mas o próprio Randy atividades de desenvolvimento já puxou o breque. Ele não está interesdo kernel. Uma sado em se descabelar com a perfeição das poucas desse patch. Alegou que queria apenas pessoas corajosas ouvir a opinião da comunidade sobre o suficiente para a idéia, não tendo como objetivo ter perder-se nesse oceano de mensagens e manter-se atualiseu patch aceito e – talvez aí esteja o zada é Zack Brown. problema! – aperfeiçoado.

❐ API Wireless Extension

❐ SATA=SCSI?

Sobre o autor

Notícias

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


VoIP

Capa VoIP em casa

24

Alô, é o Linux?

30

Bem conectado

32

Livre para ligar

36

Monte um PBX com o Asterisk.

Ferramentas Linux para Voz sobre IP

Alô mundo!

KPhone: um softphone versátil.

Telefonia pela Internet com o Linphone. Conheça o OpenWengo e o Ekiga.

O Linux sempre foi rápido em

incorporar novas tecnologias. Com a revolução VoIP não é diferente. Por Joe Casad

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. Muitas 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 baseada 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. ■

23

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Capa

Asterisk

VoIP em casa

Monte um sistema VoIP doméstico com o Asterisk

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

Por Martin Loschwitz

S

istemas VoIP possibilitam estabelecer ligações de áudio bastante 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 softphone (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

24

área está disponível gratuitamente na Internet. Trata-se do Asterisk [2], hoje um sinônimo de software de telefonia. O Asterisk 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 Internet – é 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 moderno RDSI (Rede Digital de Serviços Integrados – ou ISDN, na sigla em inglê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, dependendo 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 massa A dificuldade para se configurar esse sistema 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 Asterisk 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 cenário, o acesso à Internet geralmente passa por um router com firewall e NAT (Network Address Translation). Aqui começa o problema. O protocolo SIP não conversa muito bem com o NAT, então será preciso fazer alguns “buracos” no firewall 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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Asterisk

Capa

Instalação

O Asterisk funciona como um servidor register => nome:senha@servidor SIP/U extension Instalar o Asterisk não é complicado, já proxy. Ele redireciona conexões locais que a configuração só será feita depois. para a Internet e conexões exteriores A maioria das distribuições incluem um para o respectivo telefone. Ao configurar Se você tem contas em vários provepacote do programa. Como o Asterisk se o arquivo sip.conf, tenha os dados do dores, será preciso uma linha para cada integra bem ao Debian, usaremos essa seu provedor VoIP. um. Por enquanto vamos deixar de lado distribuição como exemplo desse artia parte extension. Mais tarde, isso é o go. Mas os arquivos de configuração e que vai informar ao Asterisk quais telefoseus parâmetros são os mesmos, inde- Os arquivos de configuração são organiza- nes/PCs vão se conectar a determinados pendente da distribuição Linux usada. dos em seções. A primeira seção do sip.conf servidores SIP (dos provedores VoIP). Por Para o caso da compilação do Asterisk é chamada [general], como nos outros ar- enquanto, digite apenas o seu nome de a partir do código fonte, leia o quadro 1 quivos dos outros módulos. Por padrão, ela usuário no lugar de “extension”. (“Compilando o Asterisk”). já vem preenchida. Mas teremos que fazer Após a instalação do Asterisk no De- algumas mudanças. Em seu editor preferibian, haverá alguns arquivos .conf em do, abra o sip.conf e localize a linha con- O próximo passo é modificar o sip.conf /etc/asterisk. O Asterisk é um aplica- tendo a expressão disallow=all. Remova o para permitir que o provedor VoIP envie tivo minimalista: contém apenas uma ponto-e-vírgula (“;”) no início dessa linha comandos ao Asterisk. Ele também possidúzia de pequenos módulos, que são (ele serve para “comentar” a linha, para bilita entradas do tipo peer (ponto/ramal) carregados “on the fly” quando neces- que ela não seja lida pelo sistema). Repita para organizar chamadas. Uma entrada sários. O compacto “kernel” do Asterisk isso para as próximas duas linhas, que desse tipo se parece com a seguinte: contém as funções centrais que contro- começam com language e adicione uma lam esses módulos. Há um arquivo de linha com a expressão allow=alaw. [Provedor VoIP] type=peer configuração para cada um deles. Isso Se o servidor Asterisk usa um router secret=Senha evita a necessidade de um arquivo de NAT para acessar a Internet, será preciso username=nome configuração global e gigantesco, em- “descomentar” (tirar o ponto-e-vírgula) a host=servidor VoIP bora isso embole um pouco o diretório linha nat=no e mudar “no” para “yes”. Isso fromuser=nome /etc/asterisk. especifica que o Asterisk deve manipular fromdomain=Servidor VoIP A maioria desses arquivos não nos conexões para dentro e para fora da rede. insecure=very interessa – pelo menos para este tutorial. Eles se referem a partes do Asterisk que não se costuma usar. Mas O Asterisk se loga no servidor SIP do É preciso uma entrada como essa, há duas exceções: o sip.conf e o provedor VoIP como se fosse um telefone. mas com nomes diferentes para cada extensions.conf. A configuração referente a esse login linha do tipo register em sip.conf, no também fica no sip.conf. Cada linha final desse arquivo. Certifique-se de referente a um provedor VoIP começa que os valores batem com os das linhas A maioria dos provedores VoIP usam o com “register” e segue a sintaxe: register no sip.conf. ➟ protocolo SIP. Mas existem outros, como Quadro1: Compilando o Asterisk o IAX2 e SCCP. Nosso artigo terá como foco o SIP. Para isso, o módulo necessáPara compilar a partir do código fonte, use o seguinte procedimento (independente da distribuição rio é o chan.sic. O arquivo de configuutilizada). Baixe o código fonte e descompacte o pacote com o comando tar cvfz nomedoarquivo . Use o comando cd para entrar no diretório com o código e inicie o processo com o comanração correspondente é o sip.conf. do make. Finalmente, digite make install (como root) para finalmente instalar o Asterisk no Os parâmetros em sip.conf permilugar adequado do seu sistema de arquivos. tem que o Asterisk se logue no serviCuidado: os arquivos não ficam no diretório /usr; em vez disso, são colocados na raiz (/). Para mudor VoIP como se fosse um telefone. De dar esse (mal) comportamento, abra o arquivo Makefile em um editor e modifique a linha que modo semelhante, os usuários da rede começa com INSTALL_PREFIX=, digitando “/usr/local” logo após o sinal de igual. Isso evita que local vão se logar no servidor Asterisk arquivos do sistema sejam prejudicados sem aviso e permite uma remoção mais fácil do Asterisk. como se fossem telefones.

Seção geral

Acesso para o provedor

Identifique-se

sip.conf

25

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Capa

Asterisk

Acrescentando telefones

mentando progressivamente. O mesmo A próxima e última etapa é acrescentar vale para o número da mailbox (por linhas para permitir que telefones SIP exemplo: 2001, 2002... e 101, 102...). da rede local possam se registrar no Após configurar a seção [general] servidor. Eles podem ser tanto apare- e criar contas para o servidor VoIP e, lhos VoIP (figura 1) quanto softphones pelo menos, um cliente local, salve o (figura 2). No final do arquivo, escreva arquivo sip.conf. A listagem 1 mostra primeiro um nome para o PC/apare- um exemplo didático desse arquivo. lho da rede local: [Nome]. Você pode escolher qualquer nome, com letras e números. Uma entrada completa O dialplan (plano de discagem) é seu fica mais ou menos assim (“2000” é painel de conexões para ligações via o nome do PC/aparelho): Asterisk. Ele especifica como direcionar chamadas externas e locais. Um plano [2000] de discagem é complexo por natureza, type=friend mas nada que a maioria dos usuários secret=senha não consiga administrar. mailbox=100 O plano fica em /etc/asterisk/excanreinvite=yes tensions.conf. O arquivo padrão no context=default Debian possui muitos exemplos inúteis. insecure=very Talvez seja melhor renomear o arquivo host=dynamic para extensions.conf.old e criar um do zero. Esse arquivo começa, novaA maneira para se configurar pontos mente, com uma seção [general], que adicionais é similar. Você só precisa es- sempre inicia assim: pecificar um nome de usuário e senha para cada entrada e mudar o número [general] static=yes no campo mailbox. Uma maneira fácil é usar nomes numéricos e apenas ir au- writeprotect=no

Criando um dialplan

O comando padrão no extensions. conf é exten. Ele é chamado tanto para

ligações externas, quanto locais; e direciona 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.

Default A primeira coisa que temos a fazer é criar uma seção [default]. Ela será usada para manipular ligações não definidas. Teoricamente, você pode dividir o extensions.conf em quantas seções quiser, mas limitaremos isso para manter o arquivo simples. A primeira parte da seção [default] é genérica e obrigatória. Ela contém o chamado 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 provedor “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.

exten => _0.,1,Dial(SIP/U ${EXTEN:1}@ProvedorVoIP)

26

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Asterisk

Capa

Esse comando é menos complicado que o “0” foi usado para se obter linha. do que parece. _0. significa que isso A expressão @ProvedorVoIP especifica será feito com todas as ligações que co- o provedor VoIP para onde a chamada meçam com “0”. 1 indica a prioridade será direcionada. (“1” nesse caso, já que há pouco o que Você pode repetir isso para quanse fazer com uma ligação para fora, a tos provedores desejar. Mas use núnão ser direcioná-la para fora). meros diferentes para se obter linha Dial(SIP/${EXTEN:1}@ProvedorVoIP) externa, de acordo com cada proespecifica que o comando de discagem vedor. E insira o nome do provedor, interno do Asterisk deve ser usado. SIP de acordo com o nome especificado informa que o protocolo SIP deve ser para ele em sip.conf. utilizado para fazer a chamada. A barra (“/”) separa o protocolo do número a ser discado. Nesse caso, ele está na variável Se você iniciar o Asterisk agora, vai ${EXTEN}. O :1 remove o primeiro dígito poder fazer ligações, mas não receber. do conjunto de números a ser discado, já Esse é o obstáculo final. Nas linhas do

Telefonemas de fora

Listagem 1: sip.conf (provedor Exemplo) 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

nonumber [general] port = 5060 bindaddr = 0.0.0.0 disallow=all allow=ulaw allow=alaw maxexpirey=3600 defaultexpirey=120 context=default language=pt (br)

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. 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 linhas a seguir. Apenas substitua “Nome” pelo nome de usuário no provedor VoIP (o último valor da linha register):

register => 5552XXX:senha@provedorexemplo.com.br/5552XXX [provedorexemplo] type=peer secret=SENHA username=5552XXX host=provedorexemplo.com.br fromuser=5552XXX fromdomain=provedorexemplo.com.br insecure=very

exten => Nome,1,Dial(SIP/2000,15,tTr) exten => Nome,2,VoiceMail,u2000 exten => Nome,102,VoiceMail,b2000 exten => Nome,103,Hangup

[2000] type=friend secret=Senha mailbox=100 canreinvite=yes context=default insecure=very host=dynamic

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. ➟

27

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Capa

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 Asterisk Como estamos nos baseando na distribuiçã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 comportamento, é 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 comando /etc/init.d/asterisk start.

Asterisk

Listagem 2: extensions.conf 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

nonumber [general] static=yes writeprotect=no [default] exten => 600,1,Playback(demo-echotest) exten => 600,2,Echo exten => 600,3,Playback(demo-echodone) exten => 600,4,Goto(s,6) exten => 2999,1,Ringing exten => 2999,2,VoicemailMain,s2000 exten => _0.,1,Dial(SIP/${EXTEN:1}<\@>provedorexemplo) exten exten exten exten

=> => => =>

5552XXX,1,Dial(SIP/2000,15,tTr) 5552XXX,2,VoiceMail,u2000 5552XXX,102,VoiceMail,b2000 5552XXX,103,Hangup

Conveniência O Asterisk tem uma secretária eletrônica virtual 100% funcional, que precisa ser habilitada para cada telefone/usuário. O programa adicional addmailbox ajuda muito 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 caixa de mensagens (mailbox) “100” para o usuário “2000”. Como root, digite addmailbox no terminal. Se o programa perguntar 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 secretá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 personalizadas 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 postal

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

28

Finalmente, é preciso fazer com que o Asterisk toque as mensagens gravadas. Para isso, é preciso novamente modificar o arquivo extensions.conf. Acrescente as seguintes linhas:

exten => 2999,1,Ringing exten => 2999,2,VoicemailMain,s2000

Agora, quando você discar 2999 de um telefone interno, será automaticamente 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), é possí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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Capa

KPhone

VoIP com KPhone

Alô, é o Linux? 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

O

KPhone [1] é uma ferramenta simples 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. Reduzir a qualidade manualmente pode ser útil para diminuir a banda exigida

30

pelo KPhone, mas a maioria dos usuários pode usar a opção padrão sem problema nenhum.

Senha insegura Depois de digitar seus dados, basta pressionar o botão Register para se conectar com o provedor. A opção Auto Register faz o programa se conectar com o provedor 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 arriscada já que a senha será gravada em texto puro, sem proteção nenhuma, no arquivo de configuração do KPhone. E esse arquivo ainda tem permissão de leitura universal. 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 automaticamente 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 corretos 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).

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


KPhone

Primeira ligação Apesar 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 fazer 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 exigir pagamento antecipado e, enquanto isso não for feito, só são possíveis as

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

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 tradicionais. 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. Figura 2: Especificando parâmetros do servidor STUN nas configurações de portas (Socket). O redirecionamento de chamadas de emergência (quando disponíveis nos provedores) também pode se basear no endereço fornecido pelo cliente. Como sonora tocará via placa de som. Uma a telefonia via Internet pode ser feita de desvantagem é que o KPhone não pode qualquer parte do mundo, pode levar ser iniciado automaticamente como um algum tempo para que chamadas de serviço no painel do KDE. Isso tornaria emergência sejam redirecionadas para as coisas mais fáceis, para deixar o proos serviços públicos locais, de onde a grama sempre ativo. chamada está sendo feita. O procediUm problema para usuários brasimento usado em ligações de celulares leiros pode ser a tradução incompleta. ou linhas convencionais faz mais sen- Além disso, em nossos testes, surgiram tido, já que elas são direcionadas para caracteres estranhos no lugar de letras os serviços da região onde o telefone acentuadas na interface. ■ está localizado.

Livro de contatos fechado O 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, selecione Preferences | Phone book. Aqui é possível associar telefones/URLs para cada contato. O KPhone mostra uma pequena 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

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

Sobre o autor

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 Preferences. 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 recurso, mais tarde. Será preciso ainda modificar a configuraçã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.

Capa

Mirko Dölle dirige nosso Centro de Competência de Hardware, na Alemanha. 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 alquimista e transforma ouro em chumbo...

31

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Capa

Linphone 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 conectado O

Instalação

método mais popular de se beneficiar da tecnologia VoIP é atra- O código fonte para versão 1.2.0 e vés dos softphones. Basicamente, suas bibliotecas podem ser baixados tratam-se de programas que podem fazer em [2]. O Mandriva 2006 vem com a e receber ligações. O Linphone [1] é um versão 1.1.0., assim como o Gentoo dos mais populares aplicativos desse Linux. Nas versões 9.3 e 10.0 do Suse, tipo no Linux. Apesar de ter sido feito há o Linphone 1.0.0, que também pode para Gnome, pode ser usado no KDE sem ser usado sem problemas. No Debian problemas. Neste artigo, vamos abordar (repositório testing) e no Ubuntu 5.10, a instalação, configuração, o uso com a versão do Linphone é a 1.0.1. um provedor de VoIP e a resolução de Para quem prefere compilar, é improblemas no Linphone. portante seguir a ordem correta de Apesar de se tratar de um softphone, procedimentos. O Linphone usa a biainda será preciso algum “hardware” blioteca Libosip2 para se comunicar para rodá-lo: um fone de ouvido, um com o provedor VoIP. Ela precisa ser microfone e uma placa de som. Já se instalada antes. você quiser usá-lo como um substituto Como root, descompacte o pacote completo do telefone, será necessário com o código fonte usando o comando assinar um plano de algum provedor tar xzf libosip2- 2.2.0.tar.gz e VoIP. Para os exemplos nesse artigo, va- entre no diretório criado. Os seguintes mos nos referir a duas contas fictícias comandos vão compilar e instalar a em dois provedores internacionais: o biblioteca no sistema: Sipsnip e o Purtel (o modo de operação deles é similar ao de muitos provedores ./configure --prefix=/usr make brasileiros). Nosso usuário fictício faz make install ligações via Sipsnip, mas precisa receber ldconfig telefonemas via Purtel.

32

Agora é a vez do Linphone. Descompacte o arquivo com o comando tar xzf linphone-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 desenvolvimento – 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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Linphone

Criando uma conta

Linha direta

Para 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 provedor Sipnip. Já no provedor Purtel, o endereç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 chamado Preferences. Clique primeiro na aba SIP e digite seu ID ou seu endereço SIP. Em nosso exemplo, precisamos colocar pinguim@sipnip.com em Your sip address:. Não esqueça de desmarcar a opção Automatically guess a valid hostname, 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 proxy/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 gravados e não será mais preciso digitá-los.

Se 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 carregar esse contato, deixando a ligação pronta para ser feita. Se você marcar a opção Show more, serã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á online. 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 configuraçã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. ➟

Capa

Quadro 1: Números de telefone e SIP IDs No 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.

33

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Problemas A 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 ligações para um ou mais pontos. Mas ele apenas manipula a coordenação, ou seja, a sinalização da ligação. O transporte 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 provedor 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

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

34

Linphone

provavelmente está na placa de som ou nos codecs. Para confirmar se o problema está mesmo na placa, 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. Figura 3: Usuários do Gnome podem usar o Gnome-volume Se o arquivo de gravação para mudar as configurações de som. parecer vazio ao ser tocado, ajuste o volume no Kmix (figura 2) do KDE ou no Gnome-volume (figuSe encontrar problemas, tente mudar ra 3). As opções mostradas dependem de a ordem dos codecs na aba Codecs do sua placa de som. A aba Output permite item de menu Preferences. A maioria dos que você emudeça a saída do microfone programas usa PCMU e PCMA. Mova na sua placa de som, o que pode ser uma essas opções para o topo da lista se os boa idéia para não ter que ouvir sua pró- problemas continuarem. O melhor codec pria voz capturada pela placa. A aba Input em termos de qualidade é o Speex, com permite que você aumente gradualmente sampling rate de 16 kHz. o volume do microfone e, possivelmente, o volume da captura (Capture). O ícone do microfone abaixo desses O Linphone é hoje um programa controles deve estar habilitado. Se apare- maduro. Talvez, por isso mesmo, cer uma aba Switches (ou Alternadores), seu ritmo de desenvolvimento diuse a opção Mic Boost para aumentar o minuiu. Mesmo assim muitos usuáganho no sinal do microfone. rios ainda gostariam que o aplicativo Use a aba Options para selecionar o tivesse melhor compatibilidade com dispositivo de gravação, ou seja, seu firewalls. Isso poderia ser feito com microfone. No KDE, tenha certeza de a implementação do protocolo STUN. que os LEDs verdes para Input e Capture Felizmente, parece que os desenvolestão desligados; os LEDs vermelhos, vedores vão adicionar isso logo logo. por outro lado, devem necessariamente No geral, o Linphone é um softphone estar acesos. Ambos precisam estar em muito útil e conveniente. ■ um nível alto de gravação. Novamente, Informações você pode precisar selecionar a fonte e habilitar a opção Mic Boost na aba Swi- [1] Linphone: www.linphone.org tches (Alternadores). [2] Código fonte do Linphone: Métodos de compressão (ou codecs) rasimon.morlat.free.fr/download ramente causam problemas em VoIP. Mas, como há vários tipos de codecs, em alguns Simone Schäfer estuda Computação casos um lado da comunicação pode não Gráfica e passa a maior parte de seu reconhecer o que estiver sendo usado do tempo ajustando seu sistema Arch Linux. outro. No entanto, o Liphone possui uma Quando não está fazendo isso, também bela coleção de codecs e nenhum problegosta de testar outras distribuições. ma do tipo ocorreu em nossos testes.

Conclusão

O autor

Capa

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


FÁCIL DE GERENCIAR MUDANÇAS EM DIAS, NÃO EM MESES REDUÇÃO DO CUSTO TOTAL DE PROPRIEDADE

LINUX OU WINDOWS SERVER

VEJA OS FATOS. O COC DIMINUIU EM 30% OS CUSTOS DE GERENCIAMENTO AO ADOTAR O WINDOWS SERVER SYSTEM EM VEZ DO LINUX. “Utilizávamos o Windows Server System™ em baixa plataforma e em algumas aplicações, mas também tínhamos soluções rodando em Linux. Essa diversidade acabava dificultando o processo de gerenciamento da rede e gerava altos custos operacionais. Ao repensar a forma como nossa estrutura de TI havia sido concebida, chegamos a cogitar a possibilidade de adotar apenas o Linux. Porém, acabamos descartando essa idéia ao considerarmos que a desejada redução de TCO só seria alcançada com o Windows Server.” - Gustavo Hubalde, Diretor de TI, COC. Para obter o estudo completo do caso e outras conclusões de terceiros, visite microsoft.com/brasil/fatos

http://supertuxbr.blogspot.com

© 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 Estados Unidos e/ou outros países. Os nomes das empresas e produtos reais mencionados aqui podem ser marcas comerciais de seus respectivos detentores.


Capa

Alternativas livres para telefonia web

Alternativas livres para o Skype

ww

sx w.

c.h

u–

P

vi äi

Ry

ti v

r aa

a

Livre para ligar

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

N

a 15ª edição da LM, no artigo pode usar qualquer provedor de serviços versão preliminar). Do ponto de vista da “Alô? É da Internet?” [1] , à página que opere usando esses padrões. tecnologia, vale ressaltar que o progra85, o autor Rafael Rigues realizou O código fonte do WengoPhone está ma utiliza um codec de áudio de código testes com os dois aplicativos VoIP mul- licenciado sob a GPL. O aplicativo traz aberto chamado Speex, sobre o qual não tiplataforma mais populares atualmente recursos de telefonia IP, mensageiro ins- incide nenhum tipo de patente. entre usuários desse tipo de tecnologia: tantâneo, vídeo conferência e SMS. A operação do programa é bastante o Skype e o Gizmo. No mesmo artigo, o Para usar os serviços da prestadora intuitiva. Basta entrar o nome do usuáautor comenta que nenhum desses apli- Wengo, é necessário criar uma conta na rio com quem se deseja falar no campo cativos é Software Livre, completando o sua página web e carregá-la com créditos correspondente – ou um número de telecomentário com a seguinte afi rmação: para efetuar esse tipo de conexão – a pro- fone comum – e pressionar o botão com “os puristas irão, com certeza, reclamar vedora já lhe fornece € 0,20. As chamadas a imagem de um telefone verde. Uma e indicar um sistema obscuro com me- são realizadas usando por padrão a porta janela vai se abrir e mostrar o status da tade dos recursos como a ‘alternativa 5060. Se você estiver atrás de um firewall, conexão. Quando o usuário atender do perfeita’”. Resolvemos aceitar o “desafio” pode realizar as chamadas através de um outro lado, uma indicação do tempo de e buscar pelas alternativas realmente túnel HTTP. O sistema fornece suporte conexão será mostrada. ➟ livres – e encontramos várias. também para conexões via servidor proxy e para criptografia via SSL. O WengoPhone é o softphone livre criaA interface gráfica do prodo no âmbito do projeto OpenWengo [2] , grama “clássico” multiplauma comunidade patrocinada pelo pro- taforma é escrita em C++ vedor VoIP francês Wengo, subsidiária usando as bibliotecas Qt, da do grupo Neuf Cegetel. Da mesma forma Trolltech. No site do projeque o Skype usa uma rede própria para to há pacotes para Linux a comunicação de seus usuários, os usu- (DEB e RPM), Windows® ários do WengoPhone também dispõem e Mac OS X. Uma grande da rede Wengo para se comunicar e fazer novidade é que o sistema chamadas para telefones fi xos conven- está evoluindo para uma cionais. A boa notícia é que, ao contrário interface baseada em XUL, do Skype, toda essa infraestrutura é ba- a ser carregada como extenFigura 1: O OpenWengo não deve nada para as soluções seada em padrões abertos (SIP e H.323), são do navegador Mozilla proprietárias similares disponíveis no mercado. de modo que com o WengoPhone você Firefox (já disponível em

WengoPhone

36

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


LinuxWorld Conference & Expo –

Worldwide Series

Mexico City Sydney Boston Madrid Kuala Lumpur Toronto Shanghai Milan Johannesburg São Paulo Stockholm Tokyo Seoul Warsaw Singapore Beijing San Francisco Moscow Utrecht London Guangzhou Cologne

February 14 – 17, 2006 March 28 – 30, 2006 April 3 – 6, 2006 April 18 –19, 2006 April 20, 2006 April 24 – 26, 2006 April 2006 May 15 – 16, 2006 May 16 – 19, 2006 May 23 – 25, 2006 May 31, 2006 May 31 – June 2, 2006 June 5 – 7, 2006 June 21 – 22, 2006 July 19, 2006 August 2006 August 14 – 17, 2006 September 4 – 6, 2006 October 11 – 12, 2006 October 25 – 26, 2006 November 2006 November 14 – 16, 2006

www.linuxworldexpo.com.mx www.linuxworldexpo.com.au www.linuxworldexpo.com www.linuxworldexpo.com www.linuxworldexpo.com www.linuxworldcanada.com www.linuxworldchina.com www.linuxworldsummit.it www.linuxworldexpo.co.za www.linuxworldexpo.com www.linuxworldexpo.com www.linuxworldexpo.com www.linuxworldkorea.com www.linuxworldexpo.com www.linuxworldexpo.com www.linuxworldchina.com www.linuxworldexpo.com www.linuxworldexpo.ru www.linuxworldexpo.nl www.linuxworldexpo.co.uk www.linuxworldchina.com www.linuxworldexpo.de

http://supertuxbr.blogspot.com World’s leading Trade Event for Linux and Open Source in business

INTERNATIONAL MEDIA SPONSOR


Capa

Alternativas livres para telefonia web

Ekiga

assistente analisa suas configurações O Ekiga [3] é o novo nome que o bom e de áudio e vídeo, esta última para o velho GnomeMeeting [4] ganhou a partir caso de comunicação com imagem via da versão 2.0. Sua versão preliminar está webcam. Em seguida, a janela do aplidisponível para download para diversas cativo se abre e você já pode começar versões de Debian, do Ubuntu e do Fe- a se comunicar. O aplicativo também é capaz de fazer dora em [5]. Os recursos do aplicativo, no que tange à conectividade, deixam chamadas do PC para aparelhos de telefopoucos desejos não realizados: compa- ne tradicionais. Se você já não dispõe de tibilidade com padrões H.323v4 e SIP, uma conta em uma operadora VoIP que suporte a conexões via proxy, redire- disponibilize esse serviço, o aplicativo cionamento e monitoramento de cha- sugere a você que abra uma conta “PCmadas, ligações para a rede telefônica para-Telefone” junto a uma provedora convencional, faixa de portas de conexão parceira do projeto, que é a Diamondcard configurável, mensageiro instantâneo Worldwide Communication Service™. Nesintegrado, suporte a NAT transparente sa provedora você pode comprar “minutae assistido (STUN – Simple Traversal of gem” (mínimo de 10 dólares) e gerenciar UDP over NATs) e a conexões de áudio e a sua conta telefônica. vídeo, além de compatibilidade com IPv4 e IPv6, para citar apenas alguns. A interface gráfica do programa tam- O Instituto Nokia de Tecnologia de Mabém é simples e intuitiva. A nacionali- naus criou um framework VoIP completo, zação para o português do Brasil ainda o Tapioca [6], cujo objetivo principal é está um pouco “capenga”, mas apesar permitir a integração e o desenvolvimendas misturas com o inglês em alguns to de recursos VoIP a qualquer tipo de elementos da interface, serve plenamente aplicativo, através da disponibilização aos seus propósitos. de uma interface modular para diferentes A primeira vez que o programa é exe- protocolos, tais como SIP e H.323. cutado, um assistente é chamado para a Atualmente em seus estágios iniciais de configuração inicial do aplicativo. Esse desenvolvimento, não há pacotes preparaassistente compreende 10 passos, nos dos para nenhuma distribuição Linux do quais diversas informações são solici- Tapioca. Tudo tem que ser compilado ditadas ao usuário. Entre elas, há uma retamente dos fontes, inclusive as bibliosolicitação dos dados de sua conta em tecas e aplicativos dos quais ele depende. um provedor VoIP compatível com SIP Além disso, essa compilação deve ser feita ou H.323. Caso você ainda não tenha em uma seqüência determinada e versões nenhuma, há um vínculo nessa mesma específicas de cada uma das bibliotecas janela de diálogo para a página web do deve ser utilizada. Há um cliente para o provedor do próprio projeto Ekiga. O sistema escrito em GTK+. Apesar de já estar disponível para a assistente verifica também se o seu PC se encontra atrás de um firewall reali- plataforma de desenvolvimento Maemo zando NAT e se há restrições de acesso do Nokia 770 Internet Tablet, a análià porta padrão de comunicação VoIP via se do sistema fugiria ao escopo deste protocolo SIP, caso em que o próprio artigo, de modo que pretendemos deassistente sugere a ativação de suporte dicar um artigo específico para a sua STUN, de modo a permitir comunica- configuração em uma edição futura da ção através do firewall. Por último, o Linux Magazine.

Tapioca VoIP

38

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

Conclusão Podemos 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 tecnologias livres de patentes. Tanto o OpenWengo quanto o Ekiga: estão equipados para atender às necessidades 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 rapidamente crie raízes em inúmeros projetos da comunidade. ■

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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Análise

Arch Linux

Do arco da velha No Arch Linux, menos é mais

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

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 configuraçã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-

40

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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Análise

Arch Linux

plo, o suporte hotplug e o gerenciamento mais eficiente de pacotes. Além disso, o Arch é otimizado para processadores i686, trazendo mais desempenho que distribuições projetadas para rodar em uma gama maior de arquiteturas. Usuários do Arch garantem que o sistema possui “a estabilidade e a simplicidade 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 vantagem é 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ção Ao 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 sistema 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, primeiro é necessário particionar o disco. Isso pode ser feito com o cfdisk. Se preferir, é possível deixar o Arch tomar para si todo o disco rígido. Após criar as partições e definir os pontos de montagem, é preciso selecionar os pacotes.

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

Gentoo

O Gentoo tem mais programas disponíveis para instalação. Já o Arch permite 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.

Crux

O 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”.

Slackware

O 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-

O recomendável é que você instale os pacotes básicos nesse estágio, deixando o restante para quando o sistema já estiver rodando corretamente. Depois que o sistema básico estiver instalado, escolha um kernel configurado para IDE ou SCSI (que você vai precisar, caso tenha dispositivos SATA). É possível recompilar um kernel mais a seu gosto, se preferir. Contudo, nesse estágio, faz mais sentido escolher um kernel pronto antes de fazer 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. ➟

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.

Debian

O 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 Ubuntu

O Arch tem uma base estrutural mais simples que a do Ubuntu. Se você quiser compilar seu próprio kernel, testar projetos CVS, ou compilar 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.

41

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Análise

Arch Linux

Tabela 1: Scripts de inicialização do Arch Será apresentada uma lista de arquivos de configuração que precisam Arquivo Função ser editados. Há comentários úteis /etc/rc.sysinit Responsável pelo carregamento e configuração do sistema dentro desses arquivos, mas ajuda /etc/rc.single Script para o nível de sistema de usuário único (single user) muito se a pessoa souber a função /etc/rc.multi Nível multiusuário de cada um deles. Quem já tiver configurado sistemas Linux, sem a /etc/rc.local Nível multiusuário local ajuda do instalador gráfico, não vai /etc/rc.shutdown Script para desligar o sistema estranhar essa parte. Por exemplo, o /etc/rc.d/* Daemons configurados no sistema 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 principal filosofia do Arch é dar ao usuário o controle A ordem dos serviços no rc.conf é importante, já que eles completo da configuração do sistema. Como vimos durante são iniciados exatamente na ordem em que foram colocados. a instalação, nada é configurado automaticamente e nenhum Não há checagem de interdependência de serviços. Então, se serviço é acionado, a não ser que você mesmo o faça. Isso um deles não iniciar, vale a pena verificar se a ordem está permite que os usuários entendam o funcionamento do Arch, correta. Por último, verifique (e depois verifique novamente) e do próprio Linux, bem rápido. as mudanças que você fez. O instalador vai prosseguir mesmo O Arch usa o sistema de inicialização do tipo BSD, que você não tenha editado todos os arquivos importantes também usado no Slackware. Para alguns, esse é “O – nesse caso, certamente ocorrerão erros. Verdadeiro Sistema de Inicialização”, embora outros Quando terminar o processo de instalação, reinicie a prefiram o System V, usado por um número maior de máquina. Agora já temos um sistema Arch mínimo. O distribuições Linux. Esse último sistema também pode próximo passo é atualizar os pacotes com a ferramenta ser usado, e seus scripts estão em /etc/rc.d. 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á A ferramenta para gerenciar pacotes binários é o pacman, problema nenhuma com esse tipo de atualização. Já, se equivalente ao apt-get do Debian. O formato dos pacotes é escolheu devfs, serão necessárias etapas adicionais para tar.gz e o banco de dados é baseado em texto. converter o sistema devfs para udev. Como no apt-get, o pacman permite a instalação/remoçã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 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 para suas últimas versões. Instalar também é fácil: todas as outra distribuição com Gnome ou KDE. dependências serão resolvidas e baixadas automaticamente.

Inicialização

Gerenciamento de pacotes

42

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Arch Linux

Análise

Listagem 1: /etc/pacman.conf [repository-name] Server = ftp://server.net/repo [current] # Add your preferred servers here, they will be used first Include = /etc/pacman.d/current

O pacman é configurado no arquivo /etc/pacman.conf. Nesse 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 “congelar” 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

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).

Código fonte

Na seção de repositórios, é possível defini-los tanto diretamente quanto “chamar” outro arquivo. Essa última opção é útil para os repositórios oficiais, que contam com muitos espelhos, conforme exemplifica a listagem 3.

O Arch também fornece uma ferramenta para gerenciamento de pacotes com código fonte. Trata-se do ABS (Arch Build System), que é quase igual ao emerge do Gentoo. Ele foi projetado para empacotar programas fresquinhos (que ainda não es-

43

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Análise

Arch Linux

Tabela 2: Opções do pacman Opção Função -Sy -S pacote -S extra/pacote -Su -A /<caminho>/ pacote-version.pkg.tar.gz

Sincroniza a lista de pacotes Instala, reinstala ou atualiza um pacote Instala um pacote do repositório extra Atualiza todos os pacotes instalados Instala um pacote local

-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.

hwd

Por padrão, o Arch usa os scripts de detecção de hardware do tipo hotplug, os -Rs pacote Remove um pacote e suas dependências, se possível mesmos da maioria das distribuições. Esse sistema simplifica os módulos de -Ss pacote Procura por um pacote configuração, detecta dispositivos au-Si pacote Exibe as informações de um pacote tomaticamente e carrega os módulos -Scc Limpa o cache dos pacotes baixados necessários. Contudo, os desenvolvedores do Arch consideram o hotplug muiPara instalar programas com o ABS, to lento. Então, foi criado um caminho tão disponíveis em forma binária), para customizar pacotes existentes de acordo entre no diretório do pacote desejado próprio: chamado hwd. Ao contrário do com seus parâmetros ou até recompilar e execute o comando makepkg (isso hotplug, o hwd executa o modprobe em todo o sistema, usando suas próprias exige que haja um arquivo PKGBUILD processos-filhos, para que ele não tenha flags de compilação. no diretório local). Após a compilação que esperar o modprobe carregar cada O ABS constrói pacotes binários que do código fonte, é possível instalá-lo módulo, antes de continuar. podem ser instalados pelo pacman. O com o pacman: O hwd funciona tanto com o devfs uso do ABS não é obrigatório, mas ele quanto com o udev. Como o hwd não permite que você faça ajustes finos na Instalar novo pacote: é uma ferramenta de configuração, ele pacman -A pacote.pkg.tar.gz não altera arquivos no /etc. Isso iria compilação de programas. O ABS depende do cvsup e do wget. contrariar a filosofia do Arch. Ao invés disso, ele detecta os componentes e forPortanto, eles precisam estar instala- Atualizar pacote: pacman -U pacote.pkg.tar.gz dos, antes de você começar a usá-lo nece informações sobre como configurar em compilações. Para instalar esses manualmente os arquivos. pacotes, simplesmente digite: Além desses diretórios, na raiz de Caso você esteja satisfeito com o ho/var/abs há um diretório chamado lo- tplug, não é necessário instalar o hwd. pacman -Sy cvsup wget cal. Ele serve para a compilação com Essa também é outra filosofia do Arch, suas próprias flags. A idéia é que talvez um componente extra é opcional de Vale a pena sempre usar a opção -Sy esses arquivos prontos do tipo PKGBUILD verdade. Se o computador raramente para se instalar programas. Isso garante não contenham as configurações que é reiniciado, ou se você consegue viver a instalação das últimas versões, já que você precisa. Para usar esse recurso, crie com o tempo de boot um pouco maior do a opção atualiza a lista de pacotes antes um diretório em local, copie o arquivo hotplug, não há motivo para descartá-lo da instalação. para lá, acrescente ou remova configu- e partir para o hwd. Mas se quiser experimentar, digite: Use o comando abs para sincroni- rações e rode o makepkg para compilar zar sua árvore ABS com a do servidor e instalar o programa. CVS do Arch, que fica espelhada localPara controlar quais otimizações do pacman -Sy hwd lshwd mente, em /var/abs. A estrutura do gcc você quer, o makepkg usa um arquivo diretório é bem simples. Em /var/abs de configuração, o /etc/makepkg.conf. Agora é necessário configurar o sercada diretório se refere a um progra- Se você já usou Gentoo, as opções dentro viço hwd para ser iniciado junto com o ma, contendo um arquivo PKGBUILD desse arquivo não serão estranhas. Por sistema e desabilitar o hotplug. Como para a compilação do binário. padrão, o Arch usa a opção -march=i686 você já deve imaginar, o arquivo a ser -R pacote

44

Remove um pacote

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Arch Linux

Análise

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 ambiente escolhido, outros exigem que isso seja feito manualFigura 4: O hwd detecta componentes de hardware e mente. Nesse quesito ainda mostra informações sobre o sistema. não há padrões para o Arch, o que irrita um pouco. No editado é o rc.conf. Basta acrescentar entanto, a velocidade com que o Gnome a seguinte linha: ou o E17 rodam é impressionante – conseqüência da otimização para i686 de !hotplug hwd toda a base funcional do Arch. 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 identificar o hardware. Faça isso com: hwd -u

Reinicie a máquina. No lugar do hotplug, agora quem vai subir é o hwd. Além da detecção de hardware, o hwd e o lshwd podem ser usados também para preparar um arquivo de configuração inicial do X, ou ajudá-lo a configurar o X: hwd -x

Esse comando vai criar um arquivo de exemplo do X.org em /etc/X11, que pode ser usado como base para o arquivo final.

Ambiente gráfico O Arch usa o X.org como servidor X e possui pacotes para todos os grandes ambientes gráficos para o usuário: KDE, Gnome e XFCE. Para cada um, há todos os aplicativos mais popula-

Conclusão O Arch é uma distribuição rápida e leve. E não há nenhum componente que contrarie o objetivo do projeto. Nesse sentido, é uma das melhores distribuições. Embora não haja ferramentas de configuraçã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 experiê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: usercontributions.org/home/index.php [5] Em português: tinyurl.com/cqy9f

45

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Análise

Gerenciamento de projetos

Comparativo de gerenciadores de projetos

Controle total 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.

w

w

w. s

xc

.h

u

–S

ha

ffi

ck

J.

Por Miguel Koren O'Brien de Lacy

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 enquadra na nossa defi nição de gerenciamento de projetos (leia o quadro 1: “O que é gerenciamento de projetos?”). Obviamente, não é possível listar todas 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. Poré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 cronogramas (vale lembrar que gerenciar projetos é muito mais do que acompanhar um cronograma). A dificuldade para se encontrar sistemas livres que nos ajudem “de verdade” a gerenciar projetos parece estar relacionada à dinâmica e fi losofia de trabalho no mercado de Software Livre. Tradicionalmente, ele atende às áreas

46

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” significa 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 “empreendimentos” 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 associados 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 significa gerar o sistema instalável a partir dos componentes. Um exemplo desse uso do termo “project management” é o caso do Apache Maven [2]. Outro caso é o IDE (Integrated Development Environment) Anjuta [3], onde “gerenciamento de projetos” significa administrar os arquivos com o código fonte de forma organizada para que, no final, 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, definimos como “ferramenta” um aplicativo voltado para esse segmento, que roda em um computador. Desejamos 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 ferramentas é 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 sofisticados 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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Gerenciamento de projetos

Análise

de interesse dos desenvolvedores. Por projetos devido à falsa noção de que isso Deixamos de lado programas para isso, há muitos aplicativos de webmail, não é necessário. Windows que poderiam, com bastante segurança, multimídia ou desenvolviHá instituições específicas hoje para o dificuldade, serem usados no Linux atramento na web. Mas há poucos sistemas apoio ao gerenciamento de projetos. Por vés de programas como Wine, CrossOver para gerenciamento de projetos, GIS exemplo, o PMI (Project Management Ins- Office, Qemu ou VMWare. Selecionamos (Geographic Information System) ou CAD titute [4]) e o IPMA (International Project os aplicativos que atendem as áreas de (Computer-Aided Design), por exemplo. Management Association [5]). Elas for- conhecimento do PMI e são populares Além disso, a dinâmica de trabalho das necem regras ou conselhos para ajudar no mundo e no Brasil. Outro critério foi equipes que desenvolvem Software Li- no sucesso de projetos gerenciados. Toda a existência de algum diferencial funvre é menos estruturada, em termos ferramenta para gerenciamento de pro- cional, além de trajetória sólida e planos gerais, do que a de empresas comerciais. jetos que seja de utilidade geral deveria concretos de evolução. Deixamos de lado Isso acontece devido, em grande parte, atender de alguma forma às diretrizes também a possibilidade de juntar ou à natureza voluntária da participação dessas instituições. Neste artigo, utili- integrar diferentes ferramentas para se dos programadores no desenvolvimento zaremos a divisão de áreas principais obter um sistema de gerenciamento de de software livre. do PMBOK (Project Management Body of projetos mais completo. São poucas as iniciativas que possuem Knowledge – Corpo de Conhecimento de estruturas formais – quatro exemplos Gerenciamento de Projetos) como fonte são o Linux, o Apache, o OpenOffice.org para posicionar as diferentes ferramentas Para a avaliação de uma ferramenta, e o Plone. Muitas delas têm equipes que com as necessidades práticas. Avaliamos sugerimos que o avaliador forme uma nem respondem a emails ou que abando- o atendimento dos diversos programas matriz com critérios desejáveis e as nonam os projetos. Obviamente, isso não nas áreas de gerenciamento de: tas que ele atribui a esses critérios. Para é uma crítica à qualidade do Software P Integração selecionar os programas que entrariam neste artigo seguimos esse método. EnLivre nem sobre a validade desse modelo P Escopo de desenvolvimento. É apenas uma re- P Tempo tre muitos potenciais candidatos com flexão sobre o estado atual do mercado, P Custo chance de serem avaliados, escolhemos já que no ambiente comercial também P Qualidade os seguintes (a ordem mostrada não corhá empresas que não respondem a seus P Recursos humanos responde a nenhuma preferência): Instalação no desktop emails e que abandonam seus projetos. P Comunicação Essa situação faz com que o geren- P Risco P Gantt Project ciamento de projetos seja considerado P Aquisições P Planner menos importante. As equipes de desenAntes de qualquer outra consideração, P Real Time Project volvimento de Software Livre acreditam deve-se entender que hoje não existe Interface web em frases como “release early, release Software Livre ou comercial que atenda P dotProject often” (algo como “entregue rápido, en- perfeitamente a todos os requerimentos P ProjectOPEN tregue freqüentemente"). Em princípio, dos organismos de gerenciamento de P Gforge isso não atrapalha o desenvolvimento projetos. Mas, nesse mercado, os sisEles foram escolhidos por apresendos aplicativos de gerenciamento de temas comerciais estão muito à frente tarem filosofias de implementação disprojetos, mas aliado ao arraigado con- dos livres. Devido à grande variedade de tintas, abrangendo desde intuitividade ceito de “está terminado quando ficar ferramentas que podem ser aplicadas no da interface gráfica, uso em múltiplas pronto”, faz essa área não ser muito segmento de “gerenciamento de projetos” plataformas, até a possibilidade de popular no mundo do SL. Outra filo- – incluindo sistemas de groupware, work- acesso via web, além das necessidades sofia de trabalho que atenta contra as flow, fórum, suporte etc – limitamos a regionais do Brasil. Esses programas práticas comuns de desenvolvimento discussão às ferramentas que tenham têm um histórico de evolução técnica de software são frases como “o código algum destaque especial. Por exemplo, e periodicidade de novas versões – o fonte é a documenta��ão”. Em resumo, possuir uma forma prática de gerenciar que nos tranqüiliza quanto à sua futuno mundo do Software Livre ainda falta o cronograma, administrar muito bem ra disponibilidade. O grande perigo no uso de qualquer software, seja livre ou conhecimento sobre gerenciamento de custos ou ser expansível.

Opções

47

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Análise

Gerenciamento de projetos

simples, com um instalador de aspecto totalmente profissional. Ela pode ser feita sem problema nenhum por pessoas que tenham experiência somente na instalação de programas tipo “desktop”. Adicionalmente, em ambiente corFigura 1: Feito em Java, o Gantt possui interface clara e fácil de usar. porativo ele pode ser instalado pelo comercial, é seu abandono por parte mecanismo java web start. Mesmo sendo da empresa ou equipe desenvolvedora um sistema desktop, seu TCO (Total Cost – algo que deve ser evitado ao máximo of Ownership) é bem vantajoso. Para aupelos desenvolvedores. mentar ainda os atrativos desse sistema, Não entraremos em muitos detalhes atualmente há uma versão de desenvolsobre as características de cada pro- vimento em forma de applet, e ele está grama – consulte os sites oficiais dis- disponível em português do Brasil. O poníveis na seção Informações. Como que destaca esse aplicativo é sua grande o Software Livre tem uma evolução facilidade de uso e a clareza da interfarápida, esses detalhes ficariam desa- ce. Também vale considerar que ele se tualizados em pouco tempo. Em vez integra com alguns programas que não disso, nos concentramos em alguns pon- são de uso habitual em gerenciamento tos de utilidade geral e o potencial de de projetos, mas que são proveitosos. cada um. Comentamos sobre a origem Por exemplo, ele se comunica com o e experiência da equipe que desenvolve Freemind [7], um aplicativo livre para cada programa, seu foco estratégico, a gestão de idéias, e pode ser utilizado possibilidade de usar os dados de proje- como o módulo de planejamento do to nos “concorrentes” (possível quando 4D-Cad [8], programa de visualização as bases de dados seguem um padrão temporal em CAD. como o SQL) e sua utilização em difeA versão 2 do Gantt está em estágio rentes sistemas operacionais. de testes (beta), mas já mostra boa estabilidade. Ela possui algumas melhorias importantes em relação às versões 1.x. O projeto Gantt [6] está focado na ela- Por exemplo, consegue importar e exporboração de cronogramas para necessida- tar no formato do Microsoft Project. Outro des simples, com acompanhamento de exemplo: sua interface de cronogramas prazos. Como é desenvolvido em Java, foi melhorada, mostrando visualmente pode ser utilizado em vários sistemas o caminho crítico e permitindo tolerânoperacionais. No caso do Linux, basta cias (“lag”) nos relacionamentos lógicos. descompactar o arquivo baixado do site Também aceita feriados nos calendários em um diretório apropriado. No caso do dos recursos, permite definir campos Windows®, a instalação é extremamente 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 desenvolvimento 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 operacionais. 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.

Planner Esse 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 mantenedores 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 lembram muito o Microsoft Project. O pro-

Gantt Project

48

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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Gerenciamento de projetos

Análise

ou estrutura ana- dar um clique e arrastar o cursor denlítica do projeto), tro da área do cronograma, selecionar recursos e custos. as atividades e conectá-las. Possui um Seu nome origi- servidor de projetos próprio, otimizado nal era Schedule para alto desempenho, e pode armazenar Publisher, quando dados tanto em arquivos locais quanto estava disponível em bancos de dados SQL. Digna de nota para os sistemas é a possibilidade de personalização com operacionais GEM scripts em Python. É o competidor direto e Macintosh. do Microsoft Project, sendo a solução No início dos mais completa para estações de trabalho anos 90, foi porta- rodando Linux. O Real Time Project é redo para o Windows comendado para usuários individuais ou Figura 3: O Real Time Project roda em Linux, Unix, Windows e Macintosh. e, há alguns anos, empresas que precisem de uma solução para Linux. Hoje abrangente de gerenciamento de projetos grama tem bons recursos para cálculo o Real Time Project está disponível para que funcione localmente, como um prodo caminho crítico e sua tela de crono- Linux/Unix, Windows e Macintosh na grama instalado na própria máquina. grama é interativa. Outro recurso útil forma de binários específicos para cada é o uso do banco de dados PostgreSQL. plataforma. Sendo assim, ele não roda Assim, informações do projeto podem em qualquer distribuição Linux. No Bra- Esse sistema [12] é totalmente baseado ser usadas de outras maneiras. sil, além das distribuições conhecidas na web e, por isso, também pode ser Devemos lembrar que essa integração (como Red Hat e Suse), tivemos sucesso utilizado em sistemas operacionais direquer conhecimentos relativamente com distribuições locais como Conectiva ferentes. Foi desenvolvido em PHP, que avançados. Há inclusive a possibilidade (hoje Mandriva) e Kurumin (derivada normalmente roda em servidores Linux, de nivelamento de recursos utilizando um do Knoppix). O site da empresa lista as na clássica combinação LAMP (Linux, plugin externo, inicialmente desenvolvi- distribuições oficialmente compatíveis. Apache, MySQL, PHP) mas também pode do para o Mr Project, mas que funciona O programa tem recursos poderosos e ser instalado em Windows com servidor no Planner em alguns casos. Se você usa completos no apoio ao planejamento e web Apache ou MS IIS. o programa profissionalmente e precisa acompanhamento de um projeto, tanto A grande vantagem de um sistema em dessa função, talvez tenha que ajustar o no aspecto do cronograma, quanto no web é a centralização dos dados do projecódigo fonte: a evolução do Mr Project lado organizacional – custos e recur- to. A desvantagem é a necessidade de se para o Planner quebrou a compatibilidade sos. Sua função com alguns plugins úteis. de gerar relatórios O Planner é recomendado para quem gráficos é bem usa Linux no computador de trabalho, poderosa e ele tem conhecimentos mais avançados também oferece de informática e precisa calcular o compatibilidade entre as versões caminho crítico. para outras plataformas. A empresa Advanced Management SoA interface de lutions oferece no mercado a suíte de usuário para mamódulos para gerenciamento de projetos nipular o cronoReal Time [11], entre os quais destaca-se grama é de longe a o Real Time Project, para gerenciamento mais simples e poFigura 4: O dotProject roda em LAMP (Linux, Apache, MySQL e PHP) e é de projetos. Seus pontos fortes são crono- derosa. Para gerar indicado para classificação de projetos e gerenciamento de documentos. grama, WBS (Work Breakdown Structure atividades, basta

dotProject

Real Time Project

49

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Análise

Gerenciamento de projetos

trabalhar sempre conectado ao servidor não previstos ou ainda não implemenpela intranet ou Internet. Mas ele pode tados pela equipe de desenvolvimento ser instalado localmente no equipamento – como o uso de “gatilhos” (triggers), endo usuário, mesmo sendo uma solução vio de alertas e visões diferentes para baseada em web. Seu desenvolvimento relatórios. Hoje, o programa usa o Myestá sendo liderado por pessoas expe- SQL, mas há intenção de possibilitar o rientes na área de gerenciamento de uso de outros bancos de dados, como projetos via software. A documentação por exemplo PostgreSQL. Seu uso é recomendado para departadisponível é bastante completa, incluindo um site do tipo wiki. mentos ou empresas em situações onde o O dotProject não está focado no cro- foco é a agenda de tarefas dos membros nograma. Ele o exibe apenas de forma da equipe, gerenciamento da documentaestática, ou seja, não permite a mani- ção associada aos projetos e apropriação pulação direta do cronograma, como o de horas trabalhadas; com menos ênfase GanttProject, Planner ou Real Time. Mas na manipulação do cronograma. possui facilidades extras nas tarefas de classificar projetos e gerenciar a documentação associada. Permite inclusive O ProjectOpen [13] tem como objetivos a emissão de alertas sobre alterações principais a administração dos custos nos documentos. de um projeto e a colaboração entre A instalação é relativamente simples membros da equipe, possuindo inclusive e direta, mas apenas para usuários fa- uma área colaborativa do tipo wiki e até miliarizados com a configuração de chat. Wikis são páginas web editáveis servidores. Sua utilização não requer de forma simples pelo usuário – usando uma compilação especial do PHP, o que o navegador – e ideal para trabalho coé uma vantagem para quem roda uma laborativo. Ele é apresentado como um distribuição padrão. sistema ERP (Enterprise Resource PlanO diferencial do dotProject é sua ope- ning) para projetos com funcionalidade ração via web e o uso de um banco de bastante variada, incluindo apropriadados SQL, o que proporciona bastante ção de horas e gestão de conhecimento, flexibilidade no uso dos dados para fins implementado nesse caso na forma de um mecanismo de busca. O aplicativo tem um conceito de EPM (Enterprise Project Management) declarado. Sua estrutura facilita a configuração para atender diferentes soluções verticais. Por exemplo, consultoria, publicidade Figura 5: O ProjectOpen também roda na web, possuindo recursos de etc. Além dos mówiki e até chat entre os membros. dulos básicos, há

ProjectOpen

50

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 experientes 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 software, 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 segurança e integração, dividindo muito bem o acesso de pessoas com funções distintas. 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 tecnologia de base. O ambiente funcional é o CMS (Content Management System) OpenACS [15] que opera com o servidor web da AOL. Além de usar um ambiente diferenciado, a customização do sistema deve ser feita na

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Gerenciamento de projetos

GForge Quem 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 repositório de distribuição (código fonte, executáveis etc). Em termos de cronograma, 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 gestã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 usado 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 tornar 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 é indicado 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 atendimento ao usuário (help desk), além de gerenciamento de bugs. Uma opção Figura 6: O GForge gerencia projetos de desenvolvimento de software, incluindo registro de bugs e distribuição de arquivos. interessante é seu uso como interface entre o cliente (ou Informações usuário final) e a organização que desenvolve determinado programa. [1] Freshmeat: freshmeat.net

Conclusão

[2] Apache Maven: maven.apache.org/what-is-maven.html

Não há um “ganhador” entre as opções apresentadas, já que esse não é o objetivo deste artigo. Preferimos apresentar as opções mais interessantes e deixar o leitor se aprofundar nos detalhes, podendo fazer sua escolha de acordo com as necessidades. Qualquer um desses sistemas pode ser de grande utilidade para gerenciar projetos com pouca complexidade, especialmente as opções que podem ser instaladas no próprio computador 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 corporativo, 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 possí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 ferramentas. Vale a pena lembrar também que a escolha do aplicativo certo é somente uma parte menor do problema. ■

[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

Sobre o autor

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 apropriado 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.

Análise

Miguel Koren O'Brien de Lacy usa Software Livre desde 1997. É diretor da Konsultex Informática, representante da Artemis International Solutions 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.

51

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


http://supertuxbr.blogspot.com


http://supertuxbr.blogspot.com


Tutorial

API do Google Maps

Como usar a API do Google Maps

Distância segura Saiba como incorporar mapas interativos em suas páginas web Por Alberto Planas

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 Interface) é aberta. Baseada em JavaScript (ou ECMAScript [1]), ela permite a criação de aplicativos que usam os mapas e imagens de satélite do Google. As páginas abrem tranqüilamente nos navegadores, sem a necessidade de nenhuma infraestrutura extra no servidor web. Neste artigo, vamos criar uma aplicativo de exemplo que calcula a distância de um trajeto marcado em um mapa.

54

Chave

seu aplicativo, mas tem um servidor A API do Google Maps está disponível Apache local, é possível registrar o engratuitamente, desde que se respeite dereço http://localhost. algumas regras [2]. Por exemplo, o Tome cuidado, contudo, na hora de inaplicativo precisa ser gratuito para o dicar uma URL: caso ela contenha erros público e não pode exceder um certo ou for mal digitada, não será possível número de consultas por dia aos ser- acessar a API. É importante fornecer o vidores do Google. Também não pode endereço completo, incluindo portas e esconder a marca Google. diretórios. Por exemplo, em nossos testes Para usar a API, é preciso antes obter – com Apache na porta 8080 – criamos uma chave [3]. Para isso, é preciso uma um diretório chamado “maps”. É aqui conta no Google (um Gmail já basta que nosso site de exemplo será hospedaou, então, é possível criar uma conta). do. O endereço que fornecemos foi: Cada chave é associada a uma URL. Se você não tem espaço para hospedar http://localhost:8080/maps/

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


API do Google Maps

É 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 alfanumé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 razã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 Explorer exiba corretamente os efeitos da biblioteca JavaScript do Google Maps (particularmente, os efeitos de trajetos, como será explicado depois).

Tutorial

Para incluir o arquivo de JavaScript 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 fornecida 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 navegador precisa executar a função JavaScript 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>

55

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Tutorial

pode haver incompatibilidades. Para garantir que o aplicativo rode em todos os navegadores oficialmente compatíveis, vamos usar a função GBrowserIsCompatible (linha 15). Se o usuário estiver 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 objeto 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 controles ao mapa, que nos permitirão modifi-

Figura 1: O grande controle da esquerda corresponde a um GLargeMapControl. O de tamanho médio na direita é um GSmallMapControl. O menor é um GSmallZoomControl.

56

API do Google Maps

car seu comportamento. Poderemos rolar o mapa, simplesmente pressionando o botão esquerdo do mouse e arrastando o cursor. Podemos usar também um componente que permite 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 separados. Há outros dois tipos de controle que podemos adicionar: um seletor de tipo de mapa e um controle de escala, tanto em milhas quanto quilô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 primeiros). 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 vamos centrar o mapa. Primeiro, temos que indicar a longitude e depois a latitude (no geral, coordenadas costumam ser passadas na ordem inversa). Após essa introdução, vamos adicionar a parte do programa que calcula as distâncias (listagem 2).

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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


API do Google Maps

Tutorial

Esfera

Essa equação não requer muita discus- O outro evento é um clique no mapa, Qualquer ponto da Terra pode ser são, já que seu uso pode ser examinado na para que possamos definir o trajeto em localizado usando-se dois números: função calcDistancia, da listagem 2. que o cálculo de distância será feito. A latitude e longitude. Mas, se souberA listagem 2 é ligeiramente diferente API do Google permite diversas maneimos as coordenadas de dois pontos na do primeiro exemplo. A primeira dife- ras de capturar eventos. Vamos fazer superfície de uma esfera, ainda não rença é que, na chamada ao construtor isso da seguinte maneira: poderemos calcular a distância entre GMap, estamos fornecendo um parâmeesses dois locais. tro extra (linha 21). Esse parâmetro é GEvent.addListenerU (map, 'click', functionU Precisamos de mais uma informação: uma matriz de elemento único. Nós a (overlay, point) { o raio da esfera. Se considerarmos que usamos para indicar que só queremos map.recenterOrPanToLatLngU a Terra tem, na média (o planeta não é o modo de exibição do tipo satélite. A (point); uma esfera perfeita), um raio de 6378 API permite a associação de funções km, podemos usar geometria esférica em uma lista pré-definida de eventos. }); para calcular distâncias baseadas em Dessa maneira, podemos alterar o comlatitudes e longitudes [5]. Primeiro portamento do sistema em resposta a Quando usamos o método addListeprecisamos converter latitudes e lon- um clique, uma rolagem ou à adição de ner() na classe GEvent, devemos indigitudes de graus para radianos. Então, uma marca, por exemplo. Há uma lista car o evento que queremos capturar e a aplicamos a fórmula: completa de eventos na documentação função que irá manipulá-lo. Nesse caso, oficial. Nosso exemplo requer a captura estamos capturando o clique do mouse d = 6378.7 * acos(seno(lat1) de dois eventos. Um deles é a rolagem. no mapa (evento click). * seno(lat2) + coseno(lat1) * A função específica para esse evento Após esse evento, o aplicativo precisa coseno(lat2) * coseno(lon2 - lon1)) redesenhar o mapa na nova localidade. pode receber dois parâmetros: o overlay

57

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Tutorial

API do Google Maps

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++) {

58

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; distance += 6378.7 * Math.acos(Math.sin(lat1) U 88. * 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>

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


API do Google Maps

(ou marca onde clicamos) e o ponto contendo as coordenadas do clique. Na linha 25, capturamos o evento movend, 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. Assim 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 chamadas de overlays na documentação oficial do Google Maps. Cada overlay é um objeto sobreposto ao mapa. Embora possamos definir ícones personalizados 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 coordenadas específicas. Depois, vamos acrescentá-la ao mapa usando o método addOverlay() da classe GMap. Esse é o mesmo método que usaremos para desenhar 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));

Tutorial

Isso é apenas o que as funções addOverlay() e drawLine() fazem em nosso

código. Um exemplo de um trajeto desenhado é 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ão Usando não mais que quatro objetos e oito métodos diferentes, criamos um aplicativo capaz de calcular o comprimento de um caminho desenhado interativamente em um mapa aberto em um navegador. A API do Google Maps torna fácil a criação de aplicativos inovadores e interessantes que, de outra maneira, exigiriam profundas 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 conhecida 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âneamente na medida em que o usuário vai navegando pelo mapa. Muitos usuários dessa API estão desenvolvendo 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 cruzamentos confusos. Vale lembrar que a API do Google Maps ainda está em estágio beta de desenvolvimento – ou seja, seu funcionamento está sujeito a mudanças repentinas. É possível monitorar a

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. 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: groupsbeta.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

59

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Tutorial

Blender

Modelagem 3D com Blender

Curvas suaves

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

E

ste artigo esclarece os fundamentos da modelagem 3D tomando como exemplo a construção de um boneco simples. Os modelos espaciais são criados, a princípio, a partir de uma “estrutura de arame” ou “malha”(wireframe). Depois, a adição de uma superfície e de texturas transforma esses modelos primitivos em uma cena artificial em três dimensões. Esse processo é chamado renderização. O Blender [1] é um aplicativo de código aberto capaz de lidar com todos os passos da criação de um modelo digital:

Quadro 1: Leia-me! Este artigo é apenas uma introdução à construçã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.

60

desde a sua construção, passando pela composição da superfície, até a renderização da cena tridimensional.

Movimento em 3D Além disso, o Blender oferece poderosos 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.

Figura 1: O Inkscape fornece a matériaprima para a construção de objetos 3D: siga os contornos e depois dê o acabamento com [Ctrl]+[L].

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Blender

Tutorial

Para facilitar a nossa vida, este tutorial fundo, que o desenho não reproduz a cla [1] no teclado numérico comuta o utiliza, além do Blender, o programa de forma original do personagem, já que modo de visualização para o aspecto criação de ilustrações vetoriais Inkscape o seu braço esconde uma parte do cor- frontal. Agora, do perfil da figura você [2]. Apesar de ser possível desenhar as po. A linha magenta na figura 1 mostra ainda só consegue ver uma linha reta. curvas que servem como base da cons- como deve ser o contorno do corpo sob Tome cuidado para que, também dessa trução do seu modelo tridimensional o braço. Se você selecionar uma das li- perspectiva, o cursor fique na margem diretamente no Blender, usar o Inkscape nhas desenhadas e pressionar [Ctrl]+[L] direita da linha. Se você quiser colocar para essa finalidade é realmente muito algumas vezes, o Inkscape vai alisá-la. o cursor ou um objeto do espaço 3D em mais fácil. Caso necessário, um pacote Para encerrar, selecione toda a figura uma posição específica, é preciso veriRPM estático do Inkscape pode ser en- com [Ctrl]+[A], mova-a para a margem ficar o posicionamento sempre de dois contrado em [3]. superior esquerda da área de desenho pontos de vista diferentes (figura 2). Leve Inicie o Inkscape e escolha a ferramen- e salve o arquivo. o cursor do mouse alguns centímetros ta de desenho à mão livre pressionando abaixo do cursor do Blender. Com as a tecla [F6]. Com a “rodinha” do mouse teclas [R] (para rotacionar) e [X] (para pode-se mudar o fator de zoom e com a Chegou a hora de iniciar o Blender. O girar em torno do eixo X), rotacione a tecla do meio move-se a área de exibição programa roda sempre em tela cheia, curva até que o boneco fique em pé. Para mostrada na tela. A figura 1 mostra o sem a costumeira estrutura de janelas. isso, gire a linha que sai do cursor em esboço de um personagem de “gibi”; é Ele começa com um cenário padrão, que exatamente 90° para a esquerda e dê um ele que queremos transformar em uma contém um cubo no meio. Se pressio- clique com o mouse. Agora pressione figura tridimensional. narmos a tecla [X] o Blender pergunta: [Alt]+[C] e depois [Enter]. O Blender Desenhe com o mouse o contorno da “Erase selected?” (apagar a área selecio- converte o arquivo para um objeto do metade esquerda do boné, de acordo nada?). Confirme com [Enter] para apa- tipo mesh. Objetos do tipo curva – como com o modelo da ilustração. Mantenha gá-lo. Clique em File | Import | Paths no os que resultam da importação da iluso botão [Shift] pressionado para poder menu principal, na parte superior da tração vetorial criada com o Inkscape interromper a qualquer momento o de- tela. No menu que aparece, clique em – devem ser sempre convertidos, antes senho e reiniciar de onde parou. Pros- Inkscape (.svg). Na janela de seleção de que o Blender possa transformá-los em siga da mesma forma com a cabeça e o arquivos, abra o arquivo SVG que con- objetos em três dimensões. tronco da figura. Observe, no plano de tém as linhas que acabamos de desenhar Para que o perfil possa ser transforem nosso esboço. O menu mado em um objeto tridimensional, ele Select Size aparece na tela. precisa ser girado em torno de um eixo Selecione Scale on Width e, por ambas as extremidades. O cursor com o mouse, mude o fator que especifica a posição dos eixos de de zoom até que o preen- rotação, usado na fase anterior do nosso chimento da linha esteja trabalho de edição da figura, encontra-se visível. Com [Ctrl]+[4], ainda na posição correta. O Blender gira [6], [8] e [2] no teclado as curvas sempre paralelamente à área numérico você pode, se de desenho. Altere, portanto, com [7] necessário, movimentar no teclado numérico, novamente para o a área de desenho. modo de visão “de cima”. Pressionar a Ao iniciar o Blender você tecla [Tab] leva você ao chamado “modo tem uma vista de cima da de edição”, através do qual modificacena. A figura importada ções no objeto ativo podem ser efetuadas está, portanto, em um pla- – usando para isso as opções no terço Figura 2: Na vista frontal, o cursor parece estar no sobre a superfície. Para inferior da janela. A tecla [A] seleciona diretamente sobre a linha e, na face lateral, ele fica à direita da curva. A perspectiva aérea mostra que ele girá-la, coloque o cursor todos os pontos da linha, que passam está bem à frente do final da linha, no entanto a uma na extremidade inferior a ser apresentados em amarelo. Clique distância apropriada no eixo das ordenadas (Y). da curva. Pressionar a te- agora no campo Degr: (figura 3) e arras-

“Tridimensionalizando”

61

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Tutorial

Blender

parte superior da tela. O Blender constrói uma superfície circular plana e entra no modo de edição. Tecle [A] para apagar a seleçã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 teclando [A]. Pressione a tecla [S]. Diminua o círculo, arrastando o mouse até que ele corresponda ao diâmetro do braço da figura (figura 5). Figura3: O Blender produz, através da rotação de um perfil Um clique no mouse fixa a bidimensional (linhas amarelas na vista frontal), um corpo mudança de tamanho. Presespacial simétrico. sione [R] e [X] para girar o círculo paralelamente à te o mouse para a direita, com o botão superfície, a fim de que ele apareça como esquerdo pressionado, até que o valor uma linha simples. Para realizar uma extrusão, tecle [E], desse campo alcance 360. Faça o mesmo com o campo Steps: escolha em seguida Only Edges no menu até que o seu valor chegue em 36. Um popup que aparecer e mova para baixo clique em Spin faz aparecer o boné, a a cópia do círculo resultante, que dará cabeça e o tronco da figura a partir do origem a um “tubo” representando o perfil do esboço (figura 3). Saia do modo comprimento da parte reta do braço. O de edição com a tecla [Tab]. O Blender [A] realça todos os pontos marcados do mostra a seguir o objeto produzido a objeto. Pressione a tecla [B] e o botão partir do esquema “máquina giratória” esquerdo do mouse simultâneamente com uma superfície sombreada. Na para criar uma área de seleção retanface frontal (pressione [1] no teclado gular. Selecione desse modo o círculo numérico) você verá o boné, a cabeça na parte superior do braço e realize a e o tronco do nosso personagem. extrusão pressionando [E] e clicando em Only Edges no menu popup que aparece em seguida, movendo um pouco para Os braços são construídos tomando-se cima e para a esquerda. Com um clique um círculo como base. Para desenhá-los, no mouse você fixa a posição da linha do com o desenho na vista frontal (pressio- círculo. Para construir o cotovelo, gire o ne [1] no teclado numérico), coloque o corte transversal superior da figura. Arcursor à direita, ao lado do corpo. Se- raste o mouse alguns centímetros acima lecione Add | Mesh | Circle no menu na do arco do círculo e pressione a tecla

Mãos e Pés

[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é resultar 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 pressionando [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 cursor 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 desenho com as teclas [R] e [X]. [Alt]+[C] o converte em um objeto Mesh. [S] o redimensiona para um tamanho que corresponda 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-

Figura 4: Desative o botão Limit Selection to visible para poder selecionar também os pontos ocultos usando a ferramenta de seleção.

62

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Blender

nando seis vezes o [4] no teclado numérico. Posicione o cursor na extremidade direita da seção transversal inferior. Depois de acionar a tecla [E] e selecionar Individual Faces, pressione também a tecla Figura 5: O que a [R]. Use o mouse técnica de extrusão significa na prática para girar o novo é duplicar, mover corte em 45°em e girar discos de torno do cursor. seção transversal. O recorte dos pés É com base nesses cortes que o será oval. Portanto, Blender calcula o reduza a linha atiobjeto no espaço va do círculo para tridimensional. 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 novamente em dois terços e execute uma extrusão da planta do pé, sem rotacionálo (figura 6, recorte 5). O corte transversal 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 tamanho para algo próximo de zero teclando [S] (figura 6, corte 6). A perna está finalmente 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ástica Agora só falta a criação do rosto. Para isso vamos empregar as chamadas superfí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° pressionando 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 teclado numérico) e apague a seleção teclando [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 tecla [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 resultante 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 lateral e arraste a nova estrutura construída

Tutorial

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, adicionadas 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 lateral, para se certificar de que os olhos estão posicionados corretamente. Para produzir as orelhas, mude para a vista lateral. Posicione o cursor à direita, 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 superiores do círculo e, após pressionar a tecla [G], desloque-os um pouco para cima. A metade de cima do círculo deverá tomar uma forma parecida com a

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.

63

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Tutorial

Blender

Figura 7: O fundo branco dos olhos é constituído a partir de um objeto do tipo NURBS, modelado pelos pontos de controle.

[A]. Escolha Mesh | Edges | Subdivide Smooth para provocar um leve arredondamento 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, seguindo 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 parâ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 apenas metade dela apareça sobre o rosto. Em seguida, teclando [A] no modo de edição, Figura 10: Atingimos nosso objetivo: a renderização do nosso personagem de gibi com sombras, iluminação e brilho realistas. selecione todos Na seqüência deste artigo, na próxima edição, nosso herói vai os seus pontos. despertar para a vida e aprender a se mexer! Mude para a vis-

de um quadrado. Não arraste os pontos de controle para muito longe, senão aparecerá 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 digitando [1] no teclado numérico. Pressionando [Alt]+[C] você transforma a curva em um objeto Mesh. Teclando [Tab] seguido de [A] você entra novamente no modo de edição e seleciona todos os pontos da linha. Pressione [E] e escolha Individual Faces para transformar a linha em um disco achatado. Ative todos os pontos da malha (wireframe) teclando duas vezes em

64

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 tamanho em Proportional Falloff Sphere. Na vista lateral, se a tecla [G] for pressionada e o ponto de controle selecionado 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âmetro falloff define como essa influência diminui conforme a distância cresce. Infelizmente, a esfera se movimenta por inteiro na direção do ponto deslocado, sendo necessário posicionar o nariz, que já está pronto, mais uma vez. O modelo 3D do nosso personagem 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 renderizada (figura 10). ➟

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Tutorial

Fazendo cena Antes 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 central 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. Posicione-a de modo que o nosso personagem 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 determinar 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

Blender

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âmpadas como na figura 8 Figura 9: Ao clicar no retângulo (destacado em laranja na é necessário (depois imagem), abre-se a paleta de cores. de tê-las posicionado) redimensioná-las e girá-las na direção correta. Vamos começar pelo gorro. A tecla A cena virtual está preparada para [F5] muda o terço inferior da interface do um “instantâneo fotográfico”. Para obtê- Blender para o modo de sombreamento. lo, clique em [F12]. A figura gerada pelo Em Preview, o Blender dá uma amostra das Blender em uma nova janela deve – à condições da superfície sob uma iluminaexceção das cores – corresponder ao ção padrão. Ajuste as cores da superfície personagem da figura 10. E o último clicando no campo de cores, próximo ao passo do nosso trabalho é exatamen- campo Col (figura 9). Selecione as cores que te o ajuste de cores. Marque as partes desejar para cada parte da figura. do gráfico criadas a partir das curvas do Inkscape (gorro, cabeça e tronco) e entre no modo de edição. Selecione o Um modelo tridimensional é muito mais gorro, pressionando a tecla [B]. A letra que um desenho enriquecido com nuan[P] o separa do resto do corpo e faz dele ces de iluminação: quando você o coloca um objeto isolado. Repita esse proce- sobre uma superfície, sombras naturais dimento para a cabeça e deixe o modo têm que aparecer. Você pode movê-lo e de edição. Agora o gorro, a cabeça e o transformar os movimentos em arquivo corpo podem ser selecionados e colo- de vídeo. A animação será o tema da ridos individualmente. próxima edição. Você encontra mais informações no site oficial do Blender [1] e também na documentação do aplicativo, disponível em [4]. ■

A seguir...

Informações [1] Blender: www.blender.org [2] Inkscape: www.inkscape.org [3] Downloads do Inkscape: www.inkscape.org/download.php

Figura 8: Lâmpadas virtuais iluminam a cena como em um verdadeiro estúdio de filmagem.

66

[4] Documentação do Blender: www.blender.org/cms/ Documentation.628.0.html

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Coluna do Augusto

SysAdmin

Crie um wiki simples e rápido

O bloco de notas www.sxc.hu – Gaston THAUVIN

do admin

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 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. ■

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

Sobre o autor

E

m uma coluna recente, tive a oporE é justamente aí que reside o grantunidade de mencionar boas práti- de diferencial do TiddlyWiki: ele não cas de administração de sistemas precisa de nenhum software adicional para evitar ser chamado – fora do expe- no servidor. Trata-se de um documento diente ou em pleno feriadão – a resolver “vivo”, editável diretamente no navegaproblemas que poderiam ter sido evita- dor (sem recorrer a editores externos), dos. Um dos aspectos daquela coluna que publicável, e totalmente contido em um mais gerou e-mails de leitores foi minha único arquivo HTML (que naturalmente menção ao Hipster PDA [1], um método inclui em si os necessários trechos de extremamente barato e confiável (e de CSS e Javascript, além do conteúdo que baixa tecnologia) de manter as infor- você adicionar). Você poderá usá-lo onde mações essenciais sobre seus sistemas, for: ele é compatível com navegadores agendamentos e idéias sempre à mão. populares em Linux, Mac e Windows®. Isto me leva a crer que não estou so- Após editar ou acrescentar um artigo zinho em atribuir grande importância à (ou nota, ou lembrete, ou o que quer capacidade de contar com a informação que você queira armazenar) basta usar relevante sempre disponível nas ativida- a ferramenta “Salvar como” do seu nades de administração de sistemas. vegador e pronto. A repercussão do Hipster PDA me leva Você pode disponibilizar o seu tia dedicar mais uma coluna ao tema, ddlywiki na web sem nenhum “truque mas, dessa vez, indicando um meio de sujo” – basta fazer o upload para qualarmazenamento um pouco mais tecno- quer servidor. É possível também usar lógico: o TiddlyWiki [2]. A menos que o tiddlywiki gravando apenas em discos você tenha vivido em uma caverna nos locais (ou compartilhados em rede local), últimos 2 anos, você já sabe que wikis ou ainda carregá-lo em um pen drive são websites com recursos que facilitam USB – mas lembre-se de fazer bons bea adição ou edição de conteúdo pelos capes e de preservar dados confidenciais usuários, geralmente de forma colabo- – afinal estamos falando de informações rativa, e que o exemplo mais popular sobre administração de sistemas! dessa categoria é a enciclopédia online As vantagens sobre a tradicional alterWikipédia [3]. De modo geral, os wikis nativa de usar um arquivo TXT com as são construídos a partir de software informações essenciais são várias: além especial que roda em um servidor web de poder usar hipertexto, links (internos – no caso da Wikipédia, o software utili- e externos) e a riqueza da linguagem zado é o MediaWiki [4], que já foi ana- de marcação típica dos Wikis, o doculisado aqui na Linux Magazine. mento é automaticamente organizado e

Augusto César Campos é 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.

67

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


SysAdmin

NTP

Hora certa na rede

Em ponto Redes exigem uma manutenção precisa de hora e data. O www.sxc.hu – levi szekeres

NTP (Network Time Protocol) garante que isso será feito. Por Marc André Selig

A

tualmente, qualquer relógio barato de pulso consegue manter de maneira mais eficiente a hora do que os chips de computadores modernos. Apesar de haver alguns truques para melhorar 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 permite 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 adicional, é possível usar relógios de referência 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-

68

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 março 2006

edição 18

www.linuxmagazine.com.br


NTP

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 referê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 estrutura hierárquica (figura 2). Alguns computadores 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.

SysAdmin

Nível 0 Relógios Atômicos Nível 1

Nível 2

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.

Modos NTP O NTP possui três modos diferentes para No terceiro modo NTP, todos os servipassar sinais com data e hora de um dores transmitem sinais. Cada um transcomputador para outro. Em operações mite um pacote sinalizando que está típicas do tipo cliente/servidor, um com- funcionando e informando aos clientes putador vai consultar o outro para obter seu IP, para que a requisição NTP possa a hora. O cliente pode aceitar o sinal de ser feita. Isso evita a configuração maum servidor, mas não o contrário. Esse nual dos clientes. é o primeiro modo. O modo simétrico é parecido. No entanto, a direção da transmissão pode ser Muitos sistemas Linux e Unix incluem o revertida. Se a fonte de um servidor cair, antigo daemon ntpd, que usa o arquivo esse servidor assume a função de fonte de configuração /etc/ntp.conf. No mais de data e hora para outros computadores. simples dos casos, típico para a maioria Em outras palavras, cada máquina é um dos sistemas Linux, esse arquivo contém ponto da rede. apenas o nome ou IP do servidor NTP. A figura 3 mostra um grupo de três pon- Para que os administradores não tenham tos que servem como fontes de tempo de que atualizar freqüentemente quais servimaneira redundante (“redundância” em dores NTP os clientes devem usar como engenharia significa prevenção contra fa- fonte de tempo, o projeto NTP [2] roda um lhas). Esse grupo serve como o back-end alias de DNS chamado pool.ntp.org. Ele se dos clientes. Mas, normalmente, grandes refere a um grupo de servidores públicos. redes funcionam sem problemas no modo A listagem 1 mostra como essa configuraassimétrico (cliente/servidor), consultan- ção pode ser simples. O daemon considera do diversos servidores NTP na Internet. apenas um dos três IPs desse arquivo.

Daemon

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 automaticamente. Muitas distribuições usam essa técnica em seus scripts de boot. A ferramenta ntpdate é uma alternativa que fornece resultados similares, mas não possui o mesmo requinte de funcionamento de seu irmão mais velho. Por isso é visto como uma programa obsoleto, embora ainda seja muito usado.

Problemas Muitos problemas podem ocorrer durante 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 causaria problemas. Por exemplo, se um cronjob estiver rodando e o ntpd decidir

69

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


SysAdmin

NTP

Servidor 1 Servidor 2

Cliente 1

Servidor 3

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. voltar um pouco o relógio, essa tarefa vai rodar de novo. O daemon precisa garantir continuidade, 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 corrigir 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 incorretas Quando se usa diversas fontes na Internet, é preciso algum tipo de proteção contra relógios incorretos. Um cliente NTP resolve esse problema comparando a hora em múltiplos servidores e encontrando qual deles está mais próximo do tempo UTC. Então, sincroniza apenas com esse servidor.

70

O problema é que mesmo o melhor dos algoritmos pode retornar resultados incorretos de vez em quando – principalmente 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 servidor configurado não estão disponíveis. Nesses casos, o daemon mede a precisão do relógio do sistema e corrige as variações usando como base sua própria análise, quando uma referência externa esteja temporariamente fora do ar.

Conexões lentas A 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 conexã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 latê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, embora 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 especiais, 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 alternativa 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ça Administradores estão sempre preocupados com segurança de rede. No caso do NTP, há razões de sobra para isso. Basicamente, 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 serviço (denial of service). Os administrado-

Listagem 1: /etc/ntp.conf típico 01 02 03 04

server pool.ntp.org server pool.ntp.org server pool.ntp.org restrict default kod notrap nomodify nopeer noquery

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


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 potencial de ataques que não usam o protocolo. Um estouro da memória (buffer overflow) bastaria para o sistema ser comprometido 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.

Alternativas O NTP fornece um sistema de manutenção do tempo extremamente preciso e o daemon pode ser administrado facilmente. 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 exigem 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 timestamp 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. ■

SysAdmin

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/

Sobre o autor

NTP

Marc André Selig gasta metade de seu tempo trabalhando como assistente científico na Universidade de Trier e como médico residente no hospital de Schramberg, na Alemanha. Quando consegue achar uma brecha na agenda, se ocupa em programar bancos de dados web em diversas plataformas Unix.

71

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Programação

Python/3D

Manipulação Visualização tridimensional com o VTK

www.sxc.hu – wolf friedmann

3D no Python 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

A

representação gráfica em 3D oferece a possibilidade de se criar mundos virtuais. Com a visualização 3D, torna-se possível explorar e entender sistemas complicados rapidamente, 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 processamento de imagens 3D, vale destacar o VTK (Visualization Toolkit) [1] , uma biblioteca de código aberto (implementada em C++) com wrappers para TCL, Python e Java , permitindo o desenvolvimento de aplicações completas, de um modo eficiente 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 reconstrução de superfícies a partir de digitalização a laser ou nuvens de pontos desorganizados etc. A seguir, veremos os conceitos básicos usados pelo VTK para criarmos uma cena

72

e, através de uma série de exemplos desenvolvidos em Python, vamos criar nossos 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 escolher 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. U kitware.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 U login 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 afirmativamente (já que a resposta não é automática). Então, basta teclar make e depois make install.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Python/3D

Programação

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 outra maneira é compilar o código fonte, conforme explicado no quadro 1: “Como compilar o VTK”.

Modelos de objetos VTK Para os iniciantes no mundo da visualizaçã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 tonalidades, câmeras que mudam o ponto de vista, características dos personagens (cor, forma etc)… Mesmo que você não

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. 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, vtkRenderWindow, 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 dados gráficos em imagens, enquanto que o modelo de visualização transforma 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 é renderizada através do modelo gráfico. O VTK se baseia na aproximação dos dados 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 podem constituir um objeto são: pontos, retas, polígonos, pontos estruturados, malhas estruturadas, malhas não estruturadas etc (figura 2).

Primeira cena Já estamos prontos para construir a nossa primeira cena. Vamos nos colocar no papel do diretor de cinema. Nos exemplos 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. ➟

73

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Programação

Python/3D

ren=vtk.vtkRenderer() renWin=vtk.vtkRenderWindow() renWin.AddRenderer(ren) iren=vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin)

Figura 3: A janela de renderização automática.

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 escrevendo vtk.nome_classe no código 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 linhas de código a seguir:

Para que possamos manipular a câmera por meio do mouse, o objeto vtkRenderWindowInteractor (denominado no código como iren) deverá ser instanciado. Note que a janela de renderização renWin se associa ao objeto de interação iren através do método 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 digitando python cone.py. E… nada acontece! 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:

Ao executarmos novamente o programa, veremos uma janela negra se abrir, com seus botões de maximizar, minimizar e fechar, e que só será fechada 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 ficar no fi nal do arquivo. As demais linhas que venham a ser escritas deverão ficar 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 classes que nos permitem criar objetos tridimensionais simples como esferas ( vtkSphereSource), cones ( vtkConeSource) e cilindros ( vtkCilinderSource), entre muitos outros. Tomaremos como exemplo um cone – no entanto, você pode optar por qualquer um dos outros objetos. O seguinte código cria nosso primeiro “ator”: cone=vtk.vtkConeSource() coneMapper=vtk.vktPolyDataMapper() coneMapper.SetInput(cone.GetOutput())

iren.Initialize()

coneActor=vtk.vtkActor()

iren.Start()

coneActor.SetMapper(coneMapper)

Tabela 1: Modelo gráfico Objeto vtkRenderer vtkRenderWindow vtkLight vtkCamera vtkProp vtkProperty vtkMapper vtkTransform

74

Descrição

Cria uma área de renderização que coordena luzes, câmeras e atores. Classe que representa o objeto dentro do qual se coloca uma ou mais áreas de renderização (vtkRenderer). Objeto que permite manipular as luzes da cena. Quando se cria uma cena, as luzes são incluídas automaticamente. 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 definir o ponto de vista, o foco e a orientação. Objeto que representa os diferentes elementos (atores) que se situam dentro da cena. Cabem destacar as seguintes sub classes: vtkActor, vtkVolume, vtkActor2D. Representa os atributos de renderização de um ator, incluindo cor, iluminação, mapa da estrutura, estilo de desenho e estilo de sombra. Representa a definiçã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áfico. Objeto que consiste em uma matriz de transformação 4x4 e métodos para modificar a matriz mencionada. Especifica a posição e orientação de atores, câmeras e luzes.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Python/3D

A Dados-fonte para construir o objeto (pontos, polígonos…)

Gera saída de dados: A.GetOutput()

B vtkPolyDataMapper () (tipo de “mapper”) Associamos dados para gerar a malha: B.SetInput()

Programação

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, é necessário renderizar a cena, pois, se não a retomamos, é como se não houvéssemos adicionado um novo ator.

Propriedades C vtkActor() O ator que vamos criar é associado à malha que o gerou: B.SetMapper()

Figura 4: O passo-a-passo para se criar um “ator”. Por meio do objeto vtk.vtkConeSource, 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étrica 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 ( figura 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 realizar traslados e, com o botão direito, nos aproximamos ou nos afastamos do objeto. Além disso, uma luz foi inserida

Se você seguiu o tutorial até esse ponto já terá criado seu cone cinza. Mas, provavelmente, não está muito satisfeito. Talvez outra cor fosse melhor, como branco e fundo azul, por exemplo. Na seqüência, vamos ver como modificar 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 janela 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), empregamos o método SetBackground(RGB), no qual informamos a cor desejada

Tabela 2: Modelo de visualização Objeto vtkDataObject

Descrição

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élulas), e também em atributos associados, tais como escalares ou vetores. Objeto que faz referência aos filtros, que atuam sobre os atores, modificando-os. vtkProcessObject

Figura 5: Cone dentro da cena.

75

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Programação

no formato RGB. Se quisermos um fundo azul, basta digitar ren.SetBackground(0.0, 0.0, 1). Conforme já explicado, a área de renderizaçã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 modificar a visualização como quisermos. Se o que queremos é que todos os atores sejam vistos em sua totalidade dentro da área de renderizaçã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 rotacionar a câmera ou o ponto de foco em diferentes posições e tem, como argu-

Python/3D

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 simplificada 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 qualquer 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 espessura das linhas: conepro=coneActor.U GetProperty() conepro.SetColor(1,0.2,0)

Figura 6: Comportamento dos métodos da câmera a) Azimuth flechas vermelhas; b) Pitch - flechas azul-celeste; c) Yaw - flechas azul-escuro d) Elevation - flechas verdes e) Roll - flecha amarela. A esfera branca representa o foco.

76

conepro.SetOpacity(0.5) conepro.SetLineWidth(3) conepro.SetResolution(40) conepro.SetRepresentationU ToWireframe()

Figura 7: Vista da superfície do cone.

Figura 8: Vista da malha do cone.

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 malha (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) modifica a resolução com a qual se renderiza 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 (vtkSphereSource), cone (vtkConeSource), cilindro (vtkCilinderSource) etc.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Programação

Python/3D

Listagem 1: cone_esfera.py 01 import vtk

27 iren = vtk.vtkRenderWindowInteractor() 28 iren.SetRenderWindow(renWin) 29

02 03 # Geramos a estrutura para visualizar um cone 04 cone = vtk.vtkConeSource()

30 # Adicionamos o ator na área de renderização (Renderer) 31 ren.AddActor(coneActor) 32 ren.AddActor(esferaActor)

05 coneMapper = vtk.vtkPolyDataMapper()

33

06 coneMapper.SetInput(cone.GetOutput())

34 #Fixamos a cor de fundo, o tamanho e damos zoom sobre

07 coneActor = vtk.vtkActor()

35 #a área de Renderização

08 coneActor.SetMapper(coneMapper)

36 ren.SetBackground(1, 1, 1)

09 10 # Criar fonte de esfera, mapeador e ator 11 esfera = vtk.vtkSphereSource()

37 renWin.SetSize(450, 425) 38 camera=ren.GetActiveCamera() 39 ##camera.Zoom(1.5)

12 esferaMapper = vtk.vtkPolyDataMapper()

40

13 esfera.SetPhiResolution(10)

41 coneActor.RotateX(30)

14 esfera.SetThetaResolution(20)

42 coneActor.RotateY(45)

15 esfera.SetCenter(0.3,0.0,0.0)

43 conepro=coneActor.GetProperty()

16 esferaMapper.SetInput(esfera.GetOutput())

44 conepro.SetColor(0,0.6,1)

17 esferaActor = vtk.vtkActor()

45 ##conepro.SetOpacity(0.5)

18 esferaActor.SetMapper(esferaMapper)

46 conepro.SetLineWidth(2)

19 esferaActor.GetProperty().SetColor(0.7,0.0,0.25)

47 ren.ResetCamera()

20 esferaActor.GetProperty().SetOpacity(0.75)

48 ##camera=ren.GetActiveCamera()

21 esferaActor.GetProperty().SetLineWidth(1)

49 camera.Zoom(1.5)

22

50

23 # Criamos: Renderer, RenderWindow, U

51 cone.SetResolution(40)

RenderWindowInteractor

52

24 ren = vtk.vtkRenderer()

53 iren.Initialize()

25 renWin = vtk.vtkRenderWindow()

54 renWin.Render()

26 renWin.AddRenderer(ren)

55 iren.Start()

Qualquer objeto pode ser rotacionado, escalonado, ter suas dimensões mostradas 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 nosso cone, usamos as linhas:

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/

coneActor.RotateY(45) coneActor.SetScale([1,3,2])

Figura 9: Cena com dois atores em intersecção, uma esfera sobre um cone.

Agora você já sabe como criar sua própria cena, modificar suas propriedades, adicionar um ator com as opções que quiser e modificar a posição da câmera. No caso de desejar adicionar mais atores à sua janela de renderização, basta seguir o mesmo procedimento empregado na criação do nos-

[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íficas para Python: www.scipy.org [5] MayaVi: mayavi.sourceforge.net

autores

coneActor.RotateX(30)

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.

77

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Programação

Realbasic

Portas abertas

Portando projetos de Visual Basic para o Linux

O Realbasic é uma solução simples para converter programas feitos em Visual Basic para Linux.

Por Frank Wieduwilt

O

Visual Basic deve sua popularidade no mundo do Windows® ao fato de ter uma reputação de ser fácil de aprender e entender. Normalmente, programadores que migram para o Linux precisam reescrever esses programas em alguma linguagem similar, já que variantes livres do Basic como Gambas [1], HBasic [2] ou WXBasic [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 desenvolvimento. A solução, por enquanto, existe apenas na forma proprietária. A Real Software lançou recentemente o Realbasic [5], uma ferramenta comercial 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 software é vendido separadamente, por um período de tempo determinado. Após esse tempo ainda é possível usar o programa, mas não atualizá-lo. No entanto,

78

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 exigem 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ção Os pacotes são bem simples de instalar. Há RPMs específicos para distribuições voltadas para estações de trabalho corporativas (como o Red Hat Desktop e o Novell Desktop), mas o programa també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 recursos bloqueados. Não há necessidade de se reinstalar do zero.

Tabela 1: Versões Standard e 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

Standard + + + -

Professional + + + + + +

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Realbasic

Programação

Tabela 2: Tipos de dados Dados

Inteiro16-bit Inteiro 32-bit Número de ponto flutuante de 4 bytes Número de ponto flutuante de 8 bytes Cadeia de caracteres Numero de ponto decimal fixo com 8 bytes Inteiro 8-bit Booleano Color Variant Object

Interface A interface do Realbasic se assemelha à da maioria dos outros ambientes de desenvolvimento (figura 1), e programadores migrando do Visual Basic vão se familiarizar rápido, como se estivessem usando qualquer IDE (Integrated Development Environment) consagrado. O editor possui destaque de sintaxe, complementaçã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 widgets para todas as três plataformas compatíveis. Também possui elementos OLE (Object Linking and Embedding) para

Visual Basic Integer

Long Single Double String Currency Byte Boolean Não compatível Variant Object

Realbasic

Não compatível, usa inteiro 32-bit Integer Single Double String Memory Block Memory Block Boolean Color Variant Object

que os desenvolvedores possam embutir 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 ferramentas da versão para Linux. Posicionar e alinhar elementos gráficos é 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ódigo

Você 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 desenvolvedores de Visual Basic [6] apontando os pontos delicados desse procedimento. Embora seja bem fácil modificar as palavras-chave que são usadas de maneira sutilmente diversa no Realbasic ou os tipos de dados diferentes (tabela 2), a rotina de importação do Figura 1: O Realbasic é fácil de usar e oferece um rico Realbasic provavelmente vai faconjunto de recursos. lhar se o código contiver muitos

79

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Programação

Figura 2: Uma espécie de grade indica o limite de outros objetos e ajuda a posicionar elementos gráficos.

Realbasic

é um erro causado quando controles de etiqueta possuem 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.

Figura 4: O conversor registra problemas e suas possíveis soluções em um arquivo HTML.

Banco de dados componentes ActiveX ou controles exó- A versão Standard usa apenas um banco ticos demais. A documentação descre- de dados interno baseado no SQLite. Já ve essas funções, dando a chance de a Professional tem plugins que permivocê analisar as condições de como tem o acesso a bases de dados MySQL, o código é importado, antes de se de- MS SQL e MS Access. Para permitir que cidir pela compra. Por exemplo, no mais interfaces de conexão sejam deRealbasic, o ListBox é o equivalente do senvolvidas, a Real Software fornece popular Flex Grid do Visual Basic. um kit de desenvolvimento de plugins A Real Software oferece uma ferra- gratuito [8]. Como esses bancos de dados menta de conversão [7] (figura 3) para usam linguagem SQL padrão, aplicações ajudar programadores a converter desenvolvidas com o sistema interno arquivos de projetos do Visual Basic, também devem funcionar com os outros módulos e formulários para o formato bancos de dados. Realbasic (baseado em XML). Mas, Quem estiver migrando do Visual infelizmente, essa ferramenta só roda Basic para o Realbasic não precisa se no Windows. O programa detecta e preocupar com as diferenças entre os remove erros de sintaxe durante esse “dialetos” SQL. O programa de conversão processo. Uma falha que detectamos cuida disso. O Realbasic também usa uma técnica diferente de integrar controles de bancos de dados, mas o conversor também trata disso sozinho.

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. ■

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.

80

Programadores vão precisar de pouco esforço para portar programas feitos em Visual Basic para o Linux. Contudo, é necessário o Windows para rodar o conversor. Se o programa não depende excessivamente de controles ActiveX, controles próprios ou controles da caixa de ferramentas, é possível migrar o projeto com poucas mudanças

Sobre o autor

Conclusão

Frank Wieduwilt estudou História e vem trabalhando há alguns anos como autor técnico freelancer para editoras na Alemanha, escrevendo manuais 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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Bem-vindo à Linux User!

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 eficiente, obterá um valioso embasamento técnico e conhecerá as últimas novidades em software para seu sistema operacional favorito.

CD do Assinante: Asterisk@home ............. 82 O Asterisk com interface gráfica.

Iniciar decolagem .................................... 84 Instalação fácil de programas com o Klik.

Luzes, câmera, ação! ................................ 88 Como copiar e rodar filmes para o Sony PSP.

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

http://supertuxbr.blogspot.com


LinuxUser

CD do Assinante

PBX VoIP mais fácil

Asterisk doméstico

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

C

anivete Suíço”. Esse é o codino- phny Network - rede de telefonia pública), me do Asterisk [1]. Como toda pode ser similar a esta: Pentium III, com ferramenta do tipo, ele pos- 128 MB de RAM, 10 GB e, opcionalmensui seus acessórios e apetrechos. Já o te, Placa Digium TDM01B (é possível Asterisk@Home [2] pode ser considerado acrescentar módulos adicionais nessa como a união de todos esses acessórios, placa) com um 1 canal FXO. em um único lugar. Ou melhor, em uma única distribuição, baseada no CentOS 4 (na versão 2.5 do Asterisk@Home). Insira o CD do Asterisk@Home e reinicie Essa solução funciona como a porta o computador. Quando aparecer a mende entrada de todo “fuçador” que quer sagem “boot:”, tecle [Enter] para iniciar começar a desfrutar das incontáveis pos- a instalação da distribuição. Cuidado: sibilidades do Asterisk. Por isso o nome o instalador irá formatar todo o disco Asterisk@Home (“Asterisk em casa”). Essa sem aviso prévio. Aguarde a instalação característica deve-se ao fato de o processo de todos os pacotes e a posterior reinide instalação ser bem semelhante ao NNF cialização do sistema. (Next, Next, Finish) da Microsoft. Após a reinicialização, serão comHoje, o projeto está bem maduro e, em pilados todos os pacotes do Asterisk alguns casos, pode até ser aplicado em e afins... Depois disso, haverá ainda pequenas implementações, voltadas para mais um reboot. Então serão realizadas usuários domésticos ou pequenas empreQuadro 1 - Dicas do Asterisk sas (o tal mercado SOHO - Small Office Home Office). Este artigo pretende trazer P 1. O Asterisk, assim como qualquer uma visão geral da instalação e configusoftware que trabalhe com coders e decoders, utiliza muito E/S de CPU. Então, prefira ração do Asterisk@Home 2.5, presente máquinas com mais capacidade de processano CD do assinante desta edição. mento do que memória RAM.

Instalação

Requisitos A 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-

82

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-

P

mais algumas configurações adicionais e pronto! Seu Asterisk@Home está prontinho para ser configurado.

Configuração Efetue o login no sistema como root: login:

root

Password:

password

Figura 1: A tela inicial do Asterisk@Home. O sistema é administrado por interface web. mento de IRQs pode se revelar um caos se você utilizar interfaces de telefonia (como a placa Digium citada). 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!

P

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


CD do assinante

Conexão Agora acesse o seu IPBX (Intranet Private Branch eXchange, ou PBX VoIP)como root e execute o seguinte comando (somente se a placa FXO não estava presente 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 realizar 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 é necessário criar uma rota para esse tronco. O Asterisk@Home já traz uma rota padrão pronta para ser usada. Acesse o link Outbound Routing e veja a rota 9_outside.

Figura 2: O Asterisk@Home se integra ao CRM (Customer Relationship Manager) Sugar CRM.

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!

O Asterisk – e por conseqüência o Asterisk@Home – também gerencia salas de conferências. É possível proteger salas por senha e banir ou deixar mudos alguns dos participantes, por exemplo. Há uma interface web para isso: o WebMeetMe Control.

Ramais Chegou a hora de configurar alguns ramais e começar a desfrutar desse pequeno 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 respectiva 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) Sugar CRM (figura 2).

Figura 3: Dentro do AMP é possível acessar os relatórios de estatísticas do IPBX.

Conclusão O Asterisk@Home é a opção ideal para iniciantes e curiosos que querem experimentar 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 também pode ser baseada no Asterisk) mais robusta e com mais opções de configuração e escalabilidade. ■

Informações [1] Asterisk: www.asterisk.org [2] Asterisk@Home: asteriskathome.sourceforge.net [3] Asterisk@Home Handbook: asteriskathome.sourceforge.net/ handbook

Sobre o autor

É 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 restart 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).

LinuxUser

Denis Galvão é o responsável técnico pelo desenvolvimento do PBX VoIP da iSolve e pelas soluções de telecom da empresa. Fundador da AsteriskBrasil.org, dedica parte do seu tempo ao Software Livre. Pode ser encontrado através do email denis@isolve.com.br.

83

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


LinuxUser

Klik

Iniciar decolagem

Instalação fácil com o Klik

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

D

istribuições que rodam direto do (figura 1). Não há necessidade de longas embutido “estaticamente”. O mesmo vale CD ajudam a atrair novos usuá- instalações ou de se espalhar itens por para o recurso de loop necessário para rios de Linux e são muito úteis todo o sistema de arquivos. Por isso, é a montagem dos arquivos. na hora de reparar uma instalação. Mas, possível até instalar duas versões difefreqüentemente, uma ferramenta que rentes do mesmo aplicativo. O sistema você precisa não está no sistema; e ten- Linux básico permanece intocado. Por Depois de concluir a instalação de algum tar instalá-la pode ser uma experiência isso, é possível gravar programas em requisito do Klik em sua distribuição, frustrante. Dependências mal resolvidas, chaveiros USB, por exemplo, para exe- digite na linha de comando wget klik. bibliotecas ausentes, sistema de arquivos cutá-los a partir de um Live CD. atekon.de/client/install -O - | sh. com acesso somente leitura... Mesmo que Isso vai baixar um script que instala o essa instalação seja concluída, ela pode cliente. O procedimento precisa ser feito se revelar bastante instável. Outro mo- Para rodar o Klik, são necessárias al- na conta de cada usuário do sistema em mento incômodo, principalmente para gumas “preparações” na distribuição. questão. Se você não for o usuário root, novos usuários, acontece quando se quer Algumas já vêm prontas para o Klik. precisará também digitar os comandos: testar um programa, sem arriscar uma Por exemplo, o Suse 10, distribuições instalação global. modernas baseadas no Debian e o Kno- su sh klik-cmg-install-root O projeto Klik [1] resolve essas ques- ppix, além de seus derivados (afinal, foi tões. O nome vem de KDE-based Live o Knoppix que deu origem ao desenvolInstaller for Knoppix+Kanotix mas, hoje, vimento do Klik). Leia mais no quadro Isso acrescenta algumas linhas ao não é um sistema apenas para KDE – 1: “Distribuições compatíveis”. /etc/fstab, necessárias ao Klik. Se tudo também roda no Gnome. Basicamente, Se a sua distribuição não é diretamen- correr bem, uma janela vai informar que seus criadores adotaram o conceito de te compatível, o requerimento mínimo você já pode começar a instalar pacotes empacotamento da Apple, em que um é que o kernel tenha suporte ao sistema Klik. Em seguida, o Konqueror abre na pacote nada mais é que um arquivo de arquivos CramQuadro 1: Distribuições compatíveis compactado com todas as bibliotecas e fs. No código fonte programas necessários para se rodar o do kernel, ele está As seguintes distribuições são plenamente compatíveis com o Klik: Suse programa. Esse arquivo funciona como normalmente disLinux 10 (incluindo o OpenSuse), Debian, Linspire, Ubuntu, Kubuntu, Kanotix e Knoppix. O Fedora Core 4 será compatível em breve. Já Gentoo e um executável. Para “instalá-lo”, basta ponível na forma Mandriva não possuem suporte ao Cramfs no kernel, por isso não rodam copiá-lo para o desktop e pronto! Já é de um módulo instalações Klik. – mas é possível possível rodá-lo. As versões atuais do Knoppix, Kanotix, a versão Slick do OpenSuse [2] e o As complexas etapas envolvidas nesse compilar o kernel CPX-MINI já incluem o cliente Klik. processo são invisíveis para o usuário com esse recurso

Cliente

Kernel

84

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


LinuxUser

Klik

Quadro 2: Outros navegadores O 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.

clicks on link tipo 1a. umUser a klik:// link

O usuário acessa klik://programa

A maioria dos navegadores possui uma opção para se fazer isso. No Opera, 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.

Client kontaktiert

O servidor cria e

um script 3. envia contendo instruções

Klik em mim! O site do projeto contém um catálogo que lista qual URL corresponde 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”.

cliente cria um pacote 4. Oseguindo as instruções

Imagem compactada Appdir

5.

Com exceção das inserções no arquivo /etc/fstab, nenhum dos processos de instalação requer privilégios de administração. O script afeta só o diretório home do usuário atual. 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 Applications (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 servidor. 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

Wrapper /usr /bin

Funcionamento

O 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.

O usuário baixa um pacote Klik já pronto

servidor Klik 2. Oé Server contatado

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”).

Quadro 3: Criando um servidor Klik

1b.

/etc ...

6.

Essa Userimagem, clicks onentão, é montada e executada a klik:// pelo scriptlink .zAppRun

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). 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.

85

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


LinuxUser

Klik

Tabela 1: Arquivos criados ou modificados pelo Klik Arquivo

Função

/home/usuario/.klik /home/usuario/.zAppRun /home/usuario/.kde/share/services/klik.protocol /home/usuario/.kde/share/applnk/klik/klik.desktop /home/usuario/.kde/share/applnk/klik/.directory /home/usuario/.kde/share/mimelnk/all/cmg.desktop /home/usuario/.kde/share/applnk/.hidden/AppRun. desktop

Entradas adicionais para a montagem dos arquivos .cmg

/etc/fstab

necessárias, além de conter instruções sobre como construir esse pacote contendo 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 “pacotão” compactado de arquivos. Há exemplos 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 “contrabandeando” 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 automaticamente, 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 controle 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 algum 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

86

Cliente Klik criado na instalação Executa pacotes .cmg klik:// protocol klik:// protocol Entrada no menu KDE MIME Type para .cmg Associa o Klik a arquivos .cmg

podem acabar gerando pacotes imperfeitos 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 especificamente para Suse [6], embora essa área esteja sem atualizações já há algum tempo. Nesse contexto, pode ocorrer outro problema. Como a maioria das 4.000 instruções Klik foram geradas por programas, muitas delas resultam em erros em determinadas situações. Quando isso ocorre, surge a mensagem “This package contains no application. klik can't handle 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.

Estrutura Para entendermos o que acontece quando você inicia um aplicativo Klik, vamos dar uma olhada na estrutura do pacote agregado. Ele contém um sistema 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 necessá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 inicia o script wrapper. Como diretórios são bem complexos de se distribuir, o empacotador freqüentemente apenas acrescenta um AppDir para um pacote 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 significar 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 conteúdo do arquivo. Se mais de uma instância do aplicativo for iniciada, o Klik

Quadro 4: Execução direta O 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_misc echo ':CMG:E::cmg::/pfad/zu/.zAppRun:' > /proc/sys/fs/binfmt_misc/register

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Klik

Programadores interessados em criar pacotes Klik devem seguir as regras abaixo: P

P

P P

Evitar referências a caminhos (paths) absolutos. O ideal é trabalhar apenas com pacotes .deb, .rpm e .tar.gz/.tgz. Considere o uso de bibliotecas antigas. 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 contatar o líder do projeto, “probono”. Mais detalhes sobre isso podem ser encontrados em [7].

Oito vezes O kernel Linux restringe o número de dispositivos de loop que podem estar montados simultaneamente. Como essa é a técnica usada para montar os agregados no diretório temporário, não é possível iniciar mais do que oito aplicativos 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 arquivo /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 aplicativo 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 agregados no sistema de arquivos (em /tmp), conflitos podem ocorrer, de acordo com a complexidade das dependências dos programas em questão.

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 automaticamente. Se necessário, é possível descompactar o agregado usando o comando /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. O Klik é uma solução elegante e de escramfs prog/ prog.cmg. trutura simples, mesmo em sua parte

Conclusão

Sistema(apenas leitura)

/sbin

Imagem compactada

Appdir

Appdir

Wrapper /usr

/usr

/bin

/bin

/bin

/etc

/etc

/etc

...

...

...

[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

[6] Pacotes prontos para Suse 10: opensuse.linux.co.nz/klik/10.0/

Wrapper

/usr

Informações

[5] Exemplo de instrução, com comentários: klik.atekon.de/architecture/recipe.php

Diretório Home ou outro qualquer Imagem compactada

“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 tradicionais gerenciadores de pacotes das distribuições Linux. ■

...

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.

[7] Informações para desenvolvedores: klik.atekon.de/docs/?page=A%20note %20to%20application%20developers

O autor

Quadro 5: Desenvolvedores

LinuxUser

Tim Schürmann estudou Ciências da Computação na Universidade de Dortmund, no oeste da Alemanha. Ele trabalha com Engenharia de Tráfego Assistida por Computador e escreve diversos artigos sobre Linux e Software Livre, principalmente aplicativos de escritório.

87

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


LinuxUser

PSP

O PSP (PlayStation Portable) não serve só para

jogar. Isso não é novidade. Mas você sabe como converter arquivos .avi com uns para rodá-los no aparelho? Por Kristian Kissling

D

Fotos e músicas

esde o lançamento, centenas de milhares de pessoas já compraram o PSP, o console de videogame portátil Certos tipos de conteúdos rodam no PSP oficialmente, sem neda Sony. Um dos motivos do aparelho estar fazendo nhum bloqueio. O manual do aparelho explica detalhadamente sucesso é a possibilidade de saídas “criativas” para rodar como rodar fotos e músicas no PSP, com o cartão de memória. jogos e outros conteúdos. Por exemplo, filmes podem ser Isso pode ser feito usando o Linux também. Para copiar convertidos para o formato especial do PSP e transferidos arquivos para o PSP, conecte o aparelho ao PC com um para o aparelho, via Linux, inclusive. cabo USB, abra um terminal e, como root, digite tail – f No caso de arquivos grandes e de alta qualidade, esse /var/log/messages, para descobrir que arquivo de dispotruque só é possível com outro produto da Sony, o Memory sitivo corresponde ao PSP. 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 Figura 1: Depois de configurar a conexão USB entre o PSP e o Suse, uma invés de instalar o antigo firmware. Como precaução, é bom janela vai mostrar os diretórios do Memory Stick. escanear o programa a ser instalado com um antivírus.

88

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


PSP

Se não aparecer nenhum resultado, os arquivos do PSP (figura 1), da mesé preciso ativar o modo de transferên- ma maneira que um chaveiro USB. No cia USB no PSP. Para isso, aperte a Debian, é possível montar o PSP manutecla HOME do aparelho, para acessar almente (como root) com os comandos o menu principal. mkdir /mnt/psp e mount – t auto/dev/sda1 Desloque o cursor, pressionando a /mnt/psp. tecla da seta esquerda para o ícone da Um novo aplicativo que facilita basmala, à esquerda do menu, abaixo do tante o uso do PSP no KDE é o KPSP qual está a opção Settings. [3]. Basta digitar o protocolo psp:// no Navegue com as setas até encontrar o Konqueror e pronto, está montado. Mas ícone USB-Connection. Pressione [x] no vamos partir do princípio que precisalado direito para ativar o modo USB do mos fazer tudo na mão. PSP. Experimente de novo o comando Faça um teste copiando algumas fotos tail e confira o resultado: do memory stick. Um detalhe importante é que o PSP só reconhece fotos quando Feb 14 15:24:07 elas estão no diretório apropriado, criados linux kernel: sda sda1 a partir do Konqueror ou do terminal com os comandos mkdir/ mnt/psp/PSP e mkdir/ Isso indica que o Linux conecta o mnt/psp/PSP/PHOTO. PSP no dispositivo dev/sda1. O Suse, Copie então suas fotos para o novo por exemplo, abre automaticamente diretório. É imprescindível que você esuma janela do Konqueror que mostra creva os nomes das pastas e dos arquivos

LinuxUser

em letras maiúsculas – do contrário, o PSP não vai reconhecer os arquivos. As músicas são copiadas de modo semelhante. 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, nomeando-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 memó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. ➟

89

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


LinuxUser

PSP

Figura 2: É possível assistir às palhaçadas dos Simpsons no PSP, desde que os nomes dos arquivos estejam em caixa-alta. 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 faac18102004.tar.gz em [4] e o descompacte com o comando tar xvfz faac-18102004.tar.gz. Entre no diretó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 instalar 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

90

de pacotes preferido. Mude para o subdi- (-ar) suporta 24.000 Hz; e o bit-rate retório ffmeg e configure a compilação do áudio ( -ab), 32 KBytes. com o comando ./configure --enableSe o Ffmpeg reclamar que está faltanshared --enable-faac. Para encerrar do alguma biblioteca, adicione (como o processo de instalação, prossiga com root) os caminhos /usr/lib e /usr/ make e make install. local/lib ao arquivo de configuração Agora é hora de pegar um arquivo .avi /etc/ld.so.conf. E rode o ldconfig e convertê-lo para o formato reconhecido mais uma vez. Agora precisamos copiar o arquipelo PSP. Vamos usar o teste.avi: vo para o PSP. Digite no terminal cp 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 cifrados? 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 exemplo), a apresentação do filme poderá mostrar problemas. Em alguns casos, a freqüência de sampling do áudio

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

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Sudoku

LinuxUser

Lógica Quebra-cabeças no Linux

numérica 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

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].

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 Sudoku é 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. ➟

Lógica O 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”.

Figura 1: O Gnome-Sudoku gera puzzles e dá dicas sobre como finalizá-los.

91

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


LinuxUser

Sudoku

O problema começa quando você usa o deslizador 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 compensam, como um recurso bem prático chamado Tracker. Ele grava determinado número de movimentos e então retorna para uma posição Figura 2: O Ksudoku exibe uma grade vazia no começo. Durante anterior específica com o jogo, ele destaca linha, coluna e caixa 3 X 3 atuais. um único clique. Também há uma função de Há muitas estratégias para se resolver desfazer (undo) que permite regredir um jogo. Por exemplo, faz sentido con- movimentos individuais. siderar quais números estão faltando O jogo também dá dicas. Ao passar em um quadrado 3 X 3 e, então, che- o mouse sobre um quadrado, aparece car linhas e colunas que cruzam esse uma lista com todas as possibilidades. quadrado para ver se estão disponíveis. Mas esse recurso esconde um bug. Se Em muitos casos, isso deixa apenas um o cursor do mouse não estiver sobre número como opção, que é então acres- nenhum quadrado e você pedir uma centado ao quadrado. dica, surge uma mensagem de erro. Há uma opção Resume Game (continuar jogo) que permite continuar um puzzle Claro que esse tipo de lógica casa como interrompido. A ajuda (em inglês) do uma luva com computação. Fãs do Gno- aplicativo contém uma introdução sobre me vão preferir o Gnome-Sudoku [3], os princípios do Sudoku e explica como escrito na linguagem Python. Ele pode usar o programa. gerar puzzles com diferentes graus de dificuldade e o usuário precisa apenas ir colocando números diretamente em O Sudoku para KDE se chama Ksudoku. Além do código fonte (cuja compilação uma janela do Gnome (figura 1). É necessário pelo menos a versão 2.4 exige bibliotecas KDE), há pacotes binádo Python para instalar esse jogo (ape- rios para Fedora e Debian na página do nas as distribuições mais novas vêm projeto [4]. Após digitar ksudoku para com essa versão). O jogo roda bem, em iniciar o jogo, surge uma janela como princípio, mas contém muitos bugs. Eles a da figura 2. não chegam a travar a aplicação, mas O fato de o Ksudoku destacar linha, deixam o jogo mais lento. 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úmero de vermelho e será preciso clicar com o botão direito para removê-lo. Um das funções mais práticas é a possibilidade de anotar potenciais candidatos para determinado quadrado. Para isso, escolha um número com o menu ou o teclado e clique com o botão direito. 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 ajuda Se você clicar em Hint (dica), o Ksudoku simplesmente preenche o quadrado atual. 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

Ajuda do computador

Conveniência com K

92

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.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Viciados em Sudoku també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 Sudoku-Solver [5] resolve jogos nos quais até experts já “pediram água”. Já o SudokuExplainer [6] não traz simplesmente uma solução. Ele analisa um jogo e explica como resolvê-lo. Mas exige Figura 4: O modo 3D do Ksudoku tem as mesmas regras. inserções no formato ASCII, o que requer a digitação do o quanto é bom no jogo, evite a todo puzzle em um arquivo de texto. custo essa “trapaça”. Mas a ajuda do Ksudoku é extremamente breve. Não há instruções para Se você não abre mão de um prograo jogo ou para o programa. Há, porém, ma Gnome, logicamente a opção é o uma versão em 3D (figura 4), que for- Gnome-Sudoku, mesmo com suas denece a jogadores experientes uma nova ficiências menores. Mas o Ksudoku é e interessante perspectiva. superior em muitos aspectos, desde os

Conclusão

Fácil

LinuxUser

destaques da linha, coluna e quadrado atuais até as valiosas dicas quando o jogo parece travar. ■

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

Sobre o autor

Sudoku

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.

Avançado

93

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Comunidade

Planeta GNU Nevrax Design Team

Liberdade digital

O direito

à privacidade

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

Electronic Frontier Foundation Como já foi citado algumas vezes nessa coluna, a EFF (Electronic Frontier Foundation) [1] é um grupo de pessoas de paz – advogados, tecnólogos, voluntários e visionários – trabalhando para proteger 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 sempre são confiáveis. Às vezes, acabam omitindo informações para beneficiar seus anunciantes, políticos ou pessoas que tenham algum tipo de poder (fi nanceiro) sobre esses dados. Aqueles que gostam de notícias imparciais acabam procurando mídias alternativas, produzidas por jornalistas independentes e que são comprometidos com a verdade e a imparcialidade. Um bom site independente 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-

94

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 evitadas 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 procuram 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 resposta é bem direta: o SL não é apenas um movimento de programadores, técnicos e pessoas envolvidas com software. É também um movimento social, preocupado com questões da liberdade da informação, privacidade e cultura digital. 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 privacidade 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 licenciado 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 sempre 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 Livre é 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 privacidade de seus usuários. O único interesse dos desenvolvedores é com o bem-estar de seu usuário e suas liberdades. ■

Informações [1] Electronic Frontier Foundation: www.eff.org [2] Indymedia: www.indymedia.org [3] Tor: tor.eff.org

Sobre o autor

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 confiar nas informações que forneceu para algum serviço ou até mesmo para alguma empresa de software?

Christiano é desenvolvedor de Software Livre, atua como voluntário no Projeto GNU, com a missão de difundir essa filosofia e colaborar com projetos relacionados à educação. Quando não está na frente do computador programando, seu hobby é astronomia e bons filmes.

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Eventos

Serviços

Calendário de eventos Evento Linux Park CeBIT Telefonia IP com Software Livre II Linux Park 1º Desktop Livre Single Sign On - LDAP Roadmap Flisol (Festiv. Lat. Amer. de Inst. de Soft. Livre) II Latinoware FISL 7.0 (7º Fórum Int. Software Livre) Bases de Dados com Software Livre III I Ensol (Enc. Soft. Livre da Paraíba) LinuxWorld Conferecence & Expo Brasil Servidores de Aplicação J2EE Linux Park

Data 9 a 15 de Março 11 de Março 15 de Março 16 a 18 de Março 25 de Março 25 de Março 27 de Março 19 a 22 de Abril 29 de Abril 12 a 14 de Maio 23 a 25 de Maio 27 de Maio 26 de Junho

Local Hannover, Alemanha Universidade São Marcos, SP São Paulo, SP Lorena, SP FIAP, SP Campinas, SP (+19 cidades bras.) Foz do Iguaçu, PR Porto Alegre, RS Universidade São Marcos, SP João Pessoa, PB São Paulo, SP FIAP, SP São Paulo, SP

Mercado de negócios

Website www.cebit.de eventos.temporeal.com.br www.linuxpark.com.br www.desktoplivre.org.br eventos.temporeal.com.br www.musicalmente.org/flisol www.latinoware.org fisl.softwarelivre.org eventos.temporeal.com.br www.ensol.org.br www.linuxworldexpo.com eventos.temporeal.com.br www.linuxpark.com.br

Serviços

Índice de anunciantes Anunciante 4Linux A Casa do Linux ARC System Devmedia Desktop Linux Easy Linux FISL Green Treinamento e Consultoria Guia de TI - Soluções em Tecnologias Abertas Intel ISolve Itautec Linux.local Linux Mall Linux Magazine Linux Park Linux World Locasite LPI Microsoft Oracle Simples Consultoria

Site www.4linux.com.br www.acasadolinux.com.br www.go-global.com.br www.devmedia.com.br www.desktoplivre.org.br www.revistaeasylinux.com.br fisl.softwarelivre.org www.green.com.br www.linuxnewmedia.com.br www.intel.com.br www.isolve.com.br www.itautec.com.br www.linuxnewmedia.com.br www.linuxmall.com.br www.linuxmagazine.com.br www.linuxpark.com.br www.linuxworldexpo.com www.locasite.com.br www.lpi.org.br www.microsoft.com.br www.oracle.com.br www.simplesconsultoria.com.br

Página 45 95 43 65 55 17 39 57 02 100 33 07 13 57 99 52, 53 21, 37 29 95 35 09 71

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18

95


Serviços

Linux.local

Linux.local

O Linux.local é um diretório de empresas que oferecem produtos, Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6

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 Empresa

Cidade

Endereço

Linux Shopp Megawork Consultoria e Sistemas Spirit Linux

Vila Velha

Rua São Simão (Correspondência), 18 – CEP: 29113-120 Rua Chapot Presvot, 389 – Praia do Canto – CEP: 29055-410 sl 201, 202 Rua Marins Alvarino, 150 – CEP: 29047-660

Telefone

Web

1 2 3 4 5 6

27 3082-0932

www.linuxshopp.com.br

✔✔

27 3315-2370

www.megawork.com.br

✔✔

27 3227-5543

www.spiritlinux.com.br

✔✔

Espírito Santo Vitória Vitória

✔✔

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

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

NSI Training

Rio de Janeiro

21 2220-7055

www.nsi.com.br

Open IT

Rio de Janeiro

Rio de Janeiro Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120

21 2508-9103

www.openit.com.br

51 3714 6653

www.solis.coop.br

✔ ✔✔

✔ ✔✔

✔✔

Paraná

Solis

Rio Grande do Sul Rua Comandante Wagner, 12 – São Cristóvão – CEP: 95900-000 Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003 Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140 Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193 Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008

Lajeado

Datarecover

Porto Alegre

LM2 Consulting

Porto Alegre

Lnx-IT Informação e Tecnologia Porto Alegre Plugin

Porto Alegre

TeHospedo

Porto Alegre

✔✔

✔✔✔✔

51 3018-1200

www.datarecover.com.br

51 3018-1007

www.lm2.com.br

51 3331-1446

www.lnx-it.inf.br

51 3287-1700

www.plugin.com.br

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

11 4195-2557

www.digivoice.com.br

✔✔✔

Dextra Sistemas

Campinas

19 3256 6722

www.dextra.com.br

✔✔

Insigne Free Software do Brasil Campinas

Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010 Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045 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 Rua Costante Piovan, 150 – Jd. Três Osasco Montanhas – CEP: 06263-270 Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038 Santo André Rua Edson Soares, 59 – CEP: 09760-350

14 3413-1137

www.epopeia.com.br

11 2106-9392

www.redentor.ind.br

11 2173-4211

www.go-global.com.br

✔✔✔✔

11 4990-0065

www.aw2net.com.br

Redentor Go-Global AW2NET Async Open Source

✔✔

✔✔✔

✔ ✔

✔✔

16 3376-0125

www.async.com.br

11 4062-9889

www.delixhosting.com.br

4Linux

São Carlos Rua Orlando Damiano, 2212 – CEP 13560-450 São José do Rio Preto Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909 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

11 3549-5151

www.acasadolinux.com.br

Accenture do Brasil Ltda.

São Paulo

11 5188-3000

www.accenture.com.br

✔✔✔✔

Delix Internet

96

Al. Jaú, 490 – Jd. Paulista – CEP 01420-000 Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004

✔✔ ✔

✔ ✔✔ ✔✔

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


Linux.local

Empresa ACR Informática

Cidade São Paulo

Agit Informática

São Paulo

Altbit - Informática Comércio e Serviços LTDA.

São Paulo

AS2M -WPC Consultoria

São Paulo

Big Host

São Paulo

Blanes

São Paulo

Commlogik do Brasil Ltda.

São Paulo

Computer Consulting Projeto e Consultoria Ltda. Consist Consultoria, Sistemas e Representações Ltda.

Endereço São Paulo (continuação) Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010 Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030 Av. Francisco Matarazzo, 229, Cj. 57 – Água Branca – CEP 05001-000 Av. Tiradentes, 615, Ed. Santiago, 2º andar Bom Retiro – CEP: 01101-010 Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010

Serviços

Telefone

Web

11 3873-1515

www.acrinformatica.com.br

11 3255-4945

www.agit.com.br

11 3879-9390

www.altbit.com.br

1 2 3 4 5 6

✔ ✔ ✔

✔✔

✔✔

11 3228-3709

www.wpc.com.br

11 3033-4000

www.bighost.com.br

✔✔

11 5506-9677

wwww.blanis.com.br

✔✔✔

✔✔

11 5503-1011

www.commlogik.com.br

✔✔✔

✔✔

11 5062-3927

www.computerconsulting.com.br

✔✔

São Paulo

Rua André Ampére, 153 – 9º andar – Conj. 91 Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000 Rua Vergueiro, 6455, Cj. 06 – Alto do Ipiranga – CEP: 04273-100

São Paulo

Av. das Nações Unidas, 20.727 – CEP: 04795-100

11 5693-7210

www.consist.com.br

São Paulo

11 5017-0040

www.dominiotecnologia.com.br

✔✔✔✔

EDS do Brasil

São Paulo

Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080 Av. Pres. Juscelino Kubistcheck, 1830 T4 5º andar

3707-4100

www.eds.com

Ética Tecnologia Getronics ICT Solutions and Services

São Paulo

Rua Nova York, 945 – Brooklin – CEP:04560-002

11 5093-3025

www.etica.net

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

11 5502-5000

www.hp.com.br

✔✔✔✔

IBM Brasil Ltda.

São Paulo

Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000 Rua Tutóia, 1157 – CEP: 04007-900

0800-7074 837

www.br.ibm.com

✔✔✔✔

iFractal

São Paulo

11 5667-9308

www.ifractal.com.br

Integral

São Paulo

11 5545-2600

www.integral.com.br

Itautec S.A.

São Paulo

Rua N. Sra. do Outeiro, 480, Sala 19 – CEP: 04807-010 Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001 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

11 3266-2988

www.temporeal.com.br

11 2121-4555

www.locasite.com.br

11 3981-7200

www.microsiga.com.br

Domínio Tecnologia

✔ ✔✔

✔✔

✔✔

✔✔ ✔

✔✔ ✔✔

Locasite Internet Service

São Paulo

Microsiga

São Paulo

Al. Santos, 1202 – Cerqueira César – CEP: 01418-100 Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000 Av. Braz Leme, 1631 – CEP: 02511-000

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

11 3345-3900

www.novell.com/brasil

Oracle do Brasil Sistemas Ltda.

São Paulo

11 5189-3000

www.oracle.com.br

Proelbra Tecnologia Eletrônica Ltda.

São Paulo

11 5052- 8044

www.proelbra.com.br

Provider

São Paulo

11 2165-6500

www.e-provider.com.br

Red Hat Brasil

São Paulo

11 3124-6000

www.latinsourcetech.com.br

Samurai Projetos Especiais

São Paulo

11 5097-3014

www.samurai.com.br

✔✔✔✔

SAP Brasil

São Paulo

11 5503-2400

www.sap.com.br

✔✔

Simples Consultoria

São Paulo

11 3898-2121

www.simplesconsultoria.com.br

✔✔

Snap IT

São Paulo

11 3731-8008

www.snapit.com.br

✔✔

Stefanini IT Solutions

São Paulo

Rua Funchal, 418 – Vila Olímpia Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170 Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001 Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005 Av. Angélica, 2503, 8º andar Consolação – CEP: 01227-200 Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002 Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000 Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010 Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000 Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919

11- 3039-2000

www.stefanini.com.br

✔✔✔✔

Sun Microsystems

São Paulo

11 5187-2100

www.sun.com.br

Sybase Brasil

São Paulo

Rua Alexandre Dumas, 2016 – CEP: 04717-004 Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000 Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020 Rua Alexandre Dumas, 1711, 10º andar, Ed. Birmann 11 – São Paulo/SP – CEP: 04717-004 Av. Paulista, 925, 13º andar – Cerqueira César – São Paulo/SP – CEP: 01311-916 R. Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP 04455-310 Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000 Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 Rua São José, 1126 – Centro - Caixa Postal 71 – CEP: 15.900-000

11 3046-7388

www.sybase.com.br

The Source

São Paulo

Unisys Brasil Ltda.

São Paulo

Utah

São Paulo

Visuelles

São Paulo

Webnow

São Paulo

WRL Informática Ltda.

São Paulo

Systech

Taquaritinga

✔✔✔ ✔

✔✔ ✔✔✔✔ ✔ ✔✔✔✔ ✔✔✔

✔✔ ✔

✔✔✔✔ ✔✔✔

11 6698-5090

www.thesource.com.br

11 3305-7000

www.unisys.com.br

11 3145-5888

www.utah.com.br

✔✔

11 5614-1010

www.visuelles.com.br

✔✔

✔ ✔

✔✔

✔✔✔✔

11 5503-6510

www.webnow.com.br

11 3362-1334

www.wrl.com.br

16 3252-7308

www.systech-ltd.com.br

✔✔

97

http://supertuxbr.blogspot.com março 2006

www.linuxmagazine.com.br

edição 18


Preview

O que vem por aí

Abril de 2006

Na próxima edição... ❐ Nascidos para voar

❐ Vida artificial

Distribuições Linux mais experimentais podem assumir riscos na busca por desempenho 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. ■

Nessa segunda parte de nosso tutorial sobre o programa de autoria 3D Blender, vamos usar o personagem criado na primeira 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 automaticamente as cenas intermediárias) e movimentação do esqueleto (Armature), que é a estrutura básica de movimento. Dessa forma, o “revestimento” é animado automaticamente. ■

❐ Linux Tuning As 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 melhorar a resposta de aplicativos multimídia, através do gerenciamento das prioridades do sistema. Especificamente, 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. ■

98

http://supertuxbr.blogspot.com março 2006

edição 18

www.linuxmagazine.com.br


http://supertuxbr.blogspot.com


Klik p.84 Instalação fácil de programas

Asterisk OpenWengo Ekiga

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

venda proibida

Vox sobre IP

p.23

9 771806 942009

Número 18

Voz sobre IP

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

0018 exemplar de 0assinante

Linux Magazine

tecnologia sem limites

Março 2006

páginas!

Google Maps API p.54 Acrescente mapas ao seu site

Número 18

100 págs.

Linphone KPhone Python Blender NTP Sudoku PSP Visual Basic

http://supertuxbr.blogspot.com

100

Criação 3D

Gráficos tridimensionais com Python Blender: tutorial de animação

p.72

p.60

Controle total

Análise dos principais gerenciadores de projetos

p.46

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 W W W. L I N UX M AG A Z I N E . CO M . B R

C D D O A S S I N A N T E : A ST E R I S K @ H O M E 2 . 5


linux magazine br 18