Posted in julho 2011

Dropbox como substituto do iDisk

Com o lançamento do iCloud a Apple já avisou que em alguns meses vai descontinuar um dos serviços do MobileMe que eu mais usava, o iDisk. Então fiz uma pesquisa para achar um substituto e o escolhido foi o já amado por todos, o Dropbox. Mas tive dois pequenos problemas para resolver: como eu já uso o Dropbox para armazenar os dados da Coderockr precisava ter duas contas ativas no meu Mac. E o segundo problema é que o iDisk fornece uma pasta pública para acesso via web, útil para compartilhar coisas temporárias e o Dropbox não permite isso.
Para resolver o primeiro problema eu segui os passos deste site
Para solucionar o segundo problema eu configurei o Dropbox para Linux em um servidor que eu controlo, uma instância das mais simples no EC2 da Amazon. Eu segui os passos deste site, mas resumindo:

wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
tar -xvzf dropbox.tar.gz
~/.dropbox-dist/dropboxd &

A primeira vez que você executar ele vai mostrar uma mensagem com um link para você acessar no navegador. Ele vai fazer com que a máquina Linux seja vinculada a sua conta do Dropbox. Após isso será criado um diretório Dropbox no seu home.
Agora basta configurar o seu Apache para ter acesso a este diretório. No meu caso eu criei um domínio virtual:

DocumentRoot "/home/eminetto/Dropbox/Public"
ServerName public.eminetto.me

Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all


Lembre-se de dar permissão de leitura nos diretórios para o usuário do Apache ter acesso:

chmod 755 /home/eminetto
chmod 755 /home/eminetto/Dropbox
chmod 755 /home/eminetto/Dropbox/Public

Outra opção é usar algo como http://seuserver.com.br/~eminetto/Dropbox/Public, se o Apache tiver essa opção configurada.
Se o seu Apache estiver configurado para listar os arquivos do diretório você já pode ver os seus arquivos ao acessar via web. Caso não esteja, é possível usar um script python que lê o diretório e cria um index.html com o conteúdo. Depois de instalado você pode executar o comando:
/usr/bin/dropbox-index -R /home/eminetto/Dropbox/Public/
Se tudo der certo, sempre que você alterar/adicionar arquivos no Dropbox do seu desktop (no meu Mac no caso, mas o Windows e o Linux deve funcionar na mesma forma) é sincronizado com o linux e estão visíveis na internet. Lembre-se de que o comando
~/.dropbox-dist/dropboxd &
Deve estar sempre executando no Linux, pois é o responsável por fazer a sincronização entre a pasta local e o Dropbox.
Com algumas configurações adicionais no Apache você pode colocar autenticação e coisas mais complexas para incrementar a solução.
E que venha o iCloud. Agora o iDisk não vai me fazer mais falta

Sorteio de descontos para o webcast sobre frameworks

A Coderockr e a ConexTI estão sorteando duas bolsas integrais e mais dois cupons de 10% de desconto para o webcast sobre frameworks que o vou ministrar em Agosto.
Para participar é fácil, basta deixar um comentário no post com seu nome e-mail, até o dia 25/07 e vamos divulgar o ganhador no dia 26, no twitter da Coderockr

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

No site do Pubsub.io é possível ver outras features importantes como a possibilidade de usar autenticação para garantir a segurança, queries avançadas e a possibilidade de usar o MongoDB para armazenar as mensagens.
Gostei muito da solução. Ainda falta testar coisas como performance, escalabilidade mas me parece ter um bom futuro.

Webcast sobre Frameworks

Depois do sucesso do webcast sobre MySQL o pessoal da ConexTI me convidou para mais duas edições, um sobre frameworks em PHP e outro sobre Zend Framework. O primeiro, sobre frameworks, vai acontecer no dia 09/08 às 19:00.
Mais detalhes no site do evento

Etiquetado , , , ,

Screencast sobre Sphinx

Publiquei um novo screencast no canal da Coderockr no Vimeo, desta vez sobre a ferramenta de indexação Sphinx search.
Confere lá

Minicurso de Zend Framework no Paraná

Nos dias 18 e 19 de Agosto eu vou ministrar um minicurso sobre o Zend Framework na cidade paranaense de Guarapuava. As inscrições já estão abertas, no site do evento

Slides da palestra do TDC

Sábado eu participei do TDC 2011 em São Paulo. O evento foi um sucesso, muito bem organizado e executado. Eu palestrei na trilha de empreendedorismo, o que foi um grande desafio para mim, por ser a minha primeira palestra não técnica. Mas pelo feedback que recebi, o pessoal parece ter gostado do resultado.
Publiquei o material no meu slideshare. Publiquei com as notas do apresentador, para facilitar um pouco a compreensão, pois a palestra foi meio “zen presentation style”, com poucos slides e frases (outra novidade para mim)
Obrigado aos que assistiram a palestra e parabéns novamente ao @porkaria que organizou a trilha de empreendedorismo, e a todos os responsáveis pelo evento.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers