11/2007 ENTREVISTA - CANONICAL p.26 CEZAR TAURION p.34 PARK 2007 p.28 O Ubuntu quer O que um curso superior em Chegada de impacto ao conquistar o Brasil Código Aberto deve oferecer? Recife e a volta a São Paulo

#36 11/07 Linux Magazine R$ 13,90 € 7,50 0 0 0 3 6 9 200 venda proibida 4 exemplar de 6 9 # 36 Assinante 7180 # 36 Novembro 2007

A REVISTA DO PROFISSIONAL DE TI 9 7 ECLIPSE PLUGINS SQL C/C++ CMAKE METASYS LOAD AVERAGE LPI-2 MAYA APACHE SUEXEC CLUSTER IP IP CLUSTER APACHESUEXEC MAYA LPI-2 AVERAGE LOAD METASYS CMAKE C/C++ SQL PLUGINS

Eclipse p.35 CONHEÇA A FERRAMENTA DE PROGRAMAÇÃO MULTILINGUAGEM MAIS COMPLETA E FLEXÍVEL DA ATUALIDADE

» Os 12 melhores plugins p.42

» SQL: modelagem e criação de bancos de dados p.39

» C e C++ tornam-se fáceis com o plugin CDT p.36

REDES: RESISTENTE A FALHAS p.53 O alvo CLUSTERIP do Iptables acrescenta redundância inteligente à sua rede

SEGURANÇA: SCRIPTS WEB TRANCAFIADOS p.58 Um módulo do Apache evita que seus scripts web abram caminho para invasões

VEJA TAMBÉM NESTA EDIÇÃO: » Quinta aula preparatória para o LPIC-2 p.48 » Uma alternativa à medição de load average, agora com sentido p.64 » Alto realismo em modelagem 3D com o Maya p.60 Edição de » Cmake: Compilação pode ser fácil p.72

CONHEÇA A FERRAMENTA DE PROGRAMAÇÃO MULTILINGUAGEM ANIVERSÁRIO

WWW.LINUXMAGAZINE.COM.BR © Linux New Media do Brasil Editora Ltda. ������������������� ��������������������

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

����������������� ������������������������������ ������������������� © Linux New Media do Brasil Editora Ltda.

pocket.indd 2 25.09.07 09:40:44 Expediente editorial Diretor Geral Rafael Peregrino da Silva [email protected] Editor-chefe

Tadeu Carmona EDITORIAL [email protected] Três anos de Editor Pablo Hess [email protected] Revisão Arali Lobo Gomes [email protected] leitores Editor de Arte Renan Herrera [email protected] Assistente de Arte Igor Daurício [email protected] Centros de Competência Prezados leitores da Linux Magazine, Centro de Competência em Software: Oliver Frommel: [email protected] Kristian Kißling: [email protected] Nos últimos três anos, muito se falou em Soft- Peter Kreussel: [email protected] Marcel Hilzinger: [email protected] ware Livre e de Código Aberto (SL/CA). Na esfera Andrea Müller: [email protected] internacional, instituições surgiram e se fundiram, Centro de Competência em Redes e Segurança: Achim Leitner: [email protected] novas distribuições foram criadas, modelos de Jens-Christoph B.: [email protected] Hans-Georg Eßer: [email protected] negócios foram discutidos, alguns se mostraram Thomas L.: [email protected] Max Werner: [email protected] perfeitamente lucrativos, outros, absolutamente Anúncios: Rafael Peregrino da Silva (Brasil) enganados, novos modelos foram inaugurados, [email protected] Tel.: +55 (0)11 4082 1300 processos judiciais se iniciaram e terminaram, tro- Fax: +55 (0)11 4082 1302 caram-se acusações verdadeiras e falsas, empresas Osmund Schmidt (Alemanha, Áustria e Suíça) [email protected] despertaram para a relevância do SL/CA, e muito Brian Osborn (Outros países) [email protected] se debateu sobre a importância deste. Assinaturas: www.linuxnewmedia.com.br No âmbito nacional, movimentos possivelmente [email protected] Na Internet: ainda maiores foram efetuados. Novos portais surgi- www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha ram, milhões de novos computadores foram pré-ins- www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália talados com Linux, leis de incentivo ao SL/CA foram www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha implementadas, importantes migrações foram reali- www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido zadas, eventos cobriram o país, e novamente se dis- www.linux-magazin.ro – Romênia Gerente de Circulação cutiu profundamente a respeito da importância dos Cláudio Guilherme dos Santos [email protected] modelos de SL/CA. Apesar de todos os cuidados possíveis terem Nesse período, a Linux Magazine foi criada e sido tomados durante a produção desta revista, a editora não é responsável por eventuais impre- vem lutando para se estabelecer como veículo de cisões nela contidas ou por conseqüências que advenham de seu uso. A utilização de qualquer difusão do SL/CA, publicando conteúdo com a qua- material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qual- lidade e a dedicação que os leitores almejam. Nas quer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer dificuldades e sucessos enfrentados, aprendemos correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, são forneci- cada vez melhor o que nossos leitores esperam, e dos para publicação ou licenciamento a terceiros de forma mundial não exclusiva pela Linux New Media acreditamos que a revista vem progredindo no sen- do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de . tido de satisfazer suas expectativas. Linux Magazine é publicada mensalmente por: A sua participação, caros leitores, com críticas, Linux New Media do Brasil Editora Ltda. Av. Fagundes Filho, 134 sugestões e elogios, ajudou-nos a moldar uma pu- Conj. 53 – Saúde 04304-000 – São Paulo – SP – Brasil blicação voltada ao mercado corporativo brasileiro Tel.: +55 (0)11 4082 1300 Fax: +55 (0)11 4082 1302 de SL/CA. A equipe da Linux Magazine agradece Direitos Autorais e Marcas Registradas © 2004 - 2007: Linux New Media do Brasil Editora Ltda. por sua inestimável colaboração para incentivar Distribuição: Distmag Impressão e Acabamento: Parma o uso de tecnologias livres e transformar o Brasil num centro de excelência em produção e uso des- Atendimento Assinantes sas mesmas tecnologias, o mais importante avanço São Paulo: +55 (0)11 3512 9460 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 na computação nos últimos 30 anos. Muito obrigado! ■ ISSN 1806-9428 Impresso no Brasil

Pablo Hess

INSTITUTO VERIFICADOR DE CIRCULAÇÃO Editor em processo de filiação

Linux Magazine #36 | Novembro de 2007 3 © Linux New Media do Brasil Editora Ltda. ÍNDICE

CAPA

Orientado à programação 35 O Eclipse já não é mais apenas um IDE, sendo chamado até de plataforma de desenvolvimento. Será que fi nalmente che- gou a hora de aposentar as múltiplas janelas de terminal?

Baixo nível, alto rendimento 36 Flexibilidade é a principal característica do Eclipse. O plugin CDT adapta o IDE às linguagens C e C++, resultando num ambien- te de desenvolvimento ergonômico e com ótimas funções.

Ponte de dados 39 Com um único clique, faz-se uma consulta ao ban- co de dados. Veja o que mais os plugins para ban- cos de dados podem fazer no Eclipse.

Seleção plugada 42 O gerenciador de plugins do Eclipse ofere- ce um rico leque de opções para adequar o soft- ware à resolução do seu problema específi co.

4 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Linux Magazine 36 | ÍNDICE

COLUNAS REDES

Augusto Campos 08 Força nos números 53 Charly Kühnast 10 O Iptables oferece a possibilidade de montar clusters e dis- Klaus Knopper 12 tribuir a carga por seus nós. Mas e a resistência a falhas? Zack Brown 14 Pablo Hess 16 NOTÍCIAS

Segurança 18 ➧ Asterisk

➧ Lighttpd ➧ Postfi x-policyd SEGURANÇA ➧ Rsync Bons sonhos 58 ➧ Xpdf Para muitos administradores, a segurança de um aplicati- vo web é mais importante que seu desempenho. Em servido- ➧ Firefox, Thunderbird, Seamonkey, IceApe, XULRunner res web com múltiplos usuários, o módulo Suexec pode re- ➧ Dovecot duzir problemas ligados a diretórios globalmente graváveis.

➧ Vim

➧ Bochs ANÁLISE

➧ Xfs Brincando com fogo 60 Cenas realistas animadas por computador já são exibidas Geral 20 há anos, mas cabelos, água e fogo ainda são difíceis de si- ➧ É tempo de desktop Linux mular. O novo Maya 8.5 se destaca de seus concorrentes.

➧ Lançado o Ubuntu 7.10 Como medir desempenho? 64 O que signifi cam aqueles valores de “load average” na saída de co- ➧ Nova versão do OpenSUSE mandos como procinfo e uptime, e o que devemos fazer com eles? ➧ Fórum de SL do RJ

➧ Parceria entre Mandriva e SLTI

➧ AppArmor sem dono?

➧ PHP – Programando com Orientação a Objetos

CORPORATE Notícias 22 Mais que Educação 70 ➧ Novell e RH são processados por violação de patentes Escolhida pela Intel – maior fabricante de processadores do mundo – para equipar a sua versão do Classmate PC, essa distri- ➧ Oracle não adquire BEA buição Linux sobe nos ombros do gigante OpenSUSE, defenden- ➧ Melhor suporte a PHP do as bandeiras da estabilidade e da facilidade para o usuário.

➧ Gerenciador de projetos livre

➧ Distribuição brasileira atinge 1 milhão de cópias PROGRAMAÇÃO

Artigo: Inovando com Código Aberto 24 De volta à programação 72 Entrevista: Canonical 26 Confi gurar a compilação de um programa com as venerá- Reportagem: Linux Park 28 veis Autotools às vezes é mais complexo que o próprio códi- Coluna: Edgar Silva 32 go do programa. Conheça os méritos da alternativa Cmake. Coluna: Cezar Taurion 34

Tutorial LPI nível 2: Aula 5 48 Aprenda a fazer logs locais e remotos, entenda os backups e empacotamento de software. Continue os estudos para a LPIC-2. SERVIÇOS Editorial 03 Emails 06 Linux.local 78 Eventos 80 Índice de anunciantes 80 Preview 82

Linux Magazine #36 | Novembro de 2007 5 © Linux New Media do Brasil Editora Ltda. Emails para o editor Permissão de Escrita Se você tem dúvidas sobre o mundo Linux, críticas ou sugestões que possam ajudar a melhorar a nossa revista, escreva para o seguinte endereço: [email protected]. Devido ao

volume de correspondência, é impossível responder a todas as sanja gjenero – www.sxc.hu EMAILS dúvidas sobre aplicativos, configurações e problemas de hardware que chegam à Redação, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas nesta seção.

✎ Rede sem fio Essa ainda é uma das barreiras que o Linux deve Tenho lido emails de pessoas que enfrentam transpor para se estabelecer como sistema opera- dificuldades para configurar a rede sem fio em cional para as massas. laptops com a plataforma Centrino. Tenho um Felizmente, pelo que você nos informa, as Advent T5500, equipado com processador Core distribuições estão fazendo um trabalho cada 2 em plataforma Centrino Duo. Experimentei vez melhor de detecção e integração de drivers, tanto o Suse 10.2 quanto o Ubuntu (acho que foi mesmo que proprietários ou não incluídos no o Edgy), antes de me decidir pelo Fedora. To- kernel padrão, e isso certamente beneficia todos dos funcionaram muito bem com a placa Intel os usuários. ■ 3945ABG embutida com o SSID e a velocidade configuradas como Auto. Uma coisa importante é o botão de ligar e desli- gar a placa sem fio. No Advent, ele fica do lado do LED da rede sem fio, e não é nem mencionado no manual do laptop. Ele fica desligado por padrão, e perdi quase um dia inteiro antes de descobrir que ele tinha alguma utilidade. Francisco Aquino Resposta Francisco, muito obrigado pelas informações. Realmente, muitos usuários de Linux enfrentam problemas com a configuração de redes sem fio.

6 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. DPZ A ITAUTEC UNIU O SERVIDOR LR100 AO PC EXPANION. E ELIMINOU OS GASTOS EXCESSIVOS DE UMA REDE COMUM.

A rede da sua empresa já pode ser muito mais ágil e econômica. A Itautec está lançando uma solução composta de hardware e software que permite o uso simultâneo de até 30 usuários em um único servidor. São computadores com modems conectados que usam o HD e o próprio sistema operacional do servidor para funcionarem. Isso significa menos fios, menor custo de manutenção e uma grande redução em gastos com energia, trazendo economia e respeitando o meio ambiente.

Servidor Itautec LR100 5 Itautec PC Expanion L110 • Processador AMD Opteron™ 1210 • Processador tipo SoC • Microsoft® SBS Standard (System on Chip)*** • 1 GB de memória com ECC • Memória RAM 8 MB • HD SATA de 80 GB – 7.200 rpm e memória flash de 512 KB x R$ ,06 • DVD-RW (leitor e gravador de CD e DVD) • 5 monitores LCD de 17” 36 262 • Monitor LCD de 17” • 5 teclados e 5 mouses pelo cartão BNDES* • Floppy, teclado e mouse • Garantia de 1 ano on site** ou R$ 7.969,00 à vista**** • Gabinete-pedestal • Software Auto Manager • Garantia de 1 ano on site**

Oferta válida até 20/12/2007 ou enquanto durarem os estoques. *Financiamento para pessoa jurídica através do cartão BNDES, com taxa de 1% a.m. Necessário possuir o cartão de crédito citado, sujeito à confirmação da disponibilidade da linha de crédito para as localidades e limite para operação. Consulte nossa Central de Atendimento para informações sobre outras condições de financiamento para pessoa física ou jurídica pelo telefone 0800-121-444. **Garantia de 1 ano on site para partes, peças e serviços. ***Funciona em rede ethernet. Preço com impostos inclusos para São Paulo. Frete não incluso. Demais características técnicas e de comercialização estão disponíveis em nosso site e no Televendas. ****Não inclui preço de instalação e estrutura de rede. Fica ressalvada eventual retificação da oferta aqui veiculada. Foto meramente ilustrativa.

© Linux New Media do Brasil Editora Ltda.

Os: 613177 Form: 204x275 Operador: Marcus 613177_204x275_U.indd 1 10/12/07 5:42:18 AM Agência: DPZ Cliente: Itautec Mac: Premidia_11

Cyan Magenta Yellon Black Mídia: Anúncio Per l: Analógico Prova: Chromedot Feliz aniversário, Linux Magazine Augusto Campos Relembrando a primeira edição, para comemorar bem informado. por Augusto Campos

COLUNA ui avisado pelo editor que esta coluna irá fazer Só que quando se fala de logística de publicações parte da edição de aniversário da Linux Maga- de nicho, nada é simples. A distribuição do primei- Fzine, e por isso quero pedir licença aos leitores ro número demorou bem mais do que o previsto e, para dedicar uma página inteira a esse tema, que pre- um mês depois da data originalmente prevista para cisa ser entendido para ser melhor comemorado. ir às bancas, publiquei um breve relato enviado pela Quando a Linux Magazine foi lançada no Brasil, Sulamita Garcia: “Acabo de voltar do QG da Linux em 2004, o mercado editorial sobre código aberto Magazine, onde pude ver em primeira mão um dos no Brasil passava por um momento de transição. A primeiros exemplares da revista, num almoço com os revista que ao longo dos anos anteriores acompanha- editores. Estou sem palavras. A revista está incrível, são va a comunidade Linux brasileira havia sido recen- 98 páginas recheadas de matérias técnicas e várias não temente extinta, acompanhando uma reestrutura- técnicas. A que vi foi um exemplar feito emergencial- ção na empresa que a mantinha. Outra revista com mente para a Comdex. Infelizmente a revista está na razoável expressão na comunidade geek nacional gráfica há mais de uma semana esperando que eles começou a dar maior atenção ao Linux, mas logo cumpram o prazo já estouradíssimo de entrega, que passou por uma reestruturação e em seguida desa- deve acontecer amanhã.(...) Agora agüenta a ansieda- de!” E o público realmente estava ansioso, como se viu dias depois[2] com vários relatos de leitores que já o público realmente tinham conseguido obter seu primeiro exemplar. estava ansioso, como Desde então já se passaram três anos. O formato das páginas da revista foi alterado, o projeto gráfico se viu dias depois com se renovou, o número de páginas foi ajustado, a li- vários relatos de leitores nha editorial mudou, surgiram as edições especiais, o CD mensal ficou para trás, mas algo não mudou: os leitores continuam sendo bem informados a cada pareceu súbita e definitivamente das bancas. Nesse nova edição. Parabéns, Linux Magazine, e que ve- meio tempo, outra revista destinada especificamente nham muitos anos pela frente! ■ ao público do software livre foi gestada, lançou um número zero durante o FISL, e logo em seguida foi cancelada antes de chegar a ir às bancas. Mais informações E foi nesse período que surgiu a Linux Magazine, [1] Anúncio do lançamento da Linux Magazine anunciada na época como “uma revista independen- no BR-Linux: te, disponível atualmente em mais de 60 países em 5 http://br-linux.org/noticias/002795.html idiomas diferentes, que tem por objetivo disponibi- [2] Confirmação do lançamento da Linux Magazine lizar conhecimento técnico de alta qualidade sobre no BR-Linux: Linux, bem como difundir a cultura do software de http://br-linux.org/noticias/003230.html código aberto em âmbito mundial”. Tive a oportunidade de dar as boas-vindas para a revista assim que fui autorizado a ajudar a tornar Sobre o autor público que ela seria lançada, no início de julho Augusto César Campos é administrador de de 2004. Os comentários dos leitores na notícia TI e, desde 1996, mantém o site BR-linux.org, avisando do lançamento[1] ajudam a revelar de- que cobre a cena do Software Livre no Brasil talhes sobre o período conturbado do mercado e no mundo. editorial na época.

8 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. © Linux New Media do Brasil Editora Ltda. Fail2ban Charly Kühnast Mecanismos populares de acesso, como SSH, FTP, POP3 ou htaccess, entre outros, constituem um alvo para ataques de força bruta. Proteja-se dos ataques de dicionário. por Charly Kühnast COLUNA

uando usuários têm direito de escolher suas O Fail2ban contém um daemon de servidor e próprias senhas, geralmente escolhem algo um cliente que interpreta os arquivos centrais de Qbem fraco, como o nome de um amigo, configuração, fail2ban.conf e jail.conf, e enca- seu time do coração ou um animal de estimação. minha os comandos para o servidor. O Fail2ban Esse comportamento humano previsível é valioso examina um ou mais arquivos de log com expres- para os meliantes. sões regulares. Isso permite que ele chame o IPta- Um agressor só precisa criar um loop com tenta- bles para bloquear o endereço IP de um agressor tivas de conexão que consulte uma lista de senhas por um período de tempo configurável quando de dicionário. Afinal, é pouquíssimo provável que for feito um número especificado de tentativas o usuário tenha usado uma senha semelhante a frustradas de login. 4G&dP9a! na conta sob ataque. Para contornar essa vulnerabilidade inerente, faz sentido restringir o número de tentativas de login Servidor FTP – ao menos parte das vezes. Embora MaxAuthTries Como exemplo, digamos que eu use o Vsftpd como tenha um mecanismo básico para isso, alguns ser- meu servidor FTP. Após três tentativas de login viços legados não o têm. frustradas, o servidor deve bloquear meu IP por O Fail2ban[1] fecha essa porta. Algumas distri- cinco minutos, como mostra a figura 1. O exemplo buições, como Debian, Ubuntu e Gentoo, incluem 1 mostra a entrada do arquivo jail.conf responsá- o Fail2ban. Seu código-fonte e pacotes para outras vel por isso. distribuições estão disponíveis online. Para oferecer cinco minutos de paz ao servidor, mudei o bantime dos 600 segundos padrão para 300. Esse intervalo de tempo é suficiente para im- Exemplo 1: Entrada do jail.conf pedir ataques de dicionário, mas ainda é curto o suficiente para evitar chatear usuários legítimos 01 [vsftp] 02 enabled = true que tenham pressionado inadvertidamente a tecla 03 port = ftp [Caps lock]. ■ 04 filter = vsftpd 05 logpath = /var/log/auth.log 06 maxretry = 3 07 bantime = 300 Mais informações

[1] Fail2ban: http://www.fail2ban.org

Sobre o autor

Charly Kühnast é administrador de sistemas Unix no datacenter Moers, perto do famoso rio Reno, na Alemanha. Lá ele cuida, principalmen- Figura 1 O comando de listagem do iptables mostra que o te, dos firewalls. Fail2ban fez o firewall bloquear o IP 10.0.0.254.

10 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Anúncio ODF Linux Magazine 9/21/07 5:44 PM Page 1

© Linux New Media do Brasil Editora Ltda. Pergunte ao Klaus! Klaus Knopper O criador do Knoppix responde as mais diversas dúvidas de leitores. por Klaus Knopper

COLUNA Impressoras compartilhadas para permitir que os clientes procurem e co- Estou encarregado de um laboratório com 25 laptops com nectem-se às impressoras compartilhadas por Edubuntu Linux. Eu gostaria de confi gurar uma impres- IPP no servidor. sora para ser compartilhada por todos os laptops . Se também houver clientes Windows® na rede, Já tentei instalar a impressora em um computador e talvez seja importante ativar a seção [printers] de depois compartilhá-la com os outros através dos endereços exemplo no arquivo /etc/samba/smb.conf. Para clientes IP, mas não funcionou. Como resolvo meu problema? Linux, não é necessário executar um servidor Sam- Resposta ba para exportar impressoras, pois provavelmente Compartilhar uma impressora com o CUPS deveria todos eles funcionarão perfeitamente apenas com ser a solução mais fácil, se nenhuma regra de fi rewall a impressão por IPP. impedir que os laptops acessem a porta 631 do com- putador que atua como servidor. A confi guração do CUPS pode ser feita pelo KDE ou pela interface web. Rede sem fi o Talvez sejam necessários PPDs da impressora, então é Parabéns por um excelente produto. Usamos o Knoppix como Live CD para nosso trabalho via Internet. Consegui fazer a rede sem fi o funcionar. Para clientes Linux, não Descobri que o próprio Knoppix carrega o driver do é necessário executar um rt2x00 – creio que devido ao hardware ou fi rmware RaTech ser encontrado. servidor Samba para exportar Foi necessário usar o comando rmmod rt2500pci impressoras, pois provavelmente e depois carregar o ndiswrapper com os drivers do Windows XP. todos eles funcionarão Existe alguma forma de burlar o sistema e não perfeitamente apenas com carregar? Ou então, seria possível fazer esse driver a impressão por IPP. funcionar no Knoppix? Resposta Desculpe, não há uma forma de burlar isso (ainda). bom instalar também os pacotes Foomatic e Gutenprint . Pode-se adicionar um script que contenha a seqüên- Os mesmos pacotes deverão ser instalados nos clientes cia correta de comandos para apagar o driver errado para que usem a impressora em modo nativo, em vez e carregar o “certo” via ndiswrapper. de apenas como um postscript genérico. Na verdade, não tenho certeza se posso incluir Após iniciar o serviço do CUPS, confi gure a impres- legalmente o fi rmware proprietário Ralink nas sora pelo painel de controle ou pela interface web do próximas versões, então talvez seja melhor retirar CUPS, em http://localhost:631. As duas devem mostrar esse driver completamente, em vez de distribuir opções de compartilhamento pela rede. Senão, veja se um não funcional. ■ o arquivo /etc/cups/cupsd.conf contém a entrada Allow @LOCAL na seção . Caso ela não esteja pre- sente, adicione-a. Talvez seja interessante acrescentar Sobre o autor também as seguintes linhas ao mesmo arquivo: Klaus Knopper é o criador do Knoppix e co-fundador do evento Linux Tag. Atual- Browsing On mente ele trabalha como professor, progra- BrowseOrder allow,deny mador e consultor. BrowseAllow @LOCAL

12 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Plug In. Uma parceria que dá prêmios! Gabarito

Conheça outras vantagens Imagens ilustrativas de um parceiro da Plug In: • Isenção de Pagamento de Hospedagem • Bônus por Indicação • Atendimento Técnico Exclusivo • Gerente de Relacionamento Promoção “Parceiro Premiado Plug In” • Divulgação no Site da Plug In A Plug In resolveu retribuir a fidelidade de seus parceiros com uma Super Promoção e para concorrer é muito simples: os serviços indicados pelos parceiros, no período de 15/09/2007 a 30/12/2007, serão revertidos em pontos, e os que atingirem a maior pontuação serão premiados com: 1 TV LCD 32’’, 2 Câmeras Digitais e 2 Ipod’s. Para saber mais, acesse nosso site. • Revenda - Windows , Linux Se você já é um parceiro Plug In, participe! Se não for, torne-se um parceiro • Hospedagem de sites - Windows , Linux Plug In e tenha a certeza que essa parceria é premiada. • Streaming - Conexões Ilimitadas Mais detalhes: www.plugin.com.br/promocao-parceiros/ • E-mail Marketing - Ações Segmentadas

Contrate online: www.plugin.com.br

© Linux New Media do Brasil Editora Ltda.

anunciopromoplug.indd 1 10/5/07 1:49:29 PM Crônicas do kernel Zack Brown Os últimos tempos indicam uma maior atenção dos desenvolvedores do kernel quanto à participação de outros contribuidores. por Zack Brown COLUNA Patches mais fáceis que os mesmos argumentos valem para a arquitetura PA- Joe Perches postou um script que identifica auto- RISC e, em alguns casos, o GCC 3.4 gera código melhor maticamente as pessoas certas a quem determinado que o 4.0. Chris Wedgwood colocou que alguns usuários patch deve ser submetido, com base nos diretórios utilizam sistemas antigos com versões ultrapassadas do modificados. Não há mais necessidade de consultar GCC e ainda querem novos kernels. o arquivo MAINTAINERS – o script faz isso por você! O Adrian disse que seria possível continuar suportando script analisa o patch em busca dos diretórios afeta- versões mais antigas do GCC nas arquiteturas onde dos pelo mesmo, e então varre o arquivo MAINTAINERS fossem necessárias, e não no resto do código-fonte. para encontrar o campo file pattern, que descre- Ele reafirmou que o kernel suporta, atualmente, meia ve os diretórios associados a um dado projeto. Em dúzia de versões do compilador, e que eventualmente seguida, o script retorna as informações de contato pode vir a ser necessário reduzir esse número. Adrian oficiais para o respectivo projeto. ainda acrescentou que, provavelmente, poucos desen- volvedores do kernel realmente precisam de algum compilador diferente do GCC 4.0. Linus Torvalds o script de Joe e a infraestrutura interveio e disse que são os usuários que testam o que o acompanha também kernel que devem ser levados em consideração. Ele afirmou: “Se dificultarmos o teste do kernel para ou- facilitarão as contribuições por tras pessoas, vamos perder. Então, não, eu voto em desenvolvedores iniciantes. não eliminar o suporte às versões antigas do GCC, a menos que seja absolutamente necessário.” Adrian ainda argumentou que há a possibilidade de Mas espere! Você está dizendo que não há um campo alguns problemas do kernel serem diretamente relacio- file pattern no arquivo MAINTAINERS? Sem problema – Joe nados a versões específicas do GCC sendo usadas para também submeteu centenas de patches para acrescentá- compilá-lo, e que, nesses casos, o problema poderia los a cada entrada do arquivo. Isso economiza bastante perdurar e nunca ser corrigido – o suporte ao compila- trabalho de caminhar pelo código-fonte, e pode vir a dor problemático provavelmente não seria retirado do ter alguns efeitos muito interessantes. Além de facilitar kernel, nem corrigido, apesar de, oficialmente, a versão a vida do hacker de kernel normal, o script de Joe e a específica do GCC ainda ser listada como suportada. infraestrutura que o acompanha também facilitarão as Mas Adrian reconheceu que, pela discussão gerada, está contribuições por desenvolvedores iniciantes. claro que ainda não é o momento de se considerar a eliminação do suporte a versões antigas. E ainda indicou que tentaria rastrear as falhas relacionadas a versões do GCC antigo GCC e relatá-las à lista. ■ Alguns desenvolvedores se questionaram se é realmente necessário os fontes do kernel suportarem a compilação por versões do GCC anteriores à 4.0. Adrian Bunk foi o Sobre o autor primeiro a levantar a questão, e vários outros se manifes- taram a favor do suporte às versões mais antigas do GCC. A lista de discussão Linux-kernel é o núcleo das atividades de desenvolvimento do kernel. Russell King afirmou que o GCC 4.0 ainda não é sufi- Zack Brown consegue se perder nesse oce- cientemente estável na arquitetura ARM, e o GCC 3.4.3 ano de mensagens e extrair significado! Sua newsletter Kernel Traffic esteve em atividade é muito mais confiável. Russell ainda apontou que o 3.4.3 de 1999 a 2005. é mais rápido que o 4.0. E Kyle McMartin acrescentou

14 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. © Linux New Media do Brasil Editora Ltda. As novidades do kernel 2.6.23 Pablo Hess O novo escalonador e a inclusão de duas soluções de virtualização são importantes adições ao kernel. Mas isso não é tudo. por Pablo Hess

COLUNA série 2.6 do kernel tem um novo recorde: com Virtualização 3,9MB, o changelog do Linux 2.6.23 superou O sistema de virtualização exige a aplicação de Apor apenas 41KB o tamanho do arquivo com patches no kernel para que funcione corretamente as mudanças ocorridas na versão 2.6.22, 93 dias após sobre o . Com os patches para domU inclu- o lançamento deste. E não é por menos: finalmente ídos no Linux 2.6.23, agora, apenas o dom0 necessita foram incluídos o novo escalonador CFS (Comple- dos potencialmente trabalhosos patches. tely Fair Scheduler) e o suporte a hóspedes virtuais Outra adição interessante é o sistema . Seu de sistemas Xen e Lguest. Mas é digna de nota a criador, Rusty Russel, o define como “um hypervisor criação do primeiro driver de dispositivo (Realtek simples para o Linux sobre o Linux”. Ele não depen- USB) baseado na nova pilha WLAN, inaugurada de de suporte por hardware (como VT ou Pacifica), no Linux 2.6.22. diferentemente do KVM, e consiste em um simples módulo, carregável pelo comando modprobe. Além disso, Rusty confirma que o Lguest ainda está longe CFS de ser eficiente, e espera ver muitos forks do código, O “escalonador completamente justo”, segundo transformando-o, assim, na base de múltiplos sistemas seu título, por si só renderia um pequeno romance. de virtualização de Código Aberto, potencialmente Ainda durante o desenvolvimento do kernel 2.6.21 compatíveis e com rápido desenvolvimento. Con Kolivas propôs um novo escalonador, Stairca- O próprio KVM também sofreu pequenas alte- se, mais eficiente que o atual (chamado O(1)). Em rações. Ele agora suporta hóspedes multiprocessa- tempos de CPUs com múltiplos núcleos, esse é um dos, está mais rápido e não depende mais da tec- aspecto mais e mais relevante num kernel moder- nologia PAE. no, pois o escalonador é o responsável por gerenciar quanto tempo de processamento deve ser cedido a cada processo em execução no sistema. Futuro Ingo Molnar também desenvolveu seu escalona- Obviamente, as mudanças não pararam por aí. Por dor, o CFS, anunciado pouco depois. Resumindo a exemplo, uma notícia que deve animar muitos é a re- longa história que se seguiu, Con alegava que seu escrita do código de inicialização para as arquiteturas escalonador era mais eficiente que o CFS, e sentiu- x86 e x86-64, antes feita em assembly e agora substi- se traído quando Linus Torvalds bateu o martelo a tuída por código em C, bem mais palatável e fácil de favor do código de Ingo. O patch de escalonadores gerenciar e melhorar. Na versão 2.6.24, há planos de “plugáveis” de Con também foi rejeitado, com Li- se unificar completamente o código dessas duas arqui- nus afirmando que não podia confiar na atenção teturas, e não apenas a parte de inicialização. que Con daria a esse código. O futuro de sistemas de arquivos como XFS e Ext4 Kolivas decidiu afastar-se do desenvolvimento do também promete ser mais veloz, pois foi adotado ago- kernel, finalizando a longa série de conjuntos de ra o chamado “on-demand ”, que permite patches -ck, tradicionalmente voltados à melhora a pré-leitura especulativa de partes do disco. do desempenho do kernel em desktops. O suporte à arquitetura Cell continua melho- Desde então o CFS foi submetido a extensos testes rando, e já estão em andamento as inclusões de práticos e sintéticos (Kolivas havia criado também diversos drivers de rede sem fio através da nova in- um benchmark para escalonadores do Linux), e de- fraestrutura mac80211. buta no kernel 2.6.23 sob olhares ansiosos e suspeitos, Se a versão 2.6.23 bateu recordes, vale esperar pela que perguntam “o que um novo escalonador pode 2.6.24, que Linus e seus colegas prometem tornar um fazer pelo desempenho do sistema?” marco na série 2.6. ■

