quinta-feira, dezembro 28, 2006

Garantias que desaparecem

O Natal já passou e muitos de nós receberam telemóveis, iPods, computadores, consolas ou qualquer outro aparelho electrónico sujeito a fatídicas avarias. Felizmente existem as garantias. Certo?

Nos últimos tempos, um conjunto de lojas (e.g. Fnac) têm passado a considerar o recibo de compra do aparelho como garantia do mesmo. Não existem dúvidas que isto facilita a vida de todos; dos consumidores por não terem que ir de propósito à loja para assinar a garantia depois dos 15 dias úteis de experiência terem acabado, da loja para não desperdiçar recursos para tratar da burocracia das garantias.

Contudo existem um pequeno pormenor em todo este processo que pode complicar em muito a vida dos compradores, beneficiando no processo as lojas. Durante as compras de Natal, uma funcionária da Fnac recomendou-me que tirasse fotocópia do recibo/garantia porque parece que a tinta tem a "irritante" mania de desaparecer com o tempo. Ou seja, podemos ter 2 anos de garantia, mas estamos condicionados pelo facto da tinta poder desaparecer do pedaço da garantia antes dos 2 anos estarem concluídos. Contrariamente ao que alguns podem pensar, uma folha de papel em branco não serve de garantia...

Por isso, aqui fica o aviso, cuidado com as garantias porque parece que as lojas andam a tentar poupar dinheiro usando "tinta invisível" nas facturas. Poupam na tinta, poupam nas reparações. É só facturar...

domingo, dezembro 24, 2006

O Natal está a bater à porta


Sagrada família
Originally uploaded by whispsil.
O Natal já anda por aí, deve estar quase a chegar, quase a bater à porta!
Enquanto não chega, queria desejar a todos vós, um Feliz Natal e que a paz esteja presente em todos os lares nestes dias especiais.

Aproveito e deixo aqui um link para as fotos do presépio e da árvore de Natal de este ano. O principal destaque vai para o presépio visto que é o que canaliza todo o meu esforço creativo e dedicação nesta época do ano, ao ponto de me sentir orgulhoso pelo resultado.

Mais uma vez, Feliz Natal, e não deixem nenhum filhó ou rabanada a salvo!

sábado, dezembro 23, 2006

Pense alto na net... com Twitter

A web 2.0 é acima de tudo as pessoas. As suas vidas, as suas preferências, as suas amizades, os seus critérios. Esta nova geração da web tem aproveitado a crescente ubiquidade da internet na vida das pessoas, do surgir do verdadeiro modo de vida digital.

Serviços como o del.icio.us, digg, flickr, MySpace, Youtube são todos resultados de fornadas da web 2.0, cada um destancando-se na sua área e todos têm em comum uma enorme dependência nos utilizadores e em toda a informação que estes fornecem, com maiores ou menhores perigoso para a sua privacidade.


Para responder ao nosso crescente impulso de partilhar com o mundo (online) as nossas vidas, foi criado o Twitter. Weblogs são bons para capturar pensamentos, eventos que se destaquem, para informar, mas o que o Twitter pretende é que, se comente sobre o que se está a fazer naquele preciso momento, não importa o que, não importa como. Basicamente, uma forma de relatar pensamentos soltos, actividades mundanas e triviais, de relatar o que nos apetecer.

De facto, à primeira vista, parece ser algo muito interessante para as pessoas que gostam de, digamos, observar a vida das outras.
Mas antes de acharem um completo disparate, sugiro que leiam uma descrição do Twitter de um amigo, que tem usado o serviço. Poderá eventualmente revelar-se menos oco e fútil do que parece à primeira vista.

sexta-feira, dezembro 22, 2006

Novo disco externo

Farto de fazer tanta ginástica mental e computacional, e de sacrificar ficheiros que mantinha caprichosamente, para gerir os poucos gigabytes de disco rígido livre, decidi comprar um novo disco.

Para favorecer a mobilidade, e poder usá-lo para trazer colecções a indexar da faculdade para casa, decidi-me por um disco externo de 320gb. A sua capacidade é maior do que a do meu computador pessoal(80gb) e do meu PowerBook(80gb) reunidos como tal, nos próximos tempos, não devo ter problemas de falta de espaço.

Como modelo, decidi-me por um Lacie que, para além de estar ao mesmo preço do que a maioria, tem um formato compacto e apelativo com o seu aspecto de alumínio esfregado. Interessante também é o facto do design deste disco ter sido feito pelo equipa de design da Porsche. Pensado bem, este deverá ser o objecto mais Porsche que irei ter em toda a minha vida...

