Skip to content

Auto-completar no python do Mac OsX

27-May-08

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…

12-May-08

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!

Go Speed, Go away from here!

12-May-08

Duas horas a menos de vida e oito reais mais pobre, posso dizer que assistir Speed Racer acrescentou-me algo: Atualizei meu conceito de lixo.

E tenho dito!

Hello world para Native-Symbian

06-May-08

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!

06-May-08

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..

Bug closed…

17-Apr-08

Dá um real ae, dá um real ae!

14-Apr-08

O que não se faz por uns trocados?

April fools day

31-Mar-08

Mais uma vez chegamos naqule patético dia onde as pessoas, por algum motivo, acham engraçado contar mentiras.

Logo, foi dado o aviso. Ignorem blogs, sites de jornais, conversas de amigos e etc…

FAQ:

  1. Não, a Microsoft não liberou os fontes do Windows
  2. Não, não há um novo vírus multiplataforma
  3. Não, Elvis não morreu

Primeiro de Abril

Pychord 2 saindo do forno

30-Mar-08

Certa vez um colega de trabalho de uma das empresas por onde passei comentou:

“Não basta colocar um filho no mundo, é preciso alimenta-lo, educa-lo e fazer o possível para vê-lo crescido!”

Pois bem, depois de certo tempo resolvi voltar a mexer no abandonado código do pychord e adicionar algumas funcionalidades que eu precisava.

Após duas tentativas frustradas (0.4.5 e 0.5) percebi que era necessário re-escrever a biblioteca gráfica. Assim foi feito. Adicionei o conceito de janela, conteiner de widgets, melhorei a herança entre classes, etc. A interface não mudou muita coisa, pygame é meio chato para isso.

Ainda estou usando o padrão .chr criado para a primeira versão, mas pretendo adicionar o formato XML opensong em breve.

A parte legal, e a novidade mais visível, é que criei uma heurística para decidir quais linhas são acordes e quais não são. Esta heurística pretendo ir melhorando a medida que for encontrando casos em que ela não funcione.

Para resumir: ao nível de usuário, as modificações foram:

  1. Heurística para reconhecer/diferenciar acordes de letra de músicas
  2. Mudança de tom
  3. Listas clicáveis e móveis
  4. Suporte ao Maemo OS2008
  5. Controle da luminosidade durante a apesentação das cifras ( o display não apaga durante a mostragem mais )

A parte nerd

A idéia era que o código da interface pudesse ser reutilizada em outros projetos, logo trabalhei para ter uma GUI mais conscistente do que a anterior. Utilizando melhor o conceito de herança foi possível simplificar a utilização da lib, deixando as coisas com menos cara de gambiarra.

Através do conceito de slots ficou bem simples implementar mais de uma action para um mesmo evento.

Screenshots

Pychord-screenshot

Tela de busca, não mudou muito de como era anteriormente.

Pychord-screenshot2

Visualização da cifra

Pychord-Screenshot3

Mudaça de tom.

Como sempre, o arquivo de instalação pode ser pego aqui. Ainda não criei um repositório pois o aplicativo está em fase de testes. Mas pretendo fazer isto em breve.

[UPDATE 03/03/2008] Por problemas de codificação dentro do módulo sqlite3, os textos devem estar em formato UTF-8…

Sugestões para outro fim de semana em Curitiba..

29-Mar-08

Relexões de um desocupado: Breve relato sobre peças de teatro:

PEQUENAS CAQUINHAS É MUITO BOM! MESMO!

Dentro de alguns minutos irei assistir a peça ‘Laranja Mecânica‘, adaptação do livro de mesmo nome. Atualizarei este post com a minha opinião quando voltar.

E que venha Tangos e Tragédias!

[Update 31/03/2008]: Laranja Mecânica é meio trash…

from week import weekend. weekend.start()

15-Feb-08

from week import weekend
weekend.start()

Não sou de ficar reclamando, mas esta semana foi punk!
Graças a Deus, e à CLT ( Tá, é estágio, mas não tem funcionários para abrir a empresa ) não trabalho no fim de semana.

Para este fim de semana, nada de coisas nerds! Vou seguir a recomendação do Felipe e assistir Cloverfield. Também estão no meu TODO as duas peças do João Luis Fiani:

Ouvi excelentes comentários sobre ambas!

Se você é de Curitiba e estará largado no fim de semana: Já dei algumas idéias!

Bom fim de semana a todos!
[]’s

Extra, extra… Nokia adquire TrollTech

28-Jan-08

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?

GoogleMaps errado não é mais problema! Patch para maemo-mapper aqui!

19-Jan-08

Como descrevi aqui a alguns dias atrás, o GoogleStreeMaps tem problema em posicionar geograficamente as ruas de algumas cidades do Brasil ( principalmente do interior ). Para quem o utiliza apenas para ver rotas não tem problema algum, mas para quem utiliza-o como motor para GPS a coisa muda de figura. O que acontecia era mais ou menos isto:

Error on GoogleStreetMaps

