PobreBand drum kit

Quando chegou o RockBand no trabalho criou-se uma necessidade que eu nunca tinha tido: Uma bateria.

Óbviamente eu não queria pagar uma grana altíssima numa bateria profissional ou no kit completo do rockband. A Solução? ProbreBand!!!

Na verdade é apenas o início da implementação do Ardrumo, que usa um Arduino e alguns piezos para gerar um sinal  que é enviado para o sequenciador MIDI do mac (Futuramente do Linux? talvez…). Segue abaixo o vídeo.


* Minha irmã sempre disse que eu não tinha ritmo =)

Fiquei meio preocupado com o tempo de resposta e sensibilidade. Mas o tempo de resposta é muito bom (no vídeo parece que tá atrasado, mas só parece), e a sensibilidade fica perfeita quando você prende os piezos em alguma superfície.

Enfim, voltar a brincar com embarcados tem sido divertido, ainda mais aprendendo eletrônica. Breve comento sobre outros brinquedos que estou fazendo (com motor de passo, e um servo que está pra chegar).

Agradecimentos a Jesus (não esse Jesus), que me incentivou a comprar o Arduino, e ao Alex, Thulio, Jeez e Larry que estão me dando dicas de eletrônica. E claro, ao cara do Ardrumo que me fez economizar uma grana. =)

[update: 29/03/2009] A idéia é montar uma estrutura maior de borracha para os sensores, e uma estrutura em PVC para a bateria. Se um dia eu conseguir ponho aqui. A idéia é algo parecido com isso:

Bateria Eletronica

RSS client and RSS DataProvider via QtDBus

Estou estudando DBus há alguns dias, e percebi que existem poucos exemplos do módulo QtDBus. Sendo assim, resolvi publicar um código de um pequeno protótipo que fiz.

Neste meu estudo produzi uma espécie de Data Provider, que é um serviço que fica rodando sobre o DBus e é responsável por receber atualizações de rss de um determinado blog. Os clientes não acessam diretamente o rss mas sim este provider, via canal DBus, e são notificados quando ocorre alguma atualização.

dbus-example

O conceito é simples, o código também. Não estou usando nada como QDBusAdaptors ou classes afins. Na verdade, o exemplo é válido pela didática pois exemplifica uma forma de enviar objetos “estranhos” via DBus.

O código pode ser obtido com:
git clone http://labs.danilocesar.com/git/qdbus-test.git

QT mudando para LGPL

Fonte: http://arstechnica.com/news.ars/post/20090114-nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.html

Eu já sabia

Ao menos uma das previsões de 2008 saiu =)

[UPDATE 14/01 09:40]

Histórico de múltiplas instâncias do bash

Isto pode ser útil para quem trabalha com várias janelas de terminal.

O comando history do bash (também o CTRL+R) guarda apenas o histórico da última sessão aberta, o que é um problema para quem usa mais de um terminal (eu uso o conjunto Xterm + screen).

Para corrigir isto, adicione em seu .bashrc

#Firulas de historico com o bash
export PROMPT_COMMAND="history -a"
export HISTFILESIZE=2000
shopt -s histappend

Trabalhe com quantos terminais quiser, e guarde o histórico de todos!

[UPDATE 07/08/2008]: Tinha um erro na última linha. Obrigado André Matos e Sérgio Silva

Vou-me embora para Pasárgada

Vou-me embora para Pasárgada
Lá sou amigo do Reis

Novidades:

1 – Estou formado em Ciência da Computação pela UFPR.

2 – Estou deixando Curitiba. Após 22 anos na saudosa Curitiba estou deixando-a, e indo para Recife-PE.

Só tenho o que agradecer a esta magnífica cidade, à minha família que fica por aqui, e aos meus colegas da Mandriva, com os quais pude aprender bastante.

E esperar que este novo desafio seja tão bom e gratificante quanto o antigo.

SU-8W com acentos no N800

Estive me perguntando porque os acentos não funcionam corretamente no SU 8W com o N800. Decidi investigar.

