julho 29th, 2010 | Tags: , ,

Processor       : ARM920Tid(wb) rev 0 (v4l)
BogoMIPS        : 202.34
Features        : swp half thumb
CPU implementer : 0×41
CPU architecture: 4T
CPU variant     : 0×1
CPU part        : 0×920
CPU revision    : 0
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format A
Cache format    : Harvard
I size          : 16384
I assoc         : 64
I line length   : 32
I sets          : 8
D size          : 16384
D assoc         : 64
D line length   : 32
D sets          : 8

Hardware        : QQ2440
Revision        : 0000
Serial          : 0000000000000000

julho 27th, 2010 | Tags: , , ,

Ah… abstração de camada! Eis a grande vantagem de arquitetura em camadas! Pois é, com o django não poderia ser diferente.

Imagine você, desenvolvedor, que precisa trazer para perto de você o banco daquele site que você está desenvolvendo… Mas não sabe nada a respeito de banco de dados, como fazer um dump, clone, outra visão, backup. Ou você quer algo rápido python-like.

O Django tem duas ferramentas campeãs, o dumpdata e o loaddata.

O dumpdata extrai o banco e o loaddata carrega.

Essas ferramentas podem, e devem, por simplicidade, usadas com o manage.py de seu site. Se você não quiser, você deve usar o django-admin.py. Configurando propriamente a variavel de ambiente DJANGO_SETTINGS_MODULE ou o argumento --settings com  o caminho para o seu settings.py.

Mas vamos considerar que você está no diretório do seu projeto e você escolheu usar o manage.py. Ah sempre considero que você está no linux.

dumpdata

Para usar o dumpdata é simples:

python manage.py dumpdata > arquivo.dump

simples não?! Do jeito que está, o comando salva todo o banco num arquivo.dump . Sem fazer quaisquer destinções.

Mas quer fazer o  dump de somente uma aplicação, não tem problema:

python manage.py dumpdata aplicacao > aplicacao.dump

Mas eu quero mais de uma aplicação, mas não todas. Não tem problema:

python manage.py dumpdata aplicacao1 aplicacao2 > aplicacoes.dump

Ah, mas eu só quero de uma classe que eu podei no arquivo modules.py ( Você sabe que as classes definidas nesse arquivo são persistidas ).  Porque não disse antes?

python manage.py dumpdata aplicacao.Modulo> aplicacoes_modulo.dump

Acho que não tem mais situações… agora é hora de carregar!

loaddata

A essa é facinho! Basta você fazer:

python manage.py loaddata arquivo_que_vc_gerou

Pronto! Fácil?!

Você pode ver algumas opções nos links que eu indiquei (olhe no início do post).  Eu enfrentei dificuldades com o tabelas que tinham muitas entradas (+55 mil).  Então acredito que a ferramenta tenha essa limitação com bancos grandes.  Funcionou com Mysql, sqlite3 e o Microsoft SqlServer.

julho 22nd, 2010 | Tags: , ,

Um recurso interessante que muitas IDEs provem é o autocomplemento de código.

Do qual você digita uma letra ou parte de um nome de depois de dá um comando de ação e a IDE fornece uma lista de métodos e classes que completam esse nome.

Acredite, é algo bastante ágil.

Como trabalho muito com Python procurei na internet como ativar esse recurso no Vim. Meu editor favorito.

Sem mais delongas, como ativar o recurso:

Baixe o plugin da internet nesse endereço: http://www.vim.org/scripts/download_script.php?src_id=11062

Descompacte o arquivo.

unzip pydiction-1.2.zip

Crie os diretórios :

mkdir -p ~/.vim/after/pydiction
mkdir -p  ~/.vim/after/ftplugin

Copie os arquivos,  lembrando que você já está dentro do diretório que você acabou de descompactar:

mv python_pydiction.vim  ~/.vim/after/ftplugin/
mv complete-dict  pydiction.py  README.txt  ~/.vim/after/pydiction/

Agora, edite o arquivo ~/.vimrc, preencha-o com:

"Config pydiction
filetype plugin on
let  g:pydiction_location = '~/.vim/after/pydiction/complete-dict'
let  g:pydiction_menu_height = 10

Para testar, edite um arquivo python: vim teste.py, suponha que você queira importar o gtk. Então, digite “import gt” e aperte <tab> para ver o sistema autocompletando. Como a figura abaixo:

julho 22nd, 2010 | Tags:
Os slides de uma apresentação que eu fiz sobre PIC 18 F
julho 21st, 2010 | Tags:

