As desventuras de um casal nérdico
Nós acreditamos em gnomos do tempo
19 novembro 2008, por Maíra, às 10:11

Certa vez veio para sampa um grande amigo nosso, Balin (não o nome dele não é o mesmo do famoso anão do livro Hobbit do Senhor dos Anéis, apenas é o apelido dele ^^), e como ele mora muito longe levamos ele até o Aeroporto de Guarulhos.

Como era de noite, deveria levar aproximadamente 30 minutos  a 1h no máximo para levar ele, estávamos adiantados e esperamos até dar a hora certa. Olhei no computador, o Balin olhou no relógio, a Maíra olhou no celular. Era a hora.

Levamos ele até o aeroporto e apesar do trajeto estar totalmente vazio, apesar de não haver uma alma viva nas ruas, apesar de termos tido a sensação de ter levado 30 minutos o tempo que levou foi mais de 2h, fazendo ele perder o avião.

Explicação? Gnomos do Tempo.

Alguém já assitiu um filme tosco chamado Fenda no Tempo deve levantar a possibilidade de termos cortado alguma fenda, pode ser. Fato que foi comprovado por 3 pessoas, ainda bem que não aconteceu somente comigo.

Portanto que todos saibam, eu a Maíra e o Balin acreditamos em Gnomos do Tempo, ou qualquer coisa que explique 2 horas do tempo terem sido devorados sem explicação ^^


Se mata Gun’s
17 novembro 2008, por Edson, às 9:58

Essa foi dica do Dinart que me indicou, vejam em Cerveja Bem.

Sempre tem quem consegue estragar uma boa música ^^


A saudável família americana
16 novembro 2008, por Edson, às 17:44

Essa deu no G1!
Na Flórida uma mãe começa a brigar com o filho de 11 anos para ele tomar remédio. No meio da discussão o “piá” machuca a mãe e faz um pequeno corte no rosto dela. Ela não poderia ficar para trás, liga para a polícia para prender o filho. E ele ganha a medalha de ouro ao tentar subornar a mãe com uma nota de 5 dólares para que ela desistisse da ligação.

Esse é o país dos sonhos!


The Pirate Bay
15 novembro 2008, por Edson, às 18:52

Pirate Bay (PB) é conhecido como o maior “maior tracker BitTorrent do mundo e por ficar hospedado na Suécia onde existe forte leis anti-copyrights, existindo até um partido chamado Partido Pirata que defende leis anti-copyrights, o TPB  vem seguindo firme e forte desde sempre (exceto um casual perca de domínio restaurado dias depois).

Mas o divertido é que as diversas empresas no mundo continuam ameaçando TPB  como se as leis dos EUA fossem mundiais. TPB não deixa para trás, respondendo com bom humor quase todas as mensagens. Por exemplo em uma delas após o bla bla bla dos advogados americanos TPB responde.

É de fato o TPB falha em cumprir com as leis do DMCA todavia, o DMCA é uma especificação da legislação dos EUA e o TPB é hospedado bem longe dos EUA em uma terra de vikings, onde tem Aurora Boreal e lindas garotas loiras.
Esta e outras bem humoradas respostas podem ser encontradas aqui.


Eu quero!
14 novembro 2008, por Edson, às 15:30


Aliás acho que todo desenvolvedor WEB ficará louco por ter essa tatoo XD


Firfox 4 vem ai e vai suportar HTML!!!
14 novembro 2008, por Edson, às 15:11

É isso mesmo você não leu errado, li que o firefox 4 já está em testes. E uma das principais coisas é que ele vai abrir páginas HTML uhuuuuuuuuuuuuul!

o.O

Uai não estou vendo ninguém comemorando? Claro! HTML é o tipo de arquivo que TODO browser abre, desde o netscape e IE1.0.

Mas não é o que a Vivo diz, a  dica foi do Kenzo que me passou um link do Geek42 que por sua vez publicou uma carta da vivo dizendo que o site deles não funciona no Firefox 3 porque o mesmo não aceita abrir arquivos com extensão html.

Pior, só abre no IE, o mais ultrapassado dos browsers. Não funciona nem no Firefox, nem no Opera, nem no Chrome e nem no Safari.

Por estas e outras que a vivo está mais morta que viva ^^


Bolhas
13 novembro 2008, por Edson, às 23:35

Tem que ter microfone, mas vale a pena ^^

http://www.selftitled.ca/assets/work/web/soap_bubbles/index.html


Vai pagar quanto à família?
12 novembro 2008, por Maíra, às 23:17

“Parabéns” para o pessoal que votou contra o desarmamento.

