Navegação: Home »

Bem-vindo(a) ao Wicket: Framework JAVA Web.

Posted by Raphael Monroe On outubro - 14 - 2009 2 COMMENTS

apache-wicket

Inicio aqui, uma série de tutoriais sobre o Wicket, este maravilhoso framework com o qual venho tendo enorme prazer em trabalhar. Fornecendo incríveis facilidades para o desenvolvimento Web em JAVA, o Wicket vem se tornando um dos melhores da categoria.

Minha idéia é seguir a linha de raciocínio que utilizei durante a minha aprendizagem. Entretanto, isso não significa que sou um expert, intocável e mestre Wicket. Ainda estudo e aprendo dia após dia. Portanto, ao constatarem erros, fiquem à vontade para comentar sobre eles. Assim, juntos buscaremos sempre as melhores soluções.

A motivação inicial pra a série de tutoriais foi a falta de documentação, pois o Wicket é relativamente novo e, portanto, ainda carece de tutoriais, exemplos e discussões. Espero, com os artigos, difundir um pouco mais as informações sobre o framework porque “tudo que é bonito é pra se mostrar” .

Pois bem, antes de fazermos uma breve introdução sobre o Wicket, gostaria de citar as referências mais utilizadas por desenvolvedores que utilizam o framework atualmente.

wicket-reference

Apache Wicket: Site oficial do projeto. Apresenta introdução, documentação sobre alguns componentes e exemplos de utilização.

Reference Library: Pertence ao site oficial. Explica como fazer várias coisas com o Wicket. Uma boa pedida para os iniciantes. Vale a pena conferir.

Wicket in Action: Ótimo livro para quem deseja inicar os estudos. Apresenta uma boa didática. com vários exemplos. O autor vai, durante o livro, construindo um aplicativo para venda de queijos online. Com este exemplo, os leitores aprendem fácil e rapidamente os conceitos importantes do framework.

Wicket Stuff: Possui exemplos e vários projetos relacionados ao Wicket. Podemos encontrar alguns bons componentes para utilizarmos em conjunto com o framework.

introduction-wicket

Atualmente, existem diversos frameworks para programação JAVA Web, cada qual possuindo prós e contras. Assim, no princípio de um novo projeto, vários programadores chegam a ficar um tanto quanto preocupados no momento da escolha do melhor framework, dadas as inúmeras alternativas, conforme podemos ver na figura a seguir:

Figura 1: Frameworks Web

Figura 1: Frameworks Web

Uma possível pergunta pode surgir: “Bom Raphael, se existem tantas opções, porque escolher o Wicket?”

Peço a permissão de responder essa pergunta explicando alguns termos como stateful, stateless e também sobre clareza de código e separação coerente entre os “dois mundos”, no caso, HTML e JAVA.

statefulprogamming

Creio que todos os interessados em programação já pararam pra pensar em como é fácil (leia-se menos difícil) se programar em Java, visando o desenvolvimento de aplicativos Desktop. A facilidade a que me refiro diz respeito ao controle de componentes/variáveis existentes no projeto. Podemos criar vários painéis/frames/modais sem a necessidade de controlar requisições entre elas. Isso porque, todo esse controle do estado da conexão é “automático”, ou seja, o estado da conexão é sempre mantido. Tal fato, caracteriza Statefull Programming.

statelessprotocol

Muitas vezes ao utilizarmos aplicações web, imaginamos que a programação é feita igualmente à Desktop. Ao contrário, o protocolo HTTP não fornece nenhuma facilidade “embutida” para continuar interações entre as páginas, ou seja, ele não possui nenhuma informação sobre o estado da aplicação (stateless). Tal tarefa fica a cargo do desenvolvedor.

A técnica comumente utilizada para controlar o estado é passar informações diretamente pela URL, por exemplo:

http://www.raphaelmonroe.com/index.php?page_id=3&opentab=5


O simples código acima ilustra a passagem de parâmetros visando um controle da aplicação. No caso, foi solicitada a página com ID=3 e nela, deve-se abrir a aba 5.

Mas como tudo apresenta falhas, passar informações pela URL possui vários questionamentos à respeito de segurança/autenticação e, nos dias de hoje, é difícil imaginar uma aplicação web, na qual todos os estados são controlados por parâmetros no endereço.

