<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Alone &#187; Java</title>
	<atom:link href="http://www.nelsonalone.com.br/category/java-jee-jme/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nelsonalone.com.br</link>
	<description>A tecnologia de forma simplificada</description>
	<lastBuildDate>Fri, 30 Apr 2010 01:18:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ajax com RichFaces</title>
		<link>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/</link>
		<comments>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 08:42:37 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=417</guid>
		<description><![CDATA[Desenvolver aplicações para Web que requer bom desempenho, clareza no conteúdo e flexibilidade não é tarefa fácil até para os desenvolvedores experientes. O principal item que deve ser levado em conta é o bom desempenho pelo fato de influenciar na maioria dos valores que podem ser agregados em um produto voltado para Web. Nesse ponto, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desenvolver aplicações para Web que requer bom desempenho, clareza no conteúdo e flexibilidade não é tarefa fácil até para os desenvolvedores experientes. O principal item que deve ser levado em conta é o bom desempenho pelo fato de influenciar na maioria dos valores que podem ser agregados em um produto voltado para Web. Nesse ponto, existem diversas dicas que podem ser seguidas através da iniciativa da Google, o <a href="http://code.google.com/intl/pt-BR/speed/articles/">Let’s make the web faster</a> , que apresenta uma série de dicas para compactar o conteúdo ao máximo para tornar a transferência da páginas mais rápida.</p>
<p style="text-align: justify;">Existem recursos que viabilizam o desempenho em aplicações Web de forma aceitável para o usuário final. Entre elas, na minha opinião, o mais adequado é o Ajax. Existem outras alternativas como o Flex, porém, dependendo da aplicação desenvolvido pode haver demora no carregamento e processamento das requisições, mesmo sendo carregada uma única vez. Com base nisso, a utilização do Flex sobre uma intranet é uma excelente opção. Como o contexto é a internet, soluções Ajax levam vantagem pelo fato do conteúdo ser apresentado em HTML/XHTML e pelo fato de não utilizar nenhum plugin para os navegadores. Porém, quando se trata de JavaScript, muitos desenvolvedores tentam evitar por ser mais uma linguagem necessária para o aprendizado para desenvolver uma aplicação. Ironicamente, um desenvolvedor web necessita saber no mínimo três linguagens para desenvolver uma aplicação utilizável.</p>
<p style="text-align: justify;">Em alguns casos, a utilização do javascript em alguns projetos torna-se complicada devido a dificuldade, principalmente quando projetos são feitos utilizado AJAX. Isso encorajou a criação de inúmeros frameworks e componentes que tentam tornar o desenvolvimento de aplicações que utilizam AJAX mais simples e fáceis de manter.</p>
<p style="text-align: justify;">JQuery é um framework que tenta facilitar ao máximo a utilização de JavaScript nas páginas, sendo que, é a ferramenta mais utilizada quando se trata de recursos para a linguagem. O que chama mais atenção são os efeitos e a facilidade para desenvolver com essa ferramenta.</p>
<p style="text-align: justify;">A comunidade Java é privilegiada com inúmeros frameworks e APIs que facilitam o desenvolvimento resolvendo problemas de vários segmentos, principalmente WEB. Acredito que, devido a dificuldade de desenvolver aplicações WEB apenas com JSP, Servlets, Filters, TagLibs, etc., os desenvolvedores tentaram diminuir essa dificuldade com frameworks, tai então a explicação da grande quantidade de frameworks WEB para Java.</p>
<p style="text-align: justify;">Em Java, atualmente, o frameworks WEB mais utilizado, depois do Struts (legado) , é o JSF. Talvez devido ao fato de ser um produto da Sun e estar coberto por uma especificação. Não cheguei a ver detalhes da especificação 2.0, mas nas versões anteriores o desenvolvimento ainda é maçante e chato, onde existem situações que necessitam cada vez da habilidade do desenvolvedor. Porém, muito foi feito para tentar corrigir os problemas e ao mesmo tempo agregar valor ao framework com as extensões repletas de componentes para ser utilizados nos projetos, uma dessas extensões é o <a href="http://www.jboss.org/richfaces">RichFaces</a>. Atualmente encontra-se na versão 3.3 e vem uma série de componentes que podem funcionar sobre uma camada AJAX. A facilidade é tanta que a forma de desenvolver é a quase a mesma que desenvolver com JSF puro. Com isso, está a disposição do desenvolvedor recursos de Drag’nDrop, calendários bem elaborados, efeitos, e uma série de componentes bem desenvolvidos que funcionam sobre AJAX.  A configuração do RichFaces também é simples, basta adicionar alguns filtros, escolher o template, ou desenvolver um, configurar um ou dois XMLs e adicionar algumas taglibs no projeto e pronto, seu projeto já está configurado.</p>
<p style="text-align: justify;">O objetivo desse artigo não é de escrever um tutorial e nem comparar as ferramentas, é de alertar sobre a má utilização dos recursos AJAX na aplicação com o RichFaces. O framework utiliza JQuery para fazer os efeitos e manipular do DOM HTML/XHTML, com isso, o conteúdo do framework vai junto com o projeto. A infra-instrutora de um projeto AJAX é repleta de JavaScript e quando projetos se tornam  complexos, conseqüentemente, a complexidades de manter os script se eleva. Com isso, existe uma estrutura de arquivos javascript pronta para suportar a arvore JSF gerada a cada requisição tornando a estrutura pesada ao ponto de ser desvantagem desenvolver a aplicação baseada em requests sobre toda a página.</p>
<p style="text-align: justify;">Destrinchando o conteúdo carregado pelo browser, existe um tipo de arquivo que representa a chamada de sua URL que é respondida a cada requisição, é configurada no web.xml na definição da chamada para a execução do servlet. Nesses arquivos contem o emaranhado do Javascript que o servidor envia a cada requisição. No meu caso, esses arquivos ficaram em torno de 933Kb, é um tamanho considerável quando se trata de requisições. Isso pode deixar sua aplicação uma carroça quando sua aplicação for pro ar.</p>
<p style="text-align: justify;">Nessa situação, a solução para esse problema é aplicar ao máximo os recursos AJAX na aplicação, fazendo com que apenas um trecho da página possa ser renderizada e não todo a cada requisição. Isso diminui bastante o tráfego na rede tornando a aplicação um pouco mais leve. Nas primeiras solicitações a aplicação fica muito lenta, mas quando o conteúdo está no cache o desempenho fica razoável.</p>
<p style="text-align: justify;">Para comprovar, fiz um teste desenvolvendo uma página simples com um CSS pequeno e sem nenhum arquivo JavaScript amais. Fiz as configurações dos pacotes JSF e do RichFaces descritas em seus devidos manuais respectivamente. Fiz com que a primeira página utilizasse um apenas um <em>&lt;a4j:region &gt; </em>contendo alguns componentes, como; <em>&lt;a4j:form&gt; </em>e  um &lt;a4j:commandLink&gt;. Isso é suficiente para habilitar o suporte AJAX do framework, ou seja, carregando todos os JavaScript responsáveis por essa funcionalidade.</p>
<p style="text-align: justify;">Na documentação do framework não existem tópicos que auxiliem a diminuir o tamanho do conteúdo, isso encoraja a utilização massiva dos recursos em todas as páginas e evitando request desnecessários. Não quero dizer que o framework seja ruim, pelo contrário, é uma ótima ferramenta, porém, deve ser utilizada com cuidado. A utilização de AJAX puro é uma excelente opção.</p>
<p style="text-align: justify;">[]s.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um dia o pilar quebra</title>
		<link>http://www.nelsonalone.com.br/2009/10/07/pilar/</link>
		<comments>http://www.nelsonalone.com.br/2009/10/07/pilar/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 16:44:54 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jvm]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=356</guid>
		<description><![CDATA[Quando uma empresa investe tempo e mão de obra para desenvolver algum framework para seu uso próprio, ou até mesmo minimizar a complexidade da utilização de outros, significa que o nível de maturidade em uma determinada tecnologia se elevou ao ponto tornar o processo de desenvolvimento, com o uso dessa tal tecnologia, mais ágil. Estratégias [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Quando uma empresa investe tempo e mão de obra para desenvolver algum framework para seu uso próprio, ou até mesmo minimizar a complexidade da utilização de outros, significa que o nível de maturidade em uma determinada tecnologia se elevou ao ponto tornar o processo de desenvolvimento, com o uso dessa tal tecnologia, mais ágil.</p>
<p style="text-align: justify;">Estratégias utilizadas para obter essa flexibilidade variam dês de desenvolver templates, classes abstratas, soluções que utilizam padrões de projetos que visam a reutilização, desenvolver forks de frameworks open source para se adequarem ao modelo de desenvolvimento da empresa. Essas alternativas visam poupar tempo com situações de um cadastro simples, persistência auditada, autenticação, etc.</p>
<p style="text-align: justify;">Estratégias como essas vieram a tona nos tempos do Struts e dos EJBs 2.*, já que era notável a necessidade de eliminar os detalhes de implementação do struts (forms, templates, actions customizadas, autenticação, acesso a recursos de serviços distribuídos, etc). Já os EJBs, mesmo em versões antigas, demonstram robustez, confiabilidade e segurança para as aplicações corporativas. Daí veio os patterns J2EE, XDoclets com a finalidade de integrá-los e diminuir, pelo menos um pouco, o grau de acoplamento entre os serviços.  Com isso, a estratégia de diminuir o tempo de desenvolvimento seria válido devido a complexidade dessas tecnologias e da grande quantidade de arquivos XML necessário para configurá-los.</p>
<p style="text-align: justify;">Essas tecnologias sobreviveram até hoje e ainda recebem manutenção de empresas que as tem como base de seus serviços. É justificável, pois muitos recursos investidos para o aprimoramento dessas ferramentas geralmente são altos e algumas vezes são peças-chave em vários projetos. Na maioria das vezes, principalmente em projetos com particularidades específicas, as soluções desenvolvidas para o mesmo geralmente tornam-se parte do framework da empresa para, caso necessite, ser utilizada em projetos futuros, fazendo o framework “inchar”.</p>
<p style="text-align: justify;">Vendo esses problemas agora vem uma pergunta no ar: Mas porque cargas d’água fizeram essa joça? Porque deixaram isso acontecer? Ninguém previu isso? Eu também queria a resposta para essas perguntas, porém, muitos fatores podem ter ajudado a formar essa bola de neve; falta de experiência da equipe, má vontade, individualismo, falta de visão. Quem já trabalhou ou trabalha em corporações que tem essa mentalidade sabe do que eu estou falando. É nesse ponto que a compreensão dos pilares que a empresa dispõe para o desenvolvimento de seus projetos.</p>
<p style="text-align: justify;">Quando uma empresa estabelece um pilar sua base deve ser rígida. A rigidez significa aceitar a evolução constante do código e ao mesmo tempo das libs, frameworks e JVMs que serão utilizadas futuramente nos projetos da empresa. Caso isso não aconteça, a base do pilar não suportará a evolução do framework podendo até se quebrar. Com isso, os bugs nos projetos que utilizam uma infra-instrutora arcaica vêm a tona. Quem trabalha especificamente com Java deve ter experiência com essa abordagem.</p>
<p style="text-align: justify;">Uma boa equipe, sendo bem gerenciada, desenvolveria um framework que fosse, no mínimo, flexível. De forma que suporta, no mínimo, atualizações de bibliotecas intermediárias assim como atualizações da JVM, já que está sempre em constante evolução e cada momento seu desempenho está sendo sempre incrementado. Acredito que medidas simples tornariam a infra-estrutural de uma empresa evoluindo corretamente e principalmente independente de framework.</p>
<p style="text-align: justify;">Isso é possível de fazer? Sim! Existem provas? Sim e são bem claras. É possível encontrar isso constantemente em projetos open source. M uma simples lida nos changelogs é possível ver a constante atualização de bibliotecas do projeto, substituição de jars e suas adaptações conforme as mudanças. Isso é um pouco trabalhoso porem recompensável, pois a base do pilar fica cada vez mais forte.</p>
<p style="text-align: justify;">A linguagem Java, juntamente com a JVM, está em constante evolução. Desenvolver projetos (ou frameworks) fadados a utilizar uma versão específica da JVM é desperdício de tempo. Projetos como esses dificilmente suportarão a evolução, a longo prazo, de seus elementos fundamentais (JVM e frameworks). As mudanças ficarão restritas apenas a uma versão específica de sua estrutura, portanto caso cresça muito o pilar irá se partir.</p>
<p style="text-align: justify;">[]s</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/10/07/pilar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate: Schema export através de tasks do ANT</title>
		<link>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/</link>
		<comments>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 04:33:19 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Persistência]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=336</guid>
		<description><![CDATA[É inegável que o hibernate é um excelente framework de mapeamento objeto relacional. Seus recursos de mapeamento, persistência, transação simplificadas, suporte a queries SQL, HQL, criteria, entre outros, justificam a sua utilização em massa pela comunidade Java. Não foi por acaso sua utilização como modelo para a especificação JPA. Alem das funcionalidades do contexto de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">É inegável que o hibernate é um excelente framework de mapeamento objeto relacional. Seus recursos de mapeamento, persistência, transação simplificadas, suporte a queries SQL, HQL, criteria, entre outros, justificam a sua utilização em massa pela comunidade Java. Não foi por acaso sua utilização como modelo para a especificação JPA.</p>
<p style="text-align: justify;">Alem das funcionalidades do contexto de persistência também podemos contar com as funcionalidades extras que foram desenvolvidas pelo time de desenvolvimento, hoje pertencente a JBoss. Estou falando do pacote hibernate-tools.jar, contido no plugin feito para o eclipse, com o intuito de auxiliar no processo de configuração, mapeamento, importação de schemas e mecanismo de interpretação e execução de HQL. O link para download do plugin encontra-se <a href="http://downloads.sourceforge.net/jboss/HibernateTools-3.2.4.GA-R200905070146-H18.zip">aqui</a>.</p>
<p style="text-align: justify;">Tive a necessidade de fazer com que todo o schema fosse exportado para o banco de dados ao executar uma simples task do Ant. Funcionalidade que facilitaria muito a vida da equipe ao modificar o mapeamento das entidades do projeto, sendo apenas necessário executar a task para exportar as modificações para o SGBD. Para isso, desenvolvi uma task personalizada para solucionar esse problema. A task funcionava bem, mas chegou um ponto que não nos atendia. Portanto, vi que uma boa alternativa seria utilizar as tasks do hibernate-tools.</p>
<p style="text-align: justify;">O pacote hibernate-tools.jar contem um conjunto de tasks que permitem a execução de procedimentos básicos de persistência através de simples tasks do <a href="http://ant.apache.org/">Ant</a>. As tasks são variadas, portanto é possível utiliza-las para; exportar schemas, gerar os inserts do mapeamento em um arquivo .sql, gerar os hbm.xml (se não tiver utilizando anotações) entre outras coisas. Mais um detalhe: o pacote hibernate-tools.jar é completamente independente do plugin.</p>
<p style="text-align: justify;">A configuração para utilizar as tasks a princípio é simples, porém levei um tempo para acertar, já que meu projeto estava mal configurado e gastei muito tempo para descobrir o problema. Vou levar em conta que o seu projeto está devidamente configurado e fazendo todas as operações básicas (insert, update e delete) no banco de dados.</p>
<p style="text-align: justify;">Para uma simples exportação do schema para o banco de dados, a primeira coisa que você deve fazer é adicionar o pacote hibernate-tools.jar no classpath do projeto. Após isso é necessário incluir uma referencia a classe que representa a task. Nesse caso, assim como está abaixo:</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong><code>&lt;taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="path.lib" /&gt;</code></strong></p>
<p style="text-align: justify;"><strong><br />
</strong></p>
<p style="text-align: justify;">Após isso, é necessário incluir um target que fará todo o trabalho sujo. Nessa target deve conter, dentro do <code>&lt;hibernatetool&gt;</code>, no mínimo as tasks <code>&lt;annotationconfiguration/&gt;</code> e <code>&lt;hbm2ddl/&gt;</code> para fazer o processo de configuração e a exportação de todas as configurações de mapeamento incluídas nas classes. Vamos ver o detalhe abaixo:</p>
<p style="text-align: justify;"><code><br />
<strong> &lt;target name="generate" depends="compile"&gt;<br />
&lt;hibernatetool destdir="${dir.build}/generated"&gt;<br />
&lt;classpath&gt;<br />
&lt;path location="${dir.out.classes}"&gt;&lt;/path&gt;<br />
&lt;/classpath&gt;<br />
&lt;annotationconfiguration propertyfile="${dir.out.classes}/hibernate.properties"  configurationfile="${dir.out.classes}/hibernate.cfg.xml" /&gt;<br />
&lt;hbm2ddl drop="true" create="true" export="true" outputfilename="../schema.sql" delimiter=";" format="true" /&gt;<br />
&lt;hbm2dao /&gt;<br />
&lt;/hibernatetool&gt;<br />
&lt;/target&gt;</strong></code></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Reparem que é necessário ter os .class incluídos no <code>&lt;classpath/&gt;</code> como descrito acima, pois é daí que vem todo o mapeamento dos objetos. A propriedade <code>&lt;annotationconfiguration/&gt;</code> representa as configurações do seu SGBD (hibernate.properties) e das classes persistentes (hibernate.cfg.xml). Claro que o arquivo cfg.xml pode conter as configurações do SGBD mas eu achei melhor separá-los.</p>
<p style="text-align: justify;">A task <code>&lt;hbm2dll/&gt;</code> é o elemento principal do processo de exportação do schema. Nela é possível definir se, ao exportar o schema, irá dropar as tabelas existentes e criar uma nova estrutura e além do mais irá criar um arquivo .sql contendo tudo o que foi feito no banco.</p>
<p style="text-align: justify;">Adicionei a task <code>&lt;hbm2dao/&gt;</code> apenas para mostrar o DAO gerado conforme as entidades geradas. Acredito que isso seja útil para os projetos que não utilizam o suporte aos DAOs do Hibernate do Spring.</p>
<p style="text-align: justify;">Bom pessoal, esse foi um processo que me atendeu perfeitamente nos projetos que desenvolvo, portanto, segue a dica para os leitores. Chega de ficar mexendo nas propriedades <code>hibernate.hbm2ddl.auto create-drop</code> e escrever tarks personalizadas para essa tarefa.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">[]s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por onde anda o Prevayler ?</title>
		<link>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/</link>
		<comments>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 20:57:13 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Persistência]]></category>
		<category><![CDATA[Prevayler]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=321</guid>
		<description><![CDATA[Lembro-me como fosse hoje quando, fuçando na net, encontrei um texto escrito por Klaus Wuestefeld. O texto iniciava com uma pergunta: Você ainda usa banco de dados? A primeira vista aparentava ser um texto provocativo e por isso decidi da uma lida. Ao ler o texto, o que me chamou mais atenção, foi o fato [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lembro-me como fosse hoje quando, fuçando na net, encontrei um texto escrito por <a href="http://www.bileblog.org/2004/12/the-real-interview-with-klaus-wuestefeld/">Klaus Wuestefeld</a>. O texto iniciava com uma pergunta: <a href="http://imasters.uol.com.br/noticia/1368/tecnologia/prevayler_-_voce_ainda_usa_banco_de_dados/">Você ainda usa banco de dados?</a> A primeira vista aparentava ser um texto provocativo e por isso decidi da uma lida. Ao ler o texto, o que me chamou mais atenção, foi o fato do framework ser 10.000 vezes mais rápido que bancos de dados relacionais.</p>
<p style="text-align: justify;">Com a curiosidade a tona decidi baixar o JAR, junto com os fontes do projeto, para ver do que se tratava e como era feito essa proeza. Notei que era um framework que fazia um processo de serialização da JVM de forma mais elaborada com logs, transações e integridade dos objetos persistidos. Ou seja, um mecanismo de persistência simples e que atendia a aplicações de pequeno porte. A empolgação foi tanta que até fiz minha monografia da faculdade sobre ele.</p>
<p style="text-align: justify;">Ter disponível um framework que implemente um novo conceito de persistência chamou atenção não só de brasileiros, tanto que muitos desenvolvedores se juntaram no desenvolvimento do <em>frameworks, </em>plugins para Eclipse e uma implementação do SQL para consultar objetos &#8220;prevalecidos&#8221;. Ma o que aconteceu? Porque não vingou? Bom, a resposta dessas perguntas eu não tenho. As suposições são muitas. Uma delas seria a aceitação e a barreira da mudança de paradigmas. Muitos até tiveram boa intenção de utilizar em suas aplicações. Um exemplo disso é o <a href="http://thinfeeder.sourceforge.net/">ThinFeeder</a> e portal <a href="http://www.javafree.org/">JavaFree</a>. Lembro que o JavaFree teve uma série de problemas de concorrência ao disponibilizar o portal com a camada de persistência com <a href="http://www.prevayler.org/">prevayler</a>.</p>
<p style="text-align: justify;">Deixei de acompanhar a evolução do framework já faz um tempo, acredito que tenham resolvido os velhos problemas de concorrência, portanto não tenho em detalhes das melhorias e de novas funcionalidades do framework. Porém, acredito que seria uma boa oportunidade de investir na evolução desse framework polêmico. Quem tiver curiosidade o site do projeto está <a href="http://www.prevayler.org/">aqui</a>.</p>
<p style="text-align: justify;">O projeto encontra-se maduro, porém, a quebra de paradigmas ainda é uma barreira para a adoção do framework em suas aplicações. Tentar aceitar que um framework de persistência de objetos possa dar conta de suas aplicações tendo uma série de SGDBs disponíveis realmente é uma coisa difícil.</p>
<p style="text-align: justify;">[]s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML para formatar texto</title>
		<link>http://www.nelsonalone.com.br/2009/06/29/html-para-formatar-texto/</link>
		<comments>http://www.nelsonalone.com.br/2009/06/29/html-para-formatar-texto/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 02:32:03 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[itext]]></category>
		<category><![CDATA[jasperreport]]></category>
		<category><![CDATA[tinymce]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=315</guid>
		<description><![CDATA[Gosto muito dos editores web, como TINYMCE, YOU e FCKEditor pois conseguem incluir formatação de texto com HTML. Facilitam muito o trabalho dos desenvolvedores para incluir soluções complexas de edição de texto. Essas ferramentas são simples de integrar e fáceis de usar, já que é só incluir os arquivos no diretório do projeto e fazer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Gosto muito dos editores web, como <a href="http://tinymce.moxiecode.com/">TINYMCE</a>, <a href="http://developer.yahoo.com/yui/editor/">YOU</a> e <a href="http://www.fckeditor.net/">FCKEditor</a> pois conseguem incluir formatação de texto com HTML. Facilitam muito o trabalho dos desenvolvedores para incluir soluções complexas de edição de texto. Essas ferramentas são simples de integrar e fáceis de usar, já que é só incluir os arquivos no diretório do projeto e fazer uma chamada simples na página que queira incrementar um textbox. Porém, nem tudo são flores. O problema começa quando existe uma necessidade de exibir o texto, em HTML, salvo por esses editores em PDF.</p>
<p style="text-align: justify;">Normalmente, para os desenvolvedores JAVA, a primeira opção está na utilização do IReport para desenhar relatórios. Portanto, normalmente é feita o desenho, adaptação do relatório com a engine (itext e ireport) na aplicação e pós isso passando a string (ou consultado diretamente) para ser &#8220;montada&#8221; com o PDF. Consequentemente, o texto será exibido com as tags de formatação HTML. Bom, como podemos fazer com que o texto, fruto dos editores que utilizam formatação HTML, possa ser exibido de forma adequada e com sua devida formatação?</p>
<p style="text-align: justify;">Existem duas alternativas:</p>
<ul class="unIndentedList" style="text-align: justify;">
<li> Caso você utilize uma versão 2.5, ou superior, do IReport, pode marcar a opção Marckup, conforme a figura abaixo. Com isso, todo texto passado será feito um parse para ser exibido apenas o texto com o mínimo de formatação. O problema é que o processador HTML é fraco e não aceita todas as tgs documentadas no W3C.</li>
</ul>
<ul class="unIndentedList" style="text-align: justify;">
<li> Outra solução seria a solução mais trabalhosa; fazer o parse manual com o <a href="http://jtidy.sourceforge.net/">JTidy</a>.</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-316" style="border: 1px solid black;" title="ireport_marckup" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/06/ireport_marckup.jpg" alt="ireport_marckup" width="398" height="465" /></p>
<p style="text-align: justify;">JTidy é uma biblioteca utilitária para manipulação de arquivos HTML que permite checar sintaxe e a manipulação completa do conteúdo HTML. Com esse utilitário é possível fazer o parse do texto e extraindo o conteúdo passado para o relatório. Porém, caso for necessário utilizar formatação complexa será necessária outra abordagem, já que o conjunto de ferramentas IReport não suporta a formatação completa de documentos HTML. Tomara que os desenvolvedores aprimorem o processador HTML da ferramenta para que possa suportar formatação completa, inclusive o suporte a CSS.</p>
<p style="text-align: justify;">T+</p>
<p style="text-align: justify;">
<div id="gmBFtt" style="border: 1px solid black ! important; margin: 0px ! important; padding: 2px ! important; left: 50px ! important; top: 1058px ! important; visibility: visible ! important; display: inline ! important; width: auto; height: auto ! important; position: absolute ! important; background-color: #a8ecff ! important; font-family: arial ! important; font-size: 12px ! important; line-height: normal ! important; font-weight: normal ! important; color: #000000 ! important; text-align: left ! important; z-index: 1410065406 ! important; vertical-align: middle ! important;">
<div style="border-bottom: 1px dotted black ! important; padding-bottom: 2px ! important; padding-top: 2px ! important;"><span id="bfcloseButton" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: pointer;" title="Close BabelFish tooltip">x</span><span id="bfconfigButton" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: pointer ! important;" title="Language configuration">L</span><span id="bfdetectButton" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: pointer;" title="Detect and set language">D</span><span id="bflangsSpan" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: pointer ! important;" title="From English To Portuguese (switch direction)">en&gt;pt </span><span id="bfsvcSpan" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: pointer ! important;" title="Translation service: Google (switch service)">Google</span><span id="bfclipboardSpan" style="border: 1px dotted gray ! important; margin: 1px ! important; padding: 0px 5px ! important; cursor: copy ! important;" title="Copy result to clipboard">C</span><img id="bffishImg" style="border: medium none  ! important; margin: 0px ! important; float: none ! important; vertical-align: top ! important; cursor: pointer ! important; display: inline ! important;" title="Click to translate" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUUDyoqJjAqRwAAAN1JREFUOMu1lMkVwyAMBYe0JGpCNUFNVk3k4AUwxPGS+ILxkzX8jyTH/Sfu9nrmJ3cXlnMASyWRPwd2d5XlHCBZn1BthcbRAdxTZQDI8k3mQzg11rhF+QZ9jdNOcQib6GFQYJYgCFucSRf6GsLU6wEY5yubTFqF2yq1vRwr3INXdQUWG+je1pELX4ED1wDyRAR0WfuAA9gloITyvsFMIMgYInYRqF6rO9Sqz9qkO5ilyo0o3YBwJ+6vrdQonxWUQllhXeHcb/wabMPkP2n81ocAIoLZrMqn/4y2RwP8DcQ+d6rT9ATiAAAAAElFTkSuQmCC" alt="" /></div>
<div style="width: auto; color: #000000 ! important;">COM</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/06/29/html-para-formatar-texto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MMOGs Sobre P2P &#8211; JXTA</title>
		<link>http://www.nelsonalone.com.br/2009/06/27/307/</link>
		<comments>http://www.nelsonalone.com.br/2009/06/27/307/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 16:56:37 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[JXTA]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[P2P - Peer to Peer]]></category>
		<category><![CDATA[jxta]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=307</guid>
		<description><![CDATA[Olá pessoal, Dando continuidade na série MMOGs Sobre P2P, apresentarei aqui mais um protocolo para redes P2P que, seguindo algumas premissas que, pode ser utilizado como protocolo de comunicação de peers participantes de games. Os Games atuais estão exigindo cada vez mais recursos de hardware para apresentar gráficos com maiores detalhes, velocidade e melhor som. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">
<p style="text-align: justify;">Olá pessoal,</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Dando continuidade na série MMOGs Sobre P2P, apresentarei aqui mais um protocolo para redes P2P que, seguindo algumas premissas que, pode ser utilizado como protocolo de comunicação de peers participantes de games.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Os Games atuais estão exigindo cada vez mais recursos de hardware para apresentar gráficos com maiores detalhes, velocidade e melhor som. Em conjunto com essas características chave está também a conectividade para ter maior interação do game com outros personagens.</p>
<p style="text-align: justify;">Hoje em dia, a camada de conectividade dos MMOGs é desenvolvida utilizando protocolos de baixo nível, devido ao grande úmero de informação que necessita ser transmitida entre os participantes do game. Esses protocolos são desenvolvidos para funcionar apenas na arquitetura Cliente-Servidor, dessa forma, a latência não vai depender apenas da rede, também dependerá do servidor.</p>
<p style="text-align: justify;">Protocolos de alto nível resolvem muito dos problemas de conectividade, porém possuem limitações de latência na transmissão dos dados para o receptor. A explicação para isso é simples. Muitos desses protocolos utilizam XML como mensagens de comunicação. O JXTA é um desses protocolos.</p>
<p style="text-align: justify;">Devido a essa característica existir também no JXTA o desempenho do protocolo perde desempenho, porém ganha em conectividade e flexibilidade. Isso não apenas por ser um protocolo que troca mensagens baseadas em XML mas, por ter uma estrutura completa, repleta de sub-divisões, interfaces e arquitetura bem definida, tudo isso faz do JXTA, não apenas um protocolo, mas um conjunto de protocolos que pode ser utilizado para solucionar problemas de conectividade entre diversos peers em um ambiente P2P.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>O que é JXTA. </strong></p>
<p style="text-align: justify;">JXTA não é apenas um protocolo, e sim um conjunto de protocolos encapsulados e organizados com base em suas atividades de empacotamento de forma independente. Esses protocolos garantem a confiabilidade e o roteamento das mensagens que são direcionadas aos peers e grupos.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>Protocolos </strong></p>
<p style="text-align: justify;">O JXTA disponibiliza seis protocolos que podem trabalhar em conjunto para prover descoberta, organização, monitoramento e comunicação entre os peers. Esses protocolos são:</p>
<ul style="text-align: justify;" type="disc">
<li><strong>Peers Resouver Protocol</strong>: Consiste      de um mecanismo onde os peers podem enviar consultas a rede através de      mensagens para obter o conhecimento de alguns recursos existentes na rede.      Consistas são direcionadas a todos os grupos ou a um grupo espefífico.</li>
<li><strong>Peer Discovery Protocol:</strong> Consiste      de um recurso de publicação e descoberta de recurso utilizando Advertise.      Cada recurso disponibilizado por um peer são enviadas advertise para toda      a rede com o objetivo de disponibilizar o serviço. Os advertise são      documentos XML que contem informações do peer e dos recursos      disponibilizados por eles.</li>
<li><strong>Peer Information Protocol:</strong> Mecanismo que os peers obtém status de outros peers.</li>
<li><strong>Pipe Binding Protocol:</strong> Consiste no      estabelecimento de um canal virtual de comunicação entre um ou mais peers.</li>
<li><strong>Endpoint Routing Protocol:</strong> É um      mecanismo que permite descobrir rotas para enviar mensagens para um      determinado peer. É utilizado especificamente para a descoberta de rotas      entre peers.</li>
<li><strong>Rendezvous Protocol:</strong> Mecanismo na      qual os peers podem (ou não) propagar serviços. Este protocolo permite o      envio de informações dos peers ou serviço que estão sendo monitorados pelo      peer em questão. É utilizado em conjunto com o Peer Resolver Protocol e o      Pipe Binding Protocol para propagar mengagens.</li>
</ul>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-308" title="protocolo" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/06/protocolo.jpg" alt="protocolo" width="473" height="546" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Cada protocolo citado é independente dos demais. Um peer não requer a implementação de todos os protocolos da arquitetura JXTA, apenas implementa os protocolos que são necessários para o seu uso. Para prover um funcionamento padrão de um peer em uma rede JXTA deve apenas implementar dois protocolos; o Peer Resolver Protocol e o Endpoint Routing Protocol. Esses dois protocolos contem as principais funcionalidades que um peer deve ter na rede, já que é exigida na documentação devido a interoperabilidade com o core do JXTA.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>Utilização da Arquitetura nos Games</strong></p>
<p style="text-align: justify;">A arquitetura, juntamente com o modelo de implementação dos protocolos, são bem completos. Com isso, o JXTA é o conjunto de protocolos mais completo quando se trata de arquitetura P2P. Porém, para muitos ele é tido como um elefante branco do P2P.</p>
<p style="text-align: justify;">O conjunto de protocolos disponibilizado pela arquitetura é realmente completo, possibilitando um conjunto de ferramentas para o desenvolvimento de soluções que funcionem sobre uma arquitetura de rede P2P. Porém, o conjunto de protocolos utilizado em larga escala com inúmeros peers demonstra algumas falhas imperceptíveis para algumas aplicações porém, cruciais para os games.</p>
<p style="text-align: justify;">Através de alguns testes de performance com vários grupos, inclusive grupos fora de uma intranet, deixaram a desejar em performance a interoperabilidade. Em alguns casos os grupos que se encontravam fora da rede não conseguiam estabilizar a conexão. Em alguns casos, não era possível encontrar recursos em NATs distintas.</p>
<p style="text-align: justify;">Essa afirmação é válida quando utilizamos alguns dos recursos da arquitetura. A implementação de alguns dos recursos são complexos, principalmente o fato de se estar em atrás de um Firewall com uma NAT. Dentro dessa situação, a comunicação nem sempre é boa, sendo necessário horas a mais para solucionar problemas desse cotidiano.</p>
<p style="text-align: justify;">A descoberta de recursos (grupos, peers e serviços) é lenta, principalmente quando testado em uma rede grande como a Internert. Falo isso pensando nos MMOGs que implementarem sua camada de rede P2P utilizando essa arquitetura. De certa forma ficaria inviável a busca por jogadores na rede, podendo chegar ao ponto de ter grupos de jogadores espalhados e não interconectados.</p>
<p style="text-align: justify;">Acredito que a flexibilidade e a grande quantidade de recursos disponibilizados pela ferramenta ainda não dão suporte completo a imensa troca de pacotes nos games. Não quero afirma com isso a total deficiência da arquitetura, pelo contrário, já que o conjunto de protocolos JXTA está na base do mecanismo de cluster do Glassfish. Por sinal, muito bem implementado e funcionando perfeitamente. Talvez um fork da arquitetura visando apenas na otimização da arquitetura <span style="text-decoration: underline;">para</span> os Games solucionaria o problema.</p>
<p style="text-align: justify;">A arquitetura JXTA encontra-se nesse momento na versão 2.5 e possui um completo conjunto de soluções voltadas para P2P, inclusive pacotes para c++, .Net e uma adaptação para Mobile JME. Com esse leque de opções tão variado, o JXTA é a melhor opção para desenvolver aplicações P2P escaláveis porem, o desenvolvimento de games como camada de comunicação ainda não é uma boa opção devido latência na transmissão de pacotes e pelo, ainda lento, mecanismo de descoberta de recursos.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Fontes<a href="https://jxta-spec.dev.java.net/">: Especificação JXTA</a> e <a href="http://download.java.net/jxta/">Documentação</a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/06/27/307/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIT Robocraft &#8211; Ensino divertido de programação de computadores</title>
		<link>http://www.nelsonalone.com.br/2009/05/26/mit-robocraft-ensino-divertido-de-programacao-de-computadores/</link>
		<comments>http://www.nelsonalone.com.br/2009/05/26/mit-robocraft-ensino-divertido-de-programacao-de-computadores/#comments</comments>
		<pubDate>Tue, 26 May 2009 03:45:09 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Robocode]]></category>
		<category><![CDATA[Robocraft]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=288</guid>
		<description><![CDATA[Fiquei curioso ao ler uma reportagem de uma revista informando sobre a iniciativa do MIT de disponibilizar o conteúdo de seus cursos na Web. O nome do projeto é entitulado de OpenCourses que consiste também da publicação de vídeos e exames sem a necessidade registro ou autenticação. Passeando pelo tópico de Electrical Engineering and Computer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>PT-BR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabela normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--></p>
<p class="MsoNormal" style="text-align: justify;">Fiquei curioso ao ler uma reportagem de uma revista informando sobre a iniciativa do MIT de disponibilizar o conteúdo de seus cursos na Web. O nome do projeto é entitulado de OpenCourses que consiste também da publicação de vídeos e exames sem a necessidade registro ou autenticação.</p>
<p class="MsoNormal" style="text-align: justify;"><img class="aligncenter size-medium wp-image-286" title="chp_robocraft" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/chp_robocraft-300x152.jpg" alt="chp_robocraft" width="300" height="152" /></p>
<p class="MsoNormal" style="text-align: justify;">Passeando pelo tópico de <a href="http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm#ElectricalEngineeringandComputerScience">Electrical Engineering and Computer Science</a>, vi uma disciplina um tanto quanto curiosa: <a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-370January--IAP--2005/CourseHome/index.htm">6.370 Robocraft Programming Competition</a>, é um curso de extensão que tem o objetivo de ensinar programação, de forma divertida, através de uma engine de simulação de uma batalha de robôs que são programados pelos alunos. Esse é um dos brinquedos<span> </span>que o <span> </span>pessoal do MIT utiliza nos momentos de lazer.</p>
<p class="MsoNormal" style="text-align: justify;"><img class="aligncenter size-medium wp-image-287" title="robocraft1" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/robocraft1-300x261.jpg" alt="robocraft1" width="300" height="261" /></p>
<p class="MsoNormal" style="text-align: justify;">Software bem parecido com o projeto <a href="http://robocode.sourceforge.net/">Robocode</a>, antes patrocinado pela IBM, que oferece um ambiente de desenvolvimento completo para desenvolver o seu tanque e incluir a lógica de batalha. Um projeto interessante tido como auxílio ao ensino de programação. É válido ressaltar que tudo isso é feito com Java.</p>
<p class="MsoNormal" style="text-align: justify;">Simples dica de diversão geek.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/05/26/mit-robocraft-ensino-divertido-de-programacao-de-computadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Wicket. Mais que uma promessa.</title>
		<link>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/</link>
		<comments>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 23:39:32 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=156</guid>
		<description><![CDATA[Olá pessoal, Em primeiro lugar um feliz ano novo a todos vocês que visitam esse blog. Depois de alguns dias sem colocar nada aqui venho disponibilizar algumas informações sobre um framewok que ta tirando o meu sono, não por ser difícil e chato, mas por me fazereu ver o desenvolvimento web, com Java, uma forma [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!--[endif]--></p>
<p class="MsoNormal" style="text-align: justify;">Olá pessoal,</p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;">Em primeiro lugar um feliz ano novo a todos vocês que visitam esse blog. Depois de alguns dias sem colocar nada aqui venho disponibilizar algumas informações sobre um framewok que ta tirando o meu sono, não por ser difícil e chato, mas por me fazereu ver o desenvolvimento web, com Java, uma forma diferente de desenvolver. Li a JavaMagazine 58 e depois de alguns meses resolvi baixar o <a href="http://wicket.apache.org/">dito cujo</a> pra dar uma olhada.</p>
<p class="MsoNormal" style="text-align: justify;"><a href="http://wicket.apache.org/"><img class="aligncenter size-full wp-image-157" title="wicket-logo" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/01/wicket-logo.png" alt="wicket-logo" width="160" height="59" /></a></p>
<p class="MsoNormal" style="text-align: justify;">Realmente, pra mim foi um pouco esquisito. Acostumado com o desenvolvimento tradicional (Request, Response, Sessions e Forward) vi nesse framework uma maneira mais intuitiva de desenvolver aplicações WEB. Seu modelo de manipulação de conteúdo dinâmico é baseado em markups em arquivos HTML, ou seja, todos os arquivos HTMLs devem estar na mesma estrutura de pacotes na qual se encontra suas WebPages, coisa de louco. Para mim isso foi coisa de outro mundo, mas depois que você começa a escrever os exemplos e ter maior afinidade com o mesmo, só então é possível se acostumar.</p>
<p class="MsoNormal" style="text-align: justify;">Em paralelo com isso, também estou estudando RoR. Talvez esteja aí o segredo para uma aceitação com pouco trauma as mudanças de paradigmas.</p>
<p class="MsoNormal" style="text-align: justify;">Ainda não utilizei o <a href="http://wicket.apache.org/">Wicket</a> em algum projeto, porém vontade não falta. Portanto pessoal, fica ai a dica de um framework poderoso e inovador. Os desenvolvedores do Wicket realmente fizeram um excelente trabalho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elegância com simplicidade</title>
		<link>http://www.nelsonalone.com.br/2008/10/30/elegancia-com-simplicidade/</link>
		<comments>http://www.nelsonalone.com.br/2008/10/30/elegancia-com-simplicidade/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 02:56:28 +0000</pubDate>
		<dc:creator>Nelson</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=66</guid>
		<description><![CDATA[A pouco tempo, iniciei meus estudos com Ruby em conjunto com framework Rails. Deparo-me, até hoje, com muitas diferenças (principalmente por desenvolver em Java) e muitas delas são extremamente interessantes. Uma das características que me chamou atenção foi a mistura de elegância e simplicidade. Peguei uma pequena implementação do Patter singleton na wikipedia para mostrar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A pouco tempo, iniciei meus estudos com Ruby em conjunto com framework Rails. Deparo-me, até hoje, com muitas diferenças (principalmente por desenvolver em Java) e muitas delas são extremamente interessantes. Uma das características que me chamou atenção foi a mistura de elegância e simplicidade. Peguei uma pequena implementação do <a title="Patter Singleton" href="http://en.wikipedia.org/wiki/Singleton_pattern" target="_blank">Patter singleton</a> na <a title="Wikipedia Patter Singleton" href="http://en.wikipedia.org/wiki/Singleton_pattern" target="_blank">wikipedia </a>para mostrar a vocês do que eu to falando:</p>
<p style="text-align: justify;"><strong>Em Java:</strong><code><br />
public class Singleton {<br />
private static volatile Singleton INSTANCE;<br />
protected Singleton() {<br />
super();<br />
}<br />
public static Singleton getInstance() {<br />
if (INSTANCE == null) {<br />
synchronized(Singleton.class) {<br />
if (INSTANCE == null)<br />
INSTANCE = new Singleton();<br />
}<br />
}<br />
return INSTANCE;<br />
}<br />
}</code></p>
<p style="text-align: justify;"><strong>Em Ruby:</strong><code><br />
require 'singleton'</code></p>
<p style="text-align: justify;"><code>class Example<br />
include Singleton<br />
end</code></p>
<p class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>PT-BR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val=" " /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;">É notável a diferença. Para quem está familiarizado com outras linguagens é normal ficar impressionado com isso. Porém, não podemos nos esquecer que, o Framework ainda apresenta pontos que dificultam sua utilização em aplicações de larga escala.</p>
<p class="MsoNormal" style="text-align: justify;">Acredito que em breve, com o trabalho constante da comunidade, o framework amadurecerá e estará pronto para ser utilizado em aplicações de grande demanda.</p>
<p style="text-align: justify;"><!--[endif]--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2008/10/30/elegancia-com-simplicidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
