sábado, 19 de abril de 2008

push @FISL9, $segundo_dia

Chegamos à PUCRS pouco antes das 9h e fui direto assistir ao YAPC::SA::2008. Cheguei lá e só vi o Randal Schwartz ($JAPH[0]) mexendo no seu laptop. Cumprimentei-o e fiquei esperando algo acontecer. Dez minutos depois chegaram o Eden e o Wallace, mas nada do Flávio Glock, que é quem normalmente lidera o encontro.

Tinha pouca gente quando o Wallace começou sua apresentação sobre o DBIx::Class, que é um módulo que implementa um mapeamento objeto-relacional. Eu não conhecia nada e fiquei um pouco decepcionado com a sua verbosidade... posso estar enganado ou comparando coisas diferentes, mas creio que já vi métodos mais diretos em Ruby.

O Eden seria o próximo a falar sobre Catalyst, que me interessava mais. Mas o Mac dele não tinha adaptador de vídeo pro projetor e ele levou uns 20 minutos pra conseguir transferir sua apresentação pro laptop do Wallace, usando meu pen drive. Tive que sair ainda no início da apresentação pra ver a do Ganeti. Na saída da sala fui tirar uma foto do grupo, que a essa altura já estava bem maior, e consegui um positivo do Randal.

Às 10h fui assistir à palestra sobre o Ganeti, proferida pelo Michael Hanselmann, do Google. Trata-se de de um cluster de virtualização desenvolvido em Python. Eu já havia assistido outra palestra sobre ele no CONISLI 2007 e cheguei a dar uma olhada. Na época, pareceu-me que ainda era um tanto imaturo. Segundo Michael, o Ganeti é usado na implementação dos serviços corporativos do Google, nos seus diversos escritórios, e não para implementar os serviços do Google.com. A arquitetura básica atual usa 20 servidores de 64-bits em um rack iniciando umas 80 instâncias, que é o termo que ele usa pra falar das VMs. Esses clusters são usados pra suportar serviços como DNS, DHCP e NTP, mas não serviços com maior demanda de desempenho, como servidores de arquivos, por exemplo.

Depois da palestra conversei com ele e perguntei qual era o problema que impedia a utilização do Ganeti pra serviços de alto desempenho e ele me disse, como eu já suspeitava, que basicamente isso se devia à ineficiência do mecanismo de sincronização de discos que ele usa atualmente, o DRBD. Eu perguntei se eles não têm planos de suportar outros mecanismos para sincronização de storage e ele me disse que estão trabalhando num backend baseado em arquivos e que, desse modo, os arquivos poderiam ficar num storage mais rápido, como uma SAN. Pra mim isso pode não ser o suficiente, pois o Xen, que é a tecnologia de virtualização que ele usa, trabalha com melhor desempenho usando raw devices. Além disso, para que os arquivos sejam acessíveis por mais de um nó do cluster eles vão precisar usar um sistema de arquivos de rede, como o NFS, ou um distribuído, como o GFS da Red Hat, mas isso só impõe mais barreiras ao desempenho geral. A melhor opção pra ganhar desempenho, a meu ver, seria implementar um backend que possa utilizar LUNs de uma SAN que sejam visíveis por todos os nós da rede. Imagino que com a maturação do código do Ganeti a implementação de uma coisa assim não seja complicada.

O roadmap para a evolução do Ganeti contempla algumas funcionalidades interessantes para a versão 1.3 que deverá sair até o final do ano. A mais interessante delas me parece ser o live migration que permitirá mover as instâncias sem precisar reiniciá-las. Além disso, eles pretendem implementar o failover automático, pois hoje ele ainda tem que ser feito manualmente.

Às 11h fui assistir à apresentação da Justiça do Trabalho sobre a migração que estão fazendo para o BrOffice.org. Pelo que entendi a migração ainda está no início, mas eles já têm várias varas de justiça pelo Brasil que já começaram a usar o BrOffice.org por conta própria, e estão usando a experiência adquirida pra diminuir os riscos da migração total, para a qual não mencionaram nenhum cronograma.

