<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Boteco Digital</title>
	
	<link>http://www.botecodigital.info</link>
	<description />
	<lastBuildDate>Tue, 22 May 2012 03:14:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BotecoDigital" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="botecodigital" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">BotecoDigital</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>jQuery UI datepicker em Português</title>
		<link>http://www.botecodigital.info/web/jquery-ui-datepicker-em-portugues/</link>
		<comments>http://www.botecodigital.info/web/jquery-ui-datepicker-em-portugues/#comments</comments>
		<pubDate>Tue, 22 May 2012 03:14:23 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[datepicker]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2152</guid>
		<description><![CDATA[Um dos plugins mais interessantes do jQuery é o jQuery UI, na verdade é um conjunto de plugins de interface combinado com Temas CSS que deixa seus sistemas web bem mais interessantes. Um dos &#8220;módulos&#8221; que mais gosto deste plugin é o datepicker, que para quem não sabe é aquele &#8220;calendariozinho&#8221; que aparece abaixo de um campo de formulário para selecionarmos uma data. Para utilizar o plugin você baixá-lo e para isso deve selecionar quais módulos do UI deseja utilizar. [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos plugins mais interessantes do jQuery é o <a href="http://jqueryui.com/">jQuery UI</a>, na verdade é um conjunto de plugins de interface combinado com Temas CSS que deixa seus sistemas web bem mais interessantes.</p>
<p>Um dos &#8220;módulos&#8221; que mais gosto deste plugin é o datepicker, que para quem não sabe é aquele &#8220;calendariozinho&#8221; que aparece abaixo de um campo de formulário para selecionarmos uma data.</p>
<p>Para utilizar o plugin você  <a href="http://jqueryui.com/download">baixá-lo</a> e para isso deve selecionar quais módulos do UI deseja utilizar.</p>
<div style="text-align:center">
<a href="http://www.botecodigital.info/wp-content/uploads/2012/05/datapicker.png" class="cboxModal" rel="lightbox[2152]" title="deapicker"><img src="http://www.botecodigital.info/wp-content/uploads/2012/05/datapicker.png" alt="" title="deapicker" width="400" height="424" class="aligncenter size-full wp-image-2153" /></a>
</div>
<p>Após escolher os módulos e baixar, descompacte e inclua os arquivos Javascript e CSS em seu documento HTML</p>
<pre class="brush: xml; title: ; notranslate">
&lt;link type=&quot;text/css&quot; href=&quot;css/custom-theme/jquery-ui-1.8.20.custom.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.7.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-ui-1.8.20.custom.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Agora o jQuery o método <strong>datepicker</strong> que adiciona o &#8220;calendariozinho&#8221; ao campo selecionado  quando este for focado. Mas como este plugin é em inglês devemos configurar os nomes dos meses, dias e formato de data como esta baixo.</p>
<pre class="brush: jscript; title: ; notranslate">
 $(&quot;.data&quot;).datepicker({
	dateFormat: 'dd/mm/yy',
	dayNames: ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado','Domingo'],
	dayNamesMin: ['D','S','T','Q','Q','S','S','D'],
	dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb','Dom'],
	monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
	monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'],
	nextText: 'Próximo',
	prevText: 'Anterior'
});
</pre>
<p>Veja o <a href="http://www.botecodigital.info/exemplos/datapicker/">exemplo aqui</a></p>
<p>PS.: Caso você não saiba o campo de formulário com datepicker(input type=&#8221;date&#8221;) foi inserido no HTML5 mas <strong>eu</strong> ainda acho que vai demorar um pouco para podermos utilizarmos ele livremente pois a maioria dos navegadores não o implementa ainda, enquanto isso o jQuery UI é um ótima alternativa.</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/web/construindo-uma-galeria-de-fotos-com-o-plugin-prettyphoto-do-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery" title="Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery" border="0" /></a><a href="http://www.botecodigital.info/web/construindo-uma-galeria-de-fotos-com-o-plugin-prettyphoto-do-jquery/" rel="bookmark" class="crp_title">Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery</a></li><li><a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Validando formulários com JQuery-Plugin-Validation" title="Validando formulários com JQuery-Plugin-Validation" border="0" /></a><a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark" class="crp_title">Validando formulários com JQuery-Plugin-Validation</a></li><li><a href="http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Upload de arquivos via AJAX com &lt;progress&gt;" title="Upload de arquivos via AJAX com &lt;progress&gt;" border="0" /></a><a href="http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/" rel="bookmark" class="crp_title">Upload de arquivos via AJAX com &lt;progress&gt;</a></li><li><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Trocando dados utilizando JSON" title="Trocando dados utilizando JSON" border="0" /></a><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark" class="crp_title">Trocando dados utilizando JSON</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/web/jquery-ui-datepicker-em-portugues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentação sobre blog na 7a Feira de Oportunidades do Senac/RS Uruguaiana</title>
		<link>http://www.botecodigital.info/web/apresentacao-sobre-blog-na-7a-feira-de-oportunidades-do-senacrs-uruguaiana/</link>
		<comments>http://www.botecodigital.info/web/apresentacao-sobre-blog-na-7a-feira-de-oportunidades-do-senacrs-uruguaiana/#comments</comments>
		<pubDate>Fri, 04 May 2012 20:11:15 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[apresentacao]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2141</guid>
		<description><![CDATA[Esta apresentação foi feita na 7a Feira de Oportunidades do Senac/RS Uruguaiana, foi uma apresentação bem rápida mas foi legal, segue os slides e um vídeo de exemplo do wordpress. Posts Relacionados:Curta: Usuários LinuxMão RobóticaMatrix no WindowsDança de Richard Stallman com o mascote do GNU na 10 ª edição do FISL em Porto Alegre &#8211; Brasil.]]></description>
			<content:encoded><![CDATA[<p>Esta apresentação foi feita na  7a Feira de Oportunidades do Senac/RS Uruguaiana, foi uma apresentação bem rápida mas foi legal, segue os slides e um vídeo de exemplo do wordpress.</p>
<div style="text-align:center">
<p><object id="__sse12802916" width="595" height="497"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=apresentacaoblogs-120504133806-phpapp02&#038;stripped_title=apresentacao-blogs-12802916&#038;userName=rodrigoaramburu" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse12802916" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=apresentacaoblogs-120504133806-phpapp02&#038;stripped_title=apresentacao-blogs-12802916&#038;userName=rodrigoaramburu" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="595" height="497"></embed></object> </p></div>
<div style="text-align:center">
<iframe width="560" height="315" src="http://www.youtube.com/embed/P88ssOWqUNo" frameborder="0" allowfullscreen></iframe>
</div>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/linux/curta-usuarios-linux/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/10/video.png" class="crp_thumb wp-post-image" alt="Curta: Usuários Linux" title="Curta: Usuários Linux" border="0" /></a><a href="http://www.botecodigital.info/linux/curta-usuarios-linux/" rel="bookmark" class="crp_title">Curta: Usuários Linux</a></li><li><a href="http://www.botecodigital.info/video/mao-robotica/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/11/video2.png" class="crp_thumb wp-post-image" alt="Mão Robótica" title="Mão Robótica" border="0" /></a><a href="http://www.botecodigital.info/video/mao-robotica/" rel="bookmark" class="crp_title">Mão Robótica</a></li><li><a href="http://www.botecodigital.info/video/matrix-no-windows/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/10/video.png" class="crp_thumb wp-post-image" alt="Matrix no Windows" title="Matrix no Windows" border="0" /></a><a href="http://www.botecodigital.info/video/matrix-no-windows/" rel="bookmark" class="crp_title">Matrix no Windows</a></li><li><a href="http://www.botecodigital.info/video/danca-de-richard-stallman-fisl10-em-porto-alegre-brasil/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/11/video2.png" class="crp_thumb wp-post-image" alt="Dança de Richard Stallman com o mascote do GNU na 10 ª edição do FISL em Porto Alegre &#8211; Brasil." title="Dança de Richard Stallman com o mascote do GNU na 10 ª edição do FISL em Porto Alegre &#8211; Brasil." border="0" /></a><a href="http://www.botecodigital.info/video/danca-de-richard-stallman-fisl10-em-porto-alegre-brasil/" rel="bookmark" class="crp_title">Dança de Richard Stallman com o mascote do GNU na 10 ª edição do FISL em Porto Alegre &#8211; Brasil.</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/web/apresentacao-sobre-blog-na-7a-feira-de-oportunidades-do-senacrs-uruguaiana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando uma janela modal simples com jQuery</title>
		<link>http://www.botecodigital.info/jquery/criando-uma-janela-modal-simples-com-jquery/</link>
		<comments>http://www.botecodigital.info/jquery/criando-uma-janela-modal-simples-com-jquery/#comments</comments>
		<pubDate>Sun, 29 Apr 2012 20:59:30 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[janela]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[modal]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2129</guid>
		<description><![CDATA[Você já deve ter visto em vários sites uma janela modal. Para quem não a conhece pelo nome é aquela janela que quando clicamos para abri-la ela escurece o resto do site e coloca uma pequena janela em evidência e se você clicar fora da janela ela desaparece. Vamos criar um exemplo simples onde definiremos os links que irão abrir na forma modal utilizando o atributo rel com o valor &#8220;modal&#8221; e a janela que irá abrir será definida pelo [...]]]></description>
			<content:encoded><![CDATA[<p>Você já deve ter visto em vários sites uma janela modal. Para quem não a conhece pelo nome é aquela janela que quando clicamos para abri-la ela escurece o resto do site e coloca uma pequena janela em evidência e se você clicar fora da janela ela desaparece. </p>
<p>Vamos criar um exemplo simples onde definiremos os links que irão abrir na forma modal utilizando o atributo <em>rel</em> com o valor <em>&#8220;modal&#8221;</em> e a  janela que irá abrir será definida pelo atributo <em>href</em> onde colocaremos o id do elemento(<em>div</em>) que queremos que seja visualizado em forma modal.</p>
<h4>Marcação HTML</h4>
<pre class="brush: xml; title: ; notranslate">
	&lt;a href=&quot;#janela1&quot; rel=&quot;modal&quot;&gt;Janela modal&lt;/a&gt;

	&lt;div class=&quot;window&quot; id=&quot;janela1&quot;&gt;
		&lt;a href=&quot;#&quot; class=&quot;fechar&quot;&gt;X Fechar&lt;/a&gt;
		&lt;h4&gt;Primeira janela moda&lt;/h4&gt;
		&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam venenatis auctor tempus. Lorem ipsum dolor sit amet,&lt;/p&gt;
		&lt;p&gt;Morbi dui lacus, placerat eget pretium vehicula, mollis id ligula. Nulla facilisi. &lt;/p&gt;
	&lt;/div&gt;

	&lt;!-- mascara para cobrir o site --&gt;
	&lt;div id=&quot;mascara&quot;&gt;&lt;/div&gt;
</pre>
<p>Na linha 1 definimos um link para abrir a janela modal como vimos na introdução.</p>
<p>Na linha 3 criamos uma <em>div</em> que será nossa janela modal, note que definimos uma <em>class</em> e um <em>id</em>, o class vai facilitar caso tivermos várias janelas modal diferentes no site e o <em>id</em> será para abrir somente a correta. Dentro dela colocamos todo o conteúdo normalmente, só não esqueça de colocar dentro dela um link para fechá-la.</p>
<p>Na linha 12 criamos um <em>div</em> para ser o fundo escuro que irá cobrir toda a área da site ficando acima dela somente a nossa janela.</p>
<h4>O CSS</h4>
<pre class="brush: css; title: ; notranslate">
.window{
	display:none;
	width:300px;
	height:300px;
	position:absolute;
	left:0;
	top:0;
	background:#FFF;
	z-index:9900;
	padding:10px;
	border-radius:10px;
}

#mascara{
	display:none;
	position:absolute;
	left:0;
	top:0;
	z-index:9000;
	background-color:#000;
}

.fechar{display:block; text-align:right;}
</pre>
<p>Definimos a propriedade <strong>diplay</strong> em <em>none</em>  para os elementos <strong>#mascara</strong> e <strong>.window</strong> para que não apareçam quando a página for carregada, já que só serão mostradas quando se clicar no link.</p>
<p>A janela modal será centralizado em relação os navegador e isso será feito por javascript então precisamos apenas definir a propriedade <strong> position</strong> em <em>absolute</em> e podemos definir as propriedades <strong>left</strong> e <strong>right</strong> como &#8220;0&#8243; já que os valores corretos serão atribuídos por javascript no momento que o link for clicado.</p>
<p>Outra propriedade importante de frisar é o <strong>z-index</strong>, já que a janela modal deve ficar na frente da mascara devemos definir o <strong>z-index</strong> do <strong>.window</strong> maior que o da <em>div</em> <strong>#mascara</strong>, lembrando que que a <strong>div</strong> <strong>#mascara</strong> deve ter um <strong>z-index</strong> positivo e um pouco alto pois ela deve sobrepor todos os outros elementos da página.</p>
<h4>O Javascript</h4>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function(){
	$(&quot;a[rel=modal]&quot;).click( function(ev){
		ev.preventDefault();

		var id = $(this).attr(&quot;href&quot;);

		var alturaTela = $(document).height();
		var larguraTela = $(window).width();

		//colocando o fundo preto
		$('#mascara').css({'width':alturaTela,'height':larguraTela});
		$('#mascara').fadeIn(1000);
		$('#mascara').fadeTo(&quot;slow&quot;,0.8);

		var left = ($(window).width() /2) - ( $(id).width() / 2 );
		var top = ($(window).height() / 2) - ( $(id).height() / 2 );

		$(id).css({'top':top,'left':left});
		$(id).show();
 	});

 	$(&quot;#mascara&quot;).click( function(){
 		$(this).hide();
 		$(&quot;.window&quot;).hide();
 	});

 	$('.fechar').click(function(ev){
 		ev.preventDefault();
 		$(&quot;#mascara&quot;).hide();
 		$(&quot;.window&quot;).hide();
 	});
});
</pre>
<p>Como vemos na linha 2 selecionamos todos os link que possuem o atributo <em>&#8220;rel&#8221;</em> igual a <em>&#8220;modal&#8221;</em> e adicionamos o evento de click a ele. Na linha 3 cancelamos o evento padrão do link(para ele não ir a lugar nenhum) na linha 5 capturamos o valor do atributo <em>href</em>, que no nosso exemplo definimos que seria o id do elemento que irá ser mostrado como janela modal.</p>
<p>Nas linhas 7 e 8 pegamos a largura da janela do navegador e altura documento HTML para definir como tamanho da nossa mascara, se pegarmos a altura da janela do navegador obteremos somente altura da área atualmente visualizada e a mascara preta não irá cobrir tudo se o usuário fizer uma rolagem de página.</p>
<p>Na linha 11 configuramos o tamanho da nossa área de mascara preta com os valores pegos nas linha 7 e 8.</p>
<p>Na linha 12 mostramos a mascara com um efeito de <em>&#8220;fade&#8221;</em> e na linha 13 criamos uma transparência.</p>
<p>Na linha 15 calculamos a posição em que a janela modal deve aparecer, para isso pegamos a largura da janela do navegador e dividimos por 2, mas se colocar a janela modal neste ponto ela aparecerá com o canto superior esquerdo centralizado neste ponto, então temos que colocar o meio da janela modal alinhado com o centro da janela do navegador, então dividimos a largura da janela modal por 2 e subtraímos este valor do valor do valor da metade da janela do navegador, isso fará ficar corretamente alinhado. Na linha 16 fazemos isso também para a altura.</p>
<p>Na linha 18 configuramos as propriedades <em>top</em> e <em>left</em> com os valores calculados na linha 15 e 16. Na linha 19 mostramos a janela modal.</p>
<p>Na linha 22 definimos um evento de click para a mascara para  quando for clicado fora da janela modal, tanto a janela modal e a máscara preta desapareçam.</p>
<p><a href="http://www.botecodigital.info/exemplos/modal/">Veja o exemplo funcionando</a></p>
<p>Acredito que seja isso, é bem simples e permite ter uma personalização bem grande de forma fácil, diferente de utilizar alguma biblioteca como o <a href="http://jqueryui.com/demos/dialog/">jQuery UI</a>, que é muito bonita e fácil de utilizar, mas se precisar mudá-la pode ser um desafio.</p>
<p>Esse artigo foi &#8220;baseado&#8221; no do imortal <a href="http://www.maujor.com/blog/2009/04/16/janela-modal-com-jquery/">Maujor</a></p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/jquery/menu-sanfona-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Menu Sanfona com JQuery" title="Menu Sanfona com JQuery" border="0" /></a><a href="http://www.botecodigital.info/jquery/menu-sanfona-com-jquery/" rel="bookmark" class="crp_title">Menu Sanfona com JQuery</a></li><li><a href="http://www.botecodigital.info/web/animando-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Animando com JQuery" title="Animando com JQuery" border="0" /></a><a href="http://www.botecodigital.info/web/animando-com-jquery/" rel="bookmark" class="crp_title">Animando com JQuery</a></li><li><a href="http://www.botecodigital.info/css/css-sprite/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/01/css.png" class="crp_thumb wp-post-image" alt="CSS Sprite" title="CSS Sprite" border="0" /></a><a href="http://www.botecodigital.info/css/css-sprite/" rel="bookmark" class="crp_title">CSS Sprite</a></li><li><a href="http://www.botecodigital.info/javascript/introducao-a-api-de-mapas-do-google-maps/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2012/04/imgGoogleMapIcon-150x150.jpg" class="crp_thumb wp-post-image" alt="Introdução a API de mapas do Google Maps" title="Introdução a API de mapas do Google Maps" border="0" /></a><a href="http://www.botecodigital.info/javascript/introducao-a-api-de-mapas-do-google-maps/" rel="bookmark" class="crp_title">Introdução a API de mapas do Google Maps</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/jquery/criando-uma-janela-modal-simples-com-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentando o Google Analytics</title>
		<link>http://www.botecodigital.info/web/apresentando-o-google-analytics/</link>
		<comments>http://www.botecodigital.info/web/apresentando-o-google-analytics/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 16:33:19 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[acesso]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[metricas]]></category>
		<category><![CDATA[visitas]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2102</guid>
		<description><![CDATA[Se você possui um site já deve ter tido a necessidade(ou apenas curiosidade) de saber como anda a visitação do seu site, que páginas do seu site são as mais visitadas ou meus visitantes entram no meu site diretamente ou chegaram atráves de um mecanismo de busca(Google!!!). Esse tipo de informação realmente é de grande valia para planejar o futuro e realizar correções para atingir o objetivo do site. Para realizar a contagem mais simples de visualizações sempre existiram scripts [...]]]></description>
			<content:encoded><![CDATA[<p>Se você possui um site já deve ter tido a necessidade(ou apenas curiosidade) de saber como anda a visitação do seu site, que páginas do seu site são as mais visitadas ou meus visitantes entram no meu site diretamente ou chegaram atráves de um mecanismo de busca(Google!!!). Esse tipo de informação realmente é de grande valia para planejar o futuro e realizar correções para atingir o objetivo do site.</p>
<p>Para realizar a contagem mais simples de visualizações sempre existiram scripts prontos,  e também é muito fácil criar um código próprio.  Mas  o google revolucionou ao criar o <a href="https://www.google.com/analytics/">Google Analytics</a>, uma ferramenta grátis que fornece um quantidade informação inacreditavél sobre os visitantes de seu site e é muito fácil de utilizar.</p>
<p>O Analytics é atrelado a sua conta do Google então você precisa fazer o login na página do <a href="https://www.google.com/analytics/">Google</a> para se cadastrar, se você ainda não é usuário do serviço ele vai pedir para você se cadastrar clique em &#8220;Sign up&#8221;.</p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print1-e1334607728212.png" class="cboxModal" rel="lightbox[2102]" title="print1"><img class="size-medium wp-image-2103 aligncenter" title="print1" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print1-300x139.png" alt="" width="300" height="139" /></a></div>
<p>Logo após será pedido os dados da conta, um <strong>nome para conta</strong>, a <strong>URL</strong>, a <strong>Time Zone</strong> e vai pedir para aceitar os termos de serviço.</p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print2-e1334607762670.png" class="cboxModal" rel="lightbox[2102]" title="print2"><img class="aligncenter size-medium wp-image-2104" title="print2" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print2-300x216.png" alt="" width="300" height="216" /></a></div>
<p>No próximo passo será informado o <strong>Tracking ID</strong>, mas o mais importante será copiar o código de rastreamento que deve ser inserido nas páginas do seu site que serão rastreadas, este código em javascript é o responsável por capturar os dados do seu visitante e gravá-lo no serviço do Analytics para você visualizar. De preferência ele deve ser inserido no final da página antes de fechar a tag body para que só registre o acesso se o usuário carregar a página completa.</p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print3-e1334607809801.png" class="cboxModal" rel="lightbox[2102]" title="print3"><img class="aligncenter size-medium wp-image-2105" title="print3" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print3-276x300.png" alt="" width="276" height="300" /></a></div>
<p>Veja o código de rastreamento e note que o seu <strong>Tracking ID</strong> estará inserido no código na linha 3 do script de rastreamento.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
// ]]&gt;&lt;/script&gt;
</pre>
<p>Após inserir este código na sua página, salve e a partir de agora o Analytics ira registrar os acessos do seu site, só vale a pena lembrar que os dados não são em tempo real(pelo menos pelo que sei?) então só devem estar disponíveis apenas os dados dos dias anteriores.</p>
<p>Depois disso clique em home e será apresentado o relatório padrão</p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print4-e1334607851745.png" class="cboxModal" rel="lightbox[2102]" title="print4"><img class="aligncenter size-medium wp-image-2106" title="print4" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print4-300x291.png" alt="" width="300" height="291" /></a></div>
<p>Se você notar ele deve fornecer as seguintes informações:</p>
<p><strong>Visitas:</strong> Este é o total de visitas que seu site teve no intervalo de tempo selecionado no canto superior direito, lembrando se um usuário acessar páginas em ocasiões diferentes cada ocasião contará como uma visita.</p>
<p><strong>Visitantes únicos:</strong> Este é o total de &#8220;pessoas&#8221; diferentes que acessaram o site. O Analytics conta isso através de cookies.</p>
<p><strong>Visualizações de página:</strong> É o total de páginas visualizadas, também conhecido como views, toda vez que um usuário acessar uma página contará como uma visualização.</p>
<p><strong>Páginas/visita:</strong> Contará qual a média de páginas que seu usuário acessou em cada visita.</p>
<p><strong>Duração média da visita:</strong> Tempo que o usuário ficou no site durante a visita</p>
<p><strong>Taxa de rejeição:</strong> É quantidade de usuário que visualiza apenas uma página, não acessa outras páginas do site e vai embora, dependendo do seu tipo de site esse valor pode ser alto, principalmente se a grande maioria dos seu usuário vier de mecanismo de busca, lembre-se muita vezes um única página resolve o problema dele, mas se a estratégia do seu site necessita que o usuário navegue pelo site é interessante prestar atenção neste indicador.</p>
<p><strong>Porcentagem de novas visitas:</strong> Indica se usuário novos estão chegando.</p>
<p>Algo que ajuda muito também é o relatório de visitas por página. Ele pode ser acessado no meu a esquerda em <strong>Conteúdo -&gt; Conteúdo do site -&gt; Páginas</strong></p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print5-e1334624233661.png" class="cboxModal" rel="lightbox[2102]" title="print5"><img class="aligncenter size-medium wp-image-2115" title="print5" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print5-285x300.png" alt="" width="285" height="300" /></a></div>
<p>Outro relatório que gosto muito é Navegador/Sistema Operacional/Resolução de tela, ele dá uma maior idéia de quais dispositivos seus usuários estão acessando o site, se por exemplo você precisa se preocupar em fazer uma versão mobile ou em quais navegadores testar mais, etc. Ele pode ser acessado em <strong> Público-alvo -&gt; Tecnologia -&gt; Navegador e sistema operacional</strong></p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print6-e1334624972684.png" class="cboxModal" rel="lightbox[2102]" title="print6"><img class="aligncenter size-medium wp-image-2116" title="print6" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print6-281x300.png" alt="" width="281" height="300" /></a></div>
<p>E como seu site não é uma ilha, sempre é bom saber de onde nossos visitantes estão vindo(inclusive para agradecer quem nos trás muitos visitantes) esses dados podem ser acessados em <strong>Fontes de tráfego -&gt; Origens -&gt; Todo o tráfego</strong></p>
<div style="text-align: center;"><a href="http://www.botecodigital.info/wp-content/uploads/2012/04/print7-e1334625419141.png" class="cboxModal" rel="lightbox[2102]" title="print7"><img class="aligncenter size-medium wp-image-2117" title="print7" src="http://www.botecodigital.info/wp-content/uploads/2012/04/print7-274x300.png" alt="" width="274" height="300" /></a></div>
<p>Como toda ferramenta do Google ela nos dá muitas opções que podemos explorar, mas esse post ficaria muito grande(que desculpinha hein?).</p>
<p>Só lembrando o Analytics <strong>apenas recolhe e apresenta dados cabe a você interpretá-los e tirar as conclusões</strong> e saber o que fazer a partir delas.</p>
<p>Espero que tenham gostado T++.c</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/web/html5-novos-elementos-de-estrutura/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2012/01/logo-html5.gif" class="crp_thumb wp-post-image" alt="HTML5 novos elementos de estrutura" title="HTML5 novos elementos de estrutura" border="0" /></a><a href="http://www.botecodigital.info/web/html5-novos-elementos-de-estrutura/" rel="bookmark" class="crp_title">HTML5 novos elementos de estrutura</a></li><li><a href="http://www.botecodigital.info/dicas/habilitando-o-usuario-raiz-no-mac-os-x-v-10-6-x/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2011/05/apple-logo1-150x150.jpg" class="crp_thumb wp-post-image" alt="Habilitando o Usuário Raiz no Mac OS X V. 10.6.x" title="Habilitando o Usuário Raiz no Mac OS X V. 10.6.x" border="0" /></a><a href="http://www.botecodigital.info/dicas/habilitando-o-usuario-raiz-no-mac-os-x-v-10-6-x/" rel="bookmark" class="crp_title">Habilitando o Usuário Raiz no Mac OS X V. 10.6.x</a></li><li><a href="http://www.botecodigital.info/linux/redimensionando-imagens-em-lotebatch-process-com-gimp/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2011/07/gimp-150x150.png" class="crp_thumb wp-post-image" alt="Redimensionando imagens em lote(Batch Process) com Gimp" title="Redimensionando imagens em lote(Batch Process) com Gimp" border="0" /></a><a href="http://www.botecodigital.info/linux/redimensionando-imagens-em-lotebatch-process-com-gimp/" rel="bookmark" class="crp_title">Redimensionando imagens em lote(Batch Process) com Gimp</a></li><li><a href="http://www.botecodigital.info/navegadores/extensoes-essenciais-para-firefox/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/09/navegadores.png" class="crp_thumb wp-post-image" alt="Extensões do Firefox essenciais para um desenvolvedores web" title="Extensões do Firefox essenciais para um desenvolvedores web" border="0" /></a><a href="http://www.botecodigital.info/navegadores/extensoes-essenciais-para-firefox/" rel="bookmark" class="crp_title">Extensões do Firefox essenciais para um desenvolvedores web</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/web/apresentando-o-google-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução a API de mapas do Google Maps</title>
		<link>http://www.botecodigital.info/javascript/introducao-a-api-de-mapas-do-google-maps/</link>
		<comments>http://www.botecodigital.info/javascript/introducao-a-api-de-mapas-do-google-maps/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 00:19:26 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[mapas]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2064</guid>
		<description><![CDATA[Como sabemos o Google Maps é um excelente serviço, embora ele nos permite inserir um mapa através de um iframe, o real potencial está na sua API de javascript que permite marcar pontos no mapa, pegar coordenadas, traçar rotas, transformar endereços em coordenadas de latitude e longitude. Vamos então começar inserindo um mapa em nossa página utilizando a API e para isso precisamos inserir a biblioteca do Google Maps: Agora vamos criar uma função que será chamada no onload da [...]]]></description>
			<content:encoded><![CDATA[<p>Como sabemos o <a href="http://maps.google.com.br/">Google Maps</a> é um excelente serviço, embora ele nos permite inserir um mapa através de um iframe, o real potencial está na sua <a href="https://developers.google.com/maps/?hl=pt-br">API de javascript</a> que permite marcar pontos no mapa, pegar coordenadas, traçar rotas,  transformar endereços em coordenadas de latitude e longitude.</p>
<p>Vamos então começar inserindo um mapa em nossa página utilizando a API e para isso precisamos inserir a biblioteca do Google Maps:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot;&gt;&lt;/script&gt;
</pre>
<p>Agora vamos criar uma função que será chamada no <strong>onload</strong> da tag <em>body</em> para o mapa somente ser criado  após o documento ser totalmente carregado, isso garante que o elemento <em>div</em> no qual iremos inserir o mapa, já esteja  carregado quando o código javascript for carregado:</p>
<pre class="brush: jscript; title: ; notranslate">
var map = null;
function carregar(){
	var latlng = new google.maps.LatLng(-29.767954,-57.071657);

	var myOptions = {
      		zoom: 12,
      		center: latlng,
      		mapTypeId: google.maps.MapTypeId.ROADMAP
     	 };

	//criando o mapa
   map = new google.maps.Map( document.getElementById(&quot;mapa&quot;) , myOptions );
}
</pre>
<p><a href="http://www.botecodigital.info/exemplos/google_maps/mapa1.htm">Ver mapa</a></p>
<p>O código até é bem simples, na linha 3 criamos um objeto que representa uma coordenada em latitude e longitude, esses objetos são utilizados em vários métodos da API. </p>
<p>Na linha 5 definimos as opções iniciais do mapa, na linha 6 definimos o nível de zoom inicial, na linha 7 configuramos  onde o mapa será centralizado(utilizamos o objeto criado na linha 3) . Na linha 8 definimos tipo de mapa, podemos utilizar  os seguintes: <strong>ROADMAP</strong>, <strong>SATELLITE</strong>, <strong>HYBRID</strong>.</p>
<p>Na linha 12 é onde criamos realmente o mapa. No construtor do objeto o primeiro parâmetro recebe o elemento irá conter o mapa, no segundo os parâmetros de inicialização do mapa que definimos anteriormente. Note que ele armazenamos a referência ao mapa na variável <strong>map</strong> e é através dela que podemos modificar o mapa inserindo marcadores, etc.</p>
<p>Podemos mudar várias propriedades do mapa através de funções.</p>
<pre class="brush: jscript; title: ; notranslate">
//centralizando o mapa
map.setCenter( new google.maps.LatLng(-29.767954,-53.071657) );
</pre>
<pre class="brush: jscript; title: ; notranslate">
//mudando o zoom do mapa
map.setZoom(5);
</pre>
<pre class="brush: jscript; title: ; notranslate">
//mudando o tipo do mapa
map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
</pre>
<h4>Marcadores</h4>
<p>Também podemos inserir um marcador em um determinado ponto do mapa através de marcadores.</p>
<pre class="brush: jscript; title: ; notranslate">
var praca = new google.maps.LatLng(-29.756200185902156, -57.08757859271242);
marcadorPraca = new google.maps.Marker({
	position: praca,
   map: map,
   title:&quot;Praça da Cidade&quot;
});
</pre>
<p>Criamos um marcador simples, basicamente definimos um ponto na linha 1, na linha 2 criamos o objeto de marcador passando as seguintes opções: </p>
<p><strong>position:</strong> o ponto do mapa que o marcador vai ser inserido<br />
<strong>map:</strong> mapa no qual vai ser inserido o marcador<br />
<strong>title:</strong> um título para o marcador.</p>
<p>Podemos também inserir um ícone personalizado para o marcador através da opção icon</p>
<pre class="brush: jscript; title: ; notranslate">
 icon: '/caminho/para/a/imagem'
</pre>
<p>Veja o <a href="http://www.botecodigital.info/exemplos/google_maps/mapa2.htm">exemplo</a></p>
<h4>Eventos de click</h4>
<p>Podemos definir certas ações para quando o usuário clicar em um mapa, ou em um marcador, para isso podemos dever criar um <em>listener</em>.</p>
<pre class="brush: jscript; title: ; notranslate">
google.maps.event.addListener(map, 'click', function(event) {
	alert(event.latLng)
});
</pre>
<p>Veja o <a href="http://www.botecodigital.info/exemplos/google_maps/mapa3.html">exemplo</a></p>
<p>No código acima estamos definindo que &#8220;escutaremos&#8221; eventos no objeto <strong>map</strong> ou seja no nosso mapa, e que o evento que escutaremos serão os eventos de &#8220;click&#8221;(podemos também escutar os eventos de &#8216;dblclick&#8217;, &#8216;mouseup&#8217;, &#8216;mousedown&#8217;, &#8216;mouseover&#8217;, &#8216;mouseout&#8217;) e ao ser executado pelo usuário um desses eventos será executado a <strong>function </strong> definida que receberá um objeto de evento como parâmetro que irá conter basicamente apenas um atributo, as coordenadas de latitude e logitude de onde foi executado o evento, com isso podemos colocar um marcador no local ou centralizar o mapa  por exemplo.</p>
<p>Outra coisa interessante para fazer com evento é fazer abrir um balão com informações ao se clicar em um determinado marcador:</p>
<pre class="brush: jscript; title: ; notranslate">
var praca = new google.maps.LatLng(-29.756200185902156, -57.08757859271242);
marcadorPraca = new google.maps.Marker({
      	position: praca,
      	map: map,
      	title:&quot;Praça da Cidade&quot;,
});
var infowindow = new google.maps.InfoWindow({
      	content: &quot;aqui voce pode adicionar conteudo &lt;strong&gt;HTML&lt;/strong&gt;&quot;
});

google.maps.event.addListener(marcadorPraca, 'click', function(event) {
	infowindow.open(map,marcadorPraca);
});
</pre>
<p>Veja o <a href="http://www.botecodigital.info/exemplos/google_maps/mapa4.htm">exemplo</a></p>
<p>Primeiro criamos um objeto de janela de informação com o texto do balão.</p>
<p>Depois em vez de &#8220;escutarmos&#8221; um evento de &#8216;click&#8217; no mapa inteiro, vamos &#8220;escutar&#8221; apenas no marcador que criamos e na função que irá executar quando &#8216;click&#8217; ocorrer irá abrir a janela de informação através do método <strong>open</strong> que receberá como parâmetro o mapa e ao qual marcador a janela pertence.</p>
<h4>Transformar endereço em coordenadas</h4>
<p>Como vimos acima, sempre que iremos inserir alguma coisa no mapa deveremos fornecer as coordenadas de latitude e longitude, mas vamos ser sinceros não é algo muito natural, para isso a API do Maps nos fornece um <strong>serviço de  Geocoding</strong> para converter um endereço textual como estamos acostumado em coordenadas.</p>
<pre class="brush: jscript; title: ; notranslate">
var endereco = 'Porto Alegre - RS';
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address':endereco}, function(results, status){
	if( status = google.maps.GeocoderStatus.OK){
		latlng = results[0].geometry.location;
		markerInicio = new google.maps.Marker({position: latlng,map: map});
		map.setCenter(latlng);
	}
});
</pre>
<p>Veja o <a href="http://www.botecodigital.info/exemplos/google_maps/mapa5.htm">exemplo</a></p>
<p>Na linha 1 pegamos o endereço que pode vir de um formulário por exemplo.</p>
<p>Na linha 2 é criado um objeto <strong>Geocoder</strong> que é responsável por fazer a requisição assíncrona de endereço ao webservice do Maps.</p>
<p>Na linha 3 é feita requisição através do método <strong>geocode</strong> passando um objeto JSON como requisição, onde definimos que queremos a localização através do endereço &#8216;address&#8217;, também poderíamos enviar uma coordenada para pegar o endereço passando como requisição &#8216;latLng&#8217;. </p>
<p>Após a requisição ser feita será chamada a function que foi passada como segundo parãmentro do método <strong>geocode</strong>, esta function que recebe como parâmetro um array de resultados gerados pelo service do maps e um código de status da requisição.</p>
<p>Na linha 4 testamos se não houve erros na  requisição, e na linha 5 pegamos o primeiro resultado do array e pegamos os dados de geometry.location que contem as coordenadas de latitude e longitude.</p>
<p>Depois apenas colocado um marcador no local do endereço e centralizamos neste local.</p>
<p>Bom isso é o básico, a API do Google Maps permite fazer bem mais coisas e possui muitas outras opções, essas foram apenas as mais básica, então <a href="https://developers.google.com/maps/documentation/javascript/">consulte a documentação</a> que é bem completa e com muitos exemplos. </p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/jquery/criando-uma-janela-modal-simples-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2012/04/another-javascript-icon.png" class="crp_thumb wp-post-image" alt="Criando uma janela modal simples com jQuery" title="Criando uma janela modal simples com jQuery" border="0" /></a><a href="http://www.botecodigital.info/jquery/criando-uma-janela-modal-simples-com-jquery/" rel="bookmark" class="crp_title">Criando uma janela modal simples com jQuery</a></li><li><a href="http://www.botecodigital.info/jquery/iniciando-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Iniciando com JQuery" title="Iniciando com JQuery" border="0" /></a><a href="http://www.botecodigital.info/jquery/iniciando-com-jquery/" rel="bookmark" class="crp_title">Iniciando com JQuery</a></li><li><a href="http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Upload de arquivos via AJAX com &lt;progress&gt;" title="Upload de arquivos via AJAX com &lt;progress&gt;" border="0" /></a><a href="http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/" rel="bookmark" class="crp_title">Upload de arquivos via AJAX com &lt;progress&gt;</a></li><li><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Trocando dados utilizando JSON" title="Trocando dados utilizando JSON" border="0" /></a><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark" class="crp_title">Trocando dados utilizando JSON</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/javascript/introducao-a-api-de-mapas-do-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upload de arquivos via AJAX com &lt;progress&gt;</title>
		<link>http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/</link>
		<comments>http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 15:12:06 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2036</guid>
		<description><![CDATA[Olá pessoal, como os posts sobre AJAX estão ficando bem populares no boteco resolvi fazer mais. Vocês devem lembrar do post que falei sobre AJAX com jQuery mas daquela forma não é possível enviar arquivos, pois para isso o navegador precisa ter suporte a e XMLHttpRequest Level 2 e se não tiver uma técnica bastante utilizada é com iframes(que possue certas limitações), como isso é muito complicado é sempre melhor utilizar um plugin e o mais simples e eficiente que [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, como os posts sobre AJAX estão ficando bem populares no boteco resolvi fazer mais. Vocês devem lembrar do post que falei sobre <a href="http://www.botecodigital.info/web/introducao-ao-ajax-com-jqurey/">AJAX com jQuery</a> mas daquela forma não é possível enviar arquivos, pois para isso o navegador precisa ter suporte a e XMLHttpRequest Level 2 e se não tiver uma técnica bastante utilizada é com iframes(que possue certas limitações), como isso é muito complicado é sempre melhor utilizar um plugin e o mais simples e eficiente que achei  foi <a href="http://malsup.com/jquery/form/">jQuery Form Plugin</a> do <a href="http://malsup.com/jquery/">malsup</a>.</p>
<p>Primeiramente como sempre devemos inserir a biblioteca do jQuery e do plugin que iremos utilizar.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://malsup.github.com/jquery.form.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Depois iremos criar um formulário normal, só acrescentaremos a tag <em>progress</em> criada no <strong>HTML5</strong>, ela é bastante simples e possui basicamente dois atributos o <strong>max</strong> um valor inteiro que será o 100% da barra de progresso e o atributo  <strong>value</strong> que será o valor atual do progresso.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;post.php&quot; method=&quot;post&quot; id=&quot;form&quot;&gt;

 	&lt;div id=&quot;file&quot;&gt;
		&lt;input type=&quot;file&quot; name=&quot;file&quot;&gt;
		&lt;br &gt;&lt;br &gt;
		&lt;progress value=&quot;0&quot; max=&quot;100&quot;&gt;&lt;/progress&gt;&lt;span id=&quot;porcentagem&quot;&gt;0%&lt;/span&gt;

 	&lt;/div&gt;
 	&lt;br /&gt;
 &lt;input type=&quot;submit&quot;&gt;
&lt;/form&gt;
</pre>
<p>E vamos  onde a mágica realmente acontece:</p>
<pre class="brush: xml; title: ; notranslate">
$('#form').ajaxForm({
    	uploadProgress: function(event, position, total, percentComplete) {
        	$('progress').attr('value',percentComplete);
        	$('#porcentagem').html(percentComplete+'%');
    	},
    	success: function(data) {
        	$('progress').attr('value','100');
		$('#porcentagem').html('100%');
        	$('pre').html(data);
        }	

});
</pre>
<p>Como vemos no trecho de código acima é selecionado o formulário que será enviado e chamamos o método <strong>ajaxForm</strong> adicionado pelo plugin <strong>jQuery Form Plugin</strong> passando dois parâmetros: <em>uploadProgress</em> e <em>success</em> que recebem referências de funções que serão chamadas no processo de requisição AJAX. </p>
<p><strong>uploadProgress</strong> será chamada de tempos em tempo durante a requisição recebendo como parâmetro os valores de progresso da requisição.  Analisando um pouco melhor a função de <strong>uploadProgress</strong> na linha 3 selecionamos o elemento <em>progress</em> e configuramos seu atributo <em>value</em> com o valor da porcentagem já realizada da requisição o que irá fazer o indicador mudar sua vilualização. Na linha 4 atualizamos o texto do indicador textual de porcentagem.</p>
<p><strong>success</strong> será chamada somente se a requisição terminar sem erros. Ela recebe como parâmetro o texto do retorno da requisição que no nosso caso será feita ao script <em>post.php</em>, neste script trataremos o arquivo enviado através da variável <em>$_FILES</em> como usual e podemos salvar onde desejarmos. Na linha 7 atualizamos para 100 o <em>value</em> do elemento <em>progress</em> pois é provável que  a função <em>uploadProgress</em> tenha sido chamada pela ultima com uma porcentagem menor que 100%. Na linha 9 pegamos o retorno da requisição e colocamos dentro de um elemento pré-formatado <em>pre</em>, mas poderiamos dar qualquer outro tratamento para o retorno como por exemplo criar um elemento link para arquivo ou, se for uma imagem, criar uma miniatura da imagem enviada.</p>
<p>Você pode ver o <a href="http://www.botecodigital.info/exemplos/upload_ajax/">exemplo do post</a></p>
<p>Uma aviso: os navegadores que <a href="http://caniuse.com/xhr2">não possuem suporte a &#8220;XMLHttpRequest Level 2&#8243;</a> como o Opera11 e o IE8 por exemplo irão utilizar o iframes para realizar o upload, fazendo a opção  uploadProgress não funcionar e por conseguência a barra de progresso, embora o upload funcione. Recomendo testar  se o navegar possui suporte a &#8220;XMLHttpRequest Level 2&#8243; se não tiver substituir a barra de progresso por um gif animado de carregando. </p>
<p>Fica aqui um <a href="http://www.botecodigital.info/exemplos/upload_ajax/upload_ajax2/">exemplo tosco</a> de como resolver isso.</p>
<p>Recomendo ver a <a  href="http://malsup.com/jquery/form/#options-object">documentação do plugin jQuery Form Plugin</a> que possue várias opções interessantes.</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Validando formulários com JQuery-Plugin-Validation" title="Validando formulários com JQuery-Plugin-Validation" border="0" /></a><a href="http://www.botecodigital.info/jquery/validando-formularios-com-jquery-plugin-validation/" rel="bookmark" class="crp_title">Validando formulários com JQuery-Plugin-Validation</a></li><li><a href="http://www.botecodigital.info/web/construindo-uma-galeria-de-fotos-com-o-plugin-prettyphoto-do-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery" title="Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery" border="0" /></a><a href="http://www.botecodigital.info/web/construindo-uma-galeria-de-fotos-com-o-plugin-prettyphoto-do-jquery/" rel="bookmark" class="crp_title">Construindo uma Galeria de Fotos com o plugin PrettyPhoto do JQuery</a></li><li><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Trocando dados utilizando JSON" title="Trocando dados utilizando JSON" border="0" /></a><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark" class="crp_title">Trocando dados utilizando JSON</a></li><li><a href="http://www.botecodigital.info/web/jquery-ui-datepicker-em-portugues/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2012/05/log_jquery_ui.png" class="crp_thumb wp-post-image" alt="jQuery UI datepicker em Português" title="jQuery UI datepicker em Português" border="0" /></a><a href="http://www.botecodigital.info/web/jquery-ui-datepicker-em-portugues/" rel="bookmark" class="crp_title">jQuery UI datepicker em Português</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/jquery/upload-de-arquivos-via-ajax-com-progress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pegando o último dia do mês em Java</title>
		<link>http://www.botecodigital.info/java/pegando-o-ultimo-dia-do-mes-em-java/</link>
		<comments>http://www.botecodigital.info/java/pegando-o-ultimo-dia-do-mes-em-java/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 00:58:28 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2017</guid>
		<description><![CDATA[Olá pessoal! Hoje vou dar uma dica rápida que ajuda quando precisamos realizar filtros por mês naquele estilo lançamentos do mês ou aniversariantes. Se você tiver alguma dúvida sobre converter strings para objeto java.util.Date sinta-se a vontade de consultar nosso post Manipulando Datas em Java. Parando com a enrolação vamos ao código: Para pegarmos o último dia do mês será necessário utilizar a classe GregorianCalendar, como vemos na linha 1. Na linha 2 configuramos no objeto Calendar um objeto Date [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal! Hoje vou dar uma dica rápida que ajuda quando precisamos realizar filtros por mês naquele estilo lançamentos do mês ou aniversariantes. Se você tiver alguma dúvida sobre converter strings para objeto <em>java.util.Date</em> sinta-se a  vontade de consultar nosso post <a href="http://www.botecodigital.info/java/manipulando-datas-em-java/">Manipulando Datas em Java</a>.</p>
<p>Parando com a enrolação vamos ao código:</p>
<pre class="brush: java; title: ; notranslate">
Calendar cal = GregorianCalendar.getInstance();
cal.setTime( new Date() );

int dia = cal.getActualMaximum( Calendar.DAY_OF_MONTH );
int mes = (cal.get(Calendar.MONDAY)+1);
int ano = cal.get(Calendar.YEAR);

System.out.println( dia+&quot;/&quot;+mes+&quot;/&quot;+ano );

try {
	Date data = (new SimpleDateFormat(&quot;dd/MM/yyyy&quot;)).parse( dia+&quot;/&quot;+mes+&quot;/&quot;+ano );
} catch (ParseException e) {
	e.printStackTrace();
}
</pre>
<p>Para pegarmos o último dia do mês será necessário utilizar a classe <em>GregorianCalendar</em>, como vemos na linha 1. Na linha 2 configuramos no objeto <em>Calendar</em> um objeto <em>Date</em> representado a data atual ou uma data qualquer de um determinado mês que desejamos saber qual é o último dia.</p>
<p>Na linha 4 é o que realmente queremos, o método <em>getActualMaximum(int)</em> retorna o maior valor possível para o campo passado por parâmetro levando em conta a data atualmente definida na classe <em>Calendar</em>, então se passarmos por parâmetro a constante <em>Calendar.DAY_OF_MONTH</em> será retornado o maior dia do mês levando em consideração quantos dias o mês tem, inclusive os anos bissextos para o mês de fevereiro. Também é possível passar várias outras constantes da  class <em>Calendar</em> embora não tenha grande serventia.</p>
<p>Na linha 5 pegamos o número do mês chamando a o método <em>get(int)</em> passando a constante de mês e somamos +1 pois em java o mês é representado de 0 até 11, então se o método nos retornar 1 ele representa o mês de fevereiro.</p>
<p>Na linha 6 pegamos o ano, sem mais.</p>
<p>A partir dai podemos concatenar para o formato desejado de data e pronto.</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/java/manipulando-datas-em-java/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/04/java.png" class="crp_thumb wp-post-image" alt="Manipulando datas em Java" title="Manipulando datas em Java" border="0" /></a><a href="http://www.botecodigital.info/java/manipulando-datas-em-java/" rel="bookmark" class="crp_title">Manipulando datas em Java</a></li><li><a href="http://www.botecodigital.info/java/conectando-java-com-mongodb/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2011/10/java.png" class="crp_thumb wp-post-image" alt="Conectando Java com MongoDB" title="Conectando Java com MongoDB" border="0" /></a><a href="http://www.botecodigital.info/java/conectando-java-com-mongodb/" rel="bookmark" class="crp_title">Conectando Java com MongoDB</a></li><li><a href="http://www.botecodigital.info/java/lendo-e-escrevendo-xml-em-java-com-jdom/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2012/01/java-duke-xml1.png" class="crp_thumb wp-post-image" alt="Lendo e escrevendo XML em Java com JDOM" title="Lendo e escrevendo XML em Java com JDOM" border="0" /></a><a href="http://www.botecodigital.info/java/lendo-e-escrevendo-xml-em-java-com-jdom/" rel="bookmark" class="crp_title">Lendo e escrevendo XML em Java com JDOM</a></li><li><a href="http://www.botecodigital.info/java/java-console-colorido/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/12/java2.png" class="crp_thumb wp-post-image" alt="Java &#8211; Console Colorido" title="Java &#8211; Console Colorido" border="0" /></a><a href="http://www.botecodigital.info/java/java-console-colorido/" rel="bookmark" class="crp_title">Java &#8211; Console Colorido</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/pegando-o-ultimo-dia-do-mes-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Páginação de resultados do Banco de Dados em PHP</title>
		<link>http://www.botecodigital.info/php/paginacao-de-resultados-do-banco-de-dados-em-php/</link>
		<comments>http://www.botecodigital.info/php/paginacao-de-resultados-do-banco-de-dados-em-php/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 20:57:31 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[banco]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[desenvovimento]]></category>
		<category><![CDATA[paginação]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=2001</guid>
		<description><![CDATA[Uma das atividades mais básica ao se desenvolver para Web é a paginação de resultados de uma consulta ao banco de dados. Apesar de ser simples, sempre gera algumas dúvidas principalmente pelo uso do comando LIMIT do SQL já que pode variar um pouco dependendo do Gerenciador de Banco de Dados utilizado. No MySQL por exemplo podemos utilizar da seguinte forma: Após o comando LIMIT temos dois valores separados por virgula, o primeiro é a partir de que número de [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das atividades mais básica ao se desenvolver para Web é a paginação de resultados de uma consulta ao banco de dados. Apesar de ser simples, sempre gera algumas dúvidas principalmente pelo uso do comando <em>LIMIT</em> do SQL  já que pode variar um pouco dependendo do Gerenciador de Banco de Dados utilizado.</p>
<p>No <strong>MySQL</strong> por exemplo podemos utilizar da seguinte forma:</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM usuarios LIMIT 40 , 20;
</pre>
<p>Após o comando <em>LIMIT</em> temos dois valores separados por virgula, o primeiro é a partir de que número de linha que o <em>SELECT</em> comçará a mostrar os resultados e o segundo valor é a quantidade de valores que serão mostrados a partir do primeiro valor. Resumindo se a consulta acima <b>sem</b> o comando <em>LIMIT</em> retornasse 100 resultado, utilizando o<br />
<em>LIMIT</em> seria retornado apenas 20, os resultados do 40 até 60.</p>
<p>No <strong>PostgreSQL</strong> o comando muda um pouco mas o modo de funcionamento é o mesmo:</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM usuarios LIMIT 20  OFFSET 40;
</pre>
<p>O primeiro valor após o comando <em>LIMIt</em> é a quantidade de resultados que irá mostrar e o valor após o comando <em>OFFSET</em> é a partir de que linha os resultados começarão a ser mostrados.</p>
<p>Tendo visto por auto como funciona o comando <em>LIMIt</em> podemos começar a  ver o código de páginação:</p>
<pre class="brush: php; title: ; notranslate">
try{
 	$conn = new PDO('mysql:host=localhost;port=3306;dbname=teste', 'root', '12345678');
 	$conn-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 	$por_pagina = 10;
 	$init = ( $_GET['pagina']-1) * $por_pagina;

	$result = $conn-&gt;query(&quot;SELECT * FROM usuarios limit $init, $por_pagina&quot;);

	$result_total = $conn-&gt;query(&quot;SELECT count(*) as total FROM usuarios&quot;)-&gt;fetch(PDO::FETCH_OBJ);

	$num_paginas = ceil( $result_total-&gt;total / $por_pagina);

   	$conn = null;
}catch (PDOException $i){
     	print &quot;Erro: &lt;code&gt;&quot; . $i-&gt;getMessage() . &quot;&lt;/code&gt;&quot;;
}
</pre>
<p>Neste exemplo foi utilizado <a href="http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/">PDO para realizar consultas ao banco</a> que já foi abordado em outro post.</p>
<p>Na linha 2 conectamos ao banco e na linha 3 configuramos para utilizar exceções. </p>
<p>Na linha 5 definimos e armazenamos em uma variável o número de resultados que queremos por página, isso facilitará mais para frente.</p>
<p>Na linha 6 calculamos a partir de qual resultado deve ser mostrado, esse calculo é feito tendo como base o número da página em que se está visualizando que é recebido via parâmentro de URL ( index.php?pagina=2  por exemplo), se tivermos na página 1 deve ser mostrados os resultado de 0 até 10, se tivermos na 2 será mostrado de 10 até 20, então nosso calculo para o  o resultado de inicio (fica pagina-1) * por_pagina.</p>
<p>Na linha 8  utilizamos os valores de <em>$por_pagina</em> e <em>$init</em> para construir a consulta SQL utilizando o comando <em>LIMIT</em>  e armazenamos os resultados na variável <em>$result</em> para construir a tabela.</p>
<p>Na linha 10 consultamos o total de resultados da consulta sem o comando <em>LIMIT</em> que será necessário para construir a os links de navegação da paginação.</p>
<p>Na linha 12 calculamos o numero de páginas total que é dado pelo total de resultados divido por quantos resultados se esta  mostrando por página, lembrando de utilizar a função <em>ceil</em> para arredondar o resultado.</p>
<p>Agora que temos todo o nossos resultados para mostrar vamos construir o HTML:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;ID&lt;/th&gt;
		&lt;th&gt;Nome&lt;/th&gt;
		&lt;th&gt;Login&lt;/th&gt;
		&lt;th&gt;E-mail&lt;/th&gt;
	&lt;/tr&gt;

&lt;?php   foreach($result as $linha){  ?&gt;
	&lt;tr&gt;
             	&lt;td&gt;&lt;?php echo $linha['id']?&gt;&lt;/td&gt;
              	&lt;td&gt;&lt;?php echo $linha['nome'];?&gt; &lt;/td&gt;
              	&lt;td&gt;&lt;?php echo $linha['login'];?&gt; &lt;/td&gt;
              	&lt;td&gt;&lt;?php echo $linha['email'];?&gt; &lt;/td&gt;
	&lt;/tr&gt;
         &lt;?php } ?&gt;

&lt;/table&gt;

&lt;div&gt;
&lt;?php for($i = 1 ; $i &lt;= $num_paginas ;$i++ ){?&gt;
 	&lt;a href=&quot;index.php?pagina=&lt;?php echo $i ?&gt;&quot;&gt;&lt;?php echo $i ?&gt;&lt;/a&gt;
&lt;?php }?&gt;
&lt;/div&gt;
</pre>
<p>Como pode ser visto acima é criada uma tabela  a primeira linha utilizaremos como nome das colunas e para as linha restantes é utilizada a instrução <em>foreach</em> para percorrer todos os resultados da consulta SQL(armazenada na variável <em>$result</em>) e criar para cada linha do resultado uma linha na tabela HTML.</p>
<p>Na linha 21 é utilizado um <em>for</em> normal para ir de 1 até o número de páginas e para cada passada é criado um link com a URL passando o parâmetro da página de resultado a ser mostrada.</p>
<p><a href="http://www.botecodigital.info/exemplos/paginacao/paginacao.zip">Baixar o exemplo completo.</a></p>
<p>Era isso, t++</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/04/php.png" class="crp_thumb wp-post-image" alt="PDO &#8211; PHP Data Object &#8211; Trocar de banco de dados já não é dor de cabeça" title="PDO &#8211; PHP Data Object &#8211; Trocar de banco de dados já não é dor de cabeça" border="0" /></a><a href="http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/" rel="bookmark" class="crp_title">PDO &#8211; PHP Data Object &#8211; Trocar de banco de dados já não é dor de cabeça</a></li><li><a href="http://www.botecodigital.info/jquery/carregando-um-combobox-com-ajax-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Carregando um ComboBox com AJAX com JQuery" title="Carregando um ComboBox com AJAX com JQuery" border="0" /></a><a href="http://www.botecodigital.info/jquery/carregando-um-combobox-com-ajax-com-jquery/" rel="bookmark" class="crp_title">Carregando um ComboBox com AJAX com JQuery</a></li><li><a href="http://www.botecodigital.info/php/exemplo-de-autenticacao-parte-1/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/04/php.png" class="crp_thumb wp-post-image" alt="Exemplo de autenticação em PHP utilizando sessão- Parte 1" title="Exemplo de autenticação em PHP utilizando sessão- Parte 1" border="0" /></a><a href="http://www.botecodigital.info/php/exemplo-de-autenticacao-parte-1/" rel="bookmark" class="crp_title">Exemplo de autenticação em PHP utilizando sessão- Parte 1</a></li><li><a href="http://www.botecodigital.info/java/conectando-java-com-hsqldb/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/10/java3.png" class="crp_thumb wp-post-image" alt="Conectando Java com HSQLDB" title="Conectando Java com HSQLDB" border="0" /></a><a href="http://www.botecodigital.info/java/conectando-java-com-hsqldb/" rel="bookmark" class="crp_title">Conectando Java com HSQLDB</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/paginacao-de-resultados-do-banco-de-dados-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alterar UUID de um disco virtual do Virtualbox no Linux</title>
		<link>http://www.botecodigital.info/linux/alterar-uuid-de-um-disco-virtual-do-virtualbox-no-linux/</link>
		<comments>http://www.botecodigital.info/linux/alterar-uuid-de-um-disco-virtual-do-virtualbox-no-linux/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 17:18:26 +0000</pubDate>
		<dc:creator>Thiago Finardi</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=1989</guid>
		<description><![CDATA[Uma das grandes vantagens da virtualização é o fato de podermos criar modelos(templates), com configurações padrão do sistema que se pretende replicar posteriormente. Quando se utiliza o VirtualBox da Oracle, ao copiarmos um template e adicionarmos uma VDI (Virtual Device Interface) existente, precisamos alterar o UUID (Universally Unique Identifier). Este procedimento é realizado pelos scripts de administração do próprio VirtualBox. Onde: arquivo.vdi, é o disco virtual que será gerado o novo UUID. Bom, era isso. Posts Relacionados:OpenSUSE 11.2 LançadoRecuperar Arquivos [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes vantagens da virtualização é o fato de podermos criar modelos(templates), com configurações padrão do sistema que se pretende replicar posteriormente.</p>
<p>Quando se utiliza o VirtualBox da Oracle, ao copiarmos um template e adicionarmos uma VDI (Virtual Device Interface) existente, precisamos alterar o UUID (Universally Unique Identifier). Este procedimento é realizado pelos scripts de administração do próprio VirtualBox.</p>
<pre class="brush: bash; title: ; notranslate"> VBoxManage internalcommands sethduuid arquivo.vdi</pre>
<p>Onde: arquivo.vdi, é o disco virtual que será gerado o novo UUID.</p>
<p>Bom, era isso.</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/linux/opensuse-11-2-lancado/" rel="bookmark"><img width="48" height="50" src="http://www.botecodigital.info/wp-content/uploads/2009/11/openSUSE_Geeko1.png" class="crp_thumb wp-post-image" alt="OpenSUSE 11.2 Lançado" title="OpenSUSE 11.2 Lançado" border="0" /></a><a href="http://www.botecodigital.info/linux/opensuse-11-2-lancado/" rel="bookmark" class="crp_title">OpenSUSE 11.2 Lançado</a></li><li><a href="http://www.botecodigital.info/linux/recuperar-arquivos-no-linux/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/06/linux.png" class="crp_thumb wp-post-image" alt="Recuperar Arquivos no Linux" title="Recuperar Arquivos no Linux" border="0" /></a><a href="http://www.botecodigital.info/linux/recuperar-arquivos-no-linux/" rel="bookmark" class="crp_title">Recuperar Arquivos no Linux</a></li><li><a href="http://www.botecodigital.info/linux/redimensionar-varias-imagens-no-linux/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2011/09/terminal.png" class="crp_thumb wp-post-image" alt="Redimensionar várias imagens no linux" title="Redimensionar várias imagens no linux" border="0" /></a><a href="http://www.botecodigital.info/linux/redimensionar-varias-imagens-no-linux/" rel="bookmark" class="crp_title">Redimensionar várias imagens no linux</a></li><li><a href="http://www.botecodigital.info/hardware/particoes-e-sistemas-de-arquivos/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/06/linux.png" class="crp_thumb wp-post-image" alt="Partições e Sistemas de Arquivos" title="Partições e Sistemas de Arquivos" border="0" /></a><a href="http://www.botecodigital.info/hardware/particoes-e-sistemas-de-arquivos/" rel="bookmark" class="crp_title">Partições e Sistemas de Arquivos</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/linux/alterar-uuid-de-um-disco-virtual-do-virtualbox-no-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lendo e escrevendo XML em Java com JDOM</title>
		<link>http://www.botecodigital.info/java/lendo-e-escrevendo-xml-em-java-com-jdom/</link>
		<comments>http://www.botecodigital.info/java/lendo-e-escrevendo-xml-em-java-com-jdom/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:36:46 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[arquivos]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=1976</guid>
		<description><![CDATA[JDOM é uma biblioteca que visa ser um modo simples de ler e escrever documentos XML. Vamos ver neste tutorial como criar um documento XML e como lê-lo de forma bastante simples. Primeiramente vamos as classes chaves desta biblioteca: Document: Esta classe representa o documento inteiro, esta classe pode ter apenas um elemento que seria o elemento raiz do documento(elemento root), comentários e outros elementos de definição. Element: Esta classe representa um elemento do documento XML(também chamado de nó), são [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jdom.org/">JDOM</a> é uma biblioteca que visa ser um modo simples de ler e escrever documentos XML. Vamos ver neste tutorial como criar um documento XML e como lê-lo de forma bastante simples.</p>
<p>Primeiramente vamos as classes chaves desta biblioteca:</p>
<p><strong>Document: </strong> Esta classe representa o documento inteiro, esta classe pode ter apenas um elemento que seria o elemento raiz do documento(elemento root), comentários e outros elementos de definição.</p>
<p><strong>Element: </strong> Esta classe representa um elemento do documento XML(também chamado de nó), são os elementos que compõem o documento ele pode conter outros elementos, atributos, comentários e valores.</p>
<p><strong>Attribute: </strong> Esta classe representa um atributo de um elemento XML.</p>
<p>Vamos ao código então! <b>Só não esqueça de <a href="http://www.jdom.org/downloads/index.html">baixar a biblioteca JDOM</a> e incluí-la no seu CLASSPATH.<b> </p>
<pre class="brush: java; title: ; notranslate">
Document doc = new Document();

Element root = new Element(&quot;turma&quot;);

Element pessoa = new Element(&quot;pessoa&quot;);
Attribute sexo = new Attribute(&quot;sexo&quot;,&quot;Masculino&quot;);
pessoa.setAttribute(sexo);

Element nome = new Element(&quot;nome&quot;);
nome.setText(&quot;Rodrigo&quot;);
pessoa.addContent(nome);

Element sobrenome = new Element(&quot;sobrenome&quot;);
sobrenome.setText(&quot;sobrenome&quot;);
pessoa.addContent(sobrenome);

Element notas = new Element(&quot;notas&quot;);
pessoa.addContent(notas);

Element teste1 = new Element(&quot;teste1&quot;);
teste1.setText(&quot;8.3&quot;);
Element teste2 = new Element(&quot;teste2&quot;);
teste2.setText(&quot;7.8&quot;);
Element prova = new Element(&quot;prova&quot;);
prova.setText(&quot;9.2&quot;);

notas.addContent(teste1);
notas.addContent(teste2);
notas.addContent(prova);

root.addContent(pessoa);

doc.setRootElement(root);

XMLOutputter xout = new XMLOutputter();
xout.output(doc , System.out);
</pre>
<p>Na linha 1 é criado o objeto que representa o documento XML, na linha 3 é criado o elemento raiz do documento e é passado para o construtor o nome do elemento, neste caso &#8220;turma&#8221;, é dentro deste elemento que iremos inserir cada elemento XML que irá representar uma pessoa, assim, dentro do elemento &#8220;turma&#8221; pode haver um ou vários elementos &#8220;pessoa&#8221;.</p>
<p>Na linha 5 é criado um elemento &#8220;pessoa&#8221; e nele será inserido as informações sobre a pessoa, como o sexo que será inserido  como um atributo do elemento pessoa e para isso é criado um objeto de atributo na linha 6 e passado para o construtor como parâmetros o nome do atributo e seu valor. Na linha 7 é adicionado o atributo ao elemento &#8220;pessoa&#8221;.</p>
<p>Na linha 9 é criado um elemento nome, é definido um valor para ele na linha 10 e adicionamos este elemento &#8220;nome&#8221; ao elemento &#8220;pessoa&#8221; utilizando  o método <em>addContent</em>, é importante lembrar a diferença deste método com o <em>setContent</em>, o método <em>addContent</em> adiciona o elemento passado por parâmetro ao conteúdo já existente dentro do elemento pai e o método <em>setContent</em> irá substituir o conteúdo anterior do elemento pai se houver.</p>
<p>Nas linhas 13, 14 e 15 é criado e atribuído o elemento de &#8220;sobrenome&#8221; da pessoa.</p>
<p>Na linha 17 é criado um elemento &#8220;notas&#8221; que irá conter outros elementos, que serão as notas da pessoa.</p>
<p>Da linha 20 até 25 é criado três elementos(&#8220;teste1&#8243;,&#8221;teste2&#8243; e &#8220;prova&#8221;) e atribuído valores para eles. Nas linhas 27, 28 e 29 é inserido os elementos &#8220;teste1&#8243;, &#8220;teste2&#8243; e &#8220;prova&#8221;, dentro do elemento &#8220;notas&#8221;.</p>
<p>Na linha 31 adicionamos o elemento &#8220;pessoa&#8221; ao elemento raiz do documento(elemento &#8220;turma&#8221;)  e na linha 33 é adicionado o  elemento turma como elemento root do documento através do método <em> setRootElement</em>.</p>
<p>Na linha 35 é criado um objeto <em>XMLOutputter</em> que é responsável por gerar o XML através do método <em>output</em> que  recebe como parâmetro o objeto do documento a ser escrito e um <em>OutputStream</em> onde será enviado o XML, que no caso foi utilizado a saida padrão. Também poderia criar um outro <em>OutputStream</em> para um arquivo como no exemplo abaixo:</p>
<pre class="brush: java; title: ; notranslate">
XMLOutputter xout = new XMLOutputter();
OutputStream out = new FileOutputStream( new File(&quot;exemplo.xml&quot;));
xout.output(doc , out);
</pre>
<p>A saida do exemplo será a seguinte:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;turma&gt;
	&lt;pessoa sexo=&quot;Masculino&quot;&gt;
		&lt;nome&gt;Rodrigo&lt;/nome&gt;
		&lt;sobrenome&gt;sobrenome&lt;/sobrenome&gt;
		&lt;notas&gt;
			&lt;teste1&gt;8.3&lt;/teste1&gt;
			&lt;teste2&gt;7.8&lt;/teste2&gt;
			&lt;prova&gt;9.2&lt;/prova&gt;
		&lt;/notas&gt;
	&lt;/pessoa&gt;
&lt;/turma&gt;
</pre>
<p>Utilizando a mesma estrutura de documento XML veremos um exemplo de leitura:</p>
<pre class="brush: java; title: ; notranslate">
File f = new File(&quot;exemplo.xml&quot;);

SAXBuilder builder = new SAXBuilder();

Document doc = builder.build(f);

Element root = (Element) doc.getRootElement();

List pessoas = root.getChildren();

Iterator i = pessoas.iterator();

while( i.hasNext() ){
		Element pessoa = (Element) i.next();
		System.out.println(&quot;Nome: &quot; + pessoa.getChildText(&quot;nome&quot;));
		System.out.println(&quot;Sobrenome: &quot; + pessoa.getChildText(&quot;sobrenome&quot;));
		System.out.println(&quot;Sexo: &quot; + pessoa.getAttributeValue(&quot;sexo&quot;));
		System.out.println(&quot;Nota( teste1 ): &quot;+pessoa.getChild(&quot;notas&quot;).getChildText(&quot;teste1&quot;));
		System.out.println(&quot;Nota( teste2 ): &quot;+pessoa.getChild(&quot;notas&quot;).getChildText(&quot;teste2&quot;));
		System.out.println(&quot;Nota( prova ): &quot;+pessoa.getChild(&quot;notas&quot;).getChildText(&quot;prova&quot;));
		System.out.println();
}
</pre>
<p>Na linha 1 é criado um objeto representando o arquivo XML a ser lido, na linha 3 é criado o objeto <em>SAXBuilder</em> que é responsável por converter o arquivo em um objeto do tipo <em>Document</em> da biblioteca JDOM.</p>
<p>Na linha 5 é construído o objeto <em>Document</em> através do método <em>builder</em> do <em>SAXBuilder</em>.</p>
<p>Na linha 7 é pego o elemento raiz do documento(elemento &#8220;turma&#8221;) utilizando o método <em>getRootElement</em>. Utilizando este objeto é chamado o método <em>getChildren</em>(linha 9) que retorna um objeto <em>List</em> com todos os elementos filhos, que no caso serão objetos pessoa.</p>
<p>Na linha 11 é definido um iterador para percorrer os elementos &#8220;pessoas&#8221; da lista. </p>
<p>Na linha 14 é utilizado a variável pessoa para armazenar cada objeto pessoa.</p>
<p>Na Linha 15 é utilizado o método <em>getChildText</em> do elemento &#8220;pessoa&#8221; que retorna o valor do elemento filho selecionado, no caso o elemento nome.</p>
<p>Na linha 17 é utilizado po método <em>getAttributeValue</em> que retorna o valor do atributo selecionado, no caso sexo.</p>
<p>Na linha 18 para pegar o valor do elemento &#8220;teste1&#8243; é necessário primeiro selecionar o elemento &#8220;notas&#8221; já que o elemento &#8220;teste1&#8243; se encontra dentro deste, para isso é utilizado o método <em>getChild</em> para somente depois utilizar o método  <em>getChildText</em> para pegar o valor de &#8220;teste1&#8243;.</p>
<p>Como vimos é uma biblioteca bem simples de utilizar e quem já lidou um pouco com XML não deve ter nenhuma dificuldade.</p>
<div id="crp_related"><h4>Posts Relacionados:</h4><ul><li><a href="http://www.botecodigital.info/java/conectando-java-com-mongodb/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2011/10/java.png" class="crp_thumb wp-post-image" alt="Conectando Java com MongoDB" title="Conectando Java com MongoDB" border="0" /></a><a href="http://www.botecodigital.info/java/conectando-java-com-mongodb/" rel="bookmark" class="crp_title">Conectando Java com MongoDB</a></li><li><a href="http://www.botecodigital.info/jquery/iniciando-com-jquery/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Iniciando com JQuery" title="Iniciando com JQuery" border="0" /></a><a href="http://www.botecodigital.info/jquery/iniciando-com-jquery/" rel="bookmark" class="crp_title">Iniciando com JQuery</a></li><li><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/05/jquery.png" class="crp_thumb wp-post-image" alt="Trocando dados utilizando JSON" title="Trocando dados utilizando JSON" border="0" /></a><a href="http://www.botecodigital.info/jquery/trocando-dados-utilizando-json/" rel="bookmark" class="crp_title">Trocando dados utilizando JSON</a></li><li><a href="http://www.botecodigital.info/php/criando-um-feed-com-simplexml/" rel="bookmark"><img width="50" height="50" src="http://www.botecodigital.info/wp-content/uploads/2010/04/php.png" class="crp_thumb wp-post-image" alt="Criando um FEED com SimpleXML" title="Criando um FEED com SimpleXML" border="0" /></a><a href="http://www.botecodigital.info/php/criando-um-feed-com-simplexml/" rel="bookmark" class="crp_title">Criando um FEED com SimpleXML</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/java/lendo-e-escrevendo-xml-em-java-com-jdom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

