Meu nome é Elton Minetto

Codes

Migrando do Wordpress para o Octopress

Eu mantenho esse site desde meados de 2003 e nesse tempo venho usando o Wordpress como plataforma. Ele sempre foi uma boa opção, mas um detalhe vinha me deixando nervoso nos últimos tempos: eu passava mais tempo formatando os textos, imagens e códigos do que realmente escrevendo o texto.

Recentemente descobri o Markdown para realizar as marcações e gostei muito, tanto que usamos no novo site da Coderockr e eu usei para escrever o e-book Zend Framework 2 na prática.

Na construção do site da Coderockr nós usamos a dupla Jekyll e Github Pages. Nesse site eu usei uma solução um pouco diferente: Octopress, Google Analytics, Disqus e Amazon S3.

Nesse post vou comentar sobre o processo de migração e as ferramentas usadas

Gerenciando assets por módulos no Zend Framework 2

Obs: Esse é um post avançado sobre Zend Framework 2. Se você não está familiarizado com os novos termos e conceitos do framework eu recomendo esse screencast com a introdução ou o e-book Zend Framework 2 na prática (eu sei que é cara de pau hehe)

Uma das funcionalidades mais úteis do Zend Framework 2 é a forma como os módulos agora podem ser facilmente incluídos ou removidos de um projeto. Um módulo agora é realmente uma porção de código que pode ser reaproveitada facilmente. Nesse post vou mostrar isso usando um módulo muito útil chamado AssetManager.

Gerando dados para testes de aplicativos

Ontem passei novamente por uma situação que imagino ser bem comum para a maioria dos desenvolvedores. Estava testando um novo projeto e precisava alimentar algumas tabelas com dados, para poder fazer testes de usabilidade, performance, etc. Resolvi investir algumas pesquisas no Google e acabei encontrando uma boa solução para o caso, o site http://generatedata.com/ Com o site é possível gerar diversos dados, em vários formatos como SQL, XML, CSV e HTML. Para exemplificar o uso eu gravei um pequeno vídeo mostrando a geração de SQL para testar uma tabela de pessoas

Maldito segmentation fault

Esse é um daqueles posts que serve mais para me ajudar, mas acho que pode ser útil para mais pessoas. Já tive vários casos onde uma aplicação PHP gera um erro muito genérico nos logs do Apache, o famigerado “Segmentation fault”. Na prática significa que alguma coisa deu tão errado que o processo do Apache que estava executando o seu script PHP foi cancelado. Mas o log não ajuda muito, pois podem ser várias coisas. Nesse post vou descrever o processo que fiz para encontrar um problema em uma aplicação. Os passos foram feitos em uma máquina virtual Ubuntu, a que eu gerei com o Vagrant. O primeiro passo é instalar os pacotes necessários para conseguirmos toda a informação possível:

News feed usando nodeJS, Pubsub.io e jQuery

Um dos projetos que estamos desenvolvendo na Coderockr é uma rede social, da qual vamos dar mais detalhes no futuro, e um dos componentes é um news feed, algo parecido com o “mural do Facebook” onde são mostrados os eventos mais atuais aos usuários (novas notícias, novos pedidos de amizade, novos conteúdos, etc). Estamos estudando algumas tecnologias para melhor solucionar esta necessidade, e uma das soluções é algo bem novo para nós, o uso quase que total de Javascript: nodeJS, Pubsub.io e nossa velha amiga jQuery. O nodeJS é uma das tecnologias mais interessantes que surgiu nos últimos tempos. O mago do Javascript @jaydson escreveu alguns posts muito legais fazendo uma introdução e mostrando os primeiros passos na ferramenta. Recomendo a leitura. O Pubsub.io é construído sobre o nodeJS e é um “query based message hub”, trabalhando com o conceito de publishers (programas que publicam conteúdo) e consumers (os que consumem as mensagens), e adicionando a possibilidade de usar uma query language baseada na usada pelo banco NoSQL MongoDB para filtrar os resultados. A solução que estamos testando funciona da seguinte forma: sempre que um evento acontece (uma nova foto é salva, por exemplo) o componente que executou o evento (um model ou um controller de uma aplicação Zend Framework, por exemplo) faz uma requisição http para uma url servida pelo nodeJS e este publica uma mensagem no Pubsub.io. Na aplicação client, no navegador web, usando a biblioteca JS do Pubsub.io e o jQuery mostramos as mensagens na tela. Vamos tentar explicar com códigos :) Após instalar o nodeJS e o npm (node packet manager) é preciso instalar o Pubsub.io, usando o comando abaixo, no mesmo diretório onde ficará o script server.js (script nodeJS mostrado abaixo): npm install pubsub.io Agora é preciso instalar e executar o servidor do Pubsub.io: git clone git@github.com:pubsubio/pubsub-hub.git ./pubsub-hub/lib/server.js Ele ficará ouvindo na porta 9999 O próximo passo é escrever o código do aplicativo do nodeJS e executá-lo com o comando: node server.js Como o nodeJS fica executando na porta 8080 podemos publicar novos eventos usando algo simples como um comando curl, via linha de comando: curl -d "title=new photo&detail=http://localhost/photo/id/1&user=eminetto" http://127.0.0.1:8888 O -d indica que estamos usando o comando POST para enviar. Podemos também usar o curl no PHP: $url = 'http://127.0.0.1:8888'; $postvars = 'title=new image&detail=http://localhost/image/id/1&user=eminetto'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST ,1); curl_setopt($ch, CURLOPT_POSTFIELDS ,$postvars); curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); curl_setopt($ch, CURLOPT_HEADER ,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); $Rec_Data = curl_exec($ch); Na parte client vamos usar a biblioteca Javascript do Pubsub.io e jQuery para mostrar ao usuário a notificação: ver código

Contabilizar espaço usado em FTP usando Python

Aqui na empresa temos duas contas de FTP contratadas no nosso plano de hospedagem para usarmos como espaço de backup. As duas contas tem um espaço limitado e toda semana eu preciso monitorar quanto espaço estamos usando, para evitar erros no script de backup. Para facilitar esse controle eu criei um pequeno script Python para navegar em todas as pastas e me dizer quanto espaço estou usando. O script ficou assim:

Enviando DMs do Twitter via shell script

Monitorar os servidores e serviços é uma tarefa importante para manter seus sites e sistemas sempre em ordem. Existem diversas ferramentas bem completas como o Nagios que fazem praticamente todo o serviço. Eu uso o Nagios para monitorar quase tudo e ele me avisa via e-mail de quaisquer problemas. O problema é que nã verifico e-mail o tempo todo.  Uma solução seria mandar os avisos via SMS, mas isso envolve alguns custos.

Lock em arquivos usando SVN e Subclipse

Outra novidade para mim ao usar o Subversion foi o controle de Locks. 

Eu sempre usei o CVS integrado ao Eclipse para gerenciar os projetos que eu trabalhava e com essa duplinha é bem fácil configurar para evitar que dois programadores alterem o mesmo arquivo.