Consegui resolver o problema do som do microfone no Ubuntu 10.04.
De maneira alto nível você identifica o problema observando a aba de entrada do controle de volume.
Veja se sua aba está como abaixo:

Em geral a tela deveria vir acompanhada de um campo “Conector” do qual você pode controlar o volume ou qual o conector você quer usar de modo individual.

Pois bem, a tela deveria está assim:

Observe que agora você pode escolher o conector. Não importa se você está num notebook, que geralmente só tem uma entrada de microfone (há notebooks que vem com microfone embutido)  tem que aparecer o campo de seleção de conector. Selecione o conector do qual seu microfone está conectado e ajuste o volume para usar.

Mas, como eu realizo a mágica de aparecer o campo?

O problema está no driver alsa que em determinadas placas de som não funciona.

Primeiro identifique a versão do alsa.

cat /proc/asound/version

Se a versão menor que 1.0.23 você é candidato a usar a solução a seguir.
Faça:

sudo aptitude install linux-backports-modules-alsa-lucid-generic

Após instalado é necessário reiniciar o computador. Epa, reiniciar um linux? É… essa instalação gera um novo initrd e para funcionar (por enquanto) é necessário reiniciar o ubuntu.

Reiniciado, espero que a sua aba do controle de volume esteja semelhante a aba que apresentei como correta. Assim, você pode usar o microfone para conversar no empathy, ekiga ou no skype.

obs.: A minha placa é 00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)

logo os resultados podem variar. Estou disposto a ajudar.

julho 8th, 2010 | Tags: ,

Li num livro de linux embarcados numa mesma sessão:

[...] é um processo delicado e complexo, que exige conhecimentos misteriosos sobre [...]

e ainda continua mais adiante:
segundo Dan Kegel sobre construir uma toolchain interplataforma:

“Construir uma [...] toolchain [...] é apavorante, exige força de vontade, dias – ou semanas – de esforço [...] e, às vezes, disposição para pegar atalhos perigosos”

Ou falaram isso para garantirem no emprego e se gabarem, ou estão dando o aviso final que seguir a diante o transformará numa criatura estranha!

hauhauhauha

Eu estou seguindo em frente!

junho 8th, 2010 | Tags: ,

Eu estou precisando usar o sistema de arquivos do sistema operacional (linux) do qual uma aplicação Django vai esta.
Atualmente a arquitetura do Django é aproximadamente assim:

Arquitetura Django atual

Para realizar o que eu quero vou precisar muda-la para:

Nova arquitetura do django interagindo com o sistema de arquivos

Não sei ao certo se é a melhor solução. Mas é a que eu vislumbro para resolver o meu problema, já que os modelos atuais estão relacionados com  o banco de dados.

E como é uma aplicação muito específica acho que não teremos problemas de compatibilidade. Vamos ver o que dá.

Contarei em breve o resultado.

abril 29th, 2010 | Tags: , , ,

O erro descrito no título é causado quando você tenta iniciar uma máquina virtual do VirtualBox numa máquina que tem o kvm sendo executado, ou seja, quando você tem instalado também o qemu-kvm.

A figura a baixo ilustra o erro.

Screenshot do erro encontrado

Observe que a própria tela de erro já indica uma possível solução para o plobema. Desbilitando o KVM. O kvm é um modulo. Dê um lsmod | grep que você encontrará:

lsmod | grep kvm
kvm_intel              51528  0
kvm                   190648  1 kvm_intel

Observe que o lsmod indica que o módulo kvm tem outro modulo associado, o kvm_intel.

Assim para remover o kvm é necessário remover o kvm_intel.

Use o comando modprobe para remover os modulos:

modprobe -r kvm_intel
modprobe -r kvm

Agora tente inicia sua máquina virtual.

obs: O erro independe da máquina virtual. É um erro do computador do qual o virtualbox está instalado.

abril 28th, 2010 | Tags:

Se você usa scripts para link edição e simplesmente não fez quaisquer alteração nele provavelmente obteve um erro analago:

ld: i386 architecture of input file `loader.o' is incompatible with i386:x86-64 output

Isso é por que o ld está tentando linkar em modo 64 bits objectos 32 bits. Não tem milagre que de jeito. O caminho é reconfigurar o script.
Em geral basta acrescentar as linhas no inicio do arquivo:

  • OUTPUT_FORMAT(“elf32-i386″);
  • OUTPUT_ARCH(i386);

Se vc não usa um script para fazer as ligações  pode obter o mesmo efeito usando o comando:

ld --oformat=elf32-i386 RESTANTE_DAS_FLAGS
abril 28th, 2010 | Tags:

Apenas um teste abestalhado do http://bit.ly