Quando eu estava tentando sincronizar o teclado com o N800 pude perceber que o SU 8W é um teclado pré-configurado, e com um pouco de paciência encontrei o arquivo de configuração do mesmo: /usr/share/X11/xkb/symbols/nokia_vndr/su-8w

Após 5 minutos estudando a sintaxe, em 10 minutos é possível perceber que falta alguma coisa: Não há, pelo menos, as configurações para português, espanhol e italiano. Agora eu entendo porque a configuração de layout português não funciona.

Já que não existe uma configuração para o idioma definido, utiliza-se o us_intl, certo? Mas a primeira linha da definição do us-intl tem um comentário preocupante: “I can’t belive! It’s not intl”. Parece que a tafera não será assim tão simples.

Para propósito de teste, não criei um novo mapa de teclado para pt_BR e sim editei o us_intl. O resultado ficou aceitável, e finalmente é possível ter um teclado funcional em português. O resultado você pode entrar aqui.(Não esqueça de fazer backup antes de sobrescrever)

Nos próximos dias ponho aqui a solução definitiva.

Resltado final:
SU 8W funcionando com acentos

Liberando trabalhos da UFPR

Estou prestes a me formar, e lembrando-me de um convite do Arthur Furlan, decidi que estava na hora de liberar alguns trabalinhos legais que escrevi na faculdade.

Servidor/Cliente FTP usando raw socket.

Acho que este é o que será mais útil, principalmente aos meus colegas de Universidade.
Trabalho de redes1, a missão era implementar um cliente/servidor FTP baseado no Kermit utilizando raw sockets. Algumas pessoas fizeram utilizando UDP, mas ae fica sem graça né?! =)

Para controle de fluxo, foi implementado o pára-e-espera. Toda mensagem deve retornar um ack/nack. Obviamente, não há TCP nem IP, a “conexão” é feita sem endereçamento pelo cabo de rede. Os cabos devem ser ponto-a-ponto (até pode ser utilizado um hub, mas provavelmente ele mate todos os pacotes por serem inválidos).

Para detectar erros utilizo paridade-par (sux), e caso o cabo de rede seja removido e colocado depois de pouco tempo, o sistema deve continuar de onde parou. O arquivo final precisa ser consistente. Isto é muito complicado usando apenas paridade par, logo nas mensagens de fim de arquivo envio como dado o MD5, para garantir consistência.

O tamanho de cada arquivo nos pacotes está incorreto. Esta informação está sendo ignorada.

O resto está descrito no arquivo: Mensagens de atá 255 bytes, etc etc.

Como estava aprendendo GTK+ na época, fiz umas modificações para incluir uma interface gráfica. Ficou meio estranho pois incluí isto depois que o trabalho já estava pronto. De qualquer forma, para compilar esta versão, utilize o comando “make gui

No Unix, o pacote deve ser puxado com o comando:

svn co http://danilocesar.com/svn/redes1


Outro dia publico outros códigos.
[]‘ s

Danilo Cesar

Auto-completar no python do Mac OsX

Certa vez o Ademar comentou que o python tinha auto-completar por padrão. Pessoalmente nunca tinha percebido isto, e conversando com o Ramiro percebi o porquê: Mac OS X e Windows não inicializam os módulos readline e o rlcompleter sozinhos.

Procurando um pouco vi que habilitá-los é fácil.

Primeiro edite o arquivo ~/.pythonrc

#Enable syntax completion
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Após isto, em seu ~/.bashrc adicione:

export PYTHONSTARTUP=~/.pythonrc

Agora inicie o python e faça o teste.

Aos colegas do planeta…

Receita de Bolo Brigadeiro

Ingredientes

  • 1 xícara (chá) de açúcar
  • 1 colher (sopa) de fermento em pó
  • Meia xícara (chá) de chocolate em pó solúvel
  • 2 xícaras (chá) de farinha de trigo
  • 1 xícara (chá) de leite
  • 5 ovos

Recheio

  • Meia xícara (chá) de chocolate granulado
  • Meia xícara (chá) de chocolate em pó solúvel
  • 2 colheres (sopa) de manteiga
  • 2 latas de leite condensado

