Rapidinha: calendário de forma simples com Python

postado por Orlando Xavier, domingo, 18/03/2012

Hoje ganhei meu dia ao saber que o Python me retorna o calendário de qualquer mês, de qualquer ano, da forma mais simples possível, como jamais imaginei que qualquer linguagem pudesse fazer um dia. :)

Vamos ao script:

import calendar

ano = 2012

for month in range(1, 13):
    month = calendar.month(2012, month)
    print month

E a saída é:

Calendário

Calendário

Logicamente, foi impresso o calendário de cada mês, de Janeiro à Dezembro, mas por razões óbvias (bom senso), mostrei apenas de Outubro à Dezembro.

Essa foi “difícil” de doer, né?
Até a próxima. :)

[Python] Contando letras de uma string

postado por Orlando Xavier, domingo, 18/03/2012

Fala, povo.

Quem me conhece, sabe que não passo de um aprendiz de Pythonista. Por não dominar a linguagem, continuo estudando-a de forma constante. Dando uma olhada no módulo string, ví coisas bastante interessantes, e acabei programando um contador de caracteres, para demonstrar para vocês (e para mim mesmo :P) o quão elegante, fácil e dinâmica é Python.

# -*- coding: utf-8 -*-

import string

def remove_special_chars(text):
    text = text.lower()
    text = text.replace(" ", "")
    text = text.replace("\n", "")
    for sc in string.punctuation:
        text = text.replace(sc, "")
    return text

def count_chars(text):
    text = remove_special_chars(text)
    v_list = ('a','e','i','o','u')
    v_counter = 0
    c_counter = 0

    for c in text:
        if c in v_list:
            v_counter += 1
        else:
            c_counter += 1

    result_dict = {"v": v_counter, "c": c_counter, "t": v_counter + c_counter}

    return result_dict

text = raw_input("Entre com um texto: ")
result_dict = count_chars(text)
print "[Vogais]: %d [Consoantes]: %d [Total]: %d" % (result_dict["v"], result_dict["c"], result_dict["t"])

Se não servir para nada (e pensando em algumas possibilidades, vejo que serve), pelo menos servirá para quem, assim como eu, está empolgado na aprendizagem de Pitôn. :P

[]s

Pós-instalação do Ubuntu

postado por Orlando Xavier, sexta-feira, 16/03/2012

Hoje venho tratar de um assunto meio que pessoal, mas ao mesmo tempo muito genérico.
Várias pessoas têm verdadeiro pavor ao se dar conta que terá que configurar um ambiente após a instalação de um determinado SO. Pavor, este, ocasionado por falta de conhecimento técnico ou disposição.

Ubuntu

Vou descrever o passo-a-passo do que faço de mais importante e urgente após instalar uma nova versão do Ubuntu, atualmente minha distribuição padrão, já que sempre opto por fazer uma instalação limpa. Lembrando que este post é mais direcionado para programadores e curiosos, uma vez que as ferramentas aqui citadas, são voltadas, em geral, para os mesmos. Mas algumas são bastante habituais na vida de um usuário final.

Dividi as etapas em categorias: Internet / Multimídia / Desenvolvimento / Administração / Personalização

Antes de mais nada, é interessante atualizar os repositórios do sistema:

$ sudo apt-get update

Mas vamos ao que interessa.

Internet
Utilizo várias aplicativos direcionados para web, chat, torrent e FTP.

$ sudo apt-get install chromium-browser xchat emesene deluge filezilla

Chromium: software que serve de base para o Google Chrome.
XChat: cliente de IRC.
Emesene: cliente de messenger (MSN, GTalk, Facebook)
Deluge: o melhor cliente de torrent, em minha humilde opinião, claro. :)
Filezilla: cliente de FTP.

Multimídia
Softwares para audio, vídeo, criação e edição imagens, webcam e gravação de CD/DVD

$sudo apt-get install vlc clementine minitube cheese k3b shutter gimp inkscape

VLC: o melhor player de vídeo do mercado. Vários codecs de código aberto também serão instalados.
Clementine: utilizo como meu player de áudio padrão.
Minitube: esse poderia se encaixar na categoria Internet, pois faz buscas no Youtube. Preferi o deixar na categoria Multimídia, porque é relacionado a exibição de vídeos.
Cheese: acredito que seja o melhor gerenciador de webcam de código aberto. Tira fotos e grava vídeos.
K3B: o Ubuntu traz o Brasero instalado por padrão. Mas o Brasero é bastante problemático e já me fez muita raiva, portanto, apesar de necessitar de libs baseadas em Qt, prefiro o K3b, por nunca ter me deixado na mão.
Shutter: um aplicativo para gerar screenshots, seja de tela inteira, seja de janelas individuais.
GIMP: o melhor editor de imagens de código aberto.
Inkscape: criação e edição de imagens vetoriais.

Desenvolvimento
A minha preferida. :)

