Uma história de amor em stop motion

Um casal de aves desenhadas a lápis escapam do desenho de uma menina, levando-nos através dos seus sonhos. Não sei se eu já postei esse vídeo aqui antes, mas... Ai vai.


A SHORT LOVE STORY IN STOP MOTION from Carlos Lascano on Vimeo.


P.S.: É, eu sei, eu voltei a ficar romântico
P.P.S.: É, eu sei, de vez em quando a gente faz mimos para a namorada.
P.P.P.S.: Quem me chamar de viadinho apanha!

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[Porto de Galinhas] - Resenhas

Eu fui! E curti muito! O lugar é realmente tudo o que falam, muito bonito. Mas enfim, vamos às considerações da viagem, detalhe por detalhe.


Passagens


Pelo amor de Deus, não comprem passagens em cima da hora. Sai muito mais caro, e você não tem a liberdade de escolher horários confortáveis. Esse foi o nosso principal erro, pois só conseguimos passagens para o meio dia do sábado (31/10/2009) e 6:10 da manhã de terça (03/11/2009). Invariavelmente se consegue preços mais baratos e horários melhores com 2 ou 3 meses de antecedência.

Comprar passagens no balcão também não é um bom negócio, pois se paga uma taxa a mais por isso. Prefira comprar passagens pela internet (o cabeção aqui não usa internet banking).

Hospedagem


Ficamos na Pousada Agua Marinha. Fica há mais ou menos 500 metros da entrada da vila de Porto de Galinhas, e é uma pousada bem bacana.





Servem café da manhã entre as 7h e as 10h. A arrumação dos quartos começa às 10h. A pousada fica aberta 24h (era de se esperar, vila em festa). Como podem ver, tem piscina... Chuveiro quente, ar condicionado e TV nos quartos, varanda com rede também.

Contato:
e-mail: contato arroba aguamarinhapousada ponto com ponto br
Fone/Fax: (81) 3552-1087
(bots de spammers, aqui _)_ pra vcs!)

Translado


Acertado com a própria pousada. Eles fazem contato com um serviço chamado "Disk Doblô". Só houve um pequeno equívoco na comunicação, quando disseram que era R$ XX,XX ida e volta, quando na verdade era só a ida. Ainda assim, valeu a pena, pois se fôssemos economizar, pegariamos um ônibus intermunicipal a R$6,00 mais ou menos, no estilo de uma viagem entre o Aeroporto e São Tomé de Paripe (ou algo assim). Também saímos em vantagem (na minha opinião), pudemos contar com o translado às 4h da manhã de terça feira, sendo que o nosso vôo sairia do Aeroporto de Recife às 6:10.

Alimentação


Quando ouvirem que ninguém por lá usa dendê, pelo fato de que ninguém por lá "aguenta", tome cuidado. O azeite de dendê aqui usado parece ser bem aquecido no preparo das muquecas ou na fritura do acarajé. Comemos um peixe na telha por lá e o resultado não foi muito bom (pra mim). Também falam mal do acarajé servido nas praias de lá, segundo o que corre a boca miúda, nenhuma das vendedoras de acarajé é baiana legítima, então...

Quanto ao preço... É bastante variado, mas tome por base o preço dos pratos prontos do Salvador Shopping: algo entre R$15,00 e R$30,00 por pessoa. Claro que se você quiser comer lagosta, vai pagar seus R$120,00, mas isso não está em questão. Resolvemos seguir a dica do pessoal da pousada, e fomos até a Soparia Lumiar.





Na segunda foto, ao meio, a dona da soparia. Infelizmente eu esqueci o nome dela, mas com certeza essa moça ai é uma figura! Sem falar no sotaque carregado dos pernambucanos que é engraçado pacas :) A coisa mais barata que achamos foram as sopas, que variam entre R$6,00 e R$8,00. A coisa mais cara que achamos foi um bobó de camarão (que não leva azeite de dendê) por R$35,00, prato para duas pessoas. Tinha também um arroz de polvo, a seus R$30,00, que é uma delícia.

Achei importante comermos pratos leves, pois o calor é forte, muito mais do que aqui em Salvador. Tem café expresso por R$5,40 no Beijo Café, tem tapioca (que nada me tira da cabeça não passar de um simples beijú) variando entre R$2,00 e R$4,00, "caipifruta" variando entre R$8,00 e R$13,00, enfim, dá pra não passar tanto aperto assim.



Passeio de Jangada


