Cinco filmes sobre matemática que você deve ver.

Um dos posts mais populares do Zeletron é o dos cinco filmes que os amantes da tecnologia devem ver, e agora faço uma compilação pessoal do top5 em termos de matemática para você ter algo para ver hoje a noite 🙂

5) Moneyball (2011) – O homem que mudou o jogo
Usar estatística para vencer uma campeonato de Baseball? Não qualquer campeonato de baseball, mas a MLB. O treinador Billy Beane assume um risco ao contratar o matemático Peter Brand como seu assistente e aplicar um método matemático num esporte que sempre foi dominado por olheiros e pessoas com intuição. Será que o Oaklands A vai se sair bem com isto?

Grande filme e ótimo elenco.

4) I.Q. (1994) – A fórmula do amor

Um filme com Albert Einstein, Kurt Gödel e Boris Podolski, três gênios, que não conseguem trocar uma lâmpada. Este pode ser um breve descritivo para esta bela comédia romântica com Tim Hobbins e Meg Ryan. Não é 100% sobre matemática, mas vai fazer você se divertir.

3) 21 (2008) – Quebrando a banca
Baseado na história real de alguns estudantes do MIT que usando técnicas estatísticas, encontraram uma maneira de ganhar dinheiro no único jogo que apresenta uma fragilidade para os cassinos, o Black Jack ou 21. Baseado no livro “Bringing down the house”.

Eu conheci uma pessoa do MIT que disse que este esquema segue até hoje e que ele tinha participado dele durante algum tempo e que o filme é bem realista.

2) A Beautiful Mind (2001) – Uma mente brilhante

A vida do matemático, prêmio nobel de economia e desequilibrado mentalmente por uma grave doença, John Nash. Ganhador de Oscars e espetacularmente produzido é além disso uma história real.

A idéia de escrever no vidro com caneta de retroprojetor eu adotei desde aquela época para o desespero do pessoal da limpeza do trabalho.

1) Good Will Hunting (1997) – Gênio indomável

Matt Damon e Robin Williams fazem desta história, que mostra um rapaz genial que trabalhava como faxineiro no MIT, um dos grandes vencedores do Oscar. Há o lado humano, do rapaz que é genial, mas problemático que dá o grande toque de qualidade no filme. O seriado do Youtube Numberphile tem um episódio sobre a solução do problema do filme.

Gênio Indomável
Você sentiu falta de algum nesta lista?

Comprimindo arquivos PNG de forma eficiente

Quando precisamos de transparência numa imagem, usamos o PNG. O problema é que as imagens em PNG, se comparadas com as em JPG, são muito grandes, o que acaba, às vezes, inviabilizando o uso do formato para imagens grandes na Web.

A solução para conseguir uma imagem com transparência e com um tamanho mais adequado, é usar alguma compressão com perda de qualidade, mas que seja quase imperceptível, como o JPG.

Até hoje, eu usava um site chamado tinypng.org (O famoso pandinha) no qual é possível fazer upload de até 20 arquivos PNG de até 3MB cada e baixar as versões comprimidas dos arquivos. A taxa de compressão geralmente fica entre 40% e 60%, dependendo da imagem. É rápido e fácil. Arrastar e soltar as imagens e ele já faz upload e comprime.

Hoje precisei otimizar uma imagem de 3.5MB e não consegui, porque o site não permite uploads desse tamanho. Procurando por soluções semelhantes, esbarrei num programa chamado ImageOptim, que parecia ser muito bom, mas além de ser muito lento, não chegava nem perto da compressão do pandinha.

Depois de muita busca, consegui encontrar o programa que o pandinha usa para comprimir as imagens, chamado pngquant, só que ele é um programa para linha de comando. Para as pessoas aversas a usar linha de comando, existem interfaces para o pngquant tanto para Windows quanto para Mac.

