Arquivo para ubuntu

KDE4 + Kubuntu Remix no blog do leleobhz

Posted in Linux with tags , , , , , , on 11 / junho / 2008 by medeubranco

O Leonardo Amaral ( leleobhz ) descreve no seu blog a sua recente experiência na instalação e configuração do Kubuntu Remix com o KDE4, incluindo screenshots.
Mais detalhes aqui.

Criando uma simples janela em pygtk – Parte II

Posted in gtk, Linux, Programação, pygtk, Python with tags , , , , , , , , , , , on 10 / junho / 2008 by medeubranco

No nosso primeiro artigo sobre este assunto, criamos uma janela sem conteúdo algum. Desta vez vamos adicionar alguma funcionalidade a esta janela. Baixe o código fonte abaixo, salve como gtk_window.py e execute-o:

#!/usr/bin/env python

import pygtk
import gtk

def clicada( botao , label ):
    if label.get_text() == "" :
        label.set_text( "obrigado" )
    else:
        label.set_text( "" )

win=gtk.Window( )
win.set_title( 'Titulo da Janela' )

win.set_size_request(200,50)
win.connect( "destroy" , gtk.main_quit )

box=gtk.VBox( )
win.add( box )

label=gtk.Label( "" )
box.pack_start( label )

botao=gtk.Button( "clique-me" )
box.pack_start( botao )
botao.connect( "clicked" , clicada , label )

win.show_all()
gtk.main()

A primeira diferença deste código para o anterior é que agora usamos uma função:

def clicada( botao , label ):
    if label.get_text() == "" :
        label.set_text( "obrigado" )
    else:
        label.set_text( "" )

Esta função, que denominamos “clicada”, está aí para ser uma função de callback para o botão que será criado mais à frente no código. Ela recebe dois parâmetros: um gtk.button e um gtk.Label.

Uma outra novidade é a gtk.VBox criada na linha 18. A VBox (Caixa Vertical) é um container; serve para “acondicionar” os widgets (botões, caixas de texto, rótulos, etc) na janela. Existem outros tipos de container e você pode aprender mais sobre eles em outro lugar.

Na linha 19 ( win.add( box ) ), a gtk.VBox é adicionada a Janela.

Um novo widget é criado na linha 21 [ label=gtk.Label( "" ) ], uma “etiqueta” com rótulo em branco. Esta “etiqueta” é adicionada à gtk.VBox na linha 22 [ box.pack_start( label ) ].

Nas linha 24 e 25 repetimos o procedimento, desta vez com um gtk.Button, um botão.

Agora atenção, pois na linha 26 é que nós dizemos o que vai acontecer quando o botão for clicado:

botao.connect( "clicked" , clicada , label )

Esta linha conecta o sinal “clicked” à função ‘clicada’ ( linhas 6 a 10 ), passando como parâmetro o objeto label. O próprio botão é passado como parâmetro aqui de forma implícita.

Na linha 28 determinamos a exibição da Janela e todos os seus componentes, e na linha 29 chamamos o loop principal.

Copie o código, salve e execute.

Rootkit ?!

Posted in Linux with tags , , , , , , , on 8 / junho / 2008 by medeubranco

Eu sempre digo que não uso antivírus nem anti-spyware. Por quê? Porque uso Linux. Não precisar de um antivírus comendo recursos da minha máquina é um dos motivos pelos quais eu gosto de usar Linux.

O Linux é praticamente imune a vírus, já ouvi falar que existe vírus para Linux, assim como já ouvi falar que existe um dragão em komodo e mulher barbada. Mas ouvi falar também de uma outra coisa que parece ser mais feia que a mulher barbada: rootkit.

O br-linux divulgou neste domingo ( 08/06/2008 ) um artigo sobre o assunto:

Procurando rootkits no seu sistema

Para quem quer ir direto à fonte:

http://hdoria.archlinux-br.org/blog/2008/06/05/procurando-rootkits-no-seu-sistema/

Criando uma simples janela com pygtk

Posted in gtk, Linux, Programação, pygtk, Python with tags , , , , , , , , , on 7 / junho / 2008 by medeubranco

É duro querer ou precisar fazer alguma coisa e não saber nem como começar; quando a gente não faz nem idéia de como a coisa pode ser feita.

Neste artigo nós vamos fazer uma simples janela vazia com pygtk para ultrapassar essa barreira do “não tenho nem idéia de como é”.

Uma janela em gtk é criada instanciando a classe gtk.Window():
janela=gtk.Window()

A janela tem que ser exibida com o método Show():
janela.Show()

Vamos ver então um código exemplo. Salve o código abaixo com um nome sugestivo, algo como janela_gtk.py, e execute com python janela_gtk.py :

#!/usr/bin/env python

import pygtk
import gtk