16 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. © Linux New Media do Brasil Editora Ltda. ➧ Asterisk Vários problemas foram descobertos no Asterisk, um serviço ou obter informações do servidor Asterisk. popular sistema PBX de código aberto. O Asterisk (CVE-2007-2488, CVE-2007-3763) oferece o desempenho de sistemas comerciais em Um problema do IAX2 poderia permitir que um PCs comuns. agressor executasse códigos arbitrários numa máquina Três problemas no protocolo SIP podem possibili- remota. (CVE-2007-3762) tar um ataque de negação de serviço. (CVE-2007-1306, Foram descobertas ainda outras duas falhas que po-

SEGURANÇA CVE-2007-1561, CVE-2007-2297) dem permitir situações de negação de serviço. (CVE- Além desses, há ainda dois problemas no driver 2007-2294, CVE-2007-3764) ■ de canal IAX2 que podem ser explorados por um Referência no Debian: DSA-1358-1 agressor para realizar um ataque de negação de Referência no Suse: SUSE-SR:2007:015

➧ Lighttpd limites de acesso de pacotes SMTP aplicativos de escritório do KDE, o O Lighttpd é um servidor web des- recebidos, pacotes mal formados KOffice, e também do kdegraphics, tinado a usuários que não têm ne- poderiam desencadear a explora- são aconselhados a procurar atua- cessidade dos recursos avançados ção remota da vulnerabilidade, lizações. Os usuários do ambiente do Apache ou que não podem arcar executando código arbitrário. (CVE- Gnome também devem atualizar o com o grande consumo de memó- 2007-3791) ■ pacote gpdf ou evince. ria deste. Foram encontradas quatro Referência no Debian: DSA-1361 Os usuários também devem veri- falhas no Lighttpd. Dois problemas ficar atualizações nos pacotes pdfkit. tratam-se de vulnerabilidades a ata- framework, tetex-bin, libextractor, ques de negação de serviço aplicá- ➧ Rsync poppler e pdftohtml. ■ veis ao servidor sobre quase qualquer O Rsync é um popular programa, Referência no Debian: DSA-1347, DSA- plataforma que permita situações de muito veloz, para cópia remota de 1348, DSA-1349, DSA-1350, DSA-1352, negação de serviço. (CVE-2007-3946, arquivos e diretórios. Devido a uma DSA-1354, DSA-1355 e DSA-1357 CVE-2007-3947) falha de estouro de buffer, um agres- Referência no Fedora: FEDORA-2007- O terceiro problema reside em sor remoto poderia usar nomes de 1383, FEDORA-2007-1547, FEDORA- mod_access, e poderia permitir que diretório longos para executar código 2007-1594 e FEDORA-2007-1614 um usuário remoto ignorasse as res- arbitrário. (CVE-2007-4091) ■ Referência no Mandriva: MDKSA- trições de acesso. Referência no Debian: DSA-1360 2007:158, MDKSA-2007:160, MDKSA- A quarta falha também está rela- Referência no Suse: SUSE-SR:2007:017 2007:161 e MDKSA-2007:163 cionada à negação de serviço, e se Referência no Ubuntu: USN-500-1 Referência no Red Hat: RHSA-2007:0732- aplica a máquinas com arquitetura 2 e RHSA-2007:0731-3 de 32 bits. (CVE-2007-3949, CVE-2007- Referência no Suse: SUSE-SR:2007:015 3950) ■ ➧ Xpdf e SUSE-SR:2007:016 Referência no Debian: DSA-1362-1 O Xpdf é um visualizador de do- Referência no Ubuntu: USN-196-1 e Referência no Gentoo: GLSA 200708-11 cumentos no formato PDF para USN-496-2 Referência no Suse: SUSE- ambiente X Window muito usado. SR:2007:015 Foi encontrada uma falha no Xpdf que permite que um arquivo PDF ➧ Firefox, Thunderbird, malicioso execute código arbitrário. Seamonkey, IceApe, ➧ Postfix-policyd A falha do Xpdf possui um efeito ex- O Postfix-policyd é um pacote no pansivo, pois esse código foi incor- XULRunner estilo plugin para o popular servidor porado a diversos outros programas. Firefox, Thunderbird, Seamonkey, de emails Postfix. (CVE-2007-3387) IceApe e XULRunner têm proble- Devido a um erro na forma Devido aos problemas do progra- mas devido a sua dependência de como o postfix-policyd verifica os ma Xpdf, os usuários do conjunto de códigos do Mozilla. Uma falha

18 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Segurança | NOTÍCIAS

na janela “about:blank” poderia ele está instalado, com pastas com- ➧ Bochs permitir que um agressor modi- pactadas, o programa pode permitir O Bochs é um emulador portável que ficasse o conteúdo de websites. a travessia de diretórios em nomes imita PCs IA-32. Há um problema (CVE-2007-3844) de caixa de mensagem. Com isso, na placa de rede NE2000 emulada O software não trata apropriada- um agressor remoto conseguiria ler pelo Bochs, que poderia permitir a mente aspas duplas e espaços nas o conteúdo de um arquivo de email escalada de privilégios. O emulador URLs, o que pode permitir que um .gzip. (CVE-2007-2231) ■ de disquetes possui uma falha que agressor passe um argumento arbi- Referência no Debian: DSA-1359 pode travar a máquina virtual. (CVE- trário para um programa auxiliar, Referência no Ubuntu: USN-487-1 2007-2893, CVE-2007-2894) ■ caso o usuário seja convencido a Referência no Debian: DSA-1351 abrir uma página web hostil. (CVE- Referência no Fedora: FEDORA-2007- 2007-3845) ■ ➧ Vim 1778 Referência no Debian: DSA-1345, DSA- Duas falhas foram encontradas no 1346 Vim. Um problema de formatação Referência no Gentoo: GLSA 200708-09 de cadeias de caracteres poderia le- ➧ Xfs Referência no Suse: SUSE- var à execução de código arbitrário. O X Font Server, xfs, tem a tarefa de SA:2007:049 Além disso, devido a um problema renderizar fontes no servidor para má- Referência no Ubuntu: USN-493-1, com a sandbox, um mecanismo que quinas clientes remotas. Essa técnica USN-503-1 impede que comandos potencial- de criar fontes foi descartada pela co- mente perigosos sejam executados, munidade Linux, pois a técnica prefe- um arquivo texto cuidadosamente rida é renderizar as fontes na máquina ➧ Dovecot criado poderia fazer o Vim executar cliente com o programa xft. Devido a O Dovecot é um servidor de emails comandos de shell. (CVE-2007-2953, uma falha recentemente descoberta seguro que suporta caixas mbox e CVE-2007-2438) ■ no xfs, um agressor local pode usá-lo maildir. Quando ele é configurado Referência no Debian: DSA-1364 para alterar as permissões de arquivos para usar filas de email de usuários Referência no Suse: SUSE- arbitrários. (CVE-2007-3103) ■ que não constam no sistema onde SR:2007:018 Referência no Debian: DSA-1342

Postura das principais distribuições Linux quanto à segurança

Distribuição Referência de Segurança Comentários Debian Info: www.debian.org/security Alertas de segurança recentes são colocados na homepage e distribu- Lista: lists.debian.org/debian-security-announce ídos como arquivos HTML com links para os patches. O anúncio tam- Referência: DSA-… 1 bém contém uma referência à lista de discussão. Gentoo Info: www.gentoo.org/security/en/glsa Os alertas de segurança são listados no site de segurança da distribui- Fórum: forums.gentoo.org ção, com link na homepage. São distribuídos como páginas HTML e Lista: www.gentoo.org/main/en/lists.xml mostram os comandos necessários para baixar versões corrigidas dos Referência: GLSA: … 1 softwares afetados. Mandriva Info: www.mandriva.com/security A Mandriva tem seu próprio site sobre segurança. Entre outras coisas, Lista: www1.mandrdrivalinux.com/en/flists.php3#2security inclui alertas e referência a listas de discussão. Os alertas são arquivos Referência: MDKSA-… 1 HTML, mas não há links para os patches. Red Hat Info: www.redhat.com/errata A Red Hat classifica os alertas de segurança como “Erratas”. Proble- Lista: www.redhat.com/mailing-lists mas com cada versão do Red Hat Linux são agrupados. Os alertas são Referência: RHSA-… 1 distribuídos na forma de páginas HTML com links para os patches. Slackware Info: www.slackware.com/security A página principal contém links para os arquivos da lista de discussão Lista: www.slackware.com/lists (slackware-security) sobre segurança. Nenhuma informação adicional sobre segurança no Referência: [slackware-security] … 1 Slackware está disponível. Suse Info: www.novell.com/linux/security Após mudanças no site, não há mais um link para a página sobre se- Lista: www.novell.com/linux/download/updates gurança, contendo informações sobre a lista de discussão e os alertas. Referência: suse-security-announce Referência: SUSE-SA … 1 Patches de segurança para cada versão do Suse são mostrados em vermelho na página de atualizações. Uma curta descrição da vulnerabi- lidade corrigida pelo patch é fornecida. 1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.

Linux Magazine #36 | Novembro de 2007 19 © Linux New Media do Brasil Editora Ltda. ➧ É tempo de desktop Linux Os tempos atuais são muito propícios à adoção do Li- no BulletProof-X e à instalação facilitada de plugins do nux em desktops. As duas principais distribuições desse Firefox pelo sistema, o novo Ubuntu oferece uma expe- segmento do mercado apresentaram novas versões, com riência ainda melhor aos usuários não técnicos. aumento de usabilidade, no último mês. Nova versão do OpenSUSE

NOTÍCIAS Dez meses após o lançamento do OpenSUSE 10.2, foi Lançado o Ubuntu 7.10 liberada a versão 10.3 do sistema comunitário da Novell, Com o criativo nome de Gutsy Gibbon (algo como gi- última iteração da série 10.x. Embora seja, como afirma o bão corajoso), foi lançada no último dia 18 a versão mais site Distro Watch, a segunda distribuição mais usada em recente da distribuição Linux de desktops, o anúncio do fabricante reforçou o aspecto de que maior sucesso da atualidade entre o produto é apropriado para qualquer situação, e disponível usuários finais, o Ubuntu. gratuitamente em http://software.opensuse.org/. Como anteriormente, essa nova O tempo de suporte (atualizações de softwares e se- mudança de versão é marcada por gurança) do OpenSUSE 10.3 será de dois anos. diversas pequenas melhorias, e não Na interface gráfica, um dos tradicionais pontos fortes por alguma grande diferença em re- da distribuição, o KDE 3.5.7 já utiliza partes de código lação à antecessora. O gerenciador da próxima versão do ambiente gráfico, o KDE 4. Está de janelas 3D Compiz Fusion desta incluído também o Gnome 2.20, uma versão do utili- vez foi integrado ao Gnome, com tário YaST em GTK, a nova tecnologia de instalação menus adequadamente configura- simplificada 1-click-install, melhorias na virtualização dos. Somado aos recentes avanços e nos efeitos 3D do desktop. ■

➧ Fórum de SL do RJ ➧ Parceria entre Mandriva e SLTI O 5º Fórum de Software Livre do Rio de Janeiro ocorreu no A Mandriva Conectiva firmou uma parceria início de outubro na cidade do Rio de Janeiro. Entre os dias 3 e com a Secretaria de Logística e Tecnologia da 6, o numeroso público assistiu gratuitamente às palestras sobre Informação, vinculada ao Ministério do Plane- os mais variados assuntos, naturalmente em torno do Software jamento. O objetivo do acordo é certificar as Livre, como TV digital, inclusão digital, direitos autorais e li- soluções disponíveis no Portal do Software Pú- cenças de software, produção de conteúdo, multimídia, admi- blico Brasileiro, mais uma iniciativa do órgão, nistração, políticas públicas, capacitação profissional e, claro, na distribuição do fabricante franco-brasileiro. programação. O praticamente onipresente Jon “Maddog” Hall No futuro, considera-se até mesmo a inclusão também compareceu, versando a respeito da compreensão do no Mandriva dos pacotes de algumas soluções termo “livre” em Software Livre abrigadas no Portal. Durante o Fórum foi realizada também a Olimpíada de Corinto Meffe, coordenador do Portal, afirmou Algoritmos Hostnet, realizada por uma das empresas que que o principal beneficiado pelo acordo entre a promovem o evento no Rio. Na competição entre escolas, empresa e o órgão público será o usuário, pois a Faetec de Quinti- terá garantida a qualidade do software rodando no saiu vencedora, sobre essa plataforma. seguida pelo Cefet, Começando pelo sistema de inventário CACIC, em segundo lugar, e a seqüência de softwares certificados ainda não está o Colégio Lemos de definida, e será avaliada pela Mandriva, a SLTI e Castro, em terceiro. a Dataprev. ■ Os prêmios incluí- ram notebooks, cursos, hospedagem de sites e Jon “maddog” Hall foi a personalidade interna- convites para estágio cional de maior impacto no evento carioca. na empresa. ■

20 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Geral | NOTÍCIAS

PHP – Programando com Orientação a Objetos ➧ AppArmor sem dono? Em 2005, a Novell adquiriu a empresa Immunix, fa- A linguagem de programação PHP conquista diaria- bricante da distribuição Linux de mesmo nome e de- mente mais e mais adeptos. Seja pela facilidade para construir um website dinâmico, ou pela velocidade senvolvedora de um interessante e efi caz sistema de para programar um aplicativo, ou ainda pela neces- proteção para o sistema do pingüim. Após a aquisição, sidade de se fazer alterações a um dos inúmeros sis- o sistema AppArmor, principal motivo da compra pela temas de gerenciamento de conteúdo que a adotam, Novell, foi incluído no OpenSUSE 10.1 e no SLES 10, o PHP merece todo o respeito e atenção de todas as tendo sido recentemente incorporado a outras distri- categorias de programadores. buições, como Ubuntu, Mandriva e Slackware. Em seu livro, Pablo Dall’Oglio, personagem atuante na Apesar disso, todos os desenvolvedores do AppArmor comunidade de Código Aberto brasileira e internacional, foram recentemente demitidos pela Novell. Felizmente, apresenta uma multiplicidade de conhecimentos e formas contudo, o desenvolvimento do de uso de PHP. Começando com o básico, o livro pode sistema de segurança não vai pa- ser usado inclusive para introdução à programação. As rar, de acordo com seu principal seções sobre orientação a objetos também introduzem e aprofundam essa técnica com desenvolvedor, Crispin Cowan. grande fl uidez, o que torna a lei- Juntamente com outros dois ex- tura, acima de tudo, agradável – funcionários da Novell, Cowan uma verdadeira raridade em livros está criando a Mercenary Linux, técnicos. fi rma dedicada à consultoria Ao fi nal, Pablo ainda introduz al- para o AppArmor. guns conceitos atualmente em Além disso, a Novell afi rmou voga na construção de aplica- que continuará abrigando o soft- ções web, um dos campos onde ware em seu website, embora PHP tem mais destaque, como não tenha oferecido maiores Após a demissão Crispin MVC e web services. ■ esclarecimentos a respeito das Cowan vai criar empresa de supreendentes demissões. ■ consultuoria.

© Linux New Media do Brasil Editora Ltda. Novell e RH são processados por violação de patentes IP Innovation, LLC, uma empresa do grupo Brad Brunell, atual Vice-Presidente Sênior do Acacia Acacia Technologies Group, e a Technology Technologies Group, era Gerente Geral da Divisão ALicensing Corporation estão movendo um pro- de Lincenciamento de Propriedade Intelectual da CORPORATE cesso por infração de patente na Corte do Distrito Leste gigante de Redmond, sendo responsável por toda a do Texas (Texas Eastern District Court) contra a Red política de licenciamento de patentes para a e da Hat e a Novell. Ambas as empresas são especializadas Microsoft. Foi ele quem criou e gerenciou a equipe na compra e na aplicação de patentes técnicas. de negociação dessa divisão, bem como contratou A patente de que trata o processo é de 10 de dezembro de — e eventualmente treinou — os especialistas finan- 1991, e foi concedida originalmente à Xerox, empresa que ceiros e jurídicos que desenvolveram o programa de inventou as interfaces gráficas baseadas em janelas. Essa pa- licenciamento de propriedade intelectual da empre- tente “protege” o conceito da utilização de diversos workspa- sa, além de ter adquirido propriedade intelectual de ces (áreas de trabalho), que possibilite ainda que uma janela outras empresas seja através de aquisições, parcerias seja mostrada nessas mesmas áreas. Esse recurso é há vários estratégicas ou licenciamento direto.; anos um padrão no X Window System, sistema de janelas Jonathan Taub, atual Vice-Presidente do mesmo grupo, que serve de base para todos os ambientes Linux e Unix. O ocupava na Microsoft o cargo de Diretor de Alianças processo também trata de outras patentes de mesmo título, Estratégicas para Dispositivos Móveis e Embarcados concedidas também às empresas solicitantes. da companhia desde 2004, onde ocupou também, de As empresas que movem a ação de infração pelos sistemas 2002 a 2004, o cargo de Gerente de Desenvolvimento corporativos da Novell e Red Hat exigem uma indenização de Negócios da Unidade de Negócios de Segurança. proporcional, no mínimo, ao valor das licenças não pagas por O fato é que a Microsoft, enquanto de um lado é usuária todo o período da suposta infração. Tanto a Novell quanto a e até apoiadora de tecnologias de código aberto (onde elas Red Hat ainda não se manifestaram quanto ao processo. atendam aos interesses da empresa, seja junto a seus clientes O interessante é que essa ação foi movida apenas dias ou como programa de marketing), continua na sua trajetó- após os recentes ataques de Steve Ballmer, CEO da Micro- ria de criar uma percepção de que o Linux é vulnerável a soft, nos quais o executivo ataques por infração de propriedade intelectual. Por outro declarou que os usuários lado, é interessante observar que a Novell, empresa com a da Red Hat terão que pagar qual a Microsoft fechou um acordo de cooperação no ano pela propriedade intelectual passado, não foi poupada de um processo por infração de da Microsoft. Até mesmo patentes, o que pode levar a uma percepção de que esse aqueles que são avessos a tipo de processo não se encaixe na agenda da empresa. En- teorias da conspiração de- tretanto, não se pode perder de vista que a Microsoft vem verão se sentir compelidos procurando há tempos criar subsídios para processos por a relacionar as declarações infração de propriedade intelectual contra o Linux. de Ballmer à ação contra as duas distribuições Linux. Estratégia O desenvolvimento dessa estratégia vai inevitavel- Relações mente levar a mudanças importantes na maneira como E essas suspeitas não são empresas fornecedoras de tecnologias de código aberto de todo infundadas: as tratam propriedade intelectual. Há que se verificar se empresas que estão mo- não é o momento de, em paralelo com a defesa do pro- vendo a ação têm, em cesso ora movido contra essas duas empresas, revidar tal As alegações de Steve Ballmer levan- seus quadros de direto- ataque usando o arsenal de patentes da Open Invention tam suspeitas quanto ao motivo das res, dois ex-funcionários Network, muito embora a lei que prevê a aplicação de ações contra empresas de SL/CA. da Microsoft: patentes ainda deixe muito a desejar. ■

22 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Notícias | CORPORATE

Oracle não adquire BEA Distribuição brasileira A gigante dos bancos de dados e sistemas de gestão cor- porativos Oracle manifestou, no último mês, interesse atinge 1 milhão de cópias em adquirir a BEA, também fabricante de sistemas de A distribuição Linux brasileira Insigne anunciou gestão e softwares de no último mês, pouco antes do segundo ani- infraestrutura corpo- versário do programa Computador Para Todos, rativa. Após anun- que alcançará a marca de 1 milhão de cópias ciar publicamente de seu sistema antes do fi m do ano. a intenção, o pre- Lançado em 2002, o sistema já estava presente sidente da Oracle, em mais de 100 mil PCs antes do início do pro- Charles Phillips, per- grama do Governo Federal. O Computador Para guntou ao vice-pre- Todos foi um dos maiores responsáveis pela difusão sidente da BEA, Bill desse sistema brasileiro, um dos principais a serem Klein, a respeito de incluídos nos computadores vendidos sob o pro- ações amigáveis para grama, após acordos com fabricantes como Semp a aquisição. Klein Toshiba, Novadata, AIKO, CCE e Kelow. deixou claro que não Atualmente, são registradas 40 mil novas havia essa possibili- chaves do software a cada mês, e o período das dade, o que signifi- festas natalinas deve aumentar essa taxa con- cou o cancelamento sideravelmente, na opinião de João Pereira da A oferta de Charles Phillips foi consi- da reunião entre as Silva Jr., presidente da Insigne Software, empresa derada baixa demais pela BEA. duas empresas. fabricante do sistema operacional. ■ Paralelamente, cor- reram informações de que a oferta de US$ 6,7 bilhões foi con- siderada baixa demais pelo principal acionista da BEA. ■

Melhor suporte a PHP Poucos dias antes, a Oracle havia anunciado o lançamento de sua interface de comunicação melhorada com a lingua- gem PHP , a Oracle Call Interface ( OCI8 ), sob uma licença de Código Aberto. Com as novas alterações, a interface dispõe de de- Soluções sempenho melhorado em interação com a versão 11g do Completas em Oracle Database , especialmente em aspectos de escala- bilidade, e, segundo o anúncio, visa a promover o desen- Open Source volvimento de aplicações de missão crítica. Segundo Ken Jacobs, vice-presidente de estratégia de pro- dutos para tecnologias de servidores da Oracle “Com esses novos recursos de nível corporativo que a Oracle traz à comu- nidade PHP, esperamos fortalecer ainda mais o PHP como ferramenta de escolha, e expandir o uso do Oracle Database em aplicações para a Web 2.0 e missão crítica.” ■ Suporte • Desenvolvimento • Treinamento

Gerenciador de projetos livre Av. Presidente Vargas, 962 - Grupo 1001 O universo do Software Livre dispõe de mais uma integrante Centro - Rio de Janeiro/RJ • 20071-003 no importante ramo dos sistemas de gerenciamento de pro- Tel.: (21) 2526-7262 jetos. O ProjectPier.org, desenvolvido como um fork da versão Fax: (21) 2203-1748 0.7.1 do projeto activeCollab, é completamente baseado na www.linuxsolutions.com.br Web, oferece suporte a PHP 5 e MySQL e é liberado sob a licença HPL ( Honest Public License). ■

Linux Magazine #36 | Novembro de 2007 23 © Linux New Media do Brasil Editora Ltda. A percepção do Software Livre pelo mercado Inovando com Código Aberto Algumas empresas já começaram a perceber as vantagens de usar o Código Aberto. E isso é muito bom.

CORPORATE por Sulamita Garcia

alcance do movimento Free and Open Source ma empresa inovadora já desenvolveu várias outras tem avançado nos mais diversos setores da socie- novas tecnologias, enquanto aguarda seus parceiros O dade. Muitos gostam de se concentrar na parte aproveitarem as tecnologias já antigas. teórica e nas implicações ideológicas, que para a maioria Então, a empresa ouve alguns dos seus funcioná- é apenas observar o óbvio. Outros gostam de associá-lo à rios dizerem: “sabe, deveríamos investir em projetos nova forma de compartilhamento que a Internet permi- de Código Aberto. São milhares de profissionais al- te, como os projetos que usam a idéia do Creative Com- tamente qualificados ao redor do mundo, e apaixo- mons. Os músicos se identificam, em sua grande parte, nados por tecnologia. Eles podem nos ajudar a ha- plenamente com a idéia de compartilhar e trocar sons e bilitar nossos novos dispositivos para os milhões de informações sobre suas obras e as de terceiros. usuários de sistemas abertos: basta darmos acesso e Eu gosto mesmo é de saber que o Código Aberto ferramentas a eles. O custo do desenvolvimento é impulsiona melhorias. Mais que isso: vemos uma muito baixo e, além de problemas serem rapidamente nova fase, onde ele praticamente obriga todos os resolvidos, isso tudo permite que eles ainda inventem provedores de tecnologia a prestar atenção ao mo- novos usos para nossos produtos. E você vai ficar ver- vimento, estudar e adaptar-se. Todas as previsões dadeiramente surpreso com a rapidez com que isso apontam profundas mudanças, mudanças estas que acontece.” Parece interessante, não? há muito tempo anunciávamos. E assim, a empresa fabricante da tecnologia inova- As companhias produtoras de tecnologia começam dora felizmente aprendeu que não precisa depender a perceber que, mais que prover soluções mais con- exclusivamente da disponibilidade de seus antigos fiáveis, estáveis e de rápida correção, a comunidade companheiros proprietários para disponibilizarem de Código Aberto pode ser um grande impulsiona- o resultado de seu trabalho para seus usuários finais. dor para o uso destas novas tecnologias. Ela descobriu rapidamente que usuários satisfeitos Por exemplo, imaginemos uma determinada em- elogiavam e faziam propaganda dos seus produtos, presa que fabrique uma novíssima e revolucionária pois os drivers eram abertos. Entusiasmada, a empresa tecnologia que possibilite uma comunicação de dados descobriu que investir em comunidades e empresas de muito mais veloz, com várias operações em paralelo, Código Aberto davam resultados ótimos, e eles podiam e crie possibilidades para outros tipos de serviço. A voltar a criar novas melhorias e tecnologias ainda mais empresa está motivadíssima, por todo o esforço in- rápidas e poderosas. Enquanto isso, desenvolvedores vestido, a fazer aquele produto realmente fantástico. estudavam essas tecnologias e lhes davam vida. Então, ela diz aos parceiros de software: “Com esta Agora é divertido ver tantas grandes empresas nova tecnologia, seu software vai rodar muitas vezes pensando: “não é que eles estavam certos?”. Mas, mais rápido! Vai possibilitar todas as aplicações que calma, ainda não somos maioria. Temos muito ca- nossos clientes estão pedindo!” Os parceiros também minho para chegar lá. Mas que é boa a sensação de ficam entusiasmados, e todos celebram. “eu disse, eu não te disse?”, isso é. ■ Um ano depois, produtos que utilizam algumas dessas maravilhosas tecnologias finalmente chegam Sobre o autor ao mercado. Ou melhor, nem todas, pois os parceiros não dão conta de criar softwares para aproveitar to- Sulamita Garcia é Gerente de Estratégia Linux e Open Sour- ce para América Latina da Intel, e uma das coordenadoras do das as funcionalidades da tecnologia, além de terem grupo Linux Chix. que resolver suas próprias falhas. Até lá, aquela mes-

24 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Conheça a solução flexível Kenos ADempiere.

www.kenos.com.br (11) 4082-1305 © Linux New Media do Brasil Editora Ltda.

Kenos_Anuncio.indd 1 22.10.07 15:30:49 Entrevista com Fabio Filho, Gerente de Negócios para América Latina da Canonical Canonical para todos A empresa sul-africana por trás do Ubuntu, principal distribuição Linux para desktops na atualidade, está entrando agora no Brasil. Confira as conseqüências que isso pode ter para nosso mercado. porPablo Hess CORPORATE

Linux Magazine» A Canonical está tratégico à região. Presentes como como telefones celulares, PDAs etc. entrando agora na América Latina. corporação, pretendemos direcio- Em 2008, pretendemos ofertá-lo tam- O que isso significa para os usuá- nar nossas ações para fortalecer a bém no mercado regional. rios corporativos e domésticos bra- adoção do Ubuntu como software Além disso, estamos com os pro- sileiros? Que mudanças no cenário para desktop e servidor, garantindo gramas de OEM, parceiros, trei- anterior isso traz? a presença e ofertas por parte dos namento e serviços já habilitados Fabio Filho» Para usuários corpo- grandes OEMs e ODMs. Além dis- para a América Latina, incluindo rativos e domésticos, significa um so, uma presença local implicará o mercado brasileiro. Assim, nossos foco muito mais direcionado e es- certamente a implementação de serviços de suporte, customização centros de treinamento e de par- e engenharia poderão ser acessados cerias com empresas locais, para pelas empresas da região para im- oferta de serviços e suporte, o que plementações locais. viabilizará ainda mais o acesso à plataforma, assim como a adoção LM» Quais serão os principais focos de da mesma. investimento da Canonical no Brasil e no restante da América Latina? LM» Quais produtos e serviços já FF»Teremos foco contínuo em incenti- estão sendo oferecidos pela empre- var a adoção do Ubuntu como platafor- sa no país? O que mais deve surgir ma de desktop para usuários domésticos em 2008? e corporativos. Para tal, nossa inserção FF» Atualmente possuímos bastante em parcerias com OEMs, fabricantes, reconhecimento devido à utiliza- ISVs e outras será total. Pretendemos ção do Ubuntu como software para certamente dar atenção ao setor de desktops por usuários domésticos. varejo e às iniciativas do setor público Certamente vamos trabalhar com ini- na América Latina. ciativas para o aumento dessa adoção, Nosso segundo foco será a adoção e também da adoção da plataforma da plataforma também em servido- na utilização em servidores. res e aparelhos móveis, começando Outro produto que talvez seja no- em 2008. vidade para alguns é o Ubuntu Mobi- Fabio Filho, Gerente de Negócios para América le and Embedded, a versão de nosso LM» Que oportunidades de negócios Latina da Canonical. sistema para dispositivos embarcados, a Canonical enxerga na América

26 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Entrevista Canonical | CORPORATE

