terça-feira, 30 de outubro de 2007

O novo cachorro

Habemus chocolate!

Pocket supercomputer

Um impressionante vídeo divulgado pelo NewScientist, demonstra a aplicação de um celular com a câmera ativada e pesquisando itens como, por exemplo, uma embalagem de salgadinhos japoneses. Neste caso, o celular informa, via voz que a embalagem contém um ingrediente ao qual o usuário é alérgico.

Quando a capa de um livro é captada pela câmera, rapidamente uma comparação de preços em diversas lojas é feita, ou ainda resenhas são encontradas. O sistema funciona através de uma integração em tempo real entre um servidor central e o aparelho, que rapidamente compara itens filmados com imagens previamente cadastradas em um banco de dados.


Precisa dizer mais nada... Ó o vídeo:



Leia a reportagem da Geek também =]

sexta-feira, 26 de outubro de 2007

quinta-feira, 25 de outubro de 2007

Gerar código nativo em Java

Uma das grandes reclamações dos Javeiros era a impossibilidade de geração de código nativo com o Javacão. Em alguns casos, principalmente em situações com recursos críticos, o código interpretado do java pode influenciar na confiabilidade da aplicação.

Muita gente não conhece o GCJ, o compilador primo do famoso GCC do Stallman. Ele é capaz de compilar o .java e transformá-lo em código nativo (para Linux/Solaris, inicialmente).

Pra quem quer testar, lá vai o código básico =]
(Peguei no site do GCJ e traduzi mal e porcamente)

1. Instale o GCC.

2. Crie um diretório de compilação

$ mkdir compile

3. Mova o gcc pro diretório de compilação.

$ cd compile
$ mv ../gcc-20001211.tar.gz .
$ gunzip *.gz
$ tar xfv *.tar
$ ln -s gcc-20001211 gcc

4. Diga ao build que você quer construir o libgcj

Dê uma olhada no configure.in (gcc/configure.in) e tenha certeza que a variável `noconfigdirs' não está atribuída a alguma coisa(como target-libjava or ${libgcj}.)


Também cheque por atribuições específicas de plataforma de `noconfigdirs' com
${libgcj}; se ${libgcj} está listado para sua plataforma, remova-a antes de configurar.

5. Compile e instale gcc/gcj/libgcj

$ cd compile
$ mkdir objdir
$ cd objdir
$ ../gcc/configure --enable-threads=posix --prefix=/home/joerg/gcc \
--enable-shared --enable-languages=c++,java \
--with-as=/opt/gnu/bin/as --with-ld=/opt/gnu/bin/ld
$ make bootstrap
$ make
$ make install

O Boehm GC é o coletor de utilizado por default.

Se você compilar no Linux você pode omitir as últimas duas opções. No Solaris, você vai precisar delas. Se você omitir '--prefix', o código compilado ficará em /usr/local.


6. Ajustando o ambiente

setenv PATH /home/joerg/gcc/bin:$PATH
setenv LD_LIBRARY_PATH /home/joerg/gcc/lib


7. HelloWorld.java

public class HelloWorld {
public static void main(String [] args) {
System.out.println("Hello");
}
}

8. Compilando HelloWorld

$ gcj --main=HelloWorld -o HelloWorld HelloWorld.java

9. Rodando HelloWorld

$ ./HelloWorld




E chubirú =D



Uma boa leitura sobre o GCJ (e em português) é um pdf/palestra do Fernando Lozano, onde ele explica algumas características do código e da própria linguagem Java.


Até mais o/

quarta-feira, 24 de outubro de 2007

1000!

Mil Pageviews \o/

Dancinha: \o\ |o| /o/

segunda-feira, 22 de outubro de 2007

Verificar atributos únicos no Text do SWT

Eu fiz um meigo código pra verificação de atributos únicos no SWT. Funciona mais ou menos assim: O usuário digita o texto, e ele verifica se o texto coincide com o texto do mesmo campo de uma lista de objetos do mesmo tipo (vinda do banco de dados, no caso).

Vamos supor que o campo seja Placa de automóvel.


