Archive for the 'python' Category
março 10th, 2010 by elm
Aqui na empresa temos duas contas de FTP contratadas no nosso plano de hospedagem para usarmos como espaço de backup. As duas contas tem um espaço limitado e toda semana eu preciso monitorar quanto espaço estamos usando, para evitar erros no script de backup. Para facilitar esse controle eu criei um pequeno script Python para navegar em todas as pastas e me dizer quanto espaço estou usando. O script ficou assim:
-
import os
-
from ftplib import FTP
-
-
def pretty_filesize(bytes):
-
if bytes >= 1073741824:
-
return str(bytes / 1024 / 1024 / 1024) + ' GB'
-
elif bytes >= 1048576:
-
return str(bytes / 1024 / 1024) + ' MB'
-
elif bytes >= 1024:
-
return str(bytes / 1024) + ' KB'
-
elif bytes < 1024:
-
return str(bytes) + ' bytes'
-
-
endereco_ftp = 'servidor'
-
usuario = 'usuario'
-
senha = 'senha'
-
conexao_ftp = FTP(endereco_ftp)
-
-
conexao_ftp.login(usuario,senha)
-
diretorio_corrente = conexao_ftp.pwd()
-
soma = 0
-
for i in conexao_ftp.nlst():
-
conexao_ftp.cwd(i)
-
for j in conexao_ftp.nlst():
-
soma = soma + conexao_ftp.size(j)
-
conexao_ftp.cwd('..')
-
-
print pretty_filesize(soma)
Agora é só colocar no crontab e receber diariamente o espaço utilizado.
Fontes:
http://www.vivaolinux.com.br/script/navegador-ftp
http://code.rivers.pro/python-function-to-convert-bytes-to-kbmbgb/
novembro 25th, 2008 by elm
Outra novidade para mim ao usar o Subversion foi o controle de Locks.
Eu sempre usei o CVS integrado ao Eclipse para gerenciar os projetos que eu trabalhava e com essa duplinha é bem fácil configurar para evitar que dois programadores alterem o mesmo arquivo.
Com o Subversion e o Eclipse (usando o plugin Subclipse) eu não encontrei essa opção. A solução que encontrei foi configurar o cliente do subversion para quando criar novos arquivos marcá-los com um flag. Este flag indica que, para editar o arquivo é preciso que seja feito o “lock” antes. No momento de criar o lock o Subclipse também verifica a versão do arquivo e avisa caso a versão local seja inferior a que consta no repositório. Desta forma eu garanto que o programador sempre tenha a última versão do arquivo e evito que duas pessoas alterem o mesmo arquivo ao mesmo tempo. Existem formas de corrigir isso usando práticas de merge, mas eu acho mais fácil evitar o problema do que resolvê-lo
O que eu fiz foi alterar o arquivo config no diretório do usuário:
mate ~/.subversion/config
Eu estou usando o Textmate no MacOSX. Mas o mesmo passo vai funcionar no Linux. No Windows XP o arquivo encontra-se no diretório
c:\Documents and Settings\usuario\Dados de Aplicativos\Subversion\config
Neste arquivo eu alterei
# enable-auto-props = yes
para
enable-auto-props = yes
E adicionei alinha abaixo na seção [auto-props]
* = svn:needs-lock
Desta forma, assim que o programador criar um novo arquivo e realizar o primeiro commit é adicionada esta flag ao arquivo. Todos que forem alterá-lo vão passar pela fase “lock-edit-commit”, com um “update” caso seja necessário.
novembro 25th, 2008 by elm
Estou iniciando um novo projeto e aproveitei para mudar do CVS para o Subversion.
Uma das coisas que achei interessante é o esquema de “hooks“. É um conceito parecido com “triggers” de bancos de dados. Você pode programar alguns scripts para serem executados em momentos específicos do ciclo gerenciado pelo SVN. As opções são:
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl
Os nomes são auto-explicativos. Por exemplo, o script post-lock vai ser executado sempre após algum usuário ter feito o lock de um arquivo.
Estes arquivos estão armazenados no diretório hooks do repositório do projeto.
O que eu fiz foi alterar o post-commit.tmpl
É preciso remover a extensão do nome e dar permissão de execução no arquivo, então:
cp post-commit.tmpl post-commit
chmod +x post-commit
O conteúdo do arquivo ficou assim:
REPOS="$1"
REV="$2"
PROD="/var/www/html"
#pega todas as alteracoes
svnlook changed $REPOS --revision $REV >> /tmp/lixo_$REV
#pega cada alteracao e salva
for i in `cat /tmp/lixo_$REV|cut -c 5-1024` ; do
svnlook cat $REPOS $i > $PROD/$i
done
#apagar arquivo
rm /tmp/lixo_$REV
Desta forma cada vez que um programador faz o commit do fonte ele é automaticamente salvo no htdocs, onde fica acessível para a equipe de testes.
Lógico que esse script pode ser melhorado e isso está sendo executado em um servidor de desenvolvimento e não o de produção. Além disso eu comecei a usar o SVN somente agora, por isso, se alguém encontrar um problema ou erro na lógica me avisem
agosto 30th, 2008 by elm
No dia 04/09/2008 fazem 5 anos que criei este site!
Nestes 5 anos foram 245 posts (246 contando com este), 576 comentários, vários novos amigos e grande conhecimento adquirido. Realmente foi uma das melhores práticas profissionais e pessoais que já fiz.
Para comemorar e agradecer aos leitores eu vou sortear duas cópias do meu livro Frameworks para Desenvolvimento em PHP. Autografados e enviados pelo correio. Lembre-se que minha assinatura e mais 15 reais valem uma cerveja em qualquer Night Club do país!!
Para participar é só deixar um comentário nesse post, com nome e e-mail corretos. O sorteio vai ser feito pelo meu pequeno e humilde script para sortear alunos azarados no dia 08/09/2008
Boa sorte e obrigado por ler meu site
julho 11th, 2008 by elm
Lendo este post sobre a conferência EuroPython 2008 encontrei os gráficos abaixo.
Eles foram criados com dados do site ITJobWatch, site inglês de vagas de trabalho.
O primeiro gráfico mostra a demanda por profissionais Java no país da Rainha.