quarta-feira, dezembro 20, 2006

Observadores em Java

É recorrente, para os programadores, terem que conceber programas em que algumas partes estão dependentes do estado ou dos dados que algum componente detem. Por exemplo, ter um programa de chat no qual, cada mensagem recebida pela rede tem que se apresentada na interface ao mesmo tempo que é guardada num histórico da aplicação.

Uma forma elegante de resolver este problema é de recorrer a uma "software pattern" denominado Observer. Neste pattern, muitas vezes também chamado publish/subscribe, os objectos observadores registam-se junto dos que pretendem observar à espera de um evento.

Em Java, a API suporta explicitamente este pattern disponibilizando as classes Observer e Observable e vou aqui dar um exemplo muito ingénuo de como utilizá-las.
Aproveitando a ideia do client de chat, vou aqui apresentar o código esqueleto para a aplicação deste pattern.
Para começar, temos que ter o objecto que vai ser alvo de observação, em Java este objecto tem que estender a classe java.util.Observable:

import java.util.Observable;

public class
MsgObservable extends Observable implements Runnable
{
private String msg;

public void
run()
{
while(true)
{
msg = waitForMsg();

// marca o objecto como alterado
setChanged();

// avisa os observadores da mudança
notifyObservers( msg );
}
}

private String
waitForMsg() throws Exception
{
// recebe as mensagens
}
}
Neste excerto de código, os pontos importantes são as funções setChanged() e notifyObservers(...) que avisam os observadores de um evento.

Visto que se faz sentido ter algo para observar se estiver alguém a observar, temos que criar um observador, por exemplo, a classe para fazer o logging:

import java.util.Observable;
import java.util.Observer;

public class
LogWriter implements Observer
{
public void
update(Observable obj, Object arg)
{
logMessage(arg);
}

private void
LogMessage(Object arg) {
// TODO
}
}
A parte importante de este excerto de código é a função update( Observable obj, Object arg ) que é a função que é executada quando o observador é notificado de um evento.

Agora só falta colar isto tudo de forma a que os observadores possam ser notificados dos eventos do objecto observado. Mais uma vez simplificando, em muito, o código para o essencial:

import java.util.Observer;

ChatClient implements Observer
{

ChatClient
{
// criar um MsgObservable
// para receber as mensagens da rede
MsgObservable msgObj = new MsgObservable();

// criar os observadores
LogWriter log = new LogWriter();
ChatUI ui = new ChatUI();

// associar os observadores ao objecto observado
msgObj.addObserver(log);
msgObj.addObserver(ui);

// iniciar o MsgObservable
msgObj.run();
}
}
Aqui temos uma forma bastante elegante de separar bastantes componentes de código e de limitar a sua zona de interacção no código facilitando a sua reutilização.

É também importante referir que o Observable está muito dependente do desempenho das funções update( Observable obj, Object arg ), visto que só retorna o seu fluxo normal de execução depois de todos os observadores tenham sido notificados.

quinta-feira, dezembro 14, 2006

Eragon & Eldest

Estreia hoje nos cinemas a adaptação do livro best-seller de Christopher Paulini, Eragon.
Como praticamente todos os filmes provenientes das suaves folhas de um livro, acho que é d esperar um filme medíocre. Principalmente para quem leu os livros.

Este livro, o primeiro da Trilogia da Herança, relata a história de um cavaleiro, Eragon, e do seu dragão, Saphira, mais precisamente a consciencialização e crescimento desses.
Mas como em todos os livros no qual grande parte da história consiste numa enorme caminhada num continente longinquo e desconhecido, todo o poder descritivo da narração da caminhada é trocado, no grande ecrã, por um turbilhão de acção, lutas, magias e efeitos especiais. Foi o que aconteceu com o primeiro filme do Senhor dos Anéis.


Já que falo no Eragon, não poderia deixar de falar igualmente no segundo livro da trilogia, Eldest, que li no princípio deste mês. Só foram necessários 6 dias para ler as mais de 750 páginas do livro. Movidas por vontade própria ou afectadas por alguma influência mágica, as páginas foram-se virando velozmente.

Neste livro, apesar da influência suavemente evidente do "Senhor dos Anéis", não pude deixar de constatar uma semelhança com o Star Wars: O Império Contra-Ataca. A narração centra-se no treino de Eragon e de Saphira, culmina numa batalha épica e numa revelação (quase) surpreendente.
Este livro é notoriamente mais rico, para além de existirem vários fios narrativos, em torno dos diversos intervenientes principais, nota-se um crescimento do autor comparativamente à escrita do primeiro livro.