Sai a R$10,00 por pessoa. Te levam de jangada há mais ou menos uns 500 metros da praia para um recife de corais durante a maré baixa. O passeio dura em torno de 45 minutos, pois há fiscais do IBAMA nos corais e multam as jangadas que passarem deste tempo. Há cordas nos corais delimitando a área em que os turistas deveriam transitar (porque turista é um bicho indisciplinado do caramba), já que aqueles corais são áreas de preservação.

Os caras da jangada dão ração pra peixe pra você jogar e atraí-los pra mais perto, a fim de tirar fotos.





Mergulho


O preço do mergulho varia bastante. Para um casal, os preços variam entre R$150,00 e R$130,00. Tome cuidado com o intervalo entre o seu mergulho e o seu voo de volta. Prefira um intervalo de 24 horas, independente de ser um mergulho entre 4 e 6 metros e um mergulho mais fundo. Por quê? Você pode se sentir mal (dores de ouvido, tonturas e afins) durante o voo.

Eles normalmente dão um CD com mais ou menos 50 fotos do seu mergulho. Existem várias agências por lá, mas escolhemos a Ganesh Dive. Gostamos do tratamento do pessoal, bastante atenciosos. Prefira os primeiros horários, pois a água não está tão agitada, a visibilidade melhora e você consegue se divertir mais...





Passeio de buggy


Infelizmente, não passeamos de buggy. O tempo ficou curto (e a grana também). Entretanto, para casais, os preços costumam variar entre R$80,00 (se você chorar muito) e R$120,00. Passam por várias praias, e o passeio por todas elas dura em média 6 horas.


Lembranças para os amigos


O artesanato local é bastante diversificado, e vai desde esculturas de barro a quadros. Consegue-se chaveiros bonitinhos bem em conta (entre R$2,00 e R$5,00), camisetas com estampas hilárias (entre R$13,00 e R$25,00), e várias outras coisas, basta passear pelas lojas das galerias e pesquisar preços. Sim, gente, pesquisei preço, qual o problema? :P

Como saber disso tudo antes da viagem


Para pesquisar as pousadas, usamos o site http://www2.uol.com.br/portodegalinhas/. Para saber a previsão do tempo durante o feriado, usamos o site do Climatempo, é, aquele mesmo que o povo do Jornal Hoje costuma usar pra dar a previsão do tempo.

Enfim, pra quem vai, boa viagem! :P

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[Maven] Problemas ao baixar as dependências?

Eu não sou o expert em Maven, mas eu fuço as coisas (como todo bom computeiro). Daí eu acabei achando coisas que normalmente não aparecem logo de cara.

Atualizando/reconstruindo o índice


Vá até Window -> Show View -> Other no seu Eclipse.



Agora vá até a visão do Maven, clique no repositório http://repo1.maven.org/maven2, clicando com o botão direito e selecione Atualizar Índice



Se vocÊ também selecionou a visão Progress, lá da aba Geral em Window -> Show View -> Other, você perceberá que o plugin do Maven no eclipse baixará um índice para cada lib existente no repositório, contendo todas as versões existentes até então.



Se esse era o seu problema, depois disso, tudo vai funcionar tranqulamente...

Configurando espelhos para o repositório


Caso ainda assim você tenha problemas em encontrar as dependências, você poderia adicionar mirrors aos repositórios. Crie um arquivo chamado settings.xml dentro da pasta ${home-do-usuario}/.m2/ com o seguinte conteúdo:

<settings>
  .
  .
  .
  <mirrors>
    <mirror>
      <id>ibiblio.org</id>
      <name>
        ibiblio Mirror of http://repo1.maven.org/maven2/
      </name>
      <url>
        http://mirrors.ibiblio.org/pub/mirrors/maven2
      </url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  .
  .
  .
</settings>


Para mais informações, leia este tutorial.

Configurando conexão usando um proxy


Se você está sob um proxy (provavelmente dentro de uma empresa - quem colocaria um proxy em casa?), crie (ou edite, caso já o tenha criado) um arquivo chamado settings.xml na pasta ${home-do-usuario}/.m2/

<settings>
  .
  .
  .
  <proxies>
    <proxy>
      <active>
        true
      </active>
      <protocol>
        http
      </protocol>
      <host>
        proxy.somewhere.com
      </host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>
        www.google.com|*.somewhere.com
      </nonProxyHosts>
    </proxy>
  </proxies>
  .
  .
  .
</settings>

A parte do username e password somente deve ser usada se para ter acesso à rede externa vocÊ necessitar de usuário e senha. A parte do nonProxyHosts normalmente é utilizada para a rede interna da empresa, caso a equipe de desenvolvimento utilize também um repositório local para o maven.

Para mais informações, veja este tutorial

Isso é tudo, pessoal!

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