Latina? Existe alguma área com FF» Iniciativas como os programas de competidores, mais dinâmicos, demanda não suprida? inclusão digital estão ocorrendo, e transparentes e eficientes. FF» Como sabemos, a perspectiva de em expansão, no mundo inteiro, não A comunidade é parte integrante venda de computadores na região somente no Brasil. Em sua maioria, o de nossa estratégia e forma de atuação, da América Latina é de crescente Ubuntu é a solução adotada, devido e o relacionamento e contribuição expansão. Somente no Brasil, em a sua compatibilidade e desempenho da mesma é observado de forma dis- 2007, estima-se que iremos ultrapas- (em configuração e estrutura) em tinta e estratégica pela corporação. sar 10 milhões de unidades vendidas. implementação de estruturas com No Brasil, o nível de contribuição ao Em alguns setores, como a venda equipamentos de configuração infe- aprimoramento e desenvolvimento de computadores no varejo – aten- rior, com pouca memória e espaço do Ubuntu é extremamente alto, com dendo às necessidades da popula- em disco reduzido. profissionais interagindo em diversos ção de baixa renda – e notebooks, Em países como África do Sul, segmentos, da distribuição a soluções o forte crescimento é perceptível, Índia, Rússia e outros, nossa versão embarcadas, entre outros. especialmente devido à isenção de customizada para as necessidades O fato de o Ubuntu Server não taxas implementada pelo Governo educacionais, o Edubuntu, está possuir diferenciação o torna tam- Federal com o programa Computa- sendo utilizada em predominância bém uma opção bem fácil até para dor Para Todos. a qualquer outra distribuição. Nos- usuários finais. Acreditamos que o Ubuntu é a me- sos ferramentais de virtualização do lhor solução para ser adotada pelos ambiente de trabalho do aluno, sem LM» Na comparação com o De- grande varejistas e fabricantes para exigir configurações avançadas de bian, geralmente se vê o Ubuntu atender a esse momento de mercado, hardware para salas de aula, e ain- mais recomendado para desktops pois já verificamos uma forte deman- da com alta performance, tornam o do que em servidores. Quais os da pelo sistema no Brasil. Edubuntu a melhor alternativa para planos para alavancar a adoção do Por exemplo, nossa parceria com esse tipo de ambiente. Ubuntu Server? a Dell, nos EUA, surgiu exatamente Lembro que a palavra Ubuntu FF» Estrategicamente, estamos tra- assim, em conseqüência da deman- é um vocábulo africano de origem balhando para que essa adoção da do mercado, com a percepção bantu, que significa “humanidade seja natural. Nosso reconhecimen- do real diferencial do Ubuntu no para todos”, ou “Eu sou o que eu to como melhor plataforma para desktop. Ficou bem claro para nós sou devido ao que todos somos”. desktops, com números de requisi- que não apenas os consumidores Portanto, viabilizar o Ubuntu nes- ções e downloads em crescimento têm essa percepção, como também ses tipos de programas faz parte de exponencial, é conseqüência de os fabricantes. nossa missão e visão. planejamento, pesquisa, trabalho Acreditamos que o mesmo acon- junto à comunidade e um efetivo tecerá no mercado regional. LM» A comunidade de usuários e de- controle no desenvolvimento de uma senvolvedores do Ubuntu no Brasil solução que atenda – em constante LM» De que forma a Canonical pre- é muito expressiva. De que forma aderência e de maneira eficiente e tende superar as dificuldades com se dá a interação da empresa com concisa – às necessidades dos usu- infraestrutura presentes no Brasil? essas entidades, no Brasil e no res- ários finais e do mercado. FF» A questão da infraestrutura é tante da América Latina? Acreditamos que o mesmo deva importante, mas ela também vem FF» O Ubuntu, como grande dife- ocorrer com a versão Server. Algu- melhorando, e acreditamos que a rencial, possui uma estrutura de mas atividades e iniciativas já estão própria oferta de nossos produtos comunidades com governança, sendo adotadas internamente para pode contribuir para essa melhora, em que desenvolvedores, contri- atender a esta demanda, com foco uma vez que tende a expandir o uso buidores e funcionários da Cano- mais distinto, com apoio e suporte de computadores. nical interagem efetivamente de de nosso time de engenheiros e de- forma colaborativa e produtiva. senvolvedores. Com presença local, LM» O Ubuntu é reconhecido por sua Internamente, possuímos uma e uma vez crescendo com definição usabilidade, o que é fundamental estrutura organizacional (equipes regional de parcerias para suporte, em programas de inclusão digital. e ferramentas) com o objetivo de treinamento e desenvolvimento, Como a Canonical vai se posicionar observar, qualificar e facilitar a deveremos ter um nível de adoção quanto aos programas já existentes interação ainda mais. Isso nos do Ubuntu como alternativa para de inclusão digital? torna efetivamente diferentes dos servidor bastante elevado. ■

Linux Magazine #36 | Novembro de 2007 27 © Linux New Media do Brasil Editora Ltda. Linux Park 2007: Recife e São Paulo Duas conquistas Em sua quarta e quinta edições de

CORPORATE 2007, os seminários Linux Park têm dois importantes marcos: a presença na região Nordeste e a diversificação do público em São Paulo. por Pablo Hess

mark normand - www.sxc.hu

a continuação da série de se- sença em três capitais brasileiras – Rio Recife minários Linux Park do ano de de Janeiro, Belo Horizonte e Brasília –, No dia 18 de setembro, o centro N2007, o evento continua atrain- os eventos em Recife e São Paulo sim- de convenções do Recife Palace do, como já é sua carcterística, público bolizam duas importantes conquistas Hotel, de frente para a convidati- de alta qualificação. Após marcar pre- do Software Livre e de Código Aberto va Praia de Boa Viagem, recebeu no território nacional. Pela primeira vez a região Nordeste pôde presenciar um evento Linux Park. Em Recife, o público assistiu a apre- sentações de empresas de relevância regional e nacional. O alto nível do público e das perguntas aos palestran- tes confirmou, assim, a conquista da região pelo Software Livre e de Código Aberto (SL/CA), adotado como forma de fomento ao desenvolvimento local, além de seus importantes aspectos tecnológicos e práticos. O segundo aspecto marcante coube ao Linux Park de São Paulo, de volta à cidade onde começou ainda em 2005, porém com público Figura 1 Rafael Peregrino da Silva renovado, de caráter absolutamen- Figura 2 Cezar Taurion mostrou as abriu o evento apresentando te corporativo e contando inclusive mudanças causadas pelo a Linux New Media do Brasil. com palestra internacional. SL/CA no mercado de TI.

28 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Linux Park | CORPORATE

segunda maior rede de varejo do país. Com R$ 3,8 bilhões de fatura- mento no ano passado e contando com 3,2 milhões de clientes ativos, o Ponto Frio já adotou o Linux em suas lojas de maior movimento, encontrando-se no término de um processo de migração com meses de duração, e sem percalços até o momento. Contudo, Fragni afirma que a adoção do sistema aberto jamais passou pela questão da ideologia – a despeito do que o pingüim no logo da rede varejista pode levar a crer –, baseando-se completamente nos méritos técni- Figura 3 A Emprel de Luís Siqueira já cos dessa solução, implementada Figura 5 Marcelo Oliveira relatou usava SL/CA e reduziu seus pela Itautec com seu Librix. a adoção do Linux como gastos através do hardware. Luís Roberto Siqueira(figura 3), plataforma de produtos da Empresa Municipal de Infor- no INdT. o numeroso público e os pales- mática (Emprel) de Recife, antes tiplos servidores Linux virtualiza- trantes para o quarto evento Linux do almoço, relatou a já longa his- dos foram substituídos por atuais Park do ano. tória da empresa com o SL/CA. 46 servidores x86, dos quais 43 Em seu tradicional keynote de Segundo Luís, a primeira solução rodam Linux. mark normand - www.sxc.hu abertura, Rafael Peregrino da Silva para uso de SL/CA pela Emprel Em seguida ao almoço, Edmun- (figura 1), Diretor Geral da Linux de Recife, foi positiva, mas deixa- do Dotta Júnior (figura 4), Gerente New Media do Brasil, apresentou va a desejar em alguns aspectos, de Software da brasileira Itautec, a importância do Software Livre como facilidade de manutenção listou os resultados de uma pes- para o mercado brasileiro de TI. e preço do hardware. Por isso, os quisa encomendada pela Itautec a Rafael categorizou as diferentes mainframes IBM z800 com múl- respeito do uso de sistemas Linux esferas do mercado das quais de- em desktops corporativos no país. pende o sucesso do SL/CA, mos- Edmundo começou exibindo com trando também os atuais critérios entusiasmo manchetes seleciona- usados para a adoção dessa tecno- das de jornais brasileiros e inter- logia pelas empresas. nacionais relacionadas ao uso de Em seguida, Peregrino apresen- Linux e Windows no segmento tou a Linux New Media AG, matriz de desktops corporativos. Entre internacional da editora brasileira da os resultados da pesquisa, cha- Linux Magazine. maram atenção a forte tendência Logo depois, às 9:00, Cezar Tau- à renovação do núcleo de TI das rion (figura 2), Gerente de Novas empresas no segundo semestre de Tecnologias Aplicadas da IBM Bra- 2007 e, também, o impulso dado sil, demonstrou o envolvimento ao crescimento do investimento da Big Blue com o Código Aber- em TI pelo programa Computador to, caracterizando essa tecnologia Para Todos, do Governo Federal. como disruptiva no contexto da Além disso, Edmundo relatou a computação corporativa brasileira lentidão das empresas em ado- e internacional. Figura 4 Edmundo Dotta Júnior, tar o Windows® Vista e listou os Após o primeiro coffee break, da Itautec, apresentou as pontos fracos do Linux para esse Marco Fragni, Gerente de Servi- perspectivas da adoção de segmento. Por último, Edmundo ços de TI da rede varejista Ponto SL/CA no segmento dos reforçou a importância de um pro- Frio, relatou o uso do Linux na desktops corporativos. jeto de migração bem estruturado,

Linux Magazine #36 | Novembro de 2007 29 © Linux New Media do Brasil Editora Ltda. CORPORATE | Linux Park

Nordeste, confirmando também sua relevância para o cenário na- cional de TI.

São Paulo A cidade que abrigou por três ve- zes, em 2005 e 2006, os seminá- rios Linux Park foi mais uma vez palco do evento. Com o título de “A Importância do Software Livre para o Mercado Brasileiro de TI”, o quinto evento do ano contou com público diversificado e de altíssima qualidade. Após a abertura por Rafael Pere- Figura 6 Marcelo Sousa, do Banco grino da Silva, Cezar Taurion apre- Figura 8 Danese Cooper, da Intel, Paulista, defende a impor- sentou sua palestra intitulada “Linux interagiu com o público tância do planejamento em & Open Source: Oportunidades de e demonstrou profundo qualquer ação em TI: “No Negócio e Empregabilidade”. Focado conhecimento do mercado mercado não há espaço de SL/CA. para aventureiros.” nas alterações que o SL/CA trouxe e continua trazendo ao mercado de rente de TI do Banco Paulista, com dimensionamento adequado TI, o colunista da Linux Magazine apresentou o sólido processo de e finalidades bem definidas. e Gerente de Novas Tecnologias adoção de SL/CA pelo banco. Logo após o segundo coffee- Aplicadas da IBM Brasil assinalou Marcelo relatou a migração do break, Marcelo Oliveira (figura 5) as áreas nas quais os negócios mais sistema de emails e groupware representou o Instituto Nokia de se beneficiam do Código Aberto, in- do banco, antes funcionando Tecnologia de Recife. No INdT, clusive com correspondência para os sobre um servidor proprietário como é conhecida a instituição, o profissionais envolvidos. Microsoft Exchange, e agora ba- Linux já vinha sendo usado como Após o primeiro coffee-break, seado no eGroupWare, livre e de plataforma de desenvolvimento Marcelo Sousa (figura 6), Ge- Código Aberto. Marcelo listou de aplicativos, que posteriormente numerosas vantagens do sistema eram portados para as plataformas livre, incluindo, como de costu- proprietárias adotadas pelo maior me nesse tipo de migração, maior fabricante mundial de telefones ce- desempenho e menor custo. lulares. Agora, em um novo passo, a Em seguida, Marco Fragni (fi- Nokia optou por adotar o sistema do gura 7) mais uma vez apresentou a pingüim também como plataforma ampla adoção do SL/CA pelo Pon- de produto, acelerando, segundo to Frio, assim como fez no evento Marcelo, o Time to Market de seus de Recife. dispositivos móveis. Com ar descon- A apresentação internacional traído, Marcelo mostrou que a pla- do Linux Park São Paulo coube a taforma de Código Aberto Maemo Danese Cooper (figura 8), Senior permite maior rapidez na solução Director of Open Source Strategy de problemas, com código de me- for Channel Software Operations lhor qualidade e custos inferiores da Intel e Diretora da Open Sour- na comparação com as plataformas ce Initiative. Danese demonstrou proprietárias existentes. o profundo conhecimento sobre Os exemplos de empresas locais Figura 7 Marco Fragni representou SL/CA que se espera de alguém de Recife, como Emprel e INdT, o Ponto Frio, relatando a envolvido com essa tecnologia reforçam a importância de eventos ampla adoção de SL/CA desde o princípio de sua entrada de divulgação do SL/CA na região pela rede varejista. no mercado corporativo. Danese

30 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Linux Park | CORPORATE

discursou ainda sobre as diversas visões que grandes e médias em- presas têm do SL/CA, e respondeu com prazer às muitas perguntas de alto nível do público interessado e informado, mostrando-se, acima de tudo, acessível. Edmundo Dotta Júnior ainda apresentou, pela primeira vez aos paulistanos, os resultados da pesquisa encomendada pela Itau- tec a respeito do uso de Linux e Windows no mercado de desktops corporativos, com resultados bas- tante interessantes. Ricardo Santana (figura 9) deu o toque final aos seminários Linux Figura 10 O já tradicional Painel de Interoperabilidade contou com os mais Park de São Paulo, confirmando a importantes players do mercado corporativo brasileiro de SL/CA. diversificação dos ambientes em que o Linux vem sendo adotado. importações, estoques e vendas, a na estrutura de suporte e a com- Com sua palestra “Software Livre solução proprietária não permitia plexidade tributária brasileira, a em Missão Crítica – Gestão Livre o crescimento da empresa com qual afeta qualquer sistema de com o ADempiere”, o Gerente de custo acessível. Com manuten- ERP no país. TI da norte-americana Eltek Vale- ção cara e estrutura inflexível e Com o sucesso, a matriz norte- re demonstrou quão essencial foi perante o crescimento planejado americana já estuda a adoção do a adoção de um sistema de ERP para a empresa em 2005, tanto em ADempiere em outras filiais pelo de Código Aberto, o ADempiere, número de usuários do sistema mundo, o que certamente fortale- em substituição ao proprietário quanto em faturamento, a Eltek cerá a percepção de que o SL/CA Datasul. Para gerenciar todos os Valere fez um piloto com o ERP e é adequado ao uso até mesmo em processos da empresa, como con- CRM de Código Aberto Compie- sistemas de missão crítica. tabilidade, controle de qualidade, re. Por ser orientado a processos, não modular, e ter o código-fonte Painel sobre aberto, além de ser independente de plataforma, a solução foi a es- interoperabilidade colhida para fornecer as bases para O já tradicional Painel de Intero- o crescimento da empresa. perabilidade (figura 10) contou, Com o surgimento do ADem- em Recife e São Paulo, com a piere a partir do Compiere veio o presença de representantes de suporte a bancos de dados Postgre- importantes personagens do mer- SQL, o que reforçou a escolha da cado de Código Aberto na atuali- empresa pelo SL/CA. As vantagens dade: IBM, Itautec, Novell e Red enumeradas por Ricardo incluem Hat. Os executivos demonstraram a independência de fornecedores como suas empresas vêm tratando quanto ao sistema e a ausência de a questão da interoperabilidade custos mensais para manutenção e como isso será cada vez mais do sistema – pois esta passou a ser importante no futuro da compu- realizada por uma equipe interna tação corporativa. da Eltek. A próxima edição dos seminários Figura 9 Ricardo Santana, da Eltek Como únicas dificuldades no Linux Park, última de 2007, em Curi- Valere, confirmou que o processo de substituição da solu- tiba, PR, realizou-se no dia 25 de SL/CA está pronto para ção e uso na Eltek, Ricardo re- outubro, e será coberta na próxima sistemas de missão crítica. latou a necessidade de mudança edição da Linux Magazine. ■

Linux Magazine #36 | Novembro de 2007 31 © Linux New Media do Brasil Editora Ltda. SOA: para onde ir com BPM? Edgar Silva Apesar de positivo, o BPM ainda apresenta dificuldades. por Edgar Silva

odemos tratar como processos praticamente Há um abismo entre o modelo e a execução dos

CORPORATE todos os projetos que envolvem colaboração, processos, principalmente devido ao BPEL, que seria Pseqüências lógicas e organização. Desde o tra- a linguagem para a execução dos processos e uma balho das formigas até a linha de montagem de uma escolha natural das empresas por ser um padrão grande empresa. Neste artigo, veremos como a TI definido por vários integrantes do grupo OASIS. E encara a existência dos processos nas companhias, por que não é? como descobri-los e como conviver com eles. Primeiramente, porque o BPEL é muito dire- Muitas empresas gastam grandiosas cifras na cionado à orquestração de web services, e em uma adoção de metodologias e programas de qualidade arquitetura SOA não se pode contar apenas com que visam redescobrir ou redesenhar suas estruturas esses serviços. juntamente com seus processos. É nesse momento Além disso, o BPEL não dá suporte a tarefas hu- que acabamos descobrindo vários pontos fracos da manas previstas no BPMN. corporação. Por outro lado, é aí que se pode dese- Para resolver isso, os fornecedores criam imple- nhar um plano de ação para atacá-los. mentações proprietárias de BPEL, quebrando, dessa Dentre as metodologias, destaco o Seis Sigma, que forma, o padrão e a capacidade da troca facilitada provê sólidos alicerces para o auto-conhecimento de fornecedores na implementação técnica. das empresas. Essa fase é o início para transformar Sendo assim, ainda vai demorar um pouco até que o o conhecimento em retorno financeiro ou em ve- desenvolvedor não tenha de tocar no modelo desenhado locidade competitiva. E também para entendermos pelo analista de negócio, e as ferramentas de desenho como o BPM pode ajudar. acabem tornando-se apenas fonte de documentação e É importante frisar que BPM pode ter inúmeras desenho, embora o objetivo fosse ter a visão de toda a definições. Aqui, focamos em duas: empresa em forma de desenhos de processos. Por isso, Business Modeling: voltado ao modelo os investimentos pesados em ferramentas apenas de e desenho de processos; desenho é passível de decepções e frustrações. Business Process Management: voltado à gerência Há várias opções de BPMS no mercado. Não há e execução dos processos, geralmente ligado a por que o BPMS ser compatível com apenas um software e, nesse caso, recebe o nome de BPMS banco de dados, sistema operacional ou servidor (Business Process Management System). de aplicações. Veremos como tratar as questões de modelagem Enquanto houver arestas do BPMN em conjun- e gerenciamento dos processos atualmente. Como to com BPEL, XPDL ou BPDM (Business Process modelagem, podemos contar com duas formas Definition Metamodel), ou com outra linguagem principais para o desenho: de notação definida pela OMG, vale a pena separar UML (Unified Modeling Language), através analistas de negócios, desenhando os processos em de seus diagramas de estado e de atividade; BPMN ou outra notação, e inserir os desenvolvedo- BPMN (Business Process Modeling Notation), res na equipe, tornando realidade e em produção uma linguagem visual derivada da UML que os processos meramente desenhados. ■ visa a modelar o fluxo de processos. A principal idéia na modelagem é: analistas de negó- Sobre o autor cios usam o BPMN para o projeto e, quase num passe de Edgar Silva é Solutions Architect e JBoss Sa- mágica, o fluxo pode ser processado num BPMS (engine les Engineer da Red Hat Brasil, além de tam- de BPM). É por isso que algumas ferramentas exportam os bém ministrar palestras no Brasil e no exterior sobre Java. modelos desenhados para arquivos nas linguagens BPEL (Business Process Execution Language) ou XPDL.

32 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. ��������� ��������� �������������������� ���������������� ����������������� �������������� �������� ����������������� �������������������������������������������������������������

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

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

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

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

�������������� © Linux New Media do Brasil Editora Ltda. ��������������

Coraid_LinuxProBrazil_ad_Einstien.indd 1 26.06.07 13:03:54 Graduação em Código Aberto Cezar Taurion Por que e como criar um curso superior em Código Aberto? por Cezar Taurion

utro dia estive conversando com alguns alu- a Eclipse Foundation, a Apache Software Foundation

CORPORATE nos de cursos superiores de graduação em e a . Cada uma delas tem processos OSoftware Livre. Nessa conversa, ouvi algo que e modelos de governança diferenciados, e podem ser me surpreendeu bastante: eles disseram ter aprendido benchmarks para a criação de outras comunidades. as disciplinas básica de graduação, como Arquitetura Temos aí uma disciplina diferenciadora. de Computadores, Sistemas Operacionais, linguagens O processo de desenvolvimento do software de de programação e outras, mas com relação a Código Código Aberto também merece um estudo mais Aberto, o que tiveram foram apenas aulas práticas de aprofundado, com uma disciplina que debata suas uso do Linux, Apache e outros softwares. No meu en- características diferenciadas, comparando-as com os tender, isso não caracteriza uma graduação específica modelos de desenvolvimento comumente adotados em Código Aberto! nos softwares proprietários. O diferencial do Código Aberto é o processo de E outro assunto essencial: modelos de negócio. Sem um desenvolvimento colaborativo de software e não o uso ecossistema saudável, os projetos não serão sustentáveis. dos sistemas de Código Aberto. Para aprender a usar Deve existir receita em algum lugar da cadeia de valor, Linux não é necessário um curso de graduação. e como obter essa receita seria um dos principais tópicos Bem, vou fazer aqui uma proposta diferenciada desta disciplina. Ela também deveria estudar os diversos de um curso de graduação em Código Aberto. modelos de negócio já praticados com Código Aberto, não apenas os tradicionais, como os de distribuições Li- nux, mas os das várias startups inovadoras, como Pleyo, O diferencial do Código Collaborative Software Initiative e diversas outras. Aberto é o processo de E, finalmente, uma disciplina que estudasse os assuntos referentes a aspectos legais e às diversas desenvolvimento colaborativo formas de licenciamento do Código Aberto. de software e não o uso dos Para concluir, sugiro uma disciplina extra que estude sistemas de Código Aberto. o caso real de uma empresa de tecnologia que adota Código Aberto de forma estratégica e abrangente: a própria IBM. E não é uma indicação apenas minha. Código Aberto é basicamente colaboração e inte- Em artigo intitulado “O amadurecimento do ecossistema ligência coletiva. Precisamos estudar e entender os do Código Aberto: observações e recomendações”, Robert motivadores e os inibidores para criação de proces- Frances Group afirma: “A IBM oferece aos executivos de sos colaborativos e, para isso, é necessário entender TI um proveitoso estudo de caso de como o ecossistema o que é uma cultura de participação. do Código Aberto evoluiu e amadureceu”. Um ponto importantíssimo é a criação e motivação Bem, já temos material para começar a pensar de comunidades. É fundamental para o sucesso de em um novo curso de graduação. Quem sabe um qualquer projeto de Código Aberto que uma comuni- dia ele existirá! ■ dade ativa e atuante seja mobilizada. A comunidade é o coração dos projetos de Código Aberto. Entender a mecânica de criação e governança de comunidades Sobre o autor é um conhecimento fundamental para qualquer um Cezar Taurion é gerente de novas tecnolo- que deseje lançar um projeto de Código Aberto. gias aplicadas da IBM Brasil. Seu blog está Para isso, seria bem interessante que o curso abordasse disponível em www.ibm.com/developerworks/ . como estudos de caso algumas das comunidades mais blogs/page/ctaurion importantes do movimento de Código Aberto, como

34 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Programação para todos os fins com o Eclipse

Orientado à programação CAPA O Eclipse já não é mais apenas um IDE, sendo chamado até de plataforma de desenvolvimento. Será que finalmente chegou a hora de aposentar as múltiplas janelas de terminal? por Pablo Hess

história do Linux como platafor- obviamente, da integração de todos os ma de desenvolvimento é antiga, demais plugins ao ambiente de desen- Ase comparada à idade do sistema volvimento. operacional. Os aplicativos mais antigos Por isso, hoje em dia o Eclipse é fre- visavam justamente ao preenchimento qüentemente incluído na categoria de das necessidades dos programadores. frameworks de programação, e não de Editores de texto, compiladores, inter- IDEs. Dentre as centenas de plugins dis- pretadores, geradores de compiladores poníveis, a Linux Magazine selecionou e parsers, todos compunham a base das alguns dos que mais se destacam por sua primeiras distribuições Linux. atuação impecável e de alta eficiência Mas a atividade dos programado- na realização das tarefas para as quais res mudou. Com projetos de software foram planejados. maiores, como os complexos ambientes Apresentamos uma lista dos 12 me- gráficos KDE e Gnome, e também os lhores plugins para Eclipse, na criteriosa programas que os acompanham, ferra- avaliação de Markus Junginger, Peter mentas de programação mais complexas Kreussel e Ramon Wartala. Destacamos passaram a ser cada vez mais necessárias. também dois plugins que trabalham es- Os ambientes gráficos de desenvolvimen- pecialmente bem em conjunto quando to ganharam muito espaço nos últimos se trata de criação de bancos de dados, anos, mesmo entre aqueles programa- e analisamos o plugin CDT, muito im- dores mais conservadores. Para lidar portante para a programação em C e com múltiplos arquivos de código-fon- C++ nesse framework feito em Java. te, bibliotecas, definições de interfaces Se você é um programador do tipo gráficas e esquemas de bancos de dados, que recusa inovações na hora de escre- as múltiplas janelas de terminal já não ver seu código, aí está um motivo para bastam mais. você reconsiderar seu posicionamento. E os IDEs aglutinam ainda mais E se você já é um adepto dos ambien- funcionalidades. Compilar projetos tes integrados para desenvolvimento – ou apenas partes deles – no próprio de aplicativos, oferecemos uma nova ambiente de programação é um exem- alternativa. Por fim, para aqueles que plo de benefício inestimável. já utilizam o Eclipse em seu dia-a-dia, Nesse cenário, surge o Eclipse, inicial- talvez alguns plugins apresentados sejam mente como um IDE para Java, escrito capazes de otimizar seu trabalho de for- também em Java. Uma característica mas que você nem imaginava. ■ estrutural desse software, no entanto, rendeu-lhe os holofotes: extensibilida- de. A arquitetura do Eclipse facilita a Matérias de Capa criação de plugins, cada um dos quais Baixo nível, alto rendimento pág: 36 voltado a solucionar uma tarefa espe- Ponte de dados pág: 39 cífica (ou mais), desfrutando também, Seleção plugada pág: 40

Linux Magazine #36 | Novembro de 2007 35 © Linux New Media do Brasil Editora Ltda. Desenvolvimento em C e C++ com Eclipse Baixo nível, alto

Cris DeRaud - www.sxc.hu

CAPA rendimento Flexibilidade é a principal característica do Eclipse. O plugin CDT adapta o IDE às linguagens C e C++, resultando num ambiente de desenvolvimento ergonômico e com ótimas funções. por Peter Kreussel

Eclipse é uma IDE especiali- No navegador de arquivos, os erros de de inclusão Eclipse. Freqüentemen- zada em tudo e em nada – é sintaxe são evidenciados com facilidade: te, mas nem sempre, os caminhos de Oassim que os desenvolvedo- arquivos errados, bem como projetos e inclusão são sufi cientes. Quando o res do Eclipse descrevem a meta de diretórios que recebem esses arquivos, usuário seleciona uma classe ou fun- seu projeto. Portanto, para ser de fato recebem um X vermelho. Apesar do ção a partir da lista pop-up, o editor útil, há que se lançar mão de um dos tamanho reduzido dos ícones e das mostra sua assinatura. inúmeros plugins. O CDT [1] ( C/C++ subjanelas deixar bastante espaço para development tooling ) adapta o Eclipse o editor, eles conseguem mostrar o tipo para C e C++ . Os recursos oferecidos de objeto, o status do teste de sintaxe e, Na procura pelo plugin vão desde um diálogo quando se gerencia versões, também o A função de procura funciona atra- pop-up para auto-completar no edi- status da sincronização. vés de uma indexação que ocorre em tor, passando pelo realce de sintaxe A função de autocompletar tam- segundo plano. O indexador propria- até um monitor dos registradores do bém herda o visual ergonômico do mente dito foi recentemente apri- processador, um disassembler e a ve- Eclipse: o plugin CDT marca as su- morado, e fi cou mais rápido desde a rifi cação de regiões de memória. gestões para completar através de íco- versão 3.1.1: o código-fonte inteiro do Editores adequados à linguagem nes facilmente reconhecíveis, como Firefox, composto por 10 mil arquivos empregada facilitam a programação: classes, variáveis ou palavras-chaves da C e C++, é lido em um computador o realce de sintaxe já indica erros de linguagem de programação ( fi gura 1 ). atual em menos de 3 minutos. A fun- digitação quando o cursor estiver no Contudo, para o assistente de código ção de procura faz a identifi cação de local correto. Além de C e C++, o reconhecer as classes e métodos, é acordo com elementos de sintaxe, realce também entende makefi les . necessário que ele saiba o diretório como classes, métodos, funções, va- riáveis e campos. Há formas de limi- tar a procura a um subconjunto de arquivos de projeto. A função normal de procura e substituição de código do Eclipse está disponível no editor CDT. Porém, ra- ramente é utilizada, pois há uma outra ferramenta de refatoração (ou refacto- ring) capaz de levar em consideração a sintaxe do arquivo. Essa alternativa, portanto, consegue renomear apenas Figura 1 O recurso de autocompletar é muito efi ciente, oferecendo uma lista variáveis, mesmo quando há funções de possibilidades e a sintaxe básica do comando. com o mesmo nome.

36 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. C e C++ com Eclipse | CAPA

em qual arquivo de código-fonte ela ocorreu, assinalando-o no navegador de arquivos com uma marca de erro. Após a compilação, o Eclipse busca os arquivos binários no diretório de projeto. Assim como em arquivos de código-fon- te, o navegador de arquivos mostra todos os arquivos de fonte que originaram o executável ou a biblioteca. Em projetos C e C++ do tipo ma- naged (gerenciados), o próprio soft- ware cuida da criação dos makefiles e outros arquivos necessários para as ferramentas de compilação GNU. Esses tipos de projetos são úteis nos Figura 2 A aba Outline mostra a estrutura do código, listando classes, fun- casos de projetos importados que já ções e declarações de variáveis. possuam um Makefile. Posteriormente, eles também podem ser convertidos Com a ajuda do veloz indexador, Compilação em projetos através do gerenciador de a ferramenta de refatoração também Na instalação padrão, o Eclipse integra makefiles. Para fazer adaptações, há é eficaz em projetos grandes, como, também o GNU Make. A plataforma um editor próprio disponível. por exemplo, no código-fonte do de compilação do CDT emprega o Firefox: renomear uma classe refe- princípio arquitetônico que rege todo rida aproximadamente 350 vezes em o Eclipse: a comunicação com a ferra- Caça aos erros cerca de 10 mil arquivos leva cinco menta de compilação GNU acontece Em C e C++, o fechamento de um pro- minutos numa máquina Athlon 64 através de um plugin extensível. Com grama sem informações de localização do 3700+ com 2 GB de memória. isso, o suporte a outros sistemas de com- erro pode ser muito enigmático. Nesses pilação, como o Cmake, é facilmente casos, o depurador é uma importante implementável, e seu uso pode ser feito fonte de ajuda. Por padrão, o Eclipse Bem estruturado de dentro do próprio programa, como se integra ao GNU Debugger, ou GDB, Além da função de procura, a visão mostra a figura 3. Em caso de falhas mas novamente é possível estender o estruturada (figura 2) ajuda a com- nesse processo, o software reconhece suporte a outras alternativas. preensão do código-fonte: ela ofere- ce uma visão geral sobre estruturas como include, declaração de variáveis e classes. Os tipos de objetos são evi- denciados por símbolos. O navegador de arquivos mostra os registros da vi- são estruturada como subelementos dos arquivos. Uma margem colorida auxilia a reproduzir as modificações desde a última gravação. O item Navigate | Last Edit Loca- tion leva o cursor à última posição visitada. Porém, essa função armazena apenas uma posição, diferentemente de um navegador web. Por último, mas não menos importante, o editor suporta a ocultação de subestruturas, como loops ou definições de funções, Figura 3 O CDT compila projetos de software com make e GCC. Graças à e ainda comenta linhas ou blocos arquitetura do Eclipse, é fácil incluir o suporte a outras ferramentas pressionando uma tecla. de compilação.

Linux Magazine #36 | Novembro de 2007 37 © Linux New Media do Brasil Editora Ltda. CAPA | C e C++ com Eclipse

O CDT possui as funções de de- torados. Todas as vezes em que, (300 MB, já incluída a máquina puração padrão: um duplo clique ao ser depurado, o programa fizer Java) é eficiente para os recursos no botão numérico do editor de uma pausa, o usuário também apresentados por esse software. A código-fonte insere um breakpoint, poderá modificar manualmente velocidade do indexador de pro- que interrompe a execução do os valores das variáveis. cura e refatoração melhora ainda programa. Ao exibir variáveis em Como C e C++ atualmente são mais essa impressão. O travamento programas paralisados, o Eclipse linguagens de nível mais baixo, o de programas ficou sensivelmente mostra os valores dessas variáveis CDT estende a plataforma de de- mais raro: nos testes realizados para (figura 4). Um cursor de depuração puração do Eclipse para permitir o este artigo, o IDE se despediu de assinala no código-fonte a posição acompanhamento dos registradores nós uma única vez. na qual o programa foi paralisa- do processador e também monitorar Junto ao Eclipse, o plugin CDT do. Os watchpoints também são determinadas áreas da memória, in- forma uma IDE muito boa para o grandes aliados em loops com cluindo também um disassembler. desenvolvimento em C e C++. Seu muitas iterações: eles não para- ambiente flexível e claro, o editor, lisam a execução do programa Melhor que sua assim como as funções de procura e em determinado ponto, mas sim refatoração, atuam perfeitamente em quando os valores das variáveis reputação conjunto, são intuitivos e aumentam correspondem a determinadas Antigamente, o Eclipse era lento e o rendimento no trabalho. condições. instável. O desenvolvedor do pro- Porém, é uma pena que o Eclip- jeto CDT Doug Schaefer, em sua se e o CDT abandonem o usuário Monitoramento palestra na Eclipsecon 2006[2], na criação de interfaces gráficas: recomendou o teste de importar o programadores que necessitam de completo código-fonte do Firefox como pro- um bom editor de interfaces grá- O CDT também suporta um modo jeto C++, compilá-lo e processá-lo. ficas precisam lançar mão de um de monitoramento passo-a-passo. O resultado positivo confirmou que programa externo ou usar outros Nele, o usuário decide, individu- está superada a má fama desde a IDEs no lugar do Eclipse. O Kde- almente, se o depurador também versão 3.2 dessa ótima plataforma velop[3] contém um editor desses entrará nos códigos referidos por de desenvolvimento. Daí em diante, para widgets Qt e o Anjuta[4] pos- include, ou se apenas os comandos o Eclipse tem bons tempos de res- sui um plugin experimental para do arquivo principal serão moni- posta, e seu consumo de memória a biblioteca GTK. ■

Mais informações

[1] CDT: http://www.eclipse.org/cdt

[2] Palestra de Doug Schaefer sobre o CDT: http://cdt.eclipse.org/ docs/CDT_DOM_Europe.ppt

[3] KDevelop: http://www.kdevelop.org

[4] Anjuta: http://anjuta. sourceforge.net

Sobre o autor

O Corel Draw foi o programa que capturou o interesse de Peter Kreussel em com- putadores. Peter fala com felicidade que o Inkscape e o Xara há muito tempo já ultra- Figura 4 O depurador exibe os valores das variáveis, auxiliando a busca de passaram o Windows® e os caros progra- mas da Adobe em sua máquina. falhas lógicas no programa.

38 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Plugins para bancos de dados no Eclipse

Ponte de dados CAPA Com um único clique, faz-se uma consulta ao banco de dados. Veja o que mais os plugins para bancos de dados podem fazer no Eclipse. por Jens-Christoph Brendel

nterfaces de comunicação com sos: há softwares livres e comer- Eclipse, assim como quase todas bancos de dados certamente ciais, como o RMBench [1], bancos as variações destes. Iformam uma das funcionali- de dados independentes como o Com tanta variedade, logo se nota dades mais reimplementadas. Há Quantum [2], programas especia- que nem todas estão no mesmo ní- vários clientes que armazenam lizados como o Cloudscape [3] da vel de qualidade e funcionalidade. dados em discos rígidos sob es- IBM, clientes universais e outros Contudo, há dois plugins gratuitos quemas de bancos de dados. Além semelhantes derivados do IDE que trabalham bem em conjunto e disso, os conjuntos de aplicativos de escritório também costumam conter clientes para acesso a ban- cos SQL. Contribuindo para isso, diversas linguagens, como Tcl, Perl e Python, possuem módulos para comunicação com bancos. Mas isso não é uma prova da falta de criatividade dos programadores. A multiplicidade de formas de se acessar bancos de dados mostra apenas a extrema importância de se manipular essas fontes de da- dos, seja a partir de programas de desktop, de scripts domésticos ou servidores web. Como se poderia esperar, tam- bém há plugins para acesso a bancos SQL disponíveis para o Figura 1 O Clay apresenta um panorama das tabelas e suas relações com Eclipse , e também são numero- chaves estrangeiras.

Linux Magazine #36 | Novembro de 2007 39 © Linux New Media do Brasil Editora Ltda. CAPA | Plugins SQL

Podem ser selecionadas todas as tabelas ou determinadas apenas algumas tabelas individuais. Os scripts SQL descrevem os dados das tabelas em DDL (Data Defi- nition Language).

Modelos antigos Para que isso tudo funcione, é necessário que seja informado à ferramenta qual banco de dados deverá receber os dados ao final do processo. É aqui que surgem as primeiras fraquezas do Clay. A ferramenta não está inteiramente atualizada quanto às versões mais Figura 2 Numa tabela como a do lado direito, o programador do banco de dados define as colunas, chaves e limites. recentes dos bancos de dados. O suporte ao PostgreSQL, por exem- vamos avaliá-los neste artigo. São eles: lacionais, e também apresenta as plo, está parado na versão 7.4 no o Clay, da Azzurri Limited[4], e o relações de forma nítida e clara momento da escrita deste artigo editor SQL livre Quantum[2]. (figura 1). As tabelas podem ser e o MySQL é suportado somente Cada um tem suas vantagens, editadas e exibidas diretamente até a versão 4.0. mas ambos são capazes de se co- no desktop (figura 2). As relações Na prática, essa limitação não municar eficientemente com ban- com chaves estrangeiras podem ser é tão importante, pois as versões cos de dados em geral. Primeira- mostradas apertando-se o botão do mais novas também entendem mente, para os já familiarizados mouse enquanto se navega pelas os dialetos SQL de suas anteces- em programação no Eclipse, os tabelas no gráfico. soras. Porém, os atributos mais dois plugins permitem que se en- Ao final, quando o modelo do novos só podem ser usados com tre no banco de dados com um banco de dados estiver completo, edição manual pelo desenvolve- clique e se volte com outro. Em a ferramenta cria os scripts para dor no script de criação gerado segundo lugar, os dois podem se geração das tabelas num servidor. automaticamente. integrar a ferramentas individuais graças à mediação do IDE Eclipse. Com isso, o desenvolvedor pode alternar da ferramenta de criação para o cliente de consultas numa mesma tela, e desfrutar das fun- cionalidades do Eclipse em todas as partes.

Design com Clay A ferramenta de design de bancos de dados Clay está disponível gratui- tamente na versão básica. A versão completa, de nome Pro, é paga e atu- almente apenas disponível no Japão, onde se encontra seu fabricante. O Clay permite criar tabelas de bancos de dados em um editor Figura 3 A janela principal do Quantum reúne em um plugin do Eclipse as gráfico de diagramas entidade-re- principais funções para trabalho com bancos de dados SQL.

40 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Plugins SQL | CAPA

A ferramenta também não fa- cilita outros trabalhos adminis- trativos, como por exemplo o gerenciamento de usuários do banco de dados. Na verdade, há o realce de sintaxe, mas não um verificador de sintaxe, ou qual- quer tipo de autocompletar para comandos SQL. Certamente a falta dessas ca- racterísticas é uma diferença que pesa muito. Quem faz uso inten- sivo de SQL não dispensa um edi- tor para consolidar as consultas. Apesar disso, podemos afirmar que as funções básicas cobertas pelo Quantum são sólidas e confiáveis, embora limitadas. Figura 4 A janela de entrada do Quantum permite o preenchimento das posições das tabelas do banco de dados linha por linha. Muito mais séria é uma segun- log das transações já processadas e Conclusão da limitação da versão básica: ela é as comunicações de erro com o ser- Quem puder, em seu trabalho incapaz de exportar ou imprimir o vidor de banco de dados. com sistema de banco de da- gráfico. Esse esclarecimento também Do lado esquerdo da janela dos, restringir-se às funções mais seria especialmente bem vindo na (figura 3) encontra-se um nave- importantes, será capaz de tirar documentação. Talvez o fabricante gador que permite a seleção dos grande proveito dos dois plugins acredite que esse recurso tornaria a objetos do banco de dados. Nossa apresentados. Como caracterís- versão grátis muito atraente em com- estrutura de exemplo para acesso tica adicional, é muito positiva paração com a versão paga, pois a a um banco de dados de autores, a integração do ambiente de de- parte de concepção, na versão limi- descrita no script de criação, pode senvolvimento com o conforto da tada, funciona perfeitamente. ser manipulada na janela do edi- interface do Eclipse e seus atalhos. Assim, temos uma boa ferramen- tor. Os objetos prontos podem ser Já aqueles que desejarem ir além ta para a concepção de bancos de inspecionados na forma de tabelas. das funções básicas precisarão pro- dados no Eclipse. No entanto, o Também é possível inserir novos curar entre os inúmeros clientes processo termina prematuramente dados através da janela de diálogo independentes. ■ logo após a geração do script de Insert Record (figura 4). criação das estruturas do banco O que falta a esse plugin são de dados. funções avançadas: não há um Mais informações editor de consultas visível, ou [1] RMBench: suporte à otimização de consul- http://www.byterefinery. Quantum tas, como por exemplo um query com/produkte Para usar o script DDL gerado pelo analyzer. Também está ausente [2] Plugin Quantum: Clay, é necessária uma interface SQL. um atalho de teclado para visu- http://sourceforge. É aí que entra o Quantum[2], imple- alizar o plano de execução do net/projects/quantum/ mentando um editor SQL simples. banco de dados. Nele estão presentes as funcionali- Do mesmo modo, falta uma [3] IBM Cloudscape: http://www-128.ibm. dades esperadas de uma ferramenta funcionalidade de importação e com/developerworks/db2/ como essa: é reservada uma parte exportação do conteúdo de ban- downloads/csworkbench/ da janela do Eclipse para a entrada cos de dados de e para formato dos comandos SQL. Sob ela, caso binário, e ainda o suporte ao ge- [4] Ferramenta Clay: http://www.azzurri.jp/en/ desejado, pode surgir uma segunda renciamento do armazenamento software/clay/index.jsp janela para exibir os resultados, um do banco de dados.

Linux Magazine #36 | Novembro de 2007 41 © Linux New Media do Brasil Editora Ltda. Os 12 melhores plugins do Eclipse Seleção plugada O gerenciador de plugins do Eclipse oferece um rico leque de opções para adequar o software à CAPA resolução do seu problema específico. por Markus Junginger, Peter Kreussel e Ramon Wartala

A eficiência na escrita de código- desenvolvimento mais antigos, em Desde a versão 3.0, o Eclipse fonte exige um editor especialmente vez de toda vez ser necessário rein- possui um gerenciador de exten- talhado para isso, que dê suporte às ventar a roda. Os pontos de exten- sões e upgrade. Quem já conhece características essenciais da lingua- são definidos no Eclipse facilitam a os plugins corretos ajusta o soft- gem em uso, como destaque de sin- adaptação à maioria dos recursos, e ware às suas necessidades com taxe e o recurso de autocompletar. também a criação de novos. poucos cliques do mouse. Este Outros fatores importantes para a artigo apresenta diversos plugins programação são o gerenciamento de úteis (tabela 1). versões e um depurador, ou debugger. Facilidade de Upgrade Um ambiente de desenvolvimento Um exemplo de vantagem dessa Ferramentas integrado (IDE) engloba todas es- facilidade de adaptação do Eclipse são sas e outras funções em uma única as funções relacionadas à sintaxe: além para a Web solução. No Eclipse, isso ocorre de do já tradicional destaque de palavras- No final de 2005 foi lançada a primeira forma bem visível e flexível. chave da linguagem, o navegador de versão do Web Tools Project (WTP). Origi- Como originalmente o Eclipse, arquivos embutido no framework mostra nalmente, esse conjunto de ferramentas concebido apenas para Java, já era graficamente os arquivos que contêm era constituído por um punhado de com- extensível, ele oferece diversas van- erros de sintaxe, evitando assim que o ponentes individuais que, juntos, faziam tagens em relação aos ambientes de erro não seja visto. diversas tarefas de desenvolvimento Web. Com ele, vinham editores de código-fonte para a maioria das linguagens da web, como HTML, CSS e JavaScript. Além disso, o WTP disponibilizava componen- tes e pedaços de código para desenvolvi- mento de aplicações web clássicas com J2EE, facilitando a ligação de diversos servidores de aplicação. Os assistentes de projeto J2EE e um navegador J2EE simplificaram e padronizaram a relação com aplicativos Java. Nesse meio tempo, o WTP se ra- mificou em diversos subprojetos: as Web-Standard-Tools (WST) compreen- dem plugins editores para HTML ou XHTML, CSS, JavaScript, Document Type Definition, Web Service Definition Language (WSDL) e XML. Esses plu- gins estendem o editor do eclipse com Figura 1 Editores para vários idiomas da Internet e para Java Server Pages: destaque de sintaxe e autocompletar o Web Standard Toolkit transforma o IDE Java do Eclipse em uma para as diversas linguagens (figura 1). ferramenta eficiente para desenvolvedores Web. Com isso, aprimoraram-se as bases de

42 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Plugins Eclipse | CAPA

Tabela 1: Plugins mais úteis para Eclipse

Plugin Descrição Site Atualização Licença

Web Standard Tools HTML, Javascript, www.eclipse.org/web- download.eclipse. Eclipse CSS e outras tools/wst/main.php org/webtools/updates/ Public License J2EE Standard Aplicações Web em Java www.eclipse.org/web- download.eclipse. Eclipse Tools (JST) tools/jst/main.php org/webtools/updates/ Public License Ajax Toolkit Aplicações Web com Ajax www.eclipse.org/atf/ Eclipse Public License Framework (ATF) Dali Java Persistence Mapeamento obje- www.eclipse.org/dali Eclipse Public License API Tools (JPA) to-relacional para a Java Persistence API Java Server Desenvolvimento de www.eclipse.org/web- download.eclipse.org/ Eclipse Faces Tools (JSF) Java Server Faces tools/jsf/main.php webtools/ updates/ Public License PHP Development Aplicações Web em PHP www.eclipse.org/php/ download.eclipse.org/ Eclipse Tools (PDT) tools/php/updates/ Public License PHPeclipse Aplicações Web em PHP www.phpeclipse.de phpeclipse.sourcefor- CPL ge.net/update/releases Subclipse Suporte a SVN no Eclipse subclipse.tigris.org/ subclipse.tigris. Apache Soft- org/update_1.2.x ware License Solex Análise de comu- sourceforge.net/pro- - Apache Soft- nicação HTTP jects/solex ware License Decompilador jadclipse.sour- - CPL Java Jadclipse ceforge.net JBoss-IDE e JBoss-JEMS, Hibernate jboss.com/products/jbosside download.jboss. LGPL Hibernate Tools org/jbosside/upda- tes/development Visual Editor Pro- Editor de interfaces gráfi- www.eclipse.org/vep Site do Callisto Dis- Eclipse Pu- ject (VEP) cas Swing, AWT e SWT covery (URL pré-con- blic License figurada no Eclipse) páginas web estáticas ou componentes Enterprise com Beans. Dessa forma, ele dispõe de um navegador e inspetor estáticos, para aplicativos web totalmen- pode-se importar para o Eclipse algo DOM, um depurador JavaScript, assim te dinâmicos. como a conhecida implementação de como um monitor para XmlHttpRequest. referência EJB Pet Store da Sun, e ser Para controlar o resultado, o plugin utilizado como base para diversas aplica- também se associa ao Mozilla. Ferramentas J2EE ções Ajax. As ferramentas JST incluem a As J2EE Standard Tools (JST, figura 2) complicada criação de aplicações J2EE e Server Faces e contêm plugins para a criação, testes e suportam o desenvolvimento de serviços compilação de aplicativos compatíveis Web, embora infelizmente apenas com Persistência em Java com J2EE-1.4. Com eles, é possível de- base no Apache Axis 1.3 [2]. Juntamente com o Web Standard senvolver software para servidores de apli- Toolkit, o J2EE Standard Toolkit e cações compatíveis com JCP (JSR88[1]) Ajax Toolkit o Ajax Toolkit Framework, o Web como Apache, Tomcat e JBoss, assim Toolkit Project ainda contém dois como o servidor BEA. Eles contêm um Framework subprojetos que se encontram em editor para servidor de páginas Java e O Ajax Toolkit Framework (ATF, figura estágio inicial de desenvolvimento: para JavaScript embutido. 3) facilita o desenvolvimento de aplica- as ferramentas Dali Java Persistence Eles suportam servlets e filtros de ções Ajax: combina estruturas Ajax como API (JPA) são um conjunto de com- servlet e incorporam aplicações Java Dojo[3], Rico[4] e Kabuki[5]. Para isso, ponentes para facilitar o desenvolvi-

Linux Magazine #36 | Novembro de 2007 43 © Linux New Media do Brasil Editora Ltda. CAPA | Plugins Eclipse

Figura 4 O plugin PDT, produzido pela Zend, estende os ótimos recur- sos do Eclipse ao PHP, incluindo um eficiente editor e um depurador, por exemplo.

na J2EE 5, e também inclui edito- Ambos os plugins para PHP incor- res para Java Server Faces ou Java poram depuradores externos: o PDT Service Pages. utiliza o depurador gratuito porém não GPL Zend[6], enquanto o PHPeclipse Figura 2 Com as J2EE Standard Tools, pode-se emprega o depurador da empresa russa desenvolver aplicações Web em Java PHP? PHP! Nusphere[7], disponível em uma versão para diversos servidores de aplicações. Mesmo com alguns céticos duvidando comercial e fechada[8], porém gratuito. da adequação dessa linguagem de script Além dos breakpoints, as extensões do mento de mapeadores objeto-relacio- para a programação de grandes projetos, Eclipse também dão suporte a outro nais para a Java Persistence API (JPA) há muitas aplicações pra as quais ela é modo. Com um include, o depurador contida no Enterprise Java Beans 3.0. eficiente. Por isso, existem dois projetos pode abrir uma nova janela caso o pro- Assistentes e editores facilitam a rea- concorrentes de adaptação do eclipse para grama executado numa subjanela pare lização de tarefas individuais. PHP: as PHP Development Tools (PDT, de rodar. A nova janela exibe os valores As ferramentas Java Server Faces figura 4), que a empresa Zend iniciou das diversas variáveis. (JSF) encontram-se ainda na fase de após a adesão à Eclipse Foundation, ba- Os depuradores de ambos os plugins planejamento, sem uma versão pron- seiam-se nas Web Standard Tools. ká o têm suas vantagens e desvantagens, ta para produção. Até o momento, PHPeclipse é um projeto comunitário mas o PDT possui um pacote tipo elas contam com suporte à versão e independente da fundação. tudo-em-um que, além de conter todos 1.2 da especificação de Java Server Ambos possuem todas as carac- os plugins necessários, inclui ainda o Faces, que por sua vez está definida terísticas importantes do IDE Java plugin depurador executável. Basta para essa linguagem haver um ambiente Java disponível, de script: estendem e a instalação consiste apenas em de- o editor para incluir sempacotar os arquivos. Entretanto, o destaque de sintaxe o depurador executável opera local- e o recurso de auto- mente como script CGI, o que pode completar. O PDT da gerar dificuldades adicionais com o Zend faz isso herdan- servidor web. O plugin PDT lida com do as WSTs, diferente- a depuração no servidor somente na mente do PHPeclipse plataforma comercial da Zend[9]. (figura 5), cujo editor, O depurador da Nusphere está dis- além de PHP, supor- ponível apenas como extensão PHP ta HTML, JavaScript pré-compilada até a versão 2.13.1. As e todas as linguagens atuais versões livres (a atual é a 2.15.1), Figura 3 A Ajax Toolkit Framework automatiza a escrita dos suportadas pelas Web assim como os módulos que dão su- utilitários Web Ajax com base no toolkits Rico ou Dojo. Standard Tools. porte às versões mais novas do PHP,

44 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Plugins Eclipse | CAPA

apresenta desvan- tagens perante o mais novo Subver- sion (SVN). O plu- gin Subclipse in- corpora o SVN ao Eclipse: no nave- gador de arquivos, os ícones mostram, sem desperdiçar es- paço, o status de sincronização dos arquivos com o re- positório. Todas as ope- rações do SVN são disponibiliza- das numa interfa- Figura 5 Como o PDT, o PHPeclipse também contém uma solução para ce gráfica (figura depuração. Ao contrário da alternativa gratuita da Zend, ele suporta a depuração de servidores, porém, nem sempre trabalha 6). Além disso, o de forma confiável. Subclipse estende a função Compare- precisam ser compiladas pelo próprio ável em segmentos muito complexos With do Eclipse, Figura 6 Todas as usuário. Diferentemente do depurador de código-fonte. e também supor- operações no Subversion executável dos plugins PDT, disponível ta as funções da no menu de contexto do gratuitamente, o PHPeclipse suporta ferramenta Svn- navegador de arquivos: a depuração no servidor. Porém, para Subclipse admin. Porém, é o Subclipse incorpora o que o editor disponha do mostrador O Eclipse, originalmente, suporta importante saber SVN ao IDE Eclipse. de linhas contínuas, o Eclipse preci- apenas o CVS para controle de ver- que, em repositó- sa ter acesso ao código-fonte PHP no sões. Apesar do veterano se destacar rios muito grandes, o Subclipse é servidor. Contudo, o depurador da pela estabilidade e ser usado em mui- limitado por restrições da arquite- Nusphere não é inteiramente confi- tos projetos de Código Aberto, ele tura do Eclipse, e ocasionalmente ocorrem problemas. Solex Um primeiro passo para entender uma aplicação web pode ser escu- tar a comunicação entre o servidor web e a aplicação no navegador; que valores a aplicação envia por POST para o servidor numa deter- minada ação do cliente? Com que cabeçalhos responde o servidor? O plugin Solex funciona como proxy nessa comunicação, intermedian- do-a e exibindo, em seguida, per- guntas e respostas visualmente no formato de árvore. As interações cliente-servidor re- gistradas são salvas como arquivos XML e posteriormente executadas. Figura 7 O plugin Solex escuta a comunicação entre servidor Web e cliente. Com isso, o Solex oferece aos desen-

Linux Magazine #36 | Novembro de 2007 45 © Linux New Media do Brasil Editora Ltda. CAPA | Plugins Eclipse