Em termos de complexidade, são 43 mil usuários com 40 mil máquinas distribuídos em 1600 varas, 26 regiões e o TST, em Brasília. Segundo Luís Fernando Pontello, que apresentou a palestra, os fatores críticos para o sucesso do projeto são divulgação, treinamento, equipamentos e patrocinadores. É importante que os usuários que irão migrar de aplicativo não sintam um impacto forte relacionado ao desempenho do novo. Por isso é importante que a diferença entre o velho e o novo seja avaliada e que os usuários recebam máquinas adequadas pra trabalhar com o novo. Os patrocinadores a que ele se refere são pessoas escolhidas a dedo dentro de cada vara que já tenham alguma afinidade com o software livre. Eles devem ser os primeiros a serem treinados e devem ser "trabalhados" para que "comprem" a idéia do projeto e funcionem como pontas de lança para a migração.

Alguém perguntou como é que eles conseguiam minimizar as "resistências" dos usuários e ele disse que o mais importante é ser bastante claro em apontar as razões da mudança, mostrando que não se trata de fazer um "voto de pobreza" e de apenas trocar um software bacana por um gratuito. É importante mostrar as economias, mas também é fundamental mostrar as outras razões de cunho estratégico e técnico pra mudança.

Pontello mencionou também outros projetos da Justiça do Trabalho relacionados ao software livre. Segundo ele, o TRT de Campinas tem um projeto chamado "estação livre" ou algo assim. Vou procurá-lo pra ver se obtenho mais detalhes a respeito.

Às 12h fui assistir à palestra "O Ministério da Saúde Mental adverte: onde há fumaça de trabaco é fogo", do Alexandre Oliva. Como sempre ele usa uma grande metáfora pra nos ajudar a pensar a questão do software livre e do software proprietário. Como eu temia, ele não conseguiu superar a do ano passado, mas não deixou de ser interessante. Durante a apresentação ele citou dois filmes e um livro que falam sobre o problema da indústria do tabaco e que servem de forte paralelo para a indústria do software proprietário: "Obrigado por Fumar", "O Informante" e o livro "O Juri". Preciso conferir o primeiro.

Às 14h assisti à palestra do Rasmus Lerdorf: Large Scale PHP. Confesso que fui levado mais pela eminência do palestrante que pelo tema da palestra. Afinal, não sou fã de PHP, mas dada a sua participação no mercado de linguagens para desenvolvimento web, seu autor deve ter muitas qualidades... e realmente tem.

O Rasmus começou dizendo que entende um pouco de português porque morou por algum tempo em Porto Alegre em 1991, quando trabalhou por aqui em uma empresa local. Isso foi uns três anos antes de ele criar o PHP... A história da criação do PHP já deve ser bem conhecida e ele fez um resumo.

Na primeira parte da palestra ele demonstrou algumas ferramentas muito interessantes pra fazer profiling de aplicações PHP: YSlow, Siege e Valgrind. A última delas é bastante famosa mas eu nunca a tinha visto em ação e fiquei bastante impressionado com a qualidade da apresentação e com o poder que ela confere ao desenvolvedor para analisar um programa C.

A segunda parte da palestra foi ainda melhor. Ele abordou a questão da segurança, ou da falta dela, nas aplicações web em geral. Sua mensagem foi clara: "nunca clique num link". Escrevendo assim não parece muito convincente, mas ele conseguiu convencer a todos mostrando um conjunto de exemplos aplicados a alguns sites daqui de Porto Alegre que ele obteve Googlando. Eu me lembrei de já ter ouvido um podcast com ele há alguns meses no qual ele falava das mesmas coisas. Alguém da platéia perguntou se a ferramenta que ele havia usado para detectar as vulnerabilidades "ao vivo" era uma tal ferramenta que ele havia desenvolvido mas que decidira não disponibilizar. Ele confirmou e explicou que não a disponibiliza basicamente porque não gosta de advogados... e teme ser acionado judicialmente caso uma leva de script kiddies passe a usar sua ferramenta pra invadir 99,9% dos sites da Internet... É... o problema é tão sério assim. Ao final da palestra ele foi ovacionado e formou-se uma enorme fila de tietes que queriam tirar fotos com ele. Sendo bastante simpático ele suportou com galhardia toda a tietagem e ficou vários minutos atendendo seus fãs. Gente fina o cara.

