metalstream
Quinta 13 Agosto 2009 at 6:57 pm A um 1 atrás eu me formei (mas até hoje não busquei o diploma) e como projeto final, eu fiz um cliente Jabber/XMPP que armazena links de feeds XML (RSS ou Atom) no PubSub, tudo em JavaScript. Que no fundo é um cliente que agrega feeds XML a cada contato. Meu primeiro orientador achou que eu estava pirando muito e podou um tantão o que eu iria implementar. Em apenas dois dias eu fiz o cliente, usando como base um exemplo da jsjac. Fiz uma extensão da jsjac que chamei de pubsub.js e outra para recuperar as fotos dos usuários chamada vcard.js. Usei a jQuery pra fazer algumas coisas no cliente, mas como não pude pirar muito naquela época, tá tudo bem simples. Espero voltar a mexer nesse projeto logo.Rodei um demo aqui: http://metalstream.alucinados.com/
E quem quiser mandar patch, eu uso git, é só rodar um:
git clone http://git.alucinados.com/git/metalstream.git
Alguns screenshots dele funcionando:
| Login: |
Cadastrando um Feed: |
| Lendo um Feed: |
patch pro zoneminder
Quinta 04 Junho 2009 at 7:47 pm Eu uso o ZoneMinder aqui em casa, que é um software para CFTV (Circuito Fechado de Televisão). Tempos atrás eu bloguei falando do zoneminder. Hoje, quando atualizei para versão 1.24.1-1 notei a seguinte mensagem:Warning: Cannot modify header information - headers already sent by
(output started at /usr/share/zoneminder/lang/pt_br.php:751) in
/usr/share/zoneminder/includes/functions.php on line 97
Na hora eu já imaginei o que era. Abri o arquivo "/usr/share/zoneminder/lang/pt_br.php" e lá estava, uma linha em branco aṕos a tag ?>, que é a tag que fecha comandos PHP. Olhei os outros arquivos de línguas e alguns deles também possuíam a linha em branco. Então, lá vou eu fazer um patch pra corrigir esse erro. Pensei um pouco, fiz alguns testes e não consegui. Como sou preguiçoso fui logo perguntar pra alguns amigos que também não puderam me dar uma solução na hora. Daí, evitei a fadiga e encontrei o comando abaixo:
sed '${/^$/d}' arquivoEsse comando só removia uma única linha, eu tinha casos mais de uma linha... Procurei mais e achei um exemplo bem legal:
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' arquivoCom esse comando, era só eu fazer um loop nos arquivos de línguas, gerar um novo arquivo com as modificações, executar o diff para comparar as mudanças e salvar num arquivo para enviar pros mantenedores do zoneminder. Acabei escrevendo o script abaixo:
#!/bin/bash
files=$( find . -name "*.php" )
# remove as linhas em branco do final do arquivo e cria um arquivo temporário
for file in $files; do
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' $file > "$file.new"
done
# faz a comparação entre o arquivo antigo e novo e salva
for file in $files; do
diff -burN $file "$file.new" >> patch.metal
done
# remove os arquivos temporários
find . -name "*.new" | xargs rm
Aṕos executar o script acima, abri o arquivo gerado, o "patch.metal" e fui conferir. Aparentemente tudo certo, agora vou abrir o bug e torcer pra ele não ficar mais de um ano pra ser fechado.
UPDATE:
Bug reportado, #531910, agora vamo ver...
Como alterar um commit feito no Git que esta no meio da árvore?
Quarta 27 Maio 2009 at 4:48 pm ( comecei a escrever esse post em 02 de setembro 2008; mas só agora publicando, antes tarde do que nunca =P )Como alterar um commit feito no Git que esta no meio da árvore?
Fiz essa pergunta pro kov na mesma época que comecei a escrever e essa foi a resposta dele na época:
Primeiro é preciso criar uma tag para identificar o commit que você quer editar.
Nesse exemplo, estou editando o commit 'a9851296d5eb52161fcb151d58f4aaee3f9ce416' e criando a tag 'bad'
git tag bad a9851296d5eb52161fcb151d58f4aaee3f9ce416
Colocar o commit no topo
git checkout bad
Agora é fazer as modificações nescessárias...
Adicionar os arquivos editados no HEAD
git add 'arquivos alterados'
Refazer o commit
git commit --amend
Reconstruir o histórico
git rebase --onto HEAD bad master
git checkout master
Recentemente ele me mostrou outras maneiras mais elegantes. Mas fica pra quem quiser deixar nos comentários =D
Pyro (PYthon Remote Objects)
Sexta 28 Setembro 2007 at 4:53 pm
Encontrei o Pyro quando precisei desenvolver um sistema usando chamadas RPC para matéria de Sistemas Distribuídos.
Pyro (PYthon Remote Objects) é um framework para o desenvolvimento de sistemas distribuídos, escrito em python. A licença na qual ele é distribuído é a MIT Software License. O Pyro é uma super alternativa à RMI, DCOM, etc.
Jogo da Velha usando sockets
Terça 28 Agosto 2007 at 8:18 pm Semestre passado cursando a disciplina Redes II, tive que desenvolver um Jogo da Velha usando sockets. E como sempre deixo tudo pra última hora... Virei a noite/madrugada na casa do cascardo e conseguimos fazer uma versão inicial, e até bem jogável, do Jogo da Velha. Usamos GTK2 e Glib2. Era parte do TP fazer uma pequena documentação. O Jogo é GPL.

