Deprecated: Assigning the return value of new by reference is deprecated in /home/humberto/public_html/wp-settings.php on line 520

Deprecated: Assigning the return value of new by reference is deprecated in /home/humberto/public_html/wp-settings.php on line 535

Deprecated: Assigning the return value of new by reference is deprecated in /home/humberto/public_html/wp-settings.php on line 542

Deprecated: Assigning the return value of new by reference is deprecated in /home/humberto/public_html/wp-settings.php on line 578

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/humberto/public_html/wp-settings.php on line 18
Humberto Diógenes: hum blog

Feliz Dia da Toalha!

May 25th, 2009

Feliz Dia da Toalha!, upload feito originalmente por Humberto Diógenes.

Eu não podia deixar passar em branco o Dia da Toalha. Esta é minha singela homenagem ao meu autor predileto em língua inglesa: Douglas Adams.

A foto foi em cima do MacBook não só porque ele era fã de Macs, mas porque hoje também é o Dia do Orgulho Nerd! \o/

[]’s e saudações nerds a todos!

Ah, e para quem não conhece, aí vai o comecinho d’O Guia do Mochileiro das Galáxias.


Muito além, nos confins inexplorados da região mais brega da Borda Ocidental desta Galáxia, há um pequeno sol amarelo e esquecido.

Girando em torno deste sol, a uma distância de cerca de 148 milhões de quilômetros, há um planetinha verde-azulado absolutamente insignificante, cujas formas de vida, descendentes de primatas, são tão extraordinariamente primitivas que ainda acham que relógios digitais são uma grande ideia.

Este planeta tem - ou melhor, tinha - o seguinte problema: a maioria de seus habitantes estava quase sempre infeliz. Foram sugeridas muitas soluções para esse problema, mas a maior parte delas dizia respeito basicamente à movimentação de pequenos pedaços de papel colorido com números impressos, o que é curioso, já que no geral não eram os tais pedaços de papel colorido que se sentiam infelizes.

E assim o problema continuava sem solução. Muitas pessoas eram más, e a maioria delas era muito infeliz, mesmo as que tinham relógios digitais.

Um número cada vez maior de pessoas acreditava que havia sido um erro terrível da espécie descer das árvores. Algumas diziam que até mesmo subir nas árvores tinha sido uma péssima idéia, e que ninguém jamais deveria ter saído do mar.

E, então, uma quinta-feira, quase dois mil anos depois que um cabeludo foi pregado num pedaço de madeira por ter dito que seria ótimo se as pessoas fossem legais umas com as outras para variar, uma garota, sozinha numa pequena lanchonete em Rickmansworth, de repente compreendeu o que tinha dado errado todo esse tempo e finalmente descobriu como o mundo poderia se tornar um lugar bom e feliz. Desta vez estava tudo certo, ia funcionar, e ninguém teria que ser pregado em coisa nenhuma.

N.T.: O original diz “um homem”. O “cabeludo” é liberdade poética minha.

Python como wget

February 12th, 2009

Inspirado por este e-mail, resolvi tentar escrever um `wget -r` em Python. Com a ajuda do BeautifulSoup, bastou meia-hora para chegar numa prova de conceito bem interessante…

#!/usr/bin/env python

"""
Proof-of-concept Python implementation for `wget -r`.

Downloads only what looks like files.
That is: it isn't really recursive (yet). :)
"""

from urllib import urlopen, urlretrieve
from urlparse import urlsplit
import sys
import os

from BeautifulSoup import BeautifulSoup

URL = 'http://humberto.digi.com.br'

print "Opening", URL, "..."
b = BeautifulSoup(urlopen(URL).read())

links = [a['href'] for a in b.findAll('a')]
internal = [l for l in links if l.startswith(URL)]

# urlsplit:
#
# (u'http',
#  u'humberto.digi.com.br',
#  u'/wp-content/uploads/2008/03/delimport.png',
#  '',
#  '')

site_name = urlsplit(URL)[1]
if not os.path.isdir(site_name):
    os.mkdir(site_name)
os.chdir(site_name)

def reporthook(*a):
    sys.stdout.write('.')

