Assisti esse curta-metragem e recomendo, conta um pouco da história do mítico atacante do Íbis, Mauro Shampoo.

Show!

Mauro Shampoo – Jogador, Cabeleireiro e Homem. 
Diretor: Leonardo Cunha Lima, Paulo Henrique Fontenelle
Ano: 2005
Duração: 20 min
Link: http://portacurtas.org.br/filme/?name=mauro_shampoo_jogador_cabelereiro_e_homem

Essa semana estava lendo a Linux Magazine e vi uma matéria sobre um programa bem interessante, acho que o título da matéria era “Script Gráfico”.  Essa matéria refere-se a um programa chamado Project Sikuli que ainda está versão beta. Pelo pouco que li é um projeto de pesquisa do MIT Computer Science and Artificial Intelligence Laboratory (CSAIL)

Bem, acho que o título da matéria da LM fala tudo, usando o Sikuli é possível automatizar tarefas utilizando screenshots. Algo que chamou a atenção também é que o Sikuli usa Jython 🙂
No site do projeto há um vídeo de demostração – usando o MacOS –

mas o uso dele é bastante simples, se você precisa que seu script clique em algum local, basta escrever click e especificar com screenshot o local.  Aconselho dá uma olhada na documentação do projeto.

Bem, acho que é isso é tudo bem intuitivo. Get Started !

PS.: Eu precisei instalar a biblioteca libcvaux2.1, mas talvez você tenha que instalar o java 6 caso não tenha instalado.

Rodrigo Lira

It’s working!

Há vários blogs e sites na web que mascaram a URL de algum download com o intuito de lhe vender ou fazer cadastrar em alguma promoção “imperdível”. No inicio isso dava para ser ignorado já que a própia URL da promoção/cadastro contia o destino desejado. Algo como:

http://www.promocaoimperdivel.com.br/?url=http://www.megaupload.com.br/uasdD

Bastava copiar e colar.

Bem, o problema é que a galera hoje em dia está se usando tática de guerra. A URL do destino não está  tão fácil como era antigamente.

Hoje:

http://www.promocaoimperdivel.com.br/?url=Ddsau/rb.moc.daolpuagem.www//:ptth

Qualquer pessoa consegue notar que o destino foi invertido,  reinverter – ou desinverter – a url é necessário. Eu mesmo sempre fazia esses passos

  1. Buscava no google “inverter, desinverter url” – mais rápido que print url[::-1].
  2. Entrava nesse site.
  3. Colava a url invertida.
  4. Clicava lá em “Inverter URL” e pronto.

Bem para mim era algo simples mas chato. Então resolvi hoje colocar a mão na massa e usar o Google App Engine para fazer o meu próprio reinvertedor. O que muda nele é que algumas dessas etapas foram retiradas. Vamos dizer que a época do ctrl+c e ctrl+v na URL voltou.

O funcionamento é  bem simples.

Por exemplo se fulano quisesse reinverter esse caminho /tp/lisarb/gro.ecaepneerg.www//:ptth

Basta digitar no browser o site da aplicação e colocar a url

http://reinverta.appspot.com/?url=/tp/lisarb/gro.ecaepneerg.www//:ptth

Ou seja, fazer uma requisição ao site, passando no argumento url o site a ser reinvertida. Logo após isso, o que vai acontecer é que fulano já seria redirecionado para a URL sem ter que fazer mais nada.

O código é muito simples, basicamente tudo acontece entra as linhas 6 e 8.

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
	def get(self):
		url = self.request.get('url')
		if url:
			self.redirect(url[::-1])
		else:
			pass # Mostrar pagina estatica

application = webapp.WSGIApplication([('/',MainPage)],debug=False)

def main():
	run_wsgi_app(application)

if __name__ == "__main__":
	main()

Fica ai a dica.

http://reinverta.appspot.com/?url=COLOCAR-URL-A-SER-INVERTIDA

Ahh, por enquanto não está criada a página estática que permitiria reinverter da forma tradicional mas em breve isso vai está funcionando.

Python possui o módulo fractions que permite a manipulação de aritmética de racionais de uma forma bastante simples,como pode ser visto nos exemplos a abaixo

>>> from fractions import Fraction
>>> x = Fraction(2,21)
>>> x
Fraction(2, 21)
>>> y = Fraction('4/28')
>>> y
Fraction(1, 7)
>>> y+2
Fraction(15, 7)
>>> x*3
Fraction(2, 7)
>>> x+y
Fraction(5, 21)
>>> Fraction('-.25')
Fraction(-1, 4)
>>> Fraction('-.25')**2
Fraction(1, 16)

O construtor de Fractions pode receber um outro Fraction, um float, ou
um decimal(módulo decimal) além dos utilizados acima. Nesse mesmo módulo, fractions, há uma função para calcular o Máximo Divisor Comum (mdc) entre dois números.


>>> from fractions import gcd
>>> gcd(147,105)
21
>>> gcd(25,35)
5
>>> gcd(7,3)
1
>>> gcd(348,156)
12

