<?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>rodrigoaguas.com</title>
	<atom:link href="http://www.rodrigoaguas.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rodrigoaguas.com/blog</link>
	<description>Desenvolvimento de sites Web: acessibilidade, usabilidade, ASP, PHP, XHTML, CSS e Ajax.</description>
	<lastBuildDate>Thu, 11 Feb 2010 01:42:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Configurando Facelets em projeto JSF no eclipse</title>
		<link>http://www.rodrigoaguas.com/blog/configurando-facelets-em-projeto-jsf-no-eclipse/</link>
		<comments>http://www.rodrigoaguas.com/blog/configurando-facelets-em-projeto-jsf-no-eclipse/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 01:42:26 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[JSF]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/?p=66</guid>
		<description><![CDATA[Após termos nosso projeto JavaServer Faces criado no eclipse, iremos configurar o facelets no mesmo. O facelets é um framework de templating feito específicamente para projetos JSF. Ele se integra de tal forma com o cicl0 de vida do jsf que resulta numa melhora da performance significativa em comparação ao uso de JSP. Além disso, [...]]]></description>
			<content:encoded><![CDATA[<p>Após termos nosso <a href="http://www.rodrigoaguas.com/blog/configurando-projeto-jsf-no-eclipse/">projeto JavaServer Faces criado no eclipse</a>, iremos configurar o <a href="https://facelets.dev.java.net/">facelets</a> no mesmo. O facelets é um framework de templating feito específicamente para projetos JSF. Ele se integra de tal forma com o cicl0 de vida do jsf que resulta numa melhora da performance significativa em comparação ao uso de JSP. Além disso, o facelets funciona em todos os web containers amplamente conhecidos, não impondo restrição alguma ao projeto.</p>
<ol>
<li>Faça o download do facelets na <a href="https://facelets.dev.java.net/files/documents/3448/144240/facelets-1.1.15-jsf1.2.zip">versão 1.1.15</a>, pois a versão 1.2 não é estável (e parece que não ficará tão cedo);</li>
<li>Extraia o arquivo &#8220;jsf-facelets.jar&#8221; para dentro da pasta &#8220;WebContent\WEB-INF\lib&#8221; do seu projeto JSF. Como estamos utilizando o JBoss nesse exemplo, não é necessário extrair também os outros arquivos JAR da pasta lib do facelets, pois são dependências de bibliotecas que já existem no JBoss;</li>
<li>Não basta apenas acrescentarmos a biblioteca do facelets em nosso projeto, devemos configurar algumas outras coisas para que o JSF se integre ao facelets. Acrescente as seguintes linhas ao arquivo faces-config.xml (encontrado em &#8220;WebContent\WEB-INF&#8221;):
<p><em> &lt;application&gt;</em><br />
<em> &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;</em><br />
<em> &lt;/application&gt;</em></li>
<li>E no mesmo local devemos incluir as seguintes linhas ao arquivo Web.xml:
<p><em>&lt;context-param&gt;</em><br />
<em>&lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;</em><br />
<em> &lt;param-value&gt;.htm&lt;/param-value&gt;</em><br />
<em> &lt;/context-param&gt;</em></p>
<p><em> &lt;context-param&gt;</em><br />
<em>&lt;param-name&gt;facelets.DEVELOPMENT&lt;/param-name&gt;</em><br />
<em> &lt;param-value&gt;true&lt;/param-value&gt;</em><br />
<em> &lt;/context-param&gt;</em></p>
<p><em> &lt;context-param&gt;</em><br />
<em> &lt;param-name&gt;facelets.SKIP_COMMENTS&lt;/param-name&gt;</em><br />
<em> &lt;param-value&gt;true&lt;/param-value&gt;</em><br />
<em> &lt;/context-param&gt;</em></p>
<p><em> &lt;context-param&gt;</em><br />
<em> &lt;param-name&gt;com.sun.faces.validateXml&lt;/param-name&gt;</em><br />
<em> &lt;param-value&gt;true&lt;/param-value&gt;</em><br />
<em> &lt;/context-param&gt;</em></p>
<p>No primeiro parâmetro, indicamos que os arquivos físicos que utilizaremos para a apresentação tem extensão .htm.<br />
Dessa forma, quando o facelets receber uma requisição ao endereço &#8220;bemvindo.jsf&#8221; buscará pelo arquivo &#8220;bemvindo.htm&#8221;.<br />
Na prática, não importa a extensão escolhida, costuma-se deixar htm ou html apenas por questões históricas.</p>
<p>O segundo parâmetro indica ao facelets que estamos em ambiente de desenvolvimento, dessa forma ele exibe possíveis erros em uma tela amigável ao desenvolvedor, mas que não deve ser exibida futuramente ao usuário final.</p>
<p>O terceiro parâmetro determina ao facelets que os comentários nos códigos HTML devem ser tratados como comentários. Pois o facelets por padrão não ignora comentários (<!-- -->) nos arquivos de apresentação.</p>
<p>O quarto parâmetro faz com que o facelets valide o código html das telas, só permitindo que seja utilizado XHTML.</li>
</ol>
<p>Pronto! Dessa forma o facelets já está pronto para ser executado em seu projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/configurando-facelets-em-projeto-jsf-no-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando Projeto JSF no Eclipse</title>
		<link>http://www.rodrigoaguas.com/blog/configurando-projeto-jsf-no-eclipse/</link>
		<comments>http://www.rodrigoaguas.com/blog/configurando-projeto-jsf-no-eclipse/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 21:26:23 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[JSF]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/configurando-projeto-jsf-no-eclipse/</guid>
		<description><![CDATA[Este tutorial explicará como criar um projeto Java para web utilizando JavaServer Faces (JSF) no Eclipse. É um passo-a-passo de todas as configurações necessárias para ter um projeto pronto para iniciar o desenvolvimento de sistemas web.
Os softwares utilizados serão o ambiente de desenvolvimento integrado Eclipse e o servidor de aplicação JBoss. Basearei as explicações nas [...]]]></description>
			<content:encoded><![CDATA[<p>Este tutorial explicará como criar um projeto Java para web utilizando JavaServer Faces (JSF) no Eclipse. É um passo-a-passo de todas as configurações necessárias para ter um projeto pronto para iniciar o desenvolvimento de sistemas web.</p>
<p>Os softwares utilizados serão o ambiente de desenvolvimento integrado <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> e o servidor de aplicação <a href="http://www.jboss.org/jbossas/" target="_blank">JBoss</a>. Basearei as explicações nas versões mais recentes desses softwares no momento em que escrevo este tutorial, que são <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-jee-galileo-SR1-win32.zip">Eclipse Galileo SR1</a> e <a href="http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/">JBoss 5.1.0.GA</a>, mas facilmente as explicações aqui lidas podem ser adaptadas às outras versões. A instalação dos mesmos não será tratada neste tutorial, então instale-os antes de prosseguir na leitura.</p>
<p>Então vamos à criação do projeto no Eclipse:</p>
<ol>
<li>Clique com o botão direito do mouse no interior da view &#8220;Project Explorer&#8221;;</li>
<li>Vá na opção &#8220;New&#8221;;</li>
<li>Clique em &#8220;Dynamic Web Project&#8221;, uma janela se abrir;<br />
<a title="TutorialJSF_1" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-1.jpg" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-1.thumbnail.jpg" alt="TutorialJSF_1" /></a></li>
<li>Dê um nome para o projeto no campo &#8220;Project Name&#8221;;</li>
<li>Na caixa &#8220;Target runtime&#8221;, clique no botão &#8220;New&#8221;, abrirá uma outra janela para configuração do servidor no Eclipse;</li>
<li>Selecione na pasta &#8220;JBoss&#8221; a versão &#8220;JBoss v5.0&#8243;;<br />
<a title="TutorialJSF_2" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-2.jpg" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-2.thumbnail.jpg" alt="TutorialJSF_2" /></a></li>
<li>Clique no botão &#8220;Next&#8221;;</li>
<li>Clique no botão &#8220;Browser&#8221; e selecione o local onde foi instalado o JBoss em seu computador;<br />
<a title="TutorialJSF_3" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-3.jpg" target="_blank"> <img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-3.thumbnail.jpg" alt="TutorialJSF_3" /></a></li>
<li>Clique em &#8220;Finish&#8221; e voltaremos para a janela de criação do projeto;</li>
<li>Confirme do campo &#8220;Dynamic web module version&#8221; estar selecionada a opção &#8220;2.5&#8243;;</li>
<li>Em &#8220;Configuration&#8221;, selecione a opção &#8220;JavaServer Faces v1.2 Project&#8221;;<br />
<a title="TutorialJSF_4" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-4.jpg" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-4.thumbnail.jpg" alt="TutorialJSF_4" /></a></li>
<li>Clique no botão &#8220;Next&#8221;, abrirá uma tela que não faremos nenhuma alteração;</li>
<li>Clique no botão &#8220;Next&#8221; novamente;<br />
<a title="TutorialJSF_5" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-5.jpg" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-5.thumbnail.jpg" alt="TutorialJSF_5" /></a></li>
<li>Confirme do marcador &#8220;Generate web.xml deployment descriptor&#8221; estar selecionado;<br />
<a title="TutorialJSF_6" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-6.jpg" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-6.thumbnail.jpg" alt="TutorialJSF_6" /></a></li>
<li>Clique no botão &#8220;Next&#8221; mais uma vez;<br />
<a title="TutorialJSF_7" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-7.jpg" target="_blank"> <img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-7.thumbnail.jpg" alt="TutorialJSF_7" /></a></li>
<li>Clique no botão &#8220;Finish&#8221;para efetivamente criar o projeto;<br />
<a title="TutorialJSF_8" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-8.jpg" target="_blank"> <img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2009/12/untitled-8.thumbnail.jpg" alt="TutorialJSF_8" /></a></li>
</ol>
<p>Pronto! Você está com seu projeto web criado.  No próximo tutorial ensinarei a instalar o <a href="https://facelets.dev.java.net/" target="_blank">Facelets</a>, pois <a href="http://www.rponte.com.br/2008/11/12/aplicacoes-serias-em-jsf-usam-facelets/" target="_blank">aplicações sérias em JSF usam Facelets</a>! Não percam!</p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/configurando-projeto-jsf-no-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criação de Tabelas e Relacionamentos com SQL</title>
		<link>http://www.rodrigoaguas.com/blog/criacao-de-tabelas-e-relacionamentos-com-sql/</link>
		<comments>http://www.rodrigoaguas.com/blog/criacao-de-tabelas-e-relacionamentos-com-sql/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 15:50:49 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[BD]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/criacao-de-tabelas-e-relacionamentos-com-sql/</guid>
		<description><![CDATA[Já escrevi sobre a criação de relacionamentos no MySQL anteriormente, então não serei repetitivo em falar sobre as mesmas coisas, mas aconselho a leitura do artigo anterior para os que não tiverem intimidade com relacionamentos de banco de dados.
Neste me concentrarei em mostrar a criação de relacionamentos utilizando apenas comandos SQL, não que isso dispense [...]]]></description>
			<content:encoded><![CDATA[<p>Já escrevi sobre a <a href="http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/">criação de relacionamentos no MySQL</a> anteriormente, então não serei repetitivo em falar sobre as mesmas coisas, mas aconselho a leitura do artigo anterior para os que não tiverem intimidade com relacionamentos de banco de dados.</p>
<p>Neste me concentrarei em mostrar a criação de relacionamentos utilizando apenas comandos SQL, não que isso dispense a utilização de uma interface com o banco de dados para a execução dos mesmos. Para isso, podemos utilizar além do próprio <a href="http://dev.mysql.com/downloads/gui-tools/">MySQL Query Browser</a>, o <a href="http://www.phpmyadmin.net/" target="_blank">phpMyAdmin</a> ou outro programa de sua preferência que permita a execução de códigos SQL na base de dados.</p>
<p>Basearei minhas explicações em exemplos para a criação de um banco de dados para uma &#8220;biblioteca&#8221; (inventado apenas para nos servir de exemplo, então longe de ser completo o suficiente para uma aplicação real). Iniciaremos, criando a tabela de autores, contendo o nome do mesmo e um identificador:</p>
<p><code><br />
create table autor (<br />
id int,<br />
nome varchar<br />
)</code></p>
<p>No código anterior contemplamos apenas a estrutura da tabela, ignorando a definição da chave primária e dos campos que não aceitam valores nulos. Então, colocaremos o id como chave primária (primary key, ou apenas pk) e auto incrementada, para que o seu valor seja gerado pelo próprio MySQL. Além disso, o campo nome passa a não aceitar valores nulos, pois o padrão é que qualquer coluna aceite valores nulos. Existem outras sintaxes para esse comando, mas mostrarei apenas a que considero mais simples (mas não possibilita a criação de chaves compostas).</p>
<p><code><br />
create table autor (<br />
id int not null auto_increment primary key,<br />
nome varchar not null<br />
)</code></p>
<p>Então, nossa tabela de autores está pronta. Criaremos agora a tabela de livros. Para simplificar, considerarei que um livro será escrito por apenas um autor, assim teremos que cada livro fará referência a exato um registro da tabela de autores. Armazenaremos, além do autor, apenas ISBN, título e edição do livro.</p>
<p><code><br />
create table livro (<br />
id int not null auto_increment primary key,<br />
isbn int not null,<br />
titulo varchar not null,<br />
edicao int not null<br />
)<br />
</code></p>
<p>Já que o ISBN é um identificador único para as edições dos livros, poderíamos utilizá-lo como chave primária, mas não faremos isso, apenas não aceitaremos valores repetidos no ISBN, para isso utilizaremos unique nessa coluna. Além disso, temos ainda que criar uma coluna para o relacionamento com a tabela de autores e constraint de chave estrangeira (foreign key, ou apenas fk).</p>
<p><code><br />
create table livro (<br />
id int not null auto_increment primary key,<br />
isbn int not null unique,<br />
titulo varchar not null,<br />
edicao int not null,<br />
autor int not null<br />
constraint fk_autor foreign key (id) references autor(id) on delete restrict on update restrict<br />
)<br />
engine = InnoDB<br />
</code></p>
<p>Não comentei sobre a última linha do comando, ela determina o tipo de tabela que o MySQL criará. É necessário acrescentá-la por causa da foreign key, que não é suportada por qualquer tipo de tabela.</p>
<p>A criação das tabelas de autor e livro já foram suficientes para mostrar o básico da sintaxe de criação de tabela e já temos um (mini) banco de dados funcionando. Existem muitos detalhes que não foram comentados nesse artigo, quem quiser pode encontrá-los na <a href="http://dev.mysql.com/doc/refman/5.1/en/create-table.html">documentação do MySQL</a>.</p>
<p>Espero ter respondido aos pedidos feitos nos comentários do outro artigo. Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/criacao-de-tabelas-e-relacionamentos-com-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Explorar nichos na web? Será?</title>
		<link>http://www.rodrigoaguas.com/blog/explorar-nichos-na-web-sera/</link>
		<comments>http://www.rodrigoaguas.com/blog/explorar-nichos-na-web-sera/#comments</comments>
		<pubDate>Thu, 15 May 2008 02:47:50 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/explorar-nichos-na-web-sera/</guid>
		<description><![CDATA[O Google tempos atrás vem inserindo (lentamente) uma nova versão do Gmail, aos poucos os usuários foram recebendo o acesso à ela. Uma das justificativas desse método é que caso algum problema seja encontrado, não terá atingido todos os usuários do serviço, não queimando a imagem da empresa e nem nos prejudicando. Muito interessante.
Mas eu [...]]]></description>
			<content:encoded><![CDATA[<p>O Google tempos atrás vem inserindo (lentamente) uma nova versão do Gmail, aos poucos os usuários foram recebendo o acesso à ela. Uma das justificativas desse método é que caso algum problema seja encontrado, não terá atingido todos os usuários do serviço, não queimando a imagem da empresa e nem nos prejudicando. Muito interessante.</p>
<p>Mas eu não sei se o Google ainda não percebeu ou está ignorando que essa nova versão do Gmail TRAVA o Firefox a todo momento. Seria isso uma falha da Mozilla no desenvolvimento do Firefox? A culpa já foi até posta no Firebug (o próprio Gmail lhe avisa), mas mesmo com o Firebug desabilitado o problema continua.</p>
<p>Mas calma! Basta clicar em &#8220;Versão Mais Antiga&#8221; e utilizaremos o velho e bom Gmail! Mas não se empolgue, essa configuração não fica salva no computador, então toda vez que formos ler emails teremos que clicar no &#8220;Versão Mais Antiga&#8221;. Provavelmente, o Google não deixará tal versão disponível por muito tempo aos usuários, só espero que até lá resolvam o problema do Firefox.</p>
<p>Além disso, os usuários do ainda popular Internet Explorer 6 estão também excluídos da utilização dessa recente atualização. Será que os computadores deles não aguentariam o processamento necessário? É.. acho que o meu também não deve estar aguentando&#8230;</p>
<p>Sendo o Google a empresa símbolo da &#8220;Web 2.0&#8243;, estaria ela dando um passo atrás e focando nas grandes massas? A minoria que fique com o Gmail 1.0 mesmo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/explorar-nichos-na-web-sera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presente da Nielsen Norman Group: guia de acessibilidade</title>
		<link>http://www.rodrigoaguas.com/blog/presente-da-nielsen-norman-group-guia-de-acessibilidade/</link>
		<comments>http://www.rodrigoaguas.com/blog/presente-da-nielsen-norman-group-guia-de-acessibilidade/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 01:32:50 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/presente-da-nielsen-norman-group-guia-de-acessibilidade/</guid>
		<description><![CDATA[A Nielsen Norman Group está disponibilizando gratuitamente um relatório sobre acessibilidade na Web denominado &#8220;Beyond ALT Text: Making the Web Easy to Use for Users With Disabilities&#8221;. O download do mesmo está disponível por tempo indeterminado como presente de final de ano. Nele existe um guia de boas práticas abordando muitos aspectos interessantes da acessibilidade, [...]]]></description>
			<content:encoded><![CDATA[<p>A Nielsen Norman Group está disponibilizando gratuitamente um relatório sobre acessibilidade na Web denominado &#8220;Beyond ALT Text: Making the Web Easy to Use for Users With Disabilities&#8221;. O <a href="http://www.nngroup.com/reports/accessibility/">download</a> do mesmo está disponível por tempo indeterminado como presente de final de ano. Nele existe um guia de boas práticas abordando muitos aspectos interessantes da acessibilidade, além de falar das tecnologias assistivas, leitores de telas e etc. Aproveitem enquanto é free!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/presente-da-nielsen-norman-group-guia-de-acessibilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estatísticas da Mega-sena, ficaremos ricos?</title>
		<link>http://www.rodrigoaguas.com/blog/estatisticas-da-mega-sena-ficaremos-ricos/</link>
		<comments>http://www.rodrigoaguas.com/blog/estatisticas-da-mega-sena-ficaremos-ricos/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 03:47:25 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/estatisticas-da-mega-sena-ficaremos-ricos/</guid>
		<description><![CDATA[Estava cansado de só dar vexame jogando na Mega-sena, então resolvi fazer algo para aumentar minhas chances de lucro. Como sei que meus milhares de leitores (rsrsrs) vão se lembrar de mim quando ganharem, estou divulgando esses gráficos/análises dos resultados da Mega-sena durante toda a história dela. Acessando a minha página de projetos vocês terão [...]]]></description>
			<content:encoded><![CDATA[<p>Estava cansado de só dar vexame jogando na Mega-sena, então resolvi fazer algo para aumentar minhas chances de lucro. Como sei que meus milhares de leitores (rsrsrs) vão se lembrar de mim quando ganharem, estou divulgando esses gráficos/análises dos resultados da Mega-sena durante toda a história dela. Acessando a <a href="http://www.rodrigoaguas.com/projetos.php">minha página de projetos</a> vocês terão acesso à essa ótima oportunidade de grandes lucros! Huahauhau. Afinal, a esperança é a última que morre! E eu continuo tentando ganhar meus milhõeszinhos&#8230; Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/estatisticas-da-mega-sena-ficaremos-ricos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Atualização do passo-a-passo de como criar relacionamentos no MySQL</title>
		<link>http://www.rodrigoaguas.com/blog/atualizacao-do-passo-a-passo-de-como-criar-relacionamentos-no-mysql/</link>
		<comments>http://www.rodrigoaguas.com/blog/atualizacao-do-passo-a-passo-de-como-criar-relacionamentos-no-mysql/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 03:31:48 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[BD]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/atualizacao-do-passo-a-passo-de-como-criar-relacionamentos-no-mysql/</guid>
		<description><![CDATA[Observando o grande número de acessos ao artigo de criação de relacionamentos no MySQL, resolvi dar uma melhorada nele acrescentando imagens das telas dos passos indicando a posição de cada ação necessária.  Acho que vale a pena aos que se interessam sobre o assunto dar uma olhada. Abraços!
]]></description>
			<content:encoded><![CDATA[<p>Observando o grande número de acessos ao <a href="http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/">artigo de criação de relacionamentos no MySQL</a>, resolvi dar uma melhorada nele acrescentando imagens das telas dos passos indicando a posição de cada ação necessária.  Acho que vale a pena aos que se interessam sobre o assunto dar uma olhada. Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/atualizacao-do-passo-a-passo-de-como-criar-relacionamentos-no-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>As melhores extensões do Firefox para desenvolvedores Web</title>
		<link>http://www.rodrigoaguas.com/blog/as-melhores-extensoes-do-firefox-para-desenvolvedores-web/</link>
		<comments>http://www.rodrigoaguas.com/blog/as-melhores-extensoes-do-firefox-para-desenvolvedores-web/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 21:30:21 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/as-melhores-extensoes-do-firefox-para-desenvolvedores-web/</guid>
		<description><![CDATA[Nesse artigo indicarei as melhores extensões (ao meu ver) do Firefox para ajudar o trabalho dos desenvolvedores de sites.
Acho muito boa essa abertura que a Mozilla dá aos usuários para desenvolverem novas funcionalidades para o Firefox. O navegador sai ganhando com a conquista de mais usuários e a fidelização dos usuários de certos nichos que [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse artigo indicarei as melhores <a href="https://addons.mozilla.org/en-US/firefox/">extensões</a> (ao meu ver) do <a href="http://www.mozilla.com/en-US/">Firefox</a> para ajudar o trabalho dos desenvolvedores de sites.</p>
<p>Acho muito boa essa abertura que a Mozilla dá aos usuários para desenvolverem novas funcionalidades para o Firefox. O navegador sai ganhando com a conquista de mais usuários e a fidelização dos usuários de certos nichos que as extensões propiciam funcionalidades não aplicáveis a um browser feito para atender o grande público.</p>
<p>Na página de extensões da Mozilla existe uma quantidade enorme de extensões e exatamente por isso resolvi fazer essa seleção das melhores. Então, vamos lá&#8230;</p>
<p>A lista abaixo está em ordem alfabética, não há relação alguma com minhas preferências.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/271">ColorZilla</a></p>
<p>Adiciona uma ferramenta &#8220;conta-gotas&#8221; na barra de status do Firefox, com ela você descobre o código da cor no ponto em que você apontar o mouse no site.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/2104">CSSViewer</a></p>
<p>Mostra as regras de CSS aplicadas a um determinado elemento que você aponte com o mouse. Muito útil quando você identifica um comportamento estranho e precisa descobrir o que está ocasionando-o ou por questões de aprendizado para entender como foi feito um certo efeito.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a></p>
<p>Essa é uma extensão com funcionalidades que eu não consigo entender muito bem, mas uma única que eu entendo me é extremamente útil, o debugger de Javascript. Um ícone na barra de status do Firefox lhe mostra se ocorreu algum erro no Javascript e lhe mostra onde, lhe permitindo ir direto ao erro.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/684">Fireftp</a></p>
<p>Tem algo mais necessário do que um cliente ftp para quem trabalho com web? Acho que só conhecimento mesmo (filosofei ahuhuahua). Então, adiciona um cliente ftp ao seu Firefox com controle de contas e tudo mais que nós precisamos. Tah bom&#8230; eu prefiro o Filezilla que está sempre no meu pendrive, mas muita gente não troca o Fireftp por nada, então seria injusto não citá-lo.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/249">HTML Validator</a></p>
<p>Faz a validação do HTML dos sites que são acessados, mostrando warnings e erros, se existirem, acompanhados de explicação e sugestões de como solucionar o problema. Existem nele 3 métodos de validação, o mais rigido é o &#8220;Serial&#8221; e aos que forem mais flexíveis aconselho o &#8220;Tidy&#8221;.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1419">IE Tab</a></p>
<p>Permite que o Firefox exiba sites utilizando a engine de renderização do Internet Explorer, servindo para testar a renderização de CSS no IE sem sair do Firefox. Não funciona no linux, já que não pode haver um Internet Explorer instalado.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/2076">JSView</a></p>
<p>Acrescenta ao menu e à barra de status opções para visualização dos arquivos Javascript e CSS externos, abrindo-os no visualizador de código-fonte do firefox.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/532">LinkChecker</a></p>
<p>Sendo sincero, nunca utilizei, mas acho a idéia interessante e bastante útil, principalmente naqueles momentos em que você desenvolve algumas páginas correndo e quer ter certeza que não esqueceu de nenhuma. Ah.. a proposta da extensão é verificar os links de uma página atrás de possíveis links quebrados.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/539">MeasureIt</a></p>
<p>Clicando no ícone que ele acrescenta na barra de status do seu firefox, esta extensão lhe permite medir (em pixels) uma área retangular do site selecionada pelo mouse, lhe informando a largura e a altura separadamente.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/2250">Page Validator</a></p>
<p>Aos que pensaram que estou colocando duas extensões com o mesmo fim, não, isso vai acontecer logo abaixo, mas nesse caso a HTML Validator não funciona exatamente igual a essa. A primeira faz a validação no seu próprio computador, enquanto esta encaminha uma requisição ao validador da W3C, que pode acusar alguns erros antes não acusados.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/3408">Save as Image</a> ou o <a href="https://addons.mozilla.org/en-US/firefox/addon/1146">ScreenGrab!</a></p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1146"></a>Basicamente servem para gerar arquivos com a screenshot do site que você estiver acessando. Utilizo para guardar layouts que eu ache interessantes em minha galeria. Infelizmente, eles não se dão muito bem com Flash. Eu não gosto de Flash mesmo. =)</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer</a></p>
<p>Por irônia do destino, esta extensão está em último, mas como dizem que quem ri por último, ri melhor&#8230; poisé. Minha vida não seria a mesma sem essa extensão. hahuhuhuhua. Ela adiciona uma barra de ferramentas ao Firefox com diversas funcionalidades (muitas mesmo). Então, só vou listar algumas: desabilitar java, javascript, bloqueador de pop-ups, cache, redirecionamentos, CSS e imagens,  limpar cookies e visualizá-los, escolher Media Type do CSS que será carregado, exibir borda, IDs e diversas outras informações nos elementos da página e redimensionar a janela do Firefox para certas resoluções.</p>
<p>É isso pessoal, espero que esse artigo lhes seja útil e quem tiver outras sugestões é só comentar. Agora com as férias (nem tão férias assim) chegando, acho que terei mais tempo de escrever. Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/as-melhores-extensoes-do-firefox-para-desenvolvedores-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Excluídos do Google Analytics</title>
		<link>http://www.rodrigoaguas.com/blog/excluidos-do-google-analytics/</link>
		<comments>http://www.rodrigoaguas.com/blog/excluidos-do-google-analytics/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 19:36:44 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/excluidos-do-google-analytics/</guid>
		<description><![CDATA[Há tempos atrás, eu e um amigo estavamos voltando da faculdade e ele me perguntou com ar irônico: &#8220;Por que o Google Analytics não diz se os usuários tinham Javascript habilitado?&#8221;. Sem pensar muito, respondi que não sabia e ele riu. Explicando: o Google Analytics usa o Javascript para ser invocado, não é possível um [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2007/10/untitled-2.jpg" alt="untitled-2.jpg" align="right" />Há tempos atrás, eu e <a href="http://www.lgfranco.eti.br/">um amigo</a> estavamos voltando da faculdade e ele me perguntou com ar irônico: &#8220;Por que o Google Analytics não diz se os usuários tinham Javascript habilitado?&#8221;. Sem pensar muito, respondi que não sabia e ele riu. Explicando: o Google Analytics usa o Javascript para ser invocado, não é possível um visitante ser &#8220;detectado&#8221; por ele sem ter o Javascript habilitado. Depois me pareceu óbvio, mas nunca havia pensado nisso.</p>
<p>Falando um pouco sobre o <a href="http://www.google.com/analytics/pt-BR/">Google Analytics</a> para os que não conhecem. Ele é um serviço gratuito oferecido, obviamente, pela Google que permite ter diversas informações e relatórios sobre os visitantes do seu site. Essas informações incluem desde a quantidade de visitas diárias até a resolução de tela ou qual versão do Java (Java mesmo, não Javascript! hehe) estava instalado na máquina dos seus leitores. Para a grande maioria acredito até que tanta informação seja inútil, pois muitos daqueles dados não influenciarão em nada no dia-a-dia do site.</p>
<p>Mas voltando ao javascript e Google Analytics, pensei em mais consequências dessa &#8220;exclusão virtual&#8221; e identifiquei algumas. Se o Analytics precisa do Javascript, é fácil perceber que qualquer acesso a conteúdos estáticos no seu servidor não estará nas estatísticas. Tudo bem, não faz sentido querer saber quantas pessoas acessaram o arquivo de CSS de um site, mas se o site disponibiliza arquivos para download, há muito interesse em saber quantas pessoas estão baixando tais arquivos. Outro problema que eu percebi seria nos acessos aos feeds RSS do site que, cada vez mais populares, não seriam contabilizados pois são arquivos xml.</p>
<p>Não imagino nenhuma solução que resolva o problema continuando a usar o Google Analytics, só pensei em soluções alternativas usando <a href="http://en.wikipedia.org/wiki/MIME#Content-Type">Content-Type</a> e um sistema próprio para coletar os dados e criar as estatísticas. Mas deixarei esse assunto para um artigo futuro.</p>
<p>Será que é possível resolver o problema usando ainda o Google Analytics? Se você tiver alguma idéia, compartilhe nos comentários. Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/excluidos-do-google-analytics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando relacionamentos no MySQL</title>
		<link>http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/</link>
		<comments>http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 06:04:19 +0000</pubDate>
		<dc:creator>Rodrigo Aguas</dc:creator>
				<category><![CDATA[BD]]></category>

		<guid isPermaLink="false">http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/</guid>
		<description><![CDATA[A janela de erro &#8220;MySQL error number 1005&#8243; fez eu perder a paciência um dia desses à noite enquanto tentava criar os relacionamentos em um banco de dados MySQL. Hoje, com mais calma, saí à procura da solução para o meu problema.
O problema era que eu estava criando um relacionamento com o mesmo nome dado [...]]]></description>
			<content:encoded><![CDATA[<p>A janela de erro &#8220;MySQL error number 1005&#8243; fez eu perder a paciência um dia desses à noite enquanto tentava criar os relacionamentos em um banco de dados MySQL. Hoje, com mais calma, saí à procura da solução para o meu problema.</p>
<p>O problema era que eu estava criando um relacionamento com o mesmo nome dado a outro relacionamento já existente, o que não pode ocorrer. Então, entendi o motivo para o próprio MySQL Query Browser sugerir nomes para os relacionamentos utilizando os nomes das tabelas que ele associa.</p>
<p>Aos que não entenderam do que estou falando ou não utilizam relacionamentos no MySQL, sugiro que aprendam e passem a usar. Relacionamento basicamente é fazer referência em uma tabela a uma entrada de outra tabela. Isso é feito criando uma coluna (ou um conjunto de colunas) que armazenará valores que fazem referência ao índice (ou conjunto de índices) da outra tabela com o objetivo de manter a integridade dos dados no banco de dados. A essa(s) coluna(s) se dá o nome de Foreign Key (ou chave estrangeira).</p>
<p>Abaixo, vou dar um passo-a-passo de como criar relacionamentos entre tabelas num banco de dados MySQL utilizando o MySQL Query Browser.</p>
<p>Já tendo conectado o MySQL Query Browser ao seu banco, clique com o botão direito do mouse na tabela que você fará o relacionamento e depois em &#8220;Edit Table&#8221; (Passo 1).</p>
<p><a title="Passo-a-passo para criar relacionamentos - Tela 1" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela1.gif" target="_blank"></a></p>
<p style="text-align: center"><a title="Passo-a-passo para criar relacionamentos - Tela 1" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela1.gif" target="_blank"><img title="Passo-a-passo para criar relacionamentos - Tela 1" src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela1.thumbnail.gif" alt="Passo-a-passo para criar relacionamentos - Tela 1" hspace="5" vspace="5" /></a></p>
<p>Abrirá uma janela com diversas informações sobre a sua tabela, na parte inferior clique em &#8220;Foreign Keys&#8221; (Passo 2) e depois no sinal de adição (Passo 3). Então, digite o nome do relacionamento (lembre que apenas esse relacionamento poderá ter esse nome no banco de dados todo) e dê &#8220;OK&#8221; (Passo 4).</p>
<p><a title="Passo-a-passo como criar relacionamentos - Tela 2" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela2.gif" target="_blank"></a></p>
<p style="text-align: center"><a title="Passo-a-passo como criar relacionamentos - Tela 2" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela2.gif" target="_blank"><img title="Passo-a-passo como criar relacionamentos - Tela 2" src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela2.thumbnail.gif" alt="Passo-a-passo como criar relacionamentos - Tela 2" align="middle" /></a><a title="Passo-a-passo para criar relacionamentos - Tela 3" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela3.gif" target="_blank"><img title="Passo-a-passo para criar relacionamentos - Tela 3" src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela3.thumbnail.gif" alt="Passo-a-passo para criar relacionamentos - Tela 3" hspace="5" vspace="5" align="middle" /></a></p>
<p>Preencha &#8220;Ref. Table&#8221; com o nome da tabela de origem do índice (Passo 5). Na tabela onde tem &#8220;Column&#8221; e &#8220;Reference Column&#8221; dê um duplo-clique em cada célula de uma mesma linha e escreva o nome da coluna na tabela atual onde ficará armazenado o índice e o nome da coluna onde esse índice faz referência na outra tabela (Passo 6). Calma! Falta pouco, a melhor parte&#8230;</p>
<p><a title="Passo-a-passo para criar relacionamentos - Tela 4" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela4.gif" target="_blank"></a></p>
<p style="text-align: center"><a title="Passo-a-passo para criar relacionamentos - Tela 4" href="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela4.gif" target="_blank"><img src="http://www.rodrigoaguas.com/blog/wp-content/uploads/2008/01/tela4.thumbnail.gif" alt="Passo-a-passo para criar relacionamentos - Tela 4" /></a></p>
<p>Falta preencher os campos &#8220;On delete&#8221;  e &#8220;On update&#8221; (Passo 7). Os valores desses campos quem vai ter que saber é você, baseado nas regras de negócio e na implementação do sistema. Esses campos servem para indicar ao banco de dados qual atitude  tomar caso a entrada referenciada seja deletada ou atualizada, o que ocasionaria a quebra de integridade das informações do banco de dados. Para cada um desses campos o MySQL pode tomar 4 atitudes: cascade, restrict, no action ou set null.</p>
<p>Como o nome já diz, o CASCADE toma atitudes em cascata. Ou seja, se o item referenciado foi apagado, ele apaga também o item que fazia a referencia. Muito útil para casos em que a existência de um está essencialmente ligada à existência do outro.</p>
<p>Já o RESTRICT pode ser visto como o oposto do cascade, enquanto houver referencias à entrada que você deseja apagar, ela não poderá ser apagada. Você tem que acabar com todos os relacionamentos à ela para poder apagar o item referenciado.</p>
<p>Se você não usa relacionamentos, na hora em que apaga uma entrada, nada acontece a nenhuma outra que poderia ter referencia àquela, sem alterar nada no restante do banco de dados. É exatamente isso que o NO ACTION faz. Se um item referenciado é apagado ou atualizado, nada acontece além disso.</p>
<p>Em determinados casos não é interessante nem apagar os items que fazem referencia, nem impedir a exclusão e nem deixar que o banco de dados perca a integridade. Essa hora você pode usar o SET NULL, com ele quando o relacionamento for perdido, o valor de referencia é atualizado para null, fazendo com que você possa identificar tais casos e tratá-los.</p>
<p>Gostei muito quando aprendi a usar relacionamentos no MySQL, então tentei passar a diante. Abraços!</p>
<p>(Editado em 08/01/2008 &#8211; Acrescentado imagens)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigoaguas.com/blog/criando-relacionamentos-no-mysql/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