for url in internal:
    # Gets only the file path, stripping first '/'
    path = urlsplit(url)[2][1:]
    print path,
    if not path or path.endswith('/'):
        # Looks like a directory, skip
        print 'skip'
        continue
    # Replicate directory structure
    dirname, fname = os.path.split(path)
    if dirname and not os.path.isdir(dirname):
        os.makedirs(dirname)

    urlretrieve(url, path, reporthook)

    print "OK"

Esse artigo é dedicado ao FTP Offline [2001-2008] da Diginet, feito em PHP com wget.

Falando em podcasts…

October 13th, 2008

Descobri agora pelo twitter que o áudio das palestras da PyCon UK 2007 também está disponível:
http://www.pyconuk.org/community/Audio2007

Não chega a ser um podcast propriamente dito — é apenas uma página Wiki com links para os arquivos. Além disso, os arquivos são distribuídos em formato Ogg, que a Apple teima em não suportar no iTunes (mais um motivo pelo qual eu odeio o iTunes, mas isso é motivo para outro post). Pra poder ouvir no iPod, o jeito vai ser convertê-los com o Audacity.


Nota: Se você não leu meu artigo sobre podcasts, leia aqui.

“Escute podcasts.”

October 9th, 2008

Essa foi a dica de Bruce Eckel durante sua primeira palestra na PyCon Brasil 2008.

Para não adicionar apenas um “Concordo plenamente!”, eu resolvi fazer este artigo listando os podcasts que eu mais gosto e indicando apenas um episódio de cada, para tentar motivar os não-iniciados a, bem, iniciarem-se.

TED Talks

TED - Steven Johnson

“Idéias que merecem ser espalhadas.” Eu diria: idéias que precisam ser espalhadas. Uma reunião de mentes brilhantes e palestras idem.

É até injusto recomendar apenas uma palestra do TED. De qualquer forma, aí vai uma das que eu assisti mais de duas vezes:
Ken Robinson says schools kill creativity | Video on TED.com

Dica: para quem não entende bem inglês, é possível encontrar várias palestras legendadas no YouTube.

Um fator que deixa o TED ainda melhor é que as apresentações são limitadas em 20 minutos, o que obriga o palestrante a falar só o essencial e eleva a qualidade do evento. Algo semelhante é feito nas conferências de Python, chegando ao extremo de ter pelo menos uma hora dedicada às famosas palestras-relâmpago (de 5 minutos).

This Week in Photography

TWiP Logo

Assinar no iTunes. E se você não usa iTunes, baixe os episódios aqui.

O podcast mais bem produzido que eu já (ou)vi. Escrevo assim porque o formato de distribuição é misto: os episódios oficiais são apenas com áudio, mas há vários vídeos entre um e outro (demonstrações de equipamento, screencasts, etc.).

Outro ponto interessante é que eles se dão ao trabalho de dividir os arquivos em seções e adicionar imagens ao áudio (pois é, eu também não sabia que isso era possível!). As “show notes” também são excelentes, documentando quase tudo que foi discutido.

O uso que eles fazem da “web 2.0″ também é muito massa: não só há um blog bastante atualizado, como duas comunidades no Flickr (uma só para dar e receber critique) e “concursos” quinzenais no Photrade.com. Além disso, a maioria dos apresentadores está no Twitter, e as sugestões para o show devem ser enviadas usando a tag twipideas no Delicious.

Também difícil de recomendar apenas um episódio, já que eu comecei a ouvir há apenas dois meses e já escutei todos. Mas um vídeo que deve ser útil para muita gente é episódio 17, que explica qual a utilidade do histograma.

This Week in Tech

TWiT Logo

O podcast mais conhecido e mais ouvido. Dica de episódio: o mais novo que você encontrar!

FLOSS Weekly

FLOSS Weekly Logo

Entrevistas com os dragões do metal- digo, do software livre! O episódio 39 é com Simon Phipps, da Sun. A visão que ele tem sobre software livre vai além do software, tá ligado? :) Vale a pena ouvir.

Tem várias outras entrevistas boas, como a do criador do SQLite e a de um matemático holandês famoso por aí…

Menções honrosas

PyCon Podcast

http://advocacy.python.org/podcasts/

Uma idéia simples que eu achei genial: distribuir apenas o áudio das palestras, no formato de um podcast (um por semana). Já lancei a idéia tanto para o pessoal que produz os vídeos do FISL quanto na lista da PyCon Brasil. Vamos ver se cola…