Lidos os 2 primeiros livros da trilogia, existe agora uma certa ânsia em ler o terceiro e último livro. Ora ai está o problema. O terceiro livro ainda está a ser escrito e, se considerarmos as fases de revisão, pós-produção, bla bla bla, com alguma sorte, a última parte da trilogia sai ainda antes do final de 2007. Com sorte...
Contudo já sei que a capa será verde =)

segunda-feira, dezembro 11, 2006

Aprender novas línguas com podcasts

A internet é, hoje em dia, um método ubíquo de aprendizagem. Contudo nem todo o tipo de conhecimento pode ser adquirido de uma forma puramente textual e, aprender uma nova língua, é um desses casos.

Cada vez mais, a internet evolui no sentido de um enriquecimento com conteúdos multimédia e com isso é possível métodos mais completos de aprendizagem.
Julgo que ninguém acha possível aprender uma nova língua lendo simplesmente. Aprender uma língua é também ser capaz de a falar. Como tal, conteúdos online como os podcast permitem reforçar a aprendizagem com conteúdo em audio ou em vídeo.

Se estiver interessado em aprender alemão, grego, japonês, ... dê uma oportunidade ao iTunes, ou qualquer outro programa de podcast, para aprender uma das muitas línguas presentes neste directório de podcasts de línguas.

sexta-feira, dezembro 08, 2006

Como era o "Alt+Tab" em 1588

Obviamente que em 1588 ainda não existiam computadores e que, como tal, o atalho para trocar de janelas não tinha motivo para existir.
Mas em 1588, o engenheiro italiano Agostino Ramelli inventou uma mesa de leitura rotativa que, tal como podem constatar na imagem seguinte, consiste no modelo físico do conceito do "Alt+Tab" inventado "uns" séculos depois.


Possivelmente inspirado no trabalho deste italiano, a Microsoft desenvolveu, para o Windows Vista, um sistema (pouco útil e devorador de recursos) denominado Flip 3D. Esta aplicação permite alinhar e percorrer as janelas de uma forma rotativa com efeitos 3D interessantes.

quinta-feira, dezembro 07, 2006

Melhorar o Eclipse no Ubuntu

Para muitos programadores de Java, o Eclipse é uma ferramenta essencial para se conseguir produzir melhor código, mais rapidamente.

No Ubuntu, o Eclipse vem configurado para usar o GCJ, um compilador open-source de Java, devido a uma política de uso exclusivo de software livre. Contudo, no meu pobre computador com uns míseros 256mb de RAM, só o Eclipse ocupava mais de 100mb de RAM, por vezes ultrapassando os 110mb. Mas o consumo de RAM não seria dramático se não tornasse o Eclipse irritantemente lento, afectando igualmente o resto do sistema.

Depois de instalar a JDK da Sun, julguei que o Eclipse passaria a usar a JVM(Java Virtual Machine) da Sun para correr, visto que este passou a ser a JVM por omissão no sistema. Na realidade, o Eclipse continuou a usar o GCJ.
Assim, para mudar de JVM no qual o Eclipse corre é necessário alterar o ficheiro /etc/eclipse/java_home e acrescentar o destino da JVM da Sun, tipicamente, /usr/lib/jvm/java-1.5.0-sun, no princípio do ficheiro.

Depois de esta alteração, o consumo do Eclipse passou a situar-se abaixo dos 100mb de RAM, mas mais importante, passou a ser, de facto, possível usá-lo sem recorrer permanentemente a uma das virtudes com maior carência entre os seres humanos: a paciência.

domingo, dezembro 03, 2006

Alarme de incêndios anti-partidas

Toda a gente conhece a mítico truque, hollywoodesco, de activar o alarme de incêndio para interromper as aulas, criar uma diversão ou fugir de assassinos sanguinários.

O que não sabem é que em 1938 foi criado um alarme de incêndios que dissuadia os falsos alarmes. Neste dispositivo, para se conseguir activar o alarme, a pessoa tem que passar a mão por um compartimento especial no qual, após activar o alarme, esta passa a ficar algemada.


Sem dúvida que este sistema previne que os "terroristas" com acne consigam activar o alarme e fugir, safando-se da merecida "recompensa" pela partida. Contudo, não me parece muito entusiasmante uma pessoa activar o alarme e ficar alegemada enquanto tudo à volta... arde. O altruísmo, o sacrificar-se por outrém não me parece estar muito na moda.

Eis o intelecto humano no seu melhor.