Archive

Posts Tagged ‘Python’

Calculadora em 5 min. em PyGTK

December 10th, 2008

Todos que sabem programar um pouco em python, já deve ter visto que podemos utilizar o terminal interativo para resolver expressões matemáticas. Mesmo assim resolvi fazer uma brincadeira: Criar uma calculadora gráfica em menos de 5 minutos. Na verdade eu queria saber também como funcionava um programa de gravação screencast (usei o gtk-recordMyDesktop) e também já fazia um tempo que não colocava nada no blog :)

A imagem não ficou muito boa, mas já serviu para validar os 5 minutos! hehe

Código Fonte da aplicação

PyGTK, Python , , ,

Desenvolvimento em camadas usando PyGTK

October 28th, 2008

Esse post refere-se a um programa simples que eu e o Muriel de Souza Godoi desenvolvemos para ministrar um mini-curso “Desenvolvimento em Software Livre” no IV Jornada Linux aqui em Maringá.
O programa é um cadastro de eventos simples, mas que buscou trabalhar conceitos interessantes, tais como:

  • Controle de versão - Subversion;
  • Desenvolvimento dividido em camadas de modelo, controle e visão;
  • Prototipação de Interface;
  • DAO (Data Access Object) - Padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados; etc.

Vale dizer que a aplicação não foi baseada no MVC puro, mas sim algo próximo, que permitiu perceber o acesso aos dados, a lógica de negócios e a apresentação. Na figura ao lado podemos perceber um diagrama simples que exemplifica como a aplicação foi dividida.

O uso do Glade para desenvolvimento da interface, interfere um pouco na idéia de se criar um MVC puro, pois seu uso correto não só desenha a interface, como também cria as chamadas para funções que seria tarefa do Controle.

A seguir parte do código em que essa “amarração” foi feita:

from app.compromissodao import CompromissoDao
from app.controle import Controle
from app.interface import Widgets
 
modelo = CompromissoDao()
controle = Controle()
interface = Widgets()
 
controle.set_modelo(modelo)
controle.set_interface(interface)
interface.set_controle(controle)

O aplicativo foi distribuido sob GPLv.2 com o motivo de estudo e o download do pacote pode ser feito clicando aqui

PyGTK, Python, Software Livre , , , ,

O “eu mesmo” em python: self

June 19th, 2008

As pessoas que não são tão acostumadas com a programação orientada a objetos em python, as vezes me perguntam: Por que utilizar aquele “self” antes de qualquer parâmetro em um método? Pois bem! Vou tentar responder esta pergunta tão comum e com alguns exemplos notáveis.

Primeiramente vamos definir uma classe chamada “Pessoa” e atribuir um método a ela para dar o nome a uma pessoa:

class Pessoa(object):
    def set_nome(self, nome):
        if nome.istitle():
            self.nome = nome
        else:
            print "Nome escrito incorretamente :)"

Muito bem! Eu defini uma restrição dentro no “if” para testarmos se o nome passado como parâmetro têm a primeira letra maiúcula. Para esta classe, nós instanciamos um objeto que é usado posteriormente para acessar o método dentro da classe, assim, utilizamos o objeto seguido do nome do método dessa forma:

ciclano = Pessoa()
Person.set_nome(ciclano, "Rodrigo")
#Vai imprimir 'Rodrigo'
print ciclano.nome

Até aí tude bem! Mas e o self? O self é o nome do objeto a ser invocado pelo método, em outras palavras, quando fazemos ciclano.set_nome(”Rodrigo”), estamos dizendo que o método set_nome chamado pertence a classe instanciada para o objeto ciclano.

Outra forma de utilizar esta mesma classe é a seguinte:

ciclano = Pessoa()
ciclano.set_nome("Rodrigo")
#Vai imprimir 'Rodrigo'
print ciclano.nome

Perceberam a diferença? Agora eu tive que passar o objeto na qual o método set_nome pertence como primeiro parâmetro do próprio método!

Não é necessário que o primeiro parâmetro seja exatamente “self”, nos podemos dar qualquer nome a ele, mas como é interessante que tudo seja padronizado e que o nome self está nas normas de padronização PEP-8, então não iremos discutir.

Algumas linguagens utilizam o self implicitamente, mas por que em python ele é definido explicitamente? Eu achei algumas definições:

  • O self explícito faz parte do “espírito da linguagem”, como diz o Zen of Python: Explícito é melhor do que implícito;
  • A declaração explícita já virou costume entre os programadores em python;
  • Maior flexibilidade na chamada de métodos.

Se alguêm tiver mais um por favor comente :)

Existem outras razões relacionadas a herança simples e múltipla na linguagem que poderei falar na próxima. Até logo!

Python , ,

Flisol 2008: Programação em Python

April 27th, 2008

Em primeiro lugar, quero dizer que o evento FLISOL aqui em Maringá está de parabéns! A galera apareceu em peso, vimos pessoas até de cidades mais próximas da região, muito legal mesmo!

Bom, Uma das palestras realizadas foi “Programação em Python”, em que eu fui o palestrante. Nesta palestra, além de uma pequena introdução, dizendo empresas grandes que trabalham com a linguagem, características introdutórias, etc, eu mostrei aspectos interessantes como:

  • List Comprehensions;
  • O método map();
  • Função de uma linha (lambda);
  • Geradores e Iteradores; e
  • Herança Múltipla

A palestra eu deixei disponível para fazer o download em .pdf [aqui]

Teve outras palestras interessantes como “Conhecendo e Viajando na filosofia do Software Livre” e “Nas Asas do Ubuntu 8.04″ ministradas por André Noel, “Slackware Linux” que foi uma palestra praticamente improvisada por Maycon Sambinelli que deu conta do recado falando da sua “religião” que é o Slackware.

Destaque também para a palestra de Eduardo Pezutti falando do CMS Drupal e Lucas Mazzardo Veloso com sua palestra “Administração de Ambientes Heterogêneos com Software Livre” mostrando algumas ferramentas livres para manutenção e administração de redes e computadores.

Rodrigo Hübner

Bom, obrigado a quem compareceu e espero que tenham gostado!

Eventos, Python ,