figura 8) também são independen- tes do servidor de aplicações do JBoss, por exemplo, para a apli- cação de engenharia reversa: com base num esquema de banco de dados, o plugin é capaz de gerar os recursos necessários para o Hi- bernate ou JPA. O plugin gera, por exemplo, classes Java, inclusive os campos de dados que podem ser utilizados para consultas a bancos de dados. Para a criação das consultas específicas do Hibernate na Hi- bernate Query Language (HQL) o plugin oferece suporte adicional na forma de uma função de auto- Figura 8 Panorama no formato de árvore: As ferramentas Hibernate ligam a Java completar e um editor HQL que Persistence API ao Eclipse e geram resultados para Hibernate ou JPA. executa diretamente as consultas. Um assistente para configuração volvedores uma ajuda interessante plataforma JBoss-JEMS ao Eclipse. de arquivos e tarefas do Ant, e o para testes de regressão. Através da As extensões podem ser instaladas conjunto de atividades, terminam simples execução de um programa, individualmente. Além dos plugins a interessante lista de recursos o plugin modifica e verifica também para o servidor de aplicações, o deste plugin. os dados trafegados, quer através da JBoss-IDE inclui outras ferramen- inserção pelo usuário (figura 7), quer tas para Web-services, AOP, o en- pelas regras de filtragem ou coman- gine de regras Drools, o workflow Editor visual dos. Nas versões posteriores, os de- Jbpm, assim como para Hibernate A forma mais simples de cria- senvolvedores pretendem acrescentar e EJB3.0. ção de interfaces gráficas é com funções para teste de desempenho. As ferramentas Hibernate e seu editores gráficos como o Visual acessório Java Persistence API (JPA, Editor da Fundação Eclipse. O Jadclipse O plugin Jadclipse integra o de- compilador Java Jad [10] ao Eclip- se. Com isso, o código-fonte das classes Java, que existem mera- mente como arquivos de classe, podem ser usados pelo Eclipse. Ele permite até que se trabalhe no depurador com as classes de- compiladas, caso algumas opções estejam ativadas. JBoss-IDE e Hibernate Tools O JBoss-IDE oferece ao usuário do servidor de aplicação uma comple- mentação que faz sentido para o Figura 9 Interfaces gráficas com cliques de mouse: o Visual Editor constrói framework web: a coleção de plu- as classes apropriadas, e com isso diminui o trabalho manual do gins interliga os componentes da programador.

46 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Eclipse carrega o plugin pelo ge- que se abra o respectivo link no renciador de atualização do site navegador. Pode-se configurar o Callisto Discovery, cuja URL já RSS-View para usar o navegador vem pré-configurada. Ele suporta interno do Eclipse. as plataforma de interface gráfica O RSS-View suporta diversos Swing, AWT e SWT, com todos os modos de exibição: uma lista cro- componentes padrão e opcionais nológica mostra todas as notícias Java Beans. numa visão geral. É possível visu- O Standard Widget Toolkit alizar também os feeds descarta- (SWT) específico do Eclipse é dos ou desinteressantes. O plugin uma alternativa de bom desempe- oferece filtros que organizam os nho ao Swing, padrão do Java. O feeds, combinando-os sob diver- SWT utiliza diretamente os ele- sos critérios. Talvez o filtro mais mentos da plataforma do sistema prático seja o que verifica a hora operacional. correta ao ser ativado, e mostra A construção do editor visual apenas os feeds mais recentes. vem em resposta aos usuários que Outros filtros limitam a exibição a já trabalhavam com construtores de um valor fixado pelo usuário para interfaces gráficas. Novos elemen- apresentação de feeds, ou ocultam tos da interface são selecionados, notícias que ultrapassarem deter- como de costume, na paleta (figu- minada idade. ■ ra 9), e a tela de trabalho permite sua organização. A representação em árvore dos elementos gráficos Mais informações e os assistentes para adição de ma- nipuladores de eventos também [1] JSR-88: http://jcp.org/ são intuitivos e organizados de en/jsr/ detail?id=88 forma amigável. [2] Apache Axis: Outras ferramentas gráficas às http://ws.apache.org/axis vezes trazem problemas quando [3] Dojo: o usuário adapta manualmente http://www.dojotoolkit.org o código gerado. O editor visual do Eclipse permite isso, embora [4] Rico: http://openrico.org de forma limitada. A pré-visuali- [5] Kabuki: http://wiki. zação gráfica do aplicativo exibe apache.org/incubator/ imediatamente as modificações KabukiProposal feitas. Em resumo, o Visual Edi- tor é uma ferramenta sólida e de [6] Depurador executável Zend: http://downloads. alta performance. zend.com/pdt/debugger

[7] Nusphere: RSS http://www.nusphere.com Quase todas as fontes de informa- [8] Depurador gratuito Nusphere: ção na Internet oferecem feeds http://sourceforge. RSS. Quem quiser ficar informa- net/projects/dbg2/ do das novidades do Eclipse não [9] Plataforma Zend: http:// precisa iniciar aplicativos adicio- www.zend.com/products/ nais quando utiliza o plugin RSS- zend_platform View. Ao mover o mouse sobre os itens, abre-se uma pequena janela [10] Decompilador Java Jad: http://www.kpdus. com mais informações. Um duplo com/jad.html clique sobre um título faz com

Linux Magazine #36 | Novembro de 2007 © Linux New Media do Brasil Editora Ltda. Quinta aula da preparação LPIC-2 LPI nível 2: Aula 5 Aprenda a fazer logs locais e remotos, entenda os backups e empacotamento de software. Continue os estudos para a LPIC-2. por Luciano Siqueira TUTORIAL

Tópico 211: serviço, e o syslog passará a escutar na quivo /etc/hosts, substituindo pelo porta 514 do protocolo UDP. É possível IP correto do seu servidor de logs: Manutenção verificar se o syslog foi corretamente do sistema recarregado, através da verificação do 192.168.11.1 zyon arquivo de log /var/log/messages: Para que a nova configuração tenha 2.211.1 Logs de sistema # tail /var/log/messages | grep efeito, reinicie o daemon syslogd. O Logs de sistema são um recurso útil para ➥syslogd daemon pode ser reiniciado simples- identificar, por exemplo, tentativas de May 21 18:10:43 zyon syslogd mente enviando um sinal HUP: invasão no sistema. Porém, se o invasor ➥1.4.1: restart (remote reception). conseguir acesso privilegiado à máquina, killall -HUP syslogd muito provavelmente ele apagará todos O termo remote reception indica os seus rastros nos logs do sistema. que o daemon syslogd está pronto para A partir de agora, todas as mensa- Uma maneira de reduzir esse risco receber mensagens de log remotas, no gens de log deste cliente serão escritas é manter o log do sistema em uma caso, provenientes da máquina zyon. nos logs do servidor zyon. Utilizando máquina remota, de forma a garantir o comando grep, é possível verificar a integridade das informações. Cliente syslog todas as mensagens recebidas do Depois de configurar o servidor, cliente cujo IP é 192.168.11.2: Servidor syslog basta indicar no cliente a máquina O próprio syslog tradicional oferece o remota para onde devem ser envia- # grep 192.168.11.2 < /var/log/ recurso de enviar mensagens de log a dos os logs. Essa indicação é feita no ➥messages um servidor remoto ou comportar-se arquivo /etc/syslog.conf: May 21 18:19:34 192.168.11.2 como um servidor que recebe mensa- ➥su[3315]: (pam_unix) session gens de log de clientes remotos. Para # Enviar logs para o servidor ➥opened for user nobody by que o daemon do syslog, syslogd, passe ➥remoto zyon ➥(uid=0) a se comportar como um servidor, ele *.* @zyon May 21 18:19:34 192.168.11.2 deve ser iniciado com a opção -r: ➥su[3315]: (pam_unix) session Essa entrada deve estar no início ➥closed for user nobody syslogd -r do arquivo; com ela, todos os logs May 21 18:19:34 192.168.11.2 serão direcionados para a máquina ➥su[3317]: (pam_unix) session É necessário alterar essa opção zyon. Para garantir que os logs sejam ➥opened for user nobody by no script de inicialização, conforme enviados mesmo que o DNS local ➥(uid=0) sua distribuição. Para não reiniciar o esteja inacessível, é melhor incluir May 21 18:19:34 192.168.11.2 computador, simplesmente reinicie o uma entrada para o servidor no ar- ➥su[3317]: (pam_unix) session

48 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. LPI Nível 2 | TUTORIAL

➥closed for user nobody O arquivo de configuração ge- Este destino, identificado por dr_log, May 21 18:19:34 192.168.11.2 ralmente é /etc/syslog-ng/syslog- determina a transmissão dos logs para o ➥su[3319]: (pam_unix) session ng.conf. A rota de uma mensagem host remoto 192.168.11.1, através do proto- ➥opened for user nobody by pelo Syslog-NG é dividida nas etapas: colo UDP. Se não for especificada outra ➥(uid=0) source (origem), filtering (filtragem) porta, será utilizada a porta padrão 514. May 21 18:20:15 192.168.11.2 e destination (destino). Finalmente, as três etapas de- ➥sshd[3331]: (pam_unix) Uma origem comum engloba todas vem ser agregadas numa entrada ➥authentication failure; logname= as mensagens geradas pelo sistema, log, para que sejam utilizadas pelo ➥uid=0 euid=0 tty=ssh ruser= aparecendo da seguinte forma no Syslog-NG: ➥rhost=zyon user=root arquivo syslog-ng.conf: May 21 18:20:17 192.168.11.2 log { ➥sshd[3331]: Failed password for source s_all { source(s_all); ➥root from 192.168.11.1 port 3533 internal(); filter(f_auth); ssh2 unix-stream(“/dev/log”); destination(dr_log); May 21 18:21:01 192.168.11.2 last file(“/proc/kmsg” log_ }; ➥message repeated 2 times ➥prefix(“kernel: “)); May 21 18:21:10 192.168.11.2 }; Podem ser utilizadas quantas origens, ➥su[3319]: (pam_unix) session filtros e destinos forem desejados, com- ➥closed for user nobody O termo source determina tratar-se binados em tantas outras entradas log. de uma entrada referente à origem das Após alterar o syslog-ng.conf, é necessário Essas foram as mensagens direcio- mensagens, e o termo s_all é o identifi- reiniciar o serviço para que passe a utili- nadas para o arquivo /var/log/messa- cador desta origem. Dentro das chaves zar as novas configurações. Um servidor ges, conforme configurado no arquivo estão as definições para esta origem; os Syslog-NG pode trabalhar com clientes /etc/syslog.conf local. O utilitário grep termos internal() se referem a todas as syslog tradicional, e vice-versa. pode ser usado para fazer uma filtragem mensagens geradas pelo próprio Sys- mais precisa, como, por exemplo, bus- log-NG, unix-stream(“/dev/log”), para 2.211.2 Empacotando de software car apenas as mensagens de 192.168.11.2 onde os demais programas enviam as Utilizar um sistema de pacotes permite a respeito do daemon sshd: mensagens de log, e file(“/proc/kmsg” ao administrador e aos usuários reduzir a log_prefix(“kernel: “)), que engloba complexidade e facilitar o processo de ins- # grep “192.168.11.2.*sshd” as mensagens geradas pelo kernel. talação de programas no Linux. Mesmo ➥< /var/log/messages Para este computador operar como que a distribuição utilizada não forneça May 21 18:20:15 192.168.11.2 um servidor de log, deve ser incluída um pacote necessário ou desejado – o ➥sshd[3331]: (pam_unix) a definição udp(). que é bastante improvável, haja visto a ➥authentication failure; logname= Filtros são semelhantes: vasta gama de programas mantidos nos ➥uid=0 euid=0 tty=ssh ruser= repositórios – é possível empacotar um ➥rhost=zyon user=root filter f_auth { programa e evitar a compilação manual May 21 18:20:17 192.168.11.2 facility(auth, authpriv); em cada uma das estações. ➥sshd[3331]: Failed password for }; Basicamente, a criação de um ➥root from 192.168.11.1 port 3533 pacote consiste em automatizar um ➥ssh2 Esse filtro, identificado pelo termo processo que seria feito manualmente, f_auth, englobará somente as men- como a compilação e configuração Essa saída mostra que houve uma sagens para as facilities auth e auth- básica do programa. A confecção de tentativa frustrada de login como root priv, ou seja, mensagens referentes um pacote não é necessariamente fei- a partir do host 192.168.11.1. a trâmites de autenticação. ta pelo desenvolvedor do programa. O destino obedece ao mesmo padrão. Aliás, via de regra, o pacote é feito por syslog-ng Neste caso, a configuração de um ser- terceiros. Veremos como criar pacotes Como o syslog tradicional, sistemas vidor remoto como destino para os logs DEB (Debian) e pacotes RPM (Red que utilizam o Syslog-NG (Syslog New pode ser escrita da seguinte forma: Hat Package Manager). Generation) também podem utilizar servidores de log centralizados. No destination dr_log { RPM entanto, a configuração do Syslog- udp(“192.168.11.1”); A ferramenta utilizada para criar paco- NG é um pouco diferente. }; tes RPM é o comando rpmbuild. Todos

Linux Magazine #36 | Novembro de 2007 49 © Linux New Media do Brasil Editora Ltda. TUTORIAL | LPI Nível 2

os arquivos de código-fonte, arquivos BuildRoot: %{_tmppath}/%{name}- %prep intermediários, assim como o pacote ➥%{version}-root %setup final, são manipulados no diretório /usr/src/redhat, o qual possui a seguin- URL: http://gqview.sourceforge.net %build te hierarquia de sub-diretórios: if [ ! -f configure ]; then ➧ /usr/src/redhat/SOURCES : Contém Requires: gtk2 >= 2.4.0 CFLAGS=”$MYCFLAGS” ./autogen.sh o código-fonte original, patches ➥$MYARCH_FLAGS --prefix=%{_ e ícones; %description ➥prefix} ➧ /usr/src/redhat/SPECS: Os arqui- GQview is a browser for graphics else vos SPEC usados para controlar ➥files. CFLAGS=”$MYCFLAGS” ./configure o processo de construção dos Offering single click viewing of ➥$MYARCH_FLAGS --prefix=%{_ pacotes RPM; ➥your graphics files. ➥prefix} ➧ /usr/src/redhat/BUILD: Onde Includes thumbnail view, zoom and fi os fontes serão extraídos e se ➥filtering features. desenrolará a compilação; And external editor support. make ➧ /usr/src/redhat/RPMS : Local onde serão criados os pacotes RPM %description -l fr mkdir html compilados; GQview est un explorateur de cp doc/*.html doc/*.txt html/. ➧ /usr/src/redhat/SRPMS : Local ➥fichiers graphiques. %install onde serão criados os pacotes Il permet d’un simple clic rm -rf $RPM_BUILD_ROOT RPM de código fonte. ➥l’affichage de vos fichiers ➥make mandir=$RPM_BUILD_ROOT%{_ Para gerar um pacote RPM, o rpm- ➥graphiques. ➥mandir} bindir=$RPM_BUILD_ build necessita de um arquivo guia, Les capacités suivantes sont ➥ROOT%{_bindir} \ chamado SPEC. Como exemplo, ➥incluses: vue d’imagettes, zoom, prefix=$RPM_BUILD_ROOT%{_prefix} tomaremos o arquivo gqview.spec, do ➥filtres et support d’éditeurs ➥install programa GQview 2.04. Como a maio- ➥externes. ria dos programas de código aberto, o %clean GQview também é distribuído num %description -l es rm -rf $RPM_BUILD_ROOT arquivo tar.gz, que já contém um ➥GQview es un navegador de arquivo SPEC que pode ser utilizado ➥archivos gr�ficos. %files para criar um pacote RPM. Ofrece visualizar sus archivos %defattr(-, root, root) O arquivo SPEC é dividido em ➥gráficos con sólo hacer un clic. várias seções, começando pela seção Incluye visualización de %doc README COPYING TODO html Preamble (preâmbulo), também co- ➥miniaturas, zoom, filtros y %{_bindir}/gqview nhecida como Header (cabeçalho). soporte para %{_datadir}/locale/*/*/* Esta primeira seção define algumas editores externos. %{_datadir}/applications/gqview. características do pacote: ➥desktop Cada entrada da seção Preamble %{_datadir}/pixmaps/gqview.png Summary: Graphics file browser é auto-explicativa, definindo infor- %{_mandir}/man?/* ➥utility. mações gerais sobre o pacote e sendo Summary(fr): Explorateur de úteis para usuários e administradores. Cada seção é simplesmente um script ➥fichiers graphiques A entrada Requires é especialmente shell executado num dado momento da Summary(es): Navegador de archivos importante, pois especifica quais construção do pacote. Na seção %prep de- ➥gráficos são as dependências para criação e vem ser incluídos todos os procedimen- Name: gqview instalação do pacote. É importante tos de pré-compilação. Além de poder Version: 2.0.4 notar que as entradas Summary e des- conter um script shell, podem ser utili- Release: 1 cription possuem alternativas para zadas macros do rpmbuild. É justamente License: GPL outros idiomas. o caso do exemplo, que invoca a macro Group: Applications/Multimedia As demais seções contêm espe- %setup, responsável pelos procedimentos ➥Source: http://prdownloads. cifidades técnicas utilizadas pelo padrão de pré-compilação. ➥sourceforge.net/gqview/gqview- rpmbuild para gerar o pacote. Cada A seção %build é responsável pela ➥%{version}.tar.gz seção é precedida do sinal %: construção do programa, equivalente

50 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. LPI Nível 2 | TUTORIAL

aos comandos manuais ./configure ta, pode ser criado e incluído no tar.gz. pacote. Responsável por determinar && make. Ao contrário da seção %prep, Apesar de poder ficar em qualquer lu- as dependências do mesmo; não aceita macros, sendo necessário gar na árvore de diretórios, a localização ➧ md5sums : Contém a soma MD5 designar os comandos ou um script apropriada do tar.gz fonte é no diretório de cada arquivo dentro de data. shell. Na maioria dos casos, um sim- /usr/src/redhat/SOURCES. tar.gz; ples comando make já é suficiente. Finalmente, o pacote do exem- ➧ conffiles : Indica qual é (são) A seção %install é semelhante à se- plo poderá será criado através do o(s) arquivo(s) de configuração ção %build, e designa a instalação dos comando: do pacote; arquivos nos locais corretos. Equivalente ➧ preinst : Script shell executado ao procedimento manual, na maioria rpmbuild -tb /usr/src/redhat/ antes da instalação, utilizado dos casos será necessário apenas indicar ➥SOURCES/gqview-2.0.4.tar.gz para fazer ajustes porventura o comando make install. necessários; Na seção %clean podem constar O rpmbuild aceita muitas outras ➧ prerm: Script com finalidade de comandos ou scripts para remover opções e maneiras de criar pacotes, remover pacotes conflitantes an- uma construção de pacote anterior, que podem ser consultadas na sua tes de instalar o novo pacote; evitando arquivos desnecessários. No página de manual rpmbuild(8). O ➧ postinst: Script executado após exemplo, todo diretório BUILD será pacote criado estará no diretório a instalação, para atualizar pos- excluído antes que uma nova cons- /usr/src/redhat/RPMS/i386/. síveis configurações do sistema trução de pacote aconteça. e do programa instalado; Na seção %files devem constar to- DEB ➧ postrm : Script executado após a dos os arquivos que serão incluídos no Um pacote DEB é, na verdade, a remoção deste pacote. Permite que pacote, além de outras opções. Todo combinação de três arquivos, aglu- se desfaça alguma modificação arquivo que não for informado nesta tinados em um só. Esses arquivos feita pelo programa no sistema. seção não será incluído no pacote. O podem ser verificados e extraídos Para criar um pacote DEB, além termo %defattr define as permissões com o comando ar: dos arquivos do programa propria- para os arquivos, no formato permissão mente dito, o único arquivo realmente (octal), dono, grupo. No exemplo, serão # ar tv nano_2.0.2-1_i386.deb necessário é o control, que será inclu- mantidas as permissões dos arquivos e rw-r--r-- 0/0 4 Dec 22 14:28 ído dentro do control.tar.gz. o dono e grupo dos arquivos serão alte- ➥2006 debian-binary rados (se já não forem) para root. rw-r--r-- 0/0 3066 Dec 22 14:28 Package: nano O termo %doc determina quais arquivos ➥2006 control.tar.gz Version: 2.0.2-1 e diretórios fazem parte da documen- rw-r--r-- 0/0 543599 Dec 22 14:28 Section: editors tação para o pacote. Quando instalado ➥2006 data.tar.gz Priority: important o pacote, esses arquivos serão copiados Architecture: i386 para o diretório /usr/doc/$NAME-$VER- Cada um deles possui uma função Depends: libc6 (>= 2.3.6-6), SION-$RELEASE, correspondente ao pacote específica na composição do pacote: ➥libncursesw5 (>= 5.4-5) instalado. Os demais itens englobam ➧ debian-binary : Indica a versão Suggests: spell os arquivos e diretórios que devem ser do formato DEB utilizado. Se o Conflicts: nano-tiny (<= 1.0.0-1), incluídos no pacote. Como mostrado conteúdo for “2.0” (indicando ➥pico no exemplo, podem ser utilizados carac- que o pacote utiliza o formato Replaces: pico teres curinga (* e ?) para evitar incluir 2.0), todas as demais linhas (se Provides: editor os nomes de todos os arquivos indivi- houver) serão ignoradas; Installed-Size: 1624 dualmente. Também pode ser utiliza- ➧ data.tar.gz : Contém todos os Maintainer: Jordi Mallach do o termo %files -f nome_do_arquivo, arquivos que serão instalados, ➥ especificando um arquivo que contém com seus caminhos absolutos; Description: free Pico clone with as localizações de todos os arquivos que ➧ control.tar.gz : Este arquivo ➥some new features devem ser incluídos no pacote. contém as informações sobre A maneira mais simples de utilizar o o pacote e scripts de ajustes. GNU nano is a free replacement rpmbuild é utilizar diretamente um arquivo Arquivos comumente encontrados ➥for Pico, the default Pine tar.gz de código-fonte, que contenha em dentro do control.tar.gz são: ➥editor. Pine is copyrighted sua raiz o arquivo SPEC corretamente ➧ control: Arquivo que contém infor- ➥under a restrictive licence, configurado. Caso este arquivo não exis- mações técnicas e resumo sobre o ➥that makes it unsuitable for

Linux Magazine #36 | Novembro de 2007 51 © Linux New Media do Brasil Editora Ltda. TUTORIAL | LPI Nível 2

➥Debian’s main section. GNU nano cedimento é um pouco diferente. É é gerar um único arquivo que aglutina ➥is an effort to provide a Pico- necessário criar um arquivo chama- todos os arquivos e diretórios de origem, ➥like editor, but also includes do rules, que, como um Makefile, preservando ainda todas as permissões ➥some features that were missing orientará a compilação do programa e propriedades dos arquivos copiados. ➥in the original, such as ‘search durante a construção do pacote. Mesmo quando as cópias de segurança ➥and replace’, ‘goto line’ or forem ser passadas para mídias como ➥internationalization support. 2.211.3 Operações de becape CDs ou DVDs, é recomendável pri- A maneira mais simples e mais recomen- meiro gerar um arquivo .tar contendo Criando um pacote DEB dada para se manter dados seguros é ado- os arquivos, e somente depois copiar A criação de pacotes deverá respeitar tar uma estratégia eficiente de becape. este arquivo para a mídia final, afim toda estrutura fundamental demons- Qualquer sistema é suscetível a falhas de preservar todas as características trada. Se não tratar-se de um pacote de e possuir cópias de segurança garante o dos arquivos originais. um código-fonte que ainda será com- sono tranqüilo do administrador. Além da possibilidade de manter pilado, mas de um pacote de páginas Num sistema Linux, nem todos os cópias de segurança em mídias e discos de manual, scripts complementares ou diretórios precisam ou devem possuir externos, pode-se transmitir arquivos um programa já compilado, por exem- becape. Diretórios como /proc/, /dev/ de becape através da rede, utilizando plo, basta criar um diretório contendo e /tmp/ devem ser ignorados numa o tar em conjunto com o ssh. O meio os arquivos nos caminhos finais onde operação de becape. mais simples para realizar essa tarefa é deverão ficar na árvore de diretórios do Diretórios que devem possuir be- utilizar o comando scp, que é parte das sistema. Em seguida, deve ser criado cape são aqueles que armazenam os ferramentas do pacote open-ssh: um arquivo control como o demons- arquivos pessoais dos usuários, con- trado anteriormente, que deverá ficar figurações dos programas e bancos scp 23-05-2005.tar.gz num diretório chamado DEBIAN na base de dados. Também é interessante ➥[email protected]:/ do diretório utilizado: manter cópias de diretórios que con- ➥var/becape têm arquivos de log. Por padrão, os ls ./fake_root diretórios que armazenam os arqui- Este comando copiará o arquivo total 4 vos mencionados são: 23-05-2005.tar.gz para o diretório drwxr-xr-x 2 root root 1024 2007- ➧ /home/: Diretórios pessoais dos /var/becape no computador remoto ➥05-23 08:51 bin usuários. Prioridade número becape-server.linux.com, utilizando drwxr-xr-x 2 root root 1024 2007- um de becape; a conta do usuário admin. Para uni- ➥05-23 08:50 DEBIAN ➧ /etc/: Configurações gerais do ficar as etapas de criação do arquivo drwxr-xr-x 2 root root 1024 2006- sistema e dos programas; tar.gz e envio para o computador ➥12-22 14:28 etc ➧ /var/: Algumas informações sen- remoto, o comando a seguir pode drwxr-xr-x 4 root root 1024 2006- síveis são armazenadas em /var/. ser utilizado: ➥12-22 14:28 usr Em /var/log/ ficam a maioria dos logs de sistema. Bancos de da- tar czvf - . | ssh admin@becape- O diretório DEBIAN e o arquivo con- dos podem estar em /var/db/ ou ➥server.linux.com ‘cat > /var/ trol dentro dele são usados apenas /var/lib/, dependendo das con- ➥becape/2007-05-23.tar.gz’ para controle do pacote, e não serão figurações e servidor de banco de copiados para o diretório raiz do siste- dados utilizado. Os emails locais, Dessa forma, o arquivo não será ma quando o pacote for instalado. por padrão, ficam em /var/spool/ criado no computador local, mas O comando utilizado para gerar o pa- mail/. Sites Web controlados pelo direcionado e criado diretamente cote é o dpkg-deb, na seguinte forma: apache ficam em /var/www/; no servidor remoto becape-server. ➧ /usr/ e /opt/: Opcionais, apenas linux.com. dpkg-deb -b ./fake_root nano_ necessários para evitar a reinstala- ➥2.0.2-1_i386.deb ção de algum programa durante Considerações sobre o tópico a recuperação total do sistema. É importante conhecer os funda- Será gerado o pacote nano_2.0.2- mentos dos conceitos abordados 1_i386.deb a partir da árvore de dire- Ferramentas neste tópico. Saber as diferenças tório fake_root. A ferramenta universal de criação de entre os sistemas de log, a criação Para criar um pacote a partir do becapes em ambientes Unix é o co- de pacotes RPM e DEB e estratégias código-fonte de um programa, o pro- mando tar. Sua principal característica de backup. ■

52 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Balanceamento de carga e clusters de alta disponibilidade com o Iptables

Força nos números REDES O Iptables oferece a possibilidade de montar clusters e distribuir

a carga por seus nós. Mas e a resistência a falhas? B S K - www.sxc.hu por Michael Schwartzkopff

s tecnologias de balanceamento influenciando o compartilhamento cluster de dois nós. Cada interface tem de carga freqüentemente depen- de carga, alternando interativamente mais um endereço virtual no cluster na Adem de um sistema ou aplica- ou por meio de um script dinâmico. LAN; e, é esse endereço que os clientes tivo central para distribuir o trabalho Os produtos da Stonesoft[2] já dis- usam para se comunicar com o cluster. igualmente pelos membros do clus- põem dessa funcionalidade há algum Cada nó decide autonomamente se é ter. O projeto Linux Virtual Server[1] tempo, e ela funciona bem. responsável por uma conexão; é claro implementa isso no Linux. Para evitar Os clusters Iptables não possuem que ele precisa primeiro ver o pacote um ponto único de falha, as instâncias um mecanismo de heartbeat embutido para conseguir fazer isso. centrais devem ter alta disponibilidade para verificar a saúde dos nós, remover Para permitir que isso aconteça, o e ser continuamente monitoradas por sistemas falhos do cluster ou ordenar cluster tem um IP e um endereço MAC uma rotina que verifica os sistemas e que outros nós assumam as tarefas do compartilhados, e o MAC é o mesmo responde a erros ou sinais perdidos. Se nó ausente. Todavia, muitas falhas são em todos os nós. Isso só funciona com for preferível evitar inteiramente uma anunciadas por sinais claros, que dão ao endereços MAC multicast, os quais instância central de balanceamento próprio nó problemático a possibilidade são identificáveis pelo fato de o bit de de carga, o alvo (target) CLUSTERIP de deixar o cluster voluntariamente e a ordem mais baixa estar ativo no byte de é uma alternativa. O CLUSTERIP é tempo. Neste artigo, serão mostradas as ordem mais alta. O endereço multicast uma técnica simples e de baixo custo possibilidades de combinação do alvo impede conflitos de endereço. para balancear carga que já faz parte CLUSTERIP do iptables com um No entanto, essa técnica possui um do código do Netfilter. Apesar de esse script que controla o cluster. problema: a RFC 1812[3] afirma que recurso não ser ainda totalmente estável, um roteador não deve confiar numa a tecnologia é bem impressionante. Exemplo de cluster resposta ARP (protocolo de resolução de No CLUSTERIP, os nós do cluster O cluster mostrado na figura 1 é com- nomes) se ela atribuir um MAC multi- compartilham um endereço comum, posto por dois nós. Cada um deles cast ou broadcast como endereço IP. Os e cada nó usa um algoritmo de hash possui uma interface na LAN (eth0) e roteadores que cumprem estritamente para decidir se é responsável por outra na rede de gerenciamento (eth1). essa RFC precisarão de uma entrada uma conexão. Os administradores Os nós usam a segunda interface para estática em suas tabelas ARP. podem atribuir responsabilidades a trocar mensagens. Um simples cabo um nó via /proc/net/ipt_CLUSTERIP, crossover é a única exigência para um Magia de redes Tabela 1: Modos de cluster Switches normalmente encaminham para todas as interfaces qualquer pacote multicast recebido. Isso pode causar Modo Técnica uma confusão considerável no caso sourceip Usa apenas o endereço IP de origem para de arquiteturas de alta disponibilidade o hash, e então atribui exatamente um nó a com roteadores HSRP com um ou dois cada cliente. switches, como nesse exemplo. sourceip-sourceport Usa também informações sobre a porta de O switch 1, ativo, aceita o pacote que origem da aplicação. Isso melhora a distribui- sai da LAN e o repassa para os nós e ção de carga entre os nós. também para o segundo switch, para sourceip-sourceport-destport Usa ainda informações sobre a porta de des- se certificar de que o nó 2 também re- tino da aplicação. ceba o pacote. Obviamente o switch 2 normalmente passaria o pacote para o

Linux Magazine #36 | Novembro de 2007 53 © Linux New Media do Brasil Editora Ltda. REDES | ClusterIP

Exemplo 1: Script do cluster precisa especificar as portas de entrada e saída responsáveis por pacotes multi- 01 #!/bin/bash cast, para se certificar de que o switch 02 repassa cada pacote uma única vez 03 # Configuração do nó 04 MEUNO=1 para a interface da LAN de cada nó. 05 DISPOSITIVO=eth0 Se ambos os nós do cluster escutarem 06 OUTRONO=192.168.20.2 nas interfaces 1 e 2, o comando para 07 switches Cisco seria: 08 # Configuração do cluster 09 IPCLUSTER=192.168.10.3 10 MACCLUSTER=01:02:03:04:05:06 mac-address-table static 11 ONLINE=0 ➥01:02:03:04:05:06 interface Fast 12 ➥ 13 verifica_no () { Ethernet0/1 FastEthernet0/2 14 ip link list dev $DISPOSITIVO | grep -q UP 15 return $? Em cenários de alta disponibilida- 16 } de com switches dobrados (um para 17 18 falha () { cada nó), o protocolo spanning tree 19 ip address delete $IPCLUSTER/24 dev $DISPOSITIVO pode ajudar a evitar loops no cami- 20 echo "-$MEUNO" > /proc/net/ipt_CLUSTERIP/$IPCLUSTER nho até o destino. 21 ssh $OUTRONO "echo '+$MEUNO' > /proc/net/ipt_CLUSTERIP/$IPCLUSTER" 22 } 23 24 recuperar () { Alvo do CLUSTERIP 25 ssh $OUTRONO "echo '-$MEUNO' > /proc/net/ipt_CLUSTERIP/$IPCLUSTER" O cluster precisa passar para um mesmo 26 ip address add $IPCLUSTER/24 dev $DISPOSITIVO 27 echo "+$MEUNO" > /proc/net/ipt_CLUSTERIP/$IPCLUSTER nó todos os pacotes que pertençam a uma 28 } conexão específica. Esse método é a única 29 forma de impedir que clientes recebam 30 # Inicializar nó respostas duplicadas, ou que servidores 31 modprobe ipt_conntrack 32 ip address add $CLUSTERIP/24 dev $DEVICE descartem pacotes por não estarem cien- 33 iptables -F INPUT tes do histórico da conexão. 34 iptables -I INPUT -d $IPCLUSTER -i $DISPOSITIVO \ O software do cluster no pacote do 35 -p icmp --icmp-type echo-request -j CLUSTERIP \ Netfilter faz isso de forma autônoma e 36 --new --hashmode sourceip --clustermac $MACCLUSTER \ 37 --total-nodes 2 --local-node $MEUNO elegante. Na fase de configuração, cada 38 cluster recebe um número serial; esses 39 # Testar se a interface do cluster está funcionando são os números 1 e 2 neste exemplo. 40 ONLINE=1 41 while (true); do Para cada conexão, o alvo do iptables 42 if ( verifica_no ) then usa a técnica de Bob Jenkins[4] para 43 echo "Interface ativada" calcular um hash a partir dos dados da 44 if [ $ONLINE -eq 0 ]; then conexão, e o mapeia numa faixa de 1 a 45 recuperar 46 ONLINE=1 2 para descobrir se o nó é responsável 47 fi pela conexão. 48 else O estado da conexão (função de con- 49 echo "Interface desativada" 50 if [ $ONLINE -eq 1 ]; then nection tracking do Netfilter) se assegura 51 falha de que a conexão permaneça atribuída 52 ONLINE=0 ao nó. O tipo de dados usados pelo me- 53 fi canismo de hash depende do modo do 54 fi 55 sleep 1 cluster (veja a tabela 1). Como teste, que- 56 done remos que o cluster responda apenas a 57 pings ICMP; nesse contexto, sourceip é a 58 exit 0 única configuração com significado no modo cluster – pacotes ICMP não têm nó 2 e de volta para o primeiro switch. Se um switch não consegue apren- números de porta. sourceip-sourceport se- Alguns switches mais antigos caem nessa der endereços multicast por meios do ria preferível para clusters de aplicações armadilha e paralizam a LAN. mecanismo normal, sua configuração “fazendas” de servidores web.

54 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. ClusterIP | REDES

Configuração do cluster. A melhor forma de mudar ping com dois pacotes de resposta a do cluster isso é usar um comando ip: ping. O arquivo /proc/net/ipt_CLUS- TERIP/192.168.10.3 do computador 2 A configuração do cluster consiste ip address add 192.168.10.3/24 dev agora contém 1,2. Um echo "-1"... em um único comando de iptables ➥eth0 elimina a responsabilidade pelo valor por nó. A tabela 2 explica as op- de hash 1. Isso permite que os admi- ções. O seguinte exemplo restrin- Esse comando adiciona o endereço nistradores desliguem o nó e atribu- ge o cluster a requisições de echo do cluster como um IP extra para essa am responsabilidade pelas conexões ICMP (pings): interface. O cluster responderá a pings ao segundo computador. depois disso. Quanto ao MAC multicast, o iptables -I INPUT \ iptables cuida dele automaticamente. -d 192.168.10.3 -p icmp \ O valor de hash para esse computa- Falhas --icmp-type echo-request \ dor – ou seja, o número ao qual o com- Um script para gerenciar automa- -j CLUSTERIP --new \ putador responde – é armazenado em ticamente as responsabilidades do --hashmode sourceip \ /proc/net/ipt_CLUSTERIP/192.168.10.3. nó precisa: --clustermac 01:02:03:40:05:06 Esse número pode ser modificado em ➧ inicializar o cluster; --total-nodes 2 --local-note 1 tempo de execução para tornar o nó ➧ buscar erros no nó; 2 responsável pelo nó 1: ➧ em caso de erro, retirar o nó do A configuração do nó 2 é quase cluster enquanto delega respon- idêntica; porém, nesse caso, é preciso echo "+1" > \ sabilidades a outros nós; o valor 2 para --local-node. /proc/net/ipt_CLUSTERIP/\ ➧ verificar novamente o nó e reinse- De fora (saída de ifconfig), é im- 192.168.10.3 ri-lo no cluster caso desejável. possível saber que as interfaces per- O script de bash do exemplo 1 cobre tencem a um cluster e o kernel não Executar esse comando no nó 2 signi- essas tarefas, mas é só uma demonstra- sabe que deve reagir ao endereço IP fica que o cluster responderá a cada ção. A seção de configuração (linhas 3 a

�����

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

© Linux New Media do Brasil Editora Ltda. REDES | ClusterIP

blema que afetasse implementadas sem o uso do com- as comunicações partilhamento central de carga. O entre os nós (cére- compartilhamento pelo CLUSTERIP bro separado). Esse apenas prova que um mecanismo de caso não tem efeito hash simples, mas usado com inte- contanto que não ligência, pode fazer maravilhas. O haja outros proble- projeto Linux-HA também oferece mas, pois cada nó a plataforma na qual esse conceito continuaria traba- poderia ser acrescentado como um Figura 1 Cluster de dois nós. As interfaces da LAN de todos os nós são ligadas para criar uma interface virtual de lhando autonoma- recurso. A supervisão da saúde dos cluster; os dois nós usam uma rede de gerenciamento mente; entretanto, nós, como o ping de sistemas exter- para se comunicarem e controlarem um ao outro. em caso de outras nos, a saúde do hardware ou o cer- falhas, tudo daria camento no caso de problemas são 11) agrupa as configurações dos nós e do errado. Metade das comunicações feitos pelo software heartbeat, assim cluster. Seguindo isso, a linha 31 carrega ficariam sem resposta. Uma interfa- como a transferência de recursos en- o módulo de kernel ipt_conntrack. ce de gerenciamento sobressalente tre nós em caso de falha. Depois, a interface recebe o ende- (através de uma porta serial ou da Em seu próximo artigo, o autor reço do cluster e a corrente INPUT é interface de LAN) ajudaria a lidar pretende descrever o uso do alvo apagada por motivos de segurança (linha com a situação. CLUSTERIP num agente de re- 33) antes que a chamada ao iptables na Os nós de uma configuração de alta cursos do Linux-HA, criando assim linha seguinte configure o cluster. O disponibilidade precisariam monitorar um cluster de compartilhamento de loop infinito das linhas 40 a 56 verifica o estado de saúde uns dos outros ou um carga com até dezesseis nós, usando se a interface do cluster está ativa (com nó poderia morrer sem conseguir avisar apenas softwares para Linux. ■ a função verifica_no) da linha 13). Caso os outros (por exemplo, falha no forne- ela esteja desativada, a função falha (linha cimento de energia). Isso levaria a outra 18) apaga o endereço IP da interface, situação de cérebro separado, na qual Mais informações retira a responsabilidade do nó local os nós não conseguiram se comunicar Linux Virtual Server: e usa SSH para atribuí-la aos outros mas ainda teriam acesso à rede. Há um [1] http:// www.linuxvirtualserver.org nós. Para permitir que isso ocorra, os mecanismo de cercamento para lidar nós precisam da possibilidade de usar com isso no projeto de alta disponibi- [2] Stonesoft: o SSH para acessar uns aos outros sem lidade do Linux (Linux-HA)[5]. http://www.stonesoft.com interação com o usuário. [3] RFC 1812, "Requirements Se a interface se recuperar do erro for IP Version 4 Routers" e voltar ao estado online, recuperar() E muito mais... (em inglês): http://rfc. (na linha 24) restaura a configuração O autor considera reescrever o script do net/rfc1812.html original. O script não leva em consi- cluster em C para eliminar a necessidade [4] Bob Jenkins, "A Hash deração todos os cenários possíveis. da comunicação por sockets UDP entre Function for Hash Table Por exemplo, a interface de geren- os nós, para suportar mais de dois nós, e Lookup" (em inglês): ciamento poderia relatar um pro- para padronizar a configuração. Ao mes- http://www.burtleburtle. mo tempo, os testes poderiam levar em net/bob/hash/doobs.html Tabela 2: Opções consideração parâmetros como carga da [5] Projeto Linux-HA: CPU, espaço em disco ou a capacidade http://www.linux-ha.org Opção Função de alcançar sistemas externos. Também -d Endereço IP do cluster na LAN parece fazer mais sentido permitir que o Linux-HA gerencie a configuração do -i Interface da LAN cluster como um recurso, e portanto com- Sobre o autor --hashmode Modo hash bine os benefícios da alta disponibilidade Michael Schwartzkopff trabalha para a e do compartilhamento de carga. Multinet Services GmbH, na Alemanha, --clustermac@ Endereço MAC do cluster como consultor de segurança e redes. Sua A tecnologia do CLUSTERIP especialidade é o protocolo SNMP. Ele pe- --total-nodes Número todal de nós no cluster também é adequada para fazendas gou a “gripe do Linux” lá atrás, em 1994, --local-node Nó a configurar depois de trabalhar com a Yggdrasil, uma de servidores de aplicação de alta das primeiras distribuições Linux. disponibilidade, que poderiam ser

