<?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>Renan Ivo</title>
	<atom:link href="http://www.renanivo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.renanivo.com</link>
	<description>head.dump()</description>
	<lastBuildDate>Sun, 22 Apr 2012 16:31:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Pro Javascript Design Patterns</title>
		<link>http://www.renanivo.com/2012/03/pro-javascript-design-patterns/</link>
		<comments>http://www.renanivo.com/2012/03/pro-javascript-design-patterns/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 03:34:25 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[leitura]]></category>
		<category><![CDATA[livro]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=498</guid>
		<description><![CDATA[Mais um livro de JavaScript lido. Desta vez foi Pro Javascript Design Patterns de Dustin Diaz e Ross Harmes. Fiquei interessado pelo título logo de cara, não conseguia enxergar como certas convenções populares em  outras linguagens iriam se encaixar no estilo &#8220;diferente&#8221; do JS. O livro cumpre bem seu papel de apresentar os Design Patterns [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/159059908X/ref=as_li_ss_il?ie=UTF8&amp;tag=reivbl-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159059908X"><img class="alignright" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=159059908X&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=reivbl-20&amp;ServiceVersion=20070822" alt="" width="121" height="160" border="0" /></a>Mais um livro de JavaScript lido. Desta vez foi <a href="http://www.amazon.com/gp/product/159059908X/ref=as_li_ss_tl?ie=UTF8&amp;tag=reivbl-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159059908X">Pro Javascript Design Patterns</a> de Dustin Diaz e Ross Harmes. Fiquei interessado pelo título logo de cara, não conseguia enxergar como certas convenções populares em  outras linguagens iriam se encaixar no estilo &#8220;diferente&#8221; do JS.</p>
<p>O livro cumpre bem seu papel de apresentar os Design Patterns de forma fácil e mostrar como é possível adaptá-los ao Javascript. Confesso que resisti bastante às concessões feitas para tornar possível a implementação de alguns conceitos, como namespaces, ainda que seja claro o potencial benéfico que têm.</p>
<p>Embora os exemplos sejam bem enfáticos quanto à separação de responsabilidades, o que já era esperado dado que o intuito é ensinar Design Patterns, fiquei incomodado com o estilo do código-fonte. Boa parte das funções e métodos são bem extensos e sem boa legibilidade. Algumas vezes eu simplesmente desisti de entender o que cada linha de código fazia e deduzi pelo nome do método. Provavelmente, não há algum problema de design neles, mas o <a href="https://twitter.com/#!/unclebobmartin/status/50845941359587328">jargão do Uncle Bob</a> ecoou na minha cabeça algumas vezes.</p>
<p>Se você já não gosta de JavaScript, por qualquer motivo, provavelmente este livro não vai mudar a sua opinião. Mas, se você já conhece a liguagem, está acostumado a desenvolver tudo o que precisa sem muita orientação a objetos e separação de reponsabilidades, e já percebeu que isto não é suficiente, este livro pode te ajudar muito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2012/03/pro-javascript-design-patterns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Professional JavaScript for Web Developers, 2nd Edition</title>
		<link>http://www.renanivo.com/2011/07/professional-javascript-for-web-developers-2nd-edition/</link>
		<comments>http://www.renanivo.com/2011/07/professional-javascript-for-web-developers-2nd-edition/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 05:04:42 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[ecmascript]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[livro]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=466</guid>
		<description><![CDATA[Javascript é uma linguagem que tem se tornado cada dia mais importante. Ela percorreu um grande caminho desde os longínquos tempos em que servia apenas para validar formulários e impressionar os amigos, passando pela revolução do AJAX e interfaces ricas, até chegar nos dias de hoje com novas possibilidades do HTML5 e Node.js. Diante de [...]]]></description>
			<content:encoded><![CDATA[<p><a class="alignleft" href="http://www.amazon.com/gp/product/047022780X/ref=as_li_qf_sp_asin_il?ie=UTF8&#038;tag=reivbl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=047022780X"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=047022780X&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=reivbl-20&#038;ServiceVersion=20070822" ></a>Javascript é uma linguagem que tem se tornado cada dia mais importante. Ela percorreu um grande caminho desde os longínquos tempos em que servia apenas para validar formulários e impressionar os amigos, passando pela revolução do AJAX e interfaces ricas, até chegar nos dias de hoje com novas possibilidades do <a href="http://www.w3.org/TR/html5/">HTML5</a> e <a href="http://nodejs.org/">Node.js</a>. Diante de todo este movimento, eu precisava aprofundar meus conhecimentos na linguagem.</p>
<p>Muitos são os livros que abordam o Javascript, mas o <a href="http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X/ref=sr_1_1?ie=UTF8&amp;qid=1310705535&amp;sr=8-1">Professional Javascript for Web Developers</a> me pareceu ser aquilo que eu precisava. Em seu índice, encontrei desde conceitos básicos, como variáveis e escopo, até outros mais novos, como <a href="http://www.webreference.com/authoring/languages/html/HTML5-Client-Side/">Client-Side Storage</a>.</p>
<p>Durante a leitura, me surpreendi ao descobrir pequenas armadilhas e pormenores interessantes mesmo em capítulos onde eu não esperava novidades. Pude entender conceitos como: O que é <a href="http://en.wikipedia.org/wiki/Ecmascript">ECMAScript</a>, <a href="https://developer.mozilla.org/en/DOM_Levels">DOM Levels</a>, Como evitar alguns <a href="http://javascript.crockford.com/memory/leak.html">memory leaks</a>, melhorias de performance, boas práticas, etc.</p>
<p>O autor, <a href="http://twitter.com/slicknet">Nicolas C. Zakas</a>, trabalhou por bastante tempo no <a href="http://yahoo.com">Yahoo!</a> como front-end engineer e contribuiu bastante para o desenvolvimento da <a href="http://yuilibrary.com/">YUI</a>. Recentemente, ele ajudou a criar o <a href="http://csslint.net/">CSSLint</a>, uma ferramenta de qualidade de código CSS aos moldes do <a href="http://www.jslint.com/">JSLint</a>. Uma boa parte do conteúdo do livro está disponível online nos artigos de seu <a href="http://www.nczonline.net/">blog</a>, vale a pena conferir.</p>
<p>De fato, a leitura deste livro me ajudou bastante a conseguir entender a linguagem como um todo e desenvolver boas práticas. Os dois últimos capítulos do livro (Upcoming APIs e The Evolution of JavaScript) tentam adiantar o que estava por vir, aumentando sua vida útil. Naturalmente, dado a evolução a passos largos do HTML5, a implementação de algumas features tomaram hoje um caminho diferente ou perderam parte de sua relevância visto que o livro é de 2009.</p>
<p>Uma atualização com as APIs e funcionalidades mais recentes seria bem vinda. Ainda assim, não perca a oportunidade de ler este livro se você, como eu, quer se aprofundar mais nas &#8220;entranhas&#8221; do JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2011/07/professional-javascript-for-web-developers-2nd-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meu ambiente de trabalho</title>
		<link>http://www.renanivo.com/2011/01/meu-ambiente-de-trabalho/</link>
		<comments>http://www.renanivo.com/2011/01/meu-ambiente-de-trabalho/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 13:34:41 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Trabalhos]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[meld]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=426</guid>
		<description><![CDATA[Antes tarde do que nunca, vou adicionar mais um elo na &#8220;corrente do bem&#8221; criada pelo Anderson Casimiro a qual fui convidado pelo Jair Henrique. A brincadeira consiste em descrever as ferramentas do dia-a-dia e as regras são: Escreva sobre 7 itens de seu ambiente de trabalho – fale sobre qualquer ponto que quiser; Indique [...]]]></description>
			<content:encoded><![CDATA[<p>Antes tarde do que nunca, vou adicionar mais um elo na &#8220;corrente do bem&#8221; criada pelo <a href="http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/">Anderson Casimiro</a> a qual fui convidado pelo <a href="http://www.jairhenrique.com/2010/12/meu-ambiente-de-trabalho/">Jair Henrique</a>. A brincadeira consiste em descrever as ferramentas do dia-a-dia e as regras são:</p>
<ol>
<li>Escreva sobre 7 itens de seu ambiente de trabalho – fale sobre qualquer ponto que quiser;</li>
<li>Indique de 3 a 5 pessoas para que possivelmente façam um artigo sobre seu ambiente.</li>
</ol>
<p>Sendo assim, elas são:</p>
<h3><strong>1. Shell</strong></h3>
<p>Não consigo me imaginar trabalhando sem a ajuda do terminal. É chover no molhado dizer do que ele é capaz. Mas, para mim, é o básico para qualquer programador, <a href="http://www.cygwin.com/">independente de plataforma</a>;</p>
<h3><strong>2. Firefox &amp; Chrome</strong></h3>
<p>Como programador web, é essencial ter um navegador e ferramentas de debug (como o firebug e chrome developer tools). Apesar de eu preferir o Chrome por sua interface e performance, o Firefox é muito melhor para fazer debug. Não consigo me desfazer de nenhum dos dois, eles sempre estão em dupla no meu computador;</p>
<h3><strong>3. (G)Vim</strong></h3>
<p><strong></strong>Atualmente, meu editor preferido. O <a href="http://www.vim.org/">Vim</a> é excelente por ser tão robusto quanto você quiser que ele seja. Apesar de ser complicado no início, o esforço investido se justifica bem rápido;</p>
<h3><strong>4. Git</strong></h3>
<p>Eu me sentia satisfeito usando o <a href="http://subversion.tigris.org/">SVN</a> (talvez porque meu primeiro gerenciador de versão foi o <a href="http://msdn.microsoft.com/en-us/vstudio/aa700907.aspx">Visual SourceSafe</a>). Mas, o <a href="http://git-scm.com/">Git</a> e o conceito de <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">controle de versão distribuído</a> conseguiram me surpreender e conquistar. Já faz mais de 1 ano que o adotei e ainda estou aprendendo e me aprimorando. Ainda quero experimentar o <a href="http://mercurial.selenic.com/">Mercurial</a>, mas recomendo o Git (e <a href="http://github.com">GitHub</a>) para todos;</p>
<h3><strong>5. VirtualBox</strong></h3>
<p>Não dá para garantir que seu aplicativo web seja funcional (e bonito) em múltiplos browsers sem testar nos navegadores que você pretende suportar. Como, infelizmente, não existem versões para linux de alguns dos browsers mais usados no mercado (IE7+, Safari), a única solução viável é manter um Windows <a href="http://en.wikipedia.org/wiki/Virtual_machine">virtualizado</a>. Provavelmente, seus concorrentes (como VMWare) possuem recursos mais atraentes para usuários avançados. Como preciso apenas de uma forma rápida e simples de rodar os SO&#8217;s, o <a href="http://www.virtualbox.org/">VirtualBox</a> cumpre com louvor;</p>
<h3><strong>6. Meld</strong></h3>
<p><strong></strong>O Git <a href="http://www.kernel.org/pub/software/scm/git/docs/git-merge.html">mescla</a> automaticamente as alterações entre <a href="http://www.kernel.org/pub/software/scm/git/docs/git-branch.html">branches</a> nos poupando de muita dor de cabeça. Mesmo assim, algumas vezes é necessário um humano decidir o que fica e o que sai. Quando as diferenças são pequenas, é fácil resolver com um editor de texto. Em casos mais complicados, o <a href="http://meld.sourceforge.net/">Meld</a> é um alívio;</p>
<h3><strong>7. Música </strong>(Não, eu não estou trapaceando)</h3>
<p>Música é um elemento que me ajuda muito enquanto estou programando. Não dá para escutar música (sem incomodar todos ao redor) enquanto se faz <a href="http://www.extremeprogramming.org/rules/pair.html">pair programming</a>, então esta dica só vale para sessões solo. Arranjos instrumentais costumam funcionar melhor comigo. Minha dica é a trilha sonora de <em>The Matrix Revolutions</em>, destaque para <a href="http://www.youtube.com/watch?v=Hk3KGHlCD1g">Neodämmerung</a>.</p>
<p>Seguindo as regras do jogo, convido a participar:</p>
<ol>
<li>Daniel Cassiano</li>
<li>Eduardo Maçan</li>
<li>Felipe Plets</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2011/01/meu-ambiente-de-trabalho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MockPress: TDD mais fácil no WordPress</title>
		<link>http://www.renanivo.com/2010/11/mockpress-tdd-mais-facil-no-wordpress/</link>
		<comments>http://www.renanivo.com/2010/11/mockpress-tdd-mais-facil-no-wordpress/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 12:31:50 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[mock objects]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=391</guid>
		<description><![CDATA[Praticar TDD no WordPress não é trivial. Como utiliza variáveis globais, não é difícil fazer Mocks para vários objetos (o objeto $wpdb de conexão com banco de dados, por exemplo). Mas se você já desenvolveu algum plugin, sabe que é necessário mais do que os objetos globais. A todo momento, é necessário utilizar funções próprias [...]]]></description>
			<content:encoded><![CDATA[<p>Praticar TDD no WordPress não é trivial. Como utiliza variáveis globais, não é difícil fazer Mocks para vários objetos (o objeto $wpdb de conexão com banco de dados, por exemplo). Mas se você já desenvolveu algum plugin, sabe que é necessário mais do que os objetos globais. A todo momento, é necessário utilizar funções próprias do WordPress. O desafio é testar seu plugin sem precisar testar todo o CMS. Para resolver este problema, existe o MockPress.</p>
<p>MockPress é uma biblioteca de funções mock. O criador, <a href="http://github.com/johnbintz">John Bintz</a>, fez um bom trabalho criando uma instalação fácil e uma boa documentação. O código-fonte também está muito bem escrito (e testado). Para instalar a versão mais atual, só é necessário <a href="https://github.com/renanivo/mockpress">clonar o projeto no github</a> e adicioná-lo ao seu <a href="http://br2.php.net/manual/en/ini.core.php#ini.include-path">include_path</a>.</p>
<p>Após instalado, inclua o seguinte entre os <a href="http://php.net/require">requires</a> de seus testes:</p>
<pre class="brush:php">require_once "MockPress/mockpress.php";</pre>
<p>Pronto, agora você pode utilizar as funções do WordPress em seus testes unitários. Recomendo apenas que você dê uma lida no código-fonte para entender quais são os retornos das funções mock.</p>
<p>Nem todas as funções do WordPress estão presentes no MockPress. Se você precisar de alguma função adicional, recomendo que contribua com o projeto. Das duas vezes que enviei uma contribuição, foi aceita bem rápido e sem burocracia.</p>
<p>Lembre-se que este é um projeto ainda em estágio inicial, apesar de muito útil e quanto mais adoção houver, mais completo deverá se tornar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2010/11/mockpress-tdd-mais-facil-no-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentando: Plugin WP Multisite XML-RPC</title>
		<link>http://www.renanivo.com/2010/07/apresentando-plugin-wp-multisite-xml-rpc/</link>
		<comments>http://www.renanivo.com/2010/07/apresentando-plugin-wp-multisite-xml-rpc/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:20:19 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Trabalhos]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=374</guid>
		<description><![CDATA[Já faz um tempo que sou usuário de WordPress e desenvolvo soluções na empresa em que trabalho com ele. Minha imaginação de programador viaja com as possibilidades de plugins possíveis através de sua API. Já tive várias ideias, que até comecei a desenvolver, e depois descobri que já estavam disponíveis no diretório de plugins (que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-383" title="276380757_1ac950f28f_o" src="http://renanivo.com/wp-content/uploads/2010/07/276380757_1ac950f28f_o-150x150.png?84cd58" alt="" width="150" height="150" />Já faz um tempo que sou usuário de WordPress e desenvolvo soluções na empresa em que trabalho com ele. Minha imaginação de programador viaja com as possibilidades de plugins possíveis através de sua API. Já tive várias ideias, que até comecei a desenvolver, e depois descobri que já estavam disponíveis no diretório de plugins (que bom!). Este plugin é muito especial para mim. É o primeiro, que envio para o diretório do <a title="WordPress Plugins" href="http://wordpress.org/extend/plugins/">wordpress.org</a>, e nasceu de uma necessidade real.</p>
<p>O WordPress possibilita que você administre seu blog remotamente através de sua <a title="XML-RPC Support - WordPress Codex" href="http://codex.wordpress.org/XML-RPC_Support">interface XML-RPC</a>. No entanto, esta API cobre apenas as tarefas triviais de um blog (escrever um artigos, responder comentários, etc). Com o lançamento do WordPress 3.0, não existe mais WordPress Mu. Ou seja, se você tem um blog com a versão 3.0, pode <a title="Migrating Multiple=" href="http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite">transformá-lo em uma rede</a>.</p>
<p>Com o plugin Multisite XML-RPC você pode fazer remotamente algumas das novas tarefas administrativas de uma rede de blog. Por enquanto, as tarefas são:</p>
<ul>
<li><a title="Create Blog - WP-Multisite-XML-RPC" href="http://wiki.github.com/renanivo/WP-Multisite-XML-RPC/create-blog">Criar um novo blog</a></li>
<li><a title="Get Blog Id - WP-Mulsitite-XML-RPC" href="http://wiki.github.com/renanivo/WP-Multisite-XML-RPC/get-blog-id">Obter o ID de um blog existente</a></li>
<li><a title="Update Archived - WP-Multisite-XML-RPC" href="http://wiki.github.com/renanivo/WP-Multisite-XML-RPC/update-archived">Arquivar/Desarquivar um blog</a></li>
</ul>
<p>Meu objetivo é expandir estas funções assim que forem necessárias (Se você sentiu falta de algo, por favor, escreva nos comentários). Com este plugin, já é possível fazer a integração da administração de sites do WordPress em outros sistemas (Web, desktop e celulares).</p>
<p>Faça o download em: <a href="http://wordpress.org/extend/plugins/multisite-xml-rpc/">http://wordpress.org/extend/plugins/multisite-xml-rpc/</a></p>
<p>Este plugin ainda tem muito o que melhorar e pretendo ainda investir tempo o melhorando. Se você quiser ajudar, faça um fork no github ou <a href="http://github.com/renanivo/WP-Multisite-XML-RPC/issues">relate um bug</a>. Feedback de qualquer tipo é sempre bem vindo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2010/07/apresentando-plugin-wp-multisite-xml-rpc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Finalmente VIM</title>
		<link>http://www.renanivo.com/2010/06/finalmente-vim/</link>
		<comments>http://www.renanivo.com/2010/06/finalmente-vim/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 15:09:42 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=362</guid>
		<description><![CDATA[Dentre todas as flamewars do desenvolvimento de software, poucas são tão antigas quanto a dos editores de texto (atualmente, editores de texto e IDE&#8217;s). De forma alguma quero tentar defender alguma bala de prata. Eu mesmo já mudei de ideia várias vezes quanto a este assunto. Ainda estou aprendendo a usar o VIM, mas já [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-364" title="vim-editor_logo" src="http://renanivo.com/wp-content/uploads/2010/06/vim-editor_logo-150x150.png?84cd58" alt="" width="150" height="150" />Dentre todas as <a href="http://en.wikipedia.org/wiki/Flamewar">flamewars</a> do desenvolvimento de software, poucas são tão antigas quanto a <a href="http://www.google.com/search?q=emacs+vs+vi">dos editores de texto</a> (atualmente, <a href="http://www.google.com/search?q=ide+vs+text+editor">editores de texto e IDE&#8217;s</a>). De forma alguma quero tentar defender alguma <a href="http://en.wikipedia.org/wiki/History_of_software_engineering#1985_to_1989:_No_silver_bullet">bala de prata</a>. Eu mesmo já mudei de ideia várias vezes quanto a este assunto.</p>
<p>Ainda estou aprendendo a usar o VIM, mas já estou colhendo os resultados deste esforço. Estou impressionado com a extensibilidade e personalização deste editor. Com certeza, é uma excelente ferramenta e tem uma curva de aprendizado fantástica (mas exige esforço, principalmente no começo). Se você ficou interessado, pode começar a aprender a utilizá-lo lendo o vimtutor (Digite <em>vimtutor</em> no terminal ou <a href="http://gd.tuwien.ac.at/linuxcommand.org/man_pages/vimtutor1.html">leia online</a>).</p>
<p>Quando houverem dúvidas, é fácil encontrar informações e dicas em várias fontes. Mas, se você está começando e já leu o vimtutor, recomendo a leitura dos seguintes artigos:</p>
<ul>
<li><a href="http://weierophinney.net/matthew/archives/164-Vim-Productivity-Tips-for-PHP-Developers.html">VIM Productivity Tips for PHP Developers</a></li>
<li><a href="http://java.dzone.com/articles/how-make-vim-productive-vi">How to Make VIM productive: vi Tips and Tricks</a></li>
</ul>
<p>Sugiro que assim que você comece a personalizar seu arquivo .vimrc, faça um backup. O Gist do <a href="http://github.com">github</a> é um excelente lugar para isto (O meu <a href="http://gist.github.com/415001">já está lá</a>). Se você tiver alguma dica ou comando que costuma adicionar ao seu .vimrc, por favor, me mande. Quanto mais dicas melhor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2010/06/finalmente-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Arte do Desenvolvimento Ágil</title>
		<link>http://www.renanivo.com/2010/01/a-arte-do-desenvolvimento-agil/</link>
		<comments>http://www.renanivo.com/2010/01/a-arte-do-desenvolvimento-agil/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 21:41:21 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[desenvolvimento ágil]]></category>
		<category><![CDATA[domain-driven design]]></category>
		<category><![CDATA[livro]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=334</guid>
		<description><![CDATA[Há muito tempo, desenvolvimento ágil é um assunto do meu interesse. Este interesse começou em 2005 quando li um e-book que explicava superficialmente o que é XP. Anos passaram, fiz faculdade, aprendi mais sobre desenvolvimento software,  e meu conhecimento sobre este tema não passou do &#8220;superficial&#8221;. Resolvi comprar o livro The Art of Agile Development de James [...]]]></description>
			<content:encoded><![CDATA[<p><a class="alignright" href="http://www.amazon.com/gp/product/0596527675/ref=as_li_tf_il?ie=UTF8&#038;tag=reivbl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596527675"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0596527675&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=reivbl-20&#038;ServiceVersion=20070822" ></a>Há muito tempo, desenvolvimento ágil é um assunto do meu interesse. Este interesse começou em 2005 quando li um e-book que explicava superficialmente o que é XP. Anos passaram, fiz faculdade, aprendi mais sobre desenvolvimento software,  e meu conhecimento sobre este tema não passou do &#8220;superficial&#8221;.</p>
<p>Resolvi comprar o livro <a href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1264193377&amp;sr=8-1">The Art of Agile Development</a> de <a href="http://jamesshore.com/">James Shore</a> e <a href="http://www.oreillynet.com/pub/au/3187">Shane Warden</a> (comprei o original, mas também existe a <a href="http://www.submarino.com.br/produto/1/21388254/arte+do+desenvolvimento+agil,+a">versão em português</a>). A descrição, na página da amazon, diz que o livro não diz apenas o que é Desenvolvimento Ágil, mas trás informações práticas para adotá-lo por todos os envolvidos no projeto. Isto era exatamente o que eu precisava.</p>
<p>O livro cumpre exatamente o que se propõe. É muito interessante repensar conceitos sobre qualidade e sucesso de um projeto, entender conceitos como <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, <a href="http://en.wikipedia.org/wiki/Domain-driven_design">Domain-Driven Design</a>, <a href="http://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a>,  etc. Além de saber o que é e como fazer, também fui incentivado a descobrir o porquê dos conceitos. O livro te leva à reflexão de uma forma muito interessante, pois depois das explicações, também são apresentadas contra-indicações e alternativas. O livro contém experiências dos autores e exercícios que são usados para que possamos entender melhor algumas práticas.</p>
<p>A cada nova prática utilizada, os benefícios são quase instantâneos. Como dito por um dos participantes da grupo de <a href="http://tech.groups.yahoo.com/group/extremeprogramming/">discussão do XP</a>: O desenvolvimento ágil fez com que o desenvolvimento de software voltasse a ser divertido.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2010/01/a-arte-do-desenvolvimento-agil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clientes de Debug para PHP [Atualizado]</title>
		<link>http://www.renanivo.com/2009/12/clientes-de-debug-para-php/</link>
		<comments>http://www.renanivo.com/2009/12/clientes-de-debug-para-php/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 12:24:50 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[kate]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=292</guid>
		<description><![CDATA[Dias atrás, participei da PHP Conference. O evento foi melhor do que as minhas expectativas e voltei cheio de ideias e dicas para por em prática. Uma das dicas foi começar a usar o xDebug pra valer. Chega de fazer debug com var_dump! Quanto à instalação do xDebug, não tive problemas. O complicado mesmo foi escolher [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-298 alignleft" title="xdebug-logo" src="http://renanivo.com/wp-content/uploads/2009/12/xdebug-logo.png?84cd58" alt="xdebug-logo" width="200" height="116" />Dias atrás, participei da <a href="http://www.phpconf.com.br/">PHP Conference</a>. O evento foi melhor do que as minhas expectativas e voltei cheio de ideias e dicas para por em prática. Uma das dicas foi começar a usar o <a href="http://xdebug.org">xDebug</a> pra valer. Chega de fazer debug com var_dump!</p>
<p>Quanto à instalação do xDebug, <a href="http://devzone.zend.com/article/2803-Introducing-xdebug">não tive problemas</a>. O complicado mesmo foi escolher o cliente do debug. Pelo que tenho visto em posts e eventos, a maioria dos programadores PHP faz debug em uma IDE, na maior parte, o <a href="http://www.eclipse.org/pdt/">Eclipse PDT</a>. Teoricamente (ou seja, <a href="http://xdebug.org/docs/remote">segundo o site do xDebug</a>) existem várias outras opções. Tentei testar todas as opções para linux na prática, algumas não saíram da teoria.</p>
<p>Testei o <a href="http://protoeditor.sourceforge.net/">protoeditor</a> como plugin do Kate (meu editor de código atual) e não consegui compilar por falta de algumas bibliotecas. Dei uma chance para o Eclipse, mas a lentidão e a quantidade de bugs dele me tiraram do sério (por isso o Kate é meu editor atual). Tentei o <a href="http://code.google.com/p/geben-on-emacs/">plugin do Emacs</a>, mas também não consegui fazer funcionar (acredito que seja por falta de conhecimento). Pensei no <a href="http://netbeans.org/features/php/">Netbeans</a>, mas não tive paciência para baixar e instalar. Por último ou não, testei o <a href="http://www.vim.org/scripts/script.php?script_id=1929">plugin do VIM</a>, este sim funcionou perfeitamente!</p>
<p>Eu ainda gostaria que houvesse um programa para linux parecido com o <a href="http://www.bluestatic.org/software/macgdbp/index.php">MacGDBp</a>, mas o VIM está cumprindo o objetivo com louvor, principalmente depois que eu li o <a href="http://aurelio.net/vim/tutor.pt_BR">vimtutor</a>.  Aliás, com o que eu aprendi do VIM, deu até vontade de passar a usá-lo mais regularmente. Talvez em um futuro próximo&#8230;</p>
<h4>Para facilitar a vida</h4>
<p>Criei uns bookmarklets para adicionar as variáveis de ambiente do xDebug na página atual do navegador (o código ficou tão pequeno que coube até em <a href="http://twitter.com/renanivo/status/6431900444">um tweet</a> &#8211; Pena que não dá pra ler direito). Se quiser usar também, arraste o link abaixo para sua barra de favoritos:</p>
<p><a title="Start xDebug Session" href="javascript:var q='XDEBUG_SESSION_START=1';window.location+=window.location.toString().indexOf('?')==-1?'?'+q:'&amp;'+q;">[xDebug] Start Session</a></p>
<p><a title="Stop xDebug Session" href="javascript:var q='XDEBUG_SESSION_STOP';window.location+=window.location.toString().indexOf('?')==-1?'?'+q:'&amp;'+q;">[xDebug] Stop Session</a></p>
<p><a title="xDebug Profile" href="javascript:var q='XDEBUG_PROFILE';window.location+=window.location.toString().indexOf('?')==-1?'?'+q:'&amp;'+q;">[xDebug] Profile</a></p>
<p>Para agilizar o debug de scripts <a href="http://www.php.net/cli">php-cli</a>, também pode adicionar estes dois &#8220;aliases&#8221; em <em>~/.bashrc</em> (para que sejam recriados em novas sessões do terminal):</p>
<pre class="brush:bash">alias xdebug_debugger='export XDEBUG_CONFIG="remote_port=9000 remote_enable=1"'
alias xdebug_profiler='export XDEBUG_CONFIG="profiler_enable=1"'
alias xdebug_clean='export XDEBUG_CONFIG=""'</pre>
<p><strong>Atualização &#8211; 31/12/2009</strong>: Adicionei dois bookmarklets (profile e stop xdebug &#8211; aproveitei para reduzir ainda mais o código <img src="http://www.renanivo.com/wp-includes/images/smilies/icon_smile.gif?84cd58" alt=':)' class='wp-smiley' /> ) e um alias para iniciar o profile em linha de comando.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2009/12/clientes-de-debug-para-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kubuntu 9.10: Desta vez acertaram!</title>
		<link>http://www.renanivo.com/2009/11/kubuntu-9-10-desta-vez-acertaram/</link>
		<comments>http://www.renanivo.com/2009/11/kubuntu-9-10-desta-vez-acertaram/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 02:07:41 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=269</guid>
		<description><![CDATA[Desde que escrevi o post sobre o Kubuntu 9.04, tive uma experiência muito mais completa com ele. Por isso, estava aguardando ansiosamente uma nova versão. Não que eu tenha achado o Jaunty (9.04) uma versão péssima, mas ao utilizá-lo fui me deparando com vários pequenos bugs que juntos deixaram o sistema meio &#8220;sem sal&#8221;. Quando [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que <a href="http://renanivo.com/2009/05/linux-kubuntu-904-com-kde-42-e-para-amar-ou-odiar/">escrevi o post sobre o Kubuntu 9.04</a>, tive uma experiência muito mais completa com ele. Por isso, estava aguardando ansiosamente uma nova versão. Não que eu tenha achado o Jaunty (9.04) uma versão péssima, mas ao utilizá-lo fui me deparando com vários pequenos bugs que juntos deixaram o sistema meio &#8220;sem sal&#8221;.</p>
<p>Quando finalmente chegou o dia do lançamento do Kubuntu 9.10 (Karmic Koala), não sabia se depositava minhas expectativas nele ou me conformava pensando que o Kubuntu não teria a mesma atenção aos detalhes que o Ubuntu.</p>
<p>Instalei a versão 64 bits, tanto no notebook quanto no desktop citados no post anterior. Devo admitir que me surpreendi. O novo Kubuntu melhorou muito! Ao comparar com a versão anterior, imagino o gigantesco trabalho da equipe do KDE e da Canonical.</p>
<p><img class="aligncenter size-medium wp-image-281" title="imagem1" src="http://renanivo.com/wp-content/uploads/2009/11/imagem1-300x187.png?84cd58" alt="imagem1" width="300" height="187" /></p>
<p style="text-align: center;">
<p>Uma lista de novidades está presente <a href="http://www.kubuntu.org/news/9.10-release">neste link</a>, mas eu gostaria de destacar alguns itens que me chamaram a atenção.</p>
<h3>KDE 4.3</h3>
<p>Esta nova versão do KDE está muito mais bonita e estável. Se você utilizou a versão anterior, deve ter passado por inconvenientes como o gerenciador travar e voltar para a tela de login, ou uma grande perda de performance quando os efeitos da área de trabalho estão ligados.</p>
<p><strong>Dica:</strong> Meu computador ficou ligado por muitos dias, aumentando muito o consumo de CPU do programa plasma-desktop. Usei o comando Shit+Alt+F12 para desabilitar os efeitos na área de trabalho e, logo em seguida, repeti a combinação para reabilitá-los. O uso de CPU voltou ao normal.</p>
<h3>Amarok 2.2</h3>
<p>O amarok da versão anterior era interessante e bonito, mas perdia muitas características se comparado com a versão 1.4 (para kde 3). A boa notícia é que algumas coisas da versão 1.4 voltaram a funcionar (Integração com a Last.fm, exibição de mídias em dispositivos conectados), outras funções foram melhoradas (Painel de contexto, lista de reprodução, personalização do layout), mas ainda sinto falta de algumas coisas (descrição nos episódios dos podcasts, equalizador). De qualquer forma, o amarok 2.2 já é meu player favorito.</p>
<h3>Dolphin</h3>
<p>Eu já gostava da versão anterior do dolphin. O que fizeram foi melhorar aquilo que já estava bom. E não foi pouca coisa, adicionaram preview das imagens nas miniaturas das pastas e agora também é possível ver um preview do video clicando em um pequeno botão play abaixo de sua miniatura.</p>
<p>Outros componentes também receberam melhorias consideráveis. É o caso do gwenview, kopete, network manager, kpackagekit (apesar de ainda estar confuso na hora de adicionar novos programas), etc. Ou seja, se você estava esperando o KDE 4 ficar maduro para sair do KDE 3 ou para experimentar o Kubuntu, a hora é agora.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2009/11/kubuntu-9-10-desta-vez-acertaram/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Criptografar o código-fonte é uma boa ideia?</title>
		<link>http://www.renanivo.com/2009/10/criptografar-o-codigo-fonte-e-uma-boa-ideia/</link>
		<comments>http://www.renanivo.com/2009/10/criptografar-o-codigo-fonte-e-uma-boa-ideia/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:27:48 +0000</pubDate>
		<dc:creator>Renan Ivo</dc:creator>
				<category><![CDATA[Opiniões]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://renanivo.com/?p=221</guid>
		<description><![CDATA[Usar uma linguagem de programação interpretada, normalmente, significa que o código-fonte terá que ficar no servidor de produção (no caso de softwares para a web). Em alguns projetos, isto é um problema. Uma solução para muitos é manter o código-fonte criptografado. Apesar de ser uma prática muito comum, acredito que para muitas pessoas esta não [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-251 alignright" title="91637121_efd20466c3_o" src="http://renanivo.com/wp-content/uploads/2009/10/91637121_efd20466c3_o-225x300.jpg?84cd58" alt="Foto de johnath" width="225" height="300" /></p>
<p>Usar uma linguagem de programação interpretada, normalmente, significa que o código-fonte terá que ficar no servidor de produção (no caso de softwares para a web). Em alguns projetos, isto é um problema. Uma solução para muitos é manter o código-fonte criptografado. Apesar de ser uma prática muito comum, acredito que para muitas pessoas esta não é uma ideia muito boa.</p>
<p>A pouco tempo, estava procurando por um módulo de uma ferramenta que estava personalizando. O módulo era gratuito e não foi desenvolvido pelos criadores da ferramenta, que é paga (desculpe por não poder citar o nome das ferramentas. Não se preocupe, isso não é muito importante). Instalei o módulo e quando fui usar, percebi alguns erros. Logo pensei: &#8220;Não me parece muito difícil de consertar, talvez eu possa consertar rapidamente e mandar as alterações para os desenvolvedores&#8221;. Como vocês já devem imaginar, o código-fonte estava criptografado.</p>
<p>Não consegui imaginar porque alguém criptografaria uma ferramenta assim. Ao ler a página dos desenvolvedores, descobri que a estratégia era cobrar uma mensalidade para obter suporte (ainda assim, sem o código-fonte). Não sou um militante do <a href="http://en.wikipedia.org/wiki/FOSS"><acronym title="Free and Open Source Software">FOSS</acronym></a> (acredito eu), mas acho que criptografar o código e cobrar o suporte, neste caso, é um tremendo tiro no próprio pé.</p>
<p>Imagino que os criadores do módulo não disponibilizam o código por medo de que algum &#8220;concorrente&#8221; venda ou ofereça suporte ao produto deles. Este risco existe. Mas esta ação não resolve o problema.</p>
<p>Meu primeiro pensamento quando não pude ter acesso ao código foi fazer minha própria versão. Da mesma forma que eu pensei, outra pessoa também. Tanto que ao fazer um pesquisa no google, encontrei um módulo com o mesmo propósito, mais atualizações, sem os erros que eu havia encontrado e com o código aberto.</p>
<p>Pra completar, ao procurar opiniões sobre o módulo de código fechado, a imagem da empresa estava sendo praticamente destruída em diversos lugares, justamente por não permitir que os usuários possam melhorá-lo. Ou seja, a empresa obteve várias desvantagens: Os &#8220;concorrentes&#8221; podem oferecer suporte da versão de código aberto, os usuários avançados não são incentivados a mandar feedback e corre um grande risco da &#8220;má reputação&#8221; da empresa chegar aos demais usuários.</p>
<p>Este não é o único caso que eu conheço onde criptografar o código-fonte pode acabar gerando problemas. Já vi venderem código-fonte de software <a href="http://pt.wikipedia.org/wiki/GNU_General_Public_License">GPL</a> criptografado, por exemplo.</p>
<p>Não acredito que todos os softwares podem ter seus códigos abertos. Mas muitas empresas ao decidir por não compartilhar seu código, não pensam nas desvantagens que podem ter. É sempre bom lembrar que existem idéias muito boas por aí. Por que não estar receptivo a elas?</p>
<p><strong>imagem:</strong> <a href="http://www.flickr.com/photos/johnath/">johnath</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.renanivo.com/2009/10/criptografar-o-codigo-fonte-e-uma-boa-ideia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: www.renanivo.com @ 2012-05-20 05:44:53 -->