Em geral, dá nisso.

Leia mais também aqui.

Colocar arma na mão de qualquer um é isso aí. É dar o direito de qualquer um decidir sobre a vida e morte de cada um que cruza o seu caminho, com base em cada um de seus preconceitos. E nem venham dizer que é preciso “formação”, “preparação” e “autorização” para portar a arma, porque o fdp cara tinha tudo isso.

E as Casas Bahia? Vão continuar jogando a culpa para a empresa terceirizada? É fácil assim, né? Contrata segurança armado, autoriza a matar dentro de suas lojas, mas na hora de assumir a responsabilidade, joga para os outros.

Ajudem a espalhar a notícia. De nossa parte, pelo menos, não voltamos a comprar nas Casas Bahia até que tomem uma atitude menos vergonhosa e menos nojenta.


Algorítimo de Ordenação Quick Sort
12 novembro 2008, por Edson, às 18:01

Má me sugeriu que eu fizesse alguns textos sobre minha área, tutoriais. No começo não achei interessante mas depois pensei e decidi fazer alguns. Pensei em começar por um tutorial de como fazer Nuvem de Tags customizado em seu sistema, mas vi que ia precisar de alguns conceitos prévios sobre ordenação, recursividade. Então resolvi começar de algo mais básico.

Vamos lá! =)

Tutorial

Quando se esta escrevendo um programa muitas vezes o desenvolvedor cai, indpendente da plataforma, no problema de como ordenar um conjunto de dados. As vezes são cores, as vezes são letras e se você tiver sorte serão números.

As técnicas de se ordenar são muitos porém escolher a técnica errada pode significar uma longa espera ao usuário. Pode variar desde o Bubble Sort (ou método bolha de ordenação) que é um dos mais usados por leigos (e também dos mais terríveis) até o QS (Quick Sort) que apesar de ser mais complexo, é um dos mais eficientes e mais utilizados por quem busca desempenho.

Por isso vou tentar explicar aqui de modo fácil como é que o QS funciona para que você possa desenvolver ele na sua linguagem de preferência. Eu gosto muito de java, então eventualmente posso usar como exemplo esta linguagem mas tentarei ser genérico.

São ao todo 4 passos, vamos a eles:

Passo 1 - Eliminando casos fáceis

Imaginemos que temos a seguinte sequência de exemplo: 3,7,2,8,1,9,4,6,5,10 e você precise organizar.

Se a sequência tivesse zero, ou um elemento não existe a necessidade de organizar, portanto a primeira coisa que se faz no método QS é devolver situações onde não tem nada a se fazer:

Vamos supor que a assinatura do método nosso de ordenação seja:
array funcaoOrdena(sequencia)
No caso nossa ssinatura diz que a função devolve um array (ordenado), o nome da função é funcaoOrdena e tem como parâmetro único um array desordenado (no caso chamado sequencia)

Como disse, a primeira coisa é testar o tamanho do array e retornar ele caso tenha 0 ou 1 elementos:
if ( tamanho(sequencia) < 2)
{
return sequencia;
}

Passo 2 - Dividindo em 3 grupos

Ok, agora imaginando a sequência do exemplo ele tem 10 elementos, o que o QS faz é pegar o elemento do meio do conjunto {3,7,2,8,1,9,4,6,5,10 }. Se preferir em vez de pegar o elemento do meio pode ser o primeiro, último ou qualquer elemento aleatório, mas prefiro pegar do meio arredondando para baixo caso tenha número impar de elementos, nesse caso é par (10 elementos) então pegaremos o 5o que nesse caso é o 1. Esse número selecionado pode ser chamado de mid, meio, ou pivô, no tutorial chamarei ele de pivô.

Em seguida ele compara um a um da sequência restante, sequencia original menos o pivô, se é menor que o pivô ou maior. O que for menor ele coloca num array que chamaremos de minor e os que são maiores ou iguais colocaremos num array chamado major.

Por acaso, o pivô é o menor número do grupo, por isso no final teremos o seguinte resultado:

minor = {} (nenhum elemento)

major = {3,7,2,8,9,4,6,5,10}

e o pivô 1

Praticamente todos os elementos estão no array maior, parece que não obtivemos nenhum progresso até aqui, mas na realidade está enganado quem pensar isso pois na verdade dividimos nosso problema de tal forma, que no lugar de termos um array com 10 elementos temos um com 9. Mas vocês podem dizer, mas “Gan” o programa tem que ordenar todos!

E eu sei, vamos continuar com o algorítimo ^^

Passo 3 - Usando de recursividade

