<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Danilow&#039;s PHPSpace</title>
	<atom:link href="http://danilow.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://danilow.wordpress.com</link>
	<description>Compartilhando soluções Web com o mundo externo</description>
	<lastBuildDate>Tue, 15 Dec 2009 12:42:05 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='danilow.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/52ed065036624128c6686aacfc86a472?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Danilow&#039;s PHPSpace</title>
		<link>http://danilow.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://danilow.wordpress.com/osd.xml" title="Danilow&#039;s PHPSpace" />
		<item>
		<title>Google Suggest: Não é Ajax</title>
		<link>http://danilow.wordpress.com/2009/05/28/google-suggest-nao-e-ajax/</link>
		<comments>http://danilow.wordpress.com/2009/05/28/google-suggest-nao-e-ajax/#comments</comments>
		<pubDate>Thu, 28 May 2009 14:57:24 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[assincrona]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[requisicao]]></category>
		<category><![CDATA[script dinamico]]></category>
		<category><![CDATA[script externo]]></category>
		<category><![CDATA[suggest]]></category>
		<category><![CDATA[xmlhttprequest]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=116</guid>
		<description><![CDATA[Como assim? Mas eu digito uma letra e aparece uma janelinha me dando sugestões em tempo de digitação!
Pois é, o Google Suggest utiliza sim requisições assíncronas mas não podemos chamar de Ajax.
O famoso Ajax ficou conhecido devido ao uso do objeto XMLHttpRequest e o nosso amigo Google não utiliza este objeto para fazer suas requisições [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=116&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Como assim? Mas eu digito uma letra e aparece uma janelinha me dando sugestões em tempo de digitação!<br />
Pois é, o Google Suggest utiliza sim requisições assíncronas mas não podemos chamar de Ajax.<br />
O famoso Ajax ficou conhecido devido ao uso do objeto XMLHttpRequest e o nosso amigo Google não utiliza este objeto para fazer suas requisições assíncronas, ele utiliza simplesmente o fato de chamar scripts externos.</p>
<p>Essa é uma técnica antiga muito utilizada quando o XMLHttpRequest não era tão famoso, o pessoal já se virava com seus scripts dinâmicos e iframes.</p>
<p><strong>Como funciona internamente o Google Suggest?</strong></p>
<p>Na primeira letra digitada ele faz a criação dinâmica de uma tag &lt;script&gt; já setando seu atributo <strong>src</strong> para <em><strong>http://clients1.google.com.br/complete/search?hl=pt-BR&amp;q=</strong></em> sendo que o parâmetro <strong>q</strong> equivale ao valor do campo de busca.</p>
<p>Então por exemplo, vou buscar sobre &#8220;futebol&#8221;, assim que digito a letra &#8220;f&#8221;, ele faz todo esse processo apontando para <em><strong>http://clients1.google.com.br/complete/search?hl=pt-BR&amp;q=f</strong></em><strong> </strong></p>
<p>Na segunda letra digitada, visto que a tag &lt;script&gt; já foi criada anteriormente ele simplesmente muda o atributo src agora apontando para a nova url <em>h</em><em><strong>ttp://clients1.google.com.br/complete/search?hl=pt-BR&amp;q=fu</strong></em></p>
<p><strong>Mas como através dessa requisição aparece a lista de sugestões ?</strong></p>
<p>A resposta dessa requisição é simplesmente texto puro, mas por ser chamada na tag &lt;script&gt; ela acaba sendo reconhecida como JavaScript e sendo executada por quem a chamou, em nosso caso a página inicial do Google.<br />
O retorno da requisição é simplesmente isso (Um exemplo para a busca da palavra <strong>fut</strong>):</p>
<pre>window.google.ac.h(["fut",[["futebol ao vivo","5.880.000 resultados","0"],
["futebol","39.800.000 resultados","1"]</pre>
<p>Somente essa linha de código é responsável por popular a lista de sugestões.</p>
<p>Segue abaixo uma screenshot no momento da &#8220;popularização&#8221; de dados:</p>
<p><a href="http://www.akamine.com.br/blog/estrutura_suggest.gif" target="_blank"><img class="size-full wp-image-147 alignnone" title="Google Suggest internamente" src="http://danilow.files.wordpress.com/2009/05/estrutura_suggest3.gif?w=450&#038;h=120" alt="Google Suggest internamente" width="450" height="120" /></a></p>
<p><a href="http://www.akamine.com.br/blog/estrutura_suggest.gif" target="_blank"> </a></p>
<p><strong>Por que a Google não utilizou o XMLHttpRequest? Isso foi uma boa solução?</strong></p>
<p>Não é interessante para o Google Suggest controlar o retorno da requisição, saber readyState, status, nada disso é interessante visto que uma requisição é feita a cada letra digitada, então cada requisição sobrescreve a outra.</p>
<p>Não estamos preocupados se a requisição foi feita corretamente, ele simplesmente faz a requisição e se concluir OK, se não der tempo de completar (Isso é bem provável pois se outra letra foi digitada uma nova requisição foi feita), então ele esquece a chamada anterior e vai para a próxima, assim até o usuário &#8220;descansar&#8221; o dedo e dar tempo para a requisição ser concluída, logo depois a conclusão será mostrado para o usuário os resultados de sua busca.</p>
<p>Outro ponto interessante é a compatibilidade entre browsers. Navegadores muito antigos não têm suporte a XMLHttpRequest e atuais como o IE podem desabilitar essa opção, então na minha opinião foi uma ótima sacada sendo que é garantido que rodará em praticamente qualquer navegador.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=116&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2009/05/28/google-suggest-nao-e-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>

		<media:content url="http://danilow.files.wordpress.com/2009/05/estrutura_suggest3.gif" medium="image">
			<media:title type="html">Google Suggest internamente</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax: Classe para múltiplas requisições assíncronas</title>
		<link>http://danilow.wordpress.com/2009/05/26/ajax-classe-para-multiplas-requisicoes-assincronas/</link>
		<comments>http://danilow.wordpress.com/2009/05/26/ajax-classe-para-multiplas-requisicoes-assincronas/#comments</comments>
		<pubDate>Tue, 26 May 2009 15:23:47 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[dopost]]></category>
		<category><![CDATA[fifo]]></category>
		<category><![CDATA[fila]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[requisição assincrona]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=110</guid>
		<description><![CDATA[Ainda vejo muitos desenvolvedores tentando fazer duas requisições Ajax ao mesmo tempo e sofrendo muito com os problemas que isso pode causar. Lembrando que ao fazer a segunda requisição (junto com a primeira) você está simplesmente anulando a anterior. Outra opção é a criação de diversas instâncias de XMLHttpRequest, mas também não é viável devido [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=110&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ainda vejo muitos desenvolvedores tentando fazer duas requisições Ajax ao mesmo tempo e sofrendo muito com os problemas que isso pode causar. Lembrando que ao fazer a segunda requisição (junto com a primeira) você está simplesmente anulando a anterior. Outra opção é a criação de diversas instâncias de XMLHttpRequest, mas também não é viável devido a incompatibilidade e sobrecarregamento do browser.</p>
<p>Recentemente desenvolvi uma classe Ajax que suporta múltiplas requisições utilizando o conceito de fila e venho aqui compartilhar com vocês.<br />
É uma classe simples responsável por encapsular toda a complexidade do Ajax (não que Ajax seja difícil, pelo contrário Ajax é muito fácil desde que seja utilizado corretamente).<br />
Utilizando o padrão Singleton (lembrando que esse padrão não é 100% seguro em JavaScript) criamos uma única instância do objeto XMLHttpRequest para ser usado em todas as requisições.</p>
<p>Código de classe:<br />
<a href="http://www.akamine.com.br/blog/Ajax.class.js" target="_blank">Clique aqui para ver</a></p>
<p>Modo de usar:</p>
<p><span style="color:#008080;"> 1</span> <span style="color:#000000;">Ajax.doPost(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">teste.php</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">, &#8220;param=1&amp;param=2&#8243;, </span><span style="color:#0000FF;">function</span><span style="color:#000000;">()<br />
</span><span style="color:#008080;"> 2</span> <span style="color:#000000;"> {<br />
</span><span style="color:#008080;"> 3</span>     <span style="color:#0000FF;">if</span><span style="color:#000000;"> (Ajax.getInstance().readyState </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#000000;">4</span><span style="color:#000000;">)<br />
</span><span style="color:#008080;"> 4</span>     <span style="color:#000000;">{<br />
</span><span style="color:#008080;"> 5</span>         <span style="color:#0000FF;">if</span><span style="color:#000000;"> (Ajax.getInstance().status </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#000000;">200</span><span style="color:#000000;">)<br />
</span><span style="color:#008080;"> 6</span>         <span style="color:#000000;">{<br />
</span><span style="color:#008080;"> 7</span>             <span style="color:#000000;">alert(Ajax.getInstance().responseText);<br />
</span><span style="color:#008080;"> 8</span>          <span style="color:#000000;">}<br />
</span><span style="color:#008080;"> 9</span>          <span style="color:#000000;">Ajax.next();<br />
</span><span style="color:#008080;">10    </span><span style="color:#000000;">}<br />
</span><span style="color:#008080;">11</span> <span style="color:#000000;"> });</span></p>
<p>Código de exemplo:<br />
<a href="http://www.akamine.com.br/blog/exemplo_ajax.html" target="_blank">Clique aqui para ver</a></p>
<p>Basta chamar o método Ajax.doPost() para executar uma nova requisição sem se importar se a requisição anterior foi concluída ou não, pois o próximo doPost() somente será executado se a requisição anterior foi concluída.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=110&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2009/05/26/ajax-classe-para-multiplas-requisicoes-assincronas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL: Inserindo registro e recuperando ID gerado</title>
		<link>http://danilow.wordpress.com/2009/04/07/inserindo-registro-recuperando-id/</link>
		<comments>http://danilow.wordpress.com/2009/04/07/inserindo-registro-recuperando-id/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 05:22:44 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[auto_increment]]></category>
		<category><![CDATA[chave primaria]]></category>
		<category><![CDATA[last_insert_id]]></category>
		<category><![CDATA[primary key]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=81</guid>
		<description><![CDATA[Um dos grandes problemas que costumo ver no MySQL é o seguinte: &#8220;Quero inserir um registro em uma tabela, recuperar o ID que foi gerado pelo AUTO_INCREMENT e inserir registros em outras tabelas.&#8221;
Vejo por aí muitas soluções,  algumas interessantes e outras grandes gambiarras.
Esqueça MAX() +1 , ORDER BY chave DESC LIMIT 1, SHOW TABLE STATUS, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=81&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Um dos grandes problemas que costumo ver no MySQL é o seguinte: <em>&#8220;Quero inserir um registro em uma tabela, recuperar o ID que foi gerado pelo AUTO_INCREMENT e inserir registros em outras tabelas.&#8221;</em><br />
Vejo por aí muitas soluções,  algumas interessantes e outras grandes gambiarras.<br />
Esqueça MAX() +1 , ORDER BY chave DESC LIMIT 1, SHOW TABLE STATUS, entre outros&#8230;</p>
<p>Segue abaixo uma das melhores formas para se fazer isso:</p>
<div><span style="color:#008080;">1</span> <span style="color:#0000FF;">INSERT</span><span style="color:#000000;"> </span><span style="color:#0000FF;">INTO</span><span style="color:#000000;"> tabela (chave_primaria, coluna1, coluna2) </span><span style="color:#0000FF;">VALUES</span><span style="color:#000000;"> (</span><span style="color:#0000FF;">null</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">aaa</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">bbb</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">2</span> <span style="color:#000000;"></span><span style="color:#0000FF;">SELECT</span><span style="color:#000000;">  LAST_INSERT_ID() </span><span style="color:#0000FF;">INTO</span><span style="color:#000000;"> </span><span style="color:#008000;">@ID</span><span style="color:#000000;">;<br />
</span><span style="color:#008080;">3</span> <span style="color:#000000;"></span><span style="color:#0000FF;">INSERT</span><span style="color:#000000;"> </span><span style="color:#0000FF;">INTO</span><span style="color:#000000;"> outratabela (chave_estrangeira, coluna3, coluna4) </span><span style="color:#0000FF;">VALUES</span><span style="color:#000000;"> (</span><span style="color:#008000;">@id</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">xxx</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">yyy</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">4</span> <span style="color:#000000;"></span><span style="color:#0000FF;">INSERT</span><span style="color:#000000;"> </span><span style="color:#0000FF;">INTO</span><span style="color:#000000;"> outratabela (chave_estrangeira, coluna3, coluna4) </span><span style="color:#0000FF;">VALUES</span><span style="color:#000000;"> (</span><span style="color:#008000;">@id</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">www</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">zzz</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">5</span> <span style="color:#000000;"></span><span style="color:#0000FF;">INSERT</span><span style="color:#000000;"> </span><span style="color:#0000FF;">INTO</span><span style="color:#000000;"> outratabela (chave_estrangeira, coluna3, coluna4) </span><span style="color:#0000FF;">VALUES</span><span style="color:#000000;"> (</span><span style="color:#008000;">@id</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">uuu</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">, </span><span style="color:#FF0000;">&#8216;</span><span style="color:#FF0000;">iiii</span><span style="color:#FF0000;">&#8216;</span><span style="color:#000000;">);  </span></div>
<p>Desta forma você tem 100% de eficiência na recuperação do ID, não tendo problemas em capturar um ID recém-inserido por outro usuário. Com LAST_INSERT_ID() você estará recuperando sempre o último ID gerado pela sua sessão.</p>
<p>Se você estiver usando INNODB engine, ainda pode trabalhar com transações adicionando os comandos START TRANSACTION e COMMIT para ter total integridade dos dados.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=81&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2009/04/07/inserindo-registro-recuperando-id/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>Java: Email autenticado com Log4J</title>
		<link>http://danilow.wordpress.com/2009/04/03/email-autenticado-com-log4j/</link>
		<comments>http://danilow.wordpress.com/2009/04/03/email-autenticado-com-log4j/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 16:25:40 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[autenticacao]]></category>
		<category><![CDATA[email autenticado]]></category>
		<category><![CDATA[envio autenticado]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[SMTPAppender]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=73</guid>
		<description><![CDATA[O Log4J
Com a famosa biblioteca Log4J é possível gerar diversos níveis de erro que vão desde simples informações de debug até erros de nível crítico. É possível também indicar como esses erros serão apresentados, você tem a opção de mostrá-los no console, armazená-los em arquivos ou até mesmo serem enviados por email.
Em alguns casos essa [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=73&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>O Log4J</strong></p>
<p>Com a famosa biblioteca Log4J é possível gerar diversos níveis de erro que vão desde simples informações de debug até erros de nível crítico. É possível também indicar como esses erros serão apresentados, você tem a opção de mostrá-los no console, armazená-los em arquivos ou até mesmo serem enviados por email.</p>
<p>Em alguns casos essa opção de envio por email é muito importante, principalmente quando é usada para informar ao programador ou administrador do sistema os erros mais críticos que ocorrem ocasionalmente com o usuário final.</p>
<p><strong>O Problema</strong></p>
<p>A classe SMTPAppender que é responsável por enviar email no Log4J (apesar de usar internamente as classes da Mail API <em>javax.mail</em>) não dá suporte a envio de emails autenticados, sendo que a maioria dos servidores obriga você a enviar um email utilizando um username e senha existente.</p>
<p><strong>A Solução</strong></p>
<p>A solução é a boa prática da linguagem Orientada a Objeto, isto é, reuso de classes e aprimoramento.<br />
Criando uma nova classe herdada de  SMTPAppender você pode sobrescrever o método activeOptions() para então fornecer o suporte ao envio autenticado.</p>
<p>Segue abaixo um modelo criado por Chris Butler que encontrei em um fórum americano.</p>
<p><a href="http://www.akamine.com.br/blog/AuthSMTPAppender.java" target="_blank">Clique aqui e veja o código da classe</a></p>
<p>Seguindo este modelo é necessário incluir/alterar seu arquivo log4j.properties para as seguintes configurações:</p>
<blockquote><p><code>log4j.appender.email=org.apache.log4j.net.AuthSMTPAppender<br />
log4j.appender.email.SMTPHost=&lt;smtp.somedomain.com&gt;<br />
log4j.appender.email.user=&lt;your  username&gt;<br />
log4j.appender.email.password=&lt;your  password&gt;<br />
</code></p></blockquote>
<p>Lembrando que para quem utilizar configurações em xml (log4j.xml) os parâmetros a serem alterados e adicionados serão os mesmos, só fazendo a diferença que lá são escritos em tags, por exemplo:</p>
<blockquote><p><code>&lt;param name="user" value="danilo" /&gt;</code></p></blockquote>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=73&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2009/04/03/email-autenticado-com-log4j/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>HTML: Codificação diferente no envio de dados</title>
		<link>http://danilow.wordpress.com/2008/12/03/codificacao-diferente-no-envio-de-dados/</link>
		<comments>http://danilow.wordpress.com/2008/12/03/codificacao-diferente-no-envio-de-dados/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 14:34:05 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[accept-charset]]></category>
		<category><![CDATA[charset]]></category>
		<category><![CDATA[codificação]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=52</guid>
		<description><![CDATA[Você já precisou enviar dados em um formulário com codificação diferente da sua página?
Como assim? Inicialmente é meio confuso, mas às vezes acontece.
Por exemplo:
No documento principal que está localizado meu &#60;form&#62;, utilizo o conjunto de caracteres UTF-8 (definido na meta tag)
Na página que irá processar o formulário utilizo o conjunto de caracteres iso-8859-1.
Geralmente isso acontece [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=52&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Você já precisou enviar dados em um formulário com codificação diferente da sua página?<br />
Como assim? Inicialmente é meio confuso, mas às vezes acontece.<br />
Por exemplo:</p>
<p>No documento principal que está localizado meu &lt;form&gt;, utilizo o conjunto de caracteres UTF-8 (definido na meta tag)<br />
Na página que irá processar o formulário utilizo o conjunto de caracteres iso-8859-1.</p>
<p>Geralmente isso acontece quando você apenas tem o poder de enviar dados, sendo que a ação do formulário é processada por outro site/servidor.</p>
<p>O atributo <strong>accept-charset</strong> especifica uma lista de conjuntos de caracteres para a entrada de dados que serão aceitas pelo servidor neste formulário.</p>
<p>Então com isso, resolvemos nosso problema.<br />
Um pequeno exemplo:</p>
<p><strong>form.php</strong></p>
<div><span style="color:#008080;"> 1</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">html</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 2</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">head</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 3</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">meta </span><span style="color:#FF0000;">http-equiv</span><span style="color:#0000FF;">=&#8221;Content-Type&#8221;</span><span style="color:#FF0000;"> content</span><span style="color:#0000FF;">=&#8221;text/html; charset=UTF-8&#8243;</span><span style="color:#FF0000;"> </span><span style="color:#0000FF;">/&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 4</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">head</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 5</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;"> 6</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">body</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 7</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;"> 8</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">form </span><span style="color:#FF0000;">action</span><span style="color:#0000FF;">=&#8221;post.php&#8221;</span><span style="color:#FF0000;"> method</span><span style="color:#0000FF;">=&#8221;post&#8221;</span><span style="color:#FF0000;"> accept-charset</span><span style="color:#0000FF;">=&#8221;iso-8859-1&#8243;</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 9</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">input </span><span style="color:#FF0000;">type</span><span style="color:#0000FF;">=&#8221;text&#8221;</span><span style="color:#FF0000;"> name</span><span style="color:#0000FF;">=&#8221;nome&#8221;</span><span style="color:#FF0000;"> value</span><span style="color:#0000FF;">=&#8221;Avião faz vôo hoje às 9:30&#8243;</span><span style="color:#FF0000;"> </span><span style="color:#0000FF;">/&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">10</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">input </span><span style="color:#FF0000;">type</span><span style="color:#0000FF;">=&#8221;submit&#8221;</span><span style="color:#FF0000;"> value</span><span style="color:#0000FF;">=&#8221;Enviar&#8221;</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">11</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">form</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">12</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;">13</span> <span style="color:#000000;"> </span><span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">body</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;">14</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">html</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"> </span></div>
<p><strong>post.php</strong></p>
<div><span style="color:#008080;"> 1</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">html</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 2</span> <span style="color:#000000;"> </span><span style="color:#0000FF;">&lt;</span><span style="color:#800000;">head</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 3</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">meta </span><span style="color:#FF0000;">http-equiv</span><span style="color:#0000FF;">=&#8221;Content-Type&#8221;</span><span style="color:#FF0000;"> content</span><span style="color:#0000FF;">=&#8221;text/html; charset=iso-8859-1&#8243;</span><span style="color:#FF0000;"> </span><span style="color:#0000FF;">/&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 4</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">head</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 5</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;"> 6</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">body</span><span style="color:#0000FF;">&gt;</span><span style="color:#000000;"><br />
</span><span style="color:#008080;"> 7</span><span style="color:#000000;"></p>
<div><span style="color:#008080;">8</span>  <span style="color:red;">&lt;?</span><span style="color:#000000;">php<br />
</span><span style="color:#0000FF;"><span style="color:#008080;">9 </span></span><span style="color:#0000FF;">echo</span><span style="color:#000000;"> </span><span style="color:#800080;">$_POST</span><span style="color:#000000;">[</span><span style="color:#000000;">'</span><span style="color:#000000;">nome</span><span style="color:#000000;">'</span><span style="color:#000000;">];<br />
</span> <span style="color:#008080;">10 </span><span style="color:red;">?&gt;<br />
<span style="color:#000000;"><span style="color:#008080;">11<br />
<span style="color:#000000;"><span style="color:#008080;">12</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">body</span><span style="color:#0000FF;">&gt;<br />
<span style="color:#000000;"><span style="color:#008080;">13</span> <span style="color:#0000FF;">&lt;/</span><span style="color:#800000;">html</span><span style="color:#0000FF;">&gt;</span></span></span></span></span></span></span></div>
<p></span></div>
<p>Neste exemplo teremos como resposta o texto exatamente na mesma forma que foi escrito, sem nenhum erro de acentuação. Experimente remover o atributo <strong>accept-charse</strong><strong>t</strong> e veja o que acontece.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=52&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/12/03/codificacao-diferente-no-envio-de-dados/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>Permissão negada para definir a propriedade XULElement.selectedIndex no FireFox</title>
		<link>http://danilow.wordpress.com/2008/10/27/permissao-negada-para-definir-a-propriedade-xulelementselectedindex/</link>
		<comments>http://danilow.wordpress.com/2008/10/27/permissao-negada-para-definir-a-propriedade-xulelementselectedindex/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 14:50:58 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[setAttribute]]></category>
		<category><![CDATA[XULElement.selectedIndex]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=47</guid>
		<description><![CDATA[ou também conhecida como &#8220;&#8216;Permission denied to set property XULElement.selectedIndex&#8221;&#8230;
Alguém já sofreu com este problema? Eu já 
Esse erro do FireFox ocorre quando você tenta dar foco à um campo que possui auto-completar. Isso é muito estranho pois é um ato extremamente normal, essa &#8220;exceção&#8221; só ocorre em alguns campos e não pode ser capturada [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=47&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>ou também conhecida como &#8220;&#8216;Permission denied to set property XULElement.selectedIndex&#8221;&#8230;</p>
<p>Alguém já sofreu com este problema? Eu já <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Esse erro do FireFox ocorre quando você tenta dar foco à um campo que possui auto-completar. Isso é muito estranho pois é um ato extremamente normal, essa &#8220;exceção&#8221; só ocorre em alguns campos e não pode ser capturada via try/catch.</p>
<p>Pesquisando, percebi que realmente se tratava de um bug, ele já foi postado no fórum de bugs da mozilla e já deram como resolvido, estranho pois utilizo a última versão do FF e continuo com esse erro, será mesmo que foi corrigido?</p>
<p>Enfim, como sempre há soluções para contornar o erro&#8230; Basta desativar o autocompletar do browser ou do campo específico utilizando o atributo autocomplete=&#8221;off&#8221;. Exemplo:</p>
<div><span style="color:#008080;">1</span> <span style="color:#0000FF;">&lt;</span><span style="color:#800000;">input </span><span style="color:#FF0000;">type</span><span style="color:#0000FF;">=&#8221;text&#8221;</span><span style="color:#FF0000;"> name</span><span style="color:#0000FF;">=&#8221;campo&#8221;</span><span style="color:#FF0000;"> autocomplete</span><span style="color:#0000FF;">=&#8221;off&#8221;</span><span style="color:#FF0000;"> </span><span style="color:#0000FF;">/&gt;</span></div>
<p>Infelizmente essa propriedade não é validada pela W3C, então os desenvolvedores costumam setar essa propriedade através de JavaScript.</p>
<div><span style="color:#008080;">1</span> <span style="color:#000000;">objeto.setAttribute(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">autocomplete</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">, </span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">off</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">);</span></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=47&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/10/27/permissao-negada-para-definir-a-propriedade-xulelementselectedindex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>HTML: Imagem embutida</title>
		<link>http://danilow.wordpress.com/2008/10/21/imagem-embutida-no-html/</link>
		<comments>http://danilow.wordpress.com/2008/10/21/imagem-embutida-no-html/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 12:51:32 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[embutida]]></category>
		<category><![CDATA[encoded]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[imagem]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=34</guid>
		<description><![CDATA[No HTML é possível embutir imagens diretamente pelo código fonte, assim como o Outlook faz para os anexos (imagens) no corpo do email.
Isso não será uma requisição HTTP para o caminho da imagem e sim seu código binário codificado na base64, quer dizer que você pode inserir o código em qualquer página, sem precisar do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=34&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>No HTML é possível embutir imagens diretamente pelo código fonte, assim como o Outlook faz para os anexos (imagens) no corpo do email.<br />
Isso não será uma requisição HTTP para o caminho da imagem e sim seu código binário codificado na base64, quer dizer que você pode inserir o código em qualquer página, sem precisar do arquivo físico da imagem.<br />
Essa pode ser considerada uma técnica de otimização, pois a imagem é carregada diretamente com o código fonte HTML, sem requisições externas.</p>
<p>Mas como nem tudo é perfeito, possui algumas restrições: Alguns desenvolvedores não recomendam a utilização de imagens muito grandes para não afetar o desempenho, apesar de rodar perfeitamente. Outra restrição é não funcionar no Internet Explorer (versões 6, 7 até o momento).</p>
<p><span style="color:#ff0000;">[UPDATE]</span>O Internet Explorer 8 já suporta imagens embutidas<span style="color:#ff0000;">[/UPDATE]</span></p>
<p>&#8220;Sintaxe&#8221; do código: &lt;img src=&#8221;data:[mime-type];base64,[imagem-codificada]&#8220;&gt;<br />
É necessário inserir a palavra data, o mime-type da imagem, o tipo de codificação e o código binário da imagem codificado na base64. </p>
<p><a href="http://www.akamine.com.br/blog/imagem_embutida.html" target="_blank">Clique aqui e veja o exemplo do código</a></p>
<p>Caso queira abrir a imagem no Internet Explorer também, a primeira solução que pensei foi forçar o carregamento via JavaScript, isto é, carregar da forma normal (requisitando a URL da imagem). Como já estamos utilizando o atributo SRC, podemos substituir o SRC via JavaScript. O comentário condicional indica que o bloco abaixo só será executado em versões anteriores do Internet Explorer 8.</p>
<div><span style="color:#008080;">1</span> <span style="color:#008000;">&lt;!&#8211;[if lt IE 8]&gt;</span><span style="color:#008000;"><br />
</span><span style="color:#008080;">2</span> <span style="color:#008000;">&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
</span><span style="color:#008080;">3</span> <span style="color:#008000;">document.getElementById(&#8216;idImagem&#8217;).src = &#8216;pasta/imagem.jpg&#8217;;<br />
</span><span style="color:#008080;">4</span> <span style="color:#008000;">&lt;/script&gt;<br />
</span><span style="color:#008080;">5</span> <span style="color:#008000;">&lt;![endif]</span><span style="color:#008000;">&#8211;&gt;</span></div>
<p>Se alguém tiver uma solução melhor para o IE, por favor postar.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=34&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/10/21/imagem-embutida-no-html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP: Comparando arrays</title>
		<link>http://danilow.wordpress.com/2008/09/22/comparando-arrays/</link>
		<comments>http://danilow.wordpress.com/2008/09/22/comparando-arrays/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 04:58:22 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[comparacao]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=30</guid>
		<description><![CDATA[Você já tentou comparar dois arrays utilizando os operadores == ou === ?
Em alguns casos esta comparação pode ser útil.
O operador == retorna true caso os dois arrays sejam iguais, isto é deve conter o mesmo número de elementos com as mesmas chaves e valores. Sem importar a ordem de como eles foram atribuídos.
O operador [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=30&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Você já tentou comparar dois arrays utilizando os operadores == ou === ?<br />
Em alguns casos esta comparação pode ser útil.</p>
<p>O operador == retorna true caso os dois arrays sejam iguais, isto é deve conter o mesmo número de elementos com as mesmas chaves e valores. Sem importar a ordem de como eles foram atribuídos.</p>
<p>O operador === retorna true caso os dois arrays sejam iguais, isto é deve conter o mesmo número de elementos com as mesmas chaves e valores. Porém, desta vez a ordem de como eles foram atribuídos também devem ser iguais.</p>
<p>Por exemplo:</p>
<div><span style="color:#008080;">1</span> <span style="color:#800080;">$paises1</span><span style="color:#000000;"> </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">array</span><span style="color:#000000;">(</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">brasil</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">japao</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">italia</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">2</span> <span style="color:#000000;"></span><span style="color:#800080;">$paises2</span><span style="color:#000000;"> </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">array</span><span style="color:#000000;">(</span><span style="color:#000000;">0</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">brasil</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">1</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">japao</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">2</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">italia</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">3</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;">4</span> <span style="color:#000000;"></span><span style="color:#008080;">var_dump</span><span style="color:#000000;">(</span><span style="color:#800080;">$paises1</span><span style="color:#000000;"> </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#800080;">$paises2</span><span style="color:#000000;">);  </span><span style="color:#008000;">//</span><span style="color:#008000;"> retorna true</span></div>
<p>Como podem ver, ele retorna true pois todas as verificações foram atendidas (mesmo número de elementos, chaves iguais e valores iguais).</p>
<p>Agora para uma comparação mais exigente:</p>
<div>
<span style="color:#008080;">1</span> <span style="color:#800080;">$paises1</span><span style="color:#000000;"> </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">array</span><span style="color:#000000;">(</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">brasil</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">japao</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">italia</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">2</span> <span style="color:#000000;"></span><span style="color:#800080;">$paises2</span><span style="color:#000000;"> </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">array</span><span style="color:#000000;">(</span><span style="color:#000000;">1</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">japao</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">2</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">italia</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">,</span><span style="color:#000000;"> </span><span style="color:#000000;">0</span><span style="color:#000000;"> </span><span style="color:#000000;">=&gt;</span><span style="color:#000000;"> </span><span style="color:#000000;">&quot;</span><span style="color:#000000;">brasil</span><span style="color:#000000;">&quot;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">3</span> <span style="color:#000000;"><br />
</span><span style="color:#008080;">4</span> <span style="color:#000000;"></span><span style="color:#008080;">var_dump</span><span style="color:#000000;">(</span><span style="color:#800080;">$paises1</span><span style="color:#000000;"> </span><span style="color:#000000;">===</span><span style="color:#000000;"> </span><span style="color:#800080;">$paises2</span><span style="color:#000000;">); </span><span style="color:#008000;">//</span><span style="color:#008000;"> retorna false</span></div>
<p>Já neste caso iria retornar false, mesmo o array sendo igual sua ordem não foi definida da mesma forma.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=30&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/09/22/comparando-arrays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP: session_start() no FPDF</title>
		<link>http://danilow.wordpress.com/2008/07/25/sessao-no-fpdf/</link>
		<comments>http://danilow.wordpress.com/2008/07/25/sessao-no-fpdf/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 13:09:45 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[sessão]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[session_cahe_limiter]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=28</guid>
		<description><![CDATA[Sempre tive problemas com sessão na hora de gerar arquivos com a classe FPDF.
Era só colocar o session_start() no ínicio do arquivo que o Internet Explorer não abria mais o PDF, já no Firefox funcionava perfeitamente.
Achando a situação muito estranha, fui tentar achar a solução e como sempre os fóruns americanos me salvaram.
Basta colocar o seguinte [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=28&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sempre tive problemas com sessão na hora de gerar arquivos com a classe FPDF.<br />
Era só colocar o session_start() no ínicio do arquivo que o Internet Explorer não abria mais o PDF, já no Firefox funcionava perfeitamente.<br />
Achando a situação muito estranha, fui tentar achar a solução e como sempre os fóruns americanos me salvaram.</p>
<p>Basta colocar o seguinte comando antes da função session_start(), assim ficando:</p>
<div><span style="color:#008080;">1</span> <span style="color:#008080;">session_cache_limiter</span><span style="color:#000000;">(</span><span style="color:#000000;">&#8216;</span><span style="color:#000000;">private</span><span style="color:#000000;">&#8216;</span><span style="color:#000000;">);<br />
</span><span style="color:#008080;">2</span> <span style="color:#000000;"></span><span style="color:#008080;">session_start</span><span style="color:#000000;">();</span></div>
<p>Pronto! Agora o Internet Explorer abrirá o PDF normalmente e entederá todas as variáveis de sessão ($_SESSION) normalmente.</p>
<p><span style="color:#ff0000;">[UPDATE]</span></p>
<p><span style="color:#000000;">Lembrando que isso forçará o cache do PDF, caso você não queira deixar o documento no cache é necessário fazer uma chamada diferente da anterior, por exemplo passando um parâmetro dinâmico e único (gerando um número aleatório ou chamando o timestamp são boas soluções).</span></p>
<p>Exemplo:</p>
<p>document.pdf?token=859859454 <br />
document.pdf?token=238142340<br />
document.pdf?token=132984294 </p>
<p><span style="color:#ff0000;">[/UPDATE]</span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/danilow.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/danilow.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=28&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/07/25/sessao-no-fpdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
		<item>
		<title>Validação de CPF</title>
		<link>http://danilow.wordpress.com/2008/07/02/validacao-cpf-2/</link>
		<comments>http://danilow.wordpress.com/2008/07/02/validacao-cpf-2/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 16:16:44 +0000</pubDate>
		<dc:creator>Danilo Akamine</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[cpf]]></category>
		<category><![CDATA[formulario]]></category>
		<category><![CDATA[validacao]]></category>

		<guid isPermaLink="false">http://danilow.wordpress.com/?p=22</guid>
		<description><![CDATA[Eu tenho dó desta pessoa, GLEDE BERNACCI GOLLUSCIO.
Muito provavelmente esta pessoa não consegue se cadastrar na maioria dos sites que exigem CPF, mas por que?
Ele é dono do CPF 111.111.111-11
Muitos sites utilizam uma validação de CPF que restringe essas sequências de números (11111111111, 22222222222, 33333333333, etc) e muita gente não sabe que essas combinações são [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=22&subd=danilow&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Eu tenho dó desta pessoa, GLEDE BERNACCI GOLLUSCIO.<br />
Muito provavelmente esta pessoa não consegue se cadastrar na maioria dos sites que exigem CPF, mas por que?<br />
Ele é dono do CPF 111.111.111-11<br />
Muitos sites utilizam uma validação de CPF que restringe essas sequências de números (11111111111, 22222222222, 33333333333, etc) e muita gente não sabe que essas combinações são válidas no algoritmo do CPF.<br />
Mas claro que nem todos estes números ainda têm um dono, porém são válidos.</p>
<p>Alguns outros casos:</p>
<p>Nº do CPF: 444.444.444-44<br />
Nome da Pessoa Física: MARIA FERRO PERON</p>
<p>No do CPF: 888.888.888-88<br />
Nome da Pessoa Física: SEBASTIAO LUIZ BATISTA</p>
<p>Então, tome cuidado ao validar CPF&#8217;s em formulários, você pode estar barrando algumas pessoas sem saber.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/danilow.wordpress.com/22/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/danilow.wordpress.com/22/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danilow.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danilow.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/danilow.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/danilow.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/danilow.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/danilow.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/danilow.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/danilow.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/danilow.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/danilow.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=danilow.wordpress.com&blog=3914490&post=22&subd=danilow&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://danilow.wordpress.com/2008/07/02/validacao-cpf-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b286497dd9682447333784f5082bce1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danilow</media:title>
		</media:content>
	</item>
	</channel>
</rss>