<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>DUODRACO</title>
	<atom:link href="http://duodraco.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://duodraco.wordpress.com</link>
	<description>PHP, Tecnologia e afins</description>
	<lastBuildDate>Wed, 09 Sep 2009 01:06:02 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='duodraco.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/e9a1b413caa0c29d3edfa01bbb49a2dd?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>DUODRACO</title>
		<link>http://duodraco.wordpress.com</link>
	</image>
			<item>
		<title>links for 2009-09-08</title>
		<link>http://duodraco.wordpress.com/2009/09/08/links-for-2009-09-08/</link>
		<comments>http://duodraco.wordpress.com/2009/09/08/links-for-2009-09-08/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 01:06:02 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2009/09/08/links-for-2009-09-08/</guid>
		<description><![CDATA[

10 Excelentes bancos de imagens
(tags: image)


       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=146&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul class="delicious">
<li>
<div class="delicious-link"><a href="http://www.brogui.com/2009/09/06/10-excelentes-bancos-de-imagens-gratuitas/">10 Excelentes bancos de imagens</a></div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/duodraco/image">image</a>)</div>
</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/146/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=146&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2009/09/08/links-for-2009-09-08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>links for 2009-05-25</title>
		<link>http://duodraco.wordpress.com/2009/05/25/links-for-2009-05-25/</link>
		<comments>http://duodraco.wordpress.com/2009/05/25/links-for-2009-05-25/#comments</comments>
		<pubDate>Tue, 26 May 2009 01:00:50 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2009/05/25/links-for-2009-05-25/</guid>
		<description><![CDATA[

Blog da OnCast Technologies
Ótimo conteúdo sobre Agile
(tags: agile scrum)


       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=145&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul class="delicious">
<li>
<div class="delicious-link"><a href="http://www.oncast.com.br/blog/">Blog da OnCast Technologies</a></div>
<div class="delicious-extended">Ótimo conteúdo sobre Agile</div>
<div class="delicious-tags">(tags: <a href="http://delicious.com/duodraco/agile">agile</a> <a href="http://delicious.com/duodraco/scrum">scrum</a>)</div>
</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=145&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2009/05/25/links-for-2009-05-25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>Seven things that probably you may not know about me</title>
		<link>http://duodraco.wordpress.com/2009/01/09/seven-things-that-probably-you-may-not-know-about-me/</link>
		<comments>http://duodraco.wordpress.com/2009/01/09/seven-things-that-probably-you-may-not-know-about-me/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 13:48:28 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/?p=134</guid>
		<description><![CDATA[It&#8217;s running in PHP world a STTPYMNKAM networking pings (meme/tag)&#8230; the idea is simple: I was tagged by Porkaria (that was tagged by Adler, and so on&#8230;) then I may describe 7 &#8220;curious&#8221; things about me, and tag another 7 people, chaining more people.
Thanks to Porkaria to put me in this hole (or pyramid?)&#8230; here [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=134&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s running in PHP world a <em>STTPYMNKAM</em> networking pings (meme/tag)&#8230; the idea is simple: I was tagged by Porkaria (that was tagged by Adler, and so on&#8230;) then I may describe 7 &#8220;curious&#8221; things about me, and tag another 7 people, chaining more people.</p>
<p>Thanks to <a title="Porkaria's Blog" href="http://porkaria.wordpress.com" target="_blank">Porkaria</a> to put me in this hole (or pyramid?)&#8230; here we go again&#8230;</p>
<p><strong>1. I choose Duodraco nick</strong>&#8230; from pagan stuff&#8230; it&#8217;s a simple merge from Draco(latin word for Dragon) and Duo(latin &#8220;Two&#8221;(from zodiac Gemini)).</p>
<p><strong>2. I&#8217;m Pagan</strong>: although  christian baptized, I found real spirit peace from ancient knowledge. I was evangelic earlier in my life&#8230; but it&#8217;s past.</p>
<p><strong>3. I say NOT</strong>: usually, it&#8217;s my first answer for generic questions&#8230;</p>
<p><strong>4. I have Zero Tolerance for Dumb Questions</strong>: brazilians can remember from &#8220;Seu Saraiva&#8221; (<a title="Wikipedia page for Francisco Milani" href="http://pt.wikipedia.org/wiki/Francisco_Milani" target="_blank">Francisco Milani</a>&#8217;s comedy role)</p>
<p><strong>5. I like Rock-related music</strong>: rock, metal, blues, jazz and classic.</p>
<p><strong>6. I hate &#8220;Brazilian Carnival&#8221;</strong>&#8230; no explanation&#8230; but I hate so more stuff, like Xuxa, Evangelic Priests and Catolic Fathers.. and Bush(the <span style="text-decoration:line-through;">president</span>).</p>
<p><strong>7. I&#8217;m trying to be a Portuguese citizen</strong>&#8230; My father&#8217;s mom (Isabel grandma&#8230; good risotos&#8230;) and a lot of family people are from there.</p>
<p>And now&#8230; <span style="text-decoration:line-through;">the Oscar goes to</span> I&#8217;m tagging my frinds:</p>
<p><a title="Augusto Pascutti's Blog" href="http://augustopascutti.com" target="_blank">Augusto Pascutti</a>: long date friend, nipo-italian rocker and co-worker</p>
<p><a title="Tatto's Blog" href="http://www.tattodecastro.com/" target="_blank">Tatto</a>: A good frined that I know in PHPConference Brazil &#8216;07, from Santa Catarina/Brasil</p>
<p><a title="Luke Crouch's Blog" href="http://bluke.blogspot.com/" target="_blank">Luke Crouch</a>: He gave a presentation in PHPConference Brazil &#8216;08, and drinked some beer with us.</p>
<p><a title="Chucre and friends" href="http://chucre.com" target="_blank">Fernando Chucre</a>: Another Conference friend; developer from Ceará/Brasil</p>
<p><a title="Bruno Viana's Blog" href="http://www.tupi.etc.br" target="_blank">Bruno Viana</a>: One more&#8230; and we are not familiar (&#8220;Arruda&#8221; family name)</p>
<p>Rules are simple:</p>
<p>Link your original tagger(s), and list these rules on your blog.<br />
Share seven facts about yourself in the post—some random, some weird.<br />
Tag seven people at the end of your post by leaving their names and the links to their blogs.<br />
Let them know they’ve been tagged by leaving a comment on their blogs and/or Twitter.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=134&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2009/01/09/seven-things-that-probably-you-may-not-know-about-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>Ambiente de Desenvolvimento Web</title>
		<link>http://duodraco.wordpress.com/2008/12/17/desenvolvimento-web/</link>
		<comments>http://duodraco.wordpress.com/2008/12/17/desenvolvimento-web/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 17:28:15 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/?p=32</guid>
		<description><![CDATA[Olá
Como você desenvolve? O que você usa para desenvolver? Provavelmente você já viu/ouviu essas perguntas em fóruns, listas, ou mesmo perguntando a colegas da área. Nesse artigo vou falar sobre como desenvolvo hoje, na empresa e no home office. Não me aprofundarei muito em cada tema, pelo menos não agora!
Sistema Operacional
Abandonei o Windows® há algum [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=32&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Olá</p>
<p>Como você desenvolve? O que você usa para desenvolver? Provavelmente você já viu/ouviu essas perguntas em fóruns, listas, ou mesmo perguntando a colegas da área. Nesse artigo vou falar sobre como desenvolvo hoje, na empresa e no home office. Não me aprofundarei muito em cada tema, pelo menos não agora!</p>
<p><strong>Sistema Operacional</strong><br />
Abandonei o Windows® há algum tempo, usando-o só pra atualizar o Smartphone (Windows Mobile). Minha estação de trabalho é um notebook dotado de de um Turion X2 1.6, com <span style="text-decoration:line-through;">1GB de RAM (que em breve espero que sejam 4)</span> 4Gb de RAM. Neste note utilizo o <a title="Kubuntu" href="http://www.kubuntu.org" target="_blank">Kubuntu</a> Intrepid 64, rodando o KDE 4.2 Beta; Optei pelo [K]ubuntu pela facilidade de manutenção, apesar de arcar com o custo de ter alguns módulos carregados os quais ainda não parei pra tirar da inicialização; O namoro com o Debian/Ubuntu é de longa data; Gosto mais da interface do KDE, a qual você pode customizar bastante, além de haverem ótimos recursos avançados, mas é assunto pra outro artigo<br />
<a title="Kubuntu" href="http://kubuntu.org" target="_blank"><img class="aligncenter" title="Kubuntu" src="http://people.ubuntu.com/~jriddell/8.10-upgrade/kubuntu-810-screenie.png" alt="" width="255" height="167" /></a>Na Burti, onde atuo como desenvolvedor hoje em dia, trabalho com um MacMini rodando o MacOS X 10.5 (leopard); antes de trabalhar lá eu meio que tinah um preconceito com relação a Mac, mas depois de conhecer, e não é nada do outro mundo, você até gosta do bichinho; ótima interface, dificilmente você irá rebootá-lo por uma pane (a não ser quando a Dock inventa de sumir).<br />
O Windows ainda tem a maior variedade de Aplicativos (IDEs, Editores, Servidores, etc) para o desenvolvimento, mas com o que vou comentar a seguir não preciso deles de maneira alguma.</p>
<p><strong>Servidores</strong><br />
Acho que se eu fizesse uma pesquisa aqui sobre qual servidor web é mais usado localmente no desenvolvimento, o <a title="Apache" href="http://httpd.apache.org/" target="_blank">Apache</a> ganharia disparado. E se for falar de BD, o <a title="MySQL" href="http://mysql.com" target="_blank">Mysql</a> teria sua fatia bem gorda também. No note tenho as ultimas versões de Apache e Mysql para o desenvolvimento, com a ultima versão do PHP (hoje a 5.2.8). Para mim é algo bem fácil instalar: apt-get install php5 php5-mysql mysql-server.<br />
No Mac faço uso do <span style="text-decoration:line-through;">truque sujo</span> <a title="Mac Apache Mysql PHP" href="http://www.mamp.info/" target="_blank">MAMP</a>.</p>
<p><strong>Controle de Versão</strong><br />
Esse é um ponto controverso com alguns gerentes/coordenadores que conheço, mas é algo mais que necessário para o desenvolvimento. Uso o <a title="Subversion" href="http://subversion.tigris.org/" target="_blank">subversion</a> na Burti, integrado com a IDE que vou falar adiante. Para quem não conhece sistemas de Controle de versão (<a title="CVS" href="http://www.nongnu.org/cvs/" target="_blank">CVS</a>, Subversion, <a title="Bazzar Version Control System" href="http://bazaar-vcs.org/" target="_blank">Bazaar</a>, <a title="GIT" href="http://git.or.cz/" target="_blank">GIT</a>), deveria se informar melhor do assunto.<br />
Uso o subversion por ter maior conhecimento neste, além de ser mais fácil encontrar alguém que conheça o <em>SVN</em> que o GIT por exemplo.</p>
<p><strong>IDE / Editor</strong><br />
Usar uma <cite title="Integrated Development Enviroment">IDE</cite> ou um Editor mais simples? eis a questão! Eu uso uma IDE para, em uma só ferramenta eu ter o controle do código, visualização da arquitetura de classes, visualização/ mapeamento da classe que estou editando, Debugging e Profilling. Uso o <a title="Netbeans" href="http://netbeans.org" target="_blank">Netbeans</a> 6.5 (sim, existe uma versão hoje de Netbeans com suporte a PHP); Minha principal motivação de mudar do <a title="PHP Development Tools" href="http://zend.com/pdt" target="_blank">PDT</a> para o Netbeans é que o ultimo funciona no meu Kubuntu 64bits, enquanto que o primeiro tenho que mexer em muita coisa pra rodar redondo.<br />
O Netbeans conta com edição de PHP/HTML/CSS/JS integrado com as principais bibliotecas/frameworks (jQuery, Prototype, Dojo), desenvolvimento local e remoto, navegador de código, debugging como já citado, entre outras tantas features. Uso tanto em casa quanto na Burti, e recomendo. Quando tenho que fazer uma alteração remota com urgencia não dispenso o VI.</p>
<div class="wp-caption aligncenter" style="width: 378px"><a href="http://www.netbeans.org"><img title="Netbeans" src="http://www.netbeans.org/images/articles/65/php/quickstart/getting-started-open-new-project.png" alt="Netbeans 6.5 com suporte a PHP" width="368" height="174" /></a><p class="wp-caption-text">Netbeans 6.5 com suporte a PHP</p></div>
<p style="text-align:left;"><strong>Navegador</strong><br />
Pois é, todos nós que trabalhamos com php temos que abrir o navegador vez ou outra para visualizar as coisas feitas no HTML,CSS e Javascript, e as coisas não feitas pelo <cite title="Internet Explorer">IE</cite> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Minha primeira opção de navegador é o <a title="Opera" href="http://opera.com" target="_blank">Opera</a>, que dentre outros motivos atende à risca as especificações da <cite title="World Wide Web Consortium">W3C</cite>. Fazendo as coisas darem certo no Opera, tenho que acertar muito pouco, ou nada, minhas investidas contra o client-side em outros navegadores. Meu segundo navegador é claro o <a title="Firefox" href="http://www.mozilla.com/firefox/" target="_blank">Firefox</a>. Sempre há o pecado de ter as coisas no IE bagunçadas&#8230; para isso vamos ao próximo tópico.<br />
<a title="Opera" href="http://opera.com" target="_blank"><img class="hide-mobile aligncenter" src="http://www.opera.com/bitmaps/products/browser/campaign/0811operabrowser.png" alt="" width="400" height="128" /></a><br />
<strong></strong></p>
<p><strong>Máquinas Virtuais</strong><br />
Bom, o principal uso de uma máquina virtual não é, com certeza, visualizar como seu sistema/site fica no IE, embora um dos meus usos seja especificamente esse. Uso o <a title="VirtualBox" href="http://www.virtualbox.org" target="_blank">VirtualBox</a>, com uma maquina windows xp. Apesar de ter o wine no linux, prefiro a <cite title="Maquina Virtual">MV</cite> a instalar o IE[ca] no Linux. Também uso a MV para testar as novas releases do [K|X]Ubuntu quando ainda em alpha/beta, e versões de softwares antes de instalar diretamente na workstation.</p>
<p><strong>Cliente para Bancos de Dados</strong><br />
Bom, ainda não me acostumei a usar a ferramenta built-in do Netbeans (por sinal muito boa&#8230; só falta de costume). Então ainda uso o Mysql Query Browser e o Mysql Administrator, além, é claro, da interface em linha de comando; com o postgresql uso o PGAdmin. Mas ainda vou me acostumar a usar o cliente do netbeans, a se vou.</p>
<p><strong>Editor UML</strong><br />
Sim, temos que utilizar a <cite title="Unified Modeling Language">UML</cite>! Até pouco tempo atrás usava o ótimo Umbrello, do KDE, mas depois do Netbeans comecei a usar seu plugin UML que é ótimo. A única desvantagem para o Umbrello mesmo é a falta de geração de código a partir do Modelo neste ultimo.<br />
<a href="http://uml.sourceforge.net/screenshots/umbrello-2.0.png"> <img src="http://uml.sourceforge.net/screenshots/umbrello-2.0-wee.png" border="0" alt="" width="200" height="151" /> </a></p>
<p><strong>MindMap</strong><br />
Não vou me aprofundar no assunto de <a title="Mapas Mentais na Wikipedia" href="http://pt.wikipedia.org/wiki/Mapa_mental" target="_blank">mindmap</a>, pelo menos não agora, mas é uma das melhores ferramentas para documentação em projetos ágeis, como Scrum e XP. Uso o <a title="Freemind" href="http://freemind.sourceforge.net" target="_blank">Freemind</a> para este serviço.</p>
<p><strong>Metodologia de Desenvolvimento</strong><br />
Utilizo o Scrum como base na metodologia. O grande lance do <a title="Scrum Alliance" href="http://www.scrumalliance.org/" target="_blank">Scrum</a> é ter um ciclo definido de desenvolvimento, e consequentemente de releases para o cliente, no qual o desenvolvedor tem quase que total liberdade para gerenciar o tempo, além de ser flexivel quanto a regras, o que é até &#8220;obrigatório&#8221; no desenrolar de um processo Scrum. Falarei melhor sobre metodologias ágeis em breve.</p>
<p><strong>Estilo de Codificação</strong><br />
Algo essencial para o trabalho em grupo. Utilizar um Estilo significa que o jeito que você escreve o código será igual ao da sua equipe, falando a grosso modo. Utilizo o <a title="Padrões de código no Zend Framework" href="http://framework.zend.com/manual/en/coding-standard.html" target="_blank">Padrão do ZendFramework</a>, que tem poucas variações do <a title="Padrão PEAR" href="http://pear.php.net/manual/en/standards.php" target="_blank">padrão PEAR</a>.</p>
<p><strong>Frameworks</strong><br />
Algo essencial para desenvolver rapidamente aplicações, sem re-re-re-re-inventar a roda.<br />
No PHP estou brincando mais com o <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">ZendFramework</a> pelo nível e por tudo o que ele já possui; No passado ele tinha sérios problemas de performance, os quais não identifico mais, apesar de não ser o avião que o <a title="CodeIgniter" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> / <a title="Kohana PHP" href="http://kohanaphp.com/" target="_blank">Kohana</a> é.<br />
Para o Javascript utilizo o <span style="text-decoration:line-through;">fucker</span> <span style="text-decoration:line-through;">awesome</span> poderoso <a title="jQuey" href="http://jquery.com" target="_blank">jQuery</a>.</p>
<p>Bom pessoal, dei uma passada rápida sobre o que uso no dia-a-dia para desenvolver. Até a próxima</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=32&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2008/12/17/desenvolvimento-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>

		<media:content url="http://people.ubuntu.com/~jriddell/8.10-upgrade/kubuntu-810-screenie.png" medium="image">
			<media:title type="html">Kubuntu</media:title>
		</media:content>

		<media:content url="http://www.netbeans.org/images/articles/65/php/quickstart/getting-started-open-new-project.png" medium="image">
			<media:title type="html">Netbeans</media:title>
		</media:content>

		<media:content url="http://www.opera.com/bitmaps/products/browser/campaign/0811operabrowser.png" medium="image" />

		<media:content url="http://uml.sourceforge.net/screenshots/umbrello-2.0-wee.png" medium="image" />
	</item>
		<item>
		<title>PHP Conference &#8216;08</title>
		<link>http://duodraco.wordpress.com/2008/12/10/php-conference-08r/</link>
		<comments>http://duodraco.wordpress.com/2008/12/10/php-conference-08r/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 01:01:53 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[PHP Friends]]></category>
		<category><![CDATA[phpconf08]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/?p=55</guid>
		<description><![CDATA[Tive que tirar umas teias de aranha pra postar aqui de novo.
Bom, ocorreu nos dias 27, 28 e 29 de Novembro o PHP Conference Brasil 2008. De longe um dos melhores eventos já ocorridos por esses lados. Infra-estrutura decente, conteúdo de nível, networking e tudo o mais que um evento desse porte pode querer.
No dia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=55&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Tive que tirar umas teias de aranha pra postar aqui de novo.</p>
<p>Bom, ocorreu nos dias 27, 28 e 29 de Novembro o PHP Conference Brasil 2008. De longe um dos melhores eventos já ocorridos por esses lados. Infra-estrutura decente, conteúdo de nível, networking e tudo o mais que um evento desse porte pode querer.</p>
<p>No dia 28 apresentei a palestra &#8220;Objetos, Padrões e Prática&#8221;, abordadando Orientação a Objetos e Design Patterns, mostrando um exemplo funcional de framework mvc, usando os principais padrões. Segue a apresentação:</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=837269&#038;doc=objetospadroesepratica-1228956480371003-1' width='450' height='369'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=837269&#038;doc=objetospadroesepratica-1228956480371003-1' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p>No sábado havia uma sala livre, então o Quarteto Fantástico (<a href="http://www.rafaeldohms.com.br" target="_blank">Dohms</a>, <a href="http://augustopascutti.com" target="_blank">Pascutti</a>, <a href="http://horizontesdigitais.com" target="_blank">Chucre</a> e eu) + a colaboração do Surfista de preto (<a href="http://ivanrosolen.com" target="_blank">Ivan</a>) realizamos uma mesa redonda, dissecando um Simulado para a Prova de Certificação da Zend; não é necessario dizer que estrapolamos o tempo da palestra (e do Mock)</p>
<p>Novos Amigos, atualização de conteúdo, networking, premissas e idéias para o PHP.SP. Acho que não ficou faltando nada. Teve quem (de novo) reclamasse da distância para a Unifieo, faculdade que sediou o evento; como moro lá perto, não tive problemas.</p>
<p>Até logo.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=55&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2008/12/10/php-conference-08r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>Dicas para um PHP mais veloz</title>
		<link>http://duodraco.wordpress.com/2008/04/12/dicas-para-um-php-mais-veloz/</link>
		<comments>http://duodraco.wordpress.com/2008/04/12/dicas-para-um-php-mais-veloz/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 16:09:49 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[PHP Friends]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/?p=36</guid>
		<description><![CDATA[Salve
Viu? não demorou muito para um novo artigo 
Vou passar a vocês uma materia que peguei há algum tempo em inglês&#8230; mais abaixo coloco as referências.
Trata-se de uma lista de dicas para o desenvolvimento PHP. Aproveitem.

1. echo
Por questão de performance: use &#8216;echo&#8217; ao invés de &#8216;print&#8217;, e se for usar muitas concatenações, lembre-se de usar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=36&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Salve</p>
<p>Viu? não demorou muito para um novo artigo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Vou passar a vocês uma materia que peguei há algum tempo em inglês&#8230; mais abaixo coloco as referências.</p>
<p>Trata-se de uma lista de dicas para o desenvolvimento PHP. Aproveitem.</p>
<p><span id="more-36"></span></p>
<p>1. <strong>echo</strong><br />
Por questão de performance: use &#8216;echo&#8217; ao invés de &#8216;print&#8217;, e se for usar muitas concatenações, lembre-se de usar &#8216;,&#8217;, como faríamos com argumentos em uma função, ao invés de &#8216;.&#8217;. Em testes simples a diferença é pouco sensível, mas em uma operação em que um grande conteúdo será jogado para o buffer de saída faz muita diferença.</p>
<p>2. <strong>chamada de funções em condições de iterações</strong><br />
Imagine o seguinte código:</p>
<pre>&lt;?
$a = array(1,2,3);
for($i = 0; $i &lt; count($a); $i++){
//...
}
?&gt;</pre>
<p>Sabemos que count será executado 3 vezes. Imagine se $a tivesse 10000 itens? Podemos melhorar isso se fizermos o seguinte:</p>
<pre>&lt;?
$a = array(1,2,3);
$c = count($a);
for($i = 0; $i &lt; $c; $i++){
//...
}
?&gt;
</pre>
<p>Reduzimos a chamada a <em>count</em> a uma unica vez sempre. Qual o nosso ganho? mais da metade do tempo, fazendo uma iteração com 10000 itens. Isso se você precisa que realmente seja um <em>for</em>. Se for uma iteração em um array, como é este caso, voce vai se surpreender se usar <em>foreach</em>.</p>
<pre>&lt;?
$a = array(1,2,3);
foreach($a as $i =&gt; $each){
//...
}
?&gt;
</pre>
<p>3. <strong>armazenar strings para echo</strong><br />
Você realmente precisa ter em uma variável tudo o que vai &#8220;echoar&#8221;? Se não for necessário armazenar, &#8220;echoe&#8221; diretamente a string</p>
<pre>
&lt;?
echo "Faça isso&lt;br /&gt;";
$s = "Ao invés disso";
echo $s;
?&gt;
</pre>
<p>4. <strong>notação de strings</strong><br />
Você sabe a diferença de <strong>&#8216;</strong> e <strong>&#8220;</strong> para o PHP? o primeiro (aspas simples) armazenam a string como você escrever nela. O segundo permite o uso de metacarateres (\n para quebras de linha, por exemplo), uso de variáveis (&#8220;$var  é uma variável&#8221;), portanto o PHP tem que verificar o que há nesse contexto para só então armazenar a string. O ganho em performance não é tão sensível, mas para um script lento, qualquer ajuda vale muito.</p>
<p>5. <strong>str_replace vs ereg_replace vs preg_replace</strong><br />
Taí um teste que me surpreendeu quando fiz a primeira vez. Quando for simplesmente trocar uma sentença por outra em uma string (sem o uso de uma expressão regular mais complexa), utilize o <em>str_replace</em>: é ela faz o trabalho das outras duas em aproximadamente 40% do tempo.</p>
<p>Senhores (e senhoras, por que não?), essas é a primaria parte da série de 3 no original, que vou postar nos próximos dias. Ao final, adicionarei algumas dicas próprias. Abaixo seguem os links para os três capitulos.</p>
<p><a href="http://bitfilm.net/2007/08/24/tips-for-faster-php-scripts/">tips-for-faster-php-scripts</a><br />
<a href="http://bitfilm.net/2007/09/07/more-tips-for-faster-php-scripts/">more tips for faster php scripts</a><br />
<a href="http://bitfilm.net/2007/11/27/even-more-tips-for-faster-php-scripts">even more tips for faster php script</a></p>
<p>Sugiro também que dêem uma olhada em meus bookmarks no <a href="http://del.icio.us/duodraco">del.icio.us</a></p>
<p>Até o próximo artigo</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duodraco.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duodraco.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=36&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2008/04/12/dicas-para-um-php-mais-veloz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>PEAR, Webservices e DIME</title>
		<link>http://duodraco.wordpress.com/2008/04/01/pear-webservices-e-dime/</link>
		<comments>http://duodraco.wordpress.com/2008/04/01/pear-webservices-e-dime/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 04:32:08 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[PEAR]]></category>
		<category><![CDATA[PHP Friends]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[dime]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2008/04/01/salve/</guid>
		<description><![CDATA[Em primeiro lugar, desculpem a demora. foram longos meses sem um novo artigo. Pretendo reparar o acontecido com ótimo conteúdo para os leitores. Vamos falar neste post sobre Webservices com anexos&#8230; DIME pra ser mais específico. Junto com o assunto, introduzo o P.E.A.R. (PHP Extension and Application Repository), repositório de classes que auxiliam, e salvam [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=33&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Em primeiro lugar, desculpem a demora. foram longos meses sem um novo artigo. Pretendo reparar o acontecido com ótimo conteúdo para os leitores. Vamos falar neste post sobre Webservices com anexos&#8230; DIME pra ser mais específico. Junto com o assunto, introduzo o P.E.A.R. (PHP Extension and Application Repository), repositório de classes que auxiliam, e salvam a vida a maioria das vezes e que é mantido pela comunidade organizadamente.<span id="more-33"></span></p>
<p><span><b>Problema:<br />
</b></span>    Estava eu, com minhas atribuições de sempre, quando me solicitam um cliente de webservice para uma determinada necessidade. &#8216;Ótimo&#8217; &#8211; pensei &#8211; &#8216;Uso as classes SoapClient do PHP5 e tudo estará resolvido&#8217;; aí vem a bomba. Um dos requisitos do serviço é um anexo, de um tipo específico chamado de <a href="http://en.wikipedia.org/wiki/Direct_Internet_Message_Encapsulation" id="o-mc" target="_blank" title="Direct Internet Message Encapsulation">DIME</a> (Direct Internet Message Encapsulation).</p>
<p><span><b>Solução:</b></span><br />
1º &#8211; Baixar os pacotes da PEAR<br />
- SOAP &#8211; Conjunto de classes para consumir e servir webservices<br />
- Net_URL &#8211; Classes para tratar protocolos de rede<br />
- Net_DIME &#8211; Específica para encapsular uma mensagem DIME<br />
- PEAR &#8211; Base para as outras, incluindo uma classe para tratamento de erros.<br />
2º &#8211; Criar um diretório &#8216;Net&#8217; e copiar o conteúdo de Net_URL e Net_DIME para ele. Explicações depois&#8230;<br />
3º &#8211; Codificar&#8230;<br />
<font size="1"><code><span style="color:#000000;"><span style="color:#0000bb;"><span style="font-family:Courier New;"></span></span></span></code></font></p>
<pre><code></code><title></title><code></code><img src="http://duodraco.files.wordpress.com/2008/04/screenshot5.png" alt="Código PHP" /></pre>
<p>Bom, dado o código acima, vamos aos fatos: pra chegar neste código não demorei muito, porém levei dias para fazer funcionar o maldito webservice. &#8216;Porquê&#8217; você deve estar se perguntando&#8230; porque a documentação do servidor do webservice estava errada&#8230; eu me matei alguns dias para alterar 2 coisas, as quais descobri fuçando no serviço, que fizeram finalmente meu sistema consumir o webservice. Mas isso é história pra outro post</p>
<p>Desabafos a parte, explicando melhor algumas coisas: O PEAR trabalha com uma organização de pacotes / Namespaces; O Namespace de Net_URL e Net_DIME é &#8216;Net&#8217;&#8230; para manter a organização dos pacotes, dando fácil acesso para buscas e manutenção.</p>
<p>Este artigo infelizmente não foi tão bem produzido, mas nos próximos posts, e espero que não seja longa a espera por novos, abordarei melhor vários assuntos correlatos.</p>
<p>Até lá</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duodraco.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duodraco.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=33&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2008/04/01/pear-webservices-e-dime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>

		<media:content url="http://duodraco.files.wordpress.com/2008/04/screenshot5.png" medium="image">
			<media:title type="html">Código PHP</media:title>
		</media:content>
	</item>
		<item>
		<title>BCMath &#8211; PHP fazendo contas direitinho</title>
		<link>http://duodraco.wordpress.com/2007/09/26/bcmath-php-fazendo-contas-direitinho/</link>
		<comments>http://duodraco.wordpress.com/2007/09/26/bcmath-php-fazendo-contas-direitinho/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 12:19:10 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[PHP Friends]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2007/09/26/bcmath-php-fazendo-contas-direitinho/</guid>
		<description><![CDATA[Salve
Não sei vocês, mas adoro o PHP.  Me dá suporte a quase tudo que preciso para desenvolver bem. Um problema do PHP voltei a ver essa semana, e é até comum em algumas linguagens: erros em operações com números decimais. Como  disse antes, adoro o PHP, e a solução está em uma extensão [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=31&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Salve</p>
<p>Não sei vocês, mas adoro o PHP.  Me dá suporte a quase tudo que preciso para desenvolver bem. Um problema do PHP voltei a ver essa semana, e é até comum em algumas linguagens: erros em operações com números decimais. Como  disse antes, adoro o PHP, e a solução está em uma extensão infelizmente pouco usada: a BCMath.</p>
<p>O problema acontece quando algum numero decimal na operação não é convertido facilmente para uma notação fracionária internamente no PHP, o que pode culminar em alguns bugs; veja o exemplo abaixo, retirado da documentação oficial:</p>
<pre class="brush: php;">
echo floor((0.1 + 0.7)*10);
</pre>
<p>Isto irá exibir 7, e não 8  como esperado. o problema está não conversão para numero fracionário: o floor está recebendo 7.999999999, que resultará em 7;</p>
<p>Para os casos em que você necessita de precisão em números arbitrários existe a BCMath (Binary Calculator Mathematics). É uma extensão, obtida no pacote do php, geralmente habilitada por padrão. Dúvidas na instalção? deixe um comentário.</p>
<p>Se esta extensão estiver habilitada, você terá disponíveis as seguintes funções:</p>
<ul>
<li><span class="refpurpose"><strong>bcscale</strong>($precisao) &#8211; Seta o número de casas decimais (precisão) padrão para todas as funções BCMath do script</span></li>
<li><span class="refpurpose"><strong>bcadd</strong>($n1,$n2,[$precisao]) &#8211; soma 2 números;</span></li>
<li><span class="refpurpose"><strong>bccomp</strong>($n1,$n2,[$precisao]) &#8211; compara $n1 e $n2: se forem iguais retorna 0; 1 se $n1 &gt; $n2, senão -1;</span></li>
<li><span class="refpurpose"><strong>bcdiv</strong>($n1,$n2,[$precisao]) &#8211; Divide $n1 por $n2</span></li>
<li><span class="refpurpose"><strong>bcmod</strong>($n1,$n2,[$precisao]) &#8211; Retorna o resto da divisão de $n1 por $n2</span></li>
<li><span class="refpurpose"><strong>bcmul</strong>($n1,$n2,[$precisão]) &#8211; Multiplica $n1 por $n2</span></li>
<li><span class="refpurpose"><strong>bcpow</strong>($n1,$n2,[$precisao]) &#8211; Retorna $n1 potência de $n2</span></li>
<li><span class="refpurpose"><strong>bcpowmod</strong>($n1,$n2,$mod,[$precisao]) &#8211; O mesmo que bcmod(bcpow($n1,$n2),$mod), mais rápido</span></li>
<li><span class="refpurpose"><strong>bcsqrt</strong>($n1,[$precisao]) &#8211; Retorna a Raiz Quadrada de $n1</span></li>
<li><span class="refpurpose"><strong>bcsub</strong>($n1,$n2,[$precisao]) &#8211; Retorna $n1 &#8211; $n2</span></li>
</ul>
<p><span class="refpurpose">$precisao é um parâmetro opcional para todas as funções, exceto bcscale. O padrão no php.ini é 0, podendo ser alterado via ini_set, ou pelo bcscale.</span></p>
<p>Espero que esta pequena resenha sobre a BCMath seja útil (como foi pra mim&#8230; como foi&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ) . Até a próxima.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duodraco.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duodraco.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=31&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2007/09/26/bcmath-php-fazendo-contas-direitinho/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>Orientação a Objetos &#8211; parte 2</title>
		<link>http://duodraco.wordpress.com/2007/08/28/orientacao-a-objetos-parte-2/</link>
		<comments>http://duodraco.wordpress.com/2007/08/28/orientacao-a-objetos-parte-2/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 02:39:12 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[OOP]]></category>
		<category><![CDATA[PHP Friends]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2007/08/28/orientacao-a-objetos-parte-2/</guid>
		<description><![CDATA[Salve
Na parte 1 falamos sobre o café com leite da Orientação a Objetos no PHP: classes, objetos, atributos e métodos. Desta vez vamos nos aprofundar mais no assunto e falar sobre herança, visibilidade e polimorfismo.
Utilizamos a herança para especializar uma determinada classe. No artigo anterior citamos os cães&#8230; imaginemos aqueles cães como cães comuns, mas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=30&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Salve</p>
<p>Na parte 1 falamos sobre o café com leite da Orientação a Objetos no PHP: classes, objetos, atributos e métodos. Desta vez vamos nos aprofundar mais no assunto e falar sobre herança, visibilidade e polimorfismo.</p>
<p>Utilizamos a herança para especializar uma determinada classe. No artigo anterior citamos os cães&#8230; imaginemos aqueles cães como cães comuns, mas precisamos descrever outro tipo: os cães de guarda, que possuem habilidades que o Max ou o Tirolez não possuem; com OO não precisamos escrever uma classe nova só para o Rush, o pastor alemão do vizinho. Extendemos a classe Cachorro original, herdando suas propriedades e métodos, e alterando o que for conveniente para a nova classe. Por exemplo: podemos dizer que o Rush, ao rosnar induza o cachorro para o qual ele faça de alvo a sentir medo, além de atribuir-lhe um novo método: morder (que originalmente, Max e Tirolez não são capazes de realizar).</p>
<p>Basicamente, para conseguirmos o que descrevi acima, precisamos de extender a classe Cachorro original:</p>
<pre class="brush: php;">
class Cachorro{
  //conteudo original
}
class CaoDeGuarda extends Cachorro{
  function rosnar($outroCachorro){ /*novo conteúdo deste método*/}
  function morder($alvo){ /*conteúdo deste método*/}
}
</pre>
<p>Para que isso funcione, precisamos conhecer alguns conceitos de OOP: visibilidade e polimorfismo</p>
<p><strong>Visibilidade</strong>, que citei na primeira parte, é a declaração de como serão usadas (visíveis) os atributos / métodos  de uma classe; os tipos de visibilidade são private, public e protected. <strong>Private</strong> define que a entidade somente estará acessível em métodos da classe em que a mesma foi declarada. <strong>Public</strong> define que a entidade pode ser acessada tanto por métodos internos, como por processos externos.<strong> Protected</strong> é como a private, porém permite que classes filhas acessem a entidade diretamente, sem sobrescrevê-la, e sem permitir o acesso a chamadas externas ao âmbito da classe/objeto.<br />
Geralmente não usamos muito o protected; usamos na maioria das vezes o private para os atributos e o public para os métodos, quando estamos apenas descrevendo dados.Fazemos isso para que sempre seja necessária a execução de um método para alterar o valor de um atributo, podendo assim validar o novo valor, por exemplo. No PHP5, se não definirmos a visibilidade dos métodos, eles assumem como public, assim como se declararmos os atributos com var (PHP4), para manter a compatibilidade.</p>
<p><strong>Polimorfismo</strong>: conceito pelo qual entende-se que uma classe filha (extendida), pode conter um mesmo método que a classe ancestral, embora sua execução seja diferente da original, reescrevendo o método da classe pai, utilizando a mesma  <strong>assinatura</strong>; esta por sua vez é a maneira como é declarado o método, sua visibilidade, número e tipo de parâmetros e tipo de retorno; como o PHP não é tipado, ou seja, não atribuímos o tipo das variáveis, podemos nos referenciar a assinatura como visibilidade e número de parâmetros de um dado método.</p>
<p>Para entendermos esses conceitos, ai vai um exemplo:</p>
<pre class="brush: php;">
class A{
  private $a1 = '1';
  public $a2 = '2';
  protected $a3 = '3';
  public function mostrar(){
    echo 'Classe A:[';
    echo $this-&gt;a1;
    echo $this-&gt;a2;
    echo $this-&gt;a3;
    echo ']&lt;br /&gt;';
  }
}
class B extends A{
  public function mostrar(){
    //aqui estamos utilizando o polimorfismo para reescrever o método mostrar()
    echo 'Classe B:[';
    echo $this-&gt;a2;
    echo $this-&gt;a3;
    echo $this-&gt;a1;
    echo ']&lt;br /&gt;';
  }
}
$a = new A;
$b = new B;
@$a-&gt;mostrar();//mostra Classe A:[123]
@$b-&gt;mostrar();//mostra Classe B:[23]
echo $a-&gt;a2;//mostra 2
echo $a-&gt;a3;//erro
echo $a-&gt;a1;//o script nao chega aqui
</pre>
<p>Esse exemplo nos dá uma idéia do que acontece às propriedades com suas visibilidades definidas.</p>
<p>Voltando aos nossos cães, podemos dizer que a classe CaoDeGuarda é mais específica que Cachorro, sua classe-pai ou superclasse. Podem perguntar &#8216;Certo, mas o que a tal da visibilidade tem a ver com os cachorros?&#8217;; digo que se na parte 1 declarássemos os métodos com as visibilidades específicas, teríamos que mudar muita coisa naquele codigo, e neste, para que tudo ocorresse bem. E mais: do jeito que está agora, podemos alterar o nome do &#8216;Tirolez&#8217; para &#8216;123testando&#8217; a qualquer momento.<br />
Vamos alterar as classes para ficarem mais adequadas:</p>
<pre class="brush: php;">
class Cachorro{
  private $nome;
  private $raca;
  private $cor;
  private $peso;
  private $saude;
  public function __construct($n,$r,$c,$p,$s=100){
  $this-&gt;nome = $n;
  $this-&gt;raca = $r;
  $this-&gt;cor = $c;
  $this-&gt;peso = (float)$p;
  $this-&gt;saude = (int)$s;
  public function latir(){ /*código que fará o cachorro latir*/ }
  public function rosnar($outroCachorro){ /*código que fará o cachorro rosnar para outro */ }
  public function mijar($onde){ /*código que fará o cachorro urinar em algum lugar */ }
  public function dormir(){ /*código que fará o cachorro dormir e recuperar saúde*/ }
  public function setSaude($novaSaude){
    $this-&gt;saude = (int)($novaSaude &gt; 100) ? 100 :$novaSaude;
  }
  public function getSaude(){
    return $this-&gt;saude;
  }
}
class CaoDeGuarda extends Cachorro{
  function rosnar($outroCachorro){ /*O CaoDeGuarda faz o outroCachorro amedrontar-se*/ }
  function morder($alvo){
    $saudeOriginal = $alvo-&gt;getSaude();
    $saudeDepoisDaMordida = $saudeOriginal*0.9;//o alvo perde 10% da saúde a cada mordida
    $alvo-&gt;setSaude($saudeDepoisDaMordida);
  }
}
</pre>
<p>Bom, podemos fazer a mesma brincadeira da parte 1:</p>
<pre class="brush: php;">$rush = new CaoDeGuarda('Rush','Pastor','Preto/Bege',50);
$ralf = new Cachorro('Ralf','Fox Paulistinha','Preto/Branco',12);
$ralf-&gt;rosnar($rush);//ralf, com seus 30 cm de bravura e estupidez...
$rush-&gt;rosnar($ralf);//agora ele viu o tamanho da encrenca;
while($ralf-&gt;getSaude() &gt; 50){
  $rush-&gt;morder($ralf);
}
//sim, gastamos uma boa grana com o veterinário
</pre>
<p>Assim encerramos esta parte. Na próxima falarei sobre abstração, métodos estáticos, interfaces e mais. Até lá</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duodraco.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duodraco.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=30&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2007/08/28/orientacao-a-objetos-parte-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
		<item>
		<title>Voltando&#8230;</title>
		<link>http://duodraco.wordpress.com/2007/06/24/voltando/</link>
		<comments>http://duodraco.wordpress.com/2007/06/24/voltando/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 01:14:43 +0000</pubDate>
		<dc:creator>duodraco</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://duodraco.wordpress.com/2007/06/24/voltando/</guid>
		<description><![CDATA[Salve
Depois de muito tempo eis que tento novamente me aventurar nas linhas do blog&#8230; tive uns probleminhas com o antigo host e agora estou postando da conta do wordpress.com. Estou estudando bastante coisa e em breve já haverão novos artigos aqui. Aguardem&#8230;
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=20&subd=duodraco&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Salve</p>
<p>Depois de muito tempo eis que tento novamente me aventurar nas linhas do blog&#8230; tive uns probleminhas com o antigo host e agora estou postando da conta do wordpress.com. Estou estudando bastante coisa e em breve já haverão novos artigos aqui. Aguardem&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/duodraco.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/duodraco.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duodraco.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duodraco.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duodraco.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duodraco.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duodraco.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duodraco.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duodraco.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duodraco.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duodraco.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duodraco.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duodraco.wordpress.com&blog=1274316&post=20&subd=duodraco&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://duodraco.wordpress.com/2007/06/24/voltando/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7015c4dbe1016db9f849f9b84c056ca?s=96&#38;d=identicon" medium="image">
			<media:title type="html">duodraco</media:title>
		</media:content>
	</item>
	</channel>
</rss>