56 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. © Linux New Media do Brasil Editora Ltda. Scripts seguros com o Apache Suexec Bons sonhos Para muitos administradores, a segurança de um aplicativo web é mais importante que seu desempenho. Em servidores web com múltiplos usuários, o módulo Suexec pode reduzir problemas ligados a diretórios globalmente graváveis. por Oliver Frommel SEGURANÇA

uem segue listas de email por qualquer usuário. Ainda que alguém Basta iniciar o servidor Apache sobre segurança sabe que fi que desconfortável com esse acesso com a opção -V para descobrir se o Qaplicativos web podem cau- escancarado, a técnica convencional de Apache suporta o Suexec: sar pesadelos quanto à segurança. O segurança do Apache oferece poucas motivo disso é objeto de inúmeras alternativas. Normalmente, o servidor $ /usr/sbin/httpd -V | grep -i \ discussões acaloradas. As culpadas executa todos os scripts sob o mesmo suexec -D \ seriam linguagens como PHP? Além ID de usuário ( www, www-admin ou SUEXEC_BIN=”/usr/sbin/suexec” disso, será que muitos desenvolve- algo semelhante). Deixar os diretórios dores web simplesmente não têm graváveis para esse ID de usuário tem Para oferecer a segurança esperada a habilidade necessária para criar efeito equivalente a torná-los graváveis pela maioria dos administradores, alguns aplicativos seguros? Independente por qualquer usuário. Não importa se valores pertinentes estão embutidos no da causa, uma coisa é certa: algo os diretórios são graváveis por todos ou programa Suexec, incluindo o arquivo precisa mudar. apenas pelo ID do usuário do servidor de log, os caminhos dos executáveis, a Uma abordagem holística de rede- web, pois o resultado é o mesmo: qual- raiz dos documentos e os IDs de grupo senvolvimento de todos os componentes quer um consegue gravar no diretório e usuário. O Suexec possui uma opção de cada servidor web, a partir do zero, de qualquer outro. de linha de comando que informa como é altamente improvável. Em vez disso, ele está confi gurado. os desenvolvedores do projeto Apache Na saída de /usr/lib/apache2/suexec estão trabalhando na melhoria de com- Módulo Suexec -v, a variável DOC_ROOT especifi ca o dire- ponentes individuais; apesar da maioria tório sob o qual devem ser armazenados das pessoas concordar que essa não é do Apache os scripts de usuário. SAFE_PATH defi ne uma solução perfeita, ela é infi nitamente Uma possível rota de saída desse o caminho dos executáveis, e é passado melhor que nenhuma solução. círculo vicioso é o módulo Suexec para os scripts. Sua confi guração do Aqueles que instalam pacotes a partir [1] do Apache. O Suexec executa Apache precisa refl etir esses parâme- de fontes online freqüentemente encon- scripts CGI sob um ID de usuário tros. No exemplo deste artigo, a raiz tram nos manuais uma linha pedindo confi gurável. Com isso, o módulo dos documentos ( DOC_ROOT) /var/www/ que seja criado um diretório gravável Suexec limita o acesso do invasor contém vários subdiretórios, cada um aos recursos do sistema. pertencendo a um único usuário. A maioria das distribuições Linux já inclui o módulo Suexec com o pacote do Apache. Por exemplo, Apache simples no Fedora, o pacote httpd inclui o O exemplo 1 mostra o arquivo de arquivo de módulo mod_suexec.so e configuração suexec.conf . As linhas o wrapper /usr/sbin/suexec. No De- de 6 a 8 definem os privilégios de Figura 1 O script CGI rodará com os IDs de grupo bian Etch , o Suexec se encontra no execução necessários para o dire- e usuário especifi cados no Suexec . pacote chamado apache2. tório que pertence a exemplo na

58 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Apache Suexec | SEGURANÇA

do interpretador PHP, o que também não tem problema com o FastCGI. Basta executar php-cgi -v. Leitores atentos devem ter per- cebido um pequeno problema: um usuário web conseguiria substituir o binário do PHP. Provedores rodando um servidor certamente terão interes- se em evitar isso, por motivos óbvios de segurança. A solução é a fl ag imutável, que pro- íbe mudanças num arquivo até mesmo vindas de seu próprio dono. O exemplo a seguir ativa a fl ag para o interpretador PHP do usuário exemplo: configuração do Apache; a linha Veloz chattr +i /var/www/exemplo/bon/ 3 o define como o diretório raiz É fácil imaginar que diversos ad- ➥php-cgi do usuário. A linha 10 especifica ministradores de websites fi carão os arquivos que terminam em .cgi tristes em usar a tecnologia CGI Graças a essa alteração, a confi - como scripts CGI. Se o módulo do século passado por motivos de guração do Suexec/FCGI funciona Suexec for carregado e o wrapper segurança. Como alternativa, pode- conforme esperado, mas apenas em estiver disponível, então basta se usar a interface FastCGI ( FCGI ), sistemas de arquivos Ext2/3 , XFS , JFS apenas a linha 4 , com sua diretiva que oferece a possibilidade de in- e ReiserFS, pois só eles possuem a SuexecUserGroup, para completar a tegrar scripts PHP à infraestrutura fl ag imutável. configuração. do Suexec. Essa técnica, reconhecidamente Quem colocar um script CGI no O arquivo mod_fcgi especifi cado complicada, oferece a possibilidade diretório /var/www/exemplo/ talvez re- pelos desenvolvedores do FastCGI de se executar scripts PHP sob a su- ceba um erro interno do servidor, ou já foi substituído pelo mod_fcgid pervisão do Suexec sob um usuário uma página em branco. Verifi car o (com um d ao fi nal) [2], quase to- não privilegiado. Essa confi guração arquivo de log do Suexec (no Fedora, talmente compatível, que está dis- é ao menos um passo na direção cor- /var/log/httpd/suexec.log ) pode dar ponível como módulo binário para reta rumo à proteção dos servidores mais informações: a maioria das distribuições. web que abrigam sites para múlti- O principal problema de se in- plos usuários. target uid/gid (501/501) mismatch tegrar o FCGI e o Suexec é fazer Graças à fl exibilidade da interfa- ➥with directory (501/501) or coincidirem os restritivos padrões ce FCGI, é possível deixar os scripts ➥program (500/501) dos dois módulos. Se for usado o seguros em outras linguagens, como binário global do PHP como wra- Ruby ( on Rails ). Os usuários de PHP Por motivos de segurança, o pper FCGI, o Suexec reclamará talvez achem a ferramenta SuPHP [3] Suexec insiste que diretórios e por estar localizado fora da raiz dos uma alternativa útil à técnica descrita executáveis pertençam ao usu- documentos. A solução é copiá-lo neste artigo. ■ ário listado na configuração do para um diretório sob a raiz dos do- Apache. Se os detalhes de dono cumentos. A seção de confi guração Mais informações e privilégios estiverem corretos, do Apache fi ca assim: o seguinte script CGI retorna os [1] Apache Suexec: http://httpd.apache. resultados desejados, como mos- AddHandler fcgid-script .php org/docs/2.0/suexec.html tra a figura 1. ➥FCGIWrapper /var/www/example/ ➥bin/php-cgi.php [2] Mod_fcgid: #!/bin/sh http://fastcgi.coremail.cn echo “Content-type: text/html” Isso pressupõe uma instalação já [3] SuPHP: echo funcional do FCGI (normalmente http://www.suphp.org echo “UID/GID:” `id` basta instalar o pacote) e a versão CGI

Linux Magazine #36 | Novembro de 2007 59 © Linux New Media do Brasil Editora Ltda. Maya 8.5 Brincando com fogo Cenas realistas animadas por computador já são exibidas há anos, mas cabelos, água e fogo ainda são difíceis de simular. O novo Maya 8.5 se destaca de seus concorrentes. porr Peter Kreussel ANÁLISE

abelos ao vento, uma capa automaticamente o com- esvoaçante, chamas trepi- portamento de fluidos. Cdantes — imagens geradas O Autodesk Maya 8.5 foi por computadores não são a primeira lançando no meio de janei- coisa a vir à mente quando vemos ce- ro, com a versão Complete nas realistas como essas. Mas os pro- sendo vendida a US$ 1.999 gramas profissionais de renderização e a Unlimited a US$ 6.999. e animação 3D como o Maya[1], o Muitos dos efeitos especiais Photorealistic RenderMan[2] e o 3ds que distinguem o Maya do Max[3] já são mais do que capazes programa 3D livre Blender, de gerar uma chama bastante real, como simulações de cabelos simular materiais maleáveis como e roupas, estão disponíveis tecidos e borracha, ou até calcular apenas na versão mais cara do aplicativo da Autodesk. Figura 2 O Maya utiliza setas de eixos e círcu- O preço do software restrin- los de rotação para representar 3D de ge seu uso aos profissionais, uma forma intuitiva que evite erros do o que torna ainda mais inte- usuário. ressante tentar descobrir até onde um aplicativo de Código Aberto são limitados a duas dimensões, não se consegue competir com os principais pode simplesmente modelar um obje- concorrentes. to 3D num computador como se faria Neste artigo, oferecemos um pano- com um bloco de argila. Em vez disso, rama dos recursos presentes na versão os artistas gráficos empregam técnicas 8.5 do Maya, e ainda consideramos de construção que acrescentam uma como o Blender[4] pode competir terceira dimensão a ações de desenho como alternativa livre. bidimensionais desempenhadas por um mouse. Corpos espaciais A base de objetos orgânicos tais como os personagens nos efeitos visuais dos Figura 1 Objetos complexos geralmente são A base de qualquer simulação espacial filmes modernos costumam ser con- feitos a partir de formas básicas é o modelo wireframe que define a ge- juntos de polígonos. Eles são criados simples, em ferramentas de mode- lagem 3D, por artistas que dividem ometria do corpo a ser representado. através da subdivisão repetida de áreas repetitivamente as formas antes de A modelagem de objetos 3D não é em formas básicas mais simples. Na moverem-nas para a posição espacial um processo trivial: como as telas de figura 1, ainda é possível ver o cubo a adequada. Os algoritmos de suaviza- computador e dispositivos apontadores, partir do qual o objeto complexo foi ção arredondam o objeto finalizado. como mouse e mesas digitalizadoras, criado à esquerda. O objeto púrpura foi

60 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Maya | ANÁLISE

calculam reflexos e refrações causados O Blender (atualmente) não possui por objetos transparentes. nada que se compare a esses recursos. Na fase de modelagem de obje- É importante notar, todavia, que o tos 3D, o programa gratuito Blender nCloth se restringe aos usuários da consegue acompanhar muito bem o versão Unlimited do Maya. Maya, em parte devido à última versão 2.43 agora possuir um modo (Sculpt) para esculpir formas tridimensionais, Ficando cabeludo semelhante à ferramenta Sculpt Ge- Seja ao desenhar criaturas extraterres- ometry do Maya. Artistas podem usar tres, brinquedos fofinhos ou apenas essa ferramenta para deformar objetos personagens humanos, uma coisa surge interativamente, “tocando” neles com em comum: cabelo. Muitas cenas de Figura 3 O tecido nesta figura foi o mouse. Essa técnica se aproxima do animação computadorizada precisam criado como uma superfí- uso de argila para modelagem, e ofere- renderizar cabelos de uma forma realista cie plana. O Maya calculou automaticamente o dobra- ce liberdade e intuitividade máximas, para que eles pareçam naturais. A versão mento causado pelo toque que realmente compensam quando 2.40 do Blender tem um recurso para do cano. se precisa desenhar formas orgânicas isso. Os cabelos se baseiam num siste- complexas, como faces humanas. ma de partículas, ou seja, um sistema gerado pela separação, movimentação, Alguns aspectos da vida real são que automaticamente gera várias partes rotacionamento e redimensionamento particularmente difíceis de simular pequenas que se movem de forma pré- das superfícies do cubo. em computador, incluindo água, determinada. O sistema de partículas O Maya possui uma técnica intuitiva fogo e materiais flexíveis — prin- pode ser configurado para desenhar para esse processo — ele desenha vários cipalmente roupas que se mexem os caminhos destas como linhas pon- pontos de rotação e movimento em para refletir os movimentos do per- tilhadas que se assemelham a cabelos. torno de um polígono selecionado, de sonagem que está vestindo-as e que No Blender é muito mais complicado forma a refletir as três dimensões (figu- se deformam ao encostar em outros desenhar penteados de cabelo, mas não ra 2). O usuário pode arrastar uma das objetos sólidos. Além disso, o enor- totalmente impossível. setas coloridas para mover a superfície me número de cabelos em pessoas O recurso de simulação de cabelos em direção ao eixo em questão. Movi- e animais impossibilita a criação de no Maya está num patamar diferente; mentar os cubos coloridos no eixo acaba modelos manuais. vários parâmetros configuráveis ofere- por redimensionar o objeto selecionado; O Blender ganhou muita força ano cem ao artista a possibilidade de en- os círculos coloridos rotacionam o obje- passado, e agora possui sistemas para caracolar, alisar, engrossar ou afinar to em torno do eixo de mesma cor. As simular fluidos (versão 2.40) e corpos os cabelos do personagem. O Maya cores dos eixos foram padronizadas nos macios (versão 2.37). Dito isso, os de- até cria cabelos trançados automati- aplicativos de CAD há vários anos. senvolvedores da Autodesk não ficaram camente. Os cabelos são organizados Depois de criar um modelo do objeto à toa: o Maya 8.5 agora dispõe de um em grupos de folículos. Os atributos em wireframe, algoritmos automáticos sistema de simulação, nCloth, para dos folículos podem ser alterados in- de suavização aplicam uma forma orgâ- tecidos e outros materiais flexíveis. O dividualmente. Na verdade, os artistas nica ao mesmo (figura 1). O desenhista comportamento maleável e o movi- pode aplicar uma superfície realista, mento das roupas agora são calculados geralmente baseada numa foto. O soft- automaticamente com base em parâme- ware 3D projeta (mapeia) a foto sobre o tros pré-estabelecidos, tais como rigidez objeto dotado de volume. Fontes lumi- torcional e densidade (figura 3). nosas virtuais adicionam luz e sombras. Em cenas com vento, o artista neces- A técnica de raytracing usada para isso sita especificar a velocidade e a direção segue o traçado do raio a partir da fonte do fluxo de ar. Movimentos de persona- luminosa, simulando assim os efeitos de gens vestindo materiais simulados pelo luz e sombras, como a sombra colorida nCloth são refletidos pelo comporta- que um objeto vermelho projeta sobre mento realista do tecido. Com o Maya, Figura 4 Um sofisticado sistema de uma parede branca. Programas de alto pode-se desenhar objetos infláveis[5] de folículos dá ao artista contro- desempenho como o Maya, mas tam- forma fácil, ou até animar objetos que le máximo sobre a aparência bém o plugin YafRay para Blender, murcham ou explodem. dos cabelos no Maya.

Linux Magazine #36 | Novembro de 2007 61 © Linux New Media do Brasil Editora Ltda. ANÁLISE | Maya

simulação de cabelos. Tanto cabe- Maya livra o artista dessa responsabilidade: los quanto pêlos estão disponíveis um simples clique em Create Physical apenas no Maya Unlimited. Sun and Sky nas configurações de ren- derização fazem o programa criar uma atmosfera externa realista. Forças elementais O Blender dispõe de uma opção Na vida real, a água é um elemento semelhante, Skydome, apesar de os em movimento: ondas e correntes resultados serem um pouco menos rea- causam mudanças de forma con- listas. O Maya se beneficia do poder do tínuas. Simular esses movimentos raytracer Mental Ray, principalmente manualmente por modelagem 3D é em simulações de cenas externas. Esse Figura 5 Modelos de pêlos são menos flexíveis difícil, devido ao grande esforço en- software, originalmente desenvolvido que a complexa simulação de cabe- volvido. Um sistema que calculasse pela Mental Images[6], estabeleceu-se los disponível na versão 8.5 do Maya; o comportamento de fluidos com como tracer padrão na indústria do ci- mesmo assim, são capazes de produ- base em sua viscosidade, na gravi- nema, junto com o RenderMan. zir resultados bastante realistas com apenas alguns cliques de mouse. dade vigente e também no formato Técnicas como iluminação global e movimento de obstáculos seria e reunião final produzem resultados podem clarear os cabelos mais rápido de grande ajuda. A figura 6 mostra extremamente realistas. A iluminação que qualquer cabeleireiro (figura 4). uma cena em que pequenas ondas global significa simplesmente que a Se o personagem mexer sua cabeça, o interagem com a marola gerada por simulação leva em conta todas as pro- cabelo virtual também se moverá, sem um barco em movimento. Com as priedades físicas da luz — um objeto exigir a intervenção do artista. configurações corretas, esses dois iluminado se torna uma fonte de luz. Se a quantidade de configurações movimentos serão criados auto- Objetos transparentes decompõem a luz da simulação de cabelos do Maya maticamente. A simulação não é em seus componentes multicoloridos. parecer trabalhosa demais, é possí- restrita a fotografias; o movimento A reunião final (final gathering)[7] re- vel obter resultados suficientemente natural de fluidos também pode duz o poder computacional necessário realistas mais rapidamente com a melhorar a qualidade artística de para a iluminação global, e também simulação de pêlos (figura 5). seqüências animadas. reduz o efeito de erros de arredonda- Esse sistema alternativo de si- Apesar de fogo e água serem na- mento, criando assim imagens mais mulação de cabelos corporais, que turalmente opostos, os programas de suaves e agradáveis aos olhos. existe há mais tempo que o Maya animação utilizam algoritmos seme- Hair, permite a atribuição de um lhantes para representá-los. Do ponto Complete ou dos modelos de pêlo incluídos no de vista físico, ambos são correntes de programa a uma superfície. Os pê- gás emissoras de luz (figura 7). O mesmo Unlimited? los ficam com uma estrutura visual se aplica à fumaça, com exceção de sua A versão limitada do Maya, Maya bastante realista, mas sempre co- luminosidade. Novamente, a automação Complete, custa menos de um terço brem suavemente as superfícies a do Maya economiza trabalho braçal: o (US$ 1.999) da versão Unlimited (US$ que são designados, e não podem aplicativo fornece vários modelos que 6.999). E a versão é “completa” no ser moldados, diferentemente da os artistas podem simplesmente inserir sentido de que representa o estado- na cena em questão. da-arte em solução de modelagem Algoritmos de raytracing calculam 3D, animação e renderização. pontos de luz e sombra nas superfícies, Considerando o preço, não é de se com base no caminho dos raios de luz a surpreender que o Maya Complete partir da fonte luminosa virtual. Para ce- seja superior ao aplicativo gratuito nas de interiores, pode-se simplesmente Blender — é na usabilidade que a acrescentar algumas lâmpadas ao cenário ferramenta profissional marca mais para se obter uma iluminação realista. pontos. A boa documentação, que é Evidentemente não é tão fácil conseguir menor para a versão atual do Blen- uma iluminação com aparência natural der, ajuda a facilitar o uso do pacote em ambientes externos; a idéia é simular para artistas inexperientes. Quem já Figura 6 Um barco navega pelas a luz do sol e a iluminação difusa prove- possui familiaridade com o Blender ondas do mar. niente do céu diurno. Mais uma vez o deve conseguir se entender com o

62 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Maya | ANÁLISE

lo. A versão de teste registra o endereço Animações complexas com o núme- MAC da placa de rede, e não funciona ro padrão de quadros por segundo em outra máquina. definitivamente estão no domínio O Blender superou a distância para dos grandes clusters. ■ o grupo de programas profissionais com sistemas de simulação de fluidos e corpos macios acrescentados desde o lançamen- Mais informações to da última versão. No entanto, se for [1] Maya: necessário renderizar cabelos humanos, http://tinyurl.com/29lhtw água e fogo com qualidade hollywoodia- na, simplesmente não há alternativa ao [2] Photorealistic RenderMan: Figura 7 O fogo cria cenas dramáti- https://renderman. cas. Além da água, esse é caro produto proprietário. pixar.com/ outro campo de aplicação Além de exigir suporte 3D por parte para a poderosa simulação do hardware e Openmotiv, o Maya, [3] 3ds Max: de fluidos do Maya. que é disponibilizado na forma de http://tinyurl.com/2eoafd RPMs separados para máquinas de [4] Blender: programa mais complexo simples- 32 e 64 bits, não tem qualquer outra http://www.blender.org/ mente lendo o arquivo de ajuda. exigência em sistemas Linux. Os artistas podem usar o Blender para Um PC comum é tudo de que se [5] Objetos infláveis no Maya: http://tinyurl.com/2v6p3b fazer boa parte do que o Maya Comple- precisa para editar uma cena. Numa te faz, apesar dos resultados talvez não máquina de testes, a renderização [6] Mental Images: 512404_210xserem146_327 tão bons.pdf quanto.Oct oOb desempenhoer 11, 2007 de15: imagens26:09 individuais com uma http://www.mentalimages.com/ 1 de 1 superior do Maya, contudo, traz um peso resolução de 1024x768 levou entre [7] Final Gathering: http:// substancial em seu preço, e é necessário alguns minutos e algumas horas, www.finalgathering.com/ ativar o software online antes de utilizá- com um processador de 3 GHz. Prepare-separaocompetitivomercadodeTI. FaçacursosdeCertificaçõesnoSenacSãoPaulo.

Parasedestacarnocompetitivomercadodetrabalho,aspessoasprecisam investirnasuaqualificaçãoprofissionaleseatualizarempormeiodeprogramas preparatóriosparaexamesdecertificaçõesemTI. OSenac São Paulo é um centro de treinamento oficial das principais empresas deTecnologia da Informação do mercado nacional e internacional.Ainstituição possui programas preparatórios para diversas certificações,nas áreas de Redes de Computadores,Infra-estrutura,Desenvolvimento de Sistemas, Aplicativos e Gestão emTecnologia da Informação.

Certificações OSenac São Paulotambém éAuthorized PrometricTestingCenter(APTC) e Pearson VUE Authorized Testing Center (PVTC). A instituição foi em TI selecionada pelas duas líderes mundiais em exames de certificação para oferecer as provas oficiais das principais empresas dos mercados de hardware,software e telecomunicações.

Mais informações: www.sp.senac.br/certificacoes - 0800 883 2000

Parceiros:

© Linux New Media do Brasil Editora Ltda. Load average é bom? Conheça o stretch factor Como medir desempenho?

ANÁLISE O que significam aqueles valores de “load average” na saída de comandos como procinfo e uptime, e o que devemos fazer com eles? por Neil Gunther

Jean Scheijen - www.sxc.hu

maioria dos administradores ➥ 0.02, 0.01, 0.00 apenas que esses valores representam de sistemas Linux estão fami- as médias de carga nos últimos 1, 5 Aliarizados com aqueles três A métrica da carga média (load ave- e 15 minutos. Contudo, isso explica pequenos números que aparecem rage) está sempre incluída na saída de somente o motivo de haver três valo- em comandos de shell como procin- comandos como uptime. Enquanto os res, mas não o significado de carga, o fo, uptime, top e ruptime. O uptime, valores de load average são bem co- que nos impede de tentar imaginar o por exemplo, informa: nhecidos pelos administradores, seu que há de errado com o servidor, ou significado é pouco compreendido. A o que fazer para corrigir seu desem- 9:40am up 9 days, load average: página de manual do uptime informa penho. Este artigo analisa de perto a métrica usada pelo load average e 2.50 como usá-la. LAD_1 2.00 Experimentos

1.50 LAD_5 controlados Vamos começar com um pequeno ex- erage Av 1.00 perimento para demonstrar como os LAD_15 valores de load average respondem às Load LAD_15 LAD_5 mudanças na carga do sistema. Load 0.50 LAD_1 averages experimentais foram amos- tradas ao longo de um período de uma 0.00 hora (3600 segundos) numa máquina 0 500 1000 1500 2000 2500 3000 3500 4000 Linux monoprocessada ociosa. Esses Elapsed Time (s) testes consistiram em duas fases. Na Figura 1 Dados de load average (LAD) coletados numa plataforma Linux controlada primeira delas, dois jobs exigentes em por um período de uma hora. LAD 1, LAD 5 e LAD 15 são as métricas de um, CPU foram iniciados como processo cinco e quinze minutos, respectivamente. em segundo plano, e rodaram durante

64 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Load Average | ANÁLISE

2100 segundos. Nesse momento, os primária que calcula a métrica do Nesse arquivo, pode-se ver que, dois processos foram parados simul- load average. Essencialmente, a ro- matematicamente, CALC_LOAD depende taneamente, mas as medições de tina verifica se o período de amostra- do número de processos ativos e, ob- load average continuaram por mais gem já expirou, reinicia o contador viamente, da carga, além da medição 1500 segundos. O exemplo 1 contém de amostragem e chama a subrotina imediatamente anterior da carga. o script Perl que foi usado para amos- CALC_LOAD para calcular cada uma No Linux, um processo pode estar trar os valores a cada cinco segundos das métricas de um, cinco e quinze em um de aproximadamente meia usando o comando uptime. minutos. O intervalo de amostragem dúzia de processos, dos quais em exe- Um programa em C chamado usado para LOAD_FREQ é 5*HZ. Qual o cução (running), executável (runnable, burncpu.c foi criado para desperdiçar comprimento desse intervalo? R no comando ps) e dormente (sle- ciclos de CPU. A saída do top mostra Toda plataforma Linux possui eping, S no comando ps) são os três que as duas instâncias do burncpu um relógio implementado em estados primários. Cada métrica de aparecem nas duas primeiras colo- hardware. Esse relógio em hard- load average é baseada no número cações em relação ao consumo de ware tem taxa constante de batidas, total de processos que estão: CPU durante o período de execução à qual o sistema é sincronizado. ➧ executáveis e aguardando na fila do getload (tabela 1). Para tornar pública essa taxa de de execução do escalonador; A figura 1 mostra que o load average batidas, o relógio envia uma in- ➧ atualmente em execução num de um minuto atinge o valor de 2.0 após terrupção para o kernel a cada processador. 300 segundos de teste; o load average batida. O intervalo real entre as Na terminologia usada no kernel, de cinco minutos atinge 2.0 por volta batidas é diferente. A maioria dos o total dos processos ativos é chama- dos 1200 segundos; o load average de sistemas Linux possui um interva- do de fila (queue). Ela literalmente 15 minutos chegaria a 2.0 em aproxi- lo de batida de CPU configurado significa não apenas os processos na madamente 4500 segundos, mas os para 10 milissegundos. fila de espera (a chamada fila de exe- processos foram mortos na marca de A definição específica da taxa de cução, ou run queue), como também 2100 segundos. batida está contida numa constan- aqueles atualmente sendo servidos Os leitores com conhecimentos em te chamada de HZ, mantida por um (ou seja, em execução). engenharia elétrica notarão imediata- arquivo de cabeçalho específico mente a semelhança da curva da figu- para cada sistema, chamado param. ra 1 e as de voltagem produzidas pelo h. No código-fonte do Linux usa- Stretch factor carregamento e descarregamento de do neste artigo, há o valor 100 para Inevitavelmente, surge a questão: o um circuito RC (resistor-capacitor). plataformas Intel em lxr.linux.no/ que é um bom valor de load avera- Note que a carga máxima durante o source/include/asm-i386/param.h, e ge? Se analisarmos atentamente o teste é equivalente ao número de pro- em plataformas SPARC o arquivo código-fonte do kernel, veremos que cessos exigentes de CPU rodando no é lxr.linux.no/source/include/asm- esse valor tem relação com a movi- momento das medições. sparc/param.h. mentação de processos na fila de Os picos na curva do alto são resul- A função calc_load é chamada execução, e então podemos converter tado dos vários daemons “acordando” numa freqüência definida pela taxa essa pergunta para “qual deve ser o temporariamente e em pouco tempo de batidas – uma vez a cada cinco se- comprimento da minha fila?” voltando a “dormir”. gundos (não cinco vezes por segundo, Filas longas correspondem a tem- O próximo objetivo é explicar por como muitos pensam). Esse período pos de resposta dilatados, então é a que os dados de load average desses de amostragem de cinco segundos é métrica de tempo de resposta que experimentos exibem as caracte- independente dos intervalos de um, realmente deve receber atenção. rísticas vistas na figura 1. Para isso, cinco e quinze minutos. Uma conseqüência é que uma fila foi necessário explorar o código do longa pode causar “tempos de res- kernel Linux 2.6.20.1[1] que calcula posta ruins”, mas isso depende do esses valores. Revelação que significa “ruim”. Na maioria A função calc_load do kernel Linux das ferramentas de gerenciamento refere-se à macro C chamada CALC_ de desempenho há uma desconexão Código do kernel LOAD, que faz o verdadeiro trabalho entre o comprimento medido da fila Examinando o código-fonte do esca- de calcular o load average. CALC_LOAD de execução e os tempos de resposta lonador do kernel[2], encontramos é definida em http://lxr.linux.no/ percebidos pelo usuário. Outro pro- a função calc_load. Essa é a rotina source/include/linux/sched.h. blema é que o comprimento da fila

Linux Magazine #36 | Novembro de 2007 65 © Linux New Media do Brasil Editora Ltda. ANÁLISE | Load Average

Tabela 1: Saída do comando top

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 20048 neil 25 0 256 256 212 R 30.6 0.0 0:32 0 burncpu 20046 neil 25 0 256 256 212 R 29.3 0.0 0:32 0 burncpu 15709 mir 24 0 9656 9656 4168 R 25.6 1.8 45:32 0 kscience.kss 1248 root 15 0 10M 10M 1024 S 9.5 2.1 368:25 0 X 20057 neil 16 0 1068 1068 808 R 2.3 0.2 0:01 0 top 1567 mir 15 0 38 M 38M 14260 S 1.3 7.6 40:10 0 mozilla-bin