De Programador Para Analista - Promoção?

Hoje faz mais ou menos um mês que eu saí do cargo de Desenvolvedor (Programador) Júnior Java para Analista / Programador de Sistemas. Ao menos é isso que consta em minha carteira de trabalho... Apesar de eu já ter essa ciência antes de dar esse passo, muitos pensam que passar de Programador para Analista significa uma promoção dentro de uma empresa.

Nesse pouquíssimo tempo de trabalho na nova função, percebo que o escopo das atividades que exerço é muito maior do que apenas dar manutenção/implementar novos casos de uso. Decisões erradas tomadas nas fases de iniciação e elaboração podem comprometer todo o andamento (e até mesmo a viabilidade) do projeto, então, não acho que fui apenas "promovido".

Mas também não posso dizer que trouxe absolutamente nada da minha fase de "peão". Minhas noções de orientação a objeto e modelagem de classes me ajudam e muito, isso sem falar das ocasiões em que eu discutia veementemente com a equipe da análise (e às vezes até com a equipe de teste). E não é só isso, meu português mais ou menos, trazido desde o ensino fundamental, ainda me ajuda a escrever textos que não deixam (a princípio) margem para má interpretação (porque ninguém está livre disso).

Eu espero que nessa nova fase da minha carreira eu consiga me sair tão bem quanto eu (acho que) fui enquanto era apenas "peão"...
Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

Problemas com o proxy no Eclipse Galileo?

Normalmente, as empresas se utilizam de proxy para barrar acessos a páginas consideradas impróprias, como, por exemplo, o site do Bahia e do Vitória (brincadeira :P). E ai, quando vamos fazer um install/update pelo Eclipse, encontramos problemas, porque o Eclipse não consegue acessar a internet normalmente. Como contornar isso?

Eu tentei configurar o eclipse do mesmo modo como o firefox estava configurado, mas vi que não deu muito certo. Eu havia tentado configurar HTTP, HTTPS e SOCKS com o mesmo endereço e porta. Ai, eu resolvi apagar a parte HTTP e SOCKS, além de remover o 127.0.0.1 do bypass.

É só ir em Windows -> Preferences, escolher General - Network Connections e configurar mais ou menos assim:



Então, ainda nas preferÊncias, vá até Install/Update -> Avaliable Software Sites e teste uma das conexões. Se disser algo do tipo "Xpto is avaliable", você conseguiu :)

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[Porto de Galinhas] Preparativos

É... Eu vou pra Porto de Galinhas. Mas por conta própria. Muita gente já deve estar sabendo que eu comecei a namorar de novo. E foi ela quem sugeriu que gostaria de conhecer o lugar... Como eu sou meio doido, eu decidi embarcar nessa, afinal de contas, eu nunca saí da Bahia, nunca peguei um avião...

Como não se preparar para uma viagem

Nós tinhamos ido 2 meses antes da data pré-estabelecida da viagem a uma agência de turismo, em busca de pacotes de viagem. A princípio, havíamos encontrado um pacote razoavelmente barato: algo na faixa de R$850,00 por 3 dias, incluindo passagens, hospedagem (com direito a café da manhã, é claro), e, se eu não me engano, translado.

Entretanto, como procuramos os dois evitar ao máximo ficarmos presos a cartões de crédito e afins, decidimos juntar a grana e pagarmos a vista. Um mês depois, e alguém nos diz que o preço do pacote estava muito caro, e que se fôssemos pagando as coisas em separado, conseguiriamos alguma vantagem, mesmo que algo em torno de R$100 ou R$200 reais. E assim o fizemos.

Quarta feira passada (14/10/2009) fomos até o aeroporto (porque o cabeção aqui não tem internet banking - vive perdendo os tokens) e conseguimos, depois de muito custo, passagens saindo de Salvador no dia 31/10, às 12h, e voltando de Recife no dia 03/11, às 5h. Um dia depois (15/10/2009), conseguimos, depois de muito custo, hospedagem por 3 dias, e o translado, oferecido pela própria pousada (ao custo de R$100,00). Pelo menos, garantimos a ida, a volta, e a cama (o mais importante, hehehe).

Mas por quê?


Pense comigo: será que, se conseguíssemos fazer as mesmas coisas que fizemos agora com um pouco mais de antecedência, não conseguiríamos uma economia bem maior? Será que não conseguiriamos uma pousada com um pouco mais de requinte, ou passagens em horários melhores? Para quem se planeja com antecedência, o mau costume brasileiro de deixar tudo para a última hora com certeza é um benefício e tanto... não concordam?

Porto de Galinhas - Porque um anoniblogger também pode!

