<?xml version="1.0" encoding="UTF8"?>
<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>Casal 10</title>
	<atom:link href="http://casal10.evonblogs.com.br/feed" rel="self" type="application/rss+xml" />
	<link>http://casal10.evonblogs.com.br</link>
	<description>As desventuras de um casal nérdico</description>
	<lastBuildDate>Sat, 12 May 2012 21:05:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>DWR Simplificado</title>
		<link>http://casal10.evonblogs.com.br/bytes/2430</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2430#comments</comments>
		<pubDate>Sat, 12 May 2012 20:53:41 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[laboratório nerd]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2430</guid>
		<description><![CDATA[Aviso É importante para total compreensão do texto, saber o que é Ajax, JQuery e Java. Assim como o básico de programação J2EE. Introdução: Vou falar para vocês sobre o meu novo projeto, o J4DWR, mas antes vou falar sobre o projeto que me inspirou para criá-lo e esse talvez vocês o conheçam, o DWR. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://casal10.evonblogs.com.br/wp-content/uploads/2012/05/connect_to_network.png"><img src="http://casal10.evonblogs.com.br/wp-content/uploads/2012/05/connect_to_network.png" alt="" title="connect_to_network" width="128" height="128" class="alignleft size-full wp-image-2434" /></a><H3>Aviso</h3>
<p>É importante para total compreensão do texto, saber o que é Ajax, JQuery e Java. Assim como o básico de programação J2EE.</p>
<p><H3>Introdução:</h3>
<p>Vou falar para vocês sobre o meu novo projeto, o J4DWR, mas antes vou falar sobre o projeto que me inspirou para criá-lo e esse talvez vocês o conheçam, o DWR.</p>
<p><H3>O DWR</h3>
<p>O projeto <a href="http://directwebremoting.org/dwr/index.html" title="DWR">DWR</a> é um excelente projeto. E se fosse para resumir sua principal funcionalidade em poucas linhas eu diria que ele de forma bastante simples, converte classes Java para Javascript, permitindo o acesso remoto &#8211; via ajax &#8211; de suas classes pelos navegadores clientes.</p>
<p><H3>A Motivação</h3>
<p>Porém de um tempo para cá algo vem me inquietando e me deixando insatisfeito. Gosto muito da elegância do DWR mas a pouca quantidade de atualizações do componente (a última versão estável data de vários anos atrás) e o uso massivo de javascript no código com diferentes tratamentos para diferentes navagadores me deixam de orelha em pé. Pois fico temendo que um dia o DWR pare de funcionar quando agum fabricante de navegador anunciar uma nova versão.</p>
<p>O que uso do DWR é pouca coisa, basicamente a camada Controller dele (MVC) e não seria muito difícil se o JS gerado usasse JQuery em vez de javascript puro. Então a pergunta é, porque usar o DWR da comunidade e não usar um próprio?</p>
<p><H3>As diretrizes</h3>
<p>Decidi então partir para um DWR próprio, onde eu tenha as funcionalidades básicas que utilizo de modo a não ficar na mão de um DWR que pode parar de funcionar em uma mudança de navegador. O projeto está bem no começo e enquanto o DWR funcionar, não terei pressa de efetuar a troca em meus projetos. As diretrizes do projeto são:</p>
<ul>
<li>Simplicidade. Apenas as funcionalidades principais serão portadas.</li>
<li>Compatibilidade. As funcionalidades portadas serão compatíveis com códigos DWR antigos.</li>
<li>Dependências seguras. As funcionalidades farão uso de bibliotecas de grandes fornecedores, Jquery, Google, Apache Commons.</li>
</ul>
<p><H3>Javascript para todos os navegadores</h3>
<p>A parte Javascript será feita utilizando Jquery, o que impedirá que mudanças de navagadores ocasionem erros, desde que o JQuery esteja atualizado (óbvio).</p>
<p><H3>Do lado Java&#8230;</h3>
<p>A parte Ajax será feito com a dobradinha Gson / JQuery .</p>
<p>E a parte de upload de arquivos, se necessário será usado as bibliotecas do Apache.</p>
<p><H3>Ajax reverse</h3>
<p>Ajax Reverse é quando o servidor entra em contato com a página e não o contrário, o DWR suporta 3 formas de Ajax Reverse:<br />
<H4>Polling</h4>
<p>Esta é a forma que o J4DWR terá inicialmente, que significa que o client fica mandando ao servidor uma solicitação para o servidor, de X em X segundos, perguntando se tem algo para ele.<br />
<H4>Comet</h4>
<p>Ou cometa em português, é uma maneira de receber informações do servidor de forma de um retorno longo de HTTP. É dessa forma que os primeiros chats da uol atualizavam o client. Para mais informações sugiro:<br />
<a href="http://en.wikipedia.org/wiki/Comet_%28programming%29" title="Wikipedia En">Wikipedia En</a><br />
<a href="http://infrequently.org/2006/03/comet-low-latency-data-for-the-browser/" title="Infrequently">Dados com baixa latência para navegadores</a><br />
<a href="http://cometdaily.com/2011/07/06/push-technology-comet-and-websockets-10-years-of-history-from-lightstreamers-perspective/" title="http://cometdaily.com">http://cometdaily.com</a><br />
<H4>Piggyback</H4><br />
Quando o servidor precisa enviar algo para o client, ele espera o client solicitar algo e ai junto com a resposta padrão ele também envia a resposta que ele queria enviar anteriormente.</p>
<p><H4>Qual o DWR usa?</H4><br />
Ele utiliza as três maneiras e tenta usar a melhor forma para cada navegador/servidor, evitando stress do client e do server.</p>
<p><H4>Qual o J4DWR irá usar?</H4><br />
Inicialmente o Polling, porém esse método ocasiona sobrecarga no servidor se for muito utilizado. Por esse motivo o passo seguinte será construir o Comet. E por último, via Websocket que é novidade do HTML5.</p>
<p><H3>E a biblioteca javascript do dwr, o dwr util.js ?</h3>
<p>Não será portado nenhuma funcionalidade javascript, como preenchimento de combo e qualquer funcionalidade do dwr utils. Para tal deverá sempre ser usado o JQuery e não o novo DWR pois o foco do J4DWR é  o ajax e delegaremos à comunidade do JQuery esse trabalho.</p>
<p><H3>E qual o motivo de ser J4DWR?</h3>
<p>O nome é temporário e aceito sugestões =). Mas a explicação de J4 DWR é óbvia (Java, Javascript, JQuery e Jason) Direct Web Remoting. </p>
<p><H3>Contato:</h3>
<p>Qualquer um que estiver interessado em embarcar nessa, enquanto o projeto está ainda no começo, entrem em contato comigo gandbranco@gmail.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2430/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O Mundo por um Fio</title>
		<link>http://casal10.evonblogs.com.br/bytes/2412</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2412#comments</comments>
		<pubDate>Mon, 20 Feb 2012 17:16:20 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[cultura]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[13º Andar]]></category>
		<category><![CDATA[cinema]]></category>
		<category><![CDATA[cinema alemão]]></category>
		<category><![CDATA[Ghost in The Shell]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[O Mundo por um Fio]]></category>
		<category><![CDATA[Rainer Werner Fassbinder]]></category>
		<category><![CDATA[Wachowski]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2412</guid>
		<description><![CDATA[Em 1999 quando o filme Matrix dos irmãos Wachowski foi lançado houve muitas pessoas dizendo que a obra era encantadora por ser original. Nessa época a internet estava apenas começando mas seria ingenuidade acreditar na originalidade de Matrix, pois é de conhecimento comum que o filme bebeu em muitas fontes para criar seu filme. Desde [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://casal10.evonblogs.com.br/wp-content/uploads/2012/02/mundoporumfio.png" align="center"><img style="width:75%;height:75%" src="http://casal10.evonblogs.com.br/wp-content/uploads/2012/02/mundoporumfio.png" alt="" title="mundoporumfio"  class="aligncenter size-thumbnail wp-image-2415" /></a><br />
Em 1999 quando o filme <a href="http://pt.wikipedia.org/wiki/Matrix">Matrix</a> dos irmãos  <a href="http://pt.wikipedia.org/wiki/Irm%C3%A3os_Wachowski">Wachowski</a> foi lançado houve muitas pessoas dizendo que a obra era encantadora por ser original. Nessa época a internet estava apenas começando mas seria ingenuidade acreditar na originalidade de Matrix, pois é de conhecimento comum que o filme bebeu em muitas fontes para criar seu filme. Desde Alice no país das maravilhas até a bíblia cristã. Alguns por desconhecimento podem afirmar que o filme Matrix também referenciou outro filme chamado &#8220;O 13º Andar&#8221;, outros dirão o contrário. A verdade é que ambos os filmes foram lançados no mesmo ano e beberam da mesma fonte. O filme alemão <a href='http://en.wikipedia.org/wiki/Welt_am_Draht'>&#8220;Welt am Draht&#8221;</a> de 1973 dirigido por <a href="http://en.wikipedia.org/wiki/Rainer_Werner_Fassbinder">Rainer Werner Fassbinder</a> que em português recebeu o nome de &#8220;O Mundo por um fio&#8221; veio duas décadas antes para falar das mesmas coisas. </p>
<p>Mas matrix não bebeu apenas dessa fonte, como disse o Matrix é um mix de referências bem selecionadas. Entre elas, está <a href="">Ghost In The Shell</a>, uma animação japonesa. <a href='http://pt.wikipedia.org/wiki/Serial_Experiments_Lain'>Serial Experiments Lain</a>, outra aniação japonesa. Entre muitos outros.</p>
<p>O que faz do filme &#8220;O Mundo por um Fio&#8221; melhor do que o Matrix e principalmente &#8220;O 13º Andar&#8221; &#8211; que diga-se de passagem que é praticamente cópia do filme alemão, porém com um viés mais poliano &#8211; é a sua originalidade. Afinal de contas, ele foi lançado em 1973, mais de duas décadas antes da Internet. Nessa época era bem complicado sequer imaginar algo tão avançado como um mundo virtual e Inteligência Artificial. Ou não? Não, pois o filme &#8220;O Mundo por um Fio&#8221; é uma adaptação de um livro “Simulacron-3”, de Daniel F. Galouye. Quantos níveis precisaríamos descer até chegar no limbo?</p>
<p>Mas será que isso desvaloriza a obra? Existe um ditado que diz &#8220;depois de <a href='http://pt.wikipedia.org/wiki/William_Shakespeare'>Shakespeare</a>&#8221; nada mais é original. Eu diria que nem mesmo Shakespeare era orginal. O Mundo por um Fio tem seu valor por ter antecipado muito do que viria dali para frente e mesmo Matrix tem seus créditos.</p>
<p>De qualquer forma, recomendo assitirem o filme 13º Andar, o original alemão para os padrões de hoje tem uma narrativa arrastada, os efeitos sonoros, trilha, fotografia e atuação deixam a desejar pois o filme foi feito para a TV e não para o cinema. A menos, que você queira beber da fonte. As vezes essa é a única maneira de sair da Matrix.</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2412/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparando a criação de componentes em JQuery vs Taglibs</title>
		<link>http://casal10.evonblogs.com.br/bytes/2402</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2402#comments</comments>
		<pubDate>Tue, 14 Feb 2012 09:49:25 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[laboratório nerd]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Taglib]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2402</guid>
		<description><![CDATA[Nesse, artigo, vamos comparar taglibs ou componentes web usados em diversos frameworks com componentes javascript criados via plugins para Jquery. Taglibs Taglib é um termo utilizado há muitos anos pelos desenvolvedores J2EE (Java para WEB) e significa uma tag não HTML que será renderizada no servidor para uma ou mais tags HTML. Nada mais claro [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse, artigo, vamos comparar taglibs ou componentes web usados em diversos frameworks com componentes javascript criados via plugins para Jquery.</p>
<h3>Taglibs</h3>
<p>Taglib é um termo utilizado há muitos anos pelos desenvolvedores J2EE (Java para WEB) e significa uma tag não HTML que será renderizada no servidor para uma ou mais tags HTML. Nada mais claro do que um exemplo:</p>

<div class="wp_codebox"><table><tr id="p24029"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code9"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>x<span style="color: #339933;">:</span>calendar value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;now&quot;</span> format<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;dd/MM/yyyy&quot;</span><span style="color: #339933;">/&gt;</span></pre></td></tr></table></div>

<p>A tag acima “x:calendar” não existe no HTML, mas não vai ser o seu navegador que terá que entender isto. Taglib pode existir no J2EE com este nome, em outras tecnologias ele assume outras nomenclaturas, mas no fundo é a mesma coisa. Pode ser até mesmo uma função que gere um componente. Imagine o código abaixo em PHP:</p>

<div class="wp_codebox"><table><tr id="p240210"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code10"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;?</span>php echo gerarCalendario<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;now&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;dd/MM/yyyy&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?&gt;</span></pre></td></tr></table></div>

<p>Mas vou chamar tudo de taglib, não apenas por ser o termo que aprendi, mas também como se fosse um apelido para este procedimento e, desse modo, facilitar a nossa conversa.</p>
<p>Quando essa taglib é renderizada do lado do servidor, ele gera HTML e envia para o usuário, algo parecido com :</p>

<div class="wp_codebox"><table><tr id="p240211"><td class="line_numbers"><pre>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
</pre></td><td class="code" id="p2402code11"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span> onclick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;selectText('null', 'frm1:dataInicio')&quot;</span> <span style="color: #000066;">onfocus</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;selectText('null', 'frm1:dataInicio')&quot;</span> <span style="color: #000066;">onblur</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;formataData(this)&quot;</span> size<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;12&quot;</span> <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicio&quot;</span> id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicio&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>img onclick<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1_3AdataInicioCalendarVar._popUpCalendar(this,document.getElementById('frm1:dataInicio'),'dd/MM/yyyy')&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;vertical-align:bottom;&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/jn/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/13239917/calendar.HtmlCalendarRenderer/images/calendar.gif&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>span id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicioSpan&quot;</span><span style="color: #339933;">&gt;&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicioSpan_calendarDiv&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-div-style&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;visibility: hidden;&quot;</span><span style="color: #339933;">&gt;&lt;</span>table style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;width:250px;&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-table-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>tbody<span style="color: #339933;">&gt;&lt;</span>tr <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-background-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>td<span style="color: #339933;">&gt;&lt;</span>table style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;width:248px;&quot;</span><span style="color: #339933;">&gt;&lt;</span>tbody<span style="color: #339933;">&gt;&lt;</span>tr<span style="color: #339933;">&gt;&lt;</span>td <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-control-normal-style&quot;</span><span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;</span>img height<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;11px&quot;</span> width<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;10px&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/jn/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/13239917/calendar.HtmlCalendarRenderer/DB/left1.gif&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;border:0px;&quot;</span><span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-control-normal-style&quot;</span><span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;</span>img height<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;11px&quot;</span> width<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;10px&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/jn/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/13239917/calendar.HtmlCalendarRenderer/DB/right1.gif&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;border:0px;&quot;</span><span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;/</span>span<span style="color: #339933;">&gt;&lt;</span>span <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-control-normal-style&quot;</span><span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;</span>span <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-title-control-normal-style&quot;</span><span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&amp;</span>amp<span style="color: #339933;">;</span>nbsp<span style="color: #339933;">;&lt;/</span>span<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;&lt;</span>td style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text-align:right;&quot;</span><span style="color: #339933;">&gt;&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;#&quot;</span><span style="color: #339933;">&gt;&lt;</span>span<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&lt;/</span>a<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;&lt;/</span>tbody<span style="color: #339933;">&gt;&lt;/</span>table<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;&lt;</span>tr<span style="color: #339933;">&gt;&lt;</span>td <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-body-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>span<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;&lt;</span>tr <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-today-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>td <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-today-lbl-style&quot;</span><span style="color: #339933;">&gt;&lt;</span>span<span style="color: #339933;">&gt;</span>Hoje <span style="color: #339933;">&amp;</span>eacute<span style="color: #339933;">;</span> <span style="color: #339933;">&lt;</span>a <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-today-style&quot;</span> title<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;Go To Current Month&quot;</span> href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;#&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">21</span><span style="color: #339933;">/</span><span style="color: #CC0000;">12</span><span style="color: #339933;">/</span><span style="color: #CC0000;">2011</span><span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;&lt;/</span>tr<span style="color: #339933;">&gt;&lt;/</span>tbody<span style="color: #339933;">&gt;&lt;/</span>table<span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicioSpan_selectMonthDiv&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-div-style&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;visibility: hidden;&quot;</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;frm1:dataInicioSpan_selectYearDiv&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;jscalendar-DB-div-style&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;visibility: hidden;&quot;</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;&lt;/</span>span<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;!--</span>
<span style="color: #003366; font-weight: bold;">var</span> frm1_3AdataInicioCalendarVar<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> org_apache_myfaces_PopupCalendar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">imgDir</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;/jn/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/13239917/calendar.HtmlCalendarRenderer/DB/&quot;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">monthName</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Janeiro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Fevereiro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Mar<span style="color: #000099; font-weight: bold;">\u</span>00E7o&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Abril&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Maio&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Junho&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Julho&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Agosto&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Setembro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Outubro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Novembro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Dezembro&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">dayName</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Seg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Ter&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Qua&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Qui&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Sex&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;S<span style="color: #000099; font-weight: bold;">\u</span>00E1b&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Dom&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">startAt</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">weekdays</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Segunda-feira&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Ter<span style="color: #000099; font-weight: bold;">\u</span>00E7a-feira&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Quarta-feira&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Quinta-feira&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Sexta-feira&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;S<span style="color: #000099; font-weight: bold;">\u</span>00E1bado&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">shortWeekdays</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Dom&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Seg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Ter&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Qua&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Qui&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Sex&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;S<span style="color: #000099; font-weight: bold;">\u</span>00E1b&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">shortMonths</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Jan&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Fev&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Mar&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Abr&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Mai&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Jun&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Jul&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Ago&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Set&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Out&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Nov&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Dez&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">months</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Janeiro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Fevereiro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Mar<span style="color: #000099; font-weight: bold;">\u</span>00E7o&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Abril&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Maio&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Junho&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Julho&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Agosto&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Setembro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Outubro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Novembro&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;Dezembro&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">eras</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;BC&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;AD&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">dateFormatSymbols</span>.<span style="color: #660066;">ampms</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;AM&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;PM&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">todayString</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Hoje <span style="color: #000099; font-weight: bold;">\u</span>00E9&quot;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">todayDateFormat</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;dd/MM/yyyy&quot;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">weekString</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Semana&quot;</span><span style="color: #339933;">;</span>
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">initData</span>.<span style="color: #660066;">popupLeft</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
frm1_3AdataInicioCalendarVar.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'frm1:dataInicioSpan'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>document.<span style="color: #660066;">layers</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;img src=&quot;/jn/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/13239917/calendar.HtmlCalendarRenderer/images/calendar.gif&quot; style=&quot;vertical-align:bottom;&quot; onclick=&quot;frm1_3AdataInicioCalendarVar._popUpCalendar(this,document.getElementById(<span style="color: #000099; font-weight: bold;">\'</span>frm1:dataInicio<span style="color: #000099; font-weight: bold;">\'</span>),<span style="color: #000099; font-weight: bold;">\'</span>dd/MM/yyyy<span style="color: #000099; font-weight: bold;">\'</span>)&quot; /&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//--&gt;&lt;/script&gt;</span></pre></td></tr></table></div>

<p>O exemplo acima é real &#8211; foi tirado de uma taglib do framework JSF.</p>
<p>Qual o impacto disso em um projeto?<br />
Certamente vai diminuir muito tempo seu de desenvolvimento, você irá reduzir redundância de código e, no caso de uma correção, fará em todo o seu site alterando apenas em um único lugar.</p>
<p>Mas não estou aqui para falar das vantagens óbvias das Taglibs, pelo contrário. </p>
<h4>A sujeira</h4>
<p>Você deve ter percebido no exemplo acima que o código gerado ocasiona na página um tanto de sujeira, misturando HTML e javascript. O esperado para um controle HTML de data era algo limpo. Claro que, se você fizer usando HTML 5, você terá algo como:</p>

<div class="wp_codebox"><table><tr id="p240212"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code12"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;dataInicial&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;date&quot;</span> <span style="color: #339933;">/&gt;</span></pre></td></tr></table></div>

<p>Mas mesmo que fosse em HTML 4, era esperado que fosse feito algo parecido com:</p>

<div class="wp_codebox"><table><tr id="p240213"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code13"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;dataInicial&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;date&quot;</span> <span style="color: #339933;">/&gt;</span></pre></td></tr></table></div>

<p>Você pode argumentar que as taglibs podem ser construídas pelo desenvolvedor e não terceiros, de modo a gerar menos sujeira. Ok, mas além desse trabalho de reinventar a roda, existem situações onde é bem complicado evitar sujar o código. Pois a maioria dos frameworks, se não todos, atuam no HTML e não conseguem separar o javascript dele.</p>
<h4>Portabilidade</h4>
<p>Ao usar taglibs, você ficará preso na sua tecnologia de servidor. Você inseriu em sua camada de apresentação (view) a tecnologia que está lá no servidor. Se um dia você for trocar de PHP para JAVA, ou para .Net, você terá que refazer todas as suas views. Ai você pode dizer “Ah! Mas quem vai mudar de tecnologia uma vez que o site esteja pronto?”.<br />
Claro que é raro, mas eu consigo levantar apenas de memória pelo menos meia dúzia de exemplos. Obviamente que, se o seu aplicativo for muito específico como uma campanha de Natal, certamente esse argumento não tem valor. Mas se o seu aplicativo tem vida longa, não subestime o vai e volta do mercado.</p>
<h4>Conhecimento específico</h4>
<p>Se a sua página tiver tags específicas ela vai deixar de ser HTML, aquele designer brilhante pode ter dificuldades em dar suporte em seu site, pois não necessariamente ele entende a tecnologia empregada. Criar um div em volta de um calendário pode quebrar algo, isso se ele reconhecer onde está o calendário. Ou pior, o desenvolvedor do site pode perder conhecimentos básicos de web. Já cansei de ver em sites especializados, em um determinado framework, programadores perguntando coisas básicas sobre HTML, como esconder um campo, ou que taglib ele usa para redirecionar uma página sem a  intervenção do usuário.</p>
<h4>Mundinho pequeno</h4>
<p>Por mais usado que seja seu framework e suas taglibs, ele será um framework entre muitos. A maior parte dos sites não são feitos em J2EE e mesmo que fosse, seria dividido em JSF, Structs, Metawaii etc. Mesmo dentro do JSF tem diversas implementações o que torna tudo muito segmentado. Buscar auxílio ou detectar um erro mesmo nesse nosso mundinho pós-Google pode virar um verdadeiro inferno. </p>
<h3>JQuery Plugins</h3>
<p>Não sei se eu consegui te convencer a pensar a respeito. Mas caso a resposta seja sim, este seria o momento em que você se perguntaria “Ok, e como faço para reaproveitar código sem estragar meu HTML?”</p>
<p>JQuery é usado por 50% dos principais sites. Isso significa muita gente usando. O JQuery-UI permite criar um calendário bastante similar (na minha opinião, até melhor), usando o código:</p>

<div class="wp_codebox"><table><tr id="p240214"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p2402code14"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>input id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;dataInicial&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text&quot;</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;date&quot;</span> <span style="color: #339933;">/&gt;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//SCRIPT</span>
$<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;.date&quot;</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">datepicker</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>Resolvendo o problema da sujeira</h4>
<p>O código acima, se colocado no seu arquivo comum de javascript, fará todo seu site saber que componentes com a classe date devem ser tratados como data. Note que não existe uma única sujeira a não ser uma classe de estilo indicando que aquele campo se trata de uma data.</p>
<h4>Resolvendo o problema de portabilidade</h4>
<p>Mas e se o projeto JQuery morrer, ou por algum motivo existir a necessidade de trocar de framework?<br />
Primeiro que a chance de um projeto de framework em Javascript morrer acho que é menor do que a de um framework PHP, JAVA, etc. Mas isso é achismo.<br />
O fato é que o HTML continua puro e o seu Javascript pode ser portado para outro framework (por exemplo mootools) sem muito transtorno, bastaria trocar a linha:</p>

<div class="wp_codebox"><table><tr id="p240215"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code15"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;.date&quot;</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">datepicker</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>por</p>

<div class="wp_codebox"><table><tr id="p240216"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p2402code16"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">new</span> DatePicker<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.date'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> pickerClass<span style="color: #339933;">:</span> <span style="color: #3366CC;">'datepicker_vista'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Mas falarei principalmente do JQuery por conta da grande quantidade de plugins.</p>
<p><H5>Mobile</H5></p>
<p>Com o JQuery Mobile, já se fala em produzir os componentes de forma a funcionar em diversos dispositivos da maneira mais adequada para cada um deles. Isso é possível pois a troca de um arquivo javascript por outro é sempre menos traumática do que fazer isto do lado do servidor.</p>
<p><H5>Sendo neurótico</h5>
<p>Ainda está inseguro? Você ainda pode isolar o framework javascript em uma biblioteca sua e facilitar o seu trabalho no caso improvável do JQuery cair no esquecimento.</p>
<h4>Resolvendo o problema de conhecimento específico</h4>
<p>Como o HTML vai estar puro, não será mais necessário um conhecimento específico. Se o site for feito em JSF (J2EE), não precisa ser um desenvolvedor JSF para corrigir um erro no layout ou no conteúdo. A única pessoa que vai precisar ter um conhecimento maior é o desenvolvedor que fizer uso do javascript, mas ali só será alterado se for necessário o desenvolvedor se envolver. E é obviamente mais fácil achar um desenvolvedor javascript do que um desenvolvedor JSF pois um desenvolvedor javascript que programa em PHP também poderá corrigir o componente caso esse dê defeito.</p>
<h4>Mundo expandido</h4>
<p>No geral, o Java provavelmente é talvez mais utilizado que o Javascript. Porém no lado do cliente web (ou navegador), o Javascript ainda sai na frente. Isto ocorre pois qualquer site, feito em Java, PHP, .Net etc. acaba fazendo uso do script. Então, se os componentes estiverem sendo renderizados via javascript, a chance de encontrar a resposta para o seu problema ou algo pronto, é muito maior.</p>
<h3>Conclusão</h3>
<p>Ao optar por criar componentes em JQuery em vez de taglibs você tornará seu código HTML mais limpo, permitirá a manutenção dele por pessoas que desconhecem a tecnologia do servidor, facilitará a troca de tecnologia do servidor e terá uma comunidade mais abrangente para te ajudar com a criação de componentes. Se esses fatores são importantes para o seu projeto valerá a pena pensar em investir em componentes no lado do cliente.</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2402/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removendo a tag BR do código</title>
		<link>http://casal10.evonblogs.com.br/bytes/2394</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2394#comments</comments>
		<pubDate>Fri, 27 Jan 2012 17:59:11 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[laboratório nerd]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[programando sem tabelas]]></category>
		<category><![CDATA[quebrando linha via css]]></category>
		<category><![CDATA[Tableless]]></category>
		<category><![CDATA[tag br]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2394</guid>
		<description><![CDATA[1 2 3 4 5 #PHP VS JAVA //JAVA VS PYTHON /*C++ VS JAVA*/ 'JAVA VS .NET out.println(&#34;EU NAO SEI PROGRAMAR NADA!&#34;); Você já deve ter ouvido falar que a tag BR está marcada como obsoleta (deprecated) pela W3C, assim como a b, font, i etc. Cada tem seus motivos. Agora o HTML é separado [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox"><table><tr id="p239420"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2394code20"><pre class="javascript" style="font-family:monospace;">#PHP VS  JAVA
<span style="color: #006600; font-style: italic;">//JAVA VS PYTHON</span>
<span style="color: #009966; font-style: italic;">/*C++ VS JAVA*/</span>
<span style="color: #3366CC;">'JAVA VS .NET
out.println(&quot;EU NAO SEI PROGRAMAR NADA!&quot;);</span></pre></td></tr></table></div>

<p>Você já deve ter ouvido falar que a tag BR está marcada como obsoleta (deprecated) pela W3C, assim como a b, font, i etc. Cada tem seus motivos. </p>
<p>Agora o HTML é separado em 3 camadas, HTML (conteúdo), CSS (estilo), JS (parte dinâmica). Todas as tags ficam dentro do arquivo HTML e cada tag trás alguma informação, algum conteúdo. Porém BR é uma tag de estilo e não de conteúdo. Br significa pular uma linha, e isso é forma e estilo e não tem significado algum pro documento, então não é o lugar dele no HTML. Para pular a linha, deve-se usar o css pois é no css que tem todas as informações de como o conteúdo deverá aparecer.</p>
<p>Vou supor que você já tenha um conhecimento básico de CSS. Oras, se você quer pular uma linha numa lista, é fácil. Basta usar ul e li que cada item irá aparecer numa nova linha. Isto é tranquilo. </p>
<p>Se você estiver usando componentes com float, você pode usar o clear (clear:left, clear:right, etc) e isso fará o elemento ser desenhado na linha debaixo.</p>
<p>Se é uma parágrafo, ok também. Por padrão, todos os navegadores pulam uma linha para a tag P.</p>
<p>Mas nem tudo são flores, veja o exemplo abaixo:</p>

<div class="wp_codebox"><table><tr id="p239421"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2394code21"><pre class="html" style="font-family:monospace;">&lt;div&gt;
    &lt;label id=&quot;teste1&quot;&gt;teste&lt;/label&gt;&lt;input&gt;
    &lt;label id=&quot;teste2&quot;&gt;teste&lt;/label&gt;&lt;input&gt;
    &lt;label id=&quot;teste3&quot;&gt;teste&lt;/label&gt;&lt;input&gt;
&lt;/div&gt;</pre></td></tr></table></div>

<p>Digamos que tenho a intenção de fazer o label vir antes do input e pular uma linha antes de cada label. Não é um parágrafo, não quero usar float (até porque usar float no site inteiro muitas vezes é perigoso) e óbviamente não quero usar a tag BR.</p>
<p>Como ficaria o CSS ?</p>

<div class="wp_codebox"><table><tr id="p239422"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2394code22"><pre class="css" style="font-family:monospace;">div label<span style="color: #3333ff;">:before
</span><span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\a</span>'</span> <span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">white-space</span><span style="color: #00AA00;">:</span> pre<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Simples assim. O significado é, antes da label coloca-se uma quebra de linha &#8216;\a&#8217;. Para saber sobre outros caracteres de scapes, veja o texto <a href="http://www.merttol.com/articles/web/code/introduction-to-css-escape-sequences.html">Introduction to css escape sequences</a>.</p>
<p>Para ver funcionando, e testar:<br />
 <a href='http://casal10.evonblogs.com.br/wp-content/uploads/2012/01/teste.html'>teste</a></p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2394/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Março Negro</title>
		<link>http://casal10.evonblogs.com.br/bytes/2388</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2388#comments</comments>
		<pubDate>Sat, 21 Jan 2012 11:01:48 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[consumidor]]></category>
		<category><![CDATA[leis]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2388</guid>
		<description><![CDATA[Recebi essa mensagem de um amigo meu pelo G+, Dinart e estou divulgando. Não custa nada mesmo, pelo contrário até economizarei alguns reais. O maior trabalho meu será desligar a conta do netflix e religar ela em abril. Mas até ai é bom, quem sabe eu não ganhe algum desconto. Como disse no G+, talvez [...]]]></description>
			<content:encoded><![CDATA[<p>Recebi essa mensagem de um amigo meu pelo G+, Dinart e estou divulgando. Não custa nada mesmo, pelo contrário até economizarei alguns reais. O maior trabalho meu será desligar a conta do netflix e religar ela em abril. Mas até ai é bom, quem sabe eu não ganhe algum desconto.</p>
<p>Como disse no G+, talvez doendo no bolso, surta algum efeito.</p>
<p>Eu vou até além, não divulguem filmes, livros e CDs pela internet nesse período. Finjam que nenhuma dessas mídias existam. Uma vez que eles dizem que a Internet causa prejuízo para eles, é bom de vez enquando fazerem eles se lembrarem como eles passaram a ganhar mais $$ com a propagação da internet livre.</p>
<p>Pelo logotipo no final da imagem, chuto (com grande chance de errar) que a idéia está sendo divulgada pelo grupo Anonymous. Independente disso a idéia de boicote é uma ação política menos sujeita a crítica do que ataques a grandes sites.</p>
<p><a href="http://casal10.evonblogs.com.br/wp-content/uploads/2012/01/397143_302770333107212_100001227444329_916404_1280680061_n.jpg"><img src="http://casal10.evonblogs.com.br/wp-content/uploads/2012/01/397143_302770333107212_100001227444329_916404_1280680061_n.jpg" alt="Março Negro" title="Março Negro" width="457" height="720" class="aligncenter size-thumbnail wp-image-2389" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2388/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neve² !</title>
		<link>http://casal10.evonblogs.com.br/bytes/2381</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2381#comments</comments>
		<pubDate>Tue, 20 Dec 2011 19:28:25 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[laboratório nerd]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[neve]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2381</guid>
		<description><![CDATA[Ano passado eu coloquei aqui um script para gerar neve. Este ano vou repetir a dose, mas desta vez eu fiz o script em JQuery. Ficou mais pesado mas também ficou mais fácil de dar manutenção. E também não tem os erros que havia no outro (com xml e afins). Abaixo o fonte para download [...]]]></description>
			<content:encoded><![CDATA[<p>Ano passado eu coloquei aqui um <a href="http://casal10.evonblogs.com.br/bytes/951">script </a>para gerar neve. Este ano vou repetir a dose, mas desta vez eu fiz o script em JQuery. Ficou mais pesado mas também ficou mais fácil de dar manutenção. E também não tem os erros que havia no outro (com xml e afins).</p>
<p>Abaixo o fonte para download (e nem é necessário dizer que precisa ter JQuery para rodá-lo):<br />
<a href='http://casal10.evonblogs.com.br/wp-content/uploads/2011/12/jquery-snow.js'>jquery-snow</a></p>
<p>Para usar o plugin, basta :</p>

<div class="wp_codebox"><table><tr id="p238124"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p2381code24"><pre class="javascript" style="font-family:monospace;">                        $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span>init<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003366; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				$.<span style="color: #660066;">fn</span>.<span style="color: #660066;">snow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2381/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprando um notebook</title>
		<link>http://casal10.evonblogs.com.br/bytes/2368</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2368#comments</comments>
		<pubDate>Tue, 01 Nov 2011 11:52:29 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[consumidor]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[notebook]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2368</guid>
		<description><![CDATA[Recebi um email outro dia, um tanto interessante. O email divulgava um notebook com um preço muito atrativo. Então decidi trocar antecipadamente meu notebook (que ainda estava semi-novo com 1 ano e 4 meses de uso) por um novinho, vejam só como foi: Esta é uma mensagem automática enviada pelo chat do suporte técnico da [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_2370" class="wp-caption alignleft" style="width: 138px"><a href="http://www.iconfinder.com/icondetails/32616/128/computer_laptop_notebook_icon" target="_blank"><img src="http://casal10.evonblogs.com.br/wp-content/uploads/2011/11/1320148045_Laptop-Black.png" alt="notebook" title="notebook" width="128" height="128" class="size-full wp-image-2370" /></a><p class="wp-caption-text">by Kyo Tux</p></div><br />
Recebi um email outro dia, um tanto interessante. O email divulgava um notebook com um preço muito atrativo. Então decidi trocar antecipadamente meu notebook (que ainda estava semi-novo com 1 ano e 4 meses de uso) por um novinho, vejam só como foi:</p>
<p><code><br />
Esta é uma mensagem automática enviada pelo chat do suporte técnico da FABRICANTE_NOTEBOOK. A informação a seguir é o registro da sua sessão. Por favor salve o registro para seu controle.<br />
Número da sessão : 46984629<br />
Tempo 	Detalhes<br />
09/28/2011 08:53:31AM 	URL Mostrado: "https://chatadengine.FABRICANTE_NOTEBOOK.com/chatadsengine/adengine/Default.aspx?Queue=1A4557F2-5219-4100-98B9-D8CA14F31FB7"<br />
09/28/2011 08:53:47AM 	A sessão começou com agente (Camila_M)<br />
09/28/2011 08:53:53AM 	Agente (Camila_M) emite a página: "http://www1.la.FABRICANTE_NOTEBOOK.com/content/topics/reftopic.aspx/gen/en/setrepcode?c=mx&#038;l=es&#038;s=dhs&#038;rep_id=6735&#038;rep_type=CHAT&#038;redirect_url=http%3A//www.FABRICANTE_NOTEBOOK.com.br"<br />
09/28/2011 08:53:56AM 	Agente (Camila_M): "Bem vindo ao Chat de Vendas FABRICANTE_NOTEBOOK! <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Meu nome é Camila Machado, meu Ramal é 6735 e serei sua Representante de Vendas. Por gentileza me informe fone de contato com ddd, para mantermos contato caso haja instabilidade na conexão. Mas vamos falando pelo chat,"<br />
&#038;nbsp	combinado? <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )<br />
09/28/2011 08:54:22AM 	Albano: "Ola recebi uma oferta pelo email"<br />
09/28/2011 08:54:32AM 	Albano: "porém ela é diferente do que esta anunciado no site"<br />
09/28/2011 08:54:33AM 	Albano: "como faço?"<br />
09/28/2011 08:54:44AM 	Agente (Camila_M): "Vai ser ótimo lhe atender, serei sua consultora de vendas e vou ajudar até finalizar seu pedido em nosso site, ok?"<br />
09/28/2011 08:54:53AM 	Agente (Camila_M): "qual oferta vc recebeu?"<br />
09/28/2011 08:55:37AM 	Albano: "No email diz: Inspirion 14, saída HDMI , Core i5, Win 7 Basic, 4gb de mem, 500G HD 1699"<br />
09/28/2011 08:55:41AM 	Albano: "Mas ao clicar no link"<br />
09/28/2011 08:56:16AM 	Albano: "o HD é de 320"<br />
09/28/2011 08:56:28AM 	Agente (Camila_M): "temos esta oferta posso fazer para vc tambem"<br />
09/28/2011 08:56:41AM 	Agente (Camila_M) emite a página: "http://www.FABRICANTE_NOTEBOOK.com/br/p/email-notebook-dhs-FABRICANTE_NOTEBOOK-2?dgc=EM&#038;cid=73922&#038;lid=1895606&#038;acd=VN3N5Y-QPTK6-00NPI7-L9QY5B-HRGRM-v1"<br />
09/28/2011 08:56:46AM 	Agente (Camila_M): "segue link Albano"<br />
09/28/2011 08:57:56AM 	Agente (Camila_M): "com 500 de Hd é R$1799"<br />
09/28/2011 08:58:31AM 	Albano: "não é o que diz no meu email"<br />
09/28/2011 08:58:37AM 	Agente (Camila_M): "provavel ser erro mas markenting ma ja encaminhou novo email com a correção"<br />
09/28/2011 08:58:57AM 	Albano: "Vocês são obrigados a cumprir o anunciado."<br />
09/28/2011 08:59:09AM 	Albano: "Como faço para comprar o anunciado?"<br />
09/28/2011 08:59:47AM 	Agente (Camila_M): "vc deve ter recebido novo email da oferta com a correção pois com Hd de 500 valor R$1799"<br />
09/28/2011 09:01:25AM 	Albano: "O primeiro email diz que tenho 48h para comprar o note com hd de 500 e quero ele, não quero outro."<br />
09/28/2011 09:02:21AM 	Albano: "Se vocês não me venderem vou colocar na internet que vocês estão anunciando uma coisa e depois alegam erro e não querem cumprir, eu me programei pra comprar este de 500"<br />
09/28/2011 09:02:41AM 	Agente (Camila_M): "entendo vc , porem infelizmente foi erro de markenting"<br />
09/28/2011 09:03:12AM 	Albano: "Eu não sou sócio da FABRICANTE_NOTEBOOK, não participo dos lucros então não quero participar dos prejuízos"<br />
09/28/2011 09:03:27AM 	Albano: "Eu quero o que foi prometido conforme a lei manda. Vocês ofereceram, me programei pra comprá-lo."<br />
09/28/2011 09:03:53AM 	Albano: "Quero ele, o HD de 500 GB, eu sou cliente de vocês há muitos anos e vou xingar muito no twitter se vocês não me venderem este exato notebook."<br />
09/28/2011 09:04:34AM 	Albano: "Me passe para sua gerente se é um caso atípíco, se não você vai ficar famosa. Pois vou querer os meus direitos e causar transtorno até consegui-los."<br />
09/28/2011 09:05:36AM 	Agente (Camila_M): "reconhecemos o erro e ja foi solucionado, com HD de 500 valor R$1799"<br />
09/28/2011 09:06:08AM 	Albano: "Mas não quero pagar 1799 pois não foi o que me prometeram, a lei obriga vocês cobrarem o menor preço anunciado. Vocês estão querendo me roubar 100 reais."<br />
09/28/2011 09:06:16AM 	Albano: "E tem mais, é frete gratis pois moro no sudeste."<br />
09/28/2011 09:07:53AM 	Agente (Camila_M): "me informe seu fone de contato vou repassar este caso para supervisão"<br />
09/28/2011 09:08:11AM 	Agente (Camila_M): "para ver se conseguimos honrar esta oferta para vc"<br />
09/28/2011 09:10:27AM 	Agente (Camila_M): "Albano ja consegui esta oferta para vc, ok"<br />
09/28/2011 09:10:38AM 	Agente (Camila_M): "R$1699 com HD de 500"<br />
09/28/2011 09:10:54AM 	Agente (Camila_M): "neste caso preciso realizar o pedido para vc"<br />
09/28/2011 09:11:03AM 	Agente (Camila_M): "Preciso do nome completo, cpf, endereço completo com cep e fones de contato com DDD?"<br />
09/28/2011 09:13:13AM 	Albano: "ok"<br />
09/28/2011 09:17:27AM 	Agente (Camila_M): "pode me informar novamente (seus dados) ?"<br />
09/28/2011 09:17:29AM 	Albano: "certo"<br />
09/28/2011 09:17:40AM 	Albano: "Então confirmando, o anunciad pelo email por 1699 com frete gratis"<br />
09/28/2011 09:17:49AM 	Albano: "hd de 500, corei5 , 4gb de ram"<br />
09/28/2011 09:17:52AM 	Albano: "confere?"<br />
09/28/2011 09:18:01AM 	Albano: "Meu nome é ALBANO BELTRANO CICLANO DELTRANO FULANO"<br />
09/28/2011 09:18:12AM 	Agente (Camila_M): "isso frete gratis para região sul e sudeste"<br />
09/28/2011 09:18:23AM 	Agente (Camila_M): "consegui honrar para vc R$1699 com HD de 500"<br />
09/28/2011 09:18:35AM 	Albano: "CPF 12345670-70"<br />
09/28/2011 09:19:07AM 	Albano: "Quero a mesma oferta do email, ok?"<br />
09/28/2011 09:19:30AM 	Albano: "Inclusive na forma de pagamento."<br />
09/28/2011 09:19:46AM 	Albano: "Com windows."<br />
09/28/2011 09:20:30AM 	Agente (Camila_M): "isso Segunda Geração do Processador Intel® Core™ i5-2410M"<br />
09/28/2011 09:20:47AM 	Agente (Camila_M): "Memória 4GB"<br />
09/28/2011 09:20:59AM 	Agente (Camila_M): "Disco Rígido SATA de 500"<br />
09/28/2011 09:21:19AM 	Agente (Camila_M): "Windows® 7 Home Basic Original 64-Bit em Português"<br />
09/28/2011 09:21:36AM 	Agente (Camila_M): "endereço completo com cep e fones de contato com DDD?"<br />
09/28/2011 09:21:50AM 	Albano: "ok"<br />
09/28/2011 09:22:22AM 	Albano: "Endereço: Rua dos Bobos, 0 - Terra do Nunca- Brasília-DF CEP 13570-070"<br />
09/28/2011 09:22:35AM 	Albano: "Telefonica 11-4070-7070<br />
Trabalho 3570-7070<br />
Celular 7070-7070"<br />
09/28/2011 09:23:00AM 	Albano: "Você vai ver no seu cadastro que é o 4 ou 5o note que já comprei ai, talvez um pouco menos pois acho que um eu comprei no nome de minha esposa"<br />
09/28/2011 09:23:41AM 	Agente (Camila_M): ":)) que bom ja conhece então nossos produtos"<br />
09/28/2011 09:24:56AM 	Albano: "sim"<br />
09/28/2011 09:25:05AM 	Albano: "sou cliente ha anos , não troco"<br />
09/28/2011 09:25:15AM 	Albano: "ok, qual o proximo passo?"<br />
09/28/2011 09:26:00AM 	Agente (Camila_M): "qual a forma de pagamento?"<br />
09/28/2011 09:26:40AM 	Albano: "10x no cartão"<br />
09/28/2011 09:27:14AM 	Agente (Camila_M): "me informe numero do cartão, validade e codigo de segurança ?"<br />
09/28/2011 09:27:47AM 	Albano: "ok"<br />
09/28/2011 09:28:50AM 	Albano: "****-****-****-**** cod seg ***"<br />
09/28/2011 09:29:01AM 	Albano: "val 01/12"<br />
09/28/2011 09:29:06AM 	Agente (Camila_M): "ok, momento"<br />
09/28/2011 09:30:04AM 	Agente (Camila_M): "prontinho vou processar aqui no sistem e solicitar liberação da oferta"<br />
09/28/2011 09:30:17AM 	Agente (Camila_M): "assim que estiver tudo ok encaminho email para vc de confirmação"<br />
09/28/2011 09:31:09AM 	Albano: "ok, aguardando"<br />
09/28/2011 09:33:12AM 	Agente (Camila_M): "PARABÉNS PELA COMPRA !!!! Agora é só aguardar a confirmação e os dados do pedido que serão enviado por e-mail, assim que processá-lo! <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )"<br />
09/28/2011 09:33:21AM 	Agente (Camila_M): "Antes de finalizarmos nossa sessão, posso pedir 2 gentilezas <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ?"<br />
09/28/2011 09:33:59AM 	Albano: "sim?"<br />
09/28/2011 09:34:26AM 	Agente (Camila_M): "1-Caso tenha algum amigo, familiar ou conhecido que esteja interessado em adquirir um computador, por favor indique meu ramal 6735 e e-mail camila_c_machado@dell.com, para que eu possa oferecer um atendimento preferencial e especializado."<br />
09/28/2011 09:34:29AM 	Agente (Camila_M): "Segue um link para você comentar sobre meu atendimento. Peço a gentileza de avaliar inserindo meu nome Camila e ramal 6735 no campo de comentários. Isto contribuirá para aprimorar meu atendimento e é de extrema importância para meu crescimento dentro da"<br />
&#038;nbsp	FABRICANTE_NOTEBOOK.<br />
09/28/2011 09:34:38AM 	Agente (Camila_M) emite a página: "http://www.FABRICANTE_NOTEBOOK.com.br/pesquisachat"<br />
09/28/2011 09:34:43AM 	Albano: "1- ok, farei sim Camila"<br />
09/28/2011 09:35:25AM 	Agente (Camila_M): "obrigada Albano"<br />
09/28/2011 09:36:03AM 	Albano: "e a 2?"<br />
09/28/2011 09:36:35AM 	Agente (Camila_M): "link da pesquisa <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> "<br />
09/28/2011 09:36:43AM 	Agente (Camila_M): "ja mandei acima"<br />
09/28/2011 09:36:53AM 	Albano: "Ah ta! Bom, tenha um bom dia!"<br />
09/28/2011 09:36:56AM 	Albano: "Posso desligar o chat?"<br />
09/28/2011 09:37:26AM 	Agente (Camila_M): "pode sim"<br />
09/28/2011 09:37:33AM 	Agente (Camila_M): "qualquer duvida pode me mandar email"<br />
09/28/2011 09:37:40AM 	Albano: "obrigado, questionario respondido"<br />
09/28/2011 09:38:02AM 	Agente (Camila_M): "ebaaa"<br />
</code></p>
<p>Nunca me diverti tanto, resultado que acabei comprando e fazendo valer a lei do consumidor. E apesar de no começo a atendente tentar vender o enunciado mais caro eles acabaram fazendo o correto, vendendo pelo menor preço anunciado. Parabéns! Melhor que isto só nem questionando, indo direto pro menor preço mas ai não teria tanta graça ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2368/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gambiarra</title>
		<link>http://casal10.evonblogs.com.br/bytes/2365</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2365#comments</comments>
		<pubDate>Mon, 31 Oct 2011 19:07:37 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[jabá]]></category>
		<category><![CDATA[laboratório nerd]]></category>
		<category><![CDATA[gambiarra]]></category>
		<category><![CDATA[programação ruim]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2365</guid>
		<description><![CDATA[Ola, durante a minha vida de analista de sistemas eu já vi muita coisa bizarra e mal feita. Muitas feitas até por mim mesmo no início de carreira =) Outras feitas por amigos e colegas de profissão, estagiários (que deveriam estar aprendendo e não mexendo em código) e programadores Jr. O que eu nunca tinha [...]]]></description>
			<content:encoded><![CDATA[<p>Ola,</p>
<p>durante a minha vida de analista de sistemas eu já vi muita coisa bizarra e mal feita. Muitas feitas até por mim mesmo no início de carreira =)</p>
<p>Outras feitas por amigos e colegas de profissão, estagiários (que deveriam estar aprendendo e não mexendo em código) e programadores Jr.</p>
<p>O que eu nunca tinha pensado em fazer era juntar todas estas pérolas, e quando comecei a juntar vi que não eram poucas, ainda mais quando comecei a receber contribuições. Então montei um site apenas com estas preciosidades, espero que a comunidade nerd aproveite : </p>
<p><a href="http://gambiarra.evonblogs.com.br/">http://gambiarra.evonblogs.com.br/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2365/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dump muito grande? Erro de max_allowed_packet ?</title>
		<link>http://casal10.evonblogs.com.br/bytes/2361</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2361#comments</comments>
		<pubDate>Tue, 18 Oct 2011 22:45:21 +0000</pubDate>
		<dc:creator>Edson</dc:creator>
				<category><![CDATA[laboratório nerd]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[max_allowed_packet]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[timeout]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2361</guid>
		<description><![CDATA[Quando fazemos um dump de um banco de dados Mysql, e depois efetuamos a restauração, sempre corremos o risco de dar o famoso erro max allowed packet. Isto ocorre pois o servidor tem um limite de quanto ele aceita receber em bytes de uma determinada query (no caso provavelmente será um include). O default vem [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_2271" class="wp-caption alignleft" style="width: 160px"><a href="http://casal10.evonblogs.com.br/wp-content/uploads/2011/09/logo-mysql-300x218.jpg"><img src="http://casal10.evonblogs.com.br/wp-content/uploads/2011/09/logo-mysql-300x218-150x150.jpg" alt="mysql" title="mysql" width="150" height="150" class="size-thumbnail wp-image-2271" /></a><p class="wp-caption-text">mysql</p></div> Quando fazemos um dump de um banco de dados <a href="http://www.mysql.com/">Mysql</a>, e depois efetuamos a restauração, sempre corremos o risco de  dar o famoso erro max allowed packet. Isto ocorre pois o servidor tem um limite de quanto ele aceita receber em bytes de uma determinada query (no caso provavelmente será um include). O default vem mudando ao longo do tempo mas isto se resolve facilmente, para tal basta editar o arquivo mysql.ini que fica na pasta de instalação do seu servidor (no linux mysql.cnf  ). A linha a ser adicionada deve ser feita embaixo da chave [mysqld] :</p>
<p>max_allowed_packet=16M</p>
<p>Se mesmo assim não resolver, experimente aumentar para 32M e assim por diante. </p>
<p><H3>Agora o erro mudou </h3>
<p>Começou a dar timeout? Server has gone away?<br />
Fácil, significa que estamos no caminho certo. Esta mensagem significa que de tão grande o pacote, deu timeout na comunicação. Experimente adicionar mais estes parâmetros embaixo da linha max_allowed_packet.</p>
<p>wait_timeout=60000<br />
connect_timeout=60000<br />
net_read_timeout=60000</p>
<p>Se mesmo assim não resolver, experimente aumentar ainda mais o limite.</p>
<p><H3>Agora o erro mudou de novo </h3>
<p>Chame um padre!</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2361/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A masmorra é nossa!</title>
		<link>http://casal10.evonblogs.com.br/bytes/2275</link>
		<comments>http://casal10.evonblogs.com.br/bytes/2275#comments</comments>
		<pubDate>Mon, 12 Sep 2011 14:54:45 +0000</pubDate>
		<dc:creator>Maíra</dc:creator>
				<category><![CDATA[diversão]]></category>
		<category><![CDATA[boardgames]]></category>
		<category><![CDATA[jogos de tabuleiro]]></category>

		<guid isPermaLink="false">http://casal10.evonblogs.com.br/?p=2275</guid>
		<description><![CDATA[E a FunBox &#8220;acaba&#8221; com mais um final de semana nosso Depois de passarmos por lá para mostrar o lugar ao Danielfo, levamos para casa o Dungeon Lords, por indicação da Vanessa. E aí que passamos praticamente o final de semana inteiro jogando. O saldo: ganhei apenas uma das partidas contra o marido-nerd, e mesmo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-2277" style="margin-left: 3px; margin-right: 3px;" title="DL2" src="http://casal10.evonblogs.com.br/wp-content/uploads/2011/09/zmg_dungeonlords-150x150.jpg" alt="" width="150" height="150" />E a <a href="http://funboxbr.blogspot.com/">FunBox</a> &#8220;acaba&#8221; com mais um final de semana nosso <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Depois de passarmos por lá para mostrar o lugar ao <a href="http://pensotopia.com.br/author/danielfo/">Danielfo</a>, levamos para casa o <a href="http://boardgamegeek.com/boardgame/45315/dungeon-lords">Dungeon Lords</a>, por indicação da Vanessa.</p>
<p>E aí que passamos praticamente o final de semana inteiro jogando. O saldo: ganhei apenas uma das partidas contra o marido-nerd, e mesmo assim foi muito divertido!</p>
<h3>O jogo</h3>
<p><img class="alignright size-medium wp-image-2276" title="DL1" src="http://casal10.evonblogs.com.br/wp-content/uploads/2011/09/dungeon_lords_components-300x182.png" alt="" width="300" height="182" />Cada jogador é o <strong>senhor de uma dungeon</strong> e passa dois anos (de mentira, é claro) construindo e administrando seus túneis, salas, armadilhas e monstros. O programa de treinamento e formação para se tornar um senhor de masmorra é patrocinado pelo Ministério das Masmorras e tem o propósito educativo de conscientizar os aventureiros em relação a todo o trabalho que eles têm o prazer de destruir em uma pilhagem. Manter uma dungeon não é nada fácil! E esses malditos aventureiros vêm e acham que podem destruir tudo em uma tacada só! Onde já se viu?</p>
<p>O <strong>desafio</strong> é esse: construir uma dungeon mais destrutiva que o outro jogador, contratando os melhores monstros, montando as melhores armadilhas e atraindo a melhor combinação de aventureiros &#8211; quanto pior fama você tiver, aventureiros mais ousados e poderosos você vai atrair. Se sua fama for realmente ruim, o temível paladino virá liderar a party. E ele é realmente devastador.</p>
<h3>Didático</h3>
<div id="attachment_2278" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-2278" title="imps" src="http://casal10.evonblogs.com.br/wp-content/uploads/2011/09/imps-150x150.jpg" alt="" width="150" height="150" /><p class="wp-caption-text">Esses carinhas adoram trabalhar...</p></div>
<p>O <strong>manual</strong> é excelente. A exemplo do <a href="http://boardgamegeek.com/boardgame/38453/space-alert">Space Alert</a> (este nós jogamos com o <a href="http://www.rolando20.com.br/">Anand</a>), que é do mesmo criador, <a href="http://boardgamegeek.com/boardgamedesigner/789/vlaada-vladimir-chvatil">Vlaada (Vladimír) Chvátil</a>, o manual tem uma narrativa. Não são só as regras. E o fluff não está lá à toa. As explicaçõezinhas dos assistentes do Ministério das Masmorras ajudam a guardar regras que não necessariamente teriam alguma lógica, além das exceções. Por exemplo: o clérigo só cura dano causado por monstro, mas não cura dano de armadilha. A explicação é que eles são bem amiguinhos dos advogados e seguem o contrato à risca &#8211; lá diz que clérigo cura danos dos combates. Se não tem combate, não tem cura. Bem mais fácil lembrar disso durante o jogo com essa historinha, não? E bem mais divertido. Seria lindo dar o manual de <a href="http://boardgamegeek.com/boardgame/15987/arkham-horror">Arkham Horror</a> para essa turma criar. Aliás, um marcador de rodadas como o que tem no Dungeon Lords também seria excelente no Arkham.</p>
<h3>Um passo de cada vez</h3>
<p>Também a exemplo do Space Alert, o jogo tem um <strong>módulo de treinamento</strong>. Você aprende o fundamental jogando, junto com o manual. Isso também não está lá à toa. Não pule essa parte se for jogar pela primeira vez. O treinamento ensina como os aventureiros invadem a sua dungeon e isso é crucial para você saber como se preparar para eles. Depois, vocês podem jogar uma partida com as regras básicas e, só depois, jogar com as regras cheias. Sua vida fica cada vez mais difícil. E, por fim, a caixa já vem com algumas cartas e peças extras, que são parte de uma <strong>expansão</strong>. Essas regras você pega no <a href="http://czechgames.com/en/dungeon-lords/">site oficial do jogo</a>. Fácil? Nem tanto. As regras só podem ser vistas depois de passar um teste, para ver se você realmente passou no crivo dos fiscais do Ministério das Masmorras e já é um Senhor de Masmorras de respeito.</p>
<p><em>Nós vamos ler as regras e tentar jogar essa expansão hoje &#8211; faço uma atualização aqui em seguida!</em></p>
<p><em>Update: </em>Então que fizemos o quiz ontem lá no site do jogo. Calculamos, debatemos, chegamos a um acordo para cada resposta e&#8230;. nosso resultado foi 0/7!! Não acertamos uma! haha O site deixa a gente ver as regras da expansão mesmo assim, mas avisa que talvez não seja uma boa ideia&#8230; De fato. Decidimos seguir o conselho do criador do jogo. As perguntas mostram que: 1º, o criador do jogo é doente; 2º, que há muitos jogadores doentes por aí. haha. Sério. Leia mais abaixo do tópico abaixo.</p>
<h3>Estratégia e diversão</h3>
<p>Para quem joga <strong>RPG</strong>, especialmente aventuras medievais, é bem divertido estar do outro lado do balcão. Os monstros são todos simpáticos, as situações são engraçadas, mas nem por isso o jogo é muito fácil. Jogar contra o marido-nerd é terrível rs. Como ele mesmo disse, ele é programador: lidar com muitas <strong>variáveis</strong> ao mesmo tempo é sua especialidade. Uma pisada na bola e o jogo está perdido &#8211; e o mimimi é inevitável! haha. Ao mesmo tempo, ninguém escapa de uma pisada bonita na bola &#8211; e isso também é bastante divertido. O jogo tem também um tanto de sorte, especialmente no sorteio dos três eventos especiais ao longo do ano, que podem modificar o rumo de uma administração de dungeon &#8211; o dia de pagamento dos monstros contratados, o dia de pagar as taxas pelos túneis cavados e o evento especialíssimo que é sorteado quando se joga com as regras cheias. Enfim, ganhando ou perdendo, o jogo foi aprovado por nossa mesa!</p>
<p><em>Update:</em> Depois de tentar fazer o quiz, notamos que na real mesmo, todos os fatores de sorte são plenamente contornáveis com estratégia &#8211; os eventos aparecem com bastante antecedência e mesmo as magias de combate podem ser bisbilhotadas antes ou evitadas se você não pegar magos no grupo. Não é aleatoriedade, na verdade. É só um fator que pode mudar o rumo da sua estratégia. Deve ter gente maluca que joga isso sabendo exatamente quantos pontos vai fazer no final e como vai fazer isso. O legal é que o jogo é divertido para qualquer nível de nerdice do grupo &#8211; se for uma turma de jogo mais leve, o jogo vai ter uma cara de aleatório, de sacanagens um com o outro, e vai ser divertido. Se for uma turma que gosta de um tanto de estratégia, vai ser divertido. E ser for uma turma de malucos, o jogo é bem construído para agradar também. Esse é o motivo principal para o teste pré-expansão, concluímos. Se o grupo for de jogar na brincadeira, os itens mágicos da expansão só vão tornar o jogo com uma aparência de mais aleatório e complicar demais o combate. Para quem é estratégia-freak, porém, a expansão de fato acrescenta mais possibilidades de planejamento e diversão. O importante é que seja sempre um grupo razoavelmente equilibrado, senão alguém sempre vai ganhar todas e detonar demais os adversários &#8211; ao menos é o que a gente imagina. Por trás de um jogo aparentemente simples e leve, tem uma estrutura pesada de estratégia.</p>
<h3>2 a 4 jogadores</h3>
<p>Vale registrar aqui que jogamos com as regras para dois jogadores apenas. Neste caso, cada jogador controla a sua dungeon e um módulo bem simplificado que simula um pouco a presença de outro jogador &#8211; especialmente na disputa de ações. Aos poucos, vamos aprendendo a usar esse não-jogador como parte da estratégia, então jogar com três ou quatro jogadores depois de jogar em dois deve ser bem caótico. Não teremos chance de testar antes da devolução da caixa, mas se alguém quiser jogar com a gente, aceitamos o convite <img src='http://casal10.evonblogs.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Para ver o jogo, vale conferir o<a href="http://www.aboardgames.net/episodio-05-dungeon-lords/"> review o aBoard Games</a>. Depois, <a href="http://www.mercadolivre.com.br/jm/item?site=MLB&amp;id=209586997">compre aqui</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://casal10.evonblogs.com.br/bytes/2275/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