O terceiro passo é chamar recursivamente a função funcaoOrdena mas dessa vez passando os 2 arrays recém criados, minor e major, da seguinte maneira:

minor= funcaoOrdena(minor);

major= funcaoOrdena(major);

A função não está terminada, mas quando estiver, ela retornará os elementos ordenados. Portanto estamos se aproveitando de uma função que não existe mas existirá e a partir do momento que ela existir teremos depois destas linhas 2 arrays ordenados, um contendo nenhum elemento e outro contendo os elementos {2,3,4,5,6,7,8,9,10} já ordenados.

Passo 4 - Juntando os grupos

Ai para terminar a função, o quarto e último passo é juntar os elementos presentes nos três grupos (minor, pivô e major)  e então teremos:

{}  + {1} + {2,3,4,5,6,7,8,9,10} que como pode ser visto, já estão em ordem.

e ai basta retornar.

Agora sim ela está terminada e quem entende de recursividade já pegou o espírito da coisa, quem não pegou continue lendo até o fim ^^

Dúvidas quanto a recursividade:

Vou aproveitar e falar aqui de recursividade. Recursividade é uma vantagem da maioria das linguagens onde podemos chamar a mesma função e normalmente isso trava tudo  ^^

Apesar de ser útil devemos entender como ela funciona para não ocorrer travamentos, para isso cada vez que chamamos a função temos que ter certeza de que estamos chegando mais perto do fim do resultado, é o caso no QS pois como vocês puderam ver no passo 3 ele chamou a mesma função passando 2 arrays, um com zero elementos e outro com 9 e ambos são menores do que o array recebido.

Segunda coisa importante quando se trata de recursividade é resolver o caso base. Isso significa resolver de forma não recursiva casos menores (no nosso caso arrays pequenos como zero e 1 elementos). E isso fizemos logo no 1o passo, ou seja, quando o problema for apenas com 1 ou nenhum elemento ele devolve sem nem precisar fazer a recursividade.

Para exemplificar vou mostrar o que acontece quando a função é novamente chamada no passo 3.

Na primeira chamada ela chega com o seguinte parâmetro: {}

Então a função irá testar no passo 1 se esta funçãotem zero ou 1 elementos e a resposta será positiva, então ela retornará o resultado correto para a função que a chamou (no caso ela mesmo mas num nível acima) e no nível acima a variável menor vai ter os elementos ordenados (ou seja nenhum).

Já na segunda chamada do passo 3 a função é chamada novamente com o parâmetro: {3,7,2,8,9,4,6,5,10}

No passo 1 a função testará se o array tem zero ou 1 elementos e a resposta será negativa. E por conta disso irá para o passo 2.

No passo 2 ele selecionará o elemento do meio de {3,7,2,8,9,4,6,5,10}, no caso 8 e dividirá em dois grupos, menores minor e major.

Ficando então:

minor = {3,7,2,4,6,5}

major = {9}

Então ele chamará pela 3a vez a própria função mas com o preblema ainda mais reduzido. No caso da chamada passando o parâmetro major ele irá retornar de imediato, já que ele tem apenas 1 elemento. No do minor ele dividirá em dois grupos novamente e assim progressivamente até não sobrar nenhum elemento.

Conforme ele vai devolvendo, ele vai agrupando novamente os elementos e compõe um único array que será o retorno do QS, e desta vez, completamente ordenado.

Exemplo Visual

Se ainda lhe resta dúvidas do funcionamento, talvez olhando estes exemplos visuais lhe ajude a entender e de quebra é uma maneira divertida de comparar os vários métodos de ordenação. Os dois exemplos foram criados pelo meu professor Grossi durante a época que ele lecionava na faculdade onde me formei.

Exemplo 1 - Comparação de Velocidade

Exemplo 2 - Funcionamento

Até a próxima!


Desafiando a Polícia de Curitiba
8 novembro 2008, por Edson, às 11:31

No meu post anterior sobre o caso da Raquel eu tinha mostrado indignação pela polícia estar perdendo tempo olhando visitantes da página do Orkut dela. Porém em uma parte do texto tomei o cuidado de dizer que “esperava que a polícia estivesse olhando outros lugares também” pois para mim olhar no Orkut da menina seria perder tempo.

Parece que meus piores pensamentos estão se realizando, a polícia continua intrigada pelo Orkut da menina. De acordo com a polícia a menina “estranhamente parou de responder mensagens do Orkut de setembro para cá”, tudo porque ela vinha respondendo todas as semanas sem parar nos últimos 2 anos.
O computador dela está sendo analisado para ver se ela não trocou mensagens com o suposto assassino.