Às 15h assiti à palestra "The economic impact of FLOSS", do Rishab Ghosh que é membro da Open Source Initiative. Eu já havia lido o resultado de alguns de seus estudos e tinha idéia de que seria uma boa palestra. Ele procurou argumentar que o modelo de desenvolvimento colaborativo do software livre não é, como se costuma pensar, uma coisa de hobbistas e pessoas altruístas. Pelo contrário, há uma componente forte de auto interesse que pode ser estudada pela economia sem ter que apelas para modelos explicativos alternativos. Como primeiro exemplo ele citou um resultado específico de seus estudos. 70% dos entrevistados consideram que em relação ao software livre eles mais se beneficiam do que já existe do que são capazes de contribuir em retorno. Já quando são questionados sobre o que pensam dos demais participantes do movimento, menos de 50% considera que a maioria contribui mais do que obtém de retorno. Isso significa que há uma percepção equivocada de que a maioria das pessoas envolvidas com software livre sejam altruístas, mas a realidade é que a maioria delas tem a percepção de que a participação no movimento traz mais benefícios para o participante.

Outro ponto importante é a questão sobre como os desenvolvedores de software livre podem viver já que não conseguem vender o produto de seu desenvolvimento. Ocorre que apenas 6% dos desenvolvedores do mercado norte-americano trabalham produzindo software para ser vendido. Todos os outros 94% ou trabalham no desenvolvimento de software interno ou de software customizado para terceiros. E nesses dois modelos de negócio, o valor de venda do software produzido é função do tempo de desenvolvimento e não da exploração de um mercado aberto para seu produto. Por isso, ele argumenta que o impacto do software livre é insignificante em relação ao impedimento da venda do software e positivo para um número muito maior de desenvolvedores que podem contar com componentes livres para acelerar e melhorar a qualidade do produto que eles desenvolvem, permitindo que aumente a margem de lucro de venda simultaneamente ao barateamento do produto final.

Ainda outro ponto interessante é a avaliação do valor de todo o software livre disponível na Internet. Segundo ele, um estudo estimou em 12 bilhões de Euros e em 163 mil pessoas-ano o valor de todo o software livre disponível em 2005. A estimativa para 2010 era muito maior mas eu não consegui anotá-la. No todo foi uma palestra rica em informações e muito interessante, apesar de um tanto monotônica... o que fez o Mario quase roncar ao meu lado. :-)

Às 17h assisti à seção de perguntas e respostas sobre o kernel do Linux com o Theodore Ts'o. Eu já havia assistido a uma palestra dele em 2005 e confiava que seria interessante. Alguém começou perguntando pra ele se o Linux já era feature complete e quanto tempo levaria ainda para ser. Ele retrucou perguntando se o Emacs já é feature complete. :-)

Outro perguntou o que faz com que o kernel tenha um modelo de desenvolvimento tão escalável enquanto projetos bem menores às vezes entram em colapso. Em primeiro lugar, ele disse, o código do kernel é bastante modular, o que permite o desenvolvimento em paralelo e sem grandes interferências. Em segundo lugar, a utilização de ferramentas distribuídas para controle de versão de código, começando com o Bitkeeper e agora com o git, dá um poder muito grande de gerência da evolução do código para todos eles. Em terceiro lugar, milhares de desenvolvedores do kernel adquiriram uma cultura de discutir os problemas em uma lista de email que consegue suprir a falta de uma proximidade maior.

Ainda outro perguntou o que ele achava do OpenSolaris em geral e do dtrace e do zfs em particular. Ele elogiou a equi de desenvolvedores da Sun mas disse que eles ainda não conseguiram cativar um número significativo de desenvolvedores de fora da Sun, visto que a maioria dos commits do projeto ainda são realizados por engenheiros da própria Sun. Em relação ao dtrace ele disse que o Systemtap do linux está quase tão poderoso quanto seu irmão mais famoso, estando faltando apenas um maior envolvimento da comunidade para a construção de probes reutilizáveis por leigos. Em relação ao zfs, ele citou o BetterFS que é um novo sistema de arquivos sendo desenvolvido para o Linux e que deverá ser ainda melhor que o zfs.

A última palestra do dia foi uma debate muito didático e elucidativo (pelo menos pra mim) sobre a situação legal das concessões de espectro de frequências de ondas eletromagnéticas no Brasil. Aprendi que o marco regulatório brasileiro é da década de 1940 e que há muita sujeira e corrupção envolvida nas concessões. O Sergio Amadeu "levantou a galera" com seu jeito rápido e eloquente e eu gostei muitíssimo das intervenções do Gustavo Gindre, a quem eu não conhecia. Gostei particularmente de quando ele argumentou que a tecnologia não é neutra na definição dos impactos sociais que ela pode causar. Ele usou pra isso o exemplo das leis de Isaac Newton. Segundo ele, na época de Newton já existia o conceito da conservação da energia, embora isso ainda não fosse consenso entre os cientistas. Ocorre que a igreja anglicana não via com bons olhos esse princípio pois ele parecia indicar que não haveria mais lugar pra Deus na natureza. Como Newton era bastante ligado à igreja, ele fez questão de elaborar suas leis numa forma em que não precisasse invocar esse princípio. Achei muito interessante e vou procurar saber melhor sobre essa história.