win=gtk.Window()
win.set_title('Titulo da Janela')

win.set_size_request(400,400)
win.connect("destroy",gtk.main_quit)

win.show()
gtk.main()

Janela exemplo

As linhas
import pygtk
import gtk

simplesmente importam os módulos para que seu programa python possa utilizar as classes gtk.

Nas linhas
win=gtk.Window()
win.set_title('Titulo da Janela')

uma janela gtk é criada, e um título é atribuído a ela.

Em win.set_size_request(400,400) definimos o tamanho(altura, largura) da janela.

Agora vem uma coisa interessante. Na linha abaixo conectamos um determinado sinal a uma funçao:
win.connect("destroy",gtk.main_quit)
Sinais são coisas que você vai muito usar ao trabalhar com pygtk. Aqui o sinal “destroy” é conectado ao método main_quit do gtk. Grosso modo, significa que, quando você fechar a janela, o método será chamado e o loop (veja abaixo) que mantém o programa em funcionamento será encerrado.

A linha abaixo é um mistério:
win.show()
Dou um pirulito a quem descobrir para que serve.

Finalmente,
gtk.main()
chama o loop principal, que vai fazer o gtk ficar esperando por eventos (os sinais) que fazem a mágica de um programa com interface gráfica.

Ubuntu 8.04 – Compilar módulo vboxdrv após atualização do kernel

Posted in Linux with tags , , , , , , , , on 5 / junho / 2008 by medeubranco

Este artigo deve ter utilidade por um período curto.

Após a última atualização do kernel do Ubuntu 8.04 (estamos em 05/06/2008), muita gente não está conseguindo rodar o virtualbox. Tem dado a mensagem abaixo:

VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Please install the
virtualbox-ose-modules package for your kernel, e.g. virtualbox-ose-modules-generic..

Isso acontece somente porque o pacote virtualbox-ose-modules nao foi atulaizado.

A forma de corrigir isso é compilando o módulo para o kernel atual, até que seja disponibilizada a versão binária nos repositórios do Ubuntu.

Primeiro instale os pacotes necessários para a operação:
sudo apt-get install virtualbox-ose-source build-essential

Em seguida, compile o módulo com
sudo m-a a-i virtualbox-ose-source

Uma vez compilado, levante o módulo:
sudo modprobe vboxdrv

Tente executar o virtualbox. Talvez voce tenha que adicionar seu usuário ao grupo vboxusers; Se houver essa necessidade, adicione e em seguida reinicie sua sessão do gnome.

Pronto. Acredito que já terá funcionado;

Gravando e Lendo dados no Mysql com Python

Posted in Linux, Programação with tags , , , , , , , on 4 / junho / 2008 by medeubranco

Dando continuidade ao que comecei em Dos Sistemas em Access para o Linux e Python, MySQL e adeus, Access, vou mostrar para o Cléberson como ele pode conectar ao MySQL seu programa em Python.

Estou acreditando que o Cléberson já conseguiu instalar o MySQL, o Python e o python-mysqldb e já consegue executar alguma coisa em python.

python-mysqldb é um módulo para o python. Deve ser importado no seu programa com a linha abaixo:

import MySQLdb

Com o modulo importado, podemos então criar uma conexão:

conexao = MySQLdb.connect('endereço do servidor' , 'usuario do mysql' , 'senha')

É bom definir o banco de dados dentro do MySQL que você vai usar:

conexao.select_db('meubanco')

Simples assim. Três linhas e o Cléberson já tem uma conexão com o MySQL em Python. Na realidade a conexão mesmo depende só das duas primeiras linhas.

Pausa. Me adiantei demais.

Vamos criar um banco de verdade agora para podermos usá-lo com o Python.

Como o Cléberson já fez a lição de casa e já sabe usar algum cliente do MySQL, ele só precisa dar 2 comandinhos no cliente MySQL que ele prefere:

create database teste;

create table teste.pessoas (nome varchar(60), idade int);

Pronto. Está criado o banco teste, que contém a tabela pessoas. A tabela pessoas tem dois campos: nome e idade. O campo nome aceita strings (texto) com até 60 caracteres. O campo idade aceita números inteiros.

Ao Python, finalmente. Faremos dois programas: uma para gravar dados na tabela pessoas, outro para exibir estes dados no terminal. Cléberson, eu peço que tenhas paciência. Nosso programa não vai ter janelas ainda. Vai rodar no terminal.

Código do primeiro programa:

# importar o modulo para 'falar' com o MySQL
import MySQLdb

def gravarPessoa(cursor,nome, idade):
    sql="insert into pessoas values( '" + nome + "'," + idade + " ) "
    try:
        cursor.execute(sql)
    except MySQLdb.Warning, w:
        print w
    except MySQLdb.Error, e:
        print "Erro executando \n " + sql
        print e

