sexta-feira, 23 de novembro de 2007

Problema: Java + Fedora 8

Ontem, eu estava com o Eclipse 3.3.1 aberto - quando resolvi testar o JBoss Tools.
Baixei do site, talz, criei um novo Dynamic Web Project, coloquei os facets (ou facelets, sei lá)... quando de repente, ao tentar criar um JSP, o Eclipse fecha.

Bem, eu, obviamente, pensei que tinha sido um dos famosos PermGen Error.

Mas não era.

Como eu tenho o costume de abrir o Eclipse por linha de comando, eu vi que lá, ao invés do erro do PermGen, estava isso daqui:

eclipse: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

Bem, eu pensei, deve ser erro do JBoss Tools.
Tentei de novo.
Mesmo erro.

Googlando por ai, eu encontrei diversos bugs abertos, mas nada de importante resolvido, até que eu resolvi ler o bug da Sun até o final.

Segundo os caras:

"(...) JDK is using a statically linked, non-thread-safe copy of libXinerama(...)"

Como eu não sou programador X, nem C=C+1, e sim programador Java, eu precisava de uma solucão.
E um cara chamado Josh Triplett postou nesse bug mesmo, uma solucão, que resolveu meu caso:

(O Josh postou a solucao com um caminho completo para esso .so, mas eu fiz usando $JAVA_HOME e funcionou.)

sed -i  's/XINERAMA/FAKEEXTN/g' $JAVA_HOME/jre/lib/i386/xawt/libmawt.so

E, ao tentar criar o JSP, tudo funcionou as mil maravilhas.

(Nota: Eu percebi que esse erro também ocorria ao tentar rodar programas Swing/AWT com a VM Sun)
(Nota 2: Se alguém descobrir que esse erro causa algum problema, avise-me )

Blogged with Flock

segunda-feira, 19 de novembro de 2007

Adobe Flex

What is it?

Uma solucao para RIA (Rich Internet Application) que não tem os mesmos limites de tecnologias com JSON, Ajax, GWT e etc. por ser baseada em Flash.

How does it works?

(MXML+ActionScript+Flash Class Library)+Compile=something.swf

Esse something.swf roda em um html, em um browser com o Adobe Flash Player.

Esse swf se comunica com o webserver, que, por sua vez, se comunica com todas as outras tecnologias java (J2EE, Web services e etc..)

how-does-flex-works

And?


Ainda não aprendi muito sobre a tecnologia para falar se é bom ou ruim. Mas de inicio eu já posso falar que eu nao gostei da dependencia com o Flash Player e por ser feito com ActionScript e MXML - que, provavelmente vai exigir uma curva de aprendizado para muitos desenvolvedores. Por outro lado, o Flex dá uma interface extremamente rica, e bem rápida (usando ADF11g como exemplo) para aplicacões web - com o beneficio da integração com Java ( e com o Eclipse, por meio de plugin).

Mais informacões:
- Apresentacão do Flex (c/ Java);
- Flex.org/Java

Blogged with Flock

demonoid.com fechado. para todo sempre

Como todos sabem, um dos melhores trackers de torrent do mundo, o Demonoid.com foi desativado pela CRIA (Canadia Recording Industry Association), depois de uma batalha de muitos meses.

Mas, será mesmo que ela tá certa?

Eu pergunto isso, porque algum tempo atrás (exatamente há 15 dias) eu fiquei sabendo via MeioBit que a Universidade de Londres, junto com a Industry Canada e a Decima Research fizeram uma pesquisa para descobrir o hábito dos usuários P2P.

Segundo a pesquisa:
"(...) we are unable to find direct evidence that P2P file-sharing either increases or decreases CD purchases in Canada. That is, in our analysis of the whole Canadian population we are unable to find any relationship between the number of P2P music tracks that were downloaded and the number CD purchases (...)"

(Traducao livre:
"Nós nao conseguimos encontrar evidencias diretas que o compartilhamentos de arquivos P2P aumentou ou diminuiu o numero de compras de CD no Canadá. Isto é, na nossa analise de toda a população do Canadá nós não conseguimos encontrar nenhum relacionamento entre o numero de faixas baixadas pelo P2P e o numero compras de CD" ).

E depois dessa pesquisa, a CRIA ainda ameaçou a empresa que alugava os servidores do Demonoid, obrigando o site a fechar.

Infelizmente, buscando noticias sobre o site na internet eu descobri que infelizmente, para os criadores do demonoid, o site fechou para sempre.

