Porquê Java ainda é útil!

</joke>

Konsole resize fix

Quem usa placa nvidia e KDE4 deve estar tendo problemas para redimencionar a janela do konsole.

Navegando pelo techbase encontrei uma solução:

nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

Fica aí a dica!

[]’s

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

WTF???

Agora pouco digitei um endereço errado e tive acesso à uma infeliz página:

WTF???

Outro teste:

OK, já passou da hora usar OpenDNS!

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

PiTracker - tracker de imagem em QT4.

Seguindo a linha do “Liberando trabalhos da UFPR“, estou liberando o código do PiTracker.

Projeto da matéria de Processamento de Imagens, o objetivo era fazer um tracker de pessoas em um determinado vídeo.

Na especificação havia:

  • O vídeo será uma sequência de imagens PPM nomeada da forma <nome>_<seq>.ppm. Ou seja, se a sequência se chamar tracker, o primeiro arquivo será o tracker_00.ppm.
  • O vídeo será testado em dois casos: No primeiro haverá uma pessoa, no segundo duas.
  • As pessoas devem ser marcadas com cores diferentes, e a mesma cor para cada uma das pessoas.
  • Em nenhum momento as pessoas se cruzam.

Assim fica fácil! =)

Segue algumas screen shots:

Primeira pessoa aparecendo na imagem

Segunda pessoa aparecendo na imagem

Duas pessoas marcadas lado-a-lado

Como de costume, o código está no SVN em:

http://danilocesar.com/svn/pitracker/

E as imagens podem ser encontradas no site da matéria.

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!

Go Speed, Go away from here!

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

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 = {0×10005B91};

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

Bug closed…

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

O que não se faz por uns trocados?