placaText = new Text(composite, SWT.CENTER | SWT.BORDER);
placaText.addVerifyListener(new VerifyListener() {
public void verifyText(final VerifyEvent e) {
e.text = e.text.toUpperCase();
if (e.keyCode == 127) e.doit = false; // Não permite a tecla Delete
else {
StringBuffer buffer = new StringBuffer(placaText.getText());
buffer.insert(e.start, (e.keyCode != 8) ? e.character : '$');
boolean existe = false;
// Só testa quando o tamanho estiver correto,
// evitar loops desnecessários
if (buffer.toString().length() == 8) {
for (Automovel a : listaautomoveis) {
if (buffer.toString().equalsIgnoreCase(a.getPlaca())) {
existe = true;
break;
}
}
}
// isso é um label. Pode ser colocado embaixo do campo "placa" ;)
erroPlacaL.setText(existe ? "Placa já cadastrada" : "");
}
}
});
placaText.setTextLimit(8);


E eu continuo minha busca incessante por um primo do JFormattedTextField pra SWT :(

Té mais o/

sábado, 20 de outubro de 2007

10 respostas sobre a TV Digital

Muita gente tem curiosidade sobre como vai funcionar a tv digital, então lá vão 10 respostas sobre esse assunto:

  1. Afinal, o que é TV digital?
    A TV digital proporciona imagem com maior definição (a resolução média da TV analógica é de 480 linhas, enquanto na digital é de 1.080 linhas) e cores mais vivas, além de som mais rico (a transmissão suporta até seis canais de som - Dolby Digital -, enquanto a analógica suporta somente dois - mono e estéreo).O formato da imagem no sistema digital é widescreen (16:9), como a tela de cinema, diferente do padrão analógico (4:3). Enquanto no sistema analógico a emissora pode enviar apenas um programa por vez, no digital é possível enviar até seis programas simultaneamente, permitindo variar a programação ou oferecer uma experiência mais rica, como assistir um jogo a partir de câmeras diferentes.Além disso, é possível receber informações junto com a programação, como detalhes do que aconteceu no último capítulo da novela, dados estatísticos em um jogo de futebol ou a sinopse de um filme. Por fim, é possível interagir com a programação, votando no time mais cotado para ganhar uma partida pelo controle remoto, por exemplo.
  2. Eu vou ter de trocar a minha TV por uma nova?
    Não. Você poderá adquirir um adaptador, conhecido como set-top box, que permitirá que a TV que você tem em casa receba o sinal digital. Qualquer televisor será compatível com o aparelho, desde que tenha entrada para DVD ou aparelho de videocassete. Porém, se você quiser assistir à TV digital em alta definição, que exige mais linhas de resolução, terá que adquirir um novo aparelho compatível com HDTV (High Definition Television).
  3. Minha antena de TV vai para o lixo?
    Não, o sistema brasileiro foi desenvolvido de forma a aproveitar as antenas externas e internas para a recepção do sinal, tanto as que recebem sinal em UHF, quanto as parabólicas, que operam na banda C.
  4. Quando vai custar o set-top box?
    O preço do set-top box para o consumidor hoje, segundo estimativa do LSI (Laboratório de Sistemas Integráveis da Escola Politécnica da Universidade de São Paulo), seria de cerca de 500 reais, com recursos de interatividade, compatibilidade com alta definição e suporte ao forma MPEG-4. Já segundo dados do CPqD, o custo médio de um conversor no Brasil hoje seria de 400 a 800 reais – de acordo com os recursos disponíveis em cada modelo –, mas poderia chegar a uma faixa de 300 a 700 até a data de início do funcionamento da TV digital no País.
  5. Quais as vantagens de ter uma TV ou um adaptador para TV digital?
    Nenhuma, a qualidade de imagem é a mesma. A única diferença é que a TV digital traz o adaptador embutido.
  6. Acabei de comprar um TV de plasma ou uma TV LCD? Elas estão prontas para a TV digital?
    Não necessariamente. As TVs de LCD e plasma, em geral, possuem a definição mais adequada para a TV digital, o que significa que a imagem será melhor. Mas para receber o sinal digital será preciso adquirir o conversor ou set-top box. Além disso, para receber conteúdo em alta definição, o aparelho deve ser compatível com HDTV (High Definition Television), ou seja, trazer 1.080 linhas de resolução.
  7. Vou poder assistir à TV digital no meu computador?
    Sim, já está sendo desenvolvendo um chip que poderá ser acoplado ao desktop ou ao notebook para receber o sinal digital, com custo médio de 50 dólares (130 reais).
  8. Vou poder assistir à TV digital no meu celular? Vai ser paga?
    Tecnicamente sim e sem nenhum custo (pois a TV aberta é gratuita), mas o modelo de negócio ainda precisa ser definido e isso vai depender de decisões regulatórias do governo e do diálogo entre as indústrias de radiodifusão e telecomunicações.
  9. Todos os canais disponíveis na TV aberta hoje vão estar disponíveis de imediato em sinal digital?
    Não necessariamente. Para migrar para o sistema digital, as emissoras terão que investir na troca de equipamentos, portanto provavelmente as empresas com mais recursos migrarão primeiro.
  10. Se eu não comprar o conversor, não vou mais poder assistir a TV aberta?
    Você poderá assistir normalmente a programação aberta na sua TV atual, pois a previsão de tempo para migração do sistema analógico para o digital é de 10 anos. Até lá, as emissoras são obrigadas a manter a transmissão analógica.

Peguei no Ticderdi

sexta-feira, 19 de outubro de 2007

JOptionPane no SWT

Recentemente, decidi dar uma chance pro SWT, pra ver qual é que era.
Descobri que o SWT é bom \o/

Agora vamos a alguns componentes legais do SWT, e seus correlatos em Swing.

O primeiro da série é o MessageBox, equivalente direto do JOptionPane.
O código pra inserir uma MessageBox na sua aplicação é:


MessageBox messagebox = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
messagebox.setText("Título da Janela");
messagebox.setMessage("Mensagem");
messagebox.open();


Considerações:

shell: Nome do componente que chama a aplicação.
SWT.OK | SWT.ICON_ERROR: Style bit que indica à aplicação quais elementos devem aparecer na janela. Pra uma MessageBox, os style bits mais usados são:

Botões:

  • SWT.ABORT: Botão "Abortar" (Falhar)
  • SWT.RETRY: Botão "Repetir"
  • SWT.IGNORE: Botão "Ignorar"
  • SWT.OK: Botão "OK"
  • SWT.CANCEL: Botão "Cancelar"
  • SWT.YES: Botão "Sim"
  • SWT.NO: Botão "Não"


Ícones:

  • SWT.ICON_ERROR: Erro
  • SWT.ICON_INFORMATION: Informação
  • SWT.ICON_WARNING: Aviso
  • SWT.ICON_QUESTION: Pergunta
  • SWT.ICON_WORKING: Trabalho (geralmente, igual ao de informação)


Agora é só usar a massa cinzenta pra fazer isso ser útil.

Té o/

quarta-feira, 10 de outubro de 2007

20q - Redes neurais na internet

Muito legal esse site. Com 20 perguntas, ele promete adivinhar o objeto que você está pensando.
Bem, comigo ele acertou 2 com menos de 20 questões (calculadora e sapo), acertou mais 2 com mais de 20 questões (tubo de ensaio e skate), e desistiu uma vez (dado).
Mesmo assim, um belíssimo resultado =]

