LM_80_CE

download LM_80_CE

of 30

Transcript of LM_80_CE

  • 8/6/2019 LM_80_CE

    1/30

    http://lnm.com.br/article/5477http://lnm.com.br/article/5486http://lnm.com.br/article/5418http://lnm.com.br/article/5475http://lnm.com.br/article/5492http://lnm.com.br/article/5490http://lnm.com.br/article/5456http://lnm.com.br/article/5416
  • 8/6/2019 LM_80_CE

    2/30

    3Linux Magazine #80 | Julho de 2011

    EDITORIAL

    Burrice bem-vindaEmbora raros, h sistemas na engenharia e na biologia que so to efcientesque acabam por gerar problemas estruturais e/ou operacionais. A velocidadena entrega de obras na construo civil leva empresas de engenharia a usardeterminados aditivos na cura do concreto que aceleram o seu processo deendurecimento e secagem, mas que podem resultar em porosidade do mate-

    rial. Do lado da medicina, h certas cirurgias cuja realizao recomendadaaps os cinquenta anos de idade, pois antes disso o processo de cicatrizao to clere que acaba resultando em recidiva anos mais tarde. Antes da idaderecomendada, o paciente deve tentar amenizar o problema usando paliativos.

    At certo tempo atrs e, na minha idade, certo tempo signifca pelomenos umas trs dcadas, ou seja, na era pr-PC , operadores de computadorestavam habituados a trabalhar no que se convencionou chamar de termi-nal burro, o qual fcava conectado a um computador de grande porte, ondetodo o processamento ocorria de ato. O terminal, normalmente conectadovia porta serial ao mainrame, praticamente no azia nada alm de mostrarna tela os comandos digitados e eventuais resultados, bem como realizar a

    leitura dos dados inseridos via teclado. Esse modo de operar ainda utilizado(com variaes) por muitas empresas at hoje, como, por exemplo, a CasasBahia. A dierena que, atualmente, o terminal um programa que simula ocomportamento da mquina burra de outros tempos. No servidor, que aindapode ser um mainrame, o sistema operacional agora em geral Linux (emoperao virtualizada nesses sistemas de grande porte), apesar de haver aindasistemas operacionais para mainrames, como o z/OS da IBM, por exemplo.

    Com o advento da computao em nuvem, vamos presenciar uma conf-gurao semelhante chegando a uma grande parcela de usurios fnais: comoa maioria dos aplicativos vai uncionar diretamente a partir da nuvem, acapacidade de processamento da mquina local que pode ser um PC maismodesto, um netbook, um tablet ou mesmo um celular poder ser muito

    menor. Isso vai democratizar ainda mais o acesso Internet e aos aplicati-vos ornecidos como servios monetizados via publicidade hospedados nanuvem: ponto para o Google! E iniciativas como o lanamento do iCloud,realizado recentemente pela Apple, transerem a central digital do usuriopara a nuvem, em uma traduo livre da afrmao eita por Steve Jobs porocasio do lanamento do novo servio. Com isso, o denominador comumda vida digital do usurio muda, e, assim, o PC perde a posio de destaqueque ocupou durante cerca de trinta anos. Os dispositivos mveis sero os apa-relhos utilizados para realizar esse acesso. Ponto para o Linux, que j equipaa maior parte dos dispositivos embarcados no mundo tendncia que cresceexponencialmente. Afnal, em um mundo em que no h aprisionamento

    de plataorma operacional, onde um sistema livre, aberto, seguro e rpidoest disponvel gratuitamente para qualquer empresa desenvolver produtos esolues, que outra opo mais vantajosa poderia ser adotada?

    Assim, exceo dos sistemas que de ato necessitam de grande ca-pacidade de processamento local (edio de vdeo ou CAD/CAM, porexemplo), os sistemas baseados em Linux que vo equipar nossos dispo-sitivos mveis podero ser mais simples e, assim, menos inteligentes, jque a inteligncia dos aplicativos estar hospedada na nuvem. O terminalburro 2.0 chegou! Sadem essa burrice bem-vinda!

    Rafael Peregrino da Silva

    Diretor de Redao

    Expediente editorialDiretor Geral

    Rafael Peregrino da [email protected]

    EditoresFlvia [email protected]

    Kemel [email protected]

    Editora de ArteLarissa Lima Zanini

    [email protected]

    EstagirioFelipe Brumatti Sentelhas

    [email protected]

    ColaboradoresAlexandre Borges, Alexandre Santos, AugustoCampos, Brice Goglin, Charly Khnast, Erik Brwaldt,Hans-Peter Merkel, Ian Dickinson, Jeff Squyres,Jon maddog Hall, Kai-Thorsten Hambrecht, KlausKnopper, Kurt Seifried, Marcel Gagn, MarkusFeilner, Markus Heller, Markus Roth, Peter Kreussel,Samuel Thibault, Thomas Pfeiffer, Zack Brown.

    Editores internacionaisUli Bantle, Andreas Bohle, Jens-Christoph Brendel,Hans-Georg Eer, Markus Feilner, Oliver Frommel,Marcel Hilzinger, Mathias Huber, Anika Kehrer,Kristian Kiling, Jan Kleinert, Daniel Kottmair,Thomas Leichtenstern, Jrg Luther, Nils Magnus.

    Anncios:

    Rafael Peregrino da Silva (Brasil) [email protected].: +55 (0)11 3675-2600

    Penny Wilby (Reino Unido e Irlanda) [email protected]

    Amy Phalen (Amrica do Norte) [email protected]

    Hubert Wiest (Outros pases) [email protected]

    Diretor de operaes

    Claudio Bazzoli [email protected]

    Na Internet: www.linuxmagazine.com.br Brasil www.linux-magazin.de Alemanha www.linux-magazine.com Portal Mundial www.linuxmagazine.com.au Austrlia www.linux-magazine.es Espanha

    www.linux-magazine.pl Polnia www.linux-magazine.co.uk Reino Unido www.linuxpromagazine.com Amrica do Norte

    Apesar de todos os cuidados possveis terem sido tomadosdurante a produo desta revista, a editora no responsvelpor eventuais imprecises nela contidas ou por consequnciasque advenham de seu uso. A utilizao de qualquer material darevista ocorre por conta e risco do leitor.

    Nenhum material pode ser reproduzido em qualquer meio, emparte ou no todo, sem permisso expressa da editora. Assu-me-se que qualquer correspondncia recebida, tal como car-tas, emails, faxes, fotografias, artigos e desenhos, sejam for-necidos para publicao ou licenciamento a terceiros de formamundial no-exclusiva pela Linux New Media do Brasil, a me-nos que explicitamente indicado.

    Linux uma marca registrada de Linus Torvalds.

    Linux Magazine publicada mensalmente por:

    Linux New Media do Brasil Editora Ltda.

    Rua So Bento, 500Conj. 802 S01010-001 So Paulo SP BrasilTel.: +55 (0)11 3675-2600

    Direitos Autorais e Marcas Registradas 2004 - 2011:Linux New Media do Brasil Editora Ltda.Impresso e Acabamento: RR DonnelleyDistribuda em todo o pas pela Dinap S.A.,Distribuidora Nacional de Publicaes, So Paulo.

    Atendimento Assinante

    www.linuxnewmedia.com.br/atendimentoSo Paulo: +55 (0)11 3675-2600Rio de Janeiro: +55 (0)21 3512 0888Belo Horizonte: +55 (0)31 3516 1280

    ISSN 1806-9428 Impresso no Brasil

  • 8/6/2019 LM_80_CE

    3/30

    4 www.linuxmagazine.com.br

    NDI

    CE

    CAPA

    Novas tecnologias 27

    Como possvel manter-se atualizado diante darevoluo de lanamentos no mercado de tecnologia,com o qual somos bombardeados todos os dias?

    Um novo comeo para o HTML 28

    Em 1999, quando o padro HTML 4.01 apareceu pela primeira vez,ningum era capaz de prever o surgimento de blogs de video,redes sociais e ferramentas de produtividade web. O padro HTML5transformar a Internet em uma nova gerao de tecnologia e servios.

    Acelere ao mximo 34

    O OpenCL permite ao programador acelerar um aplicativo transferindoalguns clculos para o processador de grficos do computador.

    Face a face 41Softwares de reconhecimento facial esto se tornando cada vez maispopulares, alm de mais sofisticados. Mostramos como usar o softwarede cdigo livre libface para identificar pessoas em suas fotos.

    ZFS sob o sol 46

    O formato ZFS, da Sun, geralmente reverenciado como o maismoderno sistema de arquivos disponvel atualmente. O kernel Linux noproporciona suporte direto para o ZFS, mas o usurio pode encontraralternativas para us-lo tanto no espao do kernel quanto do usurio.

    http://lnm.com.br/article/5475http://lnm.com.br/article/5475http://lnm.com.br/article/5475http://lnm.com.br/article/5475http://lnm.com.br/article/5475http://lnm.com.br/article/5475http://lnm.com.br/article/5486http://lnm.com.br/article/5486http://lnm.com.br/article/5486http://lnm.com.br/article/5477http://lnm.com.br/article/5477http://lnm.com.br/article/5477http://lnm.com.br/article/5477http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5418http://lnm.com.br/article/5477http://lnm.com.br/article/5486http://lnm.com.br/article/5475
  • 8/6/2019 LM_80_CE

    4/30

    5

    REDESAlternativa de peso 58

    O iSCSI oferece uma alternativa rpida e flexvel paraarmazenamento de arquivos em rede. A ferramentaiSCSI permite que voc configure o armazenamento dearquivos em sua prpria rede, sem a necessidade deuso de equipamento ou cabeamento especializado.

    TUTORIALElo perdido 63

    Conhea um novo mtodo para processar, combinar,analisar e apresentar informaes ocultas em dadosbrutos usando a plataforma Jena: web semnticae dados vinculados (linked data) para Java.

    VoIP com Asterisk parte IX 70

    O sistema telefnico ultrapassado, presente at poucotempo atrs nas empresas, prolfico em cobranas: cadanovo recurso ativado requer uma nova ativao de servio,com o preo adicionado ao pagamento mensal. horade mudar. hora de criar sua prpria central VoIP

    PROGRAMAOBusca com qualidade 72

    Analisamos a ferramenta de indexao OpenSearch Server e mostramos como integrar o recursode busca ao seu website utilizando PHP.

    SERVIOSEditorial 03

    Emails 06

    Linux.local 78

    Preview 82

    Linux Magazine #80 | Julho de 2011

    | NDICELinux Magazine 80

    COLUNASKlaus Knopper 08

    Charly Khnast 10

    Zack Brown 12

    Augusto Campos 13

    Kurt Seifried 16

    Alexandre Borges 20

    NOTCIASGeral 20

    Fim do Adobe AIR para Linux

    Xen completamente integrado ao Linux

    CORPORATENotcias 22

    Cisco apresenta novo sistema ASR9000

    Red Hat lana solues para gesto e desenvolvimento de nuvem

    eBay adquire Magento

    Oracle exige bilhes do GoogleOpen Virtualization Alliance ganha 65 novos membros

    Coluna: Jon maddog Hall 24

    Coluna: Alexandre Santos 26

    ANLISELies sobre localizao 50

    A topologia do servidor interno est se tornando cadavez mais complexa. Entender onde os processos estosendo executados no servidor pode ter um grandeimpacto no desempenho geral do sistema.

    Pequeno soldado 55

    O Sentinella automatiza a forma com que o computador monitora

    problemas com recursos e outros estados de sistema.

    http://lnm.com.br/article/5492http://lnm.com.br/article/5492http://lnm.com.br/article/5492http://lnm.com.br/article/5492http://lnm.com.br/article/5492http://lnm.com.br/article/5492http://lnm.com.br/article/5403http://lnm.com.br/article/5401http://lnm.com.br/article/5413http://lnm.com.br/article/5414http://lnm.com.br/article/5462http://lnm.com.br/article/5462http://lnm.com.br/article/5462http://lnm.com.br/article/5462http://lnm.com.br/article/5462http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5463http://lnm.com.br/article/5416http://lnm.com.br/article/5456http://lnm.com.br/article/5490http://lnm.com.br/article/5490http://lnm.com.br/article/5490http://lnm.com.br/article/5490http://lnm.com.br/article/5490http://lnm.com.br/article/5490http://lnm.com.br/article/5403http://lnm.com.br/article/5401http://lnm.com.br/article/5413http://lnm.com.br/article/5414http://lnm.com.br/article/5490http://lnm.com.br/article/5492http://lnm.com.br/article/5462http://lnm.com.br/article/5463http://lnm.com.br/article/5416http://lnm.com.br/article/5456
  • 8/6/2019 LM_80_CE

    5/30

    6 www.linuxmagazine.com.br

    Emails para o editor

    Permissode escrita

    sanjagjen

    ero

    www

    .sxc

    .hu

    Escreva para ns! Sempre queremos sua opinio sobre a Linux Magazine e nossos artigos. Envie seus emails para

    [email protected] e compartilhe suas dvidas, opinies, sugestes e crticas. Infelizmente, devido ao

    volume de emails, no podemos garantir que seu email seja publicado, mas certo que ele ser lido e analisado.

    Aplicativo personalizadoOl pessoal, criei uma calculadora utilizando lingua-gem C com GTK e compactei o programa em umpacote .deb.Gostaria de saber como ao para que o programa sejaexibido na aba acessrios da minha distribuio Linux.Joo Vieira

    RespostaCaro Joo, para que o atalho seja exibido no menu

    Acessrios do Gnome ou do KDE basta que vocinclua no seu pacote um arquivo do tipo .desktopcom os dados do aplicativo, como: nome, coman-do de execuo, cone, e seo do menu onde oaplicativo deve ser exibido.

    No Gnome este arquivo deve fcar no diretrio /usr/share/applications/seu_programa.desktop.

    Como exemplo, copio abaixo o contedo de um ar-quivo /usr/share/applications/gnome-terminal.desktop :

    [Desktop Entry]Name=TerminalComment=Use the command lineTryExec=gnome-terminalExec=gnome-terminalIcon=utilities-terminalType=ApplicationX-GNOME-DocPath=gnome-terminal/index.html

    X-GNOME-Bugzilla-Bugzilla=GNOMEX-GNOME-Bugzilla-Product=gnome-terminal

    X-GNOME-Bugzilla-Component=BugBuddyBugs

    X-GNOME-Bugzilla-Version=2.32.0Categories=GNOME;GTK;Utility;TerminalEmulator;

    StartupNotify=trueOnlyShowIn=GNOME;X-Ubuntu-Gettext-Domain=gnome-terminal

    Mais inormaes podem ser encontradas na documentaodo Gnome no endereo http://live.gnome.org/GnomeLove .

  • 8/6/2019 LM_80_CE

    6/30

    13Linux Magazine #XX | Ms de 200X

    CO

    LUNA

    Coluna do Augusto

    Bons ventos sopramsobre o AndroidNovas iniciativas e alternativas esto surgindo no

    universo do desenvolvimento Android.

    Quem chega ao universo Android interessado

    no ato de ele ser (em grande parte) um sis-tema de cdigo aberto (e por incluir o kernelLinux) acaba tendo grande interesse pela possibilidadede modifcar o sistema e interagir com ele em nveismais avanados, assim como usualmente possvel azerem distribuies Linux no desktop. Mesmo quando essapossibilidade no colocada em prtica, interessan-te saber que ela est l e que pode ser aproveitada poroutros, de orma que possamos colher os rutos, afnal,sempre h algum desenvolvedor interessado em adaptaros recursos do sistema, agregar acessrios e ir alm dasAPIs ofciais, trocando a compatibilidade por utilidades

    adicionais e melhor desempenho.No caso do Android, essa situao poderia ser simbo-

    lizada pelo CyanogenMod [1], um frmware alternativopara smartphones, e-readers e tablets, que mantidopor uma comunidade de s do Android e compatvelcom dezenas de modelos de aparelhos. Ele oerece aseus usurios recursos que requentemente fcam deora nas verses de Android embarcadas nos aparelhospor seus abricantes e operadoras.

    Normalmente, o desenvolvimento deste tipo de al-

    ternativa se d sem qualquer apoio dos abricantes edesenvolvedores originais ou, em determinados casos,tendo de lidar com a resistncia e obstruo ativas pra-ticadas por eles, inclusive com travamentos eitos nohardware para evitar a execuo de sistemas alternativos.

    Isso j oi tendncia quase geral, e vai continuara acontecer. Porm, no fnal do primeiro semestre,tivemos duas notcias muito positivas a respeito, in-dicando uma possvel mudana de mar entre os a-bricantes de aparelhos.

    A primeira oi da HTC, cujo CEO veio a pblicoagradecer a pacincia dos seus usurios e afrmar que

    vai cessar com a prtica de travar o boot dos seusaparelhos equipados com Android acabando assimcom a medida antiptica cujo objetivo era difcultar ainstalao de sistemas alternativos.

    Logo em seguida, oi noticiado algo ainda mais ex-tremo na aproximao entre abricantes e hackers: aSamsung doou um aparelho Galaxy S II para um dosdesenvolvedores do CyanogenMod, com o objetivoexpresso de acilitar a portabilidade deste sotware al-ternativo para o novo smartphone da empresa.

    Nada disso garante aproximaes ou aberturas def-

    nitivas, mas so excelentes notcias que podem ajudar aampliar o nvel de abertura das plataormas mveis, aomesmo tempo em que certamente constituem critriosadicionais a considerar na hora de escolher o abricantede nossos prximos produtos!

    Augusto Campos administrador de TI e, desde 1996, mantm o site BR-

    linux.org, que cobre a cena do Software Livre no Brasil e no mundo.

    Mais informaes

    [1] CyanogenMod: http://www.cyanogenmod.com/

    O CyanogenMod umfrmware alternativo parasmartphones, e-readers

    e tablets, que mantidopor uma comunidade

    de s do Android ecompatvel com dezenas

    de modelos de aparelhos.

  • 8/6/2019 LM_80_CE

    7/30

  • 8/6/2019 LM_80_CE

    8/30

    19Linux Magazine #80 | Julho de 2011

    estes hardwares e as suas propriedades no arquivode sistema (flesystem) montado no diretrio /sys.

    Algumas vantagens do udev so:Criao dinmica de entradas para dispositivos

    em /dev; Controle na criao dos nomes dos dispositivos

    em /dev atravs de regras; Inicializao dos dispositivos de hardware de

    maneira dinmica (hotplug); Possibilidade de renomeao de interaces

    de rede; Vinculao de scripts para serem executados

    na adio ou remoo de um hardware; Mudana da propriedade e permisso de

    um dispositivo.O leitor pode utilizar qualquer distribuio, como

    Ubuntu, Red Hat ou Suse, para azer testes com o

    udev. Estou usando Ubuntu 11.04, pois aquela queest instalada no meu netbook, embora no escon-da de ningum que prefro Red Hat ou Suse paraambientes crticos. Caso o leitor ainda queira, poderealizar o download do cdigo do udev e compil-lo.Para azer isso (no seu sistema podem ser exigidosoutros pacotes adicionais), a partir da raiz e comousurio root, digite:

    # git clone git://git.kernel.org/pub/scm/linux/hotplug/udev.git udev-lm# apt-get install libacl1-dev# apt-get install glib-2.0# apt-get install gobject-*# apt-get install gperf# apt-get install gtk-doc-tools# cd /udev-lm# ./autogen.sh without-selinux disable--introspection# make

    # make udev/test-udev

    Agora voc pode executar o script Perl de testeque vem junto com o udev, o qual simula a inclusoe a remoo de dispositivos no sistema, de modo averifcar se est tudo uncionando bem:

    # perl test/udev-test.pl

    No ms que vem continuamos a relembrar o usoe uncionamento do udev. At a prxima.

    Alexandre Borges ([email protected], twitter: @ale_sp_brazil) Es-

    pecialista Snior em Solaris, OpenSolaris e Linux. Trabalha com desen-

    volvimento, segurana, administrao e anlise de desempenho desses

    sistemas operacionais, atuando como instrutor e consultor. pesquisa-

    dor de novas tecnologias e assuntos relacionados ao kernel.

    http://www.impacta.com.br/http://www.impacta.com.br/http://www.impacta.com.br/http://www.impacta.com.br/http://www.impacta.com.br/
  • 8/6/2019 LM_80_CE

    9/30

    27Linux Magazine #80 | Julho de 2011

    C

    APA

    As novidades do mercado de tecnologia

    Novas tecnologiasComo possvel manter-se atualizado diante da revoluo de lanamentos no

    mercado de tecnologia, com o qual somos bombardeados todos os dias?

    por Flvia Jobstraibizer

    Acada dia descobrimos uma nova orma de realizartareas corriqueiras, seja atravs de um novo dispo-sitivo lanado ou mesmo atravs de uma nova tec-nologia que surge. Os benefcios sessas novas tecnologias,so inmeros: todos os dias so lanados dispositivos queacilitam a vida do usurio de teleonia celular, o profs-

    sional que desenvolve sistemas conta com computadorescada vez menores, o gestor que necessita de conexo atodo momento, pode montar um ponto de acesso semfo de onde estiver, a escola que deve ornecer recursospara seus alunos e pode utilizar uma nova plataorma deaprendizagem online, o departamento de uma empre-sa que atravs da implementao de uma nova ormade armazenamento de arquivos, economizou ao evitara compra de outro servidor etc., so muitas as vertentesque precisam da tecnologia e claro, se movimentamem torno dela e de suas novidades.

    Algumas novas tecnologias tem um nvel de obsoles-

    cncia to grande, que j nascem desatualizadas. ocaso dos tablets, dispositivos mveis com celulares e atmesmo notebooks. Lanado um hoje, amanh j exis-tem outros melhores ou com mais recursos. No raro,quando sequer descobrimos que uma nova tecnologia oilanada, existem outras vrias iniciativas em torno dela,melhoradas e mais teis. Como acompanh-las? estaa pergunta que nos fzemos quando decidmos agruparalgumas dessas novidades nesta edio da Linux Ma-gazine, uma vez que, assim como a vida, a tecnologiase reinventa e se renova todos os dias.

    Vamos abordar algumas novidades tecnolgicas queesto acendendo o mercado, como o caso do HTML5,

    que promete ser principal ator para o desenvolvimentoweb da nova era da Internet.

    Apresentamos ainda a tecnologia por trs das placas devdeo. Seus processadores, como obter melhor desempe-nho e velocidade atravs de clculos e scripts especfcosque as tornam mais efcientes e efcazes, com o openCL.

    Na rea de armazenamento e sistemas de arquivos, a-laremos sobre o iSCSI, que oerece uma alternativa rpidae exvel para armazenamento de arquivos em rede. Aerramenta permite que voc confgure o armazenamentode arquivos em sua prpria rede, sem a necessidade deuso de equipamento ou cabeamento especializado. Outraopo o ZFS, da Sun, que tido como o mais moder-no sistema de arquivos disponvel atualmente. O kernelLinux no proporciona suporte direto para o ZFS, masmostaremos as alternativas para us-lo tanto no espaodo kernel quanto do usurio.

    E para echar esta edio, demonstraremos comouncionam os sotwares de reconhecimento acial, queesto se tornando cada vez mais populares, alm demais sofsticados. Aprenda como identifcar pessoasem otos e montar uma base para automatizao dereconhecimento acial em lotes de imagens.

    A nova era tecnolgica j comeou, mantenha-se atu-alizado e boa leitura!

    Um novo comeo para o HTML 28

    Acelere ao mximo 34

    Face a face 41

    ZFS sob o sol 46

    Matrias de capa

  • 8/6/2019 LM_80_CE

    10/30

    55

    | ANLISEMonitoramento de redes e sistemas

    Linux Magazine #80 | Julho de 2011

    Monitoramento de redes e sistemas

    PequenosoldadoO Sentinella automatiza a forma

    com que o computador monitora

    problemas com recursos e

    outros estados de sistema.

    Erik Brwaldt

    F

    erramentas de monitoramen-to de rede como o Nagiosobservam toda a sua rede e

    mandam um alerta caso aconteaalgum problema. Isso se voc tivertempo e energia para confgurar ainraestrutura completa de alertasno programa. Se voc opera emmenor escala, talvez seja melhorusar um pequeno soldado, emvez de um exrcito completo. OSentinella um desses aplicativosprticos que supervisionam o seuprocessador, espao em disco ou

    interace de rede e mandam umalarme ou executam um determi-nado comando quando um pro-blema ocorre.

    A erramenta de monitoramen-to Sentinella j conquistou o seuespao nos repositrios de muitasdistribuies, e possvel que vocpossa instal-lo convenientementecom o Synaptic, YaST ou outro ge-renciador de pacotes. Se os pacotes

    binrios no estiverem disponveis

    para a sua distribuio, voc podebaixar o arquivo do site do proje-to [1] e realizar uma instalao

    manual. O site tem inormaesdetalhadas sobre como confgurara erramenta.

    Caso voc no use o desktopKDE, para o qual o Sentinella estotimizado, instalar os arquivos bi-nrios normalmente ir instalaro que necessrio para executaro Sentinella no Gnome, Xce ouLXDE sem sacrifcar recursos daerramenta.

    Executar o SentinellaDependendo da sua distribuioLinux, o processo de instalao dopacote cria um item no menu darea de trabalho. No Ubuntu 10.10,o Sentinella fca no menuAplicati-vos/Ferramentas de sistema.

    Quando aberto, o Sentinella exibido em uma janela simples. Nose incomode em procurar por uma

    barra de botes ou menus, pois um

    grupo de opes no topo e no meioda janela j abrangem as principaisunes. Outros botes na metade

    inerior da tela oerecem aes quedependem das condies seleciona-das (figura 1).

    As condies que disparam umaao podem ser defnidas de ormagranular, graas a providenciais caixasde seleo e importao. Em vez demanter confguraes padro, vocpode adicionar entradas personali-zadas. Dependendo das condiesque voc aciona, as confguraes

    mudaro para reetir o contexto. Ascategorias bsicas incluem: carga daCPU, utilizao de memria, tre-go de rede, alm de dia e hora. possvel tambm selecionar aes aserem disparadas de acordo com ocomportamento de outros progra-mas. Nesse caso, o Sentinella exibeuma janela listando todos os proces-sos correntes e oerecendo escolhaspara a visualizao. Por exemplo, se

    voc tem um grande nmero de pro-

    AN

    LISE

  • 8/6/2019 LM_80_CE

    11/30

    56 www.linuxmagazine.com.br

    ANLISE | Monitoramento de redes

    cessos ativos, pode querer destacarsomente os de usurios.

    Na parte inerior da janela, vocencontra seis aes que pode atribuirs condies selecionadas. Quandoo evento selecionado ocorre, vocpode reiniciar ou desligar a mqui-na, coloc-la para dormir (sleep) outocar um alarme de alerta. Trs di-

    erentes alarmes esto disponveis.Um modo muito mais exvel executar um comando quando umevento especfco ocorre. Comoalternativa, voc pode fnalizar oprograma. Nesse caso, voc vernovamente uma lista de processospara escolha (figura 2).

    Aps fnalizar as confguraes,voc pode comear a monitorar osistema clicando em Start, no centro

    inerior da tela. A janela se tornar

    acinzentada e voc no poder verentradas adicionais. O Sentinellaexibe um cone de mensagem nopainel para que voc possa echar ajanela. Quando voc clica no cone,a janela do programa exibida nodesktop. Para fnalizar o programa,voc deve clicar com o boto direitodo mouse no cone no painel e clicar

    e selecionar a opo Quit.

    RiscoO Sentinella capaz de desligar ocomputador quando a carga da CPU menor do que 5% se voc assimescolher; contudo, voc precisa to-mar cuidado com esse tipo de ao.Eeitos indesejados podem ocorrer,incluindo perda de dados, caso oSentinella eche o sistema durante

    uma rotina de backup, por exemplo.

    No se preocupe, pois mesmo malconfgurado o Sentinella no dani-fcar seu hardware.

    Cenrios deaplicativosO Sentinella poder ajud-lo aeconomizar energia se voc usa o

    sotware no laptop ou notebook. Aps selecionar CPU load comocondio, entre com o mnimo decarga direita do sinal de percen-tual. Para evitar que o seu compu-tador execute uma ao defnidaantes que ocorra a condio, def-na o perodo de tempo no qual acarga fcar abaixo do limite espe-cifcado para que o desligamentoocorra. necessrio entrar com

    um perodo vlido de tempo para

    Figura 1: O programa fcil de usar, graas suainterface amigvel.

    Figura 2: Escolha de um programa ativo na janela deprocessos.

    Figura 3: O Sentinella pode ajud-lo a economizar energia. Figura 4: Monitoramento preventivo.

  • 8/6/2019 LM_80_CE

    12/30

    57

    | ANLISEMonitoramento de redes e sistemas

    Linux Magazine #80 | Julho de 2011

    que a confgurao seja concludacom sucesso. Abaixo, na janela doprograma, habilite a ao Sleep eescolha Suspend ou Hibernate direita. Certifque-se de ter espaoem disco sufciente ou a ao pode

    provocar perda de dados (figura 3).Em outro cenrio, o Sentinella

    pode ser til para administradoresde rede. Uma vez que o programa capaz de monitorar trego de rede,ele pode identifcar e reportar ano-malias em tempo real. Voc podemonitorar a entrada e a sada de da-dos por meio das interaces ativas derede. Se os volumes estiverem abai-xo de limites determinados por um

    perodo de tempo, voc pode pedirpara disparar um alarme.Um cenrio como esse poderia

    prevenir que transerncias de da-dos indesejados e em larga escalaocorressem no ambiente de servi-

    dor. Em ambientes heterogneos,em particular, essa uma ormaefciente de identifcar a inun-cia de um malware. Para esse tipode monitoramento, simplesmentemarque a opo Network trafc, de-

    fna as interaces de rede do sistemae volumes de dados e programe oalarme na seo de aes h trsmelodias para escolher no lado di-reito da janela (figura 4).

    ConclusoO sotware Sentinella assume a res-ponsabilidade de monitorar vriastareas em um sistema e respondecom aes predefnidas quando cer-

    tos estados de sistema ocorrem. Aerramenta cil e intuitiva parainstalar; no entanto, os usurioscorrem riscos. Por exemplo, o so-tware no mostra uma mensagemde alerta quando um estado de

    sistema defnido ocorre antes dodesligamento ou da execuo daao defnida. O risco de perda dedados real. Antes de implantaro programa, voc deve considerarcuidadosamente quais aes so

    signifcativas no contexto de estadosespecfcos do sistema.

    Mais informaes

    [1] Sentinella:http://sourceforge.net/projects/sentinella

    Gostou do artigo?

    Queremos ouvir sua opinio.Fale conosco em

    [email protected]

    Este artigo no nosso site:

    http://lnm.com.br/article/5472

    o

    a

    m.

    ?

    http://www.konsultex.com.br/http://www.konsultex.com.br/http://www.konsultex.com.br/http://www.konsultex.com.br/http://www.konsultex.com.br/
  • 8/6/2019 LM_80_CE

    13/30

    63

    | TUTORIALApache Jena

    Linux Magazine #80 | Julho de 2011

    Apache Jena

    Elo perdidoConhea um novo mtodo para processar,

    combinar, analisar e apresentar informaes

    ocultas em dados brutos usando a

    plataforma Jena: web semntica e dados

    vinculados (linked data) para Java.por Ian Dickinson

    Ocompartilhamento de dados um dos tpicos mais quentesatualmente na computao.

    As ontes podem ser desde APIs do Fa-cebook, dados cientfcos abertos e atdados pblicos gerados pelo governoe disponibilizados gratuitamente. Portodos os lados, h algum liberandonovos dados para serem exploradospor desenvolvedores e cientistas dedados [1]. Nesse cenrio, espera-seque projetistas, exploradores de dados

    e desenvolvedores criem aplicativosde valor para usurios fnais, com re-cursos novos e interessantes.

    Sendo um desenvolvedor, comoabordar essa montanha de inorma-es? Que erramentas e tcnicassero teis? Muitas abordagens estodisponveis, variando desde de sim-ples anlise de arquivos com valoresseparados por vrgulas (CSV) em pla-nilhas de dados, consulta em bancos

    de dados relacionais, chegando a er-ramentas de larga escala e distribudasde anlise de inormaes na nuvem.

    Como cada tcnica possui vanta-gens e desvantagens, e ao invs de

    azer um levantamento completo detodas elas, vamos ocar apenas emdados semnticos vinculados, maisespecifcamente na plataorma Jena.

    A web semnticaNo por acaso, as tcnicas e ideias daweb semntica acabaram ganhandouma reputao de complexidade edifculdade. O modelo de XML pa-dro do RDF (Resource DescriptionFramework) grosseiro, razo pela qual

    modelar o mundo real pode revelar nu-ances conituosas. No entanto, em seuncleo esto duas ideias importantes.

    A primeira a de que estruturas ricase expressivas de dados, descrevendo in-ormaes sobre determinado assunto,podem ser construdas a partir de umconjunto de inormaes simples so-bre o relacionamento entre pares deelementos: duas entidades nomeadasou uma entidade nomeada e um valor,

    como um nmero.Um exemplo simples: suponhamosque o identifcador para o artigo quevoc est lendo artigo123 (voltaremosa isso em breve); ento, a sentena Ian

    autor do artigo123, sobre Jena po-deria ser escrito com a seguinte linhade cdigo, podendo ser representadografcamente como na figura 1.

    . Jena.

    Matematicamente, a estrutura exem-plifcada na fgura umgrfco dire-cionado, que rotula os dois ns e suasextremidades. Para ser simples, irei mereerir a ele apenas como umgrfco.Uma vez que cada declarao contmtipicamente trs elementos o assunto,o objeto e o nome do predicado queos liga , o termo triple usado paradenotar tal declarao. Isso leva a outrasexpresses como triplestore, para umbanco de dados constitudo de triples.

    A segunda das duas ideias impor-tantes o nome das coisas que noso valores, que representado porURIs. Um URI (Uniform Resource

    Identifer, ou Identifcador de RecursosUniorme) reere-se a um conjuntode identifcadores defnidos pela RFC2396. O mais importante desse con-junto que ele inclui identifcadoreshttp://para websites amiliares. O usode URIs por identifcadores tem duasconsequncias importantes: primei-ro, todos os identifcadores ormamefcazmente um grande namespace,minimizando as chances de usar aci-

    dentalmente um mesmo nome paraFigura 1: Uma representao grfica da sentena.

    TUT

    ORIAL

  • 8/6/2019 LM_80_CE

    14/30

    64 www.linuxmagazine.com.br

    TUTORIAL | Apache Jena

    se reerir a coisas dierentes. Segun-do, a maioria dos URIs podem serresolvidos ou procurados com umnavegador de Internet, de orma qued inormaes sobre o termo queest sendo identifcado.

    Alm das consequncias bviasde ter o signifcado, ou a semntica,declarado explicitamente, isso signi-fca tambm que o responsvel pelamanuteno do domnio web quehospeda o identifcador tem algumaautoridade sobre o uso ou signifca-do pretendido do termo. Alm dis-so, qualquer um pode reutilizar umtermo publicado em um domnio.

    Alis, a web semntica acaba enco-

    rajando esse tipo de ao. No entan-to, somente pessoas com direitos de

    escrita direta sobre aquele domniopodem atualizar o signifcado maisdiretamente associado aos termos.

    Ento, para atualizar o exemplo como uso de URIs, precisamos considerarquais identifcadores usar. Sempre

    que possvel, deve-se tentar reutilizarvocabulrios existentes. O vocabulrioDublin Core Metadata Initiative[2]possui um conjunto bem estabelecidode vocbulos para metadados conhe-cidos, como o autor de uma matria.O prprio artigo, alis, eventualmenteganhar uma identidade no espaoweb de quem publica.

    Por enquanto, isso um rascu-nho. Imagine portanto o URI padro

    http://epimorphics.com/documents/draft#jena-1. O URI para dar cr-

    ditos ao autor deve ser tratado comcuidado, porque uma pessoa no um recurso de inormao na web.Essa questo, amplamente debatida,tem uma srie de solues que voalm do escopo deste artigo. Um

    URI elaborado com a classe Persondo vocabulrio Friend of a Friend(FOAF, ou amigo do amigo) [3], sersufciente. Com essas mudanas, oexemplo fca assim:

    rdf:type foaf:Person.

    dcterms:creator.

    .

    dcterms:subjectJena.

    rdf:typefoaf:Document.

    Claro que poderamos entrar emmuitos detalhes sobre as vrias tecno-logias de web semntica: linguagensde consulta, armazenamento persis-tente, vocabulrios especfcos e assimpor diante. Para ocar na prtica, noentanto, alareremos apenas sobre

    como os triples podem ser manipu-lados com cdigo Java usando o Jena.

    Apache JenaO Jena umrameworkJava de cdigoaberto para criar, armazenar, manipulare consultar dados semnticos na web.Foi desenvolvido originalmente por pes-quisadores dos laboratrios da HP noReino Unido e tem sido amplamenteutilizado desde seu primeiro lanamento

    em 2001. Em 2008, o time do Jena dei-xou a HP e, em 2009, o Jena se tornouum projeto incubado na Apache [4].

    Ao invs de listar os recursos tc-nicos do Jena, vamos introduzir aabordagem de algumas partes doramework enquanto trabalhamospor meio de exemplos. Algumaslinhas de terminologia bsica, noentanto, ajudaro.

    O grfco descrito previamente

    gerenciado no cdigo Jena como um

    Listagem 1: Cdigo gerado pelo Schemagen no Doap.Java

    01 /** URL de uma homepage de um projeto, associada com exatamenteum projeto. */

    02 public static final Property homepage =m_model.createProperty( "http://usefulinc.com/ns/doap#homepage" )

    Listagem 2: O ncleo do Init.java

    01 public void run() {

    02 if (noTDB() || hasOption( "f" )) {03 // (re)criar a imagem TDB04 FileUtils.deleteQuietly( getTDBFile() );05 FileUtils.forceMkdir( getTDBFile() );06 Dataset dataset = TDBFactory.createDataset( getTdbLocation() );0708 // o nome do projeto um argumento requisitado09 String projectName = getArgs()[0];10 String projectURI = projectNamespace() + projectName;11 Resource project = dataset.getDefaultModel().

    createResource( projectURI );1213 project.addProperty( RDF.type, DOAP.Project );14 project.addProperty( DOAP.name, projectName );1516 // adicione descries a partir de opes de linhas de

    comando17 addOptionalProperty( project, DOAP.shortdesc, "s" );18 addOptionalProperty( project, DOAP.description, "d" );1920 System.out.println( String.format( "Criada nova descrio

    DOAP para %s projetos com %s triples", projectName,dataset.getDefaultModel().size() ) );

    21 }22 else {23 System.out.println( "Logbook j existe, nenhuma ao sendo

    tomada" );24 }25 }

  • 8/6/2019 LM_80_CE

    15/30

    65

    | TUTORIALApache Jena

    Linux Magazine #80 | Julho de 2011

    objeto Model. O objeto , nos termos doJava, uma interace ou especifcao abs-trata que permite ao Jena ornecer vriostipos de objetos Model (armazenado namemria, no disco, sem interernciade disco etc.) com uma API comum.

    O Model uma das abstraes chavesdo Jena para lidar com RDF.Um recurso no modelo, denotado

    por uma URI, representado por umobjeto Resource, enquanto um valor,como um nmero, um Literal. Opredicado que liga os ns do grfcoso objetos Property, e Property umasubclasse de Resource. Finalmente,um objeto Statement representa umtriple. Um determinado Statement ter

    um assunto Resource, um predicadoProperty e um objeto, que pode sertanto um Resourcequanto um Literal.

    Chega de teoria. Vamos ver umpouco de cdigo.

    Exemplo de aplicativoSuponhamos que voc queira compar-tilhar detalhes com outros desenvol-vedores de cdigo aberto, como, por

    exemplo, o nome do projeto, a locali-zao do repositrio onte, quem esttrabalhando nele e assim por diante.Felizmente, um vocabulrio j existepara gravar esse tipo de inormao:DOAP (Description o a Project, ou

    descrio de um projeto) [5][6].Coincidentemente, os projetos daApache so encorajados a usar arqui-vos DOAP. Embora o DOAP orme oncleo de um caderno de notas de umaplicativo, voc deve ter a possibilidadede adicionar outras inormaes quepaream relevantes sem ser restringidopor esquemas rgidos de dados.

    Projetar uma erramenta visual ricaem recursos para criar e editar arqui-

    vos DOAP est alm do escopo desteartigo. Em vez disso, tenho a meta decriar um conjunto de erramentas delinhas de comando e atualizar um di-rio de bordo, imprimir um relatrio eenriquec-lo ao mesclar inormaesa partir de uma onte externa.

    O objetivo deste miniprojeto gerare manter dados DOAP para um proje-to em particular; assim, eu presumirei

    que os dados DOAP esto armazenadosno diretrio do prprio projeto. Como tempo, meu objetivo poder ser ode desenvolver a erramenta para ar-mazenar mais do que simples dadosDOAP, talvez at incluir controle de

    tempo, entre outras inormaes. Poressa razo, vou generalizar o nome echam-lo simplesmente de ProjetoDirio de Bordo, representado pelotermo plb. Para brincar com o cdigo,veja o quadro 1.

    Uma escolha razovel para o projetoseria armazenar os dados em um sim-ples arquivo RDF. No entanto, comomeu o objetivo ilustrar os vrios recur-sos do Jena, vamos armazenar o RDF

    gerado em um triplestore persistente.O Jena tem uma srie de solues dearmazenamento RDF persistentes.Vamos usar o TDB, customizado paratriplestore, com a capacidade de arma-zenar um grande nmeros de triplescom efcincia sem requerer um bancode dados relacional adicional, como oMySQL, por exemplo.

    O TDB pode suportar ordens demagnitude muito maior que aquelasque eu vou gerar agora, mas ele tor-

    na bem direta a tarea de atualizar obanco de dados persistente.

    Listagem 3: Consultar o ref:type

    01 /** O recurso com URI tem rdf:type t? */02 public boolean hasType( String u, Resource t ) {03 return getModel().getResource( u ).hasProperty( RDF.type, t );04 }

    Listagem 4: Acumular documentos RDF descobertos pormeio do sindice.com

    01 // fase de leitura: adicione os documentos em um modelo combinado02 Model m = ModelFactory.createDefaultModel();03 for (ResIterator i = sIndex.listSubjectsWithProperty( RDF.type,Sindice.Result ); i.hasNext(); ) {

    04 String docURL = i.next().getPropertyResourceValue(Sindice.link ).getURI();

    0506 // poderamos ser mais sofisticados sobre a provenincia dos recursos07 try {08 m.read( docURL );09 }10 catch (RuntimeException e) {11 // alerte sobre falha de leitura, mas siga na leitura de

    outros documentos12 log.warn( String.format( Failed to retrieve from %s

    because: %s, docURL, e.getMessage() ) );13 }14 }

    Quadro 1: Teste o cdigo

    Para o projeto, voc precisar de

    um compilador Java que suporte

    Java 1.6. Eu estou usando tam-

    bm o Maven para gerenciar o

    Jena e outras bibliotecas depen-

    dentes. Ento, voc precisar da

    verso mais recente do mvn. Final-mente, o cdigo est no reposit-

    rio Git e o exemplo tambm lidacom metadata Git, de modo que

    voc precisar do Git instalado. O

    pom.xml, no diretrio raiz do proje-to, lista as dependncias de soft-

    ware. O Maven instalar todos au-

    tomaticamente como necessrio.

    Para clonar o projeto do repositrio

    Git, use o seguinte comando:

    git clone [email protected]:epimorphics/epimorphics-open/jena-plb-tutorial.git

  • 8/6/2019 LM_80_CE

    16/30

    66 www.linuxmagazine.com.br

    TUTORIAL | Apache Jena

    Incio do projetoO problema tem quatro componen-tes: inicializar o projeto, atualizar adescrio DOAP manualmente, au-mentar a descrio automaticamen-te e reportar o perfl DOAP. Cada

    componente chamado pela linhade comando (quadro 2).Inicializar o projeto algo direto:

    voc precisar criar o elemento dearmazenamento TDB (ou recriar seo usurio quiser orar a criao deum novo elemento de armazenamen-to) e adicionar um recurso root pararepresentar o projeto DOAP que es-tou descrevendo. Criar um elemen-to de armazenamento TDB requer

    um diretrio para os dados vamosusar o ./.plb/tdb por padro e umchamado Java. O chamado umalinha getTdbLocation(), mtodo queretorna uma string especifcamenteno diretrio TDB.

    Dataset dataset = TDBFactory.createDataset( getTdbLocation() );

    Criar o recurso root para o projeto conceitualmente simples: preciso so-mente um URI para denotar o projeto e

    esse deve ser atribudo ao doap:Project.Aqui,doap: o componentenamespacedo URI e se expande parahttp://usefu-linc.com/ns/doap#, enquantoProject onome de uma classe RDFS. Matemati-camente, classes RDFS (RDF Schemaou Esquema RDF) correspondem aconjuntos de coisas que compartilhamcaractersticas semelhantes o conjuntode todas as coisas que so descries deprojetos, por exemplo.

    Para desenvolvedores, interes-sante pensar nas classes RDFS comoanlogas aos types na linguagem Javaou outras linguagens de programa-o. Tenha em mente, no entanto,que as classes Java e as classes RDFStm dierenas importantes. Em par-ticular, medida que voc descobremais inormaes sobre um recurso,voc poder achar que se trata de ummembro de uma classe que voc no

    sabia de que azia parte. Alm disso,

    um recurso pode ser membro de mui-tas classes ao mesmo tempo.

    Obter o cdigo Java para azer comque o recm criado projeto seja membroda classedoap:Project vai requerer umnovo triple, com o projeto como assun-

    to, o predicado especial rdf:typecomopropriedade e um recurso denotandoa classe doap:Projectcomo um objeto.O URI doap:Project no muda (a noser que o esquema mude), ento esteser defnido como constante. Emboraseja possvel escrever manualmente adeclarao de uma constante no cdi-go, correramos o risco de azer erros detranscrio e criar problemas de manu-teno com a mudana de esquema.

    Felizmente, o Jena oerece umaerramenta que gera um cdigo Javaautomaticamente a partir de um ar-quivo RDFS, oschemagen. A classe Javagerada defne constantes para cada umadas classes, propriedades e recursos in-

    dividuais defnidos no arquivo. A erra-menta Schemagen pode ser executadaa partir da linha de comando ou comoum plugin Maven [7]. Uma amostrado cdigo gerado aparece na listagem1. Os vocabulrios completos esto

    includos no projeto para download.Considerando que eu tenho acesso spropriedades e classes DOAP por meioda classe DOAP.java, o incio do projeto direto, como mostrado na listagem 2.

    Incluso manual nodirio de bordoMuitos bits de inormao til sobreum projeto devem ser capturados,

    inclusive as vrias propriedades die-rentes utilizadas pelo DOAP. Assim,eu quero que meus usurios possamadicionar inormaes de orma in-cremental. No entanto, necessrioatingir um balano na interace apre-

    Listagem 4: Acumular documentos RDF descobertos pormeio do sindice.com

    01 // fase de leitura: adicione os documentos em um modelo combinado02 Model m = ModelFactory.createDefaultModel();03 for (ResIterator i = sIndex.listSubjectsWithProperty(

    RDF.type, Sindice.Result ); i.hasNext(); ) {04 String docURL = i.next().getPropertyResourceValue(

    Sindice.link ).getURI();0506 // poderamos ser mais sofisticados sobre a provenincia dos recursos07 try {08 m.read( docURL );09 }10 catch (RuntimeException e) {11 // alerte sobre falha de leitura, mas siga na leitura de

    outros documentos12 log.warn( String.format( "Failed to retrieve from %s

    because: %s", docURL, e.getMessage() ) );13 }

    14 }

    Listagem 5: Modelo de consulta

    01 String queryString = String.format( "describe ?s where{?s \"%s\"}", FOAF.mbox_sha1sum.getURI(), mboxSha1 );

    02 // analise a consulta03 Query query = QueryFactory.create( queryString ) ;04 // vincule ao modelo05 QueryExecution qexec = QueryExecutionFactory.create(

    query, collected );06 // faa a consulta07 dev.getModel().add( qexec.execDescribe() );

  • 8/6/2019 LM_80_CE

    17/30

    67

    | TUTORIALApache Jena

    Linux Magazine #80 | Julho de 2011

    sentada aos usurios. Como no hmodelo de dados fxo, o RDF permiteque qualquer predicado seja anexadoa qualquer recurso, algumas vezes de-clarado como qualquer um pode dizerqualquer coisa sobre qualquer coisa.

    Esse modelo pode ser muito pode-roso, mas tanta abertura pode difcul-tar as coisas. Por exemplo, h algumasrestries na estruturao da interaodo usurio. Nesse caso, no espero queos usurios digitem uma propriedadeURI completa ou linha de comando spara adicionar um triple para a descri-o do projeto; ento, permitirei quequalquer propriedade no vocabulriodo DOAP seja abreviada somente com

    seu nome de local, menos o namespa-ce. Os usurios digitaro algo como:

    $> plb set language Java$> plb set -r release 1.0.1

    Esses dois comandos adicio-nam valores para doap:language edoap:release; a bandeira -r substi-tui um valor existente armazenado.

    O cdigo RDF especfco na classede ao Set pequeno: a maior partedo cdigo ocupada com checagem

    de rotina e manipulao de argumen-

    tos. A defnio da classe completapode ser encontrada no download.

    Com Jena, toda inormao deestado mantida no objeto Model.No entanto, um objeto Resourcecontm reerncia para o Model que

    o contm. Ento, eu posso pergun-tar ao Resource pelos seus triples re-lacionados, ou seja, pergunto se umdeterminado URI corresponde aorecurso com um rdf:type em parti-cular (aqui atribudo ao parmetrotype; listagem 3).

    Dado um Resource denotando oprojeto, posso adicionar um novotriple com esse recurso como umassunto, usando o mtodo addPro-

    perty. J que eu optei por usar ummodelo baseado em TDB persistente,eu no preciso azer uma chamadaseparada para salvar os triples atua-lizados no disco.

    Dados automticosno dirio de bordo

    At ento, eu criei um novo diriode bordo usando TDB e uma arma-zenagem triple, defni um recurso

    para representar o projeto e permiti

    que os usurios anexassem algumaspropriedades linha de comando. um comeo slido, mas no ezmuito ainda pela web semntica eos princpios de dados ligados.

    Meu projeto tem alguns desenvol-

    vedores. Deste modo, vamos assumirque eu quero anotar no meu diriode bordo quaisquer inormaes quepossam ser coletadas sobre eles parater a viso mais fel possvel sobreo projeto. Para evitar questes deprivacidade, vamos usar somenteinormaes pblicas.

    Qual seria a estratgia? Se o projetoest usando um sistema de gerencia-mento de recursos, posso listar todos

    eles acilmente. Nesse tutorial, voupresumir que o cdigo gerenciadopor um repositrio Git. Algum pro-cessamento simples do log do Gitlistar os desenvolvedores por nomee e-mail e podemos usar o endere-o de e-mail como uma chave parareunir mais dados.

    Amigo do amigo (Friend of aFriend ou FOAF [8]) outro vo-cabulrio RDF usado amplamen-te. As pessoas utilizam FOAF para

    publicar dados pessoais, como

    Listagem 6: Listar todos os desenvolvedores do projeto

    01 $ sp="prefix foaf: prefix doap: prefixplb: prefix rdf:

    02 $ tdbquery --loc=.plb/tdb "$sp select ?p ?e ?w {?p a doap:Project . ?p doap:developer ?d. optional{?d foaf:mbox ?e ; foaf:homepage ?w}}"

    03 --------------------------------------------------------------------------------04 | p | e | w |05 ================================================================================06 | plb:plb | "mailto:[email protected]" | |07 | plb:plb | "mailto:[email protected]" | |

    08 --------------------------------------------------------------------------------

    Listagem 7: Listar todas as propriedades do projeto

    01 $ tdbquery --loc=.plb/tdb "$sp select ?p ?o where {?proj a plb:root . ?proj ?p ?o} order by ?p"02 ----------------------------------------------------------------------------------------03 | p | o |04 ========================================================================================05 | doap:description | "A Jena tutorial showing how to create DOAP project descriptions" |06 | doap:developer | |07 | doap:name | "plb" |08 | doap:shortdesc | "Jena PLB tutorial" |09 | rdf:type | doap:Project |10 ----------------------------------------------------------------------------------------

  • 8/6/2019 LM_80_CE

    18/30

    68 www.linuxmagazine.com.br

    TUTORIAL | Apache Jena

    websites, detalhes de contato, in-teresses e amigos que conhecempor reerncia de perfs de outrosamigos. A princpio, eu poderiausar esses detalhes do log inicialpara procurar inormaes pblicas

    dos membros e adicionar automa-ticamente ao dirio de bordo. Nahistria inicial do FOAF, a prticade disarar endereos de e-mailpara evitar spams era uma medidacomum contra estes; assim, preci-samos buscar pela soma SHA1 dosendereos de e-mail dos meus de-senvolvedores. Um algoritmo idealpara obter essa inormao seria:

    for each unique committer C

    let m be the email address of Clet s be sha1( m )run the sparql query:describe ?person where

    {?person foaf:mbox_sha1sumvalue of s}

    A linguagem SPARQL a padropara azer consultas em armazena-gens triple RDF e totalmente su-portada pelo Jena. Ela tem quatroverbos de consulta:

    select: entrega linha de valorescorrespondentes, semelhante s ar-mazenagens relacionais SQL;

    ask: confrma se um padro deconsulta pode ser correspondido;

    construct: cria um novo grfco

    com o uso de templates e padres econsultas;describe: transere a responsa-

    bilidade de retornar uma descriotil de um recurso para um servidor,suportando especifcamente o casono qual o cliente no sabe a estrutu-ra do grfco contendo um recursoem particular.

    Tipicamente, o servidor retornaalgum tipo de descrio vinculada [9].

    O ponto chave, aqui, que o clien-te meu programa no sabe os es-quemas que podem ser usados paraanotar um recurso particular, razopela qual os verbos descritos so teispara obter um conjunto de dados quepodem ser processados localmente.

    O nico problema com meu algo-ritmo, que, no momento da escrita,um servio disponvel publicamenteque agregava dados FOAF de ml-tiplos pontos de publicao fcou

    indisponvel. No entanto, o projetode servio de pesquisa Sindice [10]proporciona um ndice navegvelpara todos os documentos RDF quepossam ser detectados. Posso emendarmeu algoritmo da seguinte maneira:

    for each unique committer Clet m be the email address of C

    let s be sha1( m )query sindice.com for docs

    mentioning sfor each found document

    accumulate the docinto local model L

    run the sparql query against model L:describe ?person where

    {?person foaf:mbox_sha1sumvalor do s}

    A princpio, o programa poderiaobter uma lista de desenvolvedores dequalquer onte de sistema de gerencia-mento, no entanto o tutorial somentelida com o repositrio Git. O retorno

    daquela parte de cdigo um Modeldo

    Jena, contendo recursos denotando osdesenvolvedores no projeto, cada umcom um foaf:mbox denotando seu en-dereo de e-mail como dado ao Git.O que so esses recursos, no entanto?Uma vez que eu no sei as reais identi-

    dades dos desenvolvedores, apenas umdos endereos de e-mail, que recursoURI deve ser usado para denotar cadadesenvolvedor? Eu poderia criar umidentifcador, porm o RDF tambmpermite um tipo especial de recursochamado recurso annimo (anonymousresource). Esse recurso age como qual-quer outro, exceto pelo ato de no teridentidade conhecida. Por razes his-tricas, normalmente chamado de

    bNode, que pode ser usado como umalocador de recurso, sobre o qual co-nheo a existncia e propriedades, masno conheo a identidade. No exemploplb, eu crio bNodes para denotar osdesenvolvedores antes de reunir inor-maes sobre eles de ontes pblicas.

    A API Sindice muito cil: schamar http://sindice.com/search?q=com o termo de busca depois do si-nal de igual (=). Esse endereo usanegociao de contedo HTTP

    para determinar o ormato no qualdeve retornar resultados, o que azda busca algo muito natural para oJena, uma vez que o mtodo Model.read() az com que o tipo avorito decontedo v ao RDF. Para procurarpor todos os documentos que men-cionam uma caixa de correio SHA1em particular, mboxSha1, tudo o queeu tenho de azer digitar:

    Model sIndex = ModelFactory.createDefaultModel();

    sIndex.read( http://api.sindice.com/v2/search?q= + mboxSha1 );

    O Model resultante contm umconjunto de recursos sindice:Resultdenotando as buscas. Para cada umadas buscas, eu tento executar o linkpara o documento original, tendoem mente que isso pode alhar se odocumento oi indexado h algum

    tempo. Alistagem 4

    mostra o processo.

    Quadro 2: Empacotador delinhas de comando

    Uma variedade de comandos pode

    ser executada de um shell. Em vez

    de um script Bash para cada um

    deles, um script empacotado, plb,pode chamar um conjunto de co-

    mandos diferentes. Veja o exemplo:

    plb init test-project

    O script Bash plb chama um pro-grama Java para desempenhar o

    comando predefinido no primeiroargumento, com a conveno de

    que um comando cmd correspondea classe Java com.epimorphics.plb.Cmd. Para ter dependncias no cami-nho da classe, o script empacotador

    executa o programa com mvn:exec,que, por sua vez, executa um pro-

    grama Java arbitrrio com todas as

    dependncias do pom.xml, baixandoas dependncias que faltam antes,

    se necessrio. O script Bash est no

    diretrio bin do projeto plb.

  • 8/6/2019 LM_80_CE

    19/30

    69

    | TUTORIALApache Jena

    Linux Magazine #80 | Julho de 2011

    Dado um modelo que contenhatriples potencialmente relevantese acumuladas, eu posso executara consulta descrita (listagem 5).Aqui, collected (linha 5) o modelocontendo os triples dos documen-

    tos que oram coletados da web edev (linha 7) so os recursos para odesenvolvedor sendo adicionados descrio do projeto.

    Resta um passo. Eu utilizei mui-tas inormaes da web. O modeloinclui uma srie de ontes denotan-do a mesma pessoa, alguma delassendo bNodes; e eu gostaria de sim-plifcar o grfco, mesclando essasontes redundantes.

    O Jena no tem uma erramentainterna para azer isso, mas no dicil com a propriedade foaf:mbox_sha1sum, que uma boa chave dedesambiguao. Em geral, essetipo de mesclagem de inorma-o pode ser bem complexo, masno com essa simples abordagem.Finalmente, adicionei os resulta-dos da consulta describe para meumodelo TDB persistente.

    RelatriosA SPARQL til tambm quandoquero produzir relatrios simples apartir do dirio de bordo. O coman-do tdbquery est disponvel na insta-lao completa do Jena e executauma consulta contra um modeloTDB da linha de comando. Porexemplo, eu poderia listar todos osdesenvolvedores no projeto com osseus sites, se conhecidos (listagem

    6), ou listar cada propriedade doprojeto (listagem 7). Obviamente,eu poderia escrever relatrios muitomais abrangentes, mas precisaria detutoriais separados para isso.

    ConclusoMeu objetivo com este artigo oi intro-duzir os recursos Jena para uma tareaprtica. No pretendo, com isso, oe-recer a melhor orma de gerar perfs

    DOAP. Na verdade, o plugin Maven

    az esse trabalho. No entanto, a combi-nao de um ormato exvel de dadose a habilidade de mesclar inormaesde mltiplas ontes na web mostra aspossibilidades tanto do Jena em rela-o abordagem de web semntica e

    dados vinculados em geral.O Jena est, atualmente, incubadona Apache, e contribuies so bemvindas: bugs, sugestes, correes etc.Mais inormaes esto disponveisno site do Jena.

    Mais informaes

    [1] What is Data Science?por Mike Loukides,OReilly Radar, junho de2010: http://radar.oreilly.com/2010/06/what-is-data-science.html

    [2] Dublin Core MetadataInitiative: http://dublincore.org/

    [3] Vocabulrio FOAF: http://xmlns.com/foaf/spec/

    [4] Projeto Apache Jena: http://incubator.apache.org/jena

    [5] Vocabulrio DOAP: http://usefulinc.com/ns/doap#

    [6] Pgina DOAP: http://trac.usefulinc.com/doap

    [7] Cdigo-fonte Jena: http://jena.sourceforge.net/downloads.html

    [8] Projeto Friend of aFriend: http://www.foaf-project.org/

    [9] Descrio vinculada:http://goo.gl/rOjmt

    [10] Servio Sindice: http://www.sindice.com/

    Gostou do artigo?

    Queremos ouvir sua opinio.

    Fale conosco em

    [email protected]

    Este artigo no nosso site:http://lnm.com.br/article/5494r/art

    ine.c

    :4

    inio.

    r

    http://www.f13.com.br/http://www.f13.com.br/http://www.f13.com.br/http://www.f13.com.br/
  • 8/6/2019 LM_80_CE

    20/30

    70 www.linuxmagazine.com.br

    TUTORIAL | VoIP com Asterisk - parte IX

    Asterisk descomplicado

    VoIP comAsterisk parte IX

    O sistema telefnico ultrapassado, presente at pouco tempo atrs nas empresas, prolfico

    em cobranas: cada novo recurso ativado requer uma nova ativao de servio, com o preo

    adicionado ao pagamento mensal. hora de mudar. hora de criar sua prpria central VoIP.

    por Stefan Wintermeyer

    Na edio 79 da Linux Maga-zine

    , voc aprendeu sobrecomo provisionar suas exten-ses atravs de DHCP, recursos de listatelenica e redirecionamento de cha-madas. Nesta edio, vamos abordar oprovisionamento de ramais via DHCP,para implantao em massa de ramaiscom um nico arquivo de confgura-o. Vamos ver ainda como trabalharcom agenda telenica. Mos a obra!

    Provisionamentopor DHCP

    A implantao de ramais em massa, defnida como um processo ondevrios teleones equipados com umanica confgurao passam a uncionarautomaticamente. O sotwareAmoo-ma Gemeinschat, (Comunidade) [1]abordado na edio anterior, usa parao provisionamento coletivo de ramais,um mtodo que poderia ser aplicado

    em instalaes de outros procesostecnolgicos: um servidor DHCPbusca todos os teleones e conere acada um uma URL que correspondeao seu respectivo arquivo de confgu-rao. Um exemplo de confguraode ramais em massa via DHCP podeser conerido na listagem 1.

    Comumente utilizados na teleoniaVoIP, os teleones Snom [2] lem oslogs do servidor DHCP, sendo assim,

    o aparelho reconhece os trs primeiros

    bytes do endereo MAC do dispositivo

    e cria uma sequncia de ramais. Ento,para o servidor DHCP, o teleone no apenas uma confgurao de rede,mas tambm o nome de um servidorTFTP e um arquivo de inicializaodo ramal com seu respectivo nome.

    O teleone Snom converte o en-

    dereo MAC do aparelho de boo-tfle-name por um endereo {}mac (para outros teleones podeser necessrio instalar o mduloMod_rewrite do Apache). Isto garanteao servidor de provisionamento que

    Listagem 1: dhcpd.conf01 ;-02 ; Chamar o ramal 123456703 ;-04 exten => 1234567,1,Verbose(${CALLERID(num)})05 exten => 1234567,n,GOToIf($[${CALLINGPRES}=35]?abuse1|1)

    06 exten => 1234567,n,Dial(SIP/1001,30)07 exten => 1234567,n,Playback(local/ed-greeting)08 exten => 1234567,n,VoiceMail(1001@default)09 exten => 1234567,n,Hangup()10 ;-11 ; Tratamento de chamadas annimas12 ; Local dos arquivos de udio abaixo13 ; /var/lib/asterisk/sounds/local14 ;-15 exten => abuse1,1,Answer16 exten => abuse1,n,Wait(1)17 exten => abuse1,n,Monitor()18 exten => abuse1,n,Playback(local/ed-greeting_offenders)19 exten => abuse1,n,WaitForSilence(500)20 exten => abuse1,n,Playback(local/ed-ola)21 exten => abuse1,n,WaitForSilence(500)22 exten => abuse1,n,Playback(local/ed-assinatura_nao_reconhecida)23 exten => abuse1,n,WaitForSilence(1200)24 exten =>25 abuse1,n,Playback(local/ed-entao_o_que_posso_fazer_por_voces)26 exten => abuse1,n,WaitForSilence(1000)27 exten =>28 abuse1,n,Playback(local/ed-o_que_especificamente)29 exten => abuse1,n,WaitForSilence(2000)30 exten => abuse1,n,Wait(1)31 exten => abuse1,n,Playback(local/ed-numero_restrito)32 exten =>33 abuse1,n,Playback(local/ed-infelizmente_sou_apenas_um_computador)34 exten => abuse1,n,StopMonitor()35 exten => abuse1,n,VoiceMail(1001@default)36 exten => abuse1,n,Hangup

  • 8/6/2019 LM_80_CE

    21/30

    71

    | TUTORIALVoIP com Asterisk - parte IX

    Linux Magazine #80 | Julho de 2011

    o dispositivo MAC ir receber umcabealho HTTP com um nome,

    como por exemplo, Snom 370.Um script PHP chamado gera aconfgurao ao iniciar. A confgura-o para cada abricante dierente,com um teleone Snom em um casosimples como na listagem 2 voc podetransormar qualquer extenso e per-sonalizar as teclas do teleone. Como Comunidade tambm possvelconfgurar os botes em uma interaceweb (figura 1). J os teleones Aastrapermitem que voc selecione uma va-

    riedade de confguraes do servidor deprovisionamento os teleones Snomtem muito a melhorar neste quesito.

    Releitura daconfigurao

    A maneira mais cil de confgurarum teleone Snom novo, realizan-do um reboot neste, chamando emconjunto o script:

    wget -q -O /dev/null -o/dev/null http://UIP_do_

    telefone/confirm.htm?REBOOT=yes

    No entanto, assume-se que o servi-dor Snom local (o do prprio aparelho)est habilitado e que no h nenhu-ma proteo por senha. Mas, se umasenha estiver confgurada, inorme-ano comando wget. Aps a reinicializa-o do aparelho, a nova confguraodo servidor de provisionamento do

    aparelho ser lida. Alternativamente,

    voc pode enviar a confgurao eeetuar o reincio do aparelho atravs

    de um dispositivo SIP Notiy persona-lizado, como o arquivo /etc/asterisk/sip_notify.conf ilustrado a seguir:[snom-check-cfg]Event=>check-sync;reboot=falseContent-Length=>0[snom-reboot]Event=>rebootContent-Length=>0

    Agora digite o comando sip notifysnom-check-cfg 1234 no terminal, paracarregar a nova confgurao no teleone.O comando no Shell uma chamada

    equivalente ao comando asterisk -rx\sip notify snom-check-cfg 1234\.

    Agenda eencaminhamentoEm uma empresa, no pode altar umaagenda telenica centralizada, com aqual todos os teleones se comuniqueme todos os seus usurios tenham acesso.Todos os kits de erramentas do Asterisk

    ornecem uma agenda de teleones emuma interace web interativa, e quepode ser personalizada de acordo coma necessidade do usurio, conorto quedepende do teleone conectado (algunsteleones no interagem bem com oComunidade). O sotware tambmpermite que a agenda de teleones sejaexibida no visor do aparelho (figura 2),atravs de um navegador XML. Outrosrecursos presentes no visor do teleone

    incluem uno de busca e ordenao.

    Muitos usurios usam o recurso deencaminhamento de chamadas para os

    teleones, e o Comunidadeas eetua deorma centralizada no servidor, gravandologs de cada uma delas. Elas podem serconfguradas atravs da interace webou um cdigo de servio no teleone.

    Na prxima edio da Linux Ma-gazine, na ltima parte deste tutorial,voc ir aprender como trabalharcom scripts automatizados. At l!

    Listagem 2: Configurao

    do telefone Snom01 language: English02 time_24_format: on03 date_us_format: off04 user_host1: 192.168.1.13005 user_name1: 123406 user_pname1: 123407 user_pass1: Sippasswort08 user_realname1: Paula Plauder09 active_line: 1

    Mais informaes[1] Amooma Gemeinschaft ou

    Comunidade: http://www.amooma.de/gemeinschaft/

    [2] Srie de telefones Snom:http://www.snom.com/de/products.html

    Gostou do artigo?Queremos ouvir sua opinio.Fale conosco [email protected]

    Este artigo no nosso site:http://lnm.com.br/article/5515

    sr/art

    .co

    :51

    igoo.

    Figura 1:Agenda de telefones do software Comunidade.

    Figura 2: O Snom 370 mostra a agenda de contatosusando o navegador XML do servidor Asterisk.

  • 8/6/2019 LM_80_CE

    22/30

    72 www.linuxmagazine.com.br

    PROGRAMAO | Open Search Server

    Servidor de busca aberto

    Busca comqualidade

    Analisamos a ferramenta de indexao

    Open Search Server e mostramos

    como integrar o recurso de busca

    ao seu website utilizando PHP.

    por Markus Feilner, Thomas

    Pfeiffer e Markus Heller

    Astartup (empresa de tecnologiarecm criada) rancesa Jaeksotoi criada em evereiro de 2010.Apenas um anos depois, o abricantelanou a verso 1.2 de sua erramentade busca e indexao, o Open SearchServer[1]. Sua relativa imaturidade evidente, assim como alguns aborreci-mentos. Mas tambm h uma quantidede recursos impressionantes.

    Indexao livreDe acordo com seu ornecedor, oOpen Search Server (OSS) vai vas-culhar sistemas de arquivos, bancos dedados e sites para criar rapidamentendices confveis e dar suporte a umprocesso preciso de investigao. Emoutras palavras, voc pode usar o OSS

    para adicionar unes de busca a umwebsite ou outro banco de dados epode at construir uma mquina debusca agregada para indexar e buscardados de mltiplas ontes na Internet.O indexador OSS suporta uma longalista de ormatos de arquivos. Uma APIest disponvel para acesso rpido e semcomplicao a resultados e a maioriade seus muitos recursos (figura 1).

    O alicerce da erramenta o Javaem um servidor Tomcat[2]. O meca-nismo de busca Lucene [3] permiteque administradores e desenvolvedoresusem sua sintaxe de interpretador deconsultas e unes de classifcao orado gerenciamento da interace (qua-dro 1). O OSS depende do Quartz [4]como agendador. A interace, rpida e

    exvel, implementada em Zkoss [5]e unciona com qualquer navegadorcompatvel com Ajax.

    Suporte corporativoAlm da variante livre, lanada sob mui-tas licenas (incluindo AGPL e GPLv3)por conta de sua estrutura modular, oornecedor, a Jaeksot, tambm oereceuma verso corporativa, com suporte

    opcional, acordo de nvel de servio(Service Level Agreement - SLA) e re-curso avanado na orma de mdulosinstalveis. O ornecedor tambm oe-rece desenvolvimento, implementaoe otimizao dos mdulos adicionais.

    A verso Community acil deinstalar: aa o download do arquivotar.gz do site, abra-o em um servi-dor web e execute start.sh no shell(start.bat no Windows). So neces-

    srios um servidor de web em un-cionamento com PHP5, php5-curl eJava Runtime Environment.

    O pacote no inclui um script init;se voc deseja executar o servidor per-manentemente, importante prestarateno no manual. Inelizmente, owiki do OSS [6]no oerece mais doque detalhes sobre o procedimento deinstalao. Para esse artigo, usamos aversoopen-search-server-1.2.1-r987.

    tar.gz de 30 de maro de 2011.Figura 1 Lucene, Tomcat e uma API flexvel combinados no Open Research Server.

  • 8/6/2019 LM_80_CE

    23/30

  • 8/6/2019 LM_80_CE

    24/30

    74 www.linuxmagazine.com.br

    PROGRAMAO | Open Search Server

    tamanhos aqui e, ento, confgurara lista de resultados.

    A aba Crawler onde voc es-pecifca o alvo de sua busca: web-sites, bancos de dados ou sistemasde arquivos. Vrios fltros esto dis-

    ponveis para auxili-lo a modifcarisso. A figura 2 mostra a subjanelado Crawl process para uma mquinaque est indexando o site inteiro daLinux Magazine.

    Uma das confguraes pode sermal interpretada: se voc or levado aachar que precisa aumentar ao mximoo nmero de sites porhost para um ser-vidor web com grande quantidade decontedo, vai provavelmente cair em

    uma armadilha. O valor somente dizao OSS quantas pginas recuperar nasesso antes de adicion-las em seu ndi-ce. Se voc confgurar este valor muitoalto, usar memria RAM demais ou

    possivelmente ver a mensagem de erroilustrada na figura 3. Em muitos casos,o OSS ou Java congela quando no temmais memria.

    Se voc quer criar um ndice deum site grande, certifque-se de que

    tenha memria sufciente em seu sis-tema. Para alocar 2 GB de RAM noJava Virtual Machine, voc simples-mente precisa adicionar as duas linhasseguintes ao seu script de inicializao:

    CATALINA_OPTS=-Xms2G -Xmx2G-server

    export CATALINA_OPTS

    possvel usar mais do que 2 GBem um sistema operacional de 64

    bits com Java de 64 bits. Neste caso,as opes a seguir permitem 6 GB dememria RAM para o Java:

    CATALINA_OPTS=-d64 -Xms6G -Xmx6G-server

    export CATALINA_OPTS

    Ferramentas de monitoramento,tais como Darkstat [7], nos reposit-rios Debian, monitoram o trego queisso cria ao mesmo tempo (figura 4).

    Alguns frewalls ou servidoresweb classifcam ondas de consultasmuito requentes como um ataquede negao de servio (DoS) e blo-queiam o cliente.

    De acordo com o ornecedor, oOSS capaz de indexar 16 lingua-gens; pode identifcar palavas intei-ras, ragmentos, ou variantes de umaorma bsica (radical [8]). A lista dosormatos de documentos inclui XML,HTML/XHTML, PDF, Microsot

    Word, PowerPoint, OpenOfce.org,RTF, texto puro (plaintext), Torrent,arquivos de udio (MP3/MP4, OGG,FLAC, WMA) e muitos outros. Parauma completa lista da instalaoatual, veja em Schema/Parser list.

    Consulta e lemaConsultas podem ser implementadascomo consultas HTTP via interaceXML e integradas ao seu website por

    meio de uma biblioteca de cliente

    Listagem 1: Consulta OSS01 title:($$)^10 OR title:("$$")^1002 OR03 titleExact:($$)^10 OR titleExact:("$$") 1004 OR url:($$)^5 OR05 url:("$$")^506 OR urlSplit:($$)^5 OR urlSplit:("$$")^507 OR08 urlExact:($$)^509 OR urlExact:("$$")^510 OR content:($$) OR11 content:("$$")12 OR13 contentExact:($$) OR contentExact:("$$")

    Figura 2 OSS pesquisando o website da Linux Magazine. O nmero mximo deURLs por campo de host completamente equivocado. Se voc entrar

    com um valor mais alto aqui, a memria se esgotar rapidamente.

    Figura 3 Zkoss apontando um aviso do Java heap space essa mensagemtipicamente refere-se falta de memria RAM para o JVM.

  • 8/6/2019 LM_80_CE

    25/30

    75

    | PROGRAMAOOpen Search Server

    Linux Magazine #80 | Julho de 2011

    PHP. A interace de gerenciamentotambm oerece uma tela de entra-da em Query/Edit/Query, que podeser usada para buscas no ndice. Alistagem 1 mostra as especifcaespadro para a verso anterior, mas

    que tambm unciona na 1.2 e acil-mente extensvel. A chave de busca representada por $$; seguido deum nmero que defne o peso; pala-vras-chave como title ou urlSplitdefnem onde e como exatamente otermo de busca pode ocorrer.

    O problema est requentementenos detalhes: enquanto o urlSplitreduz a URL http://www.open-sear-ch-server.compara a orma normali-

    zada http, www, ope, search e serv, ourlExact interpreta a mesma URLcomo os elementos http, www, open,search e server. De acordo com os de-senvolvedores, o OSS usa dierentesanalisadores para tal: o analisadorde texto identifca grafas similares,enquanto o urlExact, titleExact econtentExactusam o analisador padro.

    Na aba Scheduler, voc pode criarcronjobs para controlar o OSS porexemplo, para as reconstrues dos

    ndices (Optimize). A opo Runtimeoerece importantes opinies e comen-trios a respeito do ndice, do cachee dos estgios do sistema. O OSS tambm bem equipado para confgu-raes de alta disponibilidade: a abaReplication inclui caixas de entradapara as URLs e indexa nomes parainstncias de OSS mais detalhadas.

    API e PHPOs subdiretrios open-search-server/examples/php/OSSquery e open-sear-ch-server/php/example contem algunsexemplos de scripts PHP simples quevoc pode simplesmente integrar sua prpria pgina web, retirando,assim, unes de busca da interacede gerenciamento para o navegadordo cliente.

    Em webSearch.php, por exemplo,voc pode adicionar seu prprio

    ndice como padro, o que propor-

    ciona uma busca uncional de pontaa ponta, pelo menos parcialmente.Isso porque houve um lado negati-

    vo: a interace tem problemas comacentuao em alguns idiomas e no completamente capaz de imple-mentar os parmetros da linguagemde buscas Lucene. Realizar consul-ta na interace grfca melhor namaioria das vezes, mas no em todosos casos (figura5).

    Recomenda-se a API XML. De-senvolvedores podem us-la parabuscas no ndice em quase qual-

    quer linguagem de programao e mostrar os resultados. Tudoo que voc precisa azer adi-cionar os parmetros necessriosnos requerimentos corresponden-tes de HTTP na orma de umrequerimento GET:

    http://localhost:8080/select?use=Index&qt=Query&q=Keyword

    Quando v este tipo de consulta,

    o servidor retorna um arquivo XML

    contendo as combinaes junto coma prvia do texto correspondente (ousnippets). Em outras palavra, comoum programador, voc somente pre-

    cisa do seguinte:

    Figura 4 O Open Search Server local est analisando o servidor de web local amenos de 100KBps porque o administrador restringiu ao mximo o n-

    mero de linhas de execuo e frequncia de consultas na configurao.

    Figura 5 Se voc tentar usarparmetros mais

    exticos para o Lucene

    diretamente na consulta

    (por exemplo, a busca

    com ~), voc podefalhar por causa da

    implementao do OSS.

  • 8/6/2019 LM_80_CE

    26/30

    76 www.linuxmagazine.com.br

    PROGRAMAO | Open Search Server

    fltrar e validar o user input (tome

    cuidado, a API tambm pode deletaros documentos do ndice!).agrupar a string para consultar

    a API.analisar o documento XML re-

    tornado e ormatar a sada.A listagem 2 mostra um resumo

    de um simples script de API. Aslinhas 4 e 20 implementam umaproteo mnima contra cdigosmaliciosos. A linha 4 proporcionaproteo contra scripts de cross site

    (tcnica de programao malicio-

    sa), enquanto a linha 20 remove

    um delete se um ataque or bemsucedido. A matriz associativa paramscoleta todos os parmetros para aanlise de API, sendo que os par-metros use, qt e q so obrigatriose todos os outros so opcionais. Otemplate de busca est disponvelna distribuio e oerece uma an-lise bem simples do ndice.

    O prximo passo deinir quaiscampos voc quer retornar naresposta XML; isso eito naaba Query/Returned Fields. Neste

    exemplo, os campos so url e host(listagem 3).

    Os trs parmetros de colapsoespeciicam se o OSS deve agruparos resultados. O campo autoritati-vo livremente selecionvel; este

    poderia ser o host ou o ttulo dapgina. Usando esta abordagem,voc pode ter associaes seme-lhantes nos resultados at o usu-rio clicar novamente, melhorandoassim a legibilidade.

    Na listagem 2, este processo acon-tece da linha 9 11. No modo clus-ter, a conta mxima apenas 1; en-tretanto, voc no pode omitir esteparmetro. A linha 21 fnalmente

    concatena os parmetros da buscacom a URL do host e codifca osresultados. Um simples chamado aosimplexml_load_file($this->query) o bastante para executar qualquerpedido API ormulado deste modo.

    Voc obter, como retorno, um do-cumento XML como o mostradona listagem 3.

    Os resultados fnais esto dispo-nveis como doc in result, que in-terage com um loop foreach ($hits->result->doc as $doc) para cadaitem. Os dois arquivos modelo PHPda Linux Magazine Online [9] tam-bm suportam as caractersticas doLucene, incluindo a aplicao debuscas com coringas como como caractere ~, o que antes causavaproblemas (figura 5).

    Novidades na verso1.2 e previses

    A verso 1.2 apresenta diversas ca-ractersticas dignas de aplausos.O buscador web agora diz a vocquando ele atualizou a pgina nondice, usa chaves nicas para lem-brar pginas idnticas e permiteque voc ignore arquivos robots.txt. O banco de dados do craw-ler tambm entende buscas SQL;voc pode desabilitar tanto listas

    de padres como de excluso, e as

    Listagem 2: build-query.php

    01 function build_query($q){02 $params=array(); // todos os parmetros so adicionados aqui e03 // so removidas as tags04 $this->q=substr(trim(strip_tags($q),0,80));05 // basic parameters06 $params[use']='myIndex'; // ndice utilizado07 $params[qt']='search'; // Query Template08 // Collapsing09 $params[collapse.mode']='cluster';

    10 $params[collapse.field']='host';11 $params[collapse.max']=1;12 // Pagination13 if (isset($_GET[page'])) $params[start']=((int)

    $_GET[page']*10)-9;14 else $params[start']=1;15 $params[rows']=$this->rpp;16 $params[query']=trim($q); // chave de busca17 $params[sort']='score';18 $host= http://127.0.0.1:8080/select'; // URL do host OSS19 // In case somebody injected a "Delete" parameter:20 unset($params[delete']);21 $this->query=$host.'?'.http_build_query($params);22 }

    Figura 6 Verses futuras incluem a funo screenshot.

  • 8/6/2019 LM_80_CE

    27/30

    77

    | PROGRAMAOOpen Search Server

    Linux Magazine #80 | Julho de 2011

    anlises identifcam documentossimilares com mais confabilidade.

    A tag modified ainda um pro-blema bastante substancial. No mo-mento, ela detecta se a pgina oimodifcada, mas no detecta se so-

    mente a publicidade da pgina oisubstituda ou se o contedo emsi oi modifcado porque a pgina,por exemplo, contm um eed RSS.Voc pode usar o CSS para melhoraresta caracterstica em seus prpriosservidores de web usando a tag divpara esconder menus, propagandase eeds do indexador:

    O desenvolvimento est em pro-gresso em relao a muitas caracte-rsticas: de acordo com o desenvol-vedor Emmanuel Keller, um tipode page rank (baseado na unoscore do Lucene) oi parcialmenteimplementado. As unes score, ord,rord, byte, float, int, e short estocompletas. Um exemplo vlido deconsulta, ento, seria assim: score()+ rord(modified_date). A prximaverso incluir tambm uma unoscreenshot e uma extenso de rende-rizao. (figuras 6 e 7)

    O OSS ainda no pereito, masdefnitivamente est no caminhocerto. E rpido: quando execu-tado em um desktop, respondeu auma consulta de 25.000 pginas dondice do site da Linux Magazinesurpreendentemente rpido. Pou-qussimas vezes levou mais de meio

    segundo, como confrmado pelosnossos testes com centenas de URLsescolhidas aleatoriamente.

    Gostou do artigo?

    Queremos ouvir sua opinio.

    Fale conosco em

    [email protected]

    Este artigo no nosso site:

    http://lnm.com.br/article/5499r/art

    azine.

    :

    4

    a opin

    r

    Listagem 3: bResposta XML

    01 02 03 04 005 Query_Name06 07 08 09 http://www.myserver.com/path/file.html

    10 www.myserver.com11 Page title12 brief preview of

    matches and neighborhood ...13 14

    Mais informaes

    [1] Servidor Open Search: http://www.open-search-server.com/

    [2] Tomcat: http://tomcat.apache.org/

    [3] Lucene no Apache: http://lucene.apache.org/java/docs/index.html

    [4] Agendador Quartz: http://www.quartz-scheduler.org

    [5] Zkoss: http://www.zkoss.org/product/zk.dsp

    [6] Wiki OSS: http://www.open-search-server.com/wiki/en/index.php/Main_Page

    [7] Darkstat: http://dmr.ath.cx/net/darkstat/

    [8] Lemma: http://en.wikipedia.org/wiki/Lemma_(linguistics)

    [9] Scripts PHP: http://www.linuxmagazine.com.br/issues/80/OSS.zip

    Figura 7 Futuras verses incluem uma extenso de renderizao.

  • 8/6/2019 LM_80_CE

    28/30

    http://sodic.com.br/canais
  • 8/6/2019 LM_80_CE

    29/30

    82 www.linuxmagazine.com.br

    Linux Magazine #81

    Ubuntu User #22

    Admin Magazine #3

    IPv6

    Na prxima edio, voc ir conhecer mais sobre asvantagens e acilidades da implementao da novaverso do protocolo IP, o Ipv6. Esta nova verso,promete resolver os j presentes --- e os uturos, du-rante um bom tempo, esperamos --- problemas deendereamento IP da Internet.A verso 6 do protocolo IP no somente uma meraatualizao da verso atual; pode ser considerada comoum protocolo praticamente novo, desenhado paraazer todo o sentido no mundo em que vivemos hoje.O que vai mudar? Como implementar a nova verso?

    Ubuntu 11.04

    O novo Ubuntu 11.04, codinome Natty Narwhal,est saindo do orno. Muitas mudanas so espe-radas e previstas para este lanamento. Entre elas,

    podemos destacar o novo modo de organizaoda rea de trabalho, que agora utiliza o Unity, apolmica interace de usurio da verso netbook,que oi totalmente reescrita para a verso 11.04. Osrecursos multitouch tambm vm apereioados ecom muitas novidades. No perca!

    Conexo Segura

    Quem precisa conectar computadores com sis-temas operacionais diferentes frequentementeprecisa procurar por solues adequadas. O temade capa da prxima edio da Admin apresentasoftwares propiciam uma estreita relao entreWindows e Linux e que tambm servem paraconexes com roteadores e firewall como os da

    Cisco, Juniper ou Checkpoint.

  • 8/6/2019 LM_80_CE

    30/30

    http://www.bull.com/