Para os usuários de Mac, o programa é o ImageAlpha (http://pngmini.com)

Para os usuários de Windows, o programa é o Pngyu (http://nukesaq88.github.io/Pngyu/) ele também tem uma versão para Mac, mas ainda não testei.

Sugestão de Leitura: Prime Obsession

Existem livros que apesar de falarem de coisas bastante sofisticadas são muito agradáveis de ler e Prime Obsession é um deles.

Neste livro, John Derbyshare, conta a saga inacabada da busca do que é talvez o maior problema aberto na matemática e para o qual há um prêmio de US$ 1.000.000,00 para quem resolver: a Hipótese de Riemann.

Eu confesso que antes de ler o livro sabia muito pouca coisa sobre a Hipótese de Riemann (HR), mas o autor consegue com muita didática ir conduzindo o leitor passo a passo pelos labirintos matemáticos para que qualquer pessoa, ainda que sem formação matemática possa compreender a natureza do problema.

A HR diz que a função zeta de Riemann tem todos os zeros não triviais com parte inteira igual a 1/2.

E eu com isso, poderia dizer o leitor. A hipótese de Riemann além de ser uma excelente ferramenta para entender o comportamento dos números primos é o fundamento de muitas descobertas matemáticas, prová-las significa provar muitas outras coisas em consequência e refutá-la significa derrubar por terra vários outros resultados.

Além de agradável leitura, Prime Obsession leva o leitor a descobrir a era romântica da matemática, saindo de Leonard Euler, passando por Gauss, Riemann e vários gigantes que revolucionaram o campo nos séculos XVIII, XIX e XX.

Se você quiser dar um voto de confiança para este escriba aqui, leia este livro. Garanto que não se arrependerá.

Na Amazon: Prime Obsession: Bernhard Riemann and the Greatest Unsolved Problem in Mathematics

Na Livraria Cultura: Prime Obsession

Prime Obsession: Resenha

 

NOTA: A função zeta de Riemann é:

ζ(s) = 1 + 1/2s + 1/3s + 1/4s + ..

CAPTCHAS eficientes e CAPTCHA ruim

Não se preocupe se você não sabe o que significa CAPTCHA. Na prática, são aquelas letrinhas embaralhadas que quase todo formulário de cadastro ou votação online têm.

E para que serve aquele negócio que atrasa a nossa vida?

Serve para impedir que um computador consiga preencher o formulário sozinho, uma vez que ele não vai conseguir entender aquelas letrinhas dentro da imagem. Isso impede que robôs enviem milhares de mensagens ou votem milhões de vezes numa pesquisa online.

Quanto mais embaralhadas forem as letras na imagem, melhor.

Ah, e precisa ser uma imagem, porque se for texto, o computador não faz nem esforço, como é o caso do site de uma das maiores operadoras de telecomunicações do Brasil, que coloca os números do CAPCHA em texto, e ainda coloca os dados na página escondidos num campo “hidden”! Isso não dura 1 segundo na mão de um script feito por um garoto de 10 anos.

Você está fazendo isso errado...

Não vou dizer qual foi a operadora, mas acho que você consegue descobrir. 😉

Outra maneira interessante de fazer um CAPTCHA é exibir uma pergunta simples, mas em linguagem natural, por exemplo:

  • Qual é o triplo de dois?
  • Quais são as vogais da palavra piauiense?
  • Quanto é dois mais sete?
  • A palavra travesseiro começa com qual letra?

Se você tiver uma lista grande de perguntas como essas, e for exibindo de forma aleatória, isso funciona da mesma forma que as imagens do CAPTCHA.

Atualmente o CAPTCHA mais usado por aí se chama reCAPTCHA, inventado por um sujeito chamado Luis von Ahn, que descobriu uma maneira muito simples de pessoas irem convertendo livros digitalizados em texto e ainda fazer isso servir como CAPTCHA.

Como funciona? Há um projeto grande de digitalizar jornais muito antigos e convertê-los em texto através de OCR. O problema é que algumas partes do texto ficam ilegíveis para o OCR e a tradução dessas palavras de imagem em texto sai errada. Veja abaixo:

sample-ocr

Nós conseguimos perfeitamente identificar o texto “This aged portion of society were distinguished from”, mas o computador não. Dessa forma, o que ele faz é partir a imagem do texto em palavras e exibir para as pessoas traduzirem aquilo para texto, no CAPTCHA.

recaptcha

Agora, se ele não sabe o que significam as palavras, como ele faz para saber se você digitou certo as palavras da imagem?

Por esse motivo ele sempre coloca duas imagens juntas. De uma ele sabe o significado, da outra não. Se você acertar uma, provavelmente tentou acertar a outra. Quando um número X de pessoas disse a mesma coisa para aquela palavra, ele guarda aquilo como o texto referente àquela palavra.

E assim vão digitalizando jornais e livros antigos…

Fica aqui uma dica para o sujeito que fez o site da operadora de telefonia: O reCAPTCHA é gratuito e funciona 10 mais 11 vezes melhor do que o seu CAPTCHA feito em texto. 😉

Como fazer render seu tempo na Internet

A Bia Kunze do blog Garota Sem fio faz hoje alguns comentários interessantes de como ela faz para aproveitar o tempo online.

Faça seu tempo na internet render

O dia de todos nós tem apenas 24h. Mas para uns parece que rende mais que para outros, não? É mais fácil do que parece: basta racionalizar o tempo…

  • Nunca leio na hora links que chegam para mim durante o trabalho, seja por emails ou redes sociais. Só abro, vejo o que é e se achar interessante, salvo para mais tarde.
  • Meu laptop diz a o horário em voz alta nas horas cheias. Se estou me dispersando, tomo de volta o prumo.
  • Uso apps de timers, e botar em contagem regressiva o tempo que você quer passar na internet.
  • Durante trabalhos de criação e estudo, corto a internet. Não, não é só fechar o navegador. É desligar a conexão mesmo! Notificações são uma praga — farei um post aprofundado só sobre isso.

Essas dicas podem à primeira vista soar como uma prisão. Questão de ponto de vista. Pra mim é liberdade. Sobra mais tempo para as coisas que gosto de fazer fora do mundinho online e curtir as pessoas que amo.

Eu também descobri que algumas técnicas como estas funcionam. Uma que descobri recentemente é um editor chamado iA Writer que tem uma versão para iOS também e que ajuda a escrever sem distração.

O que você faz para aumentar sua produtividade on-line?

ia-writer

Seu Windows 7 não liga? Leia isto antes de sair formatando.

Se você instalou a atualização KB2823324 e seu Windows 7 é em português do Brasil e 32-bit provavelmente ele não estará ligando. Concordo que a lambança foi grande e vai rodar muita gente na Microsoft (será que o erro foi no Brasil?) pelo erro.

Mas tem conserto, tanto que eles colocaram na home da Microsoft Brasil este aviso.

Em 10 de abril de 2013 tomamos conhecimento que alguns usuários enfrentaram dificuldades após aplicarem o update de segurança Windows 7 KB2823324.

Observação 1: Não formate o seu computador para não perder os dados. Os passos abaixo fazem a restauração do sistema.
Observação 2: Essa página será atualizada sempre que surgirem novas alternativas para solução deste problema.

Essa comunicação tem como objetivo corrigir a falha de inicialização que possa ser causada após a instalação da atualização de segurança KB2823324.

Durante o processo de inicialização da máquina, uma das seguintes mensagens de erro pode aparecer:

Mensagem de Erro 1

STOP: c000021a {Fatal System Error}
The Session Manager Initialization system process terminated unexpectedly with a status of 0xC000003a (0x00000000 0x00000000).
The system has shutdown.

Mensagem de Erro 2

O Windows não foi iniciado com êxito. Uma alteração recente de hardware ou software pode ter causado o problema. Para corrigir o problema:

  1. Insira o disco de instalação do Windows e reinicie o computador.
  2. Escolha as configurações do seu idioma e clique em “Avançar”.
  3. Clique em “Reparar o seu computador”.

Se você não tiver o disco, entre em contato com o administrador do sistema ou fabricante do computador para obter assistência, ou entre em contato com a Microsoft.
Status: 0xc000000e
Informações: A seleção da inicialização falhou porque um dispositivo necessário está inacessível.

SOLUÇÃO

Basicamente é bootar em modo de segurança com prompt de comando e entrar o comando:
dism /image:C:\ /cleanup-image /revertpendingactions

Onde C: é o seu HD do Windows.

Se precisar de mais detalhes siga o guia da Microsoft: http://www.microsoft.com/brasil/resolucao/

KB2823324 epic fail

Acelerando o emulador de Android no Mac e no Windows

Executar o emulador de Android no Mac em qualquer sistema operacional é terrível.

Você abre o programa, espera, espera, espera, espera, espera, espera, espera, espera, espera, espera, espera, espera, …….(parece que vai abrir)……, espera, espera, espera, espera e ele abre. Aí manda ligar, espera, espera, espera, espera, espera, espera, espera, espera,… Bom você já sabe, né?

Procurando uma solução para isso, encontrei esse post aqui, que fala como resolver o problema para o 4.0.3, mas funcionou para mim também com o 4.2.2.

Os passos a seguir são para o Mac, mas funcionam também para o Windows com algumas mudanças.

Passo 1

Abra o Android SDK Manager e procure por “Intel Atom x86 System Image” dentro de Android 4.X.X.
Obs.: Também tem um dentro de 2.3.3 se você quiser testar no Gingerbread também.

Passo 2

Faça o download do “Intel Atom x86 System Image” e espere terminar de instalar.

Passo 3

Vá para a pasta /extras/intel/Hardware_Acceleration_Execution_Manager/ e abra o arquivo haxm-macosx_r02.dmg (IntelHaxm.exe no Windows). Dentro dele há um IntelHAXM_1.0.1.mpkg. Execute o programa.

No Windows, se o programa reclamar que a virtualização não está ativada. Você vai ter que ativá-la na BIOS do seu computador (Procure no Google como ativar para a sua BIOS).

Passo 4

Siga os passos do instalador e escolha a quantidade de RAM que você deseja reservar para o emulador. Para mudar isso depois, basta executar esse instalador novamente. Não abuse desse valor para não deixar seu Mac lento enquanto estiver usando o emulador.

Passo 5

Feche o Android SDK Manager e abra-o novamente. Isso não tem no tutorial original, mas comigo só funcionou depois de fazer isso.

Passo 6

Abra o AVD Manager e crie um novo Device.
Escolha “Android 4.X.X – API Level XX” (onde XX corresponde à sua versão instalada).
Na parte de CPU/ABI, escolha “Intel Atom (x86)”
Marque o checkbox “Use Host GPU”
Deixe desmarcado os “Snapshots”. (Ou você usa Snapshots ou a GPU).

Passo 6

Use o emulador e seja feliz.

Passo 7

Use o tempo livre que você acaba de ganhar para fazer algo de útil ou ajudar alguém. 🙂

Estimando distâncias com a câmera do celular.

Aqui vai uma dica para você que precisa defender o seu cliente de snipers, há outras utilidades também, mas esta e a mais legal que consegui pensar agora.

O problema que queria resolver no fim de semana enquanto fazia uma corrida era: será que daquele prédio um sniper consegue me acertar? Qual a distância? Obviamente a pergunta é retórica, mas serve para ilustrar um problema interessante: estimar distâncias.

Quando eu era garoto meu pai me ensinou a estimar o horário usando apenas o dedo e a palma da mão e isto foi uma habilidade que me ajudou em mais de uma ocasião. Estimar distâncias usa princípios similares, mas se você tem um celular e photoshop fica mais fácil.

O princípio é o de distância angular, que no nosso caso pode ser simplificado conhecendo o tamanho de um objeto a uma distância que temos o valor, no meu caso um muro de 1,68m a 6m de distância. E conhecendo o tamanho de um objeto a distância que queremos estimar, no meu caso a altura de um andar de prédio que tipicamente pode ser 3m.

MilMoaTutorial4-5cm

 

MilMoaTutorial4-5cm-2

 

Uma aproximação rápida neste caso pode ser feita usando a seguinte regra de três:

A 6 m de distância.

851px / 168cm = 5.065 px/cm

A x metros de distância

24px / 300cm = 0.08 px/cm

Logo:

x = 6 * 5.065 / 0.08 = 379.5m

Medindo a distância no mapa podemos ver que acertamos com bastante precisão.

MilMoaTutorialMap

 

Se levarmos em conta o desnível entre o ponto “alvo” e o ponto de observação o valor chega muito mais próximo da estimativa que fizemos com a câmera.

Se você gostou do assunto, sugiro as seguintes leituras:

Uma brincadeira inteligente de primeiro de Abril

Hoje quando você abre o Bing.com percebe que alguma coisa está esquisita.

Bing 1o de Abril

 

Pois é. Esta estátua está rindo. E de acordo com o movimento do mouse ela fica séria e ri de novo. Mas ainda não é a pegadinha. Se você digitar google no campo de busca e der enter vem a página a seguir:

Bing zoando o Google

 

Eu que não gosto muito das piadas do Google com primeiro de Abril, achei esta legal.

Portando para o Python 3

Em 2008 foi lançada a versão 3 da linguagem Python com diversas funcionalidades novas, mas parcialmente incompatível com os programas feitos para Python 2. Nestes 5 anos, a adoção ainda não é grande exatamente por causa deste fator e porque normalmente as pessoas não querem ter que aprender os detalhes que são necessários para essa mudança.

Hoje em dia existem diversas ferramentas que permitem desenvolver software que seja compatível com as duas versões, mas para isso é preciso entender o que mudou e adaptar. Este é será um guia rápido com dicas para migrar para Python 3 e aproveitar as melhorias que essa nova versão traz.

Parte I – Quando migrar

Por causa da incompatibilidade que existe, muitos desenvolvedores não podem começar a migração pois dependem de diversas bibliotecas que ainda não fizeram sua parte. Hoje em dia, grande parte das bibliotecas mais importantes da linguagem já são compatíveis com Python 3, o que torna bem mais plausível converter seu código.

Para computação númerica NumPy, SciPy, Matplotlib, IPython e Pandas são as ferramentas mais importantes e todas já foram portadas. Em desenvolvimento web, os frameworks mais importantes – Pyramid e Django – também funcionam perfeitamente em Python 3. Para criar GUI’s, PyQT4 e Tkinter podem ser utilizados sem problemas.

– O que falta então?

Normalmente são as pequenas bibliotecas que fazem trabalhos específicos e que já não são atualizadas há anos. Inclusive, este é um bom momento para se livrar delas. Procure no PyPI por algo semelhante que resolva seu problema e que seja compatível com Python 3.

– E se eu não quiser migrar?

Aproximadamente em 2017, o suporte para Python 2 vai terminar e este já não recebe novas funcionalidades desde 2010, com o lançamento do Python 2.7. Atualmente, só atualizações de segurança e outros bugs sérios são lançadas. Além disso, em breve o Python 3 será instalado por padrão na maioria das distribuições Linux, como já o é no Arch Linux e será no Ubuntu 13.04 ou 13.10.

– Mas mexer em código antigo que já funciona há anos é difícil…

Sim, isso é um grande impedimento. O ideal é começar a aprender com código novo e, quando surgir a oportunidade (ou necessidade) modificar os códigos antigos. A dica é, comece pelas suas bibliotecas para depois partir para as aplicações.

– Por onde eu começo?

O meu texto preferido sobre o tema é Dive into Python 3 que traz todos os detalhes sobre a linguagem e mostra o caso de migração de um software real. Aqui só faço uma introdução sobre o tema.

Independente de querer migrar ou não o seu código, é interessante conhecer o Python 3 e passar suportá-lo em código novo. Mesmo que você esteja escrevendo código com bibliotecas obsoletas, existem boas práticas que deixam permitem desenvolver já pensando no futuro.

Continuar lendo Portando para o Python 3

Dica para atualizar o seu Lumia para Windows Phone 7.8

Ontem tentei atualizar o meu Lumia 710 do Mango (Windows Phone 7.5) para o Windows Phone 7.8 e o Windows Phone Connector do Mac não achava nenhuma atualização.

Procurei em vários lugares e todos diziam que para forçar a atualização precisava fazer isso no Zune (Windows).

O blog que ensinava com mais detalhes o processo dizia que era preciso ser paciente porque o método nem sempre funcionava de primeira e precisava tentar até funcionar. Tentei umas 5 ou 6 vezes até o primeiro sucesso e tive que fazer tudo no Windows mesmo.

Depois tive que repetir o processo mais 2 vezes porque na primeira atualização e na segunda ele ainda foi para versões do Windows Phone 7.5. Na terceira e última ele subiu para o 7.8. Nenhuma das vezes funcionou de primeira, por isso repito o conselho do blog que eu li, tenha paciência e persistência.

lumia_710_7_8

Vamos aos passos. Se não funcionar, continue tentando que uma hora funciona. Acredite.

0. Se você está num Mac, arrume um Windows (sem choro!).
1. Abra o Zune
2. Antes de conectar o celular, desative a rede de dados celular e o wifi.
3. Conecte o celular na porta USB do computador.
4. Clique em configurações (lá em cima) e depois atualizar
5. Deixe o programa dizer que não há atualização para seu celular. Se ele disser que tem atualização, sorte sua!
6. Clique na opção de menu que fica abaixo de atualizar (ou qualquer outra), para sair daquela tela.

Agora vem o pulo do gato:

7. Clique novamente em atualizar e, o mais rápido que puder, desligue a conexão do seu computador (tirando o cabo de rede ou desativando o wifi).
8. Se tudo der certo, vai aparecer um botão dizendo que há atualização. Ligue novamente a internet do computador, siga os passos e atualize seu celular.
9. Caso apareça uma mensagem dizendo que não foi possível encontrar um servidor ou não foi possível atualizar, volte para o passo 4 e repita o processo até funcionar.

Depois de atualizar o celular, se ele ainda não tiver subido para o 7.8 (7.10.8858), desconecte o celular da USB e repita o processo.

Lumia_710_7_8_2

Código de Países: um guia definitivo

Num projeto, para tablets, que vamos mostrar em breve para vocês precisamos importar dados usando country codes (códigos de países). Parece algo simples mas como há multiplos padrões a coisa pode ficar complicada e montar uma planilha mais complicado ainda.

Acontece que a definição de país não é algo simples: pense rapidamente na diferença que há entre Inglaterra, Reino Unido e Grã Bretanha. Ou o caso de Porto Rico. E por aí vai.

Há o FIPS-10-4 que é a forma de abreviatura de duas letras que os EUA usam para se referir aos países. O famoso CIA World Factbook usa este. Há também o ISO-3166-1 que tem três versões: uma com duas letras, uma com três letras e uma com 3 dígitos numéricos. Outro código é o STANAG-1059 que é usado pela OTAN para se referir aos países usando 3 letras maiúsculas.

Por fim há o código de duas letras utilizado para indicar o país nos endereços DNS. São os chamado código TLD de países e são geridos pela IANA.

Se você ficou assustado com toda esta sopa de letras fizemos uma tabela para facilitar a sua vida que pode ser baixada em: http://pastebin.com/pufS81HX

ccTLD_1000b