jsfjavahtml
Creio que quase todos os desenvolvedores JAVA Web, iniciaram seus estudos e projetos (e ainda continuam) seguindo o caminho : Servlets, JSP, JSF, Facelets, RichFaces e por ae vai. Um dos motivos que levam os desenvolvedores para essa estrada, é a quantidade de informações/documentação/exemplos existentes na web. Evidencia-se aqui, um grande problema para os desenvolvedores : a falta de conhecimento teórico.

Em muitos fóruns que frequento, me deparo com inúmeras dúvidas que poderiam ser respondidas com um mínimo de conhecimento teórico. Assim, desenvolvedores vêm utilizando exemplos da net para “aplicações sérias” no âmbito corporativo, sem ao menos se preocuparem com o que estão fazendo, “remendando” e “arresorvendo na gambiarra”, literalmente. Não estou aqui crucificando frameworks e/ou programadores, só estou alertando para o fato de que “teoria é preciso”.

Como falei em JSF, gostaria de indicar um dos melhores posts que já vi à respeito: “O que todo bom desenvolvedor JSF deveria saber

Bom, mas porque falar em clareza de código? No site oficial do Wicket, encontramos a seguinte frase à respeito do desenvolvimento em JSP, tendo em vista a presença de código JAVA + HTML :

JSP is by far the worst offender, allowing the embedding of Java code directly in web pages, but to some degree almost all of the frameworks from the list (except Tapestry) above introduce some kind of special syntax to your HTML code.

A evolução das empresas de TI contribui para maiores “divisões” em projetos. A idéia de Webmasters, os quais faziam design, código, etc já está ultrapassada. Hoje, encontramos designers, coders, testers, dentre outros. Aqui, evidencia-se um importante requisito: organização e clareza em todas as partes do projeto, visto que muitas empresas até mesmo terceirizam serviços de design. Portanto, quanto maior a separação entre HTML + CSS e JAVA, maior o rendimento e sucesso de um projeto.

escolha-wicket

Ao se programar com o Wicket, você esquece que está desenvolvendo um aplicativo web. Isso porque o desenvolvedor está livre para programar em JAVA com todos os conceitos de orientação a objeto, o qual é stateful. Ou seja, você estará desenvolvendo componentes stateful para um ambiente stateless!! WTF!!!
Essa é a grande “sacada” do Wicket. O controle do estado da aplicação é automático.

Um outro aspecto importantíssimo que me ajudou muito, é possibilidade de herança, tanto no JAVA quanto no HTML!!! Basta utilizarmos namespaces pré-definidos e compatíveis com xhtml.

Com o Wicket o controle é feito orientado à componentes e não à páginas. Tal fato visa facilitar os programadores desktop acostumados com o Swing e awt. Vale ressaltar também o fato de que você nunca verá “códigos lógicos” em páginas HTML, as quais apresentarão somente códigos estáticos, sendo a lógica totalmente desenvolvida em JAVA. Por exemplo, se você deseja imprimir na tela uma lista de clientes, basta o seguinte código HTML, ficando a definição do dataview para o código JAVA:

1
2
3
4
5
6
7
<table>
   <tr wicket:id="clientsList">
      <td>
         <span wicket:id=”client_name” />
      </td>
   </tr>
</table>

Para terminar e não deixar o post muito extenso, uma frase que resume bem os conceitos do Wicket, retirada do site oficial:

Wicket is all about simplicity. There are no configuration files to learn in Wicket. Wicket is a simple class library with a consistent approach to component structure. In Wicket, your web applications will more closely resemble a Swing application than a JSP application. If you know Java (and especially if you know Swing), you already know a lot about Wicket.

“Wicket é simplicidade. Não é necessário aprender a criar arquivos de configuração (como aqueles imensos xml’s de outros frameworks, pois com o wicket é tudo automático). Wicket é uma biblioteca que permite uma programação muito próxima á programação por componentes, pois com este framework, sua aplicação será mais parecida com uma aplicação Swing do que uma mesma JSP. Se você conhece Java (especificamente o Swing), você já possui grande conhecimento sobre o Wicket.”

