lm_80_ce
Post on 07-Apr-2018
225 Views
Preview:
TRANSCRIPT
-
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 Silvarperegrino@linuxmagazine.com.br
EditoresFlvia Jobstraibizerfjobs@linuxmagazine.com.br
Kemel Zaidankzaidan@linuxmagazine.com.br
Editora de ArteLarissa Lima Zanini
llima@linuxmagazine.com.br
EstagirioFelipe Brumatti Sentelhas
fsentelhas@linuxmagazine.com.br
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) anuncios@linuxmagazine.com.brTel.: +55 (0)11 3675-2600
Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com
Amy Phalen (Amrica do Norte) aphalen@linuxpromagazine.com
Hubert Wiest (Outros pases) hwiest@linuxnewmedia.de
Diretor de operaes
Claudio Bazzoli cbazzoli@linuxmagazine.com.br
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
cartas@linuxmagazine.com.br 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 (alex_sun@terra.com.br, 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
cartas@linuxmagazine.com.br
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 git@codebasehq.com: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:i.j.dickinson@gmail.com" | |07 | plb:plb | "mailto:ian@epimorphics.com" | |
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
cartas@linuxmagazine.com.br
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 emcartas@linuxmagazine.com.br
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
cartas@linuxmagazine.com.br
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/
top related