Eu parei de responder mensagens do Orkut depois de usar ele por 2 anos, será que não passou pela cabeça da polícia que Orkut enjoa? Eu não acho errado eles revirarem o computador da menina, mas acho errado descartarem coisas que para mim que sou leigo me parecem obvias. Talvez a parada dela esteja por exemplo associada não a troca de mensagens pelo Orkut com o assassino e sim porque ele passou a pressionar pessoalmente a garota nos últimos 2 meses.

Por exemplo, a polícia agora acha que ele é um provável assassino em série. Disso não descordo, porém os meus motivos são diferentes da polícia. Acho que ele pode ter matado ou pode vir a matar novamente caso ele fique impune, ou tenha ficado impune em algum caso anterior, o que resultaria num estuprador/assassino em série. Também acho isso pelo fato de que algumas das peças de roupa da garota ficaram com ele (assassinos em série costumam guardar algo para lembrar-se do prazer que passaram com a vítima). Porém a polícia acha que o assassino é um serial-killer porque deixou a mala num lugar público justamente para “desafiar a polícia”. Eu acredito que a polícia ta vendo muitos filmes policiais, o assassino não deixou a mala lá para “desafiar a polícia” creio eu, para mim ele fugiu da cidade e decidiu abandonar na rodoviária.

Pelo menos algumas das coisas que eu disse ser bom fazerem, de fato fizeram.

Por exemplo a mala, disse que deveria ser investigada pois poderia levantar pistas. Eu como disse suspeito que o assassino more nas redondezas e por conta disso eu teria procurado nas lojas locais próximas da região da rodoviária, praça Rui Barbosa (onde a menina pegava ônibus) e do colégio que ela estudava se tinha venda de malas e se tivesse mostraria fotos da mala para alguem lembrar se venderam alguma semelhante.

A polícia não fez isso, até porque em uma das teorias em que a polícia estava seguindo até ontem é de que o assassino pode ter atacado a menina na volta para casa, pois era um lugar ermo. Sendo que motorista e pessoas do onibus não lembram de ter visto a menina naquele dia e tudo mais fazer crer que o assassino conhecia a região do centro de Curitiba muito bem. Não, a polícia não investigou as lojas, porém o vendedor da loja reconheceu a mala (não sei onde, será que passou na tv, pois na internet não saiu foto, se alguém souber comente) e procurou a polícia.

De fato parece que ele comprou próximo a rodoviária na terça feira, dia que a menina já tinha sumido. Mais motivos para achar que ele foi a pé e mora na região, pegou um ônibus e sumiu. Mas de acordo com a polícia ele “é um assassino frio, calculista, que brinca com a polícia”. Os lençóis que eu disse que também poderiam levantar pistas parecem-se com lençóis de hotel, eu acharia bom ser investigado isso também pois pode indicar que ele trabalhe num hotel central da região, ou estava apenas hospedado num hotel (o que significaria que ele não mora em curitiba mas estava na região central há algum tempo, levanta várias pistas como testemunhas, nome, pois hotel tem que se cadastrar, entre outras coisas).

De qualquer jeito mais coisas deve ser investigado sobre a mala, quão comum ela é? Quantas são vendidas próximas a rodoviária? Talvez a mala indique pistas mas não diretamente o assassino caso ela seja muito comum.

Ao menos fizeram um retrato falado (embora sempre achei retratos falados todos iguais) mas prenderam um suspeito, não falaram onde mas como estão centrados em Curitiba eu creio que deve ter sido lá, espero que não tenham pego o cara errado mas um detalhe importante, disseram que vão avaliar o DNA do suspeito com vestígios do assassino encontrados na menina, sinal que sobrou algo e isso é bom.

Outra possibilidade, que me ocorreu hoje, que ele more na região e levou a mala apenas para dar a falsa impressão de que ele havia deixado a cidade. Se for isso, ainda se mantém o fato de que ele mora perto e nesse caso a polícia teria razão em dizer que ele é “esperto e brinca com a polícia”, porém continuo achando ele burro em deixar a mala ali, obviamente deixou muitas pistas e muita chance de haver testemunhas.

Bom, acho que não demora para saber se estou sendo ingênuo ou a polícia que está. Se de fato a polícia consegue enxergar além do que nossas cabeças sem instrução olham. Espero, pois alguém assim merecia ser pego. Espero que, como meu amigo Dinart disse “que eles estejam escondendo o jogo da imprensa”, pois assim eles podem estar sendo mais astutos do que imaginamos, tomara.


« Posts do tipo "versão estável"