Saímos da PUCRS e pedimos uma dica ao motorista de táxi que nos levou para a galeteria Via Veneto. Eu gostei muitíssimo das carnes e das massas. Quando estávamos de saída vimos chegar um grupo grande do FISL, dentre eles o Maddog Hall e o Felipe van de Wiel, do Debian.

Desta vez voltamos de táxi pro hotel. No caminho eu lhe disse que ontem havíamos voltado à pé e ele exclamou: "pelo amor de deus!".

quinta-feira, 17 de abril de 2008

push @FISL9, $first_day

Eu estava morrendo de sono ontem e apaguei às 23h45. O Mario disse que ficou acordado até depois da 1h e que teve dificuldade pra dormir por causa do barulho... do meu ronco. Melhor ele dormir antes de mim hoje.

Acordei às 6h30 e tomamos café tranqüilamente. Pegamos um táxi e chegamos à PUCRS antes das 8h30, o que parecia ser bastante cedo. Mas, ao chegarmos, vimos filas já bem grandes pra pegar o material. Fiquei mais de 1h na fila que, obviamente, era a mais lenta de todas.

As palestras das 10h não eram interessantes e eu dei uma passeada pelo setor de exposições. Há muito mais stands que em 2005 e eu achei que ficou meio apertado pra circular. Há vários stands de governo. Os maiores são os da Sun e o da Globo.com (quem diria).

Às 11h fomos assistir à palestra do Shane Coughlan, coordenador do Freedom Task Force da FSF Europe. Ele é irlandês e fala muito bem. Achei que a palestra seria sobre as diferentes licenças de software livre, mas tratou mais sobre as ações da FSFE para aumentar a visibilidade e o nível de informação sobre software livre no setor governamental europeu. Ele deixou claro que a principal missão do FSFE é educar os governos e os demais setores da União Européia e mencionou que, apesar de o nível de entendimento ser cada vez maior, ainda é necessário reforçar constantemente que o free em free software significa liberdade e não gratuidade, e que o mero acesso ao código fonte não significa que o programa seja livre ou open source, mas que a sua licença precisa garantir as liberdades básicas de usar, estudar, melhorar e distribuir o programa.

Em relação às licenças, ele disse que é fundamental entender o que elas garantem e exigem em contrapartida. Mais que isso, é preciso entender o porquê de elas serem como são para poder entender o benefício do software livre.

Ocorreu em 11/04 passado o European Licensing and Legal Workshop em Amsterdam, congregando agentes de governo e pequenas e médias empresas européias e asiáticas para discutir questões sobre o licenciamento de software livre e sobre os benefícios e riscos de sua utilização. Segundo Shane, esse evento foi um ponto de inflexão na discussão desses assuntos pois, pela primeira vez, não houve um ambiente conflituoso e todos os envolvidos estavam seriamente engajados em debater assuntos complexos e relevantes.

Às 12h fui assistir à 12ª edição dos Sapos Piramidais do professor Pedro Rezende. O título desta edição foi '"Pontes" de PI. Para onde?'. Ele falou sobre os eventos mais relevantes do último ano que afetaram ou ainda podem vir a afetar a sustentabilidade do modelo de software livre no aspecto jurídico. Foi uma palestra muito corrida e ele, como sempre, não conseguiu terminar antes de esgotar o tempo, não tendo dado tempo pra nenhuma pergunta.

O que eu achei mais interessante foi o conceito de forum shifting que, segundo ele, tem sido utilizado pelas grandes corporações pra defender seus modelos de negócio através da radicalização da legislação de propriedade imaterial. (Ele se recusa a usar o termo "propriedade intelectual" pelos motivos apontados pelo Richard Stallman.) Essa técnica consiste em abandonar um fórum de discussão quando o encaminhamento de um assunto esteja indo contra os seus interesses e tentar levar a discussão para um outro fórum. Por exemplo, é o que ocorreu na Europa quando as corporações de radio-difusão abandonaram a discussão no WIPO sobre o Tratado de Broadcasting e criaram uma nova entidade (ACTA) para reposicionar a discussão em termos mais favoráveis aos seus interesses.... é tão bacana quanto assustador.

