1º Café com Tapioca de 2010

Essa quarta-feira acontece o primeiro CEJUG Café com Tapioca de 2010.

O foco serão duas palestras ministradas pelo José Donizetti da Caelum, sendo a primeira sobre VRaptor 3 e a segunda sobre Test Driven Development.

O evento será realizado no auditório do Atlântico.

Maiores informações no site do evento.

Perigeu Lunar de 2010

Hoje devido a Lua ter chegado ao perigeu da órbita com a Terra coincidentemente na noite de lua cheia, tivemos uma lua 14% maior e uma luminosidade 30% maior.

Eu já havia tentado tirar fotos da lua diversas vezes, sempre frustradas. Hoje consegui fotos com uma qualidade mínima, onde se pode distinguir alguns das principais montanhas, crateras e mares da Lua. São fotos a partir de algumas tentativas da janela do meu quarto, sem nenhum equipamento especial além da própria câmera, Canon PowerShot G10.

lua

lua

Essa é uma das fotos, passando por um aumento do contraste no Gimp:

lua

O restante das fotos estão neste álbum no Flickr.

Eu achei um bom mapa lunar e destaquei sobre a foto alguns lugares que foram possíveis distinguir na foto.

Algumas dicas para tirar uma boa foto da lua Canon PowerShot G10:

  • Manter ela bem parada, num apoio ou tripé.
  • Sem flash.
  • Colocar ela no modo manual.
  • Ajustar de exposição do obturador para 1/200 ou menos.
  • Colocar o Zoom ótico em 5X.
  • Colocar a resolução da foto no máximo, 14.7 megapixels.
  • Ajustar a focagem manual para o mais distante possível.

Contando Algarismos Em Um Intervalo

Quantos zeros tem entre um e mil?

É mais fácil responder perguntas desse tipo escrevendo pequenos programas usando o suporte a programação funcional e compreensão de lista que algumas linguagens como Python oferecem.

Para contar os zeros de um número, transformamos ele em uma string e contamos quantas substrings ‘0′ ele contém. Por exemplo o 800:

str(800).count('0')
# 2

Para gerar uma lista ordenada com os elementos do intervalo entre um e mil, inclusive os valores um e mil:

xrange(1,1001)
# [1, 2, ... , 999, 1000]

Pegamos esse intervalo  e geramos uma outra lista onde cada elemento é a contagem dos zeros do número do intervalo.

[str(x).count('0') for x in xrange(1,1001)]
# [0, 0, ... , 0, 3]

Por exemplo, 1 não tem nenhum zero. Dois também não. 999 também não. 1000 tem três.

Somamos todos os elementos da lista temos o número de algarismos zero entre um e mil.

sum([str(x).count('0') for x in xrange(1,1001)])

E a resposta é 192.

O mesmo poderia ser obtido contando quantos zeros há na representação de string da lista do intervalo.

str(range(1,1001)).count('0')

Mas essa abordagem apesar de menor é menos geral se você quiser modifica-la para contagens mais complexas.

A diferença do range pro xrange é que o range constrói a lista real do intervalo real em memória e o xrange uma representação da lista do intervalo. Em geral mas não sempre, a performasse do xrange é melhor.

De toda forma, em ambos os casos, o resultado é o mesmo.

pés no paraíso

Gostei dessa minha foto (tamanho original). Ficou com uma boa composição, dois planos, no plano da frente meus pés deitados na rede, o que dá uma sensação de imersão para o observador para se sentir no meu ponto de vista. No plano de fundo vários elementos, cada um contando uma história diferente, um cara jogando frescobol, uma jangada velejando, alguém remando num caiaque, uma menina nadando e um menino no raso fazendo uma onda. No meio disso a gradiente entre a água cristalina e o fundo azul. Não dá pra ver mas a rede fica armada entre dois coqueiros dentro da água.

Fotografia feita numa Canon Powershot G10, na Lagoa do Paraíso, perto de Jericoacoara, Ceará. Livre sobs os termos da Creative Commons Atribuição-Compartilhamento pela mesma Licença.

Miojo Script

O pre-requisito é o notify-send, um utilitário de linha de comando do libnotify. No Ubuntu:

sudo aptitude install libnotify-bin

E aqui o script em si:

sleep 5m; notify-send "aviso" "tirar o miojo do fogo"

Pronto, depois de cinco minutos isso vai aparecer:

Easily Sortable Date and Time Representation

I was looking for a date and time representation useful for registering stock quotes in a simple plain file.

I found that the standard ISO 8601 is just the answer for this, it’s called “Data elements and interchange formats — Information interchange — Representation of dates and times”. Here is a example:

2010-01-20 22:14:38

There’s this good article from Markus Kuhn, “A summary of the international standard date and time notation”. This notation allow us to using simple lexicographical order the events.

Some examples of how to do this in Python (thanks for the Jochen Voss article “Date and Time Representation in Python”) The first for displaying the current date and time:

from time import strftime
print strftime("%Y-%m-%d %H:%M:%S")
# 2010-01-20 22:34:22

Another possibility is using strftime from datetime object.

from datetime import datetime
now = datetime.datetime.now()
print now.strftime("%Y-%m-%d %H:%M:%S")
# 2010-01-20 22:12:31

Is that. Using this notation in the begging of each line is easy to sort them in any language or using the unix sort.