Preparo:

Massa: Bata na batedeira, as claras em neve bem firme. Junte as gemas, uma a uma, e acrescente o açúcar. Despeje o leite aos poucos, sem parar de bater. Incorpore, por fim, delicadamente a farinha peneirada com o Chocolate em Pó e o fermento. Despeje em uma fôrma redonda (28 cm de diâmetro) untada e enfarinhada e leve para assar em forno quente (200º C) por aproximadamente 40 minutos. Deixe esfriar e corte-o ao meio.

Recheio e cobertura: Leve o Leite Moça, a manteiga e o Chocolate em Pó ao fogo, mexendo sempre. Quando ferver, abaixe o fogo e deixe cozinhar, sem parar de mexer, por cerca de 6 minutos ou até formar um creme consistente. Cubra uma metade do bolo com este creme, arrume a outra metade, espalhe o restante do brigadeiro com uma espátula ou faca e espalhe o chocolate granulado em toda a superfície. Leve para gelar e sirva.

E tenho dito!

Hello world para Native-Symbian

Certa vez eu quis explicar a um amigo porque escrever código em python para celular era mais legal que escrever código em C (native-symbian e não OpenC). Acho que hoje talvez eu consiga.

Segue os exemplos:

Python

print "Hello World"

C++-Epoc


// Hello World in C++, Epoc style (for Symbian OS)
#include < eikapp.h >
#include < eikdoc.h >
#include < eikappui.h >

class CHelloWorldAppUi;
class CEikApplication;
class CHelloWorldAppView;

class CHelloWorldApplication : public CEikApplication
{
public:
TUid AppDllUid() const;
protected:
CApaDocument* CreateDocumentL();
};

class CHelloWorldDocument : public CEikDocument
{
public:
static CHelloWorldDocument* NewL(CEikApplication& aApp);
static CHelloWorldDocument* NewLC(CEikApplication& aApp);
~CHelloWorldDocument(){};
public:
CEikAppUi* CreateAppUiL();
private:
void ConstructL() {};
CHelloWorldDocument(CEikApplication& aApp){};
};

class CHelloWorldAppUi : public CEikAppUi
{
public:
void ConstructL();
CHelloWorldAppUi(){};
~CHelloWorldAppUi(){};
};

static const TUid KUidHelloWorldApp = {0x10005B91};

GLDEF_C TInt E32Dll(TDllReason )
{
return KErrNone;
}

EXPORT_C CApaApplication* NewApplication()
{
return (new CHelloWorldApplication);
}

CApaDocument* CHelloWorldApplication::CreateDocumentL()
{
CApaDocument* document = CHelloWorldDocument::NewL(*this);
return document;
}

TUid CHelloWorldApplication::AppDllUid() const
{
return KUidHelloWorldApp;
}

CHelloWorldDocument* CHelloWorldDocument::NewL(CEikApplication& aApp)
{
CHelloWorldDocument* self = NewLC(aApp);
CleanupStack::Pop(self);
return self;
}

CHelloWorldDocument* CHelloWorldDocument::NewLC(CEikApplication& aApp)
{
CHelloWorldDocument* self = new (ELeave) CHelloWorldDocument(aApp);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}

CEikAppUi* CHelloWorldDocument::CreateAppUiL()
{
CEikAppUi* appUi = new (ELeave) CHelloWorldAppUi;
return appUi;
}

void CHelloWorldAppUi::ConstructL()
{
BaseConstructL();

_LIT(message,"Hello!");
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(message);
}

fonte: http://www.roesler-ac.de/wolfram/hello.htm

É uma cilada Bino!

http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=207…

Acho que vale a pena ler os comentários antes de ler o texto:

Yes, the fact that the writer thinks that MEPIS is based on Mandriva shows how little knowledge he has, and how poorly researched his paper is..

Extra, extra… Nokia adquire TrollTech

A Nokia divulga suas intenções de adquirir a trolltech.

Com estas informações tenho duas perguntas:

Será a Nokia capaz de manter a qualidade da biblioteca QT?

Será que veremos uma licença LGPL para a libQT? Se isto acontecer, será o fim da libGTK?

