Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Monday, March 2, 2009

Smaps-Plotter no br-linux

Acabei de anunciar no br-linux o Smaps-Plotter, espero que aumente o número de usuários e contribuidores.

Sunday, February 8, 2009

Sincronizando telefone celular com o evolution

Recentemente precisei sincronizar os dados do meu celular com o computador e então fui atrás de como fazer isso. Encontrei vários posts que ensinavam como fazer a sincronização, mas não obtive sucesso, até anteontem.

O seguinte processo foi feito em um computador com Ubuntu Intrepid instalado.

Obtendo informações e instalação de pacotes

1. Pegando o mac address do seu celular.
$ hcitool scan
Scanning ...
XX:XX:XX:XX:XX:XX Nokia
2. Pegando informações sobre os canais do bluetooth.
$ sdptool browse XX:XX:XX:XX:XX
Vai aparecer um bocado de coisa, então você deve fazer um scroll buscando por um bloco semelhante a este.
Service Name: SyncML Client
Service RecHandle: 0x1000e
Service Class ID List:
UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 11
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Note que marquei com negrito as informações relevantes.

3. Instalando os pacotes necessários.
$ sudo aptitude install multisync-tools multisync0.90 opensync-plugin-evolution opensync-plugin-syncml

Configurando e sincronizando

1. Nomeando a sessão e adicionando o plugin pra sincronizar com o evolution. Você pode chamar a sua sessão do que mais lhe for conveniente.
$ msynctool --addgroup evolution-6125
$ msynctool --addmember evolution-6125 evo2-sync
2. Configurando a sessão.
$ msynctool --configure evolution-6125 1
Um editor de texto aparecerá com o conteúdo abaixo. Não é preciso alterar nada, basta salvar.
<config>
<address_path>default</address_path>
<calendar_path>default</calendar_path>
<tasks_path>default</tasks_path>
</config>
3. Adicionando o plugin para sincronizar o telefone via bluetooth
$ msynctool --addmember evolution-6125 syncml-obex-client
4. Configurando o plugin de comunicação com o telefone
$ msynctool --configure evolution-6125 2
Aqui você insere as informações obtidas no item 2 da seção anterior.
<config>
<bluetooth_address>XX:XX:XX:XX:XX:XX</bluetooth_address>
(...)
<bluetooth_channel>11</bluetooth_channel>
(...)
</config>
5. Agora é só sincronizar \o/
$ msynctool --sync evolution-6125

Existe ainda a possibilidade de configurar e sincronizar utilizando a ferramente gráfica, multisync0.90.

Fonte: Ubuntu Forums

Friday, March 30, 2007

PyDistcc status

Aproveitando que estou por aqui ... :-)


Após o início do projeto, consegui evoluir um pouco mais o código. Ele já está anunciando o serviço na rede e o daemon cliente já consegue listar os servidores anunciados ;-) Estou atualmente trabalhando no código para gerar os dados de cpu load, cpu queue lenght, network load e outras. O próximo trabalho é terminar a interface cliente com o usuário e conectá-la ao daemon cliente via dbus.
Caso queria contribuir ou somente olhar, o projeto está hospedado no sourceforge no endereço http://sourceforge.net/projects/pydistcc/.

Wednesday, March 7, 2007

xterm default config

Venho utilizando o gnome-terminal faz alguns anos. Sempre tive vontade de usar o xterm, mas nunca tive paciência de configurá-lo. Hoje, depois de alguns problemas com o gnome-terminal resolvi dar essa chance ao xterm.

Para configurar, edite o arquivo ~/.Xdefaults e deixe-o com o conteúdo semelhante ao abaixo.
XTerm*foreground: white
XTerm*background: black
XTerm*saveLines: 1500
XTerm*faceName: monospace
XTerm*faceSize: 12pt;
XTerm*boldFont: monospace

Pra finalizar rode o comando abaixo para carregar as configurações.
xrdb -nocpp -load .Xdefaults

Agora é só rodar o xterm ;-)

Caso queira deixá-lo como terminal padrão do sistema, rode o comando abaixo
sudo update-alternatives --config x-terminal-emulator

e selecione o xterm.

Friday, February 23, 2007

Ubuntu Feisty + beryl + ati x200