relativo ao número Q Exemplo 1: Amostras de load average f = médio de requisições mp 01 #! /usr/bin/perl -w já em execução. Ele é 02 $intervalo_amostragem = 5; #segundos 03 expresso em múltiplos Sabemos que, numa máquina 04 # Usar CPU ao maximo ... de unidades de servi- monoprocessada, m = 1, e podemos 05 system(“./burncpu amp;”); ço. Um stretch factor supor Q = 2 para o load average 06 system(“./burncpu &”); de 1, então, significa de um minuto, e p = 1 porque a 07 08 # Monitorar para sempre o load average via que nenhum processo tarefa é totalmente dependente 09 # uptime e separar os campos por tabs precisa esperar. do processador. Substituindo es- 10 # para uso em programas de planilhas. O que torna o stre- ses valores na equação, obtem-se 11 while (1) { 12 @uptime = split (/ /, ‘uptime’); tch factor realmente um stretch factor de f = 2. Esse 13 foreach $up (@uptime) { útil é que ele pode ser resultado informa que o tempo 14 # coletar a hora facilmente compara- esperado para qualquer processo 15 if ($up =~ m/(\d\d:\d\d:\d\ d)/) { do com objetivos de ser finalizado é de dois períodos 16 print “$1\t”; 17 } nível de serviço. Esses de serviço. 18 # coletar as tres metricas de carga objetibos geralmen- Note que não precisamos saber 19 if ($up =~ m/(\d{1,}\.\d\d)/){ te são expressos em quanto vale o período de serviço. 20 print “$1\t”; certos tipos de unida- Em nosso caso, o stretch factor e 21 } 22 } des de negócios (por o valor de load average são iguais, 23 print “\n”; exemplo, cotações por pois os processos estão sendo exe- 24 sleep ($intervalo_amostragem); hora é uma unidade cutados num único processador, e 25 } de trabalho comum dependem primordialmente apenas na área de seguros). O da CPU. A seguir, é descrito um é uma medida absoluta, enquanto o nível de serviço esperado é chamado cenário de uso do stretch factor em que realmente precisamos é uma me- de service level objective, ou SLO, situações reais. dida relativa de desempenho. Até as e é expressado como múltiplos da palavras “bom” e “ruim” são relativas. unidade de serviço relevante. Um Essa medida relativa é chamada de SLO pode ser documentado como Anti-spam stretch factor (fator de alongamento), “O tempo médio de resposta para o Todos os principais serviços de e mede o comprimento médio da fila usuário não deve exceder 15 unidades email utilizam analisadores de de serviço entre as horas de spam. Uma configuração típica Tabela 2: Definições do stretch pico de 10:00 e 14:00”. pode consistir em um conjunto de factor Isso equivale a estabelecer servidores especializados, cada um que o SLO não deve exceder analisando diversas mensagens com um stretch factor de 15. uma ferramenta de filtragem como m Número de processadores ou núcleos Usando os símbolos defi- o SpamAssassin[3]. Um portal web Q Load average medido nidos na tabela 2, o stretch bastante conhecido e com alto trá- p Utilização do processador medida factor f pode ser calculado fego tem algo como 100 servidores, como a razão: cada um contendo dois processado-

66 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Load Average | ANÁLISE

Tabela 3: Estatísticas Exemplo 2: PDQ para o datacenter anti-spam diárias do servidor 01 #!/usr/bin/env python import pdq anti-spam 02 # Parametros de desempenho medidos 03 cpusPorServidor = 4 Número de CPUs 4 04 emailsProcessados = 2376 # emails por hora 05 tempoVarrendo = 6.0 # segundos por email Spam detectado 33901 06 pdq.Init(“Spam Farm Model”) 07 # A unidade de tempo eh o SEGUNDO ... Não-spam aceito 23123 08 nstreams = pdq.CreateOpen(“Email”, float(emailsProcessados)/3600) Emails processados 57024 09 nnodes = pdq.CreateNode(“lataSpam”, int(cpusPorServidor), pdq.MSQ) 10 pdq.SetDemand(“lataSpam”, “Email”, tempoVarrendo) Emails por hora 2376 11 pdq.Solve(pdq.CANON) 12 pdq.Report() Por CPU/hora 594 CPU usada(%) 99 A tabela 3 mostra que o tempo duz um relatório que contém a saída Segundos por email 6 médio para varrer um email (S) é mostrada no exemplo 3. Load average 97.36 de seis segundos. O stretch factor predito pelo Então, um stretch factor de 25 PDQ é um pouco maior do que res de núcleo duplo, todos varrendo períodos de serviço implica a du- aquele calculado pela equação emails ininterruptamente. As esta- ração de 25 x 6 = 150 segundos ou que mostramos acima. Para enten- tísticas da filtragem diária de spam 2,5 minutos a partir da chegada do der o motivo disso, é necessário são mostradas na tabela 3. email no portal até sua entrega ao examinar a seção do relatório do Um balanceador de carga foi devido destinatário. PDQ que apresenta as informa- usado para distribuir o trabalho pe- Um valor absoluto de Q = 97,36 ções de desempenho do servidor los servidores. A eficácia do balan- para o load average nos diz muito (exemplo 4). ceador foi monitorada usando load pouco. O stretch factor relativo, no Dada a taxa a que a carga che- averages de um minuto. A amostra entanto, informa quantos períodos ga (2376 emails por hora), cada desses valores de metade dos servido- de serviço a tarefa de filtragem de CPU deve estar 99% ocupada. res revela um desequilíbrio de carga spam está custando. Essa utilização é maior do que no datacenter. Quanto à questão sobre um load o verificado nos servidores reais, Um administrador de sistemas average de 97,36 ser desejável, isso de- devido ao desequilíbrio da carga. poderia perguntar: pende dos objetivos de negócio acorda- O PDQ espera um balanceamento ➧ Por que há um desequilíbrio de dos. Pelo menos, agora essas questões de carga ideal por todos os servido- carga? podem ser resolvidas quantitativamente, res, então há mais trabalho sendo ➧ A maioria dos servidores está em vez de especulativamente. exercido. O load average predito sobrecarregada devido ao de- Também é possível usar os dados (Queue length, no exemplo 4), sequilíbrio? da tabela 3 para modelar o desem- está mais próximo de 100 emails; ➧ O load average de Q = 97,36 penho usando uma ferramenta de portanto, o stretch factor de 25,45 emails é desejável? predição de desempenho como o predito é um pouco maior que o ➧ Qual deveria ser o desempenho PDQ (veja o quadro 1). valor calculado de 24,59. real do servidor? O modelo de servidor anti-spam Ambos os valores de stretch fac- ➧ Quantos servidores a mais no PyDQ (PDQ em Python) é mos- tor foram considerados aceitáveis precisam ser colocados no trado no exemplo 2. Executá-lo pro- sob condições de pico de carga. datacenter no próximo ano para manter o desempenho Exemplo 3: Saída do PDQ para desempenho do sistema atual de varredura de emails sob uma carga maior? 01 ****** SYSTEM Performance ******* 02 Metric Value Unit 03 –– –-- –- Substituindo os valores na equação, 04 Workload: “Email” chegamos ao stretch factor: 05 Number in system 100.7726 Trans 97,36 06 Mean throughput 0.6600 Trans/Sec f = = 24.59 07 Response time 152.6858 Sec 4•, 0 99 08 Stretch factor 25.4476

Linux Magazine #36 | Novembro de 2007 67 © Linux New Media do Brasil Editora Ltda. ANÁLISE | Load Average

Como todos os servidores estão Exemplo 4: Saída do PDQ para desempenho dos recursos quase saturados, um recurso é atu- alizá-los com CPUs mais rápidas 01 ****** RESOURCE Performance ******* 02 Metric Resource Work Value Unit ou, mais provavelmente, adquirir 03 –– ––-- –- –-- –- novos servidores quadriprocessados 04 Throughput spamCan Email 0.0660 Trans/Sec para lidar com a carga adicional es- 05 Utilization spamCan Email 99.0000 Percent perada. O PDQ ajuda a dimensio- 06 Queue length spamCan Email 100.7726 Trans 07 Waiting line spamCan Email 96.8126 Trans nar o número de novos servidores, 08 Waiting time spamCan Email 146.6858 Sec com base nos stretch factors atual 09 Residence time spamCan Email 152.6858 Sec e esperado. Claramente, o stretch factor oferece um indicador mais Ao rodar o exemplo 5, a fi la de Como o período médio de servi- apurado de gerenciamento de de- espera tem comprimento essencial- ço é relativamente grande, a taxa de sempenho do que os valores abso- mente zero, e todas as quatro CPUs requisições é correspondentemente lutos de load average. estão ocupadas, embora apenas 25% pequena, para que nenhuma fi la de utilizadas. Se verifi cássemos as esta- espera se forme. Isso signifi ca que a tísticas de CPU enquanto o sistema utilização do processador em 25% Triturando rodava, veríamos que, na realidade, também é baixa – a longo prazo. Pode-se usar um modelo semelhante ao cada CPU estava 100% ocupada. Observar o sistema apenas alguns PyDQ para ver o que signifi ca não ter Para entender o que o PDQ nos minutos enquanto ele tritura dez horas uma fi la de espera com todas as CPUs diz, é necessário examinar a seção de trabalho com dados de exploração ocupadas. Nesse caso, cada processo do System Performance do relatório do de petróleo corresponde a uma foto- Linux leva dez horas para terminar, pois PDQ ( exemplo 9). grafi a instantânea do sistema, não a está transformando dados de exploração O stretch factor é 1 (período de uma visão de longo prazo. de petróleo para posterior análise por ge- serviço) porque não há fi la de es- Esses dois exemplos de stretch factor ofísicos. O modelo correspondente do pera. Cada trabalho leva dez horas envolvem cargas de trabalho limitadas PyDQ é mostrado no exemplo 5. para terminar, então a resposta é de pela CPU. Cargas limitadas por I/O aproximadamente dez horas. (seja de disco ou de rede) tenderão O motivo disso pa- a exibir load averages menores que Quadro 1: PDQ em Python recer um pouco es- tarefas limitadas pela CPU, caso esses tranho é que o PDQ processos sejam suspensos ou ador- PDQ (do inglês Pretty Damn Quick , “rápido pra caramba”) é uma realiza suas estimativas meçam à espera de dados. Nesse es- ferramenta de modelagem para analisar as características do de- com base num com- tado, eles não estão nem executáveis sempenho de recursos computacionais, como processadores, portamento estável nem em execução, e portanto não discos e um conjunto de processos que fazem requisições desses (ou seja, como o siste- contribuem para os cálculos de load recursos, por exemplo. Um modelo PDQ é analisado com algo- ma se comporta a lon- average. Da mesma forma, quando ritmos baseados na teoria de enfi leiramento (queueing ). A versão go prazo). Com um o driver de I/O do Linux está traba- atual facilita a criação e análise de modelos de desempenho em C , tempo de serviço de lhando, ele roda em modo de kernel Perl , Python , Java e PHP . dez horas, realmente numa CPU, e também não contribui As funções de PDQ do Python usadas nessa seção são: é preciso observar o sis- para o cálculo do load average. tema por muito mais O valor de Q mede o número to- ➧ inicializa as variáveis PDQ internas; pdq.Init() tempo que isso para tal de requisições; tanto em espera ➧ pdq.CreateOpen() cria uma carga de rede; verifi car seu compor- quanto em execução. Ele não tem tamento a longo pra- muito signifi cado porque se trata de ➧ pdq.CreateNode() cria um servidor; zo. Muito mais tempo, um valor absoluto. Todavia, combi- ➧ pdq.SetDemand() estabelece o tempo de serviço de carga nesse caso, signifi ca nando-o ao número de processadores de rede no recurso do servidor; uma ordem de 100 ( m) e sua carga média aferida ( p), o horas ou mais. Nâo é stretch factor f consegue oferecer ➧ calcula a métrica de desempenho; pdq.Solve() realmente necessário uma métrica melhor para o geren- ➧ pdq.Report() gera um relatório genérico de desempenho. fazer isso, mas o PDQ ciamento de desempenho de servi- nos informa como se- dores SMP (multiprocessados ou Mais informações sobre o PDQ estão disponíveis em sua bi- ria o panorama se o com múltiplos núcleos), pois é um blioteca online [4]. fi zéssemos. indicador relativode desempenho

68 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Load Average | ANÁLISE

Exemplo 5: Modelo do PyDQ para gerenciar o objetivo de nível de serviço dos aplicativos em servidores 01 #!/usr/bin/env python import pdq com múltiplos núcleos. ■ 02 processadores = 4 # Igual ao exemplo do anti-spam 03 taxaChegada = 0.099 # Tarefas por hora (poucas mensagens) 04 tempoTrituracao = 10.0 # Horas (tempo de servico bem longo) Mais informações 05 06 pdq.Init(“ORCA LA Model”) [1] Código-fonte do Linux 07 s = pdq.CreateOpen(“Crunch”, taxaChegada) 2.6.20.1: 08 n = pdq.CreateNode(“HPCnode”, int(processadores), pdq.MSQ) 09 pdq.SetDemand(“HPCnode”, “Crunch”, tempoTrituracao) http://lxr.linux.no/source/ 10 pdq.SetWUnit(“Jobs”) [2] Código do escalonador do 11 pdq.SetTUnit(“Hour”) 12 pdq.Solve(pdq.CANON) Linux: http://lxr.linux. 13 pdq.Report() no/source/kernel/timer.c [3] SpamAssassin: http:// spanassassin.apache.org/ que pode ser diretamente comparado se mostrava há um, cinco e 15 mi- com SLOs estabelecidos. nutos. Comparada às capacidades de [4] Biblioteca PDQ: http://www. visualização gráfi ca dos dados, essa perfdynamics.com/Tools técnica de representação de dados Conclusão parece antiquada. Na verdade, o load Sobre o autor A carga média fornece informações average é uma das formas mais anti- sobre a tendência de crescimento da gas de instrumentação de sistemas Neil Gunther é consultor com renome inter- nacional, e fundou a empresa Performance fi la de execuçaõ, que é o motivo de operacionais, datando de 1965. Dynamics após trabalhar na NASA, no PARC haver três métricas. Cada métrica Este artigo apresentou o stretch fac- da Xerox e na Pyramid/Siemens Technolo- gy. Neil também é membro das instituições captura informações de tendência tor como uma forma mais adequada AMS, APS, ACM, CMG, IEEE e INFORMS. da fi la de execução conforme ela para usar os dados de load average

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

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

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

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

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

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

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

Linux Magazine #36 | Novembro de 2007 69 © Linux New Media do Brasil Editora Ltda.

LPI.indd 1 26.10.07 14:06:08 Análise da novíssima versão do Metasys Mais que Educação

Escolhida pela Intel – maior fabricante de processadores do mundo – para equipar o

ANÁLISE Classmate PC, fabricado pela Positivo, essa distribuição Linux sobe nos ombros do gigante OpenSUSE, defendendo as bandeiras da estabilidade e da facilidade para o usuário. por Tadeu Carmona

sanja gjenero - www.sxc.hu

a edição passada da Linux O Metasys Desktop 2.1, nova ver- Continuando no caminho da ob- Magazine (n. 35, Outu- são do sistema, voltada para o uso em viedade, é conveniente que você N bro de 2007) testamos o desktops, é fortemente baseada no configure o Setup da BIOS de seu Classmate PC em sua versão tu- OpenSUSE. Possui, no entanto, uma computador para que a primeira piniquim, fabricada pela Positivo. infinidade de retoques que acrescentam opção de inicialização seja via CD- O pequeno laptop, voltado para delineamento ao sistema. Tradução ROM ou qualquer outro disco ópti- projetos de inclusão digital dentro correta para o português do Brasil, por co. A seguir, basta inserir o DVD de das salas de aula, agradou nossa exemplo, é um detalhe que faz falta instalação no leitor. equipe da Redação – talvez porque em algumas das grandes distribuições A tela inicial do Metasys, assim ele se parece com um brinquedo e que aqui se encontra presente. como o restante do processo de ins- com muitos recursos. Por fim, as talação, segue o estilo consagrado repercussões foram tão boas que pelo Suse e por sua vertente livre. Na resolvemos analisar o Metasys, a Instalação tela inicial (figura 1), obviamente ve- distribuição Linux que dá vida ao A instalação do Metasys Desktop pode mos o logo da distribuição nacional, Classmate PC. ser feita a partir de um DVD de insta- e não do camaleão. Além disso, após lação – no Classmate clicar na opção Installation para ini- da Positivo uma instala- ciar a instalação via DVD, passando ção do Metasys já está novamente por um splash com o logo presente na memória e cores da Metasys, somos levados à Flash do laptop. Os configuração inicial do OpenSUSE. assinantes da Linux De pasmar: a opção Português brasi- Magazine que opta- leiro funciona, e muda a instalação ram por assinar a revista imediatamente para o nosso idioma com o DVD receberão, – e com ortografia e sintaxe com um com exclusividade, o índice de acertos acima do comum. Metasys Desktop nes- Ponto para a Metasys! ta edição. Afora isso, é De resto, o OpenSUSE leva a ins- possível obter o sistema talação pela mão. Para exemplificar: por meio da promoção se seu computador não possui os 256 especial da qual vocie MB de memória RAM necessários encontra detalhes nesta para carregamento do YaST – o “Cen- Figura 1 O camaleão sorridente deu lugar ao visual padrão edição da Linux Ma- tro de Controle” do Metasys –, que da Metasys. gazine. é usado no processo de inicialização

70 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Metasys Linux 2.1 | ANÁLISE

para realizar as configurações iniciais, espaço (não há espaço o Metasys interrompe a instalação e no servidor para um ou manda que seja acrescentado mais vários backups, caso es- espaço à partição e memória swap tejamos em uma rede). (figura 2). “Susismo” dos bons... Nesses casos, deve-se E, novamente em bom português evitar usar o particiona- do Brasil, o YaST impera no restante mento padrão proposto da instalação, o que não é ruim de pelo YaST, partindo maneira alguma. Em um desktop no para uma solução per- qual o Metasys Desktop será instalado sonalizada. em modo standalone, basta selecionar Ao clicar no botão a aba Visão Geral e clicar em Aceitar. Mudar... e em seguida Por padrão, o Metasys cria três partições: na opção Particiona- uma partição swap de cerca de 500 MB, mento, é aberta a ja- uma partição raiz (/) e uma partição nela Particionamento para arquivos e configurações do usu- Sugerido. Basta fazer Figura 3 O sistema de menus personalizado do Metasys ajuda ário (/home) separada fisicamente das a soma: se o montan- o usuário no uso cotidiano do desktop. demais. Essas configurações e muitas te total do espaço das outras podem ser facilmente alteradas partições for igual ao tamanho físico Metasys Desktop agora e clique acessando-se o menu Mudar..., tanto do HD, obviamente as partições ante- em Prosseguir. Fazer o registro é no modo de Visão Geral quanto no de riores serão apagadas, já que nada fica necessário para que se possa rece- Especialista, que mostra configurações de fora do cálculo. Cuidado! ber as atualizações de segurança e mais avançadas do sistema. O ideal é selecionar a opção Particio- de programas. Na página que será namento Personalizado, seguindo logo aberta em seu navegador, clique no depois as instruções do YaST – está tudo link clique aqui. Particionamento em português do Brasil. Aqui você pode Preencha os campos da tela seguin- Uma atenção especial deve ser dada ao escolher manualmente quais partições te com um endereço de email válido e se realizar o particionamento do disco deseja criar e excluir, além de poder senha. No campo Número de registro, rígido, com o Metasys, em discos que já escolher o tamanho e sistema de ar- insira o número de registro presente disponham de partições com arquivos quivos usado em cada uma delas. Após no Cartão de Registro de Software do pré-existentes. Apesar da recomendação isso, já é possível começar a instalação produto. Assinantes da Linux Maga- padrão sempre ser a de fazer o backup propriamente dita (figura 3). zine com DVD receberão esse cartão de seus dados pré-existentes antes de de registro (procure nele pelo Número instalar um novo sistema, isso nem de série do produto) juntamente com sempre é possível, seja por limitações Tudo funciona a mídia da distribuição. tecnológicas (não haver um outro HD Após o reconhecimento de hardware Após uma nova página de cadastro ou um pen drive disponíveis para fa- – um dos pontos fortes do Suse, capaz de dados (não podia ser mais fácil?) zer esse backup, por exemplo) ou de de reconhecer até os terríveis winmo- clique no botão Completar Ativação. dems que infestam as Um dos grandes diferenciais do Metasys placas-mãe com tudo é o seu sistema de menus amigáveis, onboard e dispositivos que podem agilizar muito o uso diário de acesso a Bluetooth do desktop. Além da tradicional sub- em laptops, e confi- menu Aplicativos, temos o sub-menu gurações extras – já Computador, que traz até o usuário o temos acesso ao Me- Centro de Controle do sistema, além tasys Desktop. do ícone Informações do Sistema, que Ao ser pergunta- traz um resumo completo dos com- do por uma tela com ponentes do computador (figura 3).O a inscrição Atenção sub-menu Histórico mostra ao usuário sobre o número de as últimas aplicações por ele utilizadas registro, clique em além, óbvio, de atalhos para acessá-las Figura 2 O Suse se revela nos bastidores... Fazer o registro do novamente. ■

Linux Magazine #36 | Novembro de 2007 71 © Linux New Media do Brasil Editora Ltda. Uma introdução ao sistema de distribuição Cmake De volta à programação Confi gurar a compilação de um programa com as veneráveis Autotools às vezes é mais complexo que o próprio código do programa. Conheça os méritos da alternativa Cmake. por Alexander Neundorf PROGRAMAÇÃO

suários Linux estão acostu- utilizam esse sistema, tanto comerciais corpo humano. A ferramenta reúne mados há anos às já tradicio- quanto livres. O maior e mais conheci- a funcionalidade dos diversos com- Unais etapas de compilação e do atualmente é o KDE 4, composto ponentes das Autotools: instalação de softwares: ./configure; por milhões de linhas de código [1] e ➧ Geração de makefi les ; make; make install. As responsáveis compilável, hoje, em todas as princi- ➧ Suporte a diversos compiladores por isso são as Autotools, um conjun- pais plataformas (Linux, *BSD, Mac em diferentes plataformas; to de scripts de shell, m4 e Perl que OS X, Windows® com Mingw, assim ➧ Suporte à introspecção de sis- auxiliam a distribuição de softwares como compiladores Microsoft). Outros temas; de forma portável, que funciona em projetos são o Scribus, o interpretador ➧ Suporte à extensão por macros. diversos sabores de Unix. Chicken Scheme , o jogo de estratégia A única condição para o emprego Todavia, para muitos desenvolvedores, Boson, o Plplot e o fork do Debian para do Cmake é um compilador C++. as Autotools são uma grande barreira, em as CDR-Tools. Além disso, o Cmake está Por isso ele também funciona sem função da grande quantidade de progra- em avaliação nos projetos Wireshark , problemas, por exemplo, sob o Win- mas disponíveis. De acordo com o que Lya , Open Wengo e Libgphoto. dows com MS Visual Studio . Porém, diz um dos desenvolvedores do Cmake , o Cmake não é apenas um gerador de Bill Hoffman, ele se apresenta como um makefi les; ele gera também dados de sistema de distribuição alternativo para Multi-plataforma entrada para o sistema de distribuição mudar a forma de trabalho de todos os O Cross-platform Make (é isso que nativo da respectiva plataforma. desenvolvedores de software. Como signifi ca Cmake) está sob a licença Por isso, ele possibilita a geração exemplo, cita uma série de projetos que BSD, e é desenvolvido pela empre- de Makefi les e projetos do Kdevelop sa americana Kitware 3 em Unix, além de arquivos de pro- Exemplo 1: Compilação Inc. [2] , especializada jeto Xcode em Mac OS, makefi les em softwares de visu- do Windows para Cygwin, Mingw, 01 ~/src/olamundo $ make 02 Scanning dependencies of target olamundo alização para medici- Msys, Borland e Microsoft Make, 03 [100%] Building C object CMakeFiles/ola.dir/main.o na. O Cmake nasceu assim como para os IDEs da Micro- 04 Linking C executable olamundo próximo ao Insight soft a partir do Visual Studio 6. Adi- 05 [100%] Built target olamundo Segmentation and Re- cionalmente, o Cmake permite, em 06 ~/src/olamundo $ ./olamundo 07 Ola mundo! gistration Toolkit [3] Windows e Mac OS, que os desenvol- para visualização do vedores continuem trabalhando com

72 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Cmake | PROGRAMAÇÃO

os ambientes de desenvolvimento a blioteca. Os exemplos 2 a 4 mostram o Exemplo 2: myproj/CMakeLists.txt que estão acostumados, evitando o conteúdo de cada CMakeLists.txt. uso da linha de comando. O arquivo no diretório raiz refere- 01 project(FooProject) Para garantir a segurança, o Cmake se aos subdiretórios lib/ e app/, que 02 add_subdirectory(lib) 03 add_subdirectory(app) oferece suporte à integração de testes devem conter, cada um, um arquivo de unidade, nightly builds e outras fer- CMakeLists.txt. O Cmake ignora qual- ramentas como Valgrind[4] e KWSty- quer subdiretório sem referência. Exemplo 3: myproj/lib/ le[5]. Os resultados são colocados em CMakeLists.txt um servidor central Dart[6]. 01 set(libSrcs core.c util.c) Sintaxe 02 O comando set() (linha 1 do exemplo 03 if (UNIX) Olá mundo 3) atribui um valor a uma variável. 04 set(libSrcs ${libSrcs} unixtool.c) O Cmake lê arquivos com o nome No exemplo, libSrcs é uma lista 05 else (UNIX) 06 set(libSrcs ${libSrcs} wintool.c) CMakeLists.txt (atenção às letras mai- com os elementos core.c e util.c. 07 endif (UNIX) úsculas e minúsculas) e a partir daí gera O comando não diferencia maiús- 08 os makefiles desejados, referentes aos culas e minúsculas, ao contrário das 09 add_library(util SHARED ${libSrcs}) 10 arquivos de projeto. Num exemplo de variáveis e argumentos. 11 install(TARGETS util DESTINATION lib) Olá mundo, um arquivo main.c contendo O Cmake também usa if para o código-fonte deverá ser compilado e controlar o fluxo de dados. Os com- linkado. O CMakeLists.txt correspon- plementos else e endif devem incluir Bibliotecas dente terá a seguinte aparência: a mesma palavra-chave do if, o que O comando install() (exemplo 3) faz facilita a leitura do script. o Cmake gerar rotinas de instalação add_executable(olamundo main.c) Note que a linha 4 do exemplo 3, para o alvo util e mover seu resultado ao realizar a compilação em sistemas (a Libutil, no caso) para o diretório lib/ O comando add_executable() sig- Unix, une o arquivo unixtool.c à lis- relativo ao caminho de instalação padrão nifica que main.c deverá gerar um ta libSrcs. A expressão ${libSercs} (no Linux, geralmente /usr/local/). executável olamundo. Em plataformas retorna o valor da variável, e então Depois de processar esse CMake- Windows, o executável receberá o a linha 4 é transformada em: Lists.txt, o Cmake volta ao CMake- nome olamundo.exe enquanto em Lists.txt que o chamou (exemplo 2) Unix, será olamundo. set(libSrcs core.c util.c e prossegue com o processamento, Como argumento, o Cmake espera ➥unixtool.c) entrando em myproj/app/CMakeLists. o diretório onde se encontram o có- txt (exemplo 4). digo-fonte e o arquivo CMakeLists.txt. Além disso, no exemplo 3, add_li- Com isso, basta um compilador para brary() acrescenta ao projeto uma realizar o trabalho (exemplo 1). biblioteca compartilhada. A sintaxe Agora vejamos um projeto mais é semelhante à de add_executable(): complexo, composto por uma biblio- primeiro o nome (lógico) da bibliote- teca e um programa que a utiliza. ca, depois os arquivos com os fontes, Os fontes estão organizados como com o auxílio da variável libSrcs. O na figura 1. No diretório myproj/ argumento SHARED informa tratar-se lib/ ficam os arquivos core.c, util. de uma biblioteca compartilhada; c e – dependendo da plataforma caso contrário, o Cmake gera uma – unixtool.c ou wintool.c, além da biblioteca estática. biblioteca compartilhada libmyutils. Assim como em add_executable, so. No diretório myproj/app/ ficam os as bibliotecas recebem as extensões arquivos main.cpp e process.cpp, que corretas para a plataforma: .so em gerarão o programa fooapp. Unix e Linux, .dylib em MacOS X Na compilação de fooapp, o com- e .dll em Windows. Além disso, os pilador encontra os cabeçalhos core. prefixos e sufixos também são acres- h e util.h, e linka o programa myapp à centados automaticamente; nos arqui- Figura 1 A árvore de diretórios do projeto de biblioteca libmyutil.so. Em seguida, vos do Cmake consta sempre apenas exemplo com três arquivos de proje- o Cmake instala o programa e a bi- o nome lógico da biblioteca. to CMakeLists.txt.

Linux Magazine #36 | Novembro de 2007 73 © Linux New Media do Brasil Editora Ltda. PROGRAMAÇÃO | Cmake

Exemplo 4: myproj/app/ Exemplo 5: Compilação Out-of-source (1) CMakeLists.txt 01 ~/src $ mkdir myproj-build 01 include_directories(${CMAKE_SOURCE_ 02 ~/src/ $ cd myproj-build ➥DIR}/lib) 03 ~/src/myproj-build $ cmake ~/src/myproj 02 04 -- Check for working C compiler: /usr/bin/gcc 03 set(fooappSrcs main.cpp process. 05 -- Check for working C compiler: /usr/bin/gcc -- works cpp) 06 -- Check size of void* 04 add_executable(fooapp ${fooappSrcs}) 07 -- Check size of void* - done 05 08 -- Check for working CXX compiler: /usr/bin/c++ 06 target_link_libraries(fooapp util) 09 -- Check for working CXX compiler: /usr/bin/c++ -- works 07 10 -- Configuring done 08 install(TARGETS fooapp DESTINATION 11 -- Generating done ➥bin) 12 -- Build files have been written to: ~/src/myproj-build 13 ~/src/myproj-build $ make 14 [ 20%] Building C object lib/CMakeFiles/util.dir/core.o Agora, add_executable() gera o apli- 15 [ 40%] Building C object lib/CMakeFiles/util.dir/util.o cativo fooapp. No Cmake, o desenvolve- 16 [ 60%] Building C object lib/CMakeFiles/util.dir/unixtool.o 17 Linking C shared library libutil.so dor pode escolher livremente os nomes 18 [ 60%] Built target util das variáveis, diferente das Autotools. 19 Scanning dependencies of target fooapp Esse é um princípio fundamental do 20 [ 80%] Building CXX object app/CMakeFiles/fooapp.dir/main.o Cmake: nada é feito sem que o usuário 21 [100%] Building CXX object app/CMakeFiles/fooapp.dir/process.o 22 Linking CXX executable fooapp esteja ciente e não existem arquivos ou 23 [100%] Built target fooapp nomes de variáveis mágicos. O comando target_link_libraries determina quais bibliotecas são utiliza- diretório com os códigos-fonte, pode-se gura 2). O nome do projeto é dado das pelo alvo fooapp (util, no caso). O adicionar vários diretórios de compila- pelo comando project() (linha 1 do Cmake sabe que se trata dessa biblioteca, ção. Isso pode ser útil, por exemplo, para exemplo 2). e automaticamente se encarrega de: definir um destino para a compilação ➧ Compilar util antes de fooapp; final do programa e outro para a versão ➧ Linkar fooapp a util; de depuração. Variáveis ➧ Definir RPATH para que fooapp Para compilar o exemplo acima A variável CMAKE_SOURCE_DIR contém o utilize a biblioteca util; como Out-of-source (exemplo 5), cria- diretório raiz da árvore do código-fonte. ➧ Na instalação, adaptar RPATH ao se um diretório de compilação, e lá Além dessa, o Cmake usa as seguintes que o usuário determinar. se inicia o Cmake, com o diretório variáveis para navegar no código-fonte dos fontes como argumento. ou no diretório de compilação: Após a compilação, o comando make ➧ CMAKE_CURRENT_SOURCE_DIR, que In e Out-of-source install instala o software. O make help se encontra no diretório atual O procedimento tradicional de compi- oferece um panorama das opções. No na árvore do código-fonte; lação mostrado até agora se chama, no KDevelop, por exemplo, o diretório ➧ CMAKE_BINARY_DIR, que contém a Cmake, de In-source build ou “compi- de compilação myproj-build-2 abriga raiz do diretório de compilação lação de dentro do código”. Entretanto, os arquivos de projeto, e também é (análogo a CMAKE_SOURCE_DIR); além dessa forma, o Cmake também su- controlado pelo Cmake: ➧ CMAKE_CURRENT_BINARY_DIR , no porta a compilação “de fora” do código- subdiretório atual do diretó- fonte, ou Out-of-source build, na qual o $ cd myproj-build-2 rio de compilação (análogo a software não é compilado na árvore do $ cmake ~/src/myproj -GKDevelop3 CMAKE_CURRENT_SOURCE_DIR). código-fonte, mas sim em qualquer outro -- Check for working C compiler: / É importante sempre saber se diretório da preferência do usuário. ➥usr/bin/gcc estamos trabalhando no diretório O processo Out-of-source tem mais ... do código-fonte ou no diretório de vantagens: a árvore do código-fonte fica -- Build files have been written compilação. Em projetos Out-of-sour- mais limpa e clara e não é ocupada por ➥to: ~/src/myproj-build-2 ce, é necessário atentar para o fato arquivos-objeto ou outros intermediá- de que caminhos relativos sempre rios. Caso se deseje gerar o projeto in- O diretório de compilação contém, terão como base o atual (CMAKE_CUR- teiro novamente, pode-se simplesmente entre outros, o arquivo de projeto do RENT_SOURCE_DIR). Assim, o comando apagar o diretório de compilação. E no KDevelop FooProject.kdevelop (fi- add_executable(ola main.c), por exem-

74 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Cmake | PROGRAMAÇÃO

caminho completo, como ${CMAKE_CUR- RENT_BINARY_DIR}/generated.h. Um pequeno exemplo com apenas quatro arquivos CMakeLists.txt (figura 3) demonstra a função dessas variáveis. Cada um dos CMakeLists.txt exporta as quatro variáveis mencionadas. O conteúdo de src/cmakevars/CMake- Lists.txt, por exemplo, é:

message(STATUS “${CMAKE_SOURCE_ ➥DIR} ${CMAKE_CURRENT_SOURCE_DIR} ➥${CMAKE_BINARY_ DIR} ${CMAKE_ ➥CURRENT_BINARY_DIR}”) add_ ➥subdirectory(misc) add_ ➥subdirectory(app)

Os exemplos 6 e 7 comparam a Figura 2 KDevelop O ambiente de desenvolvimento do com o projeto gerado saída do Cmake nos usos In-source e Cmake pelo . Out-of-source. Em Out-of-source, os valores de BINARY_DIR são diferentes. Exemplo 6: Compilação Out-of-source (2) O princípio geral é que as variáveis 01 ~/src $ mkdir cmakevars-build *_SOURCE_DIR apontam sempre para a 02 ~/src $ cd cmakevars-build árvore do código-fonte e, por outro, 03 ~/src/cmakevars-build $ cmake ../cmakevars lado *_BINARY_DIR aponta sempre para 04 -- ~/src/cmakevars ~/src/cmakevars ~/src/cmakevars-build ~/src/ ➥cmakevars-build a estrutura do diretório de compilação. 05 -- ~/src/cmakevars ~/src/cmakevars/misc ~/src/cmakevars-build As variáveis CMAKE_CURRENT_* sempre ➥~/src/cmakevars-build/misc se referem ao subdiretório atual. 06 -- ~/src/cmakevars ~/src/cmakevars/misc/sub ~/src/cmakevars- ➥build ~/src/cmakevars-build/misc/sub 07 -- ~/src/cmakevars ~/src/cmakevars/app ~/src/cmakevars-build ~/ ➥src/cmakevars-build/app Bibliotecas externas 08 -- Configuring done Os exemplos dados até aqui produziram 09 -- Generating done 10 -- Build files have been written to: ~/src/tests/ca/cmakevars- bibliotecas e programas, mas não utiliza- ➥build ram bibliotecas externas que são sempre necessárias em projetos não triviais. Por exemplo, um software gráfico que traba- Exemplo 7: Compilação In-source lhe com fotos jpeg utiliza normalmente 01 ~/src/cmakevars $ cmake . a biblioteca Libjpeg e os cabeçalhos jpeg 02 -- ~/src/cmakevars ~/src/cmakevars ~/src/cmakevars ~/src/ correspondentes, que costumam estar em ➥cmakevars diretórios distintos em cada sistema. 03 -- ~/src/cmakevars ~/src/cmakevars/misc ~/src/cmakevars ~/src/ ➥cmakevars/misc Em sistemas diferentes, os cabeçalhos 04 -- ~/src/cmakevars ~/src/cmakevars/misc/sub ~/src/cmakevars ~/ e bibliotecas encontram-se em locais dis- ➥src/cmakevars/misc/sub tintos. O Cmake resolve esse problema 05 -- ~/src/cmakevars ~/src/cmakevars/app ~/src/cmakevars ~/src/ com o comando find_package: ➥cmakevars/app 06 -- Configuring done 07 -- Generating done find_package(JPEG REQUIRED) 08 -- Build files have been written to: ~/src/cmakevars include_directories(${JPEG_ ➥INCLUDE_DIR}) plo, corresponde ao arquivo ${CMAKE_ NARY_DIR ou no CMAKE_CURRENT_BINARY_ add_executable(jpegviewer main.cpp CURRENT_SOURCE_DIR}/main.c. DIR. Isso precisa ser feito nos comandos ➥viewer.cpp) Todos os arquivos de dados a serem configure_file(), file() e add_custom_ target_link_libraries(jpegviewer criados deverão ser gerados no CMAKE_BI- command(). Neles, será usado sempre o ➥${JPEG_LIBRARIES})

Linux Magazine #36 | Novembro de 2007 75 © Linux New Media do Brasil Editora Ltda. PROGRAMAÇÃO | Cmake

Exemplo 8: Geração de arquivos o script #cmakedefine é substituído por #define quando a respectiva variável é 01 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated.h TRUE, e por um #undef descomentado 02 COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/generated.h.source ${CMAKE_ se a variável for falsa. ➥CURRENT_BINARY_DIR}/generated.h 03 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generated.h.source ) Assim são gerados os cabeçalhos, que 04 descrevem precisamente as respectivas 05 add_executable(ola main.c ${CMAKE_CURRENT_BINARY_DIR}/generated.h) propriedades do sistema, permitindo a criação de programas portáveis. A Os nomes seguem um esquema con- instrução check_include_files() na- sistente, como por exemplo JPEG_IN- turalmente não é a única macro dis- CLUDE_DIR (ou FOO_INCLUDES) e JPEG_LI- ponibilizada pelo Cmake. Existem BRARIES (ou FOO_LIB e FOO_LIBS). macros para vários objetivos: examinar Caso seja encontrada a biblioteca o tamanho de variáveis, as opções do necessária, o FindJPEG.cmake atribui compilador e diversos outros fins. valor verdadeiro à variável JPEG_FOUND. Com ela, CMakeLists.txt pode saber se a libjpeg foi encontrada e, caso neces- Novos arquivos sário, compilar outros códigos-fonte do Um dos trabalhos consideráveis de um projeto atual. Se a biblioteca for exigida sistema de distribuição é, primeiramente, (palavra-chave REQUIRED), o processa- gerar novos arquivos no início do proces- Figura 3 A estrutura de dados de teste das mento é interrompido com um aviso so de compilação. Isso é necessário, por variáveis do Cmake possui apenas de erro, caso ela esteja ausente. exemplo, ao se usar o compilador Corba três arquivos de projeto. O Cmake ainda é capaz de realizar IDL, o compilador de metaobjetos moc outros testes muito interessantes, como para Qt, ou também com Flex e Bison. Esse comando faz com que o verificar a funcionalidade do cabeçalho Para demonstrar isso, basta um exemplo Cmake localize em seu diretório de stdio.h, por exemplo, através da com- trivial (exemplo 8), que gera um arquivo módulos de sistema um arquivo cha- pilação de um pequeno programa de (não portável) com o comando cp. O co- mado FindJPEG.cmake e o execute. Para testes. Novamente, o resultado desse mando add_custom_command() na linha 1 é cada pacote que pertença ao projeto, tipo de análise é atribuído a uma va- uma instrução que pode gerar o arquivo é necessário ter um arquivo de dados riável, no estilo HAVE_STDIO_H. generated.h especificado por OUTPUT. como Find.cmake. É lógico que os arquivos nunca Todos esses arquivos de dados obe- devem ser criados na árvore de có- decem ao mesmo esquema: tentam Cabeçalhos digo-fonte, mas sim no diretório de localizar os arquivos de biblioteca O comando configure_file() é usado compilação; a variável CMAKE_CUR- necessários e guardam os resultados em CMakeLists.txt para ler o arquivo RENT_BINARY_DIR cuida disso. em variáveis. Na maioria das vezes é config.h.in, executar substituições e O Cmake não é uma linguagem usada uma variável para os diretórios escrever o conteúdo modificado no de programação completa, contu- de inclusão e outra para as bibliotecas. arquivo ${CMAKE_CURRENT_BINARY_DIR}/ do s.uporta macros para aumentar config.h. A instrução configure_file() a portabilidade e a legibilidade. Os Exemplo 9: Macros definidas substitui todas as variáveis do Cmake, exemplos 9 e 10 mostram isso. As li- como números de versão, por exemplo, nhas 1 a 6 (exemplo 9) definem uma 01 macro(print_all_args _greeting) por seus valores corretos. Além disso, macro chamada print_all_args, que 02 message(STATUS “${_greeting}”) 03 foreach(_currentItem ${ARGN}) 04 message(STATUS “current item: Exemplo 10: Macros aplicadas ➥${_currentItem}”) 05 endforeach(_currentItem) 01 ~/src/macrotest$ cmake . 06 endmacro(print_all_args) 02 -- Ola mundo 07 03 -- current item: main.cpp 08 set(fooSrcs main.cpp widget.cpp 04 -- current item: widget.cpp ➥process.cpp) 05 -- current item: process.cpp 09 06 -- Configuring done 10 print_all_args(“Hallo Welt” 07 -- Generating done ➥${fooSrcs}) 08 -- Build files have been written to: ~/src/macrotest

76 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. ����� ��� ������� ��������� ��� �������� �������� �� ������ ����� � ��������� ����������

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

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

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

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

���� Figura 4 A interface curses ccmake editando variáveis de cache. Com ela, é simples alterar a configuração do projeto com Cmake. ��� �������� ���� ��������� ���� ����������� ��� espera ao menos um argumento Quem estiver começando agora greeting. Se for chamada com mais uma carreira de programador deve argumentos, a variável especial ARGN considerar seriamente o aprendizado �������� ����� �������� �� auxilia seu acesso (linhas 3 a 5). A do Cmake, talvez até em detrimento ���������� �� ����� ��� ���� ����� lista definida na linha 8 é passada das Autotools. Com isso, será possível ��������� ���� ���������� como argumento na linha 10. As compilar seus softwares não apenas ������������������ macros costumam esconder do de- no Linux, mas também no Mac OS senvolvedor as complexidades, para X e MS Windows. ■ simplificar o processo e eliminar a preocupação com detalhes.

Mais informações Conclusão Este artigo apresentou os aspectos mais [1] Repositório SVN do KDE: http://websvn.kde. fundamentais do Cmake, suficientes org/trunk/KDE/kdelibs/ para usá-lo em projetos próprios. Não cmake/modules/ foi abordado, por exemplo, o uso de [2] Kitware: RPATH, o suporte a expressões regulares, http://www.kitware.com a manipulação do cache (figura 4) e a execução de programas. Essas funções [3] Insight Segmentation juntas possibilitam escrever scripts and Registration Toolkit: de compilação muito produtivos. No http://www.itk.org projeto KDE, há muitos exemplos de [4] Valgrind: utilização do Cmake. http://www.valgrind.org No Cmake, os desenvolvedores C e C++ encontram uma ferramenta [5] KWStyle: http://public. kitware.com/KWStyle que realmente permite um controle maior sobre a compilação, ao mesmo [6] Dashboard do Cmake: tempo garantindo sua simplicidade. http://www.cmake.org/ Ele é ativamente desenvolvido, e as Testing/Dashboard/ MostRecentResults- comunidades de desenvolvedores e Nightly/Dashboard.html usuários cresce rapidamente.

������������ �� ����������� �������������� Linux Magazine #36 | Novembro de 2007 © Linux New Media do Brasil Editora Ltda. ��� ���������� � � ����������� Linux.local O maior diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por Estado. Sentiu Fornecedor de Hardware = 1 falta do nome de sua empresa aqui? Entre em contato com a gente: Redes e Telefonia / PBX = 2 11 4082-1300 ou [email protected] Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 SERVIÇOS Consultoria / Treinamento = 6

Empresa Cidade Endereço Telefone Web 1 2 3 4 5 6 Ceará F13 Tecnologia Fortaleza Rua Coronel Solon, 480 – Bairro de Fátima 85 3252-3836 www.f13.com.br ✔ ✔ ✔ ✔ Fortaleza - CE - CEP 60040-270 Espírito Santo Linux Shopp Vila Velha Rua São Simão (Correspondência), 18 – CEP: 29113-120 27 3082-0932 www.linuxshopp.com.br ✔ ✔ ✔ ✔ Megawork Consul- Vitória Rua Chapot Presvot, 389 – Praia do Can- 27 3315-2370 www.megawork.com.br ✔ ✔ ✔ toria e Sistemas to – CEP: 29055-410 sl 201, 202 Spirit Linux Vitória Rua Marins Alvarino, 150 – CEP: 29047-660 27 3227-5543 www.spiritlinux.com.br ✔ ✔ ✔ Minas Gerais Instituto Online Belo Horizonte Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011 31 3224-7920 www.institutoonline.com.br ✔ ✔ Linux Place Belo Horizonte Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000 31 3284-0575 corporate.linuxplace.com.br ✔ ✔ ✔ ✔ Microhard Belo Horizonte Rua República da Argentina, 520 – Sion – CEP: 30315-490 31 3281-5522 www.microhard.com.br ✔ ✔ ✔ ✔ ✔ TurboSite Belo Horizonte Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141 0800 702-9004 www.turbosite.com.br ✔ ✔ ✔ Paraná iSolve Curitiba Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000 41 252-2977 www.isolve.com.br ✔ ✔ ✔ Mandriva Conectiva Curitiba Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430 41 3360-2600 www.mandriva.com.br ✔ ✔ ✔ ✔ Telway Tecnologia Curitiba Rua Francisco Rocha 1830/71 41 3203-0375 www.telway.com.br ✔ ✔ Rio de Janeiro NSI Training Rio de Janeiro Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 21 2220-7055 www.nsi.com.br ✔ ✔ Open IT Rio de Janeiro Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120 21 2508-9103 www.openit.com.br ✔ ✔ Unipi Tecnologias Campos dos Av. Alberto Torres, 303, 1ºandar - Centro – CEP 28035-581 22 2725-1041 www.unipi.com.br ✔ ✔ ✔ ✔ Goytacazes Rio Grande do Sul 4up Soluções Corporativas Novo Hamburgo Pso. Calçadão Osvaldo Cruz, 54 sl. 301 CEP: 93510-015 51 3581-4383 www.4up.com.br ✔ ✔ Solis Lajeado Rua Comandante Wagner, 12 – São Cris- 51 3714-6653 www.solis.coop.br ✔ ✔ ✔ ✔ ✔ tóvão – CEP: 95900-000 DualCon Novo Hamburgo Rua Joaquim Pedro Soares, 1099, Sl. 305 – Centro 51 3593-5437 www.dualcon.com.br ✔ ✔ ✔ ✔ Datarecover Porto Alegre Av. Carlos Gomes, 403, Sala 908, Centro Comer- 51 3018-1200 www.datarecover.com.br ✔ ✔ cial Atrium Center – Bela Vista – CEP: 90480-003 LM2 Consulting Porto Alegre Rua Germano Petersen Junior, 101-Sl 202 – Hi- 51 3018-1007 www.lm2.com.br ✔ ✔ ✔ gienópolis – CEP: 90540-140 Lnx-IT Informação e Tecnologia Porto Alegre Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193 51 3331-1446 www.lnx-it.inf.br ✔ ✔ ✔ ✔ Plugin Porto Alegre Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 51 4003-1001 www.plugin.com.br ✔ ✔ ✔ TeHospedo Porto Alegre Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008 51 3286-3799 www.tehospedo.com.br ✔ ✔ São Paulo Ws Host Arthur Nogueira Rua Jerere, 36 – Vista Alegre – CEP: 13280-000 19 3846-1137 www.wshost.com.br ✔ ✔ ✔ DigiVoice Barueri Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010 11 4195-2557 www.digivoice.com.br ✔ ✔ ✔ ✔ ✔ Dextra Sistemas Campinas Rua Antônio Paioli, 320 – Pq. das Uni- 19 3256-6722 www.dextra.com.br ✔ ✔ ✔ versidades – CEP: 13086-045 Insigne Free Software do Brasil Campinas Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001 19 3213-2100 www.insignesoftware.com ✔ ✔ ✔ Microcamp Campinas Av. Thomaz Alves, 20 – Centro – CEP: 13010-160 19 3236-1915 www.microcamp.com.br ✔ ✔ PC2 Consultoria em Carapicuiba Rua Edeia, 500 - 06350-080 11 3213-6388 www.pc2consultoria.com ✔ ✔ Software Livre Savant Tecnologia Diadema Av. Senador Vitorino Freire, 465 – CEP: 09910-550 11 5034-4199 www.savant.com.br ✔ ✔ ✔ ✔ Epopéia Informática Marília Rua Goiás, 392 – Bairro Cascata – CEP 17509-140 14 3413-1137 www.epopeia.com.br ✔ Redentor Osasco Rua Costante Piovan, 150 – Jd. Três Mon- 11 2106-9392 www.redentor.ind.br ✔ tanhas – CEP: 06263-270 Go-Global Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Ser- 11 2173-4211 www.go-global.com.br ✔ ✔ ✔ vice, Cj. 1013 – CEP: 06541-038 AW2NET Santo André Rua Edson Soares, 59 – CEP: 09760-350 11 4990-0065 www.aw2net.com.br ✔ ✔ ✔ Async Open Source São Carlos Rua Orlando Damiano, 2212 – CEP 13560-450 16 3376-0125 www.async.com.br ✔ ✔ ✔ Delix Internet São José do Rua Voluntário de São Paulo, 3066 9º 11 4062-9889 www.delixhosting.com.br ✔ ✔ ✔ Rio Preto – Centro – CEP: 15015-909

78 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. Linux.local | SERVIÇOS

Empresa Cidade Endereço Telefone Web 1 2 3 4 5 6 São Paulo (continuação) 4Linux São Paulo Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031 11 2125-4747 www.4linux.com.br ✔ ✔ A Casa do Linux São Paulo Al. Jaú, 490 – Jd. Paulista – CEP 01420-000 11 3549-5151 www.acasadolinux.com.br ✔ ✔ ✔ Accenture do Brasil Ltda. São Paulo Rua Alexandre Dumas, 2051 – Cháca- 11 5188-3000 www.accenture.com.br ✔ ✔ ✔ ra Santo Antônio – CEP: 04717-004 ACR Informática São Paulo Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010 11 3873-1515 www.acrinformatica.com.br ✔ ✔ Agit Informática São Paulo Rua Major Quedinho, 111, 5º andar, Cj. 11 3255-4945 www.agit.com.br ✔ ✔ ✔ 508 – Centro – CEP: 01050-030 Altbit - Informática Co- São Paulo Av. Francisco Matarazzo, 229, Cj. 57 11 3879-9390 www.altbit.com.br ✔ ✔ ✔ ✔ mércio e Serviços LTDA. – Água Branca – CEP 05001-000 AS2M -WPC Consultoria São Paulo Rua Três Rios, 131, Cj. 61A – Bom Retiro – CEP: 01123-001 11 3228-3709 www.wpc.com.br ✔ ✔ ✔ Big Host São Paulo Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010 11 3033-4000 www.bighost.com.br ✔ ✔ ✔ Blanes São Paulo Rua André Ampére, 153 – 9º andar – Conj. 91 11 5506-9677 www.blanes.com.br ✔ ✔ ✔ ✔ ✔ CEP: 04562-907 (próx. Av. L. C. Berrini) Commlogik do Brasil Ltda. São Paulo Av. das Nações Unidas, 13.797, Bloco II, 6º an- 11 5503-1011 www.commlogik.com.br ✔ ✔ ✔ ✔ ✔ dar – Morumbi – CEP: 04794-000 Computer Consulting Pro- São Paulo Rua Vergueiro, 6455, Cj. 06 – Alto do Ipiranga – CEP: 04273-100 11 5062-3927 www.computerconsulting.com.br ✔ ✔ ✔ ✔ jeto e Consultoria Ltda. Consist Consultoria, Siste- São Paulo Av. das Nações Unidas, 20.727 – CEP: 04795-100 11 5693-7210 www.consist.com.br ✔ ✔ ✔ ✔ mas e Representações Ltda. Domínio Tecnologia São Paulo Rua das Carnaubeiras, 98 – Metrô Con- 11 5017-0040 www.dominiotecnologia.com.br ✔ ✔ ceição – CEP: 04343-080 EDS do Brasil São Paulo Av. Pres. Juscelino Kubistcheck, 1830 Torre 4 - 5º andar 11 3707-4100 www.eds.com ✔ ✔ ✔ Ética Tecnologia São Paulo Rua Nova York, 945 – Brooklin – CEP:04560-002 11 5093-3025 www.etica.net ✔ ✔ ✔ ✔ Getronics ICT Solu- São Paulo Rua Verbo Divino, 1207 – CEP: 04719-002 11 5187-2700 www.getronics.com/br ✔ ✔ ✔ tions and Services Hewlett-Packard Brasil Ltda. São Paulo Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000 11 5502-5000 www.hp.com.br ✔ ✔ ✔ ✔ ✔ IBM Brasil Ltda. São Paulo Rua Tutóia, 1157 – CEP: 04007-900 0800-7074 837 www.br.ibm.com ✔ ✔ ✔ ✔ iFractal São Paulo Rua Fiação da Saúde, 145, Conj. 66 – Saúde – CEP: 04144-020 11 5078-6618 www.ifractal.com.br ✔ ✔ ✔ Integral São Paulo Rua Dr. Gentil Leite Martins, 295, 2º an- 11 5545-2600 www.integral.com.br ✔ ✔ dar Jd. Prudência – CEP: 04648-001 Itautec S.A. São Paulo Rua Santa Catarina, 1 – Tatuapé – CEP: 03086-025 11 6097-3000 www.itautec.com.br ✔ ✔ ✔ ✔ ✔ Kenos Consultoria São Paulo Av: Fagundes Filho, 13, Conj -53, Cep: 04304-000 11 40821305 www.kenos.com.br ✔ Linux Komputer Informática São Paulo Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001 11 5034-4191 www.komputer.com.br ✔ ✔ ✔ ✔ Linux Mall São Paulo Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001 11 5087-9441 www.linuxmall.com.br ✔ ✔ ✔ Livraria Tempo Real São Paulo Al. Santos, 1202 – Cerqueira César – CEP: 01418-100 11 3266-2988 www.temporeal.com.br ✔ ✔ ✔ Locasite Internet Service São Paulo Av. Brigadeiro Luiz Antonio, 2482, 3º an- 11 2121-4555 www.locasite.com.br ✔ ✔ ✔ dar – Centro – CEP: 01402-000 Microsiga São Paulo Av. Braz Leme, 1631 – CEP: 02511-000 11 3981-7200 www.microsiga.com.br ✔ ✔ ✔ Novatec Editora Ltda. São Paulo Rua Luis Antonio dos Santos, 110 – Santana – 02460-000 11 6979-0071 www.novateceditora.com.br ✔ Novell América Latina São Paulo Rua Funchal, 418 – Vila Olímpia 11 3345-3900 www.novell.com/brasil ✔ ✔ ✔ Oracle do Brasil Sistemas Ltda. São Paulo Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º 11 5189-3000 www.oracle.com.br ✔ ✔ andar – CEP: 04726-170 Proelbra Tecnolo- São Paulo Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001 11 5052- 8044 www.proelbra.com.br ✔ ✔ ✔ gia Eletrônica Ltda. Provider São Paulo Av. Cardoso de Melo, 1450, 6º an- 11 2165-6500 www.e-provider.com.br ✔ ✔ ✔ dar – Vila Olímpia – CEP: 04548-005 Red Hat Brasil São Paulo Av. Brigadeiro Faria Lima, 3900, Cj 81 8º andar 11 3529-6000 www.redhat.com.br ✔ ✔ Itaim Bibi – CEP: 04538-132 Samurai Projetos Especiais São Paulo Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002 11 5097-3014 www.samurai.com.br ✔ ✔ ✔ SAP Brasil São Paulo Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000 11 5503-2400 www.sap.com.br ✔ ✔ ✔ Simples Consultoria São Paulo Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010 11 3898-2121 www.simplesconsultoria.com.br ✔ ✔ ✔ Smart Solutions São Paulo Av. Jabaquara, 2940 cj 56 e 57 11 5052-5958 www.smart-tec.com.br ✔ ✔ ✔ ✔ Snap IT São Paulo Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000 11 3731-8008 www.snapit.com.br ✔ ✔ ✔ Stefanini IT Solutions São Paulo Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919 11 3039-2000 www.stefanini.com.br ✔ ✔ ✔ Sun Microsystems São Paulo Rua Alexandre Dumas, 2016 – CEP: 04717-004 11 5187-2100 www.sun.com.br ✔ ✔ ✔ ✔ Sybase Brasil São Paulo Av. Juscelino Kubitschek, 510, 9º an- 11 3046-7388 www.sybase.com.br ✔ ✔ dar Itaim Bibi – CEP: 04543-000 The Source São Paulo Rua Marquês de Abrantes, 203 – Chá- 11 6698-5090 www.thesource.com.br ✔ ✔ ✔ cara Tatuapé – CEP: 03060-020 Unisys Brasil Ltda. São Paulo R. Alexandre Dumas 1658 – 6º, 7º e 8º anda- 11 3305-7000 www.unisys.com.br ✔ ✔ ✔ ✔ res – Chácara Santo Antônio – CEP: 04717-004 Utah São Paulo Av. Paulista, 925, 13º andar – Cerquei- 11 3145-5888 www.utah.com.br ✔ ✔ ✔ ra César – CEP: 01311-916 Visuelles São Paulo Rua Eng. Domicio Diele Pacheco e Sil- 11 5614-1010 www.visuelles.com.br ✔ ✔ ✔ va, 585 – Interlagos – CEP 04455-310 Webnow São Paulo Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Cen- 11 5503-6510 www.webnow.com.br ✔ ✔ ✔ tenário – Chácara Itaim – CEP: 04578-000 WRL Informática Ltda. São Paulo Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 11 3362-1334 www.wrl.com.br ✔ ✔ ✔ Systech Taquaritinga Rua São José, 1126 – Centro - Cai- 16 3252-7308 www.systech-ltd.com.br ✔ ✔ ✔ xa Postal 71 – CEP: 15.900-000

Linux Magazine #36 | Novembro de 2007 79 © Linux New Media do Brasil Editora Ltda. Calendário de eventos Índice de anunciantes Empresa Pág. Evento Data Local Website 4 Linux 17 Bull 84 CONISLI 2007 9 a 11 de novembro São Paulo, SP www.conisli.org Celepar 57 Coraid 33 Latinoware 2007 13 e 14 de novembro Foz do Iguaçu, PR www.latinoware.org F-Secure 15

Seminário de Ruby on Rails http://blog.improveit.com.br/ar- IBM 11 8 de dezembro Rio de Janeiro, RJ

SERVIÇOS do Rio de Janeiro ticles/2007/10/23/rio-on-rails Impacta 21 Integral 47 Itautec 07 Kenos 25 Linux Solutions 23 LPI 55 Metasys 83 Plugin 13 Red Hat 09 Senac 63 X25 83

User Friendly – Os quadrinhos mensais da Linux Magazine

80 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. ������������������������������� ����������������

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

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

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

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

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

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

�����������������������������������������������������������������© Linux New Media do Brasil Editora Ltda. ���������������������������

LinuxGLOBAL_KRU.indd 1 12.06.2007 17:53:30 Uhr Na Linux Magazine #37…

DESTAQUE Quem manda é o Linux

PREVIEW Computadores estáveis, livres de vírus e spywares, com milhares de softwares, inclu- sive recursos de multimídia e games... O consumidor brasileiro finalmente acor- dou para as vantagens do Linux? Seu próximo computador novo, seja ele um desktop multiprocessado de “última geração”, o primeiro PC básico de sua mãe, irmão caçula ou filho, ou um notebook – a grande estrela do momento –, tem muitas chances de vir equipado com Li- nux. E isso não ocorre a toa: o pro- grama Computador para Todos, do Governo Federal, é incisivo ao estabelecer que apenas computadores com Linux podem se encaixar na lista de benefícios fiscais do programa. Ao mesmo tempo, vemos grandes fabricantes nacionais, como a Positivo, Itau- tec e CCE, apostando firmemente em desktops e notebooks com Linux, de olho em uma fatia do mercado cheia de exigências e que cresce a cada dia: aquela em que você se inclui! Nesta edição de final de ano da Linux Magazine, você conhece- rá um panorama desse mercado, e conversará, cara-a-cara, com seus principais fabricantes. O que esperar dos computado- res com Linux em termos de tecnologia? Qual é o nível de satisfação dos compradores? Laptop com Linux é mesmo a grande “onda” do momento. ■

TUTORIAL Curso LPI quanto com seu novo concorrente, o syslog-ng. Continue acompanhando o curso preparatório A criação de pacotes de software nos formatos para o segundo nível da certificação LPI. O quinto mais comuns, isto é, RPM e DEB, também será artigo da série abordará a manutenção do siste- examinada. Por último, as operações de becape, ma, incluindo a configuração e manipulação de passando por estratégias e ferramentas, comple- um servidor de logs, tanto com o venerável syslog tará a aula. ■

82 http://www.linuxmagazine.com.br © Linux New Media do Brasil Editora Ltda. ������������������� ��������������������

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

����������������� ������������������������������ ������������������� © Linux New Media do Brasil Editora Ltda.

pocket.indd 2 25.09.07 09:40:44 11/2007 ENTREVISTA - CANONICAL p.26 CEZAR TAURION p.34 LINUX PARK 2007 p.28 O Ubuntu quer O que um curso superior em Chegada de impacto ao conquistar o Brasil Código Aberto deve oferecer? Recife e a volta a São Paulo

#36 11/07 Linux Magazine R$ 13,90 € 7,50 0 0 0 3 6 9 200 4 6 9 # 36 7180 # 36 Novembro 2007

A REVISTA DO PROFISSIONAL DE TI 9 7 ECLIPSE PLUGINS SQL C/C++ CMAKE METASYS LOAD AVERAGE LPI-2 MAYA APACHE SUEXEC CLUSTER IP IP CLUSTER APACHESUEXEC MAYA LPI-2 AVERAGE LOAD METASYS CMAKE C/C++ SQL PLUGINS

Eclipse p.35 CONHEÇACONHEÇA A FERRAMENTAFERRAMENTA DEDE PROGRAMAÇÃOPROGRAMAÇÃO MMULTILINGUAGEMULTILINGUAGEM MAIS COMPLETA E FLEXÍVEL DA ATUALIDADE

» Os 12 melhores plugins p.42

» SQL: modelagem e criação de bancos de dados p.39

» C e C++ tornam-se fáceis com o plugin CDT p.36

REDES: RESISTENTE A FALHAS p.53 O alvo CLUSTERIP do Iptables acrescenta redundância inteligente à sua rede

SEGURANÇA: SCRIPTS WEB TRANCAFIADOS p.58 Um módulo do Apache evita que seus scripts web abram caminho para invasões

VEJA TAMBÉM NESTA EDIÇÃO: » Quinta aula preparatória para o LPIC-2 p.48 » Uma alternativa à medição de load average, agora com sentido p.64 » Alto realismo em modelagem 3D com o Maya p.60 Edição de » Cmake: Compilação pode ser fácil p.72

CONHEÇA A FERRAMENTA DE PROGRAMAÇÃO MULTILINGUAGEM ANIVERSÁRIO

© Linux New Media do Brasil Editora Ltda. WWW.LINUXMAGAZINE.COM.BR