br-net.org

br-net.org::Home

de olho na internet

Os seguintes posts possuem a tag "perl"

Mitos sobre o Perl

Perl é uma linguagem que é usada em vários ambientes, porém não é tão falada como as outras. Aqui no Brasil, muitos não conhecem, alguns só ouviram falar e outros acham que ele está "morrendo".

Algumas das coisas que dificultam a adoção da linguagem, é que existem alguns mitos muito divulgados, porém não são verdadeiros.

Alguns deles são mais conhecidos, como os citados por Tim Bunce (criador do módulo DBI, para interação com banco de dados).

Perl está morto

"Ainda se usa Perl?". Essa deve ser a mais comum. O fato é que, se Perl fosse eliminado da face da Terra neste exato momento, muito sites (grandes) iriam parar de funcionar, servidores com sistemas rodando em Perl, sistemas de missão crítica, entre vários outros...

No Brasil o Perl não é tão forte quanto em outros países, mas ainda é bastante usado. Muitas pessoas nem sabem que alguns dos seus sistemas funcionam utilizando Perl por baixo dos panos.

Veja abaixo um gráfico sobre empregos de diferentes linguagens de programação:

Gráfico de Empregos por Linguagens de Programação

Você pode gerar este gráfico atualizado aqui .

Claro, Perl não é a mais usada, mas não é o que você chamaria de algo que está em desuso...

O CPAN, onde é centralizada a distribuição de módulos da linguagem, tem cerca de 620.000 visitantes únicos por mês. Fora os que já se acostumaram a usar o CPAN pela linha de comando, mais o perldoc. Além disso, o número de upload de módulos por mês só vem aumentando a cada ano.

Os outros mitos citados, incluem "Perl é difícil de ler/testar/manter" e "Perl 6 está matando o Perl 5". Nenhuma das duas é verdadeira, assunto para outro post (você também pode ver na apresentação de Tim Bunce).

A verdade é que Perl é uma linguagem importante e tem uma comunidade muito ativa e organizada. A última versão estável é a 5.10.0, lançada em dezembro de 2007. Caso se interesse, pode aprender com um curso por e-mail.

Só não esqueça, Perl is alive! smile.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Grade Preliminar do fisl 9.0

Hoje saiu a grade preliminar da programação do fisl. Quem quiser dar uma olhada pode acessar neste endereço.

Ela ainda não está completa, mas já tem muita coisa boa ai para assistir. Dando uma olhada por cima, essas são as que achei mais interessantes:

17 de Abril