Uma boa dica é jogar em inglês.. Português de Portugal pode ser um pouco diferente do nosso algumas vezes.

20q


Teste você também (seria legal se você puder colocar os resultados nos comentários):
20q

Achei no Ovelha Elétrica

terça-feira, 9 de outubro de 2007

Imagem de fundo em um JDesktopPane

Um recurso bem legal do Swing é o JDesktopPane. Ele permite gerenciar múltiplas janelas em um mesmo JFrame, simulando um ambiente gráfico de sistema operacional.

Mas ambiente gráfico que é ambiente gráfico tem que ter um papel de parede! (alguns puritanos do IceWM comerão meu fígado)

Então, pra colocar o seu próprio plano de fundo em um JDesktopPane, aí vai o código:

Primeiro, criamos uma classe, que eu vou chamar de BackgroundedDesktopPane.
No meu exemplo, eu quero que o meu programa principal XXX.java tenha como plano de fundo a imagem "background.png":


class BackgroundedDesktopPane extends JDesktopPane {
Image img;

public BackgroundedDesktopPane() {
try {
java.net.URL caminho = XXX.class
.getResource("background.png");
img = javax.imageio.ImageIO.read(caminho);
} catch (Exception e) {}
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null)
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
else
g.drawString("Imagem não encontrada", 50, 50);
}
}


Beleza. Isto feito, agora é só inserir um BackgroundedDesktopPane no seu JFrame:


final JDesktopPane desktopPane = new BackgroundedDesktopPane();
frame.getContentPane().add(desktopPane, BorderLayout.CENTER);


Nesse exemplo, a figura "background.png" deve ficar no mesmo diretório que o arquivo XXX.class. Se quiser colocar em outro diretório, é só colocar o endereço relativo a esta classe.

Adaptado do Fórum Java

Té mais o/

segunda-feira, 8 de outubro de 2007

Avast tá ficando doidão

Isso é o que eu chamo de avisar com antecedência...

Avast ficando doidão

Como melhorar sua posição no ranking do goolge

Quer dar uma incrementada no número de visitas para sua página e não sabe como? Uma boa maneira é buscar visitantes através dos sistemas de buscas, como google, yahoo, altavista, enfim... Para isso, é bom seguir alguns conselhos, resumi alguns aqui:

  1. Padrões, o mundo gosta de padrões, procure escrever suas páginas sempre utilizando os padrões web atuais. Verifique se sua página segue os padrões usando a ferramenta de validação do w3c. Mais sobre como desenvolver sobre os padrões você aprende na escola do w3c.
  2. Faça amigos, links para sua página são sempre bem vindos; Os buscadores analisam as páginas que linkam para sua de acordo com seu conteudo, por exemplo, se você fala sobre elefantes albinos em sua página e um monte de gente tem link para sua página dizendo que você entende de elefantes albinos, sua colocação no ranking para as pesquisas sobre elefantes será de destaque.
  3. Utilize as meta tags, coloque palavras chaves la.
  4. Informe ao google e aos demais buscadores que você existe. O google possui uma gama de ferramentas pra webmasters que querem ser achados.
  5. Faça um sitemap e indique isso ao google. Que porra é essa? sitemap é um arquivo xml que informa ao google as atualizações do seu site, isso agiliza na indexação do seu conteúdo. Como fazer? Aprende aqui.
  6. Faça um “robots.txt” e coloque na raiz do diretório, este arquivo diz quais os diretórios podem ser fuçados pelos robôs de busca. Como fazer? essa ferramenta faz isso pra você, é só dizer os diretórios que você não quer que o google veja.
  7. Que eu lembre é mais ou menos isso.

Ainda tem uma porrada de ferramentas legais pra analisar e ver o que pode-se melhorar no seu site, você encontra neste site.

É isso, bejundas =*

sábado, 6 de outubro de 2007

A Blendtec é (quase) perfeita!

Há tempos, quem me conhece e teve uma conversa comigo conhece a série "Will it blend?" (algo como "Isso vai ser liquidificado"), na qual um senhor na casa dos 50 anos apresenta um liquidificador perfeito, que tritura as coisas mais bizarras, como cartões de crédito, canetas, imãs e até um cabo de rastel (!).

Mas ainda há uma coisa que o liquidificador perfeito não conseguiu triturar.. Ele mesmo, Chuck Norris!





Links:
Chuck Norris
Blendtec
Chongas (o lugar onde eu achei o vídeo)

sexta-feira, 5 de outubro de 2007

Copiando arquivos no Java

Só pra manter nos arquivos =D
Agradecimentos ao tio Rogério e ao Google.


/**
* Copia arquivos fisicamente
*
* @param inFile
* Caminho completo do arquivo de origem
* @param outFile
* Caminho completo do arquivo de destino
* @return true se a cópia do arquivo for realizada com sucesso
*/
public boolean copyFile(String inFile, String outFile) {
InputStream is = null;
OutputStream os = null;
byte[] buffer;
boolean success = true;
try {
is = new FileInputStream(inFile);
os = new FileOutputStream(outFile);
buffer = new byte[is.available()];
is.read(buffer);
os.write(buffer);
} catch (IOException e) {
success = false;
} catch (OutOfMemoryError e) {
success = false;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
}
}
return success;
}

terça-feira, 2 de outubro de 2007

Microsoft Photosynth

A Microsoft poderia parar com essa história de sistema operacional e pacote de utilitários pra escritório e focar mais nisso...

Segundo o site deles,

Nosso software utiliza uma grande coleção de fotos de um lugar ou objeto, analisa-os à procura de similaridades, e então mostra as fotos em um espaço tridimensional reconstruído, mostrando a você como cada um é relacionando com o próximo.


Melhor que falar, é ver o vídeo.