Às 13h assisti à palestra do Arnaldo Carvalho de Melo sobre as ferramentas de depuração de binários em que ele está trabalhando. É muito interessante. As ferramentas (pahole, pfunct, codiff, etc.) usam as informações de depuração do binário ELF, que são em formato DWARF, pra tentar otimizar o leiaute das estruturas de dados visando melhor aproveitar as codelines do cache do processador e otimizar a utilização de funções inline. Essas ferramentas parecem ter tido muito valor na otimização do kernel do Linux e de outros projetos, como o KDE.

Eu não sabia, mas hoje é possível gerar as informações de depuração em um arquivo separado do binário ELF. Algumas distribuições já estão disponibilizando pacotes paralelos com esta informação. Por exemplo, o pacote "firefox" conteria os binários stripped enquanto o pacote "firefox-debuginfo" conteria os arquivos com as informações de depuração.

O nome DWARF foi "forçado" pra casar com ELF e lembrar o LOTR. Nerdisse...

Às 15h assisti a uma palestra "Uma nova Lei Autoral para o Brasil: equilíbrio entre proteção e acesso ao conhecimento" que foi apresentada por dois professores da FGV, um advogado do IDEC e um funcionário do Ministério da Cultura. Os quatro usaram diversos argumentos para demonstrar que a Lei Autoral brasileira é excessivamente restritiva e que precisa de uma atualização urgente para adequá-la à realidade de hoje em que mecanismos para cópia e disseminação de informação são ubíquos. De acordo com Sergio Branco, da FGV, o Brasil é dos poucos países "desenvolvidos" em que a lei não admite em hipótese alguma a cópia integral de uma obra. Em outros países isso é permitido para, por exemplo, permitir que uma biblioteca digitalize algum livro que esteja sendo destruído pelas traças, ou que o proprietário de um LP possa digitalizá-lo. A legislação alemã, por exemplo, permite que livros que já tenham saído de catálogo há mais de dois anos sejam copiados integralmente.

A legislação autoral brasileira, segundo eles, acaba forçando uma relação de perde-perde, pois os consumidores não têm acesso a obras das quais os próprios autores já não possam mais explorar comercialmente.

O participante do IDEC argumentou que a lei autoral fere o princípio jurídico da proporcionalidade, que diz que as penas devem ser proporcionais à gravidade do delito. Segundo ele, no Brasil, o cidadão que baixa músicas da Internet pode ser preso ao passo que há vários crimes muito mais graves que são punidos no máximo com a aplicação de uma multa.

O último a falar foi Pedro Paranaguá, que eu não conhecia mas que me impressionou pela juventude e pela clareza de idéias. O trabalho dele na FGV pode ser acompanhado no site http://www.a2kbrasil.org.br/.

Às 17h assisti à apresentação sobre a migração do site da Dicas-L para o Drupal. Infelizmente o Rubens Queiroz não pode vir. Além disso, a rede do FISL estava fora e os palestrantes não puderam mostrar o novo site e suas funcionalidades. A palestra acabou abordando as funcionalidades que foram implementadas no site e serviu pra tirar algumas dúvidas de quem estava lá e já trabalhava com o Drupal. Não me impressionou muito.

Ah, durante a citação das funcionalidades, pelo que entendi, eles disseram que a parte de envio das mensagens na newsletter não foi alterada porque são quase 30 mil destinatários e o esquema atual era suficientemente robusto. Eu não sei se o Rubens ainda usa o bulk_mailer, mas há alguns anos ele estava sofrendo pra enviar mensagens uma a uma e eu sugeri pra ele esse programa.

Às 18h fui assistir ao painel Futuros Digitais do qual deveria participar o ministro Mangabeira Unger, mas ele acabou não podendo vir. De qualquer modo foi muito interessante. O primeiro a falar foi o Marcelo D'Elia Branco que enrolou um pouco mas deixou seu recado argumentando que não é o patamar tecnológico de um país que determina a qualidade de suas relações sociais. Ele citou como exemplos de países com patamares tecnológicos evoluídos mas dos quais ele não inveja a situação social os EUA, pela exacerbação do individualismo, Cingapura, pelo regime totalitário e um outro de que não me lembro. Não sei se concordo com todos os exemplos, mas creio que ele tenha razão na sua tese.