PyChord First Release Candidate. Pegue seu .install aqui!

Finalmente, Pychord está pronto!

Todas as features (da versão 1.0) ja estão funcionando. Agora eu preciso trabalhar em duas linhas diferentes:

[1] Eu não tinha conhecimento suficiente sobre pygame quando iniciei este projeto. Então eu preciso alterar algumas partes do código para corrigir decisões erradas de engenharia que tomei anteriormente.
[2] Se você for utilizar esta aplicação, por favor, dê-me um feedback e eu vou tentar melhorá-la!

Depois disto eu vou iniciar a versão 1.1 ( com as features que prometi anteriormente ).

Caso você precise de informações sobre como utilizar o programa, leia isto.

Você pode fazer o download do “.install” aqui!

Se você tiver problemas para instalar esta aplicação, tente novamente procurando por pychord em ApplicationManager->Browse Installable Applications->others->pychord

Se após isto você ainda tiver problemas (ou sugestões), por favor, reporte!

[]’s

Cursos e Palestras na Semana da Computação da UFPR

Sei que já está sendo bem divulgado, mas não custa nada divulgar aqui também.

Nos dias 22 a 26 de Outubro de 2007, o CEI, Centro de Estudos de Informática da UFPR, e o CATEI, Centro Acadêmico de Tecnologia da Informação da UFPR, estão realizando a a Semana da Computação. Nesta, será ofertado vários mini-cursos e palestras, dentre eles posso citar:

Palestras:

  • Construindo e Construindo pacotes Debian
    Será oferecida pelo Faw, do Debian-PR. Interessante para quem quer manter pacotes pro Debian, Ubuntu ou até mesmo pro Maemo
  • Overlays no OpenLDAP: facilitando a vida do administrador
    Ofertada pelo Andreas, da Mandriva Conectiva.
  • IA vs Programação convencional

Cursos:

  • PHPArthur Furlan – Trabalhei com o cara, ele é fera na parada.
  • Python – Luiz Carlos Geron – Já fiz este curso, uma execelente forma de iniciar-se na linguagem.
  • Programação em QtGustavo Boiko – O Cara do Qt4 da Mandriva.

Faça sua inscrição, escolha o que quer fazer, e nos vemos lá!

ps.: Brincadeiras à parte, o Boiko prometeu-me provar durante o curso que QT é muito mais que um toolkit gráfico. Essa eu quero ver! =)

Pychord: minha primeira contribuição ao Maemo.

Estou dando vida à minha primeira contribuição opensource ao projeto Maemo.

É o Pychord.

PyChord é uma aplicação que ajudará músicos durante ensaios mostrando cifras das músicas. A vantagem é que ele possui função de auto-scroll da tela, além de ter botões relativamente grandes.

Bastará ao usuário procurar pelo nome da música e o sistema mostrará a cifra. Como passei muito tempo brincando com a interface dele (fazer widgets no pygame parecia impossível antes, além do scroll sensível e com impulso), acabou não dando tempo de desenvolver a interface de busca por cifras. Mas estou pensando em usar o SQLite mesmo. De qualquer forma, além da search engine tem algumas features que pretendo desenvolver pra ele:

  1. Troca de tom das músicas (muito útil pra caras como eu que custam para lembrar que a diferença entre B e C é de meio tom)
  2. Rotação da tela.

De qualquer forma, tenho que agradecer ao Tony Maro que desenvolveu o teclado virtual e ao Marcelo ao dizer que não é bonito scroll-bars aonde não precisa. =)

O código não está aquela beleza, mas vai ter feriado por aí e eu vou ter bastante tempo livre para arrumar e terminar a aplicação.

Meu inglês não é lá essas coisas, mas fiz um vídeo de demonstração da aplicação que pode ser visto abaixo.

Com isto estou criando uma versão do meu blog na língua da rainha: http://labs.danilocesar.com.

E para quem quiser ver o código do PyChord:

svn co http://labs.danilocesar.com/pychord/trunk

Aceito sugestões!

[]’s a todos e bom feriado!