Há alguns meses atrás tentei instalar o compiz e o xgl no meu laptop. Tive muita dor de cabeça e perdi muito tempo, acabou que não funcionou. Hoje gastei quase toda manhã tentado configurar o beryl, o xgl e a minha placa de video, não consegui configurar novamente, mas descobri uma série de fatos:

  1. AIGLX não funciona com drivers proprietários da ati;
  2. Drivers proprietários da ati não suportam o modo composite;
  3. O beryl está com um bug que causa segfault, quando utilizado no ubuntu feisty, que roda xorg 7.1
  4. Os drivers novos da ati fazem a x200 funcionar melhor ;-)

Como ainda não tenho conhecimento suficiente em C para tentar corrigir o bug, vou só ficar monitorando.

Saturday, February 17, 2007

Pyret - Um caçador de regressões

Estes tempos venho trabalhando em um projeto chamado pyret. Por conta disto venho aprendendo muito e tenho ganhado fluência em python e em seus módulos. Hoje terminei a primeira modificação, na parte servidora da aplicação, e enviei para o autor. Espero que ele aceite e me dê acesso ao cvs ;-)

Friday, February 9, 2007

pysvn - subversion python binding

Depois de muito penar para conseguir fazer um checkout em um servidor subversion com autenticação usando pysvn, hoje finalmente consegui. É um bocado difícil de entender como funciona esse negócio, deveria ser um pouco mais intuitivo. Pra facilitar a vida de quem venha utilizar o pysvn e não queira perder muito tempo pra entender tudo, aqui vai um codigo que fiz. Melhorias são bem vindas.

import os
import sys
import pysvn


class DownloadSubversion(object):

def __init__(self, source, dest, username, password):
self.source = source
self.dest = dest
self.username = username
self.password = password

def callback_ssl_server_trust_prompt(self, trust_data):
'''
trust_data: essa e' uma variavel, um dicionario, passado pelo pysvn
contendo informacoes sobre o certificado ssl do servidor.
Por exemplo: data de expiracao do certificado, empresa
certificadora, nome do responsavel, fingerprint e etc.

'''


#for key,value in trust_data.items():
# print '%s: %s' % (key, value)
#print
answer = 't'
#while answer.lower() not in ['p','t','r']:
# sys.stdout.write( '(P)ermanent accept, (T)emporary accept or (R)eject: ' )
# answer = sys.stdin.readline().strip()
if answer.lower() == 'p':
return True, trust_data['failures'], True
if answer.lower() == 't':
return True, trust_data['failures'], False
return False, 0, False


def callback_getLogin(self, realm, username, password, may_save):
'''
realm: essa variavel eh utilizado pelo pysvn pra informar o endereco do
servidor e o nome do servico, deixe ela ai'. Por exemplo:
"Subversion Repository" at http://111.222.333.444

username: usuario do subversion

password: senha do subversion

may_save: salvar ou nao o usuario e senha

'''


if len(username) == 0:
return False, '', '', False

return True, username, password, may_save


def downloadRepos(self):

client = pysvn.Client()
client.exception_style = 1
client.set_default_username(self.username)
client.set_default_password(self.password)
client.callback_get_login = self.callback_getLogin
client.callback_ssl_server_trust_prompt = self.callback_ssl_server_trust_prompt

if os.access(self.dest + '/.svn', os.F_OK):
client.update(self.dest)
else:
client.checkout(self.source, self.dest)


if __name__ == '__main__':


subversion = DownloadSubversion('https://www.com.br/svnroot/', '.', 'usuario', 'senha')
subversion.downloadRepos()

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

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.

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.

Friday, December 29, 2006

smaps-plotter

Recentemente peguei um projeto de um amigo, chamado smaps-plotter. Fiz algumas pequenas modificações e disponibilizei no sourceforge. Estou usando esse projeto para aprender python não como uma linguagem de script, como já conhecia anteriormente, mas como uma linguagem de programação poderosa. Tem muitas features a serem adicionadas, mas devagarinho chego lá ;-)

Você pode ter acesso ao smaps-plotter pelo endereço: http://sourceforge.net/projects/smaps-plotter/

Pra fazer download é necessário o uso do svn(subversion), digitando o comando:

svn co https://svn.sourceforge.net/svnroot/smaps-plotter smaps-plotter

 

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