O segundo palestrante foi o advogado Ronaldo Lemos que muito me impressionou. Ele fez mestrado em Harvard e doutorado na USP. Segundo ele, é fundamental que o Brasil crie um marco regulatório civil que defina as responsabilidades dos provedores de acesso e de conteúdo. Os EUA já têm o seu desde 1999. Enquanto não tivermos essa legislação estaremos sugeitos às mais variadas interpretações de juízes que em sua maioria não têm o conhecimento técnico e a experiência social que lhes permita avaliar corretamente casos envolvendo abusos dos meios de comunicação digitais. Ele citou um exemplo de um juíz de São Paulo que, por não ter conseguido identificar o autor de alguma calúnia postada no site de um terceiro, condenou a Lan House que foi identificada como tendo sido o ponto de acesso do infrator. Outro absurdo é o projeto de lei do senador Azeredo que pretende regulamentar criminalmente a Internet sem que tenhamos sua regulamentação civil definindo as responsabilidades dos seus usuários.

Ronaldo Lemos ainda citou um paradoxo interessante. Segundo ele, o Brasil é um dos poucos (se não o único, não me lembro) países a garantir o direito à privacidade na própria Constituição. Apesar disso, não temos leis regulamentando esses direitos. Por conta disto é que só em 2007 foram concedidos mais de 409 mil grampos telefônicos no Brasil... ainda bem que nossa privacidade é garantida!

Depois do Ronaldo quem falou foi o Pedro Paranaguá, da FGV. Ele citou vários casos em que as diferenças entre os regimes jurídicos dos países causam problemas nas relações internacionais.

Às 19h tentei assistir à palestra sobre o módulo Text::Statistics mas o palestrante estava atrasado e eu acabei indo ver a palestra do Frederico Neves, do Registro.br, sobre DNSSEC, que foi muito boa. Ele começou explicando sucintamente o funcionamento do DNS tradicional pra mostrar todas as suas vulnerabilidades. Daí ele introduziu o DNSSEC mostrando quais daquelas vulnerabilidades são resolvidas por ele. A importância do DNSSEC é que há diversos mecanismos de segurança que se baseiam no DNS, como os sistemas anti-phishing e anti-spam SPF e DKIM. Segundo ele, o problema hoje é tão sério que a maioria dos grandes bancos paga a empresas para ficarem monitorando constantemente o cache dos nameservers dos grandes provedores de acesso pra ter certeza de que não foram "poluídos" com informação inválida.

O Registro.br já implantou DNSSEC nos domínios jus.br, eng.br, eti.br e gov.br. A implantação nos domínios com.br e org.br depende ainda da homologação do NSEC3. Ocorre que o DNSSEC original define um mecanismo para que o cliente possa garantir a ausência de um registro que se chama NSEC, mas esse mecanismo permite que qualquer um consiga listar todos os registros de um domínio, essencialmente deixando publicados todos os registros de um domínio, o que é ruim do ponto de vista da segurança. O NSEC3 é uma nova forma de implementar garantia de inexistência de registro mas que não padece deste problema. Segundo Frederico, dentro de poucos meses poderemos contar com o DNSSEC no com.br e no org.br.

Ele fez uma exortação para que todos pensem seriamente em adotar essa tecnologia pois, quando estiver adotada em larga escala, poderá resolver grande parte dos problemas que hoje enfrentamos na Internet em relação à falsa identidade de servidores.

No final ele citou o BIND e o NDS como servidores DNS que estão em vias de implementar do NSEC3 totalmente. Eu perguntei a ele sobre o PowerDNS e ele disse que este servidor não implementa toda a especificação do DNSSEC. Eu disse a ele que recentemente me mostraram esse artigo que mostra que o PowerDNS é muito mais escalável que o BIND mas ele não acreditou. Segundo ele, o Registro.br já fez diversos testes com o PowerDNS e não constatou esta diferença. Eu fiquei de lhe enviar o link pra ele poder comentar.

Ainda sobre o PowerDNS, ele disse que a maior vantagem dele é que ele pode utilizar um banco de dados para manter os registros, coisa que o BIND não permite. Os registros do BIND ficam em arquivos texto. Mas, o Registro.br implementou um mecanismo de manutenção dos registros, que ficam em banco de dados, e que são espalhados para várias instâncias do BIND. Esse mecanismo deverá ser divulgado como software livre dentro de uns seis meses.