- Can you survive a downtime? (Tirthankar Das)
- Uma Solução de Firewall Redundante com OpenBSD, CARP e PFSync (João Salvatti)
- Profissionalismo para nerds - Eu já sei o que eu vou ser quando crescer (Sulamita Garcia)
- The Postgres Application Server (David Fetter)
- Understanding the Kernel Network Layer (Breno Leitão)
- Network Forensic - Coleta e Análise de Evidências dos Ativos da Rede com Ferramentas Livres (Sandro Melo)
- Creative Commons and the Problem with Copyright Law (Maureen O'Sullivan)
- Multiterminais (Paulo Ricardo Zanoni, Luis Carlos Erpen de Bona)
- Fazendo Um Elefante Passar Debaixo da Porta (Fabio Telles)

18 de Abril

- Encontro Sul-americano de Perl - YAPC::SA::2008 (Flávio S. Glock)
- Engenharia de Software e Software Livre: tudo a ver! (Antonio Terceiro)
- Clonando Pinguins com System Imager (Cesar Augusto Domingos, Caio Candido)
- Backup prático, porquê precisamos evoluir ! (Solli Moreira Honório)
- Proposta de uma Metodologia de Migração de Software Proprietário para Software Livre com Foco no Usuário (Ramon Simões Abílio, José Monserrat Neto)
- Por trás das firulas do X (Tiago Vignatti)
- Segurança de Aplicações e Arquivos de Sistemas com AppArmor (Carlos Alberto Ribeiro, Vagner Farias)
- Liberdade educacional - o uso de softwares livres na educação (Frederico Gonçalves Guimarães)

19 de Abril

- Plenária Debian Brasil (Felipe Augusto van de Wiel)
- Software Livre na Educação Universitária : Os estudantes de computação e o software livre (José Honorato Ferreira Nunes, Adilson Barros Soares, Renata de Andrade Pereira)
- Keeping 200 firewalls on track (Ernesto Silva, Andres Tarallo, Enrique Verdes)
- Prevenindo XSS: Execute apenas o SEU código (Er Galvão Abbott)
- Jornalismo Livre: proposta de incorporação da liberdade na prática jornalística (Rafael Evangelista, Tiago Soares)
- Combining Linux High Availability Clusters with Data Replication (DRBD) (Mark Bilansky)
- Tradução de Software Livre (José Ernesto Mortara San Martin, Fabiano Sant'Ana)
- GGZ: Progresso na área dos jogos livres na internet (Josef Spillner)
- Port Knocking? Esqueça. Abrindo portas remotamente no iptables com Single Packet Authorization. (Jansen Carlo Sena)
- Uma solução de implementação do conceito de Rede Segura, utilizando o padrão IEEE 802.1x em ambiente híbrido (Luis Antônio Schneiders)
- O que é ODF e qual a sua importância (Jomar Silva)
- Fun and Software Livre! - Return of the Jedi! (Jon 'Maddog' Hall)
- VIM para desenvolver (Luiz Guilherme Ribeiro Sanches)

Tomara que eu consiga ir nos 3 dias dessa vez, já que ano passado em só pude ir no último. Senão, vou perder palestras bem legais, bem como o YAPC::SA::2008.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Perl completa 20 anos!

Ontem, dia 18 de dezembro, a linguagem de programação Perl fez aniversário. Em 1987, Larry Wall lançou a versão 1.0 na newsgroup comp.sources.misc, e nos anos que se passaram, a linguagem começou a crescer rapidamente. Aos poucos, começou a ser usada nos mais diferentes tipos de programas/scripts.

Para completar seus 20 anos, foi lançada a última versão estável, a 5.10. Alguns novos recursos foram adicionados, que podem ser lidas aqui.

Perl logo
Apesar de já ter duas décadas, Perl ainda é bastante usado, tanto na Web como na administração de sistemas. A próxima versão (Perl 6), não tem data para lançamento, mas incorpora novos conceitos e promete ser uma linguagem forte para competir no mercado.

Espero que o desenvolvimento da linguagem siga normalmente e que continue o bom trabalho que tem feito pela web :)
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Google Calendar + TIM

Essa semana, descobri que é possível receber avisos dos eventos criados no Google Calendar por SMS em celulares da TIM.

De início, achei estranho. Não é possível nem mandar SMS pelo site da TIM, o que geralmente é possível através de outras operadoras. A única forma de mandar SMS pela internet é se você for cliente da própria TIM, e o serviço é cobrado, da mesma forma que se você tivesse enviado pelo celular.

Me surpreendi quando soube que o serviço do Google permite enviar mensagens para os celulares da TIM. A configurações é simples. Você coloca o seu número, o Google te manda um SMS com um código, que você precisa inserir no sistema para confirmar. E pronto, está configurado.

E o melhor, o serviço funciona bem! Os SMS chegam praticamente na hora marcada, e quem tem acesso a internet pelo celular, realmente se torna uma agenda móvel.

Mais um bom serviço que o Google oferece :D
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Usando threads em Perl

#!/usr/bin/perl
use threads;


Já tem algum tempo que quero brincar com threads em Perl, e hoje comecei a fazer alguns exemplos e escrever pequenos programas.

Achei bem interessante, principalmente podendo fazer mais de uma coisa ao mesmo tempo. Dependendo do tipo de programa, é possível obter uma boa melhora no desempenho utilizando threads.

Mas como já dizia Ben Parker, "grandes poderes trazem grandes responsabilidades". É preciso tomar cuidado com o acesso a data compartilhada, principalmente se mais de uma thread usa uma determinada variável.

Isso, porque durante uma leitura e escrita de uma variável, é possível que outra thread tenha alterado o valor da variável e isso causaria resultados indesejados.

$count++;

O código acima faz 3 operações: obtem o valor de $count, incrementa em 1 e salva novamente na variável. Se no tempo em que ele está incrementando o valor, outra thread tiver feito isso, ele não terá o novo valor, que será sobrescrito pelo seu (o que geralmente não é nada bom...).

Se alguém se interessa em usar threads em Perl, recomendo ler a documentação (perldoc perlthrtut), que foi o ponto de partida que usei para começar a usá-las.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Software Simples = Software Poderoso

Atualmente tenho visto muitos aplicativos que são muito complexos e que acabam atrapalhando a vida do usuário. Alguns tem uma implementação ruim, que só tende a piorar quando o software começa a crescer.

Estive lendo nesses últimos dias sobre o qpsmtpd, um daemon SMTP muito simples e flexível, escrito em Perl.

Ele é um software pequeno, simples, flexível, o que acabou resultando numa ferramenta poderosa. Ele somente "conhece" o protocolo SMTP, e todos os outros recursos são adicionados a partir de plugins (que também são escritos em Perl).

Uma das coisas que lembra ele é o bloqueio de spam. Ele consegue barrar várias coisas antes mesmo de serem processadas pelo servidor, de forma bem eficiente. Os servidores de e-mail do apache.org migraram para ele e diminuíram bastante a carga, podendo agora suportar sem problemas, cerca de 2 milhões de e-mail diários.

Outra coisa é que é extremamente fácil de escrever plugins para ele. Juntando isso com a facilidade do Perl para processar texto, temos uma ótima dupla.

Apesar de ser bom para receber e rejeitar e-mail, ele precisa de um MTA completo para poder funcionar. É possível mandar e-mail para um servidor externo, ou mandar mensagens diretamente para a fila do postfix, qmail, exim, etc...

Estou pensando em implementar ele para testar como ele se comporta recebendo e-mails e spams reais...
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Frameworks Web

Achei um link bem interessante para uma página na Wikipedia num post do Slashdot, que de certa forma se refere ao assunto.

A página na Wikipedia faz uma comparação entre diversos frameworks web e seus recursos. Me arrisco a dizer que alguns dos mais conhecidos são o Rails (Ruby), Django (Python), Catalyst (Perl) e CakePHP (PHP).

Embora cada um tenha suas vantagens e desvantagens em um campo em especial. Desses 4, todos tem implementações próprias ou já existentes das partes de um framework
MVC
.

De certa forma, todos valem a pena trabalhar, o melhor é usar um que você já conheça a linguagem, pois isso já ajuda bastante. Alguns também dependem de configuração adicional no servidor onde será hospedado.

O mais de fazer rodar provavelmente deve ser o CakePHP, já que praticamente todos os servidores possuem suporte a PHP e ele não precisa nada em especial. O mod_perl também é encontrado em vários servidores, facilitando o uso do Catalyst. Já o Rails e o Django precisam ter as linguagens instaladas (geralmente o Python já está, mas o Ruby é mais difícil), e também dependem de FastCGI ou um servidor web dedicado para isso.

Claro, existe a possibilidade de rodar qualquer um dos 4 como CGI, mas ninguém em sã consciência faria isso num ambiente de produção.

Eu comecei a usar o Catalyst faz quase um ano (uso moderado), e gostei muito dele. Uma das vantagens dele é a sua flexibilidade. Basta olhar na página na Wikipedia. Escolha não é o problema, veja alguns exemplos:

ORM - DBIx::Class, Rose::DB, Class::DBI::Sweet;
Template - Template::Toolkit, HTML::Template, HTML::Mason;
Sessões - arquivos, banco de dados, FastMmap, Memchached;
Autenticação - banco de dados, LDAP, Htpasswd;
Cache - FastMmap, Memcached, BerkeleyDB, FileCache;
Validação de formulários - FormValidator, FormBuilder.

Bastante coisa pra escolher, tenho gostado bastante de trabalhar com ele. Mas se quiser saber o melhor deles, leia mais sobre cada um para saber qual a melhor escolha para o que você precisa.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Obtendo feedback

Hoje resolvi adicionar um novo recurso no blog. Se você está na página inicial, provavelmente não está vendo-o, mas se quiser, pode clicar no título do post ou no link "avaliar esse post" no fim dele.

O motivo pelo qual adicionei esse recurso é para receber o feedback sobre os posts, assim eu posso melhorá-los.

Preferi deixar somente quando o post é mostrado individualmente, assim deixo a home mais limpa. A princípio a programação foi simples e até usa um Ajax :P

Apenas precisei criar mais uma tabela, uma classe no DBIx:Class (model), outro método "feedback" no controller dos posts e alterar o template (view). Viva o MVC.

Vamos ver se isso vai prestar...
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Implementando Captcha

Hoje não aguentei mais... O número de spam nos comentários do blog estava algo insuportável, e tive que arranjar alguma maneira de diminuir isso. Então resolvi implementar o Captcha para quem for deixar um comentário.

O Captcha é uma imagem com números ou letras, que a pessoa tem que digitar para que seja validada que ela é realmente um pessoa, e não um robô que fica mandando vários comentários de tempos em tempos.

Sendo assim, procurei uma forma fácil de implementar o Captcha no Catalyst. Fiz uma rápida pesquisa no CPAN e encontrei o plugin Catalyst::Plugin::Captcha, que fazia mais do que o suficiente.

Apesar do exemplo no POD, coloquei a configuração do plugin no arquivo YAML da aplicação. Então o que tive que fazer de código:

sub captcha : Local {
  my ($self, $c) = @_;
  $c->create_captcha;
}


Feito isso, basta apontar no browser a localização do método captcha que ele irá gerar uma imagem pronta, com as configurações que coloquei no arquivo YAML.

Mas ainda é preciso verificar se o cara digitou certo o número que esta na imagem. Fiz a verificação dessa forma:

unless ($c->validate_captcha($c->req->param('validar'))) { ... }

E pronto, se o cara digitou errado, irá cair no bloco de comandos (que estaria no lugar dos "...") e aí da para fazer o que quiser. O $c->req->param('validar'), é para pegar o que o cara digitou no input, assim ele pode validar para ver se é o mesmo número que está na sessão.

Bom, vamos ver se pelo menos diminui os spams...

PS: se alguém não conseguir postar um comentário, por favor, me ajude informando no formulário de contato.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Saiu a grade do fisl!

Parece que já está disponível a grade (temporária) com as palestras do fisl 8.0.

Quem quiser, pode vê-la aqui.

Infelizmente, o YAPC será na sexta e acho que o pessoal da faculdade vai ir só no sábado (grrrr!).

De longe, a sexta-feira é melhor (pelo menos para mim). Acho que as melhores palestras são nesse dia, porém tem palestras muito boas nos outros também. Sei que acho que vou poder ir somente no sábado :(

Algumas das paletras que queria assistir (tem algumas no mesmo horário, mas tudo bem...), destacado em negrito as que eu dou prioridade:

Quinta:
- Tutorial LVM2
- Reduzindo Custos (In)Visíveis Usando Software Livre
- LinuxBIOS, liberte a sua placa mãe
- Os padrões Web e a acessibilidade na Internet
- Como economizamos tempo e dinheiro usando software livre em uma empresa privada
- Consolidação de Serviços: Alta Disponibilidade e Balanceamento de Carga em Máquinas Virtuais
- IV Plenária Debian-BR
- Linux High Availabilty Clusters using Shared Storage
- As Novas Aplicações Livres para Gerenciamento de Redes
- Vulnerabilidades em aplicações web
- Construindo Supercomputadores com Linux, da teoria a prática

Sexta:
- Free Software and The Matrix :D
- Suporte Multimídia no Kernel do Linux
- Myth and reality. Why I should be interested in Free Software?
- YAPC::SA::2007 - Encontro Sulamericano de Desenvolvedores Perl
- HLBR - um IPS invisível para a segurança em redes de computadores
- Pandora: Free Service and Network Monitoring
- Construindo Arquitetura Cluster Transparente de Banco de Dados
- A Arte da Guerra para Administradores de Sistemas
- X.org: Projects and People
- Freedom and Choice: Meet the OSI and Understand the Open Source Community
- Automação e personalização de instalações Debian em massa.
- Patents and Free/Open Source Software: Introduction and Analysis
- Xen e Além: O que há de novo no mundo da virtualização
- VoIP: Telephony and a lot more

Sábado:
- Os verdadeiros desafios da comunidade Software Livre no Brasil (e não aquilo que você ouve por aí)
- Thin Client local device support
- LTSP: The road ahead
- Técnicas e Ferramentas de Código Aberto Para Combate ao SPAM
- Difusão Social do Software Livre e Hardware Livre
- DRM como ameaça para o software livre: música, filmes, e TV digital
- Understanding the Spirit of the FOSS Movement
- Uma Experiência de Criação e Desenvolvimento da Disciplina de Software Livre na Educação
- Análise de Performance em Servidores Linux
- LDAP: já era hora de por a casa em ordem
- Implementando um Servidor VoIP Seguro (OpenSer/Asterisk)
- XEN: Virtualização se tornando popular
- Adequação do Servidor Proxy/Cache Squid a redes de extrema carga.
- Acredite se quiser: o mundo não gira em torno de um desenvolvedor.

Mas nem tudo está perdido. Quem sabe eles troquem algumas das que quero participar (como as que marquei de negrito na sexta, hehehe) para sábado. Tomara.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Aprendendo Perl por e-mail

Essa eu não sabia. A Lucia Salvi ministra um curso de Perl por e-mail, na lista do site Linuxchix Brasil

O curso já está indo para a segunda fase, mas nem tudo está perdido :P. Quem quiser ler as aulas da primeira fase, ai estão os links que foram postados no Br-Linux:

Aula 1
Aula 2
Aula 3
Aula 4
Aula 5

Quem quiser ir se inscrevendo para a segunda fase, basta se cadastrar na lista de e-mails, colocando seus dados e esperando os e-mails com as próximas aulas.

Aprender nunca é demais :D
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Mexendo com as querys

Hoje fiz modificações no sistema do blog, para arrumar as relações, que estavam com um pequeno problema. Ao clicar no menu para ver os posts de cada tag, aparecia os posts com aquela tag, porém não mostrava as outras tags que o post possuía. Agora está funcionando.

Também aumentei o número de posts que aparecem na Home para 10. Espero na próxima revisão colocar o paginador pra funcionar.

O melhor de tudo que só precisei alterar as classes do DBIx::Class e tudo estava ok. Só precisei depois mudar o nome dos objetos que mudaram nas alterações que fiz.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Google Code Jam - e o Perl?

Estava esperando ano passado (bah, faz tanto tempo :P) para acessar a página do Google Code Jam da América Latina.

A princípio nem sabia do que se tratava, porém tendo "code" no meio, sabia que era algo sobre desenvolvimento (talvez um "Summer of Code" da vida?). Se não me engano, a página dizia para voltar dia 2 de janeiro, porém esqueci.

Hoje fui acessar e ver o que era. É um concurso, que irá premiar os melhores programadores da América Latina. Mesmo sabendo que ainda não tenho capacidade de ganhar num concurso desses, sei que é bom participar, porque ai a gente pega o espírito da coisa.

Depois de clicar para me registrar, fui levado a uma página onde me decepcionei com a seguinte frase:

"The competition is available in five programming languages - Java, C++, C#, VB.NET and Python."

Ou seja, nada de Perl :(

Acho que se colocaram na jogada uma linguagem de tipagem dinâmica como o Python, não teria porque não colocar outras, como Perl, Ruby, PHP, etc...

Espero que numa futura competição, eles adicionem outras linguagens e se possível, Perl :)
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!

Começando novamente

Feliz ano novo!!!

Bom, como o esperado, o novo blog está no ar e dentro do prazo :)

Já é meio caminho andado, agora vai faltar implementar os recursos que eu não me lembrei, mais aqueles que acho massa e queira adicionar. Qualquer coisa é só baixar a versão nova do repositório e já vai estar com os últimos recursos.

O antigo ainda pode ser encontrado em http://blog.br-net.org, porém não vai ficar por muito tempo. Não vou migrar os posts dele também, então este aqui é pra começar do zero.

Algumas coisas que faltam colocar: as entradas do del.icio.us no menu lateral, que só vão estar lá assim que eu tiver mais posts, para que o menu não fique enorme com relação ao conteúdo; colocar mais links no menu ao lado; fazer o recurso de páginas "estáticas"; o arquivo de posts, que ainda não fiz porque vai levar um tempo até eu ter o número de posts suficientes para que ele seja considerado útil.

Fora isso, vou fazer a migração do FeedBurner hoje, porém não a meia-noite (você não achou que eu ia passar o ano novo na frente do PC, não é?), que foi quando esse blog foi ao ar (agendado no crontab, tudo automático :P). Já li em vários lugares que o FeedBurner funciona muito bem com migração de feeds, então espero que os cara que chegam pelo feed consigam ir direto para o novo blog.

Como já disse no outro blog, este aqui foi feito por mim, embora eu não seja muito bom de design, gostei de fazer ele no Catalyst, um framework escrito em Perl. Apesar de ter usado o MySQL como banco de dados, graças ao DBIx::Class não foi preciso usar nenhum código SQL em nenhuma parte do blog. Ou seja, nada daquelas querys complexas só pra pegar os dados dos posts :)

Espero que tudo ocorra bem como o novo blog, espero não ter feito nada errado na programação, ou pior, ter esquecido de algo.

No mais, feliz 2007 para todos, que este seja um ótimo ano para todos!

PS: This software has no bugs. It just develops random features.
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!
Termos de Uso | Powered by Catalyst
Desenvolvido por Renan Rangel