Em próximos posts, iniciaremos nossos estudos através de exemplos práticos, abordando desde a configuração da IDE até a criação de suas primeiras aplicações utilizando o Wicket.

Até Mais,

[]’s

Tutorial: Upgrade para o Firmware 5.03

Posted by Raphael Monroe On julho - 3 - 2009 119 COMMENTS

psp-5.03

Nos comentários dos artigos “Tutorial : Como desbloquear o PSP 3000” e “Tutorial de Instalação do ChickHEN R2 – PSP1000, PSP2000, PSP3000” percebi que alguns usuários estavam com dificuldades para fazer o Upgrade de Firmware para a Versão 5.03. Continue lendo este post...

Tutorial : Como desbloquear o PSP 3000.

Posted by Raphael Monroe On junho - 9 - 2009 522 COMMENTS

Olá Leitores,

Comunico-lhes que já existe a possibilidade de rodar um Custom Firmware(CFW) em um PSP 3000. Com isso, os usuário do PSP 3k, já poderão ter acesso à inúmeras funções do M33, dentre elas : Carregamento de ISO’s/CSO’s, Carregamento de jogos de PSX.

No tutorial a seguir, explicarei os passos principais para desbloquear o PSP 3000 , rodando um CFW.

Para tanto, precisaremos baixar o 5.03 GEN-A Custom Firmware. Descompacte-o em um local de sua escolha.
OBS: O arquivo gerará um falso positivo para Trojan. Eu rodei aqui no meu PC. Fique tranquilo, o arquivo está limpo!

Primeiramente, você deve instalar o ChickHen R2 em seu PSP 3000. Não sabe como? Confira o tutorial.

Após instalar o Chickhen, siga os seguintes passos:

1-) Conecte o PSP ao seu computador através do cabo USB.

2-) Dê um duplo clique em “LAUNCH-ME” (Dentroo da pasta onde você descompactou o GEN).

3-) Selecione as seguintes configurações:

  • PSP MODEL: PSP 3000 **** UPDATE(08/07/09): Se possuir PSP 2000, selecione-o ao invés do 3000.
  • MODE: FULL
  • Digite o Drive no qual o seu PSP é reconhecido. No meu caso, digitei G

4-) Aperte Start. Pronto! Você receberá uma mensagem(“Done”) confirmando que os arquivos necessários foram copiados com sucesso!

5-) Remova o cabo USB (Não se esqueça de fazer a “Remoção segura de Hardware”).

6-)
Vá até a pasta Game (No menu do PSP) e execute o aplicativo chamado “INSTALLER-LOADER” (Ele foi copiado, junto com outros arquivos, através do processo feito em 3-) e 4-).

7-) Quando o aplicativo abrir, aperte L ou R para copiar alguns módulos necessários. (Faça isso apenas 1 vez. No caso de um reset do PSP, você não precisa executar esse passo novamente, ou seja, não é necessário apertar L ou R).

8- ) Após a cópia, pressione O(bolinha) para iniciar o CFW.

9-) Enjoy :)

UPDATE (18/06/09) : CONSEGUIU DESBLOQUEAR? COMENTE E POSTE OS DESAFIOS ENFRENTADOS. OS LEITORES AGRADECERÃO =)

Considerações Importantes:
1- O RaphaelMonroe.com não se responsabiliza por qualquer dano causado à seu console devido ao mal uso de informações aqui contidas.

2- Esse processo é relativamente seguro, pois uma vez reiniciado o PSP (Hard Reset), se faz necessária a execução de todos os passos aqui descritos, exceto o 7-), como já foi citado. Isso ocorre porque em nenhum momento escrevemos na FLASH. Se quiser utilizar algum aplicativo que escreva na Flash, faça-o por sua conta e risco!

3- Para rodar uma ISO, por exemplo, basta criar uma pasta chamada “ISO”(sem aspas) na raiz do memory stick e copiar a imagem dentro de tal pasta. Após isso, vá em GAME e escolha o jogo.
OBS: SOMENTE É PERMITIDO RODAR ISO’s/CSO’s SE VOCÊ POSSUI O UMD DE TAL APLICATIVO/GAME/FILME, FAZENDO APENAS BACKUP’S. QUALQUER OUTRA FORMA (DOWNLOAD DE GAMES ETC) CARACTERIZA PIRATARIA!!!

