March 15th, 2008Ilex Paraguariensis

Chimarrão Gaúcho
Creative Commons image from Flickr.

From days 15 to 20 from April, I’ll be in Porto Alegre. I’ll participate on FISL (an old dream) with the presentation “Netbeans: beyond Java”. I’d like to talk about how you can use Netbeans as a great IDE for languages others than Java like Ruby, PHP, JavaFX, Javascript, Python, etc.

Probably I’ll be able to participate also on two events before FISL (about Opensolaris and Java ME). :)

So … how chimarrão tastes?

March 4th, 2008Pythons at Sun

Pythons at Sun
Source: python.at.sun.svg

Good news. Two important Pythonistas, Ted Leung (Apache Foundation member) and Frank Wierzbicki (Jython lead) joined Sun Microsystems.

It’s one important step in the recognition of the Python language and certainly will bring benefits for the Python Community. Some things I’d like to see:

  • Python support on Netbeans. Bringing Python as a first class citizen on Netbeans, syntax highlight, code completion, debugging tools, unitary testing, Jython and a lot of more.
  • Django support on Netbeans. As we have Rails and Ruby support on Netbeans we can have also Django and Python support on Netbeans. Django is accessed with some command line tools, the work is just plug this on Netbeans, and its architecture makes this not hard. We could have a lot of wizards to creating new models and views. I’d love that.
  • More support of Python and dynamic languages at JVM. There’s already the Da Vince Machine Project on the OpenJDK Project. I hope one day we can see call the Java Virtual Machine as Universal Virtual Machine or Multi Language Virtual Machine.
  • More Python on OpenSolaris. Some projects at OpenSolaris are allready using Python, see Image Packaging System Project. Python is a really good language for common script tasks and I use it for that purpose very often. We could see a lot of wizards and configuration panels in Opensolaris using Python and PyGTK or PyQT.

It’s really a great moment for Sun and Open and Free Software. I’m happy with all that? You can bet on it. :D

Sources: Tim Bray Blog and Cnet news.

January 19th, 2008Gerando permutações

Muitas vezes para resolver uma única instância de um problema é mais rápido ataca-lo com força bruta do que encontrar um algoritmo geral com uma boa ordem de complexidade. Permutações são de grande utilidade nesse tipo de abordagem.

Permutações em Prolog:

Esse é um código em Prolog que o Wladimir Araujo passou na cadeira de IA.

select(X, [X|Xs], Xs).
select(X, [Y|Ys], [Y|Zs]) :- select(X, Ys, Zs).
 
permutar([], []).
permutar(Xs, [Z|Zs]) :-
    select(Z, Xs, Ys),
    permutar(Ys, Zs).

Permutações em Python:
Esse é um código de um certo Michael Davies que eu tirei daqui. Ele gera uma lista com todas as permutações de uma lista. Muito bonitinho. :)

def all_perms(str):
    if len(str) <=1:
        yield str
    else:
        for perm in all_perms(str[1:]):
            for i in range(len(perm)+1):
                yield perm[:i] + str[0:1] + perm[i:]

Um exemplo de uso:

>>> for p in all_perms(['a','b','c']):
	print p
['a', 'b', 'c']
['b', 'a', 'c']
['b', 'c', 'a']
['a', 'c', 'b']
['c', 'a', 'b']
['c', 'b', 'a']

Outras implementações:
Em outras linguagens o código para gerar permutações geralmente é muito grande, então eu preferi deixar alguns links.

Lendo um código eu me deparei com o operador _ do Python.
Ele é uma variável especial para ser usada quando estamos trabalhando no console e queremos referenciar o valor de retorno da linha anterior.
Por exemplo:

>>> 42
42
>>> 1 + _
43
 
>>> import os
>>> os.getcwd()
'/home/silveira'
>>> _ + '/pasta'
'/home/silveira/pasta'

Eu gostaria ter sabido disso quando eu usava o console do Python pelo meu antigo celular…

November 18th, 2007anniversary.py

Um problema típico do dia 18 de cada mês. Isso pode me ajudar:

#!/usr/bin/env python
import datetime
delta = datetime.date.today() - datetime.date(2001, 4, 18)
anos, dias = divmod(delta.days, 365)
print "Silveira e Deborah juntos por %d anos e %d dias." % (anos, dias)

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 '<a href="%s"><img src="%s"/></a><br/>' % (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.


© 2007 Silveira Neto | iKon Wordpress Theme | Powered by Wordpress