# criando uma conexao mysql
# com o servidor na mesma maquina( localhost )
# usuario root do mysql
# e senha em branco
conexao=MySQLdb.connect( 'localhost' , 'root' , '' )

# selecionando o banco 'teste'
conexao.select_db( 'teste' )

#criando um 'cursor'
cursor=conexao.cursor()

sair=None
while sair<> 'S' :
    nome=raw_input( 'Digite o nome: ' )
    idade = raw_input('Digite a idade: ' )
    gravarPessoa( cursor , nome , idade )
    sair = raw_input( ' Digite S para sair ou tecle enter para continuar ' )

Agora salvaremos este arquivo como gravadados.py e no terminal exacutamos com python gravadados.py

O próximo artigo vai só mostrar como exibir os dados do MySQL.

Até lá.

Python, MySQL e adeus, Access

Posted in Linux, Programação with tags , , , , , , , , on 3 / junho / 2008 by medeubranco

Este post é continuação desse outro.

É, o Cléberson ficou mesmo interessado nas ferramentas que o Linux oferece.

Pois bem, Cléberson, primeiro vamos falar para que serve cada uma delas.

Os sistemas que o Cléberson desenvolveu e que tanta glória lhe trouxeram são basicamente compostos de um ou mais formulários de entrada de dados, outros de consulta e visualização desses dados e o banco de dados propriamente dito.

O Cléberson estava acostumado a desenvolver e gerenciar tudo isso de dentro de uma mesma ferramenta, o MS-Acces.

Agora, Cléberson, é hora de dividir. Cada coisa no seu devido lugar, cada ferramenta para o sua devida finalidade. No final a gente integra tudo.

Então teremos:

  • Um sistema de bancos de dados
  • Uma linguagem de programação que possa se comunicar com o banco de dados
  • Uma maneira de fazer “Janelas” com essa linguagem de programação
  • Uma maneira mais fácil de fazer Janelas

Lá vai:

1 – Banco de Dados MySQL

Para armazenamento de dados, as tabelas e consultas, vamos usar o MySQL. O MySQL é um SGDB, Sistema de Gerenciamento de Banco de Dados, que é livre e gratuito. Grandes instituições usam o MySQL e estão satisfeitas, mas o Cléberson também pode usar o MySQL nos seu sistemas, e também ficar satisfeito. Sabia, Cléberson, que o MySQL roda também no Windows?

Não se esqueça, Cléberson, de instalar o MySQL-Query-Browser junto com o servidor MySQL. Vai ficar muito fácil criar tabelas e fazer suas consultas com o Query-Browser.

Ah, Cléberson, me esqueci de avisar que você vai precisar aprender uma linguagem nova, a SQL. SQL é uma linguagem padronizada para consulta e manipulação de dados. SQL não é difícil, Cléberson, vale a pena conhecer. O Próprio Access a utiliza quando você cria uma consulta. Dá uma olhadinha no “modo SQL” das suas consultas no Access. Viu? Aquilo é SQL, mas SQL não precisa ser confusa daquele jeito. É que o Access nao gosta que você saia do modo estrutura, então ele gera um SQL bem confuso pra você se assustar.

2 – Linguagem de Programação Python

Eu sei, Cléberson, que você quer criar logo os formulários de entrada de dados. Mas a gente não está mais dentro do Access. Seus formulários precisam fazer alguma coisa, reagir aos cliques do usuário, gravar alguma coisa no banco de dados e exibir esses dados para o usuário.

Para isso, vamos ter que aprender a programar. Não, Cléberson, isso não é ruim. Essa é a parte mais divertida, e o Access sempre tentou esconder isso de você.

Python é uma linguagem de programação interpretada orientada a objetos.
É de fácil aprendizado e muito versátil. Python também existe para Windows.

Onde o cléberson pode aprender Python:

3 – PyGTK, Python e Janelas GTK

PyGTK é um módulo para python que permite criar interfaces gráficas bonitas e funcionais. A biblioteca base é a GTK, a mesma dos programas do Gnome (aquelas janelas bonitas do Ubuntu).

Um próximo artigo aqui vai dar um exemplo legal de como criar uma janela em PyGTK.

Até lá, google nele.

4 – Desenhando janelas facilmente com Glade

O Glade é uma ferramenta para criação de janelas GTK do modo mais fácil: com o mouse.

Nem vou falar muito aqui sobre o Glade, porque um cara legal resolveu fazer um vídeo super maneiro sobre essa ferramenta. Veja o vídeo e entenda o que é o glade em http://blog.ogmaciel.com/?p=415

Creio que o Cléberson, agora, já tem uma idéia de como se podem fazer programas legais no linux.

Nos próximos artigos nós vamos fazer alguns exercícios juntos. Até lá.