UPDATE(24/06/09) : Alguns leitores estão tendo problemas no momento de iniciar o ISO. Na tentativa de iniciar o jogo, aparece uma msg : “The game could not be started” (O jogo não pode ser iniciado). Para corrigir esse problema , no menu do seu PSP aperte “SELECT” e selecione em “UMD ISO MODE” a opção “Sony NP9660″. Darei maiores informações à respeito desse menu em próximos artigos.

UPDATE(03/11/09): Já se encontra disponível no blog, um tutorial explicando os passos para rodar jogos que necessitem de FW 5.55+. Você pode acessar o artigo aqui.

4-Leia todos os passos atentamente! Se alguma dúvida surgir, pergunte antes de executar o procedimento!

Espero ter ajudado!

[]’s.

Este post fez você economizar mais de R$ 100,00? Que tal doar apenas R$2,00?

A comunidade PSP recebeu uma grande notícia hoje. Foi lançada a versão 1.0 do CFW para instalação através do ChickHen. Assim, muitas funcionalidade do CFW M33 poderã0 ser usadas por aqueles que utilizam o ChickHen para aperfeiçoar o seu console portátil. Entretanto, a dita versão 1.0 não é compatível com o PSP 3000. Seguem algumas notas de lançamento:

1 – O que é o CFW Enabler?
É um programa que ativa as funções do CFW M33 através do ChickHEN.

2- O que eu preciso para rodá-lo?
Um PSP Slim, FW 5.03 com ChickHen R2.

3-Compatibilidade
Compatível com todas as funções do M33, exceto o Recovery e o POPS (PSX games).