(A linha vermelha indica o que o carro estava fazendo, a linha verde indica o que o GoogleStreetMaps indicava fazer)

Como não quero passar aperto em Sampa semana que vem, e sei que Sorocaba e Itu estão na lista das cidades que o GoogleMaps erra, resolvi escrever um pequeno patch para o Maemo-Mapper, que adiciona a seguinte feature: “Calibrar o Mapa”.

Funciona mais ou menos assim: Ao identificar um erro de deslocamento, o usuário vai no menu Mapas e depois em “Calibrar Mapa”. Logo após clica-se em algum lugar da tela onde ele crê que realmente está.

O ideal mesmo seria parar o carro em uma esquina, identificar a rua onde está e a rua que irá cruzar, e clicar bem em cima.

O algoritmo faz duas coisas muito simples: Calcula a diferença da Latitude e Longitude do clique e da posição real indicada pelo cursor. Em mãos desta diferença, ela será sempre adiciona à Latitude e Longitude na leitura do GPS.

Desta forma conseguiremos andar sempre em cima da rota. O resultado final será algo como:

GoogleMapsError Fixed by Maemo-Mapper Calibrate Feature

(Há! bem melhor agora!)

Bom, se o patch mostrar-se útil para mais alguém posso envia-lo à equipe do maemo-mapper… Para mim com certeza o será.

O patch pode ser encontrado aqui, e o pacote para instalar aqui.

É isso, bom fim de semana a todos!

[]’s

Danilo Cesar

[UPDATE: 15/02/2008] Quase um mês depois…

O mapeamento de Sorocaba é melhor do que eu pensava. Usei o calibrador apenas em um momento, quando entrei na cidade. Excelente trabalho do nosso co-piloto!

Depois, com o calibrador desligado, percebi que o erro era imperceptível em vários pontos, inclusive na chegada do kartódromo de Itu! Por falar em Kartódromo, o Schinchariol é uma exelente opção para os paulistas amantes da velocidade.

Notas de um viajante.

11-Jan-08

Adquiri um GPS Bluetooth Holux a alguns dias atrás para minha viagem por São Paulo com alguns amigos, e como viria para Londrina neste fim de semana com meu pai resolvi testa-lo na viagem.

Bom, o equipamento é o seguinte: GPS Holux com interface bluetooth, N800 com Maemo-Mapper com trajeto e mapas adquiridos antecipadamente através do Google-Maps.

A saída de Curitiba e boa parte do trajeto até chegar em Londrina foi excepcional! Se havia algum erro de GPS, este foi imperceptível. Eu ficava admirado em ver o ponto azul em uma curva exatamente quando o carro fazia a mesma. Tudo muito sincronizado.

Como nem tudo são flores, chegando em Londrina houve uma grande decepção, pois havia um erro de quase duas quadras ( uns duzentos metros ) em relação ao ponto mostrado no mapa e o ponto onde eu realmente estava.

De duas uma:

  1. O GPS está me passando uma informação errada.
  2. O Google Maps não mapeou direito às coordenadas de Londrina.

Pessoalmente, a primeira eu acho difícil de ser verdade, uma vez que ele estava funcionando muito bem em Curitiba em meus testes utilizando de 9 a 10 satélites ( onde estou agora, em Londrina, o GPS utiliza 8 ).

A segunda opção eu acho bem viável. Londrina não é uma cidade tão grande, e o mapeamento pode ter sido feito “às coxas”.

A questão é a segunte: Será que em minha passagem por Sorocaba e Itú terei o mesmo problema? Mesmo SP sendo o “coração do Brasil” (sem trolls aqui, por favor), ambas também são cidades de interior.

Por isto eu faço um apelo: Se você é morador de Londrina-PR, Itú-SP ou Sorocaba-SP, e possui GPS: Pegue suas coordenadas e coloque-as no GoogleMaps e verifique se a referência no mapa é realmente onde você está. Depois poste aqui os resultados.

Bom, vou aproveitar minha família agora =)

Abraços a todos e bom fim de semana!

[Update] Hoje com mais tempo vim tentar descobrir o problema, e é mais ou menos o que o Rafael falou. A verdade é que o mapeamento por satélite do GoogleMaps é uma beleza, mas o mapeamento de rua não!

Londrina - Erro do GoogleMaps
Descrevendo o problema: A rua marcada em vermelho deveria estar no traçado verde. O Google Satelite posiciona-se corretamente, mas o mapa é posicionado com um erro de cerca de 167 metros.

Bom, talvez o Google não seja tão bom assim =)

[Update2] O Google compra as informações sobre mapas da MapLink. Logo o problema está lá!

Planeta Mandriva!

11-Jan-08

Finalmente, pela iniciativa do Elyezer e o pessoal do #mandriva-br no IRC da Freenode, o Planeta Mandriva está no ar.

O planeta mandriva é um agregador de blogs da mesma classe do Planeta-Ubuntu, ou Planeta-GnuLinux, mas especificamente agregando blogs de usuários do Mandriva Linux.

Vale a pena conferir!

ps.: Lembrando que já existe um planet-mandriva em ingles.