P.S.: Depois eu posto como a gente decidiu o que fazer e o que comer em Porto de Galinhas

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[O Menino Amarelo] O Cativeiro Mofado

Era uma vez, um menino amarelo. E o menino amarelo estava namorando. A namorada do menino amarelo já havia tido filho, e era (como sempre) um tanto mais velha que o tal menino. Num desses finais de semana, a doida namorada do menino amarelo resolve convidá-lo para almoçar na casa dela...

Depois de andar do Himaláia até o Egito, passar em Angola e ir parar ali, pertinho do Bom Preço, eis que o menino chega suado na casa da namorada, sem fôlego sequer pra abrir um portão. E ali estava a criatura. A cria da maluca. Criança simples, sorridente, sentada no sofá da sala assistindo TV, analisando a amarelidão em pessoa com o mesmo jeito de um Poodle (e o menino amarelo ficou com trauma de Poodles depois que um quase mordeu seu rosto).

Comida diferente, sobremesa, sabe aquela média que namorada faz quando quer agradar? Pois bem. Ai vem aquela tapeada pra deixar o menino ambientado, pra acostumar a cria da maluca com o amarelo... Até que ela resolve despachar a cria pra Deus sabe onde. Leva até um pouco de sobremesa junto, pra tapear... Enfim sós. Ah, se ele soubesse... O tempo passa, e mais ou menos 3 ou 4 horas depois, batidas na porta. A maluca havia dito que estaria sozinha, então, a adestradora, junto com a cria da maluca e outra cria enxotada a tiros de um circo de horrores resolvem lhe fazer uma visita. Ambos ficaram desesperados, e no meio de tanta correria, a única idéia que a maluca teve foi trancafiar o menino amarelo num quarto mofado. Nãããããããooooooo!

Todo mundo sabe que o menino amarelo tem alergia a mofo. Mais amarelo do que nunca (quase um verde cana), até que tentou respirar devagar pra não inalar tanto mofo, mas depois de um certo tempo, a idéia não deu muito certo. Enquanto isso, a criatura vinda do circo dos horrores vasculha tudo em todos os aposentos, exceto aquele, que está trancado. Parecia até farejar cheiro de meia com chulé (era o sapato amarelo, mas tudo bem). E o Poodle até que não mostrou os dentes, ficou quietinho...

Diante do amarelo, havia uma janela. Gradeada por fora, mas era uma fresta de ar... E ali ele ficou feito peixe em rio poluído até a cavalaria do apocalipse ir embora... E que alívio... Parecia aquelas cenas de filme quando o navio afunda e há alguma câmara de ar, e os náufragos tomam o último fôlego antes de ir até a superfície, 150 metros acima...

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[Vimeo] Origami - In the Pursuit of Perfection

De bobeira, inventei de ir catar alguns videos no Vimeo. Afinal de contas, não é só o Youtube que tem coisa boa. Acabei achando essa animação bacaninha sobre origamis. Sem legenda, mas vale a pena :P

Origami In the Pursuit of Perfection from MABONA ORIGAMI on Vimeo.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

[+18] FUUUUUU - salto mortal

Depois dessa, eu JURO que NUNCA mais dou salto mortal de escadas, pedras, ou seja lá que poha for, mesmo que seja a menos de 1 metro de altura!




UPDATE: Tiraram o video do ar no vimeo, mas achei em outro lugar.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>

SCJP - 07 - Collections [parte 02]

Bem, eu pensava que os termos order e sort em inglês significavam a mesma coisa, mas a gente já sabe que isso não é verdade. Vimos duas interfaces úteis para definir o modo como objetos devem ser ordenados numa coleção. E agora, como faço a ordenação, de fato?

Ordenando Coleções


Tome o seguinte trecho de código, onde tentamos ordenar uma certa lista de pessoas:

import java.util.*;
import java.io.*;

class Pessoa { 
    private String nome;
    
    public Pessoa (String nome){
        this.nome = nome;
    }
    
    public String getNome() {
        return this.nome;
    }
    
    public void setNome(String nome){
        this.nome = nome;
    }
 
    public String toString() {
        String result = "nome: " + this.nome;
        return result;
    }
}

public class Principal {
    public static void main(String[] args){
        List<Pessoa> listaPessoa = new ArrayList<Pessoa>();
        listaPessoa.add(new Pessoa("Fulano"));
        listaPessoa.add(new Pessoa("Cicrano"));
        listaPessoa.add(new Pessoa("Beltrano"));

        Collections.sort(listaPessoa);
        System.out.println(listaPessoa);
    }
}