Plataforma Xemele
Domingo 18 Março 2007 at 6:48 pm Quem bloga os males espanta! ( já diziam vários amigos meus =P )Quem se lembra da Plataforma Agregadora Xemele?!
CMS "Quântico" + Agregador XML/Jabber "Boto"
A Pesquisa e Desenvolvimento dela ainda continua mesmo depois de 3 meses sem mexer em código e com a nossa equipe (eu, Thiago Silva, Marcos Machado, Daniel Pádua) desfeita.
Conversando com todos eles, acabei tirando o desenvolvimento do Quântico/CMS de dentro do minC e coloquei no GNA. Agora o código esta mais "aberto", de fácil acesso e eu não preciso me preocupar com gerenciamento de servidor...
A idéia é rodar um wiki e usar o domínio xemele.org com tudo que nós já produzimos de documentação.
Pra baixar os fontes do Quântico/CMS:
Checkout via SVN protocol (TCP 3690):
svn co svn://svn.gna.org/svn/xemele/trunk xemele
Checkout via http:
svn co http://svn.gna.org/svn/xemele/trunk xemele
Links do Projeto:
Instando o Quântico/CMS
Manual de Desenvolvimento Quântico/CMS
Manual de Utilização do Quântico/CMS
Arquitetura do Quântico/CMS
Agenda de Produção
GNA TODO
feed2book
Sábado 02 Dezembro 2006 at 6:52 pm Semana passada eu voltei a mexer no meu "gerador de livro" e cabei rebatizando o projeto para feed2book. A idéia inicial do projeto era imprimir o "alma alucinada" em "formato livro". Agora, eu quero deixar ele funcionando pra qualquer blog. (super treta) =PO próximo passo do projeto, é criar serviços como:
A pessoa cadastra seu feed (Atom ou RSS). (Uma espécie de agregador, tipo o bloglines). Com isso, essa pessoa pode editar os posts, trocar a ordem, apagar outros... Fazendo assim todo um esquema de edição...
Ela ainda pode querer acrescentar outros textos ao livro. Seria algo como recuperar todos as publicações que possuem a tag "Lua" e acrescentá-los ao livro.
Com a edição pronta, essa pessoa pode escolher o tipo de papel, cor, etc. E ainda, pode cadastrar um endereço pra onde o livro deve ser entregue. Esse livro, pode até mesmo ser um presente pra outra pessoa...
Resumindo: produção + edição + impressão + distribuição
Quero pirar em serviços assim, quem quiser ajudar será bem vindo =)
Hospedei o código do feed2book no Gna. Eles também usam o savane, mesmo motor do savannah. Lá tem um viewcvs, então rola de navegar no código ou então baixá-lo. Estou usando SVN...
Checkout via protocolo SVN (TCP 3690):
svn co svn://svn.gna.org/svn/feed2book/trunk feed2book
Checkout via http:
svn co http://svn.gna.org/svn/feed2book/trunk feed2book
Pra quem quiser ir testando => http://metal.alucinados.com/feed2book
Também criei uma lista de discussão, é só chegar chegando...
Super Console Firefox
Segunda 30 Outubro 2006 at 4:24 pm Extensão foda do Firefox que habilita um super console de erros, bem melhor do que original que vem na versão 1.5.Ele divide os erros em categorias facilitando a vida do desenvolvedor. Fundamental para designers ou programadores, principalmente depois que o Firefox resolveu complicar o console listando erros de javascript junto com erros de css.
segue o link: https://addons.mozilla.org/firefox/1815/
php-gettext
Terça 20 Junho 2006 at 1:54 pm O hansfn respondeu meu post no fórum do Pivot. Eu já tinha conversado com ele via ICQ e já sabia que ele era contra o GNU Gettext no Pivot. Mas não sabia porque; Agora, eu sei...Só não queria que ele fosse o primeiro a responder o meu post, mas neh... Agora, depois de quase 1 mês, duvido que mais alguém do Pivot Team vai ter coragem de falar algo =(
Com a resposta dele, eu fiquei sabendo que existe uma implementação escrita em PHP para o GNU Gettext, o php-gettext. Essa implementação lê diretamente os .MO (binários) e é uma alternativa, incompleta, ao módulo GNU Gettext.
Pesquisei no repositório da debian pra ver se alguém estava usando o php-gettext. E não é que tinha: moniwiki, squirrelmail, tutos. Mais uma lib que nenhum dos mantenedores separou...
Como estou empacotando o scuttle, fui ver como ele usava o GNU Gettext e descobri que ele também usa o php-gettext.
Decidi mandar um email pra lista de Aplicações WEB da debian perguntando qual a política para o GNU Gettext, já que existe um módulo pra ele no PHP, e esse módulo já é compilado no PHP da debian. Só que até agora não tive respostas...
E como o cascardo disse: "Se não existe política, faça ela você mesmo!". E é o que eu estou fazendo, abri um ITP (Intent To Package) para o php-gettext, já fiz o pacote e coloquei ele como dependência no pacote do scuttle. E logo que ele cair na unstable, vou abrir um BUG pra cada sistema (moniwiki, squirrelmail, tutos) fazer o mesmo...
Pivot com GNU Gettext
Quinta 01 Junho 2006 at 11:44 am O sistema que eu uso para gerenciar esse Blog, é o Pivot. Apanhei um tantão para traduzir o Pivot 1.30 RC2 para o Português/Brasil, pois eu não sabia quais string foram adicionadas ou alteradas.Conversando com o hasfn, que faz parte do Pivot Team, ele me indicou o sistema que ele usa para gerenciar as traduções. Achei confuso... Esse sistema de Array do Pivot é muito tosco, eu prefiro GNU Gettext =D
Eu sou desenvolvedor, então tenho familiaridade com códigos. O sistema de Array de Línguas não deixa pessoas que não sabem programar à vontade na hora de traduzir... É bem mais agradável isolar as strings.
Hoje eu postei no fórum do Pivot um script para conveter o Sistema de Array Línguas para GNU Gettext. Vamo esperar e ver o que vai rolar.