Como eu citei na lista, eu não tenho paciência de assistir vídeos muito longos no computador, mas tendo as palestras em áudio eu vou ouvindo no carro e assim alivio meu sofrimento por não poder ir à PyCon em Chicago.

O único problema é que o áudio não foi gravado/tratado da forma correta, o que dificulta muito para ouvir alguns episódios.

Cranky Geeks

http://www.crankygeeks.com/

Nunca fui atrás da tradução de “Cranky”, mas para mim o show se chama “geeks ranzinzas”. Por quê? Basta dizer que é apresentado por John C. Dvorak, o jornalista mais ranzinza de todos os tempos.

Goste do que faz…

August 27th, 2008

…ou vá fazer o que gosta!

Assim eu resumiria este belo artigo de Vinicius Manhães Teles. Um trecho:

“Acredito que há poucas chances de ser realmente bem sucedido quando você não ama o que faz.”

E outro, que ressoa profundamente com o que eu penso e sinto:

“Fico muito triste quando vejo as pessoas fazendo concursos ou se candidatando para trabalhos que elas detestam, mas pagam razoavelmente.”

Enfim, leia.

O site da esposa dele (ex-algumacoisadecomputação e agora fotógrafa profissional) foi muito bem bolado, e também merece um acesso: www.patriciafigueira.com.br

Campanha BR-Linux

June 24th, 2008

O que você tem que fazer:

  1. Copiar o texto abaixo no seu blog.
  2. Inscrever-se no site da campanha (escolhendo o projeto Python Brasil, obviamente ;-).

E qual o resultado disso? Você concorre a vários prêmios e ajuda a multiplicar a doação que será feita aos projetos de Software Livre.

Ah, achei massa que o “programa” de sorteio também é software livre! :)

awk 'BEGIN {foo=srand()} {print rand()*10000,rand()*200,$0}' inscritos.txt | sort -n | nl


Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

Did you know…?

June 5th, 2008


# apt-get install vim-
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED
vim
0 upgraded, 0 newly installed, 1 to remove and 9 not upgraded.
Need to get 0B of archives.
After unpacking 1438kB disk space will be freed.
Do you want to continue [Y/n]?

Another example:

# apt-get install ruby- python
Reading package lists... Done
Building dependency tree... Done
Package ruby is not installed, so not removed
python is already the newest version.

;)

Integrados?

May 10th, 2008

Pense comigo: o Orkut é do Google. O YouTube também é do Google. O Orkut tem integração com o YouTube. Então, será que não está faltando algo nesta imagem?

YouTube - Share on Orkut... Not!

UPDATE (2008-06-07): Um mês depois… Consertaram! :P

YouTube - Adicionaram o Orkut

WSGI: a resposta para a questão definitiva sobre Python, a web e tudo mais?

April 23rd, 2008

Pessoal, publiquei minha palestra do FISL 9.0 no SlideShare:
Read the rest of this entry »

And the “Best Tool For del.icio.us Award” goes to… Spotlight!

March 13th, 2008

Well, not quite. It really goes to Ian Henderson’s delimport. Simply put, it imports all your del.icio.us bookmarks to (Mac OS X) Spotlight.

I already tried that before with Quicksilver, but it ended up getting in my way by polluting my search results: even if I wanted to just quickly launch some application (Firefox, for example), it would search through all my 2000+ bookmarks and show me all the Firefox-related ones.

delimport has some advantages:

  1. It tries not to pollute your results by updating the dates only when your reopen some URL; i.e.: as it doesn’t re-import everything every time it runs, old items are really seen as old items and are not shown in the results (they can be shown, but only if there’s nothing new).
  2. It sits in the background and imports only your new bookmarks every 30 minutes, consuming almost no CPU (you can confirm this by watching the logs in Console).
  3. It lets you search only in your del.icio.us bookmarks, through Leopard’s advanced search: if you type in Spotlight “ldap kind:del.” (without quotes), it will show you any saved bookmarks that have LDAP in their names or in their tags. You can use “kind:book” to include all your del.icio.us and Safari’s bookmarks.

You can even create Saved Searches like this:
delimport - small
And if you got interested in any of the themes in the above screenshot, you can find them and much more here. :)