Note que não definimos qualquer ordenação natural, como no post anterior. Ao tentar compilar este código, temos o seguinte:


Se consultarmos a api do Java para este método, veremos que:

static <T extends Comparable<? super T>>
void sort(List<T> list)

É meio confuso ler esta assinatura de método, mas perceba que a lista que o método recebe é parametrizada. E o parâmetro é uma classe que deve implementar a interface Comparable. Mais precisamente, qualquer subclasse para qual exista uma superclasse que implemente esta interface.

Existe uma sobrecarga deste método, que recebe uma instância de Comparator:

static <T> void sort(List<T> list, Comparator<? super T> c) 

Também vimos como definir um Comparator no post anterior. O mais interessante, é que podemos instanciar um Comparator e definir o método de comparação ai mesmo, na passagem de parâmetros, ao invés de se criar uma classe específica. Isto é recomendado apenas se esta instância de comparator, com este critério de ordenação, for utilizado somente uma vez:

Collections.sort(listaPessoa, new Comparator<Pessoa>() {
    public int compare(Pessoa a, Pessoa b) {
        return a.getNome().compareTo(b.getNome());
    }
});

Existem coisas interessantes como definir uma ordem inversa à ordem natural, de maneira extremamente simples. Para isso, usa-se o método estático Collections.reverseOrder(), que retorna uma instância de Comparator. Este método deve ser usado se a sua classe implementa a interface Comparable. Caso este não seja o caso, e já exista uma implementação de Comparator, use Collections.reverseOrder(Comparator<T> cmp). Pense como se estes métodos retornassem o resultado dos métodos que já vimos anteriormente, multiplicados por -1.

Ordenando Arrays


Assim como vimos a classe utilitária Collections para a ordenação de coleções, existe também a classe utilitária Arrays, com os mesmos métodos de ordenação: o que espera listas cujo tipo parametrizado é uma instância de Comparable, e o que espera uma instância de Comparable como definição de ordenação. Em adição, existem diversos métodos sobrecarregados iguais a esses, contemplando cada tipo primitivo (char, byte, short, int, boolean, float, double - esqueci de algum?). E mais: para esta classe utilitária, em especial, existem métodos que nos permitem ordenar apenas uma parte do array de valores. Vale dar uma conferida rápida na api desta classe.

Buscas em Coleções


Um dos métodos mais eficientes e mais conhecidos para buscas é a pesquisa binária. A classe utilitária Collections possui um método chamado binarySearch, que contempla este tipo de pesquisa:

static <T> int
binarySearch(List<? extends Comparable<? super T>> list, 
             T key)

static <T> int
binarySearch(List<? extends T> list, T key, 
             Comparator<? super T> c) 

Note que ambos os métodos esperam uma lista, pelos motivos que veremos logo a seguir.


Fluxograma extraído da Wikipedia

Entretanto, é importante seguir algumas regras:

  • Buscas com sucesso retornam o índice do elemento procurado na lista passada pro parâmetro (para que o objeto possa ser resgatado usando o método get(int index) da lista).
  • Buscas sem sucesso retornam um valor negativo, que pode ser encarado cmo a posição de inserção do novo elemento da lista. Por ser um valor negativo (já que 0 é uma posição válida dentro da lista), a primeira posição de inserção válida é -1. Então, este número deve ser "transformado" para um valor positivo através do cálculo (-<ponto de inserção> - 1).
  • A coleção deve ser ordenada antes de se efetuar qualquer busca.
  • Se a coleção for ordenada utilizando determinado método de classificação (natural - implementando a interface Comparable - ou algum específico - implementando a interface Comparator), as buscas devem ser feitas utilizando exatamente o mesmo método de classificação.

O não uso da mesma estratégia de classificação na busca e na ordenação, ou a não ordenação da coleção antes da busca pode tornar os resultados da busca imprevisiveis.

Buscando em Arrays


Novamente, existem métodos similares aos citados para buscas nas coleções na classe utilitária Arrays. As regras para o uso destes métodos são as mesmas que as citadas para as coleções. Também existem sobrecargas desses métodos para cada primitiva existente, bem como sobrecargas para que buscas sejam efetuadas apenas numa parte do array. Para dúvidas, consultar a api.

Curiosidades sobre métodos de busca


A despeito do conhecimento da maioria, existe um tipo de busca chamado de Busca por Interpolação, que é mais eficiente que a busca binária. Isso porque o algoritmo utiliza interpolação linear para meio que "adivinhar" a posição do elemeto procurado, no caso de elementos uniformemente distribuídos. Vale a pena dar uma olhada, a título de informação.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.

Continue lendo >>