Para quem tem muitas contas de e-mail, o Gmail permite utilizar o recurso “De:”, com ele fica fácil manusear várias contas. Esse recurso permite o Gmail envie mensagens utilizando um dos seus outros endereços de e-mail listados como remetente, no lugar do seu endereço original.
A ativação desse recurso é bem simples:

Em Configurações, escolher a opção Contas e Importação.

Em Enviar e-mail como: clique no botão Enviar e-mail de outro endereço

Após seguir algumas etapas você poderá enviar e-mail pelo Gmail de uma conta externa.

Ontem estava brincando com web2py e numa certa altura do código era necessário criar uma lista com os nomes dos meses para ser uma restrição ( ver IS_IN_SET() )no campo mês de uma tabela do banco de dados.

Claro que podia simplesmente criar uma lista normalmente

['janeiro','fevereiro', ... ]

Levante a mão quem já teve problema em decorar a ordem o

Como seria chato escrever um por um resolvi procurar na biblioteca padrão de Python algum módulo que pudesse já ter isso pronto. Já que Python tem até o módulo coffee e antigravity porque não teria algum com os meses do ano?

Procurei primeiramente em datetime mas não encontrei nada relativo aos meses do ano, por sorte eu já tinha utilizado a calendar anteriormente para saber se um ano é bisexto ( ver calendar.isleap ) e foi nela que encontrei o calendar.month_name que como a documentação revela

An array that represents the months of the year in the current locale.
This follows normal convention of January being month number 1, so it has a length of 13 and month_name[0] is the empty string.

Então vamos lá

>>> import calendar
>>> calendar.month_name
<calendar._localized_month instance at 0xb7c8952c>
>>> type(calendar.month_name)
<type 'instance'>

Ok, não criemos pânico. A documentação diz que é é um array então

>>> calendar.month_name[2]
'February'
>>> [mes for mes in calendar.month_name]
['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

We no speak americano!

Aqui sim há um problema, os meses estão em inglês mas eu quero em português.

Como já tinha visto algo parecido com ASP.NET  The Dark Side, lembrei de dá uma olhada no módulo locale.

>>> import locale
>>> locale.getdefaultlocale()
('pt_BR', 'UTF8')
>>> locale.getlocale()
(None, None)
>>> locale._print_locale() # omiti o retorno da função
...

Realmente o problema era com o locale, na documentação encontrei a explicação para esse problema.

Initially, when a program is started, the locale is the C locale, no matter what the user’s preferred locale is. The program must explicitly say that it wants the user’s preferred locale settings by calling setlocale(LC_ALL, ”).  doc do locale

Ainda bem que ele explicou a solução, então vamos mudar.

>>> locale.setlocale(locale.LC_ALL,'')
>>> [mes for mes in calendar.month_name]
['', 'janeiro', 'fevereiro', 'marxc3xa7o', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']

Finalizando ficou assim

>>> [mes.capitalize() for mes in calendar.month_name if mes]
['Janeiro', 'Fevereiro', 'Marxc3xa7o', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']

Essa semana vi no Trendy House Pepsi um post sobre o gif animado do Star Wars Episode 4 a New Hope (direita) imediatamente lembrei de já ter visto esse mesmo episódio num formato assim… no mínimo alternativo.

Já tinha visto algumas imagens “desenhadas” apenas com os caracteres ASCII, há até programas como o Ascgen e sites como o Glass Giant que fazem a conversão, mas animação em ASCII foi a primeira vez. Star Wars em ASCII é realmente algo impressionante, pela riqueza de detalhe, pelo quão desoculpado gênio o criador foi na confecção desse longa.

Princesa Leia e C3PO

Além do site há a opção de assistir via telnet no terminal. É bem simples…

Já no terminal digite o comando “telnet towel.blinkenlights.nl” sem as aspas, depois é só preparar a pipoca porque o filme é realmente longo.

Rodrigo Lira

As vuvuzelas estão sendo alvo de muita discussão nessa Copa da África. Além das várias reclamações dos narradores e comentaristas sobre o barulho ensurdecedor nos estádios, o som das cornetas africanas têm incomodado os telespectadores em todo o mundo – BBC avalia hipotése de diminuir o som ambiente .

Como o presidente da FIFA já afirmou, as vuvuzelas estão liberadas, então se você quer se juntar a essa barulheira mas não tem uma, experimente a virtual !

Rodrigo Lira

Encontrei esse post bem legal no Blog Jedizone do Marcelo Barros. Aproveito a oportunidade para usar essa nova função de reblogar do WordPress.

Introdução ao desenvolvimento de drivers para Linux O Alan me passou o link sobre um curso de introdução ao desenvolvimento de drivers para Linux e eu estou aqui republicando. O material é de Artur D’Assumpção, de Portugal, e é realmente muito bem feito. Ele refaz o clássico exemplo do driver tipo char para porta paralela mas acrescentando detalhes e explicações que acabam por tornar o exemplo muito mais real, além de uma grande discussão sobre vários mecanismos do kernel. Leia mais

via Jedizone