O segundo mostra a demanda por profissionais Python no mesmo período.

Interessante. Como será que seria este gráfico aqui no país do Carnaval?
julho 4th, 2008 by elm
No meio dos 120 (sério) feeds que leio diariamente (na verdade várias vezes ao dia) encontrei o site desta empresa: Carsonfied
Eles são uma empresa de desenvolvimento na Inglaterra, que trabalham com Django, Rails, Symfony, etc. Mas o mais interessante é a página de vagas de emprego. Olha como eles se descrevem (tradução resumida e alterada):
“… Não somos uma empresa normal
Alguns benefícios da vaga:
Semana de 4 dias(O escritório é fechado nas Sextas-feiras). Seu próprio iPhone, monitor de 23 ”, cadeira confortável e MacBook Pro. Bons salários.
Trabalhar na Carsonified não é apenas um trabalho – é um estilo de vida. Nós queremos que você ame trabalhar aqui, então fornecemos o melhor kit do mercado
….
”
Viu? É disso que eu falo! Melhor do que o Google.
Imagino as pessoas que trabalham lá: Papai Noel (Programador), Coelho da Páscoa (Designer), Capitão Nascimento (Gerente de Projetos)…
Será que isso existe mesmo?
junho 30th, 2008 by elm
Ainda tem algumas vagas para o curso de Python que vou ministrar em Chapecó. O folder do curso
Curso de Python
junho 17th, 2008 by elm
O professor Mario Olimpio de Menezes colocou em seu blog um código muito interessante. Um gerador de provas. Faz tempo que eu estou pensando em fazer algo parecido mas não tive tempo. Ficou muito bom:
Cria Prova – Um python script para gerar provas
junho 10th, 2008 by elm
A Incubadora de empresas da Unochapecó está organizando um curso de Python. Eu sou o professor
Detalhes:
OBJETIVOS
Geral: Habilitar os participantes para a programação de computadores em Linguagem de Programação Python.
Específicos:
Habilitar os participantes para trabalharem com:
- Conceitos de programação Orientada a Objetos.
- Comandos e utilização de estruturas de controle.
- Tratamento de exceções.
- Acesso e manipulação em banco de dados.
- Procedimentos e funções.
CONTEÚDO PROGRAMÁTICO
- Histórico,
- Características,
- Interpretador de Python,
- Tipos de dados,
- Tuplas,
- Listas,
- Dicionários,
- Condições e repetição,
- Módulos e pacotes,
- Usando help e dir,
- Tratamento de exceções,
- Orientação a objetos,
- Interfaces gráficas,
- Acesso a banco de dados
- Debug de aplicações.
INSTRUTOR
Elton Luís Minetto
Possui graduação em Ciência de Computação pela Universidade do Oeste de Santa Catarina – Campus Chapecó (2000) e especialização em Ciência da Computação pela Universidade Federal de Santa Catarina (2005) . Atualmente é Professor da Unochapecó e Consultor. Tem experiência na área de Ciência da Computação , com ênfase em Redes de Computadores
PERÍODO DE REALIZAÇÃO
28 de junho, 05 e 12 de julho (sábados) – Das 8:20 ás 11:55h e das 13:30 ás 17h.
24h/ aula
INFORMAÇÕES IMPORTANTES
Inscrições: 09 a 13 de junho no site: http://www.unochapeco.edu.br/inscricoes/
Valor: R$ 115,00 para Acadêmicos e R$ 147,00 público externo.
maio 29th, 2008 by elm
No dia 26 de Julho vou ministrar um curso de 8 horas de Python.
O curso é organizado pela Temporeal Eventos.
Inscrições
maio 28th, 2008 by elm
No site da Temporeal Eventos está disponível as fotos do evento Mão na Massa Django, que aconteceu em SP.
O evento foi um sucesso. 26 pessoas participaram. Uma grande comitiva da Locaweb estava presente. Todos participativos e interessados.
E em Julho vou voltar para SP para ministrar um Mão na Massa Python. Novidades em breve
maio 1st, 2008 by elm
Neste ano eu comecei a investir em ações. É algo ao mesmo tempo emocionante e apavorante porque você pode ganhar e perder dinheiro em questão de horas. Por isso é importante ficar sempre atento as alterações dos valores das ações. Existem vários programas e sites que permitem o acompanhamento das alterações. Mesmo assim, eu aproveitei a manhã de feriado, enquanto me recupero de uma pequena ressaca, e fiz um script em Python que busca os dados da Bovespa e permite o acompanhamento da sua “carteira de ações”. Assim dá para deixar um terminal aberto e ir acompanhando o mercado.
O script foi feito por diversão e uso pessoal, mas se servir para alguém mais legal. O código:
-
# -*- coding: utf-8 -*-
-
# Elton Luís Minetto
-
import urllib
-
from xml.dom import minidom
-
from time import sleep
-
from os import system
-
-
#adicionar as acoes aqui
-
#formato ACAO: [num_acoes,valor_compra,data_compra]
-
acoes = {
-
'BBDC4':[100,34.84,'25/04/2008'],
-
'PETR4':[100,42.00,'20/04/2008'],
-
}
-
-
def atualiza(acoes):
-
system('clear')
-
url = 'http://www.bovespa.com.br/Mercado/RendaVariavel/InfoPregao/ExecutaAcaoAjax.asp?CodigoPapel='
-
for i in acoes:
-
url += '|'+i
-
f = urllib.urlopen(url)
-
xml = f.read()
-
xmldoc = minidom.parseString(xml)
-
papeis = xmldoc.getElementsByTagName('Papel')
-
#cabecalho
-
print 'Ação\tValor de Compra\tData da Compra\tQtd\tAtual\tDiferença R$\tDiferença %\tData de Atualização'
-
-
total_compra = 0.0
-
total_dif_reais = 0.0
-
for i in papeis:
-
codigo = i.attributes['Codigo'].value
-
valor_compra = acoes[codigo][1]
-
qtd_acoes = acoes[codigo][0]
-
data_compra = acoes[codigo][2]
-
valor_atual = i.attributes['Ultimo'].value.replace(',','.')
-
data_atual = i.attributes['Data'].value
-
-
diferenca_reais = (float(valor_atual) * qtd_acoes) – (valor_compra * qtd_acoes)
-
diferenca_perc = (diferenca_reais*100)/(valor_compra * qtd_acoes)
-
total_compra += valor_compra * qtd_acoes
-
total_dif_reais += diferenca_reais
-
-
print '%s\t%02f\t%s\t%d\t%s\t%02f\t%02f\t%s' % (codigo,valor_compra,data_compra,qtd_acoes,valor_atual,diferenca_reais,diferenca_perc,data_atual)
-
-
print 'Total de Compra:%02f' % total_compra
-
print 'Total da Diferença em Reais:%02f' % total_dif_reais
-
total_dif_perc = (total_dif_reais * 100)/total_compra
-
print 'Total da Diferença em Percentual:%02f' % total_dif_perc
-
sleep(1200)
-
-
while 1:
-
atualiza(acoes)
Eu testei o script no MacOSX Leopard. Mas deve funcionar legal no Linux e no Windows
Download do arquivo
abril 26th, 2008 by elm
O Og Maciel teve a excelente idéia de fazer uma vídeo aula demonstrando como programar com o Python usando interfaces geradas pelo Glade. Muito útil:
Vídeo Aula: Programando com Python e Glade
abril 23rd, 2008 by elm
Finalmente consegui me organizar e reler minhas anotações das palestras que vi no FISL 9.0
Foram muito boas na minha opinião. Python pra todos os gostos
Um resumo das que eu assisti:
Ganeti – cluster-based virtualization management software
Apresentado por um programador do Google, mostrou uma ferramenta interessante de gerenciamento de clusters virtualizados com o Xen. Realmente muito interessante. Assunto para TCC. Só falta encontrar um aluno maluco o suficiente
Coding Dojo – Treino para Programadores
Já tinha assistido um vídeo de uma palestra que essa galera tinha feito, acho que na Unicamp. Bem interessante a forma como eles organizam cada sessão. Muito legal para servir como reforço para as aulas de programação em geral. Tenho vontade de implantar isso. Vou conversar com mais alguns professores e programadores da região. Quem sabe não nos divertimos nos sábados de tarde?
Large Scale PHP
Apresentado pelo criador do PHP, essa foi uma palestra bem instrutiva. Para falar a verdade eu já conhecia quase todas as ferramentas que ele mostrou, mas mesmo assim foi ótima. Ele falou bastante sobre segurança também, o que vai me ajudar na próxima edição da disciplina de segurança. Coisas para testar: YSlow, valgrind e os filtros embutidos nas novas versões do PHP. A grande surpresa foi descobrir que ele trabalhou por um tempo em uma empresa em POA, antes de criar o PHP. Legal.
Duro de Errar 5.0
A palestra do Marcelio Leal foi muito divertida e útil. Já aproveitei algumas coisa que ele falou na aula de PHP que ministrei ontem. E ainda tive tempo de conversar com o Marcelio nos corredores. Grande pessoa.
No sábado eu só assisti as palestras da tarde. A ressaca estava graande. Mas aproveitei todas as palestras.
Python: Palestras Relâmpago
Várias palestras curtas sobre Python. Gostei da apresentação do Andrews e companhia sobre o joguinho que eles fizeram para o OLPC com pygame. A que foi mais importante para mim foi a da Tatiana Martins, sobre VTK. Ela deveria ter ministrado uma palestra completa no dia anterior mas não pode. Mesmo mostrando muito rápido os slides pude ver que é uma excelente biblioteca de manipulação 3D. Exatamente o que eu estou precisando para um projeto que irei iniciar em breve. Consegui conversar com ela nos corredores e vou estudar mais sobre isso.
Desenvolvimento ágil de software com XP e Scrum
Excelente palestra. Foi apresentado um resumo sobre estas metodologias de desenvolvimento. E o mais legal é que foi baseado na experiência real da equipe do Globo.com. É realmente importante ver isso de uma maneira prática e real porque muitas vezes parece que isso funciona melhor no papel.
ISIS-NBP: Python e Bibliotecas Digitais
Confesso que entrei nessa palestre meio enganado. Mas como tinha Python no título eu fui ver. E me surpreendi. Era sobre a plataforma ISIS para bibliotecas. Eu já tinha instalado um software dessa plataforma na Unochapecó quando comecei a trabalhar lá anos atrás. Além disso tirei uma idéia para G2 da turma de Estrutura de Arquivos
WSGI: a resposta para a questão definitiva sobre Python, Web e tudo mais?
Faz tempo que eu precisava dar uma atenção para WSGI. E essa palestra conseguiu tirar algumas dúvidas. Muito boa apresentação. Rápida, sem papo furado. Além disso me deu curiosidade de testar mais pylons e paste.
Implementando Enterprise Patterns em PHP
A palestra do Pablo foi ótima. Ele tem muito domínio do público e apresenta muito bem. Como ele mesmo comentou na palestra, algumas coisas eu já conhecia mas não sabia que tinha um design pattern para isso. Mais uma palestra que vai parar na bibliografia das minhas disciplinas de programação web avançada
Django para desenvolvimento web / Google App Engine
Palestras apresentadas pelo Andrews Medina. A de Django foi curta para tanto conteúdo, mas a galera que estava perto de mim comentou que deu vontade de testar o framework. Missão cumprida! E eu tive mais algumas idéias para o curso de Django. Vou tentar trocar umas idéias com o Andrews para ver se ele tem algumas sugestões. A palestra sobre o Google App Engine era obrigatória porque é o assunto do momento no meio Python. Não vejo a hora de botar a mão na massa com isso!
E foi mais ou menos isso. Gostei muito deste FISL. Conversei com muitas pessoas legais pelos corredores como o Pablo, o Rubens da Novatec, os meus amigos da Temporeal Eventos, conversei um pouco com o pessoal do globo.com, ganhei DVD do OpenSolaris e cd do GoboLinux (tenho que testar os dois).
Bebemos umas cervejas, rimos muito, fomos no cinema. Em resumo: contando os dias para o FISL 10.0
abril 22nd, 2008 by elm
Recentemente precisei criptografar alguns dados gerados por uma aplicação em Python. Para isso resolvi testar o python-mcrypt, módulo desenvolvido pelo brasileiro Gustavo Niemeyer.
Demorei um pouco para conseguir entender o funcionamento, mas é bem simples. Fiz um exemplo de uso para alguém não precisar perder o mesmo tempo que eu investi
exemplo_mcrypt
abril 2nd, 2008 by elm
Parece que o Django caiu mesmo nas graças da revista Info.
Hoje saiu outra reportagem sobre o framework, desta vez falando sobre o crescimento da procura por profissionais. Inclusive conta com depoimentos de pessoas importantes do cenário brasileiro de Python/Django como o Andrews Medina, Christiano Anderson entre outros.
Tomara que isso influencie nas inscrições para o evento de Django que vou ministrar em SP
março 19th, 2008 by elm
Saiu uma reportagem sobre o Django na versão online da revista Info. Essa reportagem já havia sido publicada na versão impressa em Novembro de 2007 e agora está disponível gratuitamente.Legal ver o framework ganhando publicidade.
março 12th, 2008 by elm
Em Maio a Temporeal Eventos vai realizar mais um dos seus já famosos eventos “Mão na massa”
Dessa vez é sobre o framework Django e o professor vou ser eu
Inscrições e detalhes no site do evento
janeiro 26th, 2008 by elm
Nesses meses como novo usário de MacOSX testei alguns editores para trabalhar com programação, principalmente com PHP, Python, HTML e CSS. Encontrei alguns interessantes. Deixo aqui minhas opiniões sobre o assunto.
Eclipse
O primeiro que testei foi o Eclipse, pois é o que utilizo no meu trabalho diário na universidade. Lá eu utilizo em ambiente Linux e no OSX tudo funcionou da mesma maneira. Só algumas telas e teclas de atalho mudam. O Eclipse é uma ferramenta muito poderosa. Instalando os plugins corretos, PDT para PHP e PyDev para Python, é possível ter todas as características que esperamos deste tipo de ambiente. O que eu mais gosto é o suporte nativo a CVS (extremamente útil para projetos maiores pois não consigo mais programar sem este recurso), o auto complete dos comandos PHP e HTML que funciona certinho, aquilo que o Eclipse chama de Outline onde ele mostra os métodos e funções do arquivo aberto, e a árvore de arquivos/diretórios que facilita o acesso rápido aos códigos. O que eu não gosto no Eclipse é a quantia de memória que ele utiliza.
Smultron
Já comentei sobre o Smultron aqui no site. É um editor bom, open source e leve. O que eu sinto falta é o equivalente ao Outline e a árvore de diretórios do Eclipse. Além disso, a interface do programa não é tão bonita quanto o resto do sistema operacional
TextWrangler
O TextWrangler é um editor feito pela mesma empresa que desenvolve outro editor famoso (e pago) para o Mac, o BBEdit. É uma versão com menos recursos do que a versão comercial, mas mesmo assim é muito bom. Leve, suporta várias linguagens de programação, interface polida, acesso a ler/gravar arquivos direto em servidores FTP/SFTP, possui algo equivalente ao Outline do Eclipse, além de ser altamente configurável. Uma boa opção. Só senti falta da árvore de diretórios para rápido acesso aos arquivos.
Komodo Edit
É a versão para Mac do editor do qual já comentei aqui no site. É muito bom. Rápido, possui a árvore de diretórios (que se atualiza automaticamente caso um arquivo seja criado ou excluído. Cool), é extensível usando-se plugins quase da mesma maneira que o Firefox, apesar de ainda existirem poucos disponíveis. E o auto complete é tão bom quanto o do Eclipse, se não for até melhor. Só faltou o Outline e suporte a CVS pra ser um bom substituto ao Eclipse. Mas isso só na versão paga, que por enquanto está fora do meu foco de avaliação
Vi/VIM
Lógico que não dava para esquecer do velho amigo. Outra vantagem do OSX ser derivado do Unix é poder usar o Vi. É um bom editor de programação como é possível ver nesse excelente artigo
Conclusões
Depois de testar estes softwares cheguei as seguintes conclusões:
- Para projetos grandes, onde o CVS/Subversion é importante, o Eclipse ainda é a melhor opção.
- Para projetos menores eu estou usando o Komodo Edit e estou satisfeito. Tenho usado ele bastante em projetos com o CakePHP e outros frameworks como o Django (ele tem suporte ao Django além do próprio Python)
- Para editar arquivos PHP/Python de maneira rápida, sem precisar ver todo o projeto eu estou usando o TextWrangler
- E para arquivos de configuração, como o httpd.conf e outros, o bom e velho Vim é a solução
- É possível programar confortavelmente sem precisar comprar um TextMate ou o BBEdit (apesar do TextMate ser muito bonito)
Se alguém usa outro editor ou discorda de alguma das conclusões me avise
janeiro 17th, 2008 by elm
O livro “How to Think Like a Computer Scientist: Learning with Python” trata de assuntos vistos em cursos de Ciência da Computação e Sistemas de Informação, tais como Filas, Pilhas, Objetos, etc, todos voltados para a linguagem Python.
Este livro está sendo traduzido para o portugues a um bom tempo e pode ser acessado no site do projeto de tradução . Também pode ser encontrada uma versão formatada em PDF e em ODT.
Muito interessante para quem estuda computação e cursos similares. Pretendo usar algumas partes nas minhas aulas