A última palestra do dia foi sobre as novidades do Plone3. Ela foi apresentada por dois caras da empresa ThreePointsWeb, que se especializa na criação de sites, treinamento e consultoria em Plone. Os caras parecem ser bons, mas a palestra foi cansativa. Segundo eles, o Plone é o único CMS livre que é considerado na categoria ECM, ou Enterprise Content Management.

Cansados e famintos fomos todos nos empanturrar na churrascaria Na Brasa, que foi considerada como a melhor da cidade pela revista Veja. Foi uma brasa, mora? Tanto que ao sairmos de lá o Daniel deu a idéia incrível de virmos a pé pro hotel. Afinal, seriam apenas cinco quadras. Só não raciocinamos direito e não previmos que tipo de quadras seriam elas... Eu disse que o hotel fica ao lado da rodoviária? E vocês conhecem alguma rodoviária que fique num bairro "viável" pra se passear a noite? ... Nem eu. A cada esquina eu dava uma olhada pra todos os lados e contava pra ver se ainda estávamos todos juntos. Felizmente chegamos todos vivos. O único incidente digno de nota foi uma topada que o Mario deu na calçada e quase foi de nariz no chão. É que ele estava andando e "apreciando a fauna" do outro lado da avenida.... hehe.

Amanhã eu volto é de táxi.

quarta-feira, 16 de abril de 2008

FISL 9.0

Cá estou em Porto Alegre pra mais um FISL. Dessa vez ele será de novo no campus da PUCRS, assim como em 2005 quando estive aqui pela primeira vez. No ano passado foi na FIERGS, que é muito mais longe da cidade.

Vim com o Mario Teixeira e com mais dois colegas do CPqD: Daniel Pataca e Hugo Lavalle. Saímos de Viracopos às 15h15 e o vôo correu sem maiores incidentes e no horário, o que foi uma grata surpresa. Durante o embarque encontramos o Alexandre Oliva que estava vindo pra cá com sua esposa e sua filha. Comentei com o Hugo que vai ser difícil ele superar a palestra sobre Matrix que ele apresentou no ano passado, mas quem sabe?

O Oliva se lembrou de que eu o havia alertado sobre o certificado digital do seu blog que estava expirado e me disse que acabou regerando-o ontem. Mas eu estava meio fora de contexto e acabei me esquecendo de perguntar pra ele por que é que ele usa links https no feed RSS do blog? Se eles fossem http não haveria problema algum com certificado... vou ver se pergunto pra ele durante o evento.

Estamos todos no hotel Ritter, próximo à rodoviária e não muito longe da PUCRS. O hotel é melhor que aquele em que fiquei no ano passado. Tem até wireless no quarto, mas o primeiro que pegamos (523) ficava no final do corredor e o sinal era muito baixo. Fomos até a recepção depois do jantar pra perguntar se podíamos trocar. O recepcionista verificou e disse que ficaríamos com o quarto 309, mais próximo ao access point. Depois disso ele me encarou, baixou a voz e disse que o novo quarto é triplo mas que ele iria fazer pela mesma diária. Eu disse "que ótimo", agradeci e subimos pra fazer a mudança.

Chegando no novo quarto vimos que apesar de ter uma cama a mais ele era um pouco menor... e a vista dá pra uma parede cheia de janelas... pelo menos o sinal da rede é melhor e está dando pra usar.

Mas o pior é que eu estou usando um laptop do tempo do onça. É o mesmo que usei nos dois FISLs anteriores e acabo de me lembrar que no ano passado eu jurei que não o traria mais... esqueci. Ele é extremamente lento e o firefox já capotou algumas vezes sem razão aparente... Juro que é a última vez.

Combinamos de tomar café amanhã às 7h30 pra chegarmos cedo no evento e evitarmos as filas. Mal posso esperar...

segunda-feira, 7 de abril de 2008

Desafio regex

Meu amigo Rogério Zamboim me desafiou a resolver um problema com uma expressão regular. Desconfio que isso estava lhe causando insônia e ele queria transferi-la pra alguém... De qualquer modo, o desafio acabou sendo bem interessante.

