<?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"
	>

<channel>
	<title>Renan de Lima</title>
	<atom:link href="http://www.renandelima.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.renandelima.com</link>
	<description>até que nem tanto esotérico assim</description>
	<pubDate>Tue, 09 Dec 2008 17:25:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>I Encontro PHP-Paraíba</title>
		<link>http://www.renandelima.com/i-encontro-php-paraiba/</link>
		<comments>http://www.renandelima.com/i-encontro-php-paraiba/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 19:47:29 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=73</guid>
		<description><![CDATA[
Sábado, 29 de novembro de 2008 irá acontecer o 1º Encontro PHP-Paraíba. Se você não pode estar lá, como eu, você poderá acompanhar pela internet. O streaming irá começar a ser enviado às 10:00 (horário de Brasília) e a url é http://php-pb.net divirta-se!


Saturday, November 29, 2008 the 1st PHP-Paraíba Meeting will happen. If you can&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>Sábado, 29 de novembro de 2008 irá acontecer o <a href="http://php-pb.net">1º Encontro PHP-Paraíba</a>. Se você não pode estar lá, como eu, você poderá acompanhar pela internet. O streaming irá começar a ser enviado às 10:00 (horário de Brasília) e a url é <a href="http://php-pb.net">http://php-pb.net</a> divirta-se!</p>
</div>
<div class='en' style=''>
<p>Saturday, November 29, 2008 the <a href="http://php-pb.net">1st PHP-Paraíba Meeting</a> will happen. If you can&#8217;t be there (just like me) you can see it through the internet. The streaming broadcast will start at 10am (Brasília time) and url is <a href="http://php-pb.net">http://php-pb.net</a> enjoy!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/i-encontro-php-paraiba/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BackTrace 0.2</title>
		<link>http://www.renandelima.com/backtrace-02/</link>
		<comments>http://www.renandelima.com/backtrace-02/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 20:09:02 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=70</guid>
		<description><![CDATA[
Antes do término deste ano, fiz uma boa ação para receber presentes no natal.
Depois de ouvir por muito tempo André Bacci sobre problemas de segurança na biblioteca BackTrace, alterei o valor de uma e criei outra constante. Agora ninguém pode sentir medo, seu código e valores de parâmetros são escondidos por padrão.
A nova versão está [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>Antes do término deste ano, fiz uma boa ação para receber presentes no natal.</p>
<p>Depois de ouvir por muito tempo André Bacci sobre problemas de segurança na <a href="http://code.google.com/p/backtrace">biblioteca BackTrace</a>, alterei o valor de uma e criei outra constante. Agora ninguém pode sentir medo, seu código e valores de parâmetros são escondidos por padrão.</p>
<p>A nova versão está disponível, veja mais em <a href="http://code.google.com/p/backtrace">http://code.google.com/p/backtrace</a></p>
</div>
<div class='en' style=''>
<p>Before the end of this year, I made a good think to receive a gift on cristhimas.</p>
<p>After hear to André Bacci for months about security problems in <a href="http://code.google.com/p/backtrace">BackTrace library</a> I have changed a default value and to create a new constant. This time nobody may feel fear, your code and argument values are keep hide by default.</p>
<p>The new release has came, see more at <a href="http://code.google.com/p/backtrace">http://code.google.com/p/backtrace</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/backtrace-02/feed/</wfw:commentRss>
		</item>
		<item>
		<title>all you need is love&#8230;</title>
		<link>http://www.renandelima.com/all-you-need-is-love/</link>
		<comments>http://www.renandelima.com/all-you-need-is-love/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 06:37:54 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=67</guid>
		<description><![CDATA[
siga a música


follow the song

]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>siga a música</p>
</div>
<div class='en' style=''>
<p>follow the song</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/all-you-need-is-love/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ascending and Descending Order and Pagination with LDAP</title>
		<link>http://www.renandelima.com/ascending-descending-order-pagination-ldap/</link>
		<comments>http://www.renandelima.com/ascending-descending-order-pagination-ldap/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 12:58:58 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=42</guid>
		<description><![CDATA[
LDAP tem uma documentação não muito detalhada. E pra quem está acostumado com as lindas APIs de banco de dados pode se sentir não a vontade quando utilizando essa tecnologia em PHP.
Um dos incômodos que tive foi quando precisei paginar registros LDAP. A função ldap_sort faz apenas ordenação ascendente. Resultado da brincadeira: tive que fazer [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>LDAP tem uma documentação não muito detalhada. E pra quem está acostumado com as lindas APIs de banco de dados pode se sentir não a vontade quando utilizando essa tecnologia em PHP.</p>
<p>Um dos incômodos que tive foi quando precisei paginar registros LDAP. A função <a href="http://www.php.net/ldap_sort">ldap_sort</a> faz apenas ordenação ascendente. Resultado da brincadeira: tive que fazer paginação e ordenação nos dois sentidos utilizando <a href="http://www.php.net/ldap_count_entries">ldap_count_entries</a>, <a href="http://www.php.net/ldap_sort">ldap_sort</a>, <a href="http://www.php.net/ldap_first_entry">ldap_first_entry</a>, <a href="http://www.php.net/ldap_next_entry">ldap_next_entry</a>, <a href="http://www.php.net/ldap_get_attributes">ldap_get_attributes</a>, <a href="http://www.php.net/array_reverse">array_reverse</a> e um pouquinho de macumba <img src='http://www.renandelima.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> . O resultado se encontra em um post que deixei na documentação da função <a href="http://www.php.net/ldap_search">ldap_search</a>.</p>
<p style="text-align: center;"><a href="http://php.net/ldap_sort#85317">acesse aqui a solução</a></p>
</div>
<div class='en' style=''>
<p>LDAP hasn&#8217;t a good documentation. Users of wonderful database API&#8217;s may feel no good when using this technology in PHP.</p>
<p>I had one of these problems when I needed to paginate LDAP entries. The <a href="http://www.php.net/ldap_sort">ldap_sort</a> function sorts in ascending order only. Result: I had to do pagination and ordering in two direction using  <a href="http://www.php.net/ldap_count_entries">ldap_count_entries</a>, <a href="http://www.php.net/ldap_sort">ldap_sort</a>, <a href="http://www.php.net/ldap_first_entry">ldap_first_entry</a>, <a href="http://www.php.net/ldap_next_entry">ldap_next_entry</a>, <a href="http://www.php.net/ldap_get_attributes">ldap_get_attributes</a>, <a href="http://www.php.net/array_reverse">array_reverse</a> and a bit of voodoo <img src='http://www.renandelima.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> . The result is in a post left in the <a href="http://www.php.net/ldap_search">ldap_search</a> documentation.</p>
<p style="text-align: center;"><a href="http://php.net/ldap_sort#85317">see the solution here</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/ascending-descending-order-pagination-ldap/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Projects at Google Code</title>
		<link>http://www.renandelima.com/projects-at-google-code/</link>
		<comments>http://www.renandelima.com/projects-at-google-code/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 21:00:24 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=31</guid>
		<description><![CDATA[
Olá todos. Normalmente eu posto lançamentos, documentação e tudo relacionado à algumas bibliotecas minhas neste blog.
Decidi criar alguns projetos no GoogleCode por não querer mais fazer isso aqui. Penso que isso será melhor para todos nós.
Anuncio também o lançamento do WSDLDocument 0.2 em http://code.google.com/p/wsdldocument. Existe também um wiki para ver o changelog e dicas de [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>Olá todos. Normalmente eu posto lançamentos, documentação e tudo relacionado à algumas bibliotecas minhas neste blog.</p>
<p>Decidi criar alguns projetos no <a href="http://code.google.com">GoogleCode</a> por não querer mais fazer isso aqui. Penso que isso será melhor para todos nós.</p>
<p>Anuncio também o lançamento do <a href="http://code.google.com/p/wsdldocument">WSDLDocument</a> 0.2 em <a href="http://code.google.com/p/wsdldocument">http://code.google.com/p/wsdldocument</a>. Existe também um <a href="http://code.google.com/p/wsdldocument/w/list">wiki</a> para ver o <a href="http://code.google.com/p/wsdldocument/wiki/changelog">changelog</a> e <a href="http://code.google.com/p/wsdldocument/wiki/usage">dicas de uso</a>.</p>
<p>A biblioteca <a href="http://code.google.com/p/backtrace">BackTrace</a> não tem novidades, porém você pode acompanhá-la em <a href="http://code.google.com/p/backtrace">http://code.google.com/p/backtrace</a>.</p>
</div>
<div class='en' style=''>
<p>Hello all. Usually I post releases, documentation and everything related of some my libraries in this blog.</p>
<p>I opted to create some projects at <a href="http://code.google.com">GoogleCode</a> because I don&#8217;t want to post about it here. I think this will be better for all of us.</p>
<p>I announce too that the <a href="http://code.google.com/p/wsdldocument">WSDLDocument</a> 0.2 was relasead at <a href="http://code.google.com/p/wsdldocument">http://code.google.com/p/wsdldocument</a>. There is a <a href="http://code.google.com/p/wsdldocument/w/list">wiki</a> with <a href="http://code.google.com/p/wsdldocument/wiki/changelog">changelog</a> and <a href="http://code.google.com/p/wsdldocument/wiki/usage">usage tips</a>.</p>
<p>The <a href="http://code.google.com/p/backtrace">BackTrace</a> library don&#8217;t have news, but you can see it at <a href="http://code.google.com/p/backtrace">http://code.google.com/p/backtrace</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/projects-at-google-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buscador de disciplinas UnB 2008/2</title>
		<link>http://www.renandelima.com/buscador-de-disciplinas-unb-20082/</link>
		<comments>http://www.renandelima.com/buscador-de-disciplinas-unb-20082/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 22:27:40 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=71</guid>
		<description><![CDATA[O buscador de disciplinas da UnB por horário oferta 02/2008 está no ar. Para acessá-lo clique no link abaixo e boa sorte.
http://www.renandelima.com/buscador/2008/2
]]></description>
			<content:encoded><![CDATA[<p>O buscador de disciplinas da UnB por horário oferta 02/2008 está no ar. Para acessá-lo clique no link abaixo e boa sorte.</p>
<p align="center"><a href="http://www.renandelima.com/buscador/2008/2">http://www.renandelima.com/buscador/2008/2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/buscador-de-disciplinas-unb-20082/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WSDL + PHP = WSDLDocument</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/</link>
		<comments>http://www.renandelima.com/wsdl-php-wsdldocument/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 04:32:33 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=57</guid>
		<description><![CDATA[
Este post é para divulgar a primeira versão beta do WSDLDocument, um gerador de WSDL em PHP para webservices.
A forma como determinados assuntos são abordados em TI faz inibir o exímio programador dentro de diversos profissionais da nossa área. Um desses assuntos é webservice. Em PHP fazer um cliente é tranquilo. Já um servidor exige [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>Este post é para divulgar a primeira versão beta do <a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">WSDLDocument</a>, um gerador de WSDL em PHP para webservices.</p>
<p>A forma como determinados assuntos são abordados em TI faz inibir o exímio programador dentro de diversos profissionais da nossa área. Um desses assuntos é webservice. Em PHP fazer um cliente é tranquilo. Já um servidor exige mais trabalho por conta da geração de <a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language">WSDL</a>. É claro que há diversas outras coisas a se observar na construção ou consumo de webservices.</p>
<p style="text-align: center"><img src="http://www.renandelima.com/wp-content/uploads/2008/07/wsdl.png" alt="WSDLDocument" align="right" height="230" hspace="5" vspace="5" width="262" /></p>
<p>Mas por que a construção de WSDL em PHP é a pedra no sapato de tanta gente? PHP é uma linguagem com tipagem fraca, o que possibilita que uma variável seja de diversos tipos durante a execução de um script/requisição. A descrição de webservices, entretanto, exige a &#8220;tipagem forte&#8221; dos parâmetros e retornos de cada um dos serviços disponibilizados.</p>
<p>A missão é &#8220;descobrir&#8221; quais os tipos de cada um dos parâmetros e o retorno deles para aí sim gerar o WSDL. Portanto gerar WSDL não é uma tarefa trivial, mas também não é tão difícil quanto encontrar bigode em elefante. Então, querido leitor, a construção de um WSDL pode ser feita em dois passos:</p>
<ol>
<li>Descobrir os tipos dos parâmetros e retornos dos serviços;</li>
<li>Gerar o XML.</li>
</ol>
<p>O ato de &#8220;descobrir&#8221; na verdade é &#8220;encontrar&#8221;. O desenvolvedor que implementou cada serviço deve indicar em algum lugar essas informações. No more magic, ok? Não somos magos, somos profissionais de TI. Um bom lugar de se colocar informações para o gerador de WSDL é a documentação dos métodos. Com notations atendemos essa necessidade e mantemos nosso código bem documentado. Com as informações dos tipos dos parâmetros e retornos dos serviços, nos resta a geração de WSDL. A geração do XML deve seguir os <a href="http://www.w3schools.com/WSDL/wsdl_syntax.asp">padrões W3C</a> de descrição de serviços para webservice.</p>
<p align="center">Lanço hoje o <strong><a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">WSDLDocument</a></strong>!</p>
<p>A solução que divulgo aqui não é algo que não existia. Fiz isso - exclusivamente - para exercitar meus conhecimento e entender um pouquinho mais a estrutura desse bixano. Fontes de inspiração/transpiração:</p>
<ul>
<li><a href="http://www.schlossnagle.org/~george/php/WSDL_Gen.tgz">WSDL Generator</a></li>
<li><a href="http://jool.nl/webservicehelper/">Webservice Helper</a></li>
</ul>
<p align="center"><a href="http://www.renandelima.com/project/WSDLDocument/" title="WSDLDocument"></a></p>
<p>Como percebido por alguns a classe WSDLDocument extende <a href="http://php.net/dom">DOMDocument</a>. Você instancia a classe e &#8230; <a href="http://en.wikipedia.org/wiki/Captain_Planet_and_the_Planeteers">vai planeta!</a> A idéia é ter em mãos um XML mesmo, para que você possa - por exemplo - relacionar um arquivo <a href="http://en.wikipedia.org/wiki/XSL_Transformations">XSLT</a> pra deixar ele bonitinho no navegador. A idéia foi não ser invasivo e obrigar que você altere a arquitetura de sua aplicação. Ela deve ser vista como um funcionalidade a ser acoplada em sua aplicação.</p>
<p>Abaixo um exemplo de como utilizar a classe.</p>
<p><div style="height:120px;margin:5px;overflow:auto;padding:5px;position:relative;border:1px solid #dedede;background-color:#fefefe;line-height:100%;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">//&nbsp;generating&nbsp;the&nbsp;wsdl<br /></span><span style="color: #0000BB">$class&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"MyWebserviceClass"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"http://mydomain.com/?class="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$class</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$wsdl&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">WSDLDocument</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$class</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;showing&nbsp;the&nbsp;wsdl<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$wsdl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">saveXml</span><span style="color: #007700">();<br /><br /></span>
</span>
</code></div></p>
<p><div style="height:120px;margin:5px;overflow:auto;padding:5px;position:relative;border:1px solid #dedede;background-color:#fefefe;line-height:100%;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">MyWebserviceClass<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transfering&nbsp;complex&nbsp;type.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Person<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">anyMethod</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">Person&nbsp;$type&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transfering&nbsp;array&nbsp;of&nbsp;complex&nbsp;type.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Person[]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">another</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$quantity&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$list&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">$quantity</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$list</span><span style="color: #007700">,&nbsp;new&nbsp;</span><span style="color: #0000BB">Person</span><span style="color: #007700">()&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$list</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />class&nbsp;</span><span style="color: #0000BB">Person<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;</span><span style="color: #0000BB">$name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;</span><span style="color: #0000BB">$children&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span>
</span>
</code></div></p>
<p>Tentarei manter essa biblioteca atualizada. Sou mais enrolado que rocambole de goiaba amanhecido, portanto não garanto nada.</p>
<p align="center"><a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">faça o download do WSDLDocument aqui </a></p>
</div>
<div class='en' style=''>
<p>This post was made to release the <a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">WSDLDocument</a>, a WSDL generator in PHP to webservices.</p>
<p>The way how some subjects are saying about TI hides the expert developer that exists inside a lot of professionals from our area. One of these subjects is webservices. It&#8217;s easy to do a client in PHP. But to do a server it&#8217;s necessary more work because the <a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language">WSDL</a> generation. Of course there are others things to look at during the development with webservices.</p>
<p style="text-align: center"><img src="http://www.renandelima.com/wp-content/uploads/2008/07/wsdl.png" alt="WSDLDocument" align="right" height="230" hspace="5" vspace="5" width="262" /></p>
<p>Why is to make WSDL in PHP difficult? A variable in PHP change its type during the script running. The webservices needs you declare the returns&#8217; and arguments&#8217; type.</p>
<p>The goal is look out it to generate the WSDL. To do this isn&#8217;t easy, but this isn&#8217;t as hard as find mustache on Elephant. So dear, the WSDL generation may be made with two steps:</p>
<ol>
<li>Find out the type of the parameters and returns of the services;</li>
<li>Generate the XML.</li>
</ol>
<p>The developer who implemented each service must to describe any where the types information. No more magic, ok? We&#8217;re not mage, we&#8217;re TI professionals. A good place to put it is the method documentation. The notations help us to solve this problem and keep our code well documented. With the types information we can generate the WSDL. The WSDL generation must to follow <a href="http://www.w3schools.com/WSDL/wsdl_syntax.asp">W3C stardards</a>.</p>
<p align="center">I release today the <strong><a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">WSDLDocument</a></strong>!</p>
<p>This library isn&#8217;t a new thing. I did it - only - to improve my knowledges and to understand the WSDL structure. Some another libraries:</p>
<ul>
<li><a href="http://www.schlossnagle.org/~george/php/WSDL_Gen.tgz">WSDL Generator</a></li>
<li><a href="http://jool.nl/webservicehelper/">Webservice Helper</a><a href="http://www.renandelima.com/project/WSDLDocument/" title="WSDLDocument"><br />
</a></li>
</ul>
<p>As someone may see the WSDLDocument extends <a href="http://php.net/dom">DOMDocument</a>. You create a instance of this and&#8230; <a href="http://en.wikipedia.org/wiki/Captain_Planet_and_the_Planeteers">go planet!</a> You have a XML in your hand. You may - for example - link a <a href="http://en.wikipedia.org/wiki/XSL_Transformations">XSLT</a> file to show a bit beautiful on the browser. I didn&#8217;t want to be intrusive and oblige you change your framework. This have to be saw as a library to be put inside your application.</p>
<p>Above a sample how to use this library.</p>
<p><div style="height:120px;margin:5px;overflow:auto;padding:5px;position:relative;border:1px solid #dedede;background-color:#fefefe;line-height:100%;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">//&nbsp;generating&nbsp;the&nbsp;wsdl<br /></span><span style="color: #0000BB">$class&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"MyWebserviceClass"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"http://mydomain.com/?class="&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$class</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$wsdl&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">WSDLDocument</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$class</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;showing&nbsp;the&nbsp;wsdl<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$wsdl</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">saveXml</span><span style="color: #007700">();<br /><br /></span>
</span>
</code></div></p>
<p><div style="height:120px;margin:5px;overflow:auto;padding:5px;position:relative;border:1px solid #dedede;background-color:#fefefe;line-height:100%;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">MyWebserviceClass<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transfering&nbsp;complex&nbsp;type.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Person<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">anyMethod</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">Person&nbsp;$type&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transfering&nbsp;array&nbsp;of&nbsp;complex&nbsp;type.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Person[]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">another</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$quantity&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$list&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">$quantity</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">$list</span><span style="color: #007700">,&nbsp;new&nbsp;</span><span style="color: #0000BB">Person</span><span style="color: #007700">()&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$list</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />class&nbsp;</span><span style="color: #0000BB">Person<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;</span><span style="color: #0000BB">$name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;integer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;</span><span style="color: #0000BB">$children&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span>
</span>
</code></div></p>
<p>I will try keep this library updated. I&#8217;m busiest this time, because this I don&#8217;t know what it&#8217;ll happen.</p>
<p align="center"><a href="http://www.renandelima.com/wp-content/uploads/2008/07/wsdldocument_0-1.zip">download the WSDLDocument here </a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/wsdl-php-wsdldocument/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;hello world&#8221; denovo</title>
		<link>http://www.renandelima.com/hello-world-denovo/</link>
		<comments>http://www.renandelima.com/hello-world-denovo/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 06:12:47 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=61</guid>
		<description><![CDATA[
É com muita felicidade que venho anunciar que a partir de agora vou começar a escrever algumas coisas em inglês por aqui.
Meus amigos bem sabem que tenho estudado inglês. Mas ninguém será obrigado a decifrar minhas tentativas de escrita, as coisas continuarão sendo escritas em português. Ficarei feliz caso queira sugerir ou dar alguma dica [...]]]></description>
			<content:encoded><![CDATA[<div class='pt' style='display:none;'>
<p>É com muita felicidade que venho anunciar que a partir de agora vou começar a escrever algumas coisas em inglês por aqui.</p>
<p>Meus amigos bem sabem que tenho estudado inglês. Mas ninguém será obrigado a decifrar minhas tentativas de escrita, as coisas continuarão sendo escritas em português. Ficarei feliz caso queira sugerir ou dar alguma dica para mim.</p>
<p>Obrigado <a href="http://vchoi.org/blog/">Vitor Choi</a> por ter me indicado o plugin <a href="http://p.osting.it/my-works/babel/">Babel</a>. Cada post tem agora um ícone para mudar de língua facilmente.</p>
<p>Novidades virão&#8230;</p>
</div>
<div class='en' style=''>
<p>I&#8217;m very happy to announce I&#8217;m going to write some things in English here.</p>
<p>My friends know I&#8217;m studying English. But nobody have to read my tries, the posts will still be written in Portuguese too. I would be happy if you want to give me some tips, fell free to do so!</p>
<p>Thank you <a href="http://vchoi.org/blog/">Vitor Choi</a> for showing me the <a href="http://p.osting.it/my-works/babel/">Babel</a> plugin. The posts have an icon to change the language easily.</p>
<p>News are coming&#8230;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/hello-world-denovo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Patterns para elementos visuais</title>
		<link>http://www.renandelima.com/patterns-para-elementos-visuais/</link>
		<comments>http://www.renandelima.com/patterns-para-elementos-visuais/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 22:47:00 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=60</guid>
		<description><![CDATA[Você precisou alguma vez justificar para seu cliente o motivo pelo qual um menu gigantesco ficaria ruim em sua aplicação?
Hélio Miranda, amigo meu, me mostrou o Interaction Design Pattern Library. É um repositório com vários padrões de elementos de interface muito interessante. O site organiza os padrões em categorias. Visualizei várias coisas boas.
Uma delas é [...]]]></description>
			<content:encoded><![CDATA[<p>Você precisou alguma vez justificar para seu cliente o motivo pelo qual um menu gigantesco ficaria ruim em sua aplicação?</p>
<p>Hélio Miranda, amigo meu, me mostrou o <a href="http://www.welie.com/patterns/">Interaction Design Pattern Library</a>. É um repositório com vários padrões de elementos de interface muito interessante. O site organiza os padrões em categorias. Visualizei várias coisas boas.</p>
<p>Uma delas é a <strong>padronização de nomes</strong>. Não precisamos mais nos referir ao <a href="http://www.welie.com/patterns/showPattern.php?patternID=parts-selector">Parts Selector</a>  como &#8220;pra-lá pra-cá&#8221; e ter que explicar que diabos é isso. O padrão está lá, e documentado.</p>
<p>Outra coisa coisa é a <strong>visão orientada a solução de problemas</strong>. Todo bom arquiteto (informação/interface/&#8230;) escolhe (ou faz) um pattern para a resolução de problemas. O site indica qual problema está sendo resolvido em cada um dos patterns.</p>
<p>Usem a abusem. See you soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/patterns-para-elementos-visuais/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DBDesigner + PostgreSQL + Linux Kernel 2.6</title>
		<link>http://www.renandelima.com/dbdesigner-postgresql-linux-kernel-26/</link>
		<comments>http://www.renandelima.com/dbdesigner-postgresql-linux-kernel-26/#comments</comments>
		<pubDate>Thu, 29 May 2008 14:06:39 +0000</pubDate>
		<dc:creator>Renan de Lima</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.renandelima.com/?p=49</guid>
		<description><![CDATA[Há algum tempo utilizo DBDesigner para modelagem de banco de dados. Porém, ele (aparentemente) só trabalhava com MySQL. Cansado de ter que lustrar o sql gerado pelo software busquei algo mais automático. A seguir explico passo-a-passo o que fiz e os problemas que encontrei e como os resolvi. Os créditos para a solução do meu [...]]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo utilizo DBDesigner para modelagem de banco de dados. Porém, ele (aparentemente) só trabalhava com MySQL. Cansado de ter que lustrar o sql gerado pelo software busquei algo mais automático. A seguir explico passo-a-passo o que fiz e os problemas que encontrei e como os resolvi. Os créditos para a solução do meu problema é de diversas pessoas que passaram por situações similares e que escreveram alguma coisa na internet.</p>
<p>Existe um fork do projeto DBDesigner e o nome do projeto é <a href="http://sourceforge.net/projects/dbdesigner-fork">DBDesignerFork</a>. A grande diferença (pra mim) é que ele gera script para os bancos: Oracle, MSSQLServer, Firebird, Mysql e meu desejo recente PostgreSQL.</p>
<ol>
<li>O primeiro passo é fazer o download do DBDesignerFork em<a href="http://sourceforge.net/project/showfiles.php?group_id=177293"> http://sourceforge.net/project/showfiles.php?group_id=177293</a>.</li>
<li>Descompacte o arquivo em qualquer lugar que preferir. Eu descompactei em &#8220;/home/renan/.DBDesigner&#8221;. Esse nome faz o diretório ficar escondido. Alguns preferem colocar no &#8220;/opt&#8221;, mas ai a escolha é sua.</li>
<li>Vá ao diretório que descompactou a aplicação e copie o arquivo &#8220;startdbd_using_kernel2,6&#8243; para &#8220;startdbd&#8221;.
<ol>
<li>Existe alguns arquivos iniciados com &#8220;startdbd_using*&#8221;. Eles estão <strong>todos</strong> configurados para iniciar o DBDesigner com kernel2.4, mesmo o arquivo com nome &#8220;startdbd_using_kernel2.6&#8243;. Estranho não?</li>
</ol>
</li>
<li>Altere o arquivo &#8220;startdbd&#8221; e retire o seguinte conteúdo dele &#8220;LD_ASSUME_KERNEL=2.4.1&#8243;.</li>
<li>Altere a diretiva &#8220;LD_LIBRARY_PATH&#8221;  para o caminho real do diretório &#8220;Linuxlib&#8221; e o executável DBDesignerFork também para o caminho real e não relativo.
<ol>
<li>Isso irá permitir que quando você quiser executar o arquivo de outro caminho irá funcionar corretamente. Você poderá colocar um item de menu para ele por exemplo <img src='http://www.renandelima.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>Os meu arquivo fico assim: &#8220;LD_LIBRARY_PATH=/home/renan/.DBDesigner/Linuxlib/ /home/renan/.DBDesigner/DBDesignerFork&#8221;</li>
</ol>
</li>
<li>Tenha fé e execute o arquivo &#8220;startdbd&#8221;.</li>
</ol>
<p>Bem-vindo ao mundo de geração de script automático para PostgreSQL pelo DBDesigner.</p>
<p><a href="http://www.renandelima.com/wp-content/uploads/2008/05/dbdesigner_pg.png" title="DBDesigner + PostgreSQL"></a></p>
<p style="text-align: center"><a href="http://www.renandelima.com/wp-content/uploads/2008/05/dbdesigner_pg.png" title="DBDesigner + PostgreSQL"><img src="http://www.renandelima.com/wp-content/uploads/2008/05/dbdesigner_pg.thumbnail.png" alt="DBDesigner + PostgreSQL" /></a></p>
<p>Pra não ter que ficar executando o arquivo &#8220;startdbd&#8221; na mão toda vez sugiro que crie um item de menu no seu ambiente gráfico. Eu utilizo gnome, veja como está a configuração dele.</p>
<p><a href="http://www.renandelima.com/wp-content/uploads/2008/05/menu_dbdesigner.png" title="Item de menu para DBDesigner"></a></p>
<p style="text-align: center"><a href="http://www.renandelima.com/wp-content/uploads/2008/05/menu_dbdesigner.png" title="Item de menu para DBDesigner"><img src="http://www.renandelima.com/wp-content/uploads/2008/05/menu_dbdesigner.thumbnail.png" alt="Item de menu para DBDesigner" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.renandelima.com/dbdesigner-postgresql-linux-kernel-26/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