$ sudo apt-get install lamp-server^ netbeans eclipse geany gvim mysql-administrator mysql-query-browser umbrello

Lamp: [L]inux [A]pache [M]ySQL [P]HP e/ou [P]ython e/ou [P]erl. Como programador PHP, instalar o LAMP é quase uma obrigação. Hoje existem excelentes alternativas ao Apache, como o NginX, por exemplo, mas por saber configurar o Apache sem maiores problemas, opto por utilizá-lo.
Netbeans: a melhor IDE para desenvolvimento em PHP. Também ajuda na edição de HTML e CSS de forma espantosa.
Eclipse: vez ou outra preciso codificar algo em Java, apesar de o Netbeans também fazer isso muito bem, ainda prefiro o eclipse.
Geany: uma “mini IDE” que suporta mais de 30 linguagens. Bom para fazer edições rápidas.
GVim: um cliente gráfico para o editor Vim. Utilizo há pouco tempo, mas não passa pela minha cabeça programar em Python em outro editor. Bem configurado, com os plugins adequados e depois de aprender seus atalhos, a produtividade aumenta consideravelmente.
MySQL-Administrator: uma alternativa para o conhecido PHPMyAdmin.
MySQL-Query-Browser: facilita a execução de queries.
Umbrello: ferramenta de modelagem UML.

Administração

$ sudo apt-get install nmap wireshark yakuake virtualbox-ose

Nmap: um port scan. Bacana para quem quer saber serviços que estejam em execução através de um IP.
Wireshark: um sniffer. Ajuda – e muito – na análise de tráfego de redes domésticas e corporativas.
Yakuake: um emulador de terminal do KDE, que fica suspenso, trazendo mais conforto na hora de fazer uso do shell. Assim como o K3b, necessita de algumas bibliotecas Qt.
VirtualBox: um virtualizador de máquinas. É essencial para quem necessita utilizar outras plataformas de forma fácil e rápida.

Personaliação

$ sudo apt-get install ubuntu-tweak compizconfig-settings-manager

Ubuntu Tweak: com a chegada do Unity, mudando completamente a forma de operar o desktop, nada mais útil que um aplicativo para tornar seu ambiente mais personalizável.
CompizConfig Settings Manager: uma ferramenta para configurar o Compiz de forma fácil e simples.

Acho que é isso. Não citei alguns softwares que utilizo com frequência como o MySQL Workbench e o Skype, pelo fato de não estarem disponíveis nos repositórios oficiais do Ubuntu.

Boas instalações. ;)

Brincando com Pyprocessing

postado por Orlando Xavier, quarta-feira, 14/03/2012

Olá, mamíferos.

Já ouviu falar do Pyprocessing? Não? É… até 3 dias atrás, eu também não. :)
É um módulo Python, escrito para ajudar na criação de aplicações gráficas, que visa facilitar ao máximo o desenvolvimento das mesmas.

Vou postar um código de exemplo, para servir de referência na criação de objetos gráficos, como linhas, retângulos e elípses. Para não ficar muito entediante, criei a figura de um robô. O desenho foi criado apenas chamando as funções necessárias para desenhar os objetos na tela, passando as coordenadas como parâmetro.

Vamos lá? Mão na massa…

Antes de mais nada, é preciso instalar o módulo.
Para isso, visite este link e baixe o pacote gzip.

$ tar -zxvf pyprocessing-0.1.3.12.tar.gz && cd pyprocessing

Depois basta entrar com o seguinte comando:

$ sudo python setup.py install

Pronto.
Agora que o Pyprocessing está devidamente instalado, nos resta usufruir do poder desta ferramenta.

Crie um arquivo com o nome que desejar, logicamente, com a extensão .py, e insira o seguinte código no arquivo:

# -*- coding: utf-8 -*-
from pyprocessing import *

size(300,300)
background(190, 110, 0)

rectMode(CENTER)

# Antenas
ellipse(139, 16	, 5, 5)
ellipse(160, 16, 5, 5)
line(140, 20, 160, 90)
line(140, 90, 160, 20)

# Cabeça
rect(150,70,100,60)

# Olhos
ellipse(120, 55	, 10, 10)
ellipse(180, 55, 10, 10)

# Boca
line(120, 70, 180, 70)

# Corpo
rect(150, 140, 130, 120)

# Braços
rect(70, 100, 30, 15)
rect(230, 100, 30, 15)

# Pernas
rect(85, 210, 40, 20)
rect(215, 210, 40, 20)

# Texto
text('Estou aqui para lhe servir.', 52, 250)

run()

Quando executarmos o arquivo, teremos… Tchârân! Um “lindo” robôzinho, pronto para ser escravizado por você.

Rôbo escravo

Rôbo escravo

Fica a dica.
Em breve estarei postando outras coisas bacanas que podem ser desenvolvidas com o auxílio do Pyuprocessing.

Abraço!