<?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>TATTODECASTRO.com</title>
	<atom:link href="http://www.tattodecastro.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tattodecastro.com</link>
	<description>stay hungry, stay foolish..</description>
	<lastBuildDate>Wed, 01 Sep 2010 23:06:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Order a table by grouped columns</title>
		<link>http://www.tattodecastro.com/2010/09/01/mysql-order-a-table-by-grouped-columns/</link>
		<comments>http://www.tattodecastro.com/2010/09/01/mysql-order-a-table-by-grouped-columns/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 22:53:35 +0000</pubDate>
		<dc:creator>Tatto</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[colunas agrupadas]]></category>
		<category><![CDATA[grouped columns]]></category>
		<category><![CDATA[multiple columns]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[order by]]></category>

		<guid isPermaLink="false">http://www.tattodecastro.com/?p=33</guid>
		<description><![CDATA[Para os exemplos abaixo criamos uma tabela pessoas e inserimos os registros abaixo. O código SQL para criar a tabela e inserir os registros seguem abaixo: # criando a tabela pessoas create table pessoas ( id bigint(20) unsigned not null auto_increment, str_nome varchar(50) not null, int_altura int(5) not null, flo_peso float not null, int_felicidade int(1) [...]]]></description>
			<content:encoded><![CDATA[<p>Para os exemplos abaixo criamos uma tabela pessoas e inserimos os  registros abaixo. O código SQL para criar a tabela e inserir os  registros seguem abaixo:</p>
<pre class="brush: sql;">
# criando a tabela pessoas
create table pessoas (
 id bigint(20) unsigned not null auto_increment,
 str_nome varchar(50) not null,
 int_altura int(5) not null,
 flo_peso float not null,
 int_felicidade int(1) not null,
 primary key (id)
);
# inserindo os registros
insert into pessoas values ( '1','Thiago','184','85.2','9');
insert into pessoas values ( '2','Matheus','175','90','8');
insert into pessoas values ( '3','Guilherme','188','78','6');
insert into pessoas values ( '4','Rafael','177','92','5');
</pre>
<p>Todos sabem que é possível ordenar uma consulta de banco de dados MySQL por multiplas colunas utilizando uma por vez:</p>
<pre class="brush: sql;">
select
 *
from
 pessoas
order by
 int_altura desc # primeiro ordenamos pela altura
 ,flo_peso desc # quando a altura for igual ordenamos pelo peso
;
</pre>
<p>O que acontece de fato, é que o primeiro valor é o utilizado para a  ordenação, em caso de empate na ordeção a segunda coluna é utilizada e  assim por diante. Mas e quando a necessidade é que as duas ou mais  colunas tenham o mesmo peso e sejam levadas em consideração ao mesmo  tempo? Para resolver esta demanda criei uma pequena função em MySQL que  pode ajudar nesta tarefa.</p>
<pre class="brush: sql;">
# Criando a funcao
# autor: Tatto &lt;mysql&gt;&lt;tattodecastro.com&gt;
delimiter $$ ;

drop function if exists fn_ordena_multiplos_campos $$

create function fn_ordena_multiplos_campos(
 fn_in_int_altura int( 5 )
 ,fn_in_flo_peso float
 ,fn_in_int_felicidade int( 1 )
) returns float
 deterministic
begin

 # Tratamento para a primeira interação, onde salvamos os valores iniciais para as comparações futuras.
 if isnull(@temporary_variable_altura_sdsdfe3) = true
 then
 set @temporary_variable_altura_sdsdfe3     = fn_in_int_altura;
 set @temporary_variable_peso_sdsdfe3       = fn_in_flo_peso;
 set @temporary_variable_felicidade_sdsdfe3 = fn_in_int_felicidade;
 return 1;
 else
 # Todos os retornos subsequentes são relativos ao primeiro.
 return (
 fn_in_int_altura/@temporary_variable_altura_sdsdfe3
 + fn_in_flo_peso/@temporary_variable_peso_sdsdfe3
 + fn_in_int_felicidade/@temporary_variable_felicidade_sdsdfe3
 )/3;
 end if;

end $$

delimiter ; $$

select
 *
from
 pessoas
order by
 # Ordenando pela função criada.
 fn_ordena_multiplos_campos(int_altura, flo_peso, int_felicidade) desc
;
</pre>
<p>Outras soluções como a criação de uma nova coluna que tenha os  valores das colunas com as determinadas valências podem ser um solução.  Só que para garantir a consistência dos dados a criação de um trigger ou  outro componente de banco teria que ser feito. Uma terceira solução  seria utilizar três vezes a consulta na mesma tabela criando uma coluna  de valência. Só que a utilização da função demonstrou uma melhor  performance.</p>
<p>Qualquer dúvida, entre em contato.<br />
Um abraço, Tatto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tattodecastro.com/2010/09/01/mysql-order-a-table-by-grouped-columns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HSQL e PHP</title>
		<link>http://www.tattodecastro.com/2008/02/29/hsql-e-php/</link>
		<comments>http://www.tattodecastro.com/2008/02/29/hsql-e-php/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 03:24:45 +0000</pubDate>
		<dc:creator>Tatto</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[hsql]]></category>

		<guid isPermaLink="false">http://www.tattodecastro.com/2008/02/29/hsql-e-php/</guid>
		<description><![CDATA[Estes dias me deparei com um problema, precisava fazer somas de colunas de valores expressos em notação monetária brasileira (em real) a partir de uma tabela em hsql. hsql ou hsqldb é um banco de dados desenvolvido em Java, como ainda não o utilizei intensivamente não tenho uma visão muito clara dele. Mas ele parece [...]]]></description>
			<content:encoded><![CDATA[<p>Estes dias me deparei com um problema, precisava fazer somas de colunas de valores expressos em notação monetária brasileira (em real) a partir de uma tabela em <a title="hsqldb - 100% Java Database" href="http://hsqldb.org/" target="_blank">hsql</a>.</p>
<p><em>hsql</em> ou <em>hsqldb</em> é um banco de dados desenvolvido em Java<span style="text-decoration: line-through;">, como ainda não o utilizei intensivamente não tenho uma visão muito clara dele</span>. Mas ele parece ser bem versátil, funciona tanto no modo servidor através do protocolo HTTP, ou com um protocolo próprio, como também no modo embarcado (com menos de 100Kb). Dentre os softwares que estão o utilizando posso citar OpenOffice 2.0, JBoss e aqui no Brasil já encontrei um aplicativo da Receita Federal que também utiliza este <acronym title="Sistema Gerenciador de Banco de Dados">BD</acronym>.</p>
<p>Apesar de ter lido no <a title="freshmeat.net: Project details for hsqldb Database Engine" href="http://freshmeat.net/projects/hsqldb">freshmeat</a> que existia suporte de hsql para PHP, não o encontrei e única solução que me veio a cabeça foi usar a biblioteca <acronym title="Java Database Connectivity">JDBC</acronym> para acessar o banco no php através do suporte a Java no PHP.</p>
<p>Tentei usar a extensão Java com o PHP 5.2.5 no Windows Vista, segui um tutorial do site <a title="PHP and Java" href="http://www.onlamp.com/pub/a/php/2001/06/14/php_jav.html">ONLAMP.com</a>. Só que sempre que criava um objecto Java(), o PHP tinha um crash. Ao buscar por bugs relacionados a isso em <a href="http://bugs.php.net/">bugs.php.net</a> econtrei o <a title="#32215: Java Crash" href="http://bugs.php.net/bug.php?id=32215">#32215: Java Crash</a> onde o Andrey diz que a extensão Java do PHP não é mais mantida e recomenda o uso do <a title="PHP/Java Bridge" href="http://sourceforge.net/projects/php-java-bridge/">PHP/Java Bridge</a>.</p>
<p>Segui o conselho do Andrey, baixei a versão 5.1.2 do PHP/Java Bridge. No site deles a última versão que fazem referência é a 3.2.1 lançada em dezembro de 2006. Mas na área de downloads do projeto no <a href="http://sourceforge.net/project/showfiles.php?group_id=117793">SourceForge.net</a> você encontra versões mais atuais. Tentei usar um <a href="http://www.dsl.uow.edu.au/~sk33/php5java.htm">tutorial</a> disponível através do site deles para ambiente Windows, sem sucesso. Após algum tempo lendo e pensando em soluções consegui fazer um exemplo bem simples sem usar nenhuma extensão do PHP e que funciona com qualquer JRE (sem a necessidade do JDK).</p>
<pre class="brush: php;">
/**
* Modifications to allow the use of Java by PHP/Java Bridge
*/
require_once( &quot;Java.inc&quot; ); // Content of http://localhost:8080/JavaBridge/java/Java.inc or JavaBridge.jar/META-INF/java/Java.inc

/**
* Example used in PHP.net/Java
*/
// get instance of Java class java.lang.System in PHP
$system = new Java(&quot;java.lang.System&quot;);

// demonstrate property access
echo 'Java version=' . $system-&gt;getProperty('java.version') . '
';
echo 'Java vendor=' . $system-&gt;getProperty('java.vendor') . '
';
echo 'OS=' . $system-&gt;getProperty('os.name') . ' ' .
$system-&gt;getProperty('os.version') . ' on ' .
$system-&gt;getProperty('os.arch') . ' ';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
&quot;EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz&quot;);

echo $formatter-&gt;format( new Java( 'java.util.Date' ) );
</pre>
<p>O arquivo Java.inc se comunida com o serviço do JavaBridge, para iniciar você pode digitar o comando java -jar JavaBridge.jar SERVLET:8080 ou executar o start_javabridge.bat que esta disponível no <a title="Exemplo do PHP/Java Bridge" href="http://www.tattodecastro.com/wp-content/uploads/2008/02/phpjavabridge.zip">Exemplo do PHP/Java Bridge</a>.</p>
<p>Depois que o Java deixou de ser um problema o JDBC com o hsql foi tranquilo <img src='http://www.tattodecastro.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Já que o exemplo ficou muito grande com o JDBC resolvi deixar aqui o link para download: <a title="Exemplo do PHP com HSQL através de JDBC" href="http://www.tattodecastro.com/wp-content/uploads/2008/02/phphsqldb.zip">Exemplo do PHP com HSQL através de JDBC</a>. Vale lembrar que este exemplo é facilmente modificado para qualquer banco de dados que tenha suporte JDBC, só não se esqueça de mover o driver correspondente que no exemplo é o arquivo hsqldb.jar para a pasta de extensões da JRE.</p>
<p>Acho que isso é tudo. Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tattodecastro.com/2008/02/29/hsql-e-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Novo layout do blog</title>
		<link>http://www.tattodecastro.com/2007/12/10/novo-layout-do-blog/</link>
		<comments>http://www.tattodecastro.com/2007/12/10/novo-layout-do-blog/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 14:15:39 +0000</pubDate>
		<dc:creator>Tatto</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Off Topic]]></category>
		<category><![CDATA[WebStandarts]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.tattodecastro.com/2007/12/10/novo-layout-do-blog/</guid>
		<description><![CDATA[Passei uma parte do meu final de semana arrumando alguns detalhes deste layout para o WordPress. Não foi nenhum bicho de sete cabeças não. Toda documentação que eu precisei encontrei em http://codex.wordpress.org/. Nesse endereço você encontra de tudo, desde dicas de como instalar ou fazer o upgrade da sua versão do WordPress até a descrição [...]]]></description>
			<content:encoded><![CDATA[<p>Passei uma parte do meu final de semana arrumando alguns detalhes deste layout para o WordPress. Não foi nenhum bicho de sete cabeças não.</p>
<p>Toda documentação que eu precisei encontrei em <a href="http://codex.wordpress.org/" title="WordPress Codex">http://codex.wordpress.org/</a>. Nesse endereço você encontra de tudo, desde dicas de como instalar ou fazer o upgrade da sua versão do WordPress até a descrição de toda a API.</p>
<p>O layout ainda esta um pouco bugado, caso você encontre algo fora do lugar por favor me avise <img src='http://www.tattodecastro.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Segue o template <a href="http://www.tattodecastro.com/wp-content/uploads/2007/12/tattodecastro.zip" title="Download do tema TATTODECASTRO.com para o WordPress">TATTODECASTRO.com para o WordPress (Versão 0.1)</a>.</p>
<p>Em caso de dúvidas ou sugestões, entre em contato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tattodecastro.com/2007/12/10/novo-layout-do-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Olá Blog</title>
		<link>http://www.tattodecastro.com/2007/12/02/ola-blog/</link>
		<comments>http://www.tattodecastro.com/2007/12/02/ola-blog/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 13:09:47 +0000</pubDate>
		<dc:creator>Tatto</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Off Topic]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebStandarts]]></category>
		<category><![CDATA[offtopic]]></category>

		<guid isPermaLink="false">http://www.tattodecastro.com/index2.php/2007/12/02/ola-blog/</guid>
		<description><![CDATA[Olá a todos. Este é o primeiro post do meu blog. Espero que com ele me estimule a aprender mais sobre tecnologias, principalmente o PHP. Também pretendo falar sobre webstandarts, SOA, CSS assuntos que também chamam muito a minha atenção. Então acho que é isso. Abraço a todos.]]></description>
			<content:encoded><![CDATA[<p>Olá a todos. Este é o primeiro post do meu blog. Espero que com ele me estimule a aprender mais sobre tecnologias, principalmente o PHP. Também pretendo falar sobre webstandarts, SOA, CSS assuntos que também chamam muito a minha atenção.</p>
<p>Então acho que é isso. Abraço a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tattodecastro.com/2007/12/02/ola-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
