Saturday, January 20, 2007

Python Distcc

Ontem a noite terminei de escrever a primeira parte do python-distcc, uma alternativa ao dmucs. Coincidentemente, hoje a tarde encontrei um velho amigo, Leonardo Marques, no gtalk e descobri que ele estava trabalhando em um projeto semelhante, o axdistcc, batemos um papo e decidimos unir as forças. Mais informações podem ser encontradas no wiki[2].

Wednesday, January 10, 2007

Python ConfigObj

Recentemente me daparei com o problema de reescrever o parser de arquivos de configuração de um software. Procurando na internet por um módulo que fizesse esse trabalho me deparei com o ConfigObj, que é perfeito para esta tarefa. Com apenas poucas linhas de código consegui lêr e verificar cada detalhe do arquivo de configuração. Das várias vantagens do ConfigObj, três são as mais marcantes:
  1. ótima documentação;
  2. poucas linhas de código fazem tudo;
  3. e flexibilidade de criar novas verificações.

Monday, January 8, 2007

Ubuntu from scratch - instalando ubuntu com o cd danificado

Depois de enfrentar várias vezes problemas na instalação do ubuntu, por conta de erros no cd, resolvi buscar por uma maneira de instalar utilizando o cd danificado.
Utilizando o cd do ubuntu edgy, por exemplo, siga os passos que descrevo nesta postagem:


  1. Dê boot pelo cd e avance até chegar no particionamento hd(não entre no particionador);
  2. aperte alt+F2;
  3. particione o disco com o fdisk ou cfdisk
  4. reinicie o computardor
  5. execute os passos 1 e 2
  6. mkdir /target
  7. debootstrap edgy /target file:/cdrom/ubuntu/
  8. mount -o bind -t proc /proc /target/proc
  9. chroot /target /bin/bash
  10. apt-get update
  11. aptitude install grub
  12. aptitude install linux-generic ou linux-image-generic
  13. aptitude install ubuntu-standard
  14. cp /proc/mounts /etc/mtab
  15. mkdir /boot/grub
  16. update-grub
  17. grub-install --no-floppy /dev/hda
  18. edite seu /etc/fstab
  19. reinicie seu computador
  20. logue como root sem senha
  21. passwd root
  22. vol_id -u /dev/hda1
  23. troque as entradas do /dev/hdaX pelo UUID obtido pelo comando acima
  24. edite o /etc/network/interfaces e adicione
    1. auto lo
    2. iface lo inet loopback
  25. aptitude install ubuntu-desktop

Pronto! Está instalado o ubuntu. Pode ser utilizado um livecd também, tento somente que ter uma conexão com a internet, um apt-cacher local ou os arquivos .deb necessários e fazendo pequenas alterações nos passos acima.

* Esta postagem ainda está em edição. Espero comentários para melhorá-la.

Meu hackergotchi

Durante muito tempo deixei o espaço dedicado ao hackergotchi ou avatar vago, talvez pela falta de uma foto diferente ou preguiça mesmo. Finalmente ontem, 07/01/07, tirei uma foto e percebi que ela tinha o potencial pra se tornar meu hackergotchi. Busquei por boas documentações, abri a foto no gimp e segui os howtos. Um pequeno descuido acabou gerando a idéia dos efeitos que mais gostei. O resultado está na minha página do launchpad.

Python sidebar, documentação a um clique.

Quando se está programando, geralmente é necessário procurar por informações sobre módulos ou uso da linguagem. Pensando neste problema a edgewall, mesma desenvolvedora do gerenciador de projetos trac, criou o python sidebar. O intuito é de agilizar o acesso às informações e de maneira mais conveniente, podendo ainda realizar buscas nas documentações e listas de discussão.

Para instalar, use o site oficial.

Sunday, January 7, 2007

Python smaps e gtop

Como alternativa de acesso direto aos arquivos do smaps(/proc/\/smaps), existe um módulo que acompanha o python-gobject, chamado de gtop, cuja função é oferecer ferramentas para manipulação de dados do proc.

Segue abaixo um código feito por Ian Lawrence:


import os
import gtop

def print_maps(v, c, d, name):
if c + d > 0:
print "%d\t%d\t%d\t%s" % (v / 1024, c / 1024, d / 1024, name)

for pid in gtop.proclist(gtop.PROCLIST_KERN_PROC_UID, os.getuid()):
l=gtop.proc_map(pid)

print "SHARED"
print "vmsize\tclean\tdirty\tname"

for x in sorted(l, key=lambda x: x.shared_clean + x.shared_dirty, reverse=True):
print_maps (x.size, x.shared_clean, x.shared_dirty, x.filename)

print ""
print ""

print "PRIVATE"
print "vmsize\tclean\tdirty\tname"

for x in sorted(l, key=lambda x: x.private_clean + x.private_dirty, reverse=True):
print_maps (x.size, x.private_clean, x.private_dirty, x.filename)


O próximo passo é mudar a maneira como atualmente smaps-plotter trata o /proc//smaps para o método utilizando o gtop.
 

Rodrigo Belem's journal. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc