Skip to content

Category: Uncategorized

Criando uma galeria de imagens com Python

Esse é um script que eu uso muito rotineiramente. Eu escrevi ele porque eu tentei várias soluções mas nenhuma era exatamente o que eu precisava e o que eu preciso é geralmente bem simles.

Só quero pegar um monte de fotos de várias resoluções diferentes e gerar uma página em HTML com as miniaturas das imagens com largura de 500 pixeis e com o link para a imagem original. É uma implementação bem simples, sem muita sofisticação. Eu coloco aqui porque ele é fácil de adaptar para outros usos.

#!/usr/bin/env python
import os
import Image

cwd = os.getcwd()
for arquivo in os.listdir(cwd):
   if arquivo.endswith('.JPG'):
      im = Image.open(arquivo)
      im.thumbnail((500,375), Image.ANTIALIAS)
      nome = arquivo.split('.')[0]
      tnome = nome + "_thumb.jpg"
      im.save(tnome, "JPEG")
      print '
' % (arquivo, tnome)

Ele procura os arquivos do diretório que terminam com .JPG, cria uma miniatura de tamanho 500 por 375 e cospe o HTML na saída padrão. Para usar ele, entre no terminal do diretório onde você quer fazer a galeria e execute o script:

python galeria.py > saida.html

Ele cria galerias bem simples como essa ou essa.

Lançamento do Plano Diretor de Tecnologia da Informação da Prefeitura de Fortaleza

Fui hoje para o primeiro dia de apresentação do PDTI da prefeitura de Fortaleza. Estavam lá várias figurinhas carimbadas do Software Livre daqui de Fortaleza. Estavam presentes o Eder Marques, o Lucas Filho, o Hélcio Brasileiro e vários outros colegas.

Para quem não sabe, a prefeitura de Fortaleza tem gradativamente trocado os sistemas proprietários que existiam na máquina administrativa, hospitais e escolas por Software Livre e soluções baseadas em padrões abertos.

Para ilustrar isso, em janeiro de 2005 haviam 54 laboratórios de informática na prefeitura. Hoje, cortando gastos com software proprietário há 158 laboratórios. Dentre várias outras situações completamente precárias que se encontrava toda a TI na prefeitura de Fortaleza.


Cristiano Terrier fala sobre as dificuldades e soluções encontradas.

No geral os tópicos que eu achei interessantes:

  • A economia de licensa de software possibilitou fazer grandes investimentos em equipamento, treinamento e desenvolvimento.
  • Esses gastos ficam em sua maioria no Ceará.
  • O PDTI é um documento livre disponível sob licença Creative Commons.
  • As licitação de software para a prefeitura não vão exigir só a licença de uso do software mas também seu código fonte sob GPL!
  • Há a proposta de se criar um repositório daqueles softwares livres desenvolvidos para a prefeitura.
  • As licitações dos projetos de cultura da prefeitura vão exigir licença Creative Commons do trabalho.

Amanhã acontecerá a segunda parte do evento, a partir das 8 horas no mesmo local, auditório da FIEC na rua Barão de Stuart, 1980, aldeota. Alí em frente ao Capitão Mustarda.


Marcelo Branco dando uma entrevista pra Tv Fortaleza, que cobriu o evento.

O bom mesmo foi a palestra do Marcelo D’Elia Branco falando sobre “sociedade em rede”. Foi uma palestra incrível sobre redes, filosofia, informática, web, direitos autorais, software livre e tudo mais.

Um ponto que eu achei muito interessante foi o seguinte relato do Marcelo: após uma exposição à filosofia do software e cultura livre o pessoal ligado a informática costumam ser os mais resistentes ao apoio dessas causas. É algo muito interessante porque reunindo algumas das minhas experiências isso parece de fato acontecer.

Foi um papo muito bom mesmo.

Uma outra coisa importante é que o Marcelo está organizando (com Sérgio Amadeu também) o Campus Party Brasil, a maior festa da tecnologia do mundo agora no Brasil!



Que tal juntar um pouco de iniciativa e coragem e montarmos uma caravana aqui de Fortaleza para participar do evento?

bônus 1: o restante das fotos que eu tirei está aqui.
bônus 2: O Eder fez esse post falando mais sobre o evento.

Que internet pequena

A internet pode ser um lugar pequeno e solitário. Pelo menos pra quem é um cara esquecido como eu.
Acabo de ver um vídeo, gostar e ir ler os comentários. Só havia um único comentário, de seis meses atrás e era meu, dizendo que tinha gostado do vídeo!

Teste unitário automático em Python

Suponha que um cliente (um cliente muito estranho) te pediu para implementar uma função que calculasse o número de fibonacci.

Então você criou o seguinte código (em Python):

def fibo(n):
   if n < 2:
      return n
   else:
      return fibo(n-1) + fibo(n-2)

Devido ao alto número de chamadas recursivas você nunca criaria esse código. Ele só está aí a título de ilustração. =)

O código está pronto, será que acabou o serviço? Como saber se os requisitos foram atendidos? Os testes unitários podem te ajudar. Basicamente você o comportamento da função para certas entradas e se elas se comportarem bem para essas entradas você admite que ela está correta. Por exemplo, você sabe que fibonacci de 1 é 1 e que o fibonacci de 10 é 55. O que você faria normalmente seria abrir um console Python ou criaria um programa de teste para testar esses valores.

O problema é que depois de um tempo alguém pode alterar a função que você criou. Ou pior, alguém pode alterar um código numa outra parte do programa que o seu código usava para fazer o serviço. Um bom discípulo da engenharia de software iria fazer novos testes unitários toda vez que alguém mexer no código, mas um discípulo ninja mesmo, vai automatizar essa tarefa.

Se você estiver trabalhando com Python há pelo menos duas formas fáceis de você automatizar essa tarefa usando os módulos doctest ou unittest. Esse módulos já vem com o Python por padrão.

Doctest

Com o doctest você só cria testes unitários simplesmente adicionando algumas linhas de comentários ao seu código e depois fazendo uma chamada ao doctest:

def fibo(n):
   """
   >>> fibo(0)
   0
   >>> fibo(1)
   1
   >>> fibo(10)
   55
   """
   if n < 2:
      return n
   else:
      return fibo(n-1) + fibo(n-2)

import doctest
doctest.testmod()

As últimas duas linhas do programa importam o módulo doctest e pedem para testar aquele programa. Se você salvar o programa como fibo.py e executa-lo, nada aparecerá. Isso é bom, quer dizer que você fez tudo certinho. Vamos supor que eu alterei a função fibo de forma que fibo(10)=20, ou seja, um erro. Então você obtem esse comportamento:

$ python fibo.py
****************************
File "fibo.py", line 7, in __main__.fibo
Failed example:
fibo(10)
Expected:
55
Got:
20
****************************
1 items had failures:
1 of 3 in __main__.fibo
***Test Failed*** 1 failures.

Excelente não é? Se você quiser um relatório mais detalhado use a opção verbose do doctest usando a linha de comando python fibo.py -v.

Unittest

Como o nome já diz, o módulo unittest foi feito para fazer testes unitários. Com ele você pode fazer coisas mais avançadas além de testar coisas como função(parâmetro) = resultado_esperado. na verdade o módulo unittest é um framework para testes unitários.

No exemplo, vamos importar a função fibo do arquivo fibo.py e depois criar uma clase do tipo TestCase.

import unittest
from fibo import fibo

class testa_fibonacci(unittest.TestCase):
   def teste_um(self):
      self.assertEqual(fibo(0),0)

   def teste_dois(self):
      self.assertEqual(fibo(1),1)

   def teste_tres(self):
      self.assertEqual(fibo(7),13)

   def teste_quatro(self):
      self.assertEqual(fibo(10),55)

unittest.main()

A execução dele seria assim:

$ python teste.py
....
----------------------------------------------------------------------
Ran 4 tests in 0.001s

OK

Isso foi só uma brevíssima introdução sobre essas ferramentas. Elas conseguem fazer coisas que você nem imagina. Se você se interessa no assunto eu recomendo fortemente a leitura da documentação do módulo unittest.

Para saber mais: Quality Control in Python, Documentação oficial do unittest e Documentação oficial do módulo doctest.

Começa a produção em massa do XO-1

Começa a ser produzido o XO
Linha de produção da Quanta. Imagem retirada do próprio wiki do projeto. No fundo é possível ver Mary Lou Jepsen , chefe de tecnologia da fundação OLPC.

Segundo o planet OLPC, a produção em massa do XO-1 começou nas fábricas da Quanta, arredores de Xangai. É o primeira versão de produção em massa do laptop. O da foto é o primeiro de milhares que ficaram prontos essa semana.

Segundo a Wikipédia:

O OLPC é um projeto de inclusão digital desenvolvido pelo Massachusetts Institute of Technology (MIT). Consiste em um projeto educacional para a criação de um notebook barato com o objetivo de difundir o conhecimento e novas tecnologias a todas as crianças do mundo.

O OLPC é um projeto brilhante e muito bem pensado. O que me entristece é que infelizmente o projeto é muito mal compreendido pelo público geral que, na afobação de querer ter um notebook de 100 dólares para comprar no natal e mostrar para os amigos, deixa passar desapercebido os reais objetivos do projeto. Nas palavras de Nicholas Negroponte: “O OLPC é um projeto de educação, não um projeto de notebook”.

Por outra lado já temos ganhos inderetos do projeto OLPC. Foi só começar a se falar em laptops a baixo custo subsidiado pelos governos e voltado para as crianças, os fabricantes se apresaram em devolver soluções alternativa para poder concorrer diretamente com a OLPC. Por exemplo já estão a venda os Eee PC da Asus a partir de U$299. Iniciativas parecidas não param de aparecer.

Relato e fotos da Caravana

Ontem passou aqui por Fortaleza a Caravana da Tecnologia 2007 trazendo muita gente boa e fazendo um grande evento.

Logo cedo da manhã tivemos a primeira palestra com o Tim Jacobson sobre computação de alto desempenho com o Sun Studio.


Pthreads, OpenMP e MPI

Ele mostrou um pouco de história e as diversas ferramentas para se trabalhar com computação de alto desempenho.


A tradução simultânea em ação sendo transmitida via FM para quem trouxe seu radio.

Tim também falou da importância de se aprender a programar para processadores de múltiplos núcleos e também falou um pouco sobre linguagens, programação e mercado de trabalho.


Tim falando sobre processadores multi-core em seu notebook.

Houveram vários benchmarks sobre otimização e também sobre os compiladores da Sun. Uma ótima palestra para quem, como eu, brinca com clusters e supercomputadores.

A segunda palestra foi a do Edward Pilatowicz sobre o sistema operacional livre, o OpenSolaris. Ele é um desenvolvedor do kernel do OpenSolaris e conhece a fundo o sistema.


Ed respondendo às dúvidas da plateia.

De longe o que eu gostei mais foi o DTrace. É algo tão incrível que é difícil de explicar.

O Dtrace é um ferramenta livre do OpenSolaris para fazer inspeção num programa rodando. Eu nunca tinha visto nada parecido. Com o DTrace você consegue inspecionar o código para saber em que função o programa entrou mais, quanto tempo levou, quais os parâmetros e praticamente qualquer coisa.


Ed tirando coelhos da cartola =D

Você pode inclusive ver as chamadas entre diferentes processos, kernel ou libc. É como se você estivesse vendo o mundo com os olhos do sistema operacional.

Ed também fez uma apresentação do ZFS, um robusto sistema de arquivos que eu estou ansioso para usar. É surpreendentemente diferente dos sistemas de arquivos que eu estou familiar.


DTrace em ação.

Ed falou também sobre o Projeto Indiana, que a partir de agora deve ganhar uma certa popularidade. O projeto Indiana é uma distribuição do Opensolaris mais bonita e fácil de usar, como o Ubuntu é para o Linux.

Ao final da palestra todo mundo que estava lá ganhou um kit com CD e DVD do OpenSolaris e também um livreto de introdução ao opensolaris com práticas de ZFS e DTrace.


Livretos Introdução a Sistemas Operacionais – Uma abordagem prática usando o projeto OpenSolaris.


Eu ganhando o meu DVD =D

Se você ficou sem esse material, não se preocupe. Esse livro está disponível para download aqui. Já os CDs e DVDs você pode baixar no site do OpenSolaris. Você também pode pedir um OpenSolaris Stater Kit para ser entregue em sua casa.


Uma pausa para o almoço =P


Tropa de elite tocando num iphone.


Um kit do SunSPOT, no momento só disponível para venda nos EUA.

A tarde houve uma apresentação sobre o SunSPOT (Sun Small Programmable Object Technology).


Ligando os brinquedos.


Botão de ligar/desligar e saída USB do SunSPOT


Um SunSPOT ligado.

Dentro do SunSPOT há uma Máquina Virtual Java (a Squawk) e diversos brinquedinhos como sensores de luz, movimento, aceleração, temperatura, transmissor de rádio etc.


SunSpot na minha mão.

Foi uma palestra que deu muito o que falar até porque é sempre um assunto que desperta muita curiosidade. Se você quiser saber mais sobre o SunSPOT, vá aqui.

A palestra seguinte foi a do Tim Boudreau sobre Java e Netbeans.

O Tim mostrou um release do Netbeans 6. Foi muito normal escutar ooooh vindo da platéia enquanto ele mostrava as novas funcionalidades.

Eu falei um pouco (e de improviso) sobre o Sun Academic Initiative (SAI) e sobre o programa de Embaixadores de Campus da Sun. Em breve eu faço um post explicando tudo sobre o SAI.

Por fim o Bruno Souza (aka Javaman) deu uma palestra sobre Software Livre e nós tivemos uma maratona de perguntas e respostas sobre os mais diversos temas, sobretudo Java.


Maurício Leal respondendo perguntas.

Foi muito bom também porque eu pude finalmente conhecer o Eduardo Lima pessoalmente. Agora ele não é mais só uma voz misteriosa no telefone. =D


Quase todo mundo junto e mais alguns professores de algumas faculdades daqui.

O pessoal tinha que voar para Salvador a meia-noite então nós fomos jantar no Coco Bambu para a caravana experimentar algumas comidas típicas daqui.


Com certeza foi um dia muito divertido.

Eu queria agradecer a todo mundo que esteve por trás do evento, a caravana, ao Felipe Gaúcho que mesmo lá em Zurique conseguiu estar do nosso lado fazendo tudo, ao CEJUG que esteve suando a camisa para que tudo desse certo, a FANOR pela infra-estrutura e pelo apoio e a todos que compareceram ao evento.

Foi realmente um sucesso e esperamos repetir a dose qualquer dia desses.

  • bônus 1: o restante das fotos que eu tirei estão aqui.
  • bônus 2: O Rafael Carneiro também fez um post sobre o evento, aqui.
  • bônus 3:  O Edward também colocou algumas fotos aqui.

OpenSolaris Installfest

O University Wourld Tour está chegando, e o Felipe Gaúcho avisa que já são mais de 200 inscritos!

Amanhã acontece a edição de Fortaleza da Caravana da Tecnologia 2007 e se você ainda não está inscrito, ainda dá tempo, vá se inscrever agora. É só acessar o site oficial do evento e seguir as instruções.

O Tim Boudreau avisa em seu blog que ele já está chegando e também vai passar por várias cidades do Brasil, Chile, Uruguai e Argentina.

opensolaris installfest tokyo flickr
Installfest de Opensolaris em Tokyo. Imagem no Flickr.

O Bruno Souza manda avisar que vamos fazer um installfest de OpenSolaris durante o evento.

Installfest: é um evento onde você leva sua máquina e usuários mais experientes tentam instalar uma determinada distribuição em sua máquina. Vai ser uma ótima oportunidade para quem está com dificuldades para instalar o OpenSolaris em sua máquina (eu, por exemplo).

Se você vai participar do installfest:

  • Traga seu gabinete: você não precisa trazer seu computador inteiro, basta trazer seu gabinete. No evento haverão monitores, teclados, mouses e estabilizadores.
  • Particione em casa: é preferível que você já traga seu disco rígido particionado para poupar tempo. Particione seu disco e deixa uma partição livre para a instalação do Opensolaris. Caso você não saiba fazer isso, tudo bem, particionamos na hora.
  • Brindes: estão chegando em Fortaleza várias caixas de DVDs e livretos do Opensolaris para todo mundo sair do evento com o seu!

A Chave

Finalmente consegui fazer minha placa de vídeo voltar a funcionar normalmente, agora que instalei o Ubuntu 7.10.

Voltando a brincar no Blender (versão 2.44) eu vi que agora ele tem uma primitiva nova, o toróide. É uma ótima novidade. Antes  era necessário uma certa criatividade para criar figuras como anéis. Para brincar com a novidade, fiz esse desenho de uma chave. Dois toroídes foram usados pela cercar uma pedra vermelha.

Chave
Aqui uma versão 1280×1024.

Código-fonte: chave.blend

Mini-banner para a Caravana da Tecnologia 2007

Eu fiz um mini-banner (em gif animado) para a Caravana da Tecnologia 2007 que vai acontecer semana que vem. Vou colocar ele nos meus blogs até quarta-feira. Aqui está ele:

Caravana da Tecnologia 2007

Se você quiser ajudar na divulgação do evento, coloque esse código no seu blog:


Você pode fazer seu próprio mini-banner para divulgar o evento quando ele passar na sua cidade.
Eu fiz essa animação no Gimp, o código-fonte do arquivo está disponível para download aqui: mini_banner_caravana.xcf.

Blog Eu Podia Tá Matando no A Gazeta

Depois da Folha de São Paulo, agora o leitor Leo Santos nos informa que o Eu Podia Tá Matando foi citado no jornal A Gazeta, do estado do Espírito Santo.

O Leo ainda fez a gentileza de me enviar capturas de tela da reportagem, já que o conteúdo da reportagem original ainda é daquele tipo que só é acessível para os assinantes.

Detalhe da reportagem do A Gazeta

Aqui está a rápida citação:

Trecho da reportagem

E somando a isso outra ótima boa notícia: o pagerank do eupodiatamatando.com agora é 5!