<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hlegius &#187; Softwares</title>
	<atom:link href="http://www.hlegius.pro.br/category/softwares/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hlegius.pro.br</link>
	<description>programação, desenvolvimento, tecnologia e muito o que contar.</description>
	<lastBuildDate>Tue, 22 Jun 2010 15:19:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Twig &#8211; Uma outra engine de templates em PHP</title>
		<link>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/</link>
		<comments>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 10:14:47 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[hlegius]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Twig]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=467</guid>
		<description><![CDATA[Fui apresentado ao Twig não há muito tempo, mas logo me interessei pela proposta do projeto: simplicidade e flexibilidade ao trabalhar com templates em PHP.
Resumidamente é um projeto criado pelo Fabien Potencier - para quem não o conhece é o criador do symfony framework &#8211; e salvo engano há rumores de que ele pretende integrar [...]]]></description>
			<content:encoded><![CDATA[<p>Fui apresentado ao <a href="http://www.twig-project.org">Twig</a> não há muito tempo, mas logo me interessei pela proposta do projeto: <em>simplicidade e flexibilidade</em> ao trabalhar com templates em PHP.</p>
<p>Resumidamente é um projeto criado pelo <strong>Fabien Potencier </strong>- para quem não o conhece é o criador do <a href="http://www.symfony-project.org">symfony framework</a> &#8211; e salvo engano há rumores de que ele pretende integrar o Twig à versão 2.x do symfony removendo o PHP super verboso que rola nos templates do symfony desde seu lançamento. <em>* carece fontes concretas</em></p>
<p>Recursos bacanas e uma sintaxe à lá Django nos templates me chamou muita atenção para não só mais olhar, mas sim, testar para ver melhor a ferramenta.</p>
<p>Não demorou para eu testar como ele se portaria diante de objetos no template e para minha tristeza, para ele ler um atributo, depende nada mais, nada menos do que <strong>__get()</strong> e <strong>__isset()</strong>. É possível também, assim como na JSTL ler um atributo iniciado por get. No template você deveria chamá-lo sem esse get. i.e: getFoo() no template seria apenas foo.</p>
<p>Imediatamente, o que vem a mente de quem trabalha com OO ? Quebra brutal de encapsulamento. Sim, <strong>__get() </strong>por mais fácil que possa parecer, quebra totalmente a segurança de uma variável membro, uma vez que os atributos da mesma tornam-se públicos.</p>
<p>Tentei entrar em contato com o Fabien para ver o motivo que o levou a implementar assim. Ele, bem receptivo <em>- ironia mode on -</em> disse-me: se tiver um patch mande-o, do contrário, peço que seja paciente.</p>
<p>Fiz o patch, revi algumas coisas e mantive compatibilidade com o <strong>__get() __isset()</strong> que o Twig originalmente aceita e criei um Fork do <a href="http://github.com/hlegius/Twig">projeto no GitHub</a>.</p>
<p><strong>Features default</strong></p>
<ul>
<li>Suporte a plugins</li>
<li>Variáveis</li>
<li>Leitura de arrays por índices int ou string</li>
<li>Arrays multidimensionais</li>
<li>Objetos (via __get() __isset() apenas)</li>
<li>Objetos alinhados (Nested Objects) com __get() __isset() também</li>
<li>Blocos de controle, loops, etc.</li>
</ul>
<p><strong>Mudanças</strong></p>
<p>Métodos públicos começados por:</p>
<ul>
<li> get</li>
<li>is</li>
<li>has</li>
<li>match</li>
<li>contain</li>
</ul>
<p>Podem ser chamados no template sem qualquer problema sem a necessidade dos métodos mágicos.<br />
Abaixo exemplos funcionais:</p>
<p><code></p>
<pre>//...
/**
 * SomeVar
 * @var string
 */
 private $baz;
 /**
 * Bar Object
 * @var Bar
 */
 private $bar;
 /**
 * Magic String with __get
 * @var string
 */
 public $magic;

 public function __construct() {
    $this-&gt;baz = "Value of Foobar::\$baz";
    $this-&gt;bar = new Bar();
    $this-&gt;magic = 'Magic methods still working !';
 }

 /**
 * @return string
 */
 public function getBaz() {
     return $this-&gt;baz;
 }

 /**
 * @return boolean
 */
 public function hasBaz() {
     return (!empty($this-&gt;baz)) ? true : false;
 }

 private function hasIamNull() {
     return false;
 }

 public function fakehasFoo() {
     return 'I will not be displayed !';
 }

 public function matchesWith($otherString) {
     return ('foo' === $otherString);
 }

 public function getBar() {
     return $this-&gt;bar;
 } // ....</pre>
<p></code></p>
<p>No template teriamos:</p>
<p><code></p>
<pre>&lt;body&gt;
 &lt;h1&gt;Meu título&lt;/h1&gt;
 &lt;p&gt;Bar foo&lt;/p&gt;

 {% if foo.hasBaz %}
 &lt;p&gt;{{ foo.getBaz }}&lt;/p&gt;
 {% endif %}

 {% if foo.hasIamNull %}
 &lt;p&gt;{{ foo.getBaz }}&lt;/p&gt;
 {% endif %}

 &lt;p&gt;{{ foo.getAbstractBaz }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getIamPublic }}&lt;/p&gt;

 &lt;p&gt;{{ foo.fakehasFoo }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getBar.getHlegius }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getBar.getBarFoo.getTwig }}&lt;/p&gt;
 &lt;p&gt;{{ foo.getBar.getBarFoo.tryToCallMe }}&lt;/p&gt; &lt;!-- private function, fails. --&gt;

 &lt;p&gt;{{ foo.methodThatIsnotExists }}&lt;/p&gt; &lt;!-- without error --&gt;

 {% if foo.matchesWith('foo') %}
 &lt;p&gt;Yeah, it's matches !&lt;/p&gt; &lt;!-- will matches --&gt;
 {% endif %}

 {% if foo.matchesWith('baz') %}
 &lt;p&gt;Yeah, it's matches again :S !&lt;/p&gt; &lt;!-- will NOT matches --&gt;
 {% endif %}</pre>
<p></code></p>
<p>Métodos não permitidos, índices não existentes e outros tipos de erros são omitidos por default.</p>
<p>Ainda penso em melhorar e implementar mais coisas ao projeto. Minha ideia inicial é ir sempre atualizando do projeto oficial para não distanciar-se muito. O patch eu também encaminhei ao próprio Fabien, mas ainda ele sequer respondeu ao meu e-mail.</p>
<p>Quem já utiliza o Twig e quiser testar <a href="http://github.com/hlegius/Twig">essa nova versão mais &#8220;Object-oriented friendly&#8221;</a> farei questão de dar total suporte e apoio para mantê-la up to date <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Há ainda, exemplos de uso e do que você pode fazer com o Twig que eu modifiquei. Detalhes você encontra no <a href="http://github.com/hlegius/Twig/tree/master/examples/">diretório examples</a> do projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando o Zend Debugger</title>
		<link>http://www.hlegius.pro.br/configurando-o-zend-debugger/</link>
		<comments>http://www.hlegius.pro.br/configurando-o-zend-debugger/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 10:00:31 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend debugger zendstudio]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/configurando-o-zend-debugger/</guid>
		<description><![CDATA[Conforme prometido no Review do Zend Studio 7 , estarei tentando facilitar a configuração do Zend Debugger e também do Zend Studio na máquina.
É um processo teoricamente simples e sem mistérios, porém, o que muito vejo são pessoas com dificuldades em utilizá-lo da maneira correta. Acho que falta as vulgas tips para reduzir tais incidentes.
Vou [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme prometido no <a href="http://www.hlegius.pro.br/zend-studio-7-review/" target="_blank">Review do Zend Studio 7</a> , estarei tentando facilitar a configuração do Zend Debugger e também do Zend Studio na máquina.</p>
<p>É um processo teoricamente simples e sem mistérios, porém, o que muito vejo são pessoas com dificuldades em utilizá-lo da maneira correta. Acho que falta as vulgas <em>tips</em> para reduzir tais incidentes.</p>
<p>Vou dividir a configuração básica em duas partes. São elas:</p>
<ol>
<li>Configurando o Zend Debugger no Windows</li>
<li>Configurando o Zend Debugger no Linux</li>
</ol>
<p>Após a configuração particular em cada ambiente, teremos:</p>
<ul>
<li>Configurações no Zend Studio (comum para ambos ambientes)</li>
<li>Configurações na Zend Toolbar</li>
<li>Exemplos de uso</li>
<li>Troubleshoot</li>
</ul>
<p>Note que após baixar o Zend Studio, você não precisará de mais nada pois o pacote de mais de 300MB trás consigo além do Zend Studio os itens:</p>
<ul>
<li>Manual do PHP</li>
<li>Manual do Zend Studio</li>
<li>Zend Debugger (vamos precisar)</li>
<li>Zend Toolbar for Mozilla Firefox, Internet Explorer e Google Chrome (vamos precisar)</li>
<li>PHP 5.2 e PHP 5.3</li>
<li>PHPUnit plugin</li>
<li>Ambiente JRE (Java Runtime Environment - para rodar o Zend Studio)</li>
<li>Todos plugins que o Zend Studio tem por default</li>
</ul>
<p><strong>Nota</strong>: desative quaisquer outros debuggers. Isto inclui o famoso Xdebug. Ao final explico como deixar ambos ativados &#8211; e falo o porque de ambos ativos antes que alguém me xingue =P</p>
<p><strong>1. Configurando o Zend Debugger no Windows</strong></p>
<p>Vou usar aqui a variável <strong>$ZEND_DIR</strong> para designar o caminho até a instalação do Zend Studio. No meu caso é: <em>C:\Program Files\Zend\</em></p>
<p><em> </em>Misteriosamente no Windows a biblioteca ZendDebugger.dll que acompanha o Zend Studio não funciona. Também não é para menos: a disponível no site tem 893kb, contra 132kb da que acompanha o Studio. No Linux isto não ocorre, tornando tudo mais estranho ainda. De qualquer modo, perguntei para eles o motivo.</p>
<p>Então, nosso primeiro passo é baixar o <a title="Download Zend Debugger" href="http://www.zend.com/en/products/studio/downloads" target="_blank">ZendDebugger do site</a> . Após baixar, descompacte o conteúdo em um diretório temporário e copie apenas a biblioteca ZendDebugger.dll para o diretório que você vai criar: $ZEND_DIR\debug. Deverá estar assim:</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger1.PNG"><img class="aligncenter size-medium wp-image-427" title="Diretório após pegar o ZendDebugger" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger1-300x76.PNG" alt="Diretório após pegar o ZendDebugger" width="300" height="76" /></a></p>
<p>Procure seu arquivo php.ini &#8211; caso não saiba onde esteja um php -i ou rodar o phpinfo() no servidor pode ajudar <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ao final dele você deve colocar:</p>
<pre>; The section name is optional, but it's always a good idea to add it,
; especially if you are not using a separate file
[Zend]

; This directive needs the full path to the Zend Debugger DLL.
zend_extension_ts="C:\Program Files\Zend\debug\ZendDebugger.dll"

; This directive allows Zend Debugger to start a debug session with:
; 127.0.0.1/32 - Zend Studio on the same computer
; 192.168.0.1/32 - Zend Studio on a computer with IP address 192.168.0.1
; 10.0.0.0/8 - Zend Studio on any computer with IP starting with 10.
zend_debugger.allow_hosts=127.0.0.1/32

; This directive allows Zend Debugger to expose itself
; upon request (this is used in some service functionality).
; The possible options are:
; never - do not expose (default)
; always - expose to whoever wants to know
; allowed_hosts - expose only if the request comes from an IP listed above
zend_debugger.expose_remotely=always</pre>
<p>Certifique-se do caminho correto em <em>zend_extension_ts</em> e em allow_hosts, caso queira adicionar mais IPs, apenas coloque uma virgula separando-os.</p>
<p>Agora procure por:</p>
<pre>; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block.  This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block.  Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
implicit_flush = On</pre>
<p>Certifique-se que esteja On. Reinicie seu Apache, Lighttpd, IIS,&#8230;</p>
<p>Acessando seu phpinfo() novamente, você deverá ver a entrada do Zend Debugger:</p>
<p><img class="aligncenter size-full wp-image-428" title="PHPinfo - Zend Debugger" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger2.png" alt="PHPinfo - Zend Debugger" width="359" height="60" /></p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger3.PNG"><img class="aligncenter size-medium wp-image-429" title="Entrada no phpinfo" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger3-300x137.PNG" alt="Entrada no phpinfo" width="300" height="137" /></a></p>
<p>Com isto a instalação do Zend Debugger está concluída. Em caso de problemas, certifique-se do caminho até a DLL do ZendDebugger ou ainda tente desativar os debuggers que você possa ter instalado ou ainda <em>extensions</em> adicionais para cache, performance e etc.</p>
<p><strong>2. Configurando o Zend Debugger no Linux</strong></p>
<p>Diferentemente do Windows, a instalação no Linux não requer baixar o ZendDebugger do site, pois a versão que acompanha o Zend Studio funciona perfeitamente igual <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Assumindo $ZEND_DIR como diretório base do Zend Studio. No meu caso é: /usr/local/Zend/</p>
<p>Localize seu php.ini . Como eu instalo tudo separado, o meu encontra-se em /etc/php/php.ini. Você pode usar o comando # find / -name php.ini para localizá-lo ou ainda, rodar o phpinfo() que também serve.</p>
<p>Ao final do arquivo, coloque:</p>
<pre>[Zend]
zend_extension="$ZEND_DIR/ZendStudio-7.1.1/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.7.v20091116/resources/php5/ZendDebugger.so"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
[Debugger]
zend_extension_manager.debug_server_ts="$ZEND_DIR/ZendStudio-7.1.1/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.7.v20091116/resources/php5/"
zend_debugger.expose_remotely=allowed_hosts</pre>
<p>O caminho não há quebra de linha <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Note a versão do meu Zend Studio. Isto pode acabar mudando a versão do plugin também.</p>
<pre> org.zend.php.debug.debugger.linux.x86_64_5.3.7.v20091116</pre>
<p>O seu pode ser bem diferente disto. até o .linux deverá ser semelhante. Depois disto, vem a arquitetura do sistema operacional (aqui é 64bits) a versão do Debugger e por fim a versão de atualização. Com um ls no diretório de plugins você acha a versão correta ao seu caso.</p>
<p>Procure ainda no php.ini por:</p>
<pre>; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block.  This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block.  Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
implicit_flush = On</pre>
<p>Certifique-se de que esteja On. O comentário acima do comando já diz o porque temos que deixá-lo ativado =P<br />
Salve e reinicie o Apache ou Lighttpd.</p>
<p>Acesse seu phpinfo e você deverá encontrar as seguintes entradas:</p>
<p style="text-align: center;"><img class="aligncenter" title="PHPinfo - Zend Debugger" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger2.png" alt="PHPinfo - Zend Debugger" width="359" height="60" /></p>
<p style="text-align: center;"><img class="aligncenter" title="Entrada no phpinfo" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/windebugger3-300x137.PNG" alt="Entrada no phpinfo" width="300" height="137" /></p>
<p style="text-align: center;">
<p style="text-align: left;">Com isto sua configuração no Linux está concluída <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">
<p><strong>3. Configurações no Zend Studio</strong></p>
<p>Assumindo que seu Zend Debugger está devidamente instalado, vamos as configurações no Zend Studio:</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf1.PNG"><img class="aligncenter size-medium wp-image-430" title="Debug conf no Zend Studio" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf1-300x261.PNG" alt="Debug conf no Zend Studio" width="300" height="261" /></a>Certifique-se de possuir uma configuração semelhante.</p>
<p>Na linha PHP Debugger, clique em <em>Configure&#8230;</em><br />
Selecione o Zend Debugger na listagem e  clique em <em>Configure</em></p>
<p><em><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf2.PNG"><img class="aligncenter size-medium wp-image-431" title="Zend Debugger" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf2-300x277.PNG" alt="Zend Debugger" width="300" height="277" /></a> </em></p>
<p>Mantenha essa configuração. Muito provavelmente você não precisará editar nada. Atenção apenas para o Client Host/IP:</p>
<p>Retornando à primeira tela, agora na linha<strong> Server:</strong> clique em <em>PHP Servers&#8230;<br />
</em>Selecione <strong>Default PHP Web Server</strong> e clique em <em>Edit</em><em> </em></p>
<p><em><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf3.PNG"><img class="aligncenter size-medium wp-image-432" title="Path Map configuration" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendstudioconf3-300x281.PNG" alt="Path Map configuration" width="300" height="281" /></a> </em></p>
<p>Muita atenção nesta parte: tudo que estiver listado ali será reconhecido pelo Zend Debugger como parte do projeto e portanto passível de debugar. O que não constar ali ele simplemente terá como &#8220;ok&#8221; e mesmo que você venha a colocar um breakpoint no código que não está contido no Path Mapping, ele irá ignorá-lo.</p>
<p>Por padrão, todo projeto que você cria no Zend Studio, ele automaticamente seta o próprio projeto na lista, e cada projeto tem o seu próprio Path Mapping. Por isso mesmo eu com 6 projetos setados na minha Workspace ele apenas está listando o projeto que está atualmente aberto. Caso eu abra e peça para ele debugar outro projeto, ele adiciona a lista esse meu outro projeto automaticamente.</p>
<p>Certo. Se ele adiciona automaticamente porque tenho que saber disto ?<br />
Simples ! Você pode estar usando bibliotecas de terceiros ou usando sua própria biblioteca e não tê-la incluida ali significa que o Zend Studio não irá debugá-la.</p>
<p>Para finalizar, copie o <a href="http://gpl.hlegius.pro.br/coding/dummy.phps" target="_blank">conteúdo que coloquei online</a> e salve-o como <strong>dummy.php</strong> na raiz de seu Servidor HTTP. Ele deverá estar acessível através do http://seuip/dummy.php e não é necessário colocar um em cada projeto, porém se você usa virtualhosts deverá ser um por virtualhost. Sem isto, o Debugger não funciona. A Zend disponibiliza este arquivo porém eu não me recordo se vem com o ZendDebugger ou se eu o peguei de outra fonte no site deles.</p>
<p>Neste ponto você já pode debugar um Script PHP ou uma URL que você forneça. Explicarei isto mais abaixo na parte <em>Exemplos de uso.</em></p>
<p><em> </em></p>
<p><strong>4. Configurando o Zend Toolbar<em> </em></strong></p>
<p>Durante a instalação ele configura a Zend Toolbar para o Internet Explorer. Para configurá-la no Firefox é simples:</p>
<p>Com o browser aberto acesse o caminho: $ZEND_DIR/ZendStudio-(sua_versao)/toolbars e clique em <em>ZendFirefoxToolbar-2.2.xpi.<br />
</em>Instale e reinicie o Mozilla Fx.<em><br />
</em></p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar1.PNG"><img class="aligncenter size-medium wp-image-433" title="Instalando a Zend Toolbar" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar1-300x124.PNG" alt="Instalando a Zend Toolbar" width="300" height="124" /></a></p>
<p>Após reiniciar o Firefox e com o Zend Studio aberto, vá na ZendToolbar em <strong><em>Extra Stuff -&gt; Settings</em></strong></p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar2.PNG"><img class="aligncenter size-full wp-image-434" title="ZendToolbar configs" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar2.PNG" alt="ZendToolbar configs" width="410" height="428" /></a></p>
<p>Certifique-se do caminho setado em <em>Zend Studio Executable </em>que geralmente vem errado <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  e o Zend Studio Broadcasting Port que deverá ser igual ao meu.<br />
Após isto, clique em Test e o resultado deverá ser:</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar3.PNG"><img class="aligncenter size-full wp-image-435" title="Zend Toolbar ok" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zendtoolbar3.PNG" alt="Zend Toolbar ok" width="401" height="239" /></a></p>
<p>Com isto a configuração do Zend Studio, Zend Debugger e Zend Toolbar estão concluídas.</p>
<p><strong>5. Exemplos de uso</strong></p>
<p>Para exemplificar melhor, vamos criar um pequeno projeto no Zend Studio.<br />
<strong>New -&gt; PHP Project </strong></p>
<p>Coloque o nome Zend ou qualquer outro e finalize.</p>
<p>Ele terá três arquivos: São eles: <a href="http://gpl.hlegius.pro.br/coding/zendstudio-example/Foobar.phps" target="_blank">Foobar.php</a> <a href="http://gpl.hlegius.pro.br/coding/zendstudio-example/Finaliza.phps" target="_blank">Finaliza.php</a> e <a href="http://gpl.hlegius.pro.br/coding/zendstudio-example/index.phps" target="_blank">index.php</a> . Salve-os em seu projeto.</p>
<p>Acesse http://seuip/projeto/index.php com o Mozilla Firefox. Deverá aparecer na tela o conteúdo:</p>
<pre>Uma string qualquerFinalizando</pre>
<p>Agora, clique em Debug na Zend Toolbar. Talvez ele pergunte sobre abrir a perspectiva de Debugging. Marque para sempre tomar esta ação e dê ok.</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio.png"><img class="aligncenter size-medium wp-image-438" title="PHP Debug Perspective" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio-300x169.png" alt="PHP Debug Perspective" width="300" height="169" /></a></p>
<p>Note que ele está parado na primeira linha do arquivo:</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio2.png"><img class="aligncenter size-full wp-image-439" title="ZendDebug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio2.png" alt="ZendDebug" width="323" height="218" /></a></p>
<p>Suas opções são:</p>
<ul>
<li>F5: entra no método/classe que esteja dentro do seu Path Mapping. Caso não esteja, ele executa a ação normalmente e vai para a próxima instrução.</li>
<li>F6: executa a linha corrente e segue para a próxima instrução</li>
<li>F7: executa a linha corrente e sobe um nível (usando quando você aperta F5 sem querer :p)</li>
<li>F8: executa todo até encontrar um <em>breakpoint</em></li>
<li><em>Ctrl + F2: mata a sessão de debugging sem finalizar o script.</em></li>
</ul>
<p>Estas opções que listei, você encontrará na barra que está na aba Debug.</p>
<p style="text-align: center"><img class="aligncenter" title="Zend Toolbar" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio3.png" alt="Zend Toolbar" width="280" height="38" /></p>
<p style="text-align: left">Aperte F6 até ele ficar sobre a linha 6, $objFoo = new Foobar(); e então, aperte F5.<a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio4.png"><img class="aligncenter size-full wp-image-442" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio4.png" alt="Zend Debug" width="479" height="175" /></a>Note que ele abriu a classe <em>Foobar</em> e parou sobre a primeira linha dentro do construtor da classe. Repare na aba <strong>Variables</strong> que até aquele ponto, a variável membro <em>baz</em> está nula.</p>
<p style="text-align: left"><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio5.png"><img class="aligncenter size-full wp-image-443" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio5.png" alt="Zend Debug" width="432" height="144" /></a></p>
<p style="text-align: left">Pressionando novamente F5 ou F6, você será enviado para a linha que contém a chave que fecha o método construtor. Neste ponto, <em>baz</em> possui o valor <em>bar</em> que contém três caracteres.</p>
<p style="text-align: left">Apertando F6 ou F5 novamente, ele retornará a index.php sob a linha $objFoo-&gt;finaliza(). Caso decida pelo F5, ele entrará no método. Caso F6, ele executará a ação do método (e seus subníveis) e passará para a próxima instrução &#8211; que em nosso caso seria a próxima linha.</p>
<p style="text-align: left">Siga com F5 ou F6 até o término do script para acompanhar a evolução e modificação das variáveis.</p>
<p style="text-align: left"><strong>Breakpoints</strong></p>
<p style="text-align: left">Quem nunca usou um debug, talvez não conheça o que venha a ser um breakpoint. Ele na forma literal é um ponto de parada do debug <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left">Vamos como exemplo, setar um na classe Foobar na linha 20. Para tal, você pode clicar duas vezes ao lado do número que identifica a linha ou então, com o cursor sobre a linha usar <em>Ctrl + Shift + B</em></p>
<p style="text-align: left"><em><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio6.png"><img class="aligncenter size-full wp-image-444" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio6.png" alt="Zend Debug" width="312" height="124" /></a></em>Um ponto ficará ao lado da linha identificando que há um breakpoint ativo. Novamente clique em Debug na toolbar. Ao abrir o Debug na primeira linha, pressione F8. Ele deverá parar sob nosso breakpoint.</p>
<p style="text-align: left"><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio7.png"><img class="aligncenter size-full wp-image-445" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio7.png" alt="Zend Debug" width="412" height="192" /></a><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio8.png"><img class="aligncenter size-full wp-image-446" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio8.png" alt="Zend Debug" width="327" height="131" /></a><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio9.png"><img class="aligncenter size-full wp-image-447" title="Zend Debug" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio9.png" alt="Zend Debug" width="260" height="76" /></a></p>
<p style="text-align: left">Na aba Breakpoints você pode desativar ou remover os breakpoints setados sem necessitar abrir arquivo por arquivo para removê-los.<br />
É possível definir condição para que o Debugger pare sobre determinado breakpoint. Para definir a condicional, clique com o botão direito sobre o breakpoint e vá em <em>breakpoint properties</em>.
</p>
<p style="text-align: left">
<p style="text-align: left">Ao lado do botão Debug na Zend Toolbar, há o <em>Debug Menu</em> . Nele há quatro opções: <strong>Current Page; Next Page; All forms (POST) in this site; All pages in this site</strong>. Recomendo que crie formulários, teste em chamadas Ajax, iframes (argh!), redirecionamentos HTTP e tudo mais que use no seu dia-a-dia. O Debugger pega qualquer ação no browser <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left">E como brinde por ter configurado o Zend Debugger, você tem o Profile da página atual. Bastando para tal clicar em Profile.</p>
<p style="text-align: left"><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio10.png"><img class="aligncenter size-medium wp-image-448" title="Zend Profiler" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/debuggingstudio10-300x214.png" alt="Zend Profiler" width="300" height="214" /></a>Enjoy <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: left">
<p><strong>6. Troubleshoot</strong></p>
<p><strong>Habilitando o Xdebug junto com o Zend Debugger</strong></p>
<p>A utilidade disto é que o Xdebug fornece recursos como: highlight de variáveis var_dump() &#8211; que não vamos mais usá-la como debugger &#8211; controle contra loopings infinitos, o trace completo quando encontramos Warning ou Fatal Errors e alguns outros mimos que o Zend Debugger não trás &#8211; ou eu os desconheço <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Para habilitar ambos, abra seu php.ini. E mude a entrada do Xdebug de:</p>
<pre>;zend_extension=php_xdebug.dll</pre>
<p>para</p>
<pre>extension=php_xdebug.dll</pre>
<p>O mesmo vale para a versão Linux, mudando apenas para .so</p>
<p><strong>Ele não para sob os breakpoints que setei</strong></p>
<p>Verifique o Path Mapping se o mesmo contém seu projeto listado. Caso não, adicione manualmente o projeto ao Path Mapping e tente novamente.</p>
<p><strong>Uso biblioteca externa &#8211; Propel, Symfony, Zend.. e toda vez que chamo o debugger recebo a tela</strong>:<a href="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zenddebuggererror.jpg"><img class="aligncenter size-medium wp-image-449" title="Path Mapping with external libs" src="http://www.hlegius.pro.br/wp-content/uploads/2010/01/zenddebuggererror-300x242.jpg" alt="Path Mapping with external libs" width="300" height="242" /></a>O problema é novamente o <strong>Path Mapping</strong>. Adicione o caminho da sua lib externa ao Path Mapping (veja como na sessão de configuração do Zend acima) e tente novamente.</p>
<p>Para finalizar&#8230;</p>
<p>Há um <a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=962" target="_blank">excelente artigo em inglês</a> que explica como configurar o ZendDebugger no Linux e Windows e ainda explica o funcionamento do Debugger sobre a aplicação web. Vale a pena a leitura.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/configurando-o-zend-debugger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Opera. Por quê não ?</title>
		<link>http://www.hlegius.pro.br/opera-por-que-nao/</link>
		<comments>http://www.hlegius.pro.br/opera-por-que-nao/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 23:20:26 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Rápidas]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=308</guid>
		<description><![CDATA[Isso realmente eu &#8211; e boa parte do mundo tech, penso eu &#8211; não entende: por quê raios o Opera não colou nos PC&#8217;s ? o Chrome logo-logo passará o browser que como dizem por aí: &#8220;. já tinha tudo isso que anunciam como novidade desde 1970&#8220;.
Ele tem:

Speed Dial
Sincronização online de favoritos, plugins e anotações [...]]]></description>
			<content:encoded><![CDATA[<p>Isso realmente eu &#8211; e boa parte do mundo tech, penso eu &#8211; não entende: por quê raios o <a href="http://www.opera.com" target="_blank">Opera</a> não colou nos PC&#8217;s ? o Chrome logo-logo passará o browser que como dizem por aí: &#8220;<em>. já tinha tudo isso que anunciam como novidade desde 1970</em>&#8220;.</p>
<p>Ele <strong>tem</strong>:</p>
<ul>
<li>Speed Dial</li>
<li>Sincronização online de favoritos, plugins e anotações (e 0800)</li>
<li>Tabs</li>
<li>Sessão de navegação</li>
<li>Histórico de tabs fechadas</li>
<li>Widgets (não se compara a quantidade disponível para o Firefox, mas existem e funcionam :O)</li>
<li>Gerenciador de downloads com opções de Pause, Continue, Reinicio.</li>
<li>Personalizável &#8211; temas, barras de informações</li>
<li>Editor de preferências no <em>opera:config</em></li>
<li>RSS embutido e com estilo default para leitura de RSS diretamente nele</li>
<li>Redimensionamento da página (caso ela seja maior que a resolução do teu monitor) (configurável, claro)</li>
<li>Ahn. Falei que ele é rápido ?</li>
</ul>
<p>O Firefox é um excelente browser de fato, mas não entendo porque cargas d&#8217;água o Opera não é o browser dominante :/ Talvez a logomarca não seje <em>cool</em> o suficiente, vai saber&#8230;</p>
<p>Por quê <strong>você</strong> não usa o Opera ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/opera-por-que-nao/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Removendo .svn dos seus projetos no Linux</title>
		<link>http://www.hlegius.pro.br/removendo-svn-dos-seus-projetos-no-linux/</link>
		<comments>http://www.hlegius.pro.br/removendo-svn-dos-seus-projetos-no-linux/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 23:24:37 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[aplicativos]]></category>
		<category><![CDATA[shellscript]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/removendo-svn-dos-seus-projetos-no-linux/</guid>
		<description><![CDATA[Salve!
Depois de um longo período de sofrimento com os benditos .svn na hora da publicação ou empacotamento do projeto eu tomei coragem e criei um script em shell para que me auxiliasse a acabar com esse problema.
Sem muito papo, o script é ultra simples: basicamente copia seu projeto para um diretório e dessa cópia ele [...]]]></description>
			<content:encoded><![CDATA[<p>Salve!</p>
<p>Depois de um longo período de sofrimento com os benditos .svn na hora da publicação ou empacotamento do projeto eu tomei coragem e criei um script em shell para que me auxiliasse a acabar com esse problema.</p>
<p>Sem muito papo, o script é ultra simples: basicamente copia seu projeto para um diretório e dessa cópia ele remove todos .svn que ver pela frente. No final eu tenho o diretório do projeto intacto e a cópia limpinha sem .svn para eu mandar pro cliente, publicar na web e etc.</p>
<p>Fiz um sisteminha interativo com menu de ajuda e um texto explicando como funciona tudo legalzinho, pois, acho que não sou o único a sofrer com esse problema.</p>
<p>Para quem se interessou pelo script, disponibilizo o link para download do mesmo: <a href="http://gpl.hlegius.pro.br/linux/svnclean.sh">http://gpl.hlegius.pro.br/linux/svnclean.sh</a><br />
Baixe, dê permissão de execução e teste rodando o comando:</p>
<div class="igBar"><span id="lcode-4"><a href="#" onclick="javascript:showPlainTxt('code-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-4">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ ./svnclean ./diretorio_do_projeto </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Se quiser um log, eu criei duas formas: log diretamente na saída do terminal, ou log em arquivo de texto.<br />
Para o log direto, só adicionar -v no final; para o log em arquivo, adicione -vv</p>
<div class="igBar"><span id="lcode-5"><a href="#" onclick="javascript:showPlainTxt('code-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-5">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ ./svnclean ./diretorio_do_projeto -vv </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Para ajuda, digite:</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ ./svnclean </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Para aqueles que programam muito em Shell Script, realmente peço que não considere a qualidade e a quantidade de linhas, pois não uso muito o shell script =X</p>
<p>Fica aí a dica. Espero que ajude alguém <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/removendo-svn-dos-seus-projetos-no-linux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Música online ? Last.fm !</title>
		<link>http://www.hlegius.pro.br/musica-online-lastfm/</link>
		<comments>http://www.hlegius.pro.br/musica-online-lastfm/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 23:43:09 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[lastfm]]></category>
		<category><![CDATA[web2]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/musica-online-lastfm/</guid>
		<description><![CDATA[Esse é um daqueles posts estilo visita ao médico. Coisa rápida, rapidíssima, diria.
Papo é o seguinte: todos nós temos (ou quase todos os mortais) a nossa própria biblioteca musical em nossos computadores de produção/teste/criação, só que há dias em que você, ou melhor, eu, quero ouvir coisas novas relacionadas à meu "paladar" musical.
Eu já usava [...]]]></description>
			<content:encoded><![CDATA[<p>Esse é um daqueles posts estilo visita ao médico. Coisa rápida, rapidíssima, diria.<br />
Papo é o seguinte: todos nós temos (ou quase todos os mortais) a nossa própria biblioteca musical em nossos computadores de produção/teste/criação, só que há dias em que você, ou melhor, eu, quero ouvir coisas novas relacionadas à meu "paladar" musical.</p>
<p>Eu já usava um recurso excelente para conhecer novas músicas, bandas e estilos, mas não havia me dado conta. Sim, o <a href="http://lastfm.com.br">Last.fm</a> é um excelente aplicativo para isto. Como eu <strong>nunca</strong> havia usado o renomado Scrobbler do Last.fm, resolvi baixar o Software nativo para Linux.</p>
<p><a href='http://www.hlegius.pro.br/wp-content/uploads/2008/10/lastfm.png' title='Aplicativo Last.fm Linux'><img src='http://www.hlegius.pro.br/wp-content/uploads/2008/10/lastfm.png' alt='Aplicativo Last.fm Linux' width="100%" /></a></p>
<p>E não é que o treco é bom ? Defini buffer de 512k por vez para não ter que puxar várias vezes por música e pronto. Ouço minhas melodias através de sugestões ao estilo que costumo ouvir, às vezes "As minhas recomendações" baseadas no <a href="http://lastfm.com.br/user/hlegius">meu perfil</a> lá no Last.fm ou então, posso ouvir as músicas da lista que eu criei lá no site. Tudo sem comprometer o meu pequeno link de 512k up/down.</p>
<p>Ao que me parece, para os <strong>não assinantes</strong> só a opção "Minhas rádio pessoal" não estará disponível além de "não haver total preferência" nos servidores de aúdio que eles têm por lá. Mas se você gostar, poderá assinar mensalmente por US$ 3 ao mês, e olhe, realmente compensa <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Fica aí a dica <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/musica-online-lastfm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opensource além de tudo não é burocrático</title>
		<link>http://www.hlegius.pro.br/opensource-alem-de-tudo-nao-e-burocratico/</link>
		<comments>http://www.hlegius.pro.br/opensource-alem-de-tudo-nao-e-burocratico/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:24:41 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Software livre]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/opensource-alem-de-tudo-nao-e-burocratico/</guid>
		<description><![CDATA[Por várias vezes eu li em fóruns, blogs e sites de notícias, principalmente quando alguma aplicação OpenSource "falha", pessoas comentando: "Ele poderia cobrar $ 0,10 por download, assim teria estimulo para continuar  a fazer a aplicação e a faria melhor".

Só que se pararmos para pensar, a coisa não é tão simples quanto parece. Cobrar [...]]]></description>
			<content:encoded><![CDATA[<p>Por várias vezes eu li em fóruns, blogs e sites de notícias, principalmente quando alguma aplicação OpenSource "falha", pessoas comentando: "Ele poderia cobrar $ 0,10 por download, assim teria estimulo para continuar  a fazer a aplicação e a faria melhor".</p>
<p><img src='http://www.hlegius.pro.br/wp-content/uploads/2008/09/cobranca.jpg' alt='Cobrança' /></p>
<p>Só que se pararmos para pensar, a coisa não é tão simples quanto parece. Cobrar por um software requer vários pré-requisitos e isto traz burocracia tanto para quem deseja <strong>comprar</strong>  quanto para quem deseja <strong>vender</strong> o software.</p>
<p>Vamos pegar como exemplo, o <a href="http://chrispederick.com/work/web-developer/">Web developer</a>, software - na realidade uma extension do <a href="http://mozilla.com">Firefox</a> - com diversos recursos para os desenvolvedores web. Sem sombra de dúvidas é um software bem baixado na rede diariamente e se o desenvolvedor cobrasse os $ 0,10 centavos propostos certamente ele estaria com uma quantidade boa de grana, isto é fato, porém ele teria também uma dor-de-cabeça imensa com o gerenciamento disto vejamos o por quê:</p>
<p><strong>A compra</strong><br />
Eu, desenvolvedor web há algum tempo já possuo cartão de crédito internacional para comprar coisas na moeda americana. Porém, conheço várias pessoas que ainda não possuem tal regalia do mundo moderno e como o Web developer é mantido por um developer gringo, certamente ele não aceita boleto bancário ou <a href="http://pagseguro.com.br">PagSeguro</a>, por exemplo.<br />
Você pode dizer: "são minoria". Bom se é eu não sei. Só sei que há vários novatos iniciando na carreira de programador/designer aqui no Brasil com seus 15, 16 anos e estes certamente não tem tal cartão internacional para debitar os $ 0,10 cobrados pelo criador do software.</p>
<p>Se você acha que estou exagerando, certamente é porque não pegou o <a href="http://flickr.com">Flickr</a> na época em que aceitavam apenas cartão de crédito internacional como forma de pagamento. O que tinha de post no fórum deles com nego reclamando que <strong>queria comprar a conta pró</strong> mas não podia por não possuir cartão de crédito internacional era incrível. Isso foi tão grave, que o pessoal do Flickr implantou o sistema de boleto bancário para o Brasil porque senão o povo poderia até fazer manifestação em frente a sede do Flickr no Brasil.</p>
<p><strong>O controle</strong><br />
Como sabemos, o brasileiro quando precisa arruma o renomado "jeitinho" para isto. Nós conhecemos como pirataria de software. O desenvolvedor que cobra os $ 0,10 centavos, não ficaria nada feliz com a pirataria do Web developer. Claro que isto tem um lado bom: bem provável que haveriam CD's do Web developer na Santa Ifigênia aqui em São Paulo e ele poderia ser até mais popular do que é hoje.<br />
Então, o developer esperto, precisaria perder mais algumas noites pensando em como criar uma chave de validação, confirmação de pagamento, liberação da chave de validação, equipe anti-pirataria, além das versões demo e etc.<br />
E olha que nem falamos em suporte no idioma do usuário. Imagine você aqui no Brasil ligando para o Suporte do Web developer (pagando DDI) e o cara do outro lado te lança: "<em>Support Web developer guter Tag</em>" - "Suporte Web developer, bom dia" (em alemão, traduzido pelo Google)</p>
<p><strong>Suporte</strong><br />
A partir do momento que alguém vende algo, ele é obrigado por lei - ao menos no Brasil - a prestar a devida manutenção e suporte. Isto ocorre no Opensource ? Sim, se você tiver problemas poderá perfeitamente recorrer ao densenvolvedor o qual irá te ajudar no possível. Tenha certeza de que ele fica feliz com seu contato, mas, à partir do momento em que você é "obrigado" as coisas mudam. É necessário ter um e-mail exclusivo, chat online, telefone, endereço para correspondência e até quem sabe uma central de atendimento com atendimento eletrônico - "Suporte Web developer, bom dia [..]" - para atender a demanda. Ou seja, mais custos.<br />
Sem falar nos revoltados que ficarão putos por algum motivo com o "Suporte" e irão mandar lenha deles em blogs, sites e afins.</p>
<p><strong>Espírito empreendedor</strong><br />
Para manter os negócios de vento em polpa, seria necessário que o desenvolvedor fizesse o plano de negócios, análise de riscos, negociar ações na bolsa, gerenciar o caixa, pagamento da equipe de suporte e etc. Mais que um simples software, o que ele criou virou um monstro !</p>
<p><strong>A solução</strong><br />
A solução é ultra-simples, já existe e ainda tem gente reclamando: doações.<br />
Você, autor da frase: "<em>Ele poderia cobrar $ 0,10 por download, assim teria estimulo para continuar  a fazer a aplicação e a faria melhor</em>" pode <strong>ir até o site do desenvolvedor</strong>, com seu cartão de crédito internacional em punho - ou sua conta do Paypal aberta - e fazer a doação dos $ 0,10 centavos para o cara.</p>
<p>Você usa a ferramenta dele para trabalhar e ganhar seu dinheiro. Ele lá do outro lado trabalha nesse projeto pessoal, você podendo e querendo ajudá-lo a manter isto sempre "up", basta fazer a doação.</p>
<p>Se a palavra <em>doação</em> te soa como esmola ou qualquer outra coisa ruim, não tem problema, respire fundo e clique no botão de "doação". Tão rápido quanto seu clique, você já estará na página de pagamento e daí você pode imaginar que está a comprar tal software.<br />
Assim, você ajuda o developer, contribui para sua continuidade e representa todos aqueles que não tem tal cartão de crédito para fazer a doação ou pagamento, como preferir.</p>
<p>É muito importante ter em mente que entre as palavras <strong>poder</strong> e <strong>ter</strong> há um grande abismo e sem dúvidas eu não listei metade dos empecilhos que há quando resolvemos cobrar pelo software.</p>
<p>Para empresas gigantes como <a href="http://redhat.com">Red Hat</a>, <a href="http://mozilla.org">Mozilla</a>, <a href="http://kde.org">KDE</a> e tantas outras, ter todos estes pré-requisitos talvez não fosse problema, até porque algumas das listadas aí recebem incentivos de empresas ainda maiores porém, quando você é um desenvolvedor solitário e que resolve criar uma ferramenta pequena, mas de grande utilidade mundial, realmente fica impossível bancar toda esta estrutura sem cobrar meros $ 100,00 dólares por isto e obviamente você não dará sua "tecnologia" com o código fonte, pois poderia perder o monopólio do Software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/opensource-alem-de-tudo-nao-e-burocratico/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flickr Pró !</title>
		<link>http://www.hlegius.pro.br/flickr-pro/</link>
		<comments>http://www.hlegius.pro.br/flickr-pro/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 01:23:09 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[hlegius]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[imagens]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/flickr-pro/</guid>
		<description><![CDATA[Resolvi adotar o Flickr como meu álbum "oficial". Ele tem vários recursos e integração com vários outros serviços como o Moo. Graças ao cartão do meu amigo Otávio, consegui assinar a contra Pró e ter os recursos ilimitados, além de estatísticas e algumas coisinhas mais, como 10 cartões Moo grátis!

A partir de agora, minha vida [...]]]></description>
			<content:encoded><![CDATA[<p>Resolvi adotar o <a href="http://www.flickr.com">Flickr</a> como meu álbum "oficial". Ele tem vários recursos e integração com vários outros serviços como o <a href="http://www.moo.com">Moo</a>. Graças ao cartão do meu amigo <strong>Otávio</strong>, consegui assinar a <a href="http://www.flickr.com/photos/hlegius">contra Pró</a> e ter os recursos ilimitados, além de estatísticas e algumas coisinhas mais, como <a href="http://www.flickr.com/upgrade/">10 cartões Moo grátis</a>!</p>
<p><a href="http://www.flickr.com/photos/hlegius/"><img src="http://farm3.static.flickr.com/2276/cols/72157603726592207_46673f79e1_l.jpg" alt="Flickr Pró hlegius" /></a></p>
<p>A partir de agora, minha vida em flash's ficarão todas salvas por lá! =)<br />
Para quem ainda não tem conta no Flickr e anda atrás de um cantinho pra controlar suas fotos, é uma boa pedida criar uma conta no Flickr. Eles tem uma conta gratuita que também é excelente!</p>
<p>E viva o Flickr <a href="http://www.flickr.com/photos/hlegius/"><img src="http://l.yimg.com/www.flickr.com/images/badge_pro.gif.v2" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/flickr-pro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arch Linux: nova logo e tema para Slim</title>
		<link>http://www.hlegius.pro.br/arch-linux-nova-logo-e-tema-para-slim/</link>
		<comments>http://www.hlegius.pro.br/arch-linux-nova-logo-e-tema-para-slim/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 00:47:39 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[arch linux]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/arch-linux-nova-logo-e-tema-para-slim/</guid>
		<description><![CDATA[Depois de muito suspense, finalmente foi anunciado no site oficial do Projeto Arch Linux, a nova logomarca do projeto.

Na minha opinião foi a melhor logomarca realmente. Haviam outros modelos interessantes, porém, o melhor mais "jovem" era este modelo vencedor mesmo.

Com o anuncio do novo modelo, fui logo procurando um tema para o gerenciador de login [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de muito suspense, finalmente foi <a href="http://www.archlinux.org/news/375/">anunciado no site oficial</a> do Projeto <a href="http://www.archlinux.org">Arch Linux</a>, a nova logomarca do projeto.</p>
<p><a href="http://cinderwick.ca/archer/"><img src="http://www.cinderwick.ca/files/archer/vertical.png" alt="nova logomarca do arch linux" /></a></p>
<p>Na minha opinião foi a melhor logomarca realmente. Haviam outros modelos interessantes, porém, o melhor mais "jovem" era este modelo vencedor mesmo.</p>
<p><a href='http://www.hlegius.pro.br/wp-content/uploads/2007/12/slim.png' title='Arch-white Slim theme'><img src='http://www.hlegius.pro.br/wp-content/uploads/2007/12/slim.thumbnail.png' alt='Arch-white Slim theme' /></a></p>
<p>Com o anuncio do novo modelo, fui logo procurando um tema para o gerenciador de login <a href="http://slim.berlios.de/">Slim</a>, porém, encontrei apenas um modelo disponibilizado pelo próprio criador da logo. Com isso, eu criei o meu modelo para o Slim. Mais clean utilizando a nova logomarca do projeto.</p>
<p>O <strong>pacote</strong> comprimido em Zip poderá ser <a href="http://gpl.hlegius.pro.br/linux/slim-arch-white.zip">baixado aqui</a>. Resolução da imagem: 1280x800 pixels.</p>
<p>Apenas descompacte o conteúdo dentro de <em>/usr/share/slim/themes</em> ou <em>/usr/share/themes/slim/</em> e edite o <em>/etc/slim.conf</em> mudando o tema default para <strong>arch-white</strong>. Não manjo nadinha de Gimp, mas consegui fazer esse modelinho simples e clean. Espero que goste <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>O Projeto <a href="http://archlinux-br.org">Arch Linux Brasil</a> provavelmente em breve estará fazendo as modificações para se adequar a nova logo =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/arch-linux-nova-logo-e-tema-para-slim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISO do Ubuntu para equipamentos Dell</title>
		<link>http://www.hlegius.pro.br/iso-do-ubuntu-para-equipamentos-dell/</link>
		<comments>http://www.hlegius.pro.br/iso-do-ubuntu-para-equipamentos-dell/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 11:56:34 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[download]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/iso-do-ubuntu-para-equipamentos-dell/</guid>
		<description><![CDATA[Lendo o Blog Direct2Dell (em inglês), vi num post que a Dell tem em alguns paises computadores com Ubuntu instalado. Quando eu li, finalmente associei: se tem nos equipamentos novos, tem para download!
Procurando, encontrei no próprio site da Dell  a ISO do Ubuntu 7.04 personalizada pela Dell para rodar em seus equipamentos. No blog, [...]]]></description>
			<content:encoded><![CDATA[<p>Lendo o Blog <a href="http://direct2dell.com/">Direct2Dell</a> (em inglês), vi <a href="http://direct2dell.com/one2one/archive/2007/12/18/38935.aspx">num post</a> que a <a href="http://dell.com">Dell</a> tem em alguns paises computadores com <a href="http://ubuntu.org">Ubuntu</a> instalado. Quando eu li, finalmente associei: se tem nos equipamentos novos, tem para download!</p>
<p>Procurando, encontrei no <a href="http://linux.dell.com/dru/">próprio site da Dell</a>  a ISO do Ubuntu 7.04 personalizada pela Dell para rodar em seus equipamentos. No blog, eles dizem que a versão 7.10 do Ubuntu personalizada pela Dell já está pronta e estará ainda esta semana sendo vendida nos computadores novos da Dell nos Estados Unidos.</p>
<p>Dentre as novidades descritas por eles, estão:</p>
<ul>
<li>Ambiente 3D por default para deixar mais amigável o uso</li>
<li>Um sistema de busca na área de trabalho para encontrar facilmente documentos e aplicações</li>
<li>Facilidade para alternar entre usuários facilitando o compartilhamento do sistema com os familiares</li>
<li>Plugin do Flash pré-instalado para melhorar a experiência na web</li>
<li>Recuperação do sistema melhorado com total recuperação pelo HD e possibilidade de gravação através de DVD pelos usuários do equipamento</li>
</ul>
<p>Eu não encontrei ainda essa versão para download, mas, creio que na próxima semana já esteja disponível. Isso é interessante, pois quando chegar ao Brasil - se chegar - teremos algo funcional instalado de fábrica e não um Linux totalmente desconfigurado para a máquina como estamos vendo muitos por aí!</p>
<ul>
<li><a href="http://linux.dell.com/wiki/index.php/Main_Page">Wiki "Dell Linux"</a></li>
<li><a href="http://linux.dell.com/">Página da Dell Linux</a></li>
</ul>
<p>Obviamente, se você fizer o download da ISO do Ubuntu customizada, você não terá direito a suporte por telefone na Dell. Mas eles oferecem uma <a href="http://lists.us.dell.com/mailman/listinfo">mailist</a> para tirar dúvidas.</p>
<p>Vou esperar para sair a versão 7.10 customizada, pois irei testá-la e ver o que realmente mudaram do <a href="http://ubuntu.org">Ubuntu</a> oficial</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/iso-do-ubuntu-para-equipamentos-dell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Contribua com o projeto ArchLinux Brasil</title>
		<link>http://www.hlegius.pro.br/contribua-com-o-projeto-archlinux-brasil/</link>
		<comments>http://www.hlegius.pro.br/contribua-com-o-projeto-archlinux-brasil/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 02:02:35 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[arch linux]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/contribua-com-o-projeto-archlinux-brasil/</guid>
		<description><![CDATA[Vi esse post no blog do Hugo hoje, e resolvi replicá-lo aqui, afinal, documentação é do interesse de todos, sendo ou não usuário ArchLinux.
"O projeto Arch Linux Brasil está com o wiki praticamente pronto (precisando apenas de alguns ajustes) e precisando de contribuições.  No momento ainda existem poucas pessoas documentando/traduzindo no wiki e, por [...]]]></description>
			<content:encoded><![CDATA[<p>Vi <a href="http://hdoria.archlinux-br.org/blog/contribua-com-o-projeto-arch-linux-brasil/">esse post</a> no <a href="http://hdoria.archlinux-br.org/">blog do Hugo</a> hoje, e resolvi replicá-lo aqui, afinal, documentação é do interesse de todos, sendo ou não usuário ArchLinux.</p>
<p>"O projeto Arch Linux Brasil está com o wiki praticamente pronto (precisando apenas de alguns ajustes) e precisando de contribuições. <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> No momento ainda existem poucas pessoas documentando/traduzindo no wiki e, por isso, convido a todos que queiram ajudar o Arch e o projeto de documentação/tradução a se cadastrar no wiki e começar a contribuir.</p>
<p><a href="http://wiki.archlinux-br.org/index.php?title=Como_Participar">Esta página</a> contém instruções sobre como participar do nosso projeto. As traduções que estão sendo feitas (e seus respectivos tradutores) podem ser encontradas <a href="http://wiki.archlinux-br.org/index.php?title=Tradu%C3%A7%C3%B5es">aqui</a>.</p>
<p>Obviamente a tabela da página acima não está completa e existem várias outras documentações e/ou traduções a serem feitas. Quem quiser trabalhar em cima de um documento que ainda não está na tabela, é só adicioná-lo na mesma seguindo o padrão das outras entradas.Qualquer dúvida, sugestão e/ou crítica é só responder este email."</p>
<p>Fonte: <a href="http://hdoria.archlinux-br.org/blog/contribua-com-o-projeto-arch-linux-brasil/">Blog do Hugo Dória</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/contribua-com-o-projeto-archlinux-brasil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