O que é uma pena, já que ele era o melhor tracker da internet, na minha opinião, já que, diferentemente do PirateBay.org, para baixar torrents, era totalmente necessario se cadastrar, e, para todo usuário cadastrado era mostrado o famigerado share ratio, junto com a quantidade exata de MB que o usuário baixou e "uploadeou".
Com isso, o site era extremamente organizado, e, com torrents excelentes. E com muitos seeds, já que o share ratio era publico.

Uma pena que a CRIA ainda acredita que torrents diminuem as vendas de cds, já que, na minha opinião, eles aumentam - porque o cara quando gosta de uma banda, quer ajuda-la.

Um pena, de verdade.


Blogged with Flock

quinta-feira, 1 de novembro de 2007

Carta Aberta de François Bancilhon a Steve Ballmer

Fonte: MandrivaBlog

Dear Steve,

Hi, this is François, from Mandriva.

I'm sure we're way too small for you to know me. You know, we're one of these tiny Linux company working hard for our place on the market. We produce a Linux Distro, Mandriva Linux. The last edition, Mandriva 2008 was seen as a pretty good version and we're proud of it. You should give it a spin, I'm sure you'd like it. We also happen to be one of the Linux companies that did not sign an agreement with your company (nobody's perfect).

We recently closed a deal with the Nigerian Government. Maybe you heard about it, Steve. They were looking for an affordable hardware+software solution for their schools. The initial batch was 17,000 machines. We had a good answer to their need: the Classmate PC from Intel, with a customized Mandriva Linux solution. We presented the solution to the local government, they liked the machine, they liked our system, they liked what we offered them, the fact that it was open, that we could customize it for their country and so on.

Then your people entered the game and the deal got more competitive. I would not say it got dirty, but someone could have said that. They fought and fought the deal, but still the customer was happy to get CMPC and Mandriva.

So we closed the deal, we got the order, we qualified the software, we got the machine shipped. In other word, we did our job. I understand the machine are being delivered right now.

And then, today, we hear from the customer a totally different story: "we shall pay for the Mandriva Software as agreed, but we shall replace it by Windows afterward."

Wow! I'm impressed, Steve! What have you done for these guys to change their mind like this? It's pretty clear to me, and it will be clear to everyone. How do you call what you just did Steve, in the place where you live? In my place, they give it various names, I'm sure you know them.

Hey Steve, how do you feel looking at yourself in the mirror in the morning?

Of course, I will keep fighting this one and the next one, and the next one. You have the money, the power, and maybe we have a different sense of ethics you and I, but I believe that hard work, good technology and ethics can win too.

cheers

François

PS: a message to our friends in Nigeria: it's still time to do the right thing and make the right choice, you will get lots of support for it and excellent services!

terça-feira, 30 de outubro de 2007

me.dium what?

Eu não sei ainda como chamar essa "extensão" do flock.

Mas eu se que é bem interessante.

Ele mostra uma barra lateral, onde ele mostra em que site da internet você está

Photo Sharing and Video Hosting at Photobucket

Nessa barra, voce que site vc está, onde estão seus amigos, e pode abrir salas e conversar com pessoas!
Por enquanto, o site é invite-only, maaas, caso você (assim como eu) utilize o Flock, poderá utilizado normalmente.

(O negócio é bem bom pra conhecer pessoas!)

http://me.dium.com
http://flock.com



Blogged with Flock

Night in Java

public class Night {
private Pub pub = new Pub(300);
private Person me = new Person(Status.SOBER);
public static void main (String[]args){

while(!me.getStatus.equals(Status.DRUNK){
for (Beer beer : pub.getStock())
me.drink(beer);
}
}
}

Rodando o Mac OS X Leopard num PC


Rodar o Windows XP no Mac. Tarefa impossível, sem o auxílio do BootCamp, da própria Apple? Nem tanto. Hackers já conseguiram. E o contrário, dá? Rodar o Mac OS num PC?

Depois que a Apple começou a lançar seus PCs com processadores Intel, eles adquiriram mais características de PCs convencionais (apesar de diferentes, ainda Macintoshes). Com isso, a compatibilidade é muito maior, apesar de impecilhos aplicados justamente para evitar o feito.

Um usuário identificado por "BrazilMAC" publicou no fórum do site OSx86 Scene um tutorial que permite rodar o Mac OS X Leopard 9a581 GM num "Hackintosh", um PC comum, expressão no mínimo brincalhona.

A pessoa precisaria de uma imagem de DVD do 9a581 GM, um arquivo de patch que ele dá o link para baixar (que modificará a imagem) e um DVD-RW vazio, ou uma partição separada. E claro, 1 GB ou mais de memória.

O processo de modificação da imagem se dá no Linux, usando scripts e o próprio patch fornecido. O sistema funcionaria com algumas restrições, como a rede wireless, além de ficar sem as instruções SSE do processador. Parece que funciona, mas sabe-se lá...

Veja o tutorial em:

http://forum.osx86scene.com/viewtopic.php?f=16&t=2008&st=0&sk=t&sd=a

Fonte: GuiaDoHardware.net

domingo, 28 de outubro de 2007

Fazendo placas Broadcom funcionarem no Linux

Depois de muito tempo quebrando a cabeca e procurando em milhares de foruns diferentes
finalmente eu consegui fazer o wireless do notebook "Acer Aspire 3000" funcionar 100%.

O problema das placas Broadcom no linux, é que o modulo que vem no kernel (o bcm43xx)
é falho; não funciona com todas as placas Broadcom (e, pelo que vi na googlando por
ai, quando funciona, funciona mais ou menos...)

A solucão: o Ndiswrapper, um modulo para suporte a placas 802.11.

Seguindo os passos a seguir, provavelmente tudo vai funcionar (provavelmente):


(Distribuicão utilizada: Fedora 7)

- Primeiro, instale o ndiswrapper (tanto faz por yum, apt-get, merge, source-code...);
- Baixe o driver da placa wireless para windows -- o ndiswrapper encapsula o driver e faz
ele funcionar no linux;
- Retire os modulos da memoria:

modprobe -r bcm43xx
modprobe -r bcm43xx-mac80211
modprobe -r ssb

Esses são os modulos que o kernel utiliza nativamente para as placas;

- Coloque esses modulos no blacklist do modprobe, para que eles não sejam carregados
nunca sejam carregados

vim /etc/modprobe.d/blacklist

#modulos wireless
blacklist bcm43xx
blacklist bcm43xx-mac80211
blacklist ssb

- utilize o ndiswrapper para encapsular o driver:
como root:
ndiswrapper -i 'arquivoinfdodriver.inf'

- verifique se o driver está ok:
ndiswrapper -l
(Ex:
bcmwl5 : driver installed
device (14E4:4318) present (alternate driver: ssb) )

- reinicie o computador para que tudo esteja ok.

--
- carregue o modulo ndiswrapper

modprobe ndiswrapper

- coloque um alias para a placa no modprobe.conf:

alias wlan0 ndiswrapper

- crie o arquivo /etc/sysconfig/networking/devices/ifcfg-wlan0 com o conteudo:

TYPE=Wireless
DEVICE=wlan0
HWADDR=(endereco da placa)
BOOTPROTO=dhcp
ONBOOT=yes
NETMASK=
DHCP_HOSTNAME=
IPADDR=
DOMAIN=
USERCTL=no
IPV6INIT=no
PEERDNS=yes
ESSID=
CHANNEL=1
MODE=Master
RATE=Auto

- finalmente, suba a placa:

ifup wlan0


E tudo deverá está ok!

Da onde veio "Java" ?

Email trocado entre o CEO da Sun e o Criador da Linguagem Java, sobre o nome da mesma:


Mensagem encaminhada:

De: James Gosling (Criador da Linguagem)
Data: 24 de agosto de 2007 20:16:58 PDT
Para: Jonathan Schwartz (CEO da Sun)
Assunto: Como foi criado o nome Java?

A história é a seguinte:

Precisávamos de um nome. Estávamos usando "carvalho" (que foi escolhido por mim basicamente ao acaso) e, embora a equipe tenha se apegado ao nome, os advogados de marcas comerciais o rejeitaram. Trocamos muitos emails discutindo opções de nomes mas não resolvemos nada. Acabamos na insólita posição de ter o nome como principal empecilho ao lançamento do produto.

Nosso consultor de marketing conhecia alguém que era um "consultor de nomes" (não me lembro seu nome, mas ele era ótimo). Não podíamos arcar nem com os custos nem com o tempo necessário para um processo convencional de nomeação de produto. Concordamos em fazer algo um pouco estranho, mas eficaz e rápido: ele agiu como um facilitador em uma reunião em que aproximadamente uma dúzia de nós se trancou em uma sala por uma tarde. Ele começou a nos fazer perguntas do tipo "Como essa coisa faz vocês se sentirem?" (Excitados!) "O que mais faz vocês se sentirem assim?" (Java!) Acabamos com um quadro cheio de palavras aleatórias. Então ele nos colocou em um processo de seleção e fizemos uma classificação dos nomes. Acabamos com uma dúzia de nomes candidatos e os enviamos aos advogados: eles analisaram a lista até encontrar um nome que passasse na pesquisa. "Java" era o quarto nome da lista. O primeiro nome da lista era "Silk", que eu odiava mas todos os outros gostavam. Meu favorito era "Lyric", o terceiro nome da lista, mas ele não passou no teste dos advogados. Não me lembro quais eram os outros candidatos.

Então, quem deu o nome Java? O marketing organizou a reunião, o consultor a realizou, e alguns de nós gritaram nomes aleatoriamente. Sinceramente, não tenho certeza absoluta de quem disse "Java" primeiro, mas estou quase certo de que foi Mark Opperman.

Certamente não foi nenhuma mente brilhante do marketing que passou por um processo de criação coerente.


Fonte: Jonathan's Blog

quarta-feira, 5 de setembro de 2007

Atualizando componentes com actionListeners

Esse é um assunto que eu devo ter demorado uns 3 dias para descobrir como fazia.

O meu problema era: Eu tinha dois faces com componentes diferentes e eu simplesmente não conseguia colocar partialTriggers nos componentes (que estavam em facets separados).

O jeito foi então, colocar um ActionListener (ou um SelectionListener, dependendo do componente) e pelo actionListener forçar a atualização pelo código... mas como fazer?

Exemplo do componente:

<af:commandButton text="Botao atualizavel" actionnListenter="#{managedBeanTest.processAction}"

Já o componente que vai ser atualizado, é colocado normalmente na pagina jspx -- a única diferença é que você terá que bindar o componente pai (o painelLayout ou qualquer outro) e o componente que vai ser atualizado no managedBean.

o código do proccessAction é mais ou menos assim:

public void proccessAction(ActionEvent event){
//componente a ser atualizado
outputText.setValue("Esse componente foi atualizado via codigo!");
//parentComponet = componente pai
AdfFacesContext.getCurrentInstance().addPartialTarget(parentComponet);
}



O único truque é pegar a instanciá do adffaces e adicionar o componente pai para ser atualizado. =D
(Eu tentei colocar o componente diretamente, mas não deu certo =( )

Lembrando de colocar o componente que vai ativar a atualização como partialSubmit=true para que não haja um refresh total da página.

terça-feira, 4 de setembro de 2007

O que é ADF?

Primeiro, é necessário explicar o que é JSF, já que o ADF é uma implementação do JSF.

JSF é um framework Java que auxilia o desenvolvedor a criar interfaces de usuários (UI - User Interfaces).
Ao contrário de outros framework, que são orientados pelo modelo MVC (Model-View-Controller -- onde cada
parte da aplicação é separada e só sabe fazer a sua parte o Controller controla o acesso aos componentes View;
Model contem as regras de negocio; View só contem as interfaces) o JSF é component-driven ("orientado a componentes": onde o
estado dos componentes são salvos na sessão a cada request e são restaurados depois do request).

Usando esse framework, a Oracle criou seu ADF Rich Client, que nada mais é que os componentes JSF (botões, tabelas...) remodelados
e potencializados para as tecnologias Oracle -- usando além do component-driven, o MVC.

Em 2006 a Oracle doou o ADF Faces para a Apache, pelos seguintes motivos:

"(...)Oracle believes in Java, our middleware and tools strategy relies heavily on the Java platform. We also believe JSF is the most promisingusertechnology. Java needs to have a good component based UI framework to compete with .Net. In order for JSF to be successful andaccelerate itsadoption, Oracle decided to provide (free of charge) a rich set of UI components to help web application developers who chooseJavaServer Faces. Therefore we decided to get behind JSF and MyFaces by making the ADF Faces donation to Apache. Moving forward, we are hoping that this opensource contribution will spark additional interest and that more vendors are going to join the MyFaces project and strengthenthe Faces community.(...)"

Então, o ADF virou MyFaces Trinidad.

Mas isso não quis dizer que o ADF morreu. Até porque, segundo a propria Oracle: "O ADF é extremamente importante para as tecnologias Oracle, já que nossas UI são baseados nele".

Então a Oracle, usando da licença da Apache, criou suas novas versões do ADF -- incluindo o 11g que utiliza, além do JSF, o Ajax e toda tecnologia da Web 2.0.