Browsing the 2008 December archive
Ééééé, mais um ano está se acabando..
Nesse em particular aconteceram muitas coisas comigo. E, seguindo a tradição dos últimos anos, só posso falar duas coisas:
– A cada ano parece que o tempo passa mais e mais rápido
– Todos os planos feitos no começo do ano acabam se transformando de forma inacreditável
.
Bem, alguns dos destaques de 2008, que logo-logo vai ficar no passado:
- Encontrei a Vanessa (sem dúvida alguma uma das coisas mais legais de 2008
)! - Fui para Salvador no carnaval. Foi uma experiência única e inesquecível
. - Saí da mstech, depois de 5 anos lá. Aprendi muito lá, fiz diversos projetos interessantes, achei amigos para toda a vida e cresci muito. Mas chegou a hora de procurar novos desafios..
- Adiantei de forma inacreditável as coisas do doutorado. Se no fim do ano passado eu não sabia nem para onde ele estava indo, e hoje posso falar que o projeto está praticamente terminado, e é um projeto BOM.
- Entrei para Mandriva. Para mim isso é particularmente interessante – estou mexendo com Linux já faz mais de 10 anos, mas nunca trabalhei em nenhum lugar que trabalhasse diretamente com software livre.
- Realizei diversos projetos para Intel (com ajuda do Paulo, é claro).
- Li mais de 300 livros no meu N800. Encontrei diversos livros que realmente marcaram a minha vida e fizeram pensar nela.
- Conheci diversas cervejas diferentes (novo hobby), e comecei a “degustar” vinhos bons. Casillero Del Diablo, de 2007.. hummm…
- Consolidei o meu hobby de fotografia. Algumas fotos receberam milhares de visitas, algumas centenas.. Mas, observando as fotos antigas e comparando com as de hoje, consigo notar o meu crescimento pessoal nitidamente.
E muitas outras coisas.
De forma geral, 2008 foi bom. Corrido, mas bom. Vamos para 2009 agora!
- 21:23 Listening to new Nickelback album for 11th time straight. Wow! #
Automatically shipped by LoudTwitter
A primeira foto tirada com o meu novo Nokia N95!
Ou melhor.. a primeira foto editada e panoramatizada tirada com o N95
.
- 11:28 ..back to work.. I prefer beach however
#
Automatically shipped by LoudTwitter
- 14:50 The next revolution in computing: "beer-to-beer networks"
#
Automatically shipped by LoudTwitter
- 13:20 Dúvida difícil.. Erdinger vs Baden Baden vs Guinness vs Paulaner vs Franciskaner…. #
- 15:47 Depois de alguns anos sonhando, finalmente to com um N95!! Éééééé!!
#
Automatically shipped by LoudTwitter
- 09:51 @lordspy eu acho que é só na Rússia que existe ICQ ainda. Nenhum outro IM tem nem 1% de popularidade dele lá.. #
- 12:13 os.path.exists(self.path) or (not really and self.suffix and os.path.exists(self.path + self.suffix)) . não parece, mas é python. meu deus.. #
- 14:20 Results of hard work: git diff master..work|diffstat -> 4 files changed, 1779 insertions(+), 1705 deletions(-) #
- 14:47 Revolution Renaissance new cd! tinyurl.com/4z874m #
Automatically shipped by LoudTwitter
Perl would be Voodoo – An incomprehensible series of arcane incantations that involve the blood of goats and permanently corrupt your soul. Often used when your boss requires you to do an urgent task at 21:00 on friday night.
huauhahahahaha
- 12:41 autofs, autofs.. bem que você podia colaborar mais um pouco comigo… #
- 13:55 while true; do xset led; sleep 1; xset -led; sleep 1; done – árvore de natal
# - 21:45 aprendi autofs hoje.. nunca precisei usar ele antes na vida. Mas nada como ir a fundo para investigar um bug
. # - 23:49 3d acceleration do Virtualbox 2.1 realmente funciona!!! Inacreditável!! #
Automatically shipped by LoudTwitter
- 23:22 ..eu achava que era difícil escrever código ilegível em python.. até ver o código do msec… #
Automatically shipped by LoudTwitter
- 20:16 Depois de 9 meses de buscas, finalmente encontrei para vender a melhor cerveja do mundo – Guinness! Por R$ 8.90!! Life is good again!
# - 22:35 @lordspy em botucatu.. tinha visto também em outros lugares, mas não por esse preço. Deu até vontade de levar o estoque inteiro
. # - 23:17 …there is life after glibc 2.9 upgrade… #
Automatically shipped by LoudTwitter
- 09:46 @lordspy tem Mashina Vremeni e Akvarium.. outras bandas começaram em 1980 ou 1981 (alisa, ddt, kino, piknik, chizh, aria, krematorii..). #
- 23:39 (sabedoria antiga) programar com alcool no sangue é bom.. mas tem que fazer commits periódicos, senão depois de ver o código.. ai ai..
#
Automatically shipped by LoudTwitter
Atualizei o wordpress para 2.7. A interface de administração melhorou MUITO. Vamos ver se tudo continua funcionando.. hehe
Ultimamente eu uso bastante programação funcional em python para tudo. Entretanto, fiquei brincando hoje e descobri que nem sempre ela oferece os melhores resultados.
Por exemplo, vamos imaginar a função que vai fazer todas as combinações entre os elementos de uma lista. Ela pode ser escrita de forma funcional:
# permutate-func
def permutate(l):
'''Returns all possible combinations of list values'''
return reduce(lambda x, y: y + x, [ [(x, y) for y in l if x != y] for x in l ])
ou de forma iterativa:
# permutate-iter
def permutate(l):
'''Returns all possible combinations of list values'''
res = []
for x in l:
for y in l:
if x != y:
res.append((x, y))
return res
Para listas pequenas não temos muita diferença de desempenho. Agora para listas maiores (por exemplo, com 1000 strings):
dups=['string%d' % x for x in range(1000)]
permutate(dups)
temos os seguintes resultados para programação funcional:
# time permutate-func
real 0m24.494s
user 0m20.763s
sys 0m1.698s
e os seguintes para o algoritmo iterativo:
# time permutate-iter
real 0m1.191s
user 0m1.150s
sys 0m0.036s
O tempo de 24 segundos caiu para apenas 1 segundo!
Qual conclusão tiramos disso? Embora programação funcional é extremamente poderosa, em alguns casos é melhor usar outras soluções para o problema
.
Descobri mais uma utilidade para os decorators em python:
import threading
class Thread(threading.Thread):
def __init__(self, f):
threading.Thread.__init__(self)
self.run = f
@Thread
def func():
print "Hello world!"
func.start()
Jeito simples e eficientes para criar funções threadizadas.
Update: É possível otimizar esse código para não precisar escrever .start() na mão, e deixar as funções compatíveis com a sua versão não-threadizada:
class Thread(threading.Thread):
def __init__(self, f):
threading.Thread.__init__(self)
self.run = f
def __call__(self):
return self.start()
@Thread
def func():
print "Hello world!"
func()
Realmente, não tem jeito de habilitar cairo-lcd no firefox-nightly. O firefox (na sua versão atual) está usando funcionalidades de cairo que não foram integradas ao repositório oficial ainda.
Embora o 3.1 (e o 3.2a1) são MUITO mais rápidos que o firefox 3 comum, a aparence do firefox3 usando system-cairo dá de 10×0 neles.
Ahh que dúvida difícil.. Será que fico com o firefox lento+bonitinho, ou rápido+pouco legível??
Descobriremos nos próximos capítulos de Eugeni vs Firefox!
No dia 15 de março de 2009 (que já está chegando!) Iron Maiden estará em São Paulo novamente, em Interlagos.
A venda de ingressos começou ontem a meia-noite, e as 00:02 mais ou menos o meu já estava comprado.
E (obviamente) ele não foi o primeiro, mais ou menos umas 100 pessoas tinham comprado antes de mim já (pelo menos, o número de série no ingresso diz isso).
Agora só esperar…
Up the irons!