4-FAQ

  • Carrega ISO`s? Sim.
  • Funciona no PSP 3000? NÃO. Isso pode queimar o seu console 3k.
  • É esperada alguma versão para o PSP 3000? Alguns usuários reportaram testes que obtiveram sucesso. Entretanto, faça por sua conta e risco!!

O Tutorial de instalação e uso é bem simples.

1- Baixe o CFW Enabler v1.0.

2-Copie a pasta “CFWEnabler” para “ms0:/PSP/GAME” , ficando assim : “ms0:/PSP/GAME/CFWEnabler/EBOOT.PBP”, onde “ms0″ representa a raiz do memory stick.

3 - Se você ainda não instalou o ChickHen, veja como fazê-lo em meu artigo “Tutorial de Instalação do ChickHEN R2“. Após isso, inicie a HomeBrew “CFW Loader” (indo em Games/Memory Stick no menu do PSP). Na primeira vez que o fizer, será necessário instalar os módulos na memória Flash.

4- Após instalar os módulos necessários, pressione X para iniciar o CFW.

5- Enjoy :)

Lembrando que o processo acima deve ser feito por sua conta e risco. Não me responsabilizo por qualquer dano ao seu console devido à má utilização das informações acima ou alguma incompatibilidade que, por ventura, ocorra.

Um Abraço!

P.S: Se alguma dúvida surgir, por favor, poste seu comentário antes de realizar o procedimento!

Fonte: PSPSlimHacks

Este post fez você economizar mais de R$ 100,00? Que tal doar apenas R$2,00?

Boa tarde leitores,

Hoje, estou postando o seguinte vídeo tutorial, mostrando as novas funcionalidades do Windows 7. Tentei abordar as características pelas quais mais me interessei. Espero que através do vídeo, vocês tenham uma idéia sobre essa nova versão lançada recentemente pela Microsoft.

OBS: Essa versão instalada é a Release Candidate (RC) liberada pela Microsoft para livre download.

PSP 3000

Bom dia caros leitores,

Hoje apresentarei à vocês, um pequeno glossário do mundo PSP. Creio que muitos ainda possuem alguma dúvida à respeito de termos relacionados ao portátil, bem como suas aplicações e afins. Serei bem objetivo, tentando passar a idéia principal de cada coisa, visando uma rápida memorização para todos. Assim, através desse mini tutorial, vocês poderão participar de qualquer discussão relacionada ao PSP, sem ter medo de não conhecer alguma coisa =).

Continue lendo este post...

Tutorial PHP 5 – Construção de Layout – Parte 2

Posted by Raphael Monroe On junho - 1 - 2008 9 COMMENTS

Requisitos: Artigo “Tutorial PHP5 – Construção de Layout“.

Olá pessoal,

Seguindo com nosso tutorial de criação de layouts utilizando o php 5, iremos criar a classe “header”, a qual será responsável pela criação do cabeçalho do site(topo,imagem do topo, título e descrição).

Utilizarei CSS para o design. Se surgir alguma dúvida a respeito das regras utilizadas, poste seu comentário ou visite o site do maujor. Lá, você encontrará diversos artigos relacionados à criação e utilização de regras css.

Vamos ao código comentado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<style type="text/css">
<!--
 
/* Regras CSS */ 
#tudo{
	background-color:#CCCCCC;
	width:800px;
	height:600px;
	float:left;	
}
 
#topo{
	width:800px;
	height:100px;
	float:left;
	background-color:#FFFFFF;
	border:1px solid #000;
}
 
 
-->
</style>
 
<?php
 
//Criado por : Raphael Monroe Marcondes
// BLOG : www.raphaelmonroe.com
 
class head
{
	//construtor da classe...
	function __construct()
	{
	   //Chama a função de inclusão de início de código HTML...
	   $this->inclui_HTML();
	   //Chama a função de criação do topo...
	   $this->cria_topo();
	   //"Fecha" as tags HTML que foram abertas...
	   $this->fecha_tags();
	}
 
	function inclui_HTML()
	{
	    //HTML...
	   echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
	   echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
	   echo "<head>";
	   echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />";
	   //Título da página (será melhorado posteriormente a forma de dar títulos á suas paginas)...
	   echo "<title>MINHA PÁGINA</title>";
	   echo "</head>";
	   echo "<body>";	
	}
 
	function cria_topo()
	{
	   //Cria dois boxes, um que engloba todo o site e o outro sendo o topo.
	   echo "<div id=\"tudo\">";
	   echo "<div id=\"topo\"></div>";
	}
 
	function fecha_tags()
	{
	    //Fecha a a div "tudo"...
	    echo "</div>";
            echo "</body>";
	    echo "</html>";
	}
 
}	
?>

Salve o código acima como “head.class.php”.
Com essa nova classe, já podemos obter nossa primeira visualização de página!
Basta criar o index:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
$index = new index();
 
class index
{
	function __construct()
	{
	  //Inclui as classes necessárias...
	  $this->inclui_classes();
	  //Criando a página index...
	  $this->constroi_index();
	}
 
	function inclui_classes()
	{
	    //Incluindo a classe layout...
	    include_once("layout.class.php");
	}
 
	function constroi_index()
	{
	    //Criando uma nova página através de layout...
	    $this->layout = new layout();
	}
}
?>

Salve o código acima como “index.php”.

Portanto, só para lembrá-los, até agora possuímos 3 arquivos : “layout.class.php”, “head.class.php” e “index.php”.

Basta agora, salvá-los na mesma pasta e abrir o index. Você obterá a primeira visualização da página!

OBS:Para conseguir “rodar” o index sem erros, é necessário comentar, na classe “layout”, as linhas que incluem as classes que ainda não foram feitas, como por exemplo, “menu_nav.class.php”.

Para facilitar, você pode baixar todas as classes(inclusive o “layout.class.php” com as linhas comentadas).
Lembrando à todos que estou tentando ser o mais direto possível. Qualquer dúvida é só postar seu comentário!

[]`s

Tutorial PHP 5 – Construção de Layout.

Posted by Raphael Monroe On maio - 22 - 2008 10 COMMENTS

Olá caros leitores,

Hoje abordarei como construir aplicações em php, utilizandoa idéia de classes e objetos.

Não vou, entretanto, abordar aspectos teóricos sobre classes e objetos nesse tutorial. Meu objetivo, neste primeiro tutorial da série, é mostrar os primeiros passos para construção de layouts utilizando orientação à objeto.

Então, mãos à obra! Nosso “desenho final” será um layout de três colunas, com menu de navegação, header e rodapé, como mostra a figura a seguir :

Continue lendo este post...

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
| Política de Privacidade |