O problema é validar um campo cujo conteúdo deve ser uma seqüência de dígitos, de 1 a 8, separados por barras invertidas, em ordem monotônica decrescente. Exemplificando, os seguintes valores são válidos para o campo:
8\7\6\5\4\3\2\1
8
8\1
8\7\2
1
2\1
7\5\3
Já os seguintes valores são inválidos:
8\
\7
8\6\
\2\1
6\\2
7\6\6\2
6\2\5
Confesso que de cara dei um tiro n'água e enviei-lhe a seguinte "solução", obviamente errada:


/^[1-8](?:\\[1-7])?(?:\\[1-6])?(?:\\[1-5])?(?:\\[1-4])?(?:\\[1-3])?(?:\\[1-2])?(?:\\1)?$/


O problema é que ela não garante que os dígitos são decrescentes. Por exemplo, a string "4\5" é aceita por ela.

Pensando melhor, ficou claro que expressões regulares "puras" não têm poder de expressão suficiente pra especificar a regra de validação de modo conciso. Isso porque elas não conseguem expressar a ordenação dos dígitos. Não se trata de um impossibilidade teórica, mas prática. Uma solução puramente regular envolveria a descrição explícita de todas as possibilidades, resultando numa expressão enorme. Algo como:


/^(?:[1-8]|[2-8]\\1|[3-8]\\2|...|[3-8]\\2\\1|[4-8]\\3\\1|.../


Convencido de que não seria possível uma solução direta, resolvi usar uma expressão regular apenas para garantir a forma básica, i.e., uma seqüência de dígitos separados por barras invertidas, e deixar a verificação da ordem para um código posterior. O melhor que consegui foi o seguinte:


sub validate_loop {
my ($string) = @_;
my $top = 9;
for my $val (split /\\/, $string) {
return 0 unless $val =~ /^[1-8]$/;
return 0 unless $top > $val;
$top = $val;
}
return 1;
}


Esta função recebe uma string com o valor do campo. A variável $top contém sempre o valor máximo que o próximo dígito pode conter mais um, e começa com 9, já que o primeiro dígito pode estar entre 1 e 8. O loop quebra a string nas barras invertidas e verifica se o que há entre elas são dígitos entre 1 e 8 e se eles são menores que $top, atribuindo a $top o valor do próximo dígito.

É razoável, mas não satisfatório. Usa duas expressões regulares e faz muitos testes separados... Não estava muito bom.

Fiquei matutando uns dois dias sobre isso e pensando se dentre as várias extensões que Perl oferece além dos operadores básicos de expressões regulares não haveria algum que me permitisse construir uma solução mais sucinta. Relendo a documentação deparei-me com o operador "(?{code})", que permite inserir código no meio de uma expressão regular. Hmmm... parecia útil, mas eu nunca havia usado algo assim.

Depois de algumas tentativas frustradas acabei bolando a seguinte solução:


sub validate_re {
my ($string) = @_;
our ($dec, $last) = (1);
return ($string =~ /^([1-8])(?{$last=$^N})(?:\\([1-8])(?{$dec=0 if $last <= $^N; $last=$^N}))*$/) && $dec;
}


A expressão regular ficou maior por causa do código embutido dentro dela. Remova mentalmente os operadores (?{...}) e você verá que ela está simplesmente verificando se a string consiste em uma seqüência de dígitos separados por barras invertidas.

No primeiro operador de código, a variável $last recebe o valor do primeiro dígito da string. (A variável implícita $^N lembra o valor da última captura por parêntesis.) No segundo operador, usamos seu valor para verificar se o próximo dígito é menor que o anterior e atribuímos o novo dígito a ela.

A variável $dec mantém o estado da verificação de ordem. Ela começa como 1 e recebe 0 caso o segundo operador de código detecte que há algum dígito fora de ordem monotônica decrescente.

Eu demorei um bom tempo pra chegar à conclusão de que essas duas variáveis tinham que ser globais (declaradas com "our"). Se elas são locais (declaradas com "my") não funciona. A documentação não é clara a esse respeito e eu desconfio que seja um bug do próprio interpretador Perl, mas não tenho certeza.

A função acaba retornando a conjunção da avaliação da expressão regular com o valor final de $dec.

Pronto, agora eu posso dormir em paz.

(Não é verdade... a (des)formatação dos scripts acima está me deixando nervoso. Vou tentar resolver a questão usando o SyntaxHighlighter, mas não hoje.)


Passei a usar o SyntaxHighlighter, mas como ele ainda não tem suporte oficial pra Perl não ficou ainda muito bonito. Tem gente trabalhando nisso...