<?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>Duodraco &#187; desenvolvimento</title>
	<atom:link href="http://duodra.co/tag/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://duodra.co</link>
	<description>Desenvolvedor PHP, Linux e Opensource</description>
	<lastBuildDate>Wed, 29 Jun 2011 11:04:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Seu ambiente de trabalho em 7 itens</title>
		<link>http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/</link>
		<comments>http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 12:36:55 +0000</pubDate>
		<dc:creator>Duodraco</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[integração contínua]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://duodra.co/?p=181</guid>
		<description><![CDATA[Há quase um ano escrevi um artigo sobre meu ambiente de trabalho. Estou listando 7 itens e repassando para que mais algumas pessoas escrevam sobre seus ambientes também <a href="http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fseu-ambiente-de-trabalho-em-7-itens%2F&title=Seu+ambiente+de+trabalho+em+7+itens&desc=H%C3%A1+quase+um+ano+escrevi+um+artigo+sobre+ambiente+de+trabalho.+O+Augusto+Pascutti+jogou+uma+id%C3%A9ia+no+ar%3A+%22vamos+fazer+um+meme+sobre%3F%22+...+e+c%C3%A1+eu+estou+a+realizar+algo+sobre.+As+regras+s%C3%A3o+claras%3A%0D&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><p>Há quase um ano escrevi um artigo sobre <a title="Artigo sobre Ambiente de trabalho" href="http://duodra.co/post/meu-ambiente-de-trabalho/" target="_self">ambiente de trabalho</a>. O Augusto Pascutti jogou uma idéia no ar: &#8220;vamos fazer um meme sobre?&#8221; &#8230; e cá eu estou a realizar algo sobre. As regras são claras:<br />
1ª &#8211; escreva sobre 7 itens de seu <a class="bbli" href="http://sledge.boo-box.com/list/page/YW1iaWVudGVfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-60">ambiente<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> de trabalho &#8211; fale sobre qualquer ponto que quiser;<br />
2ª &#8211; indique de 3 a 5 pessoas para que possivelmente façam um artigo sobre seu ambiente.</p>
<p>Vamos lá?<span id="more-181"></span></p>
<ol>
<li><strong>OS: <em>Opensuse 11.3</em></strong>: A distribuição <a class="bbli" href="http://sledge.boo-box.com/list/page/bGludXhfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-56">linux<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> que melhor suporta o KDE, contando com o Zypper como gerenciador de pacotes&#8230; é simples instalar qualquer pacote, e reverter a uma versão anterior caso seja necessário, além de tudo o que o Yast oferece. <a title="Conheça o OpenSuse" rel="nofollow" href="http://opensuse.org" target="_blank">Conheça o opensuse</a>.</li>
<li><strong>IDE: <em>KDevelop4</em></strong>: Entre os que testei no meu ambiente, o <a title="Site do projeto Kdevelop" rel="nofollow" href="http://kdevelop.org" target="_blank">KDevelop</a> é de longe o IDE mais rápido. Infelizmente não conto com a integração com xdebug na versão atual, mas o <a class="bbli" href="http://sledge.boo-box.com/list/page/dGltZV8jI19iYXJfIyNfdGFnZ2luZy10b29sLXdwXyMjXzE2MDM4OTQ=-56">time<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> de desenvolvimento &#8211; que também está empenhado em trazer o Quanta para o KDE4 &#8211; está fazendo grandes esforços para que tenhamos uma IDE completa muito em breve.</li>
<li><strong>Browser</strong>: Todos &#8211; Sim, uso praticamente todas a engines de navegador &#8211; hora uma, hora outra: Rekonq, Opera, Internet Explorer (sim, uso na VM &#8212; o debugger apesar de ser uma carroça ajuda bastante) e o que estou mais usando no momento: <em><strong>Firefox 4</strong></em> (beta) &#8230; e uso o lynx vez ou outra também.</li>
<li><strong>Versionamento: <em>Mercurial</em> e <em>Git</em></strong>: os dois são os mais conhecidos <acronym title="Version Control System">VCS</acronym>s descentralizados. Gosto muito do mercurial pela quantidade de <a class="bbli" href="http://sledge.boo-box.com/list/page/Y2xpZW50ZXNfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-60">clientes<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> e pela facilidade. Mas o Github não é algo a se menosprezar.</li>
<li><strong>Integração contínua: <em>Hudson</em></strong>: sim, a 8ª maravilha do mundo quando o assunto é Desenvolvimento de Software. Fácil de instalar, configurar e usar. Aí nele penduro phpunit, phpcpd, pdepend, phpmd &#8230; e estou para testar o php_codebrowser e o phpadd &#8211; <a title="Página do Hudson - Continuous Integration" rel="nofollow" href="http://hudson-ci.org/" target="_blank">confira o Hudson</a></li>
<li><strong>Gerenciador de projetos: <em>Redmine</em></strong>: é em ruby, eu sei&#8230; mas é uma <a class="bbli" href="http://sledge.boo-box.com/list/page/ZmVycmFtZW50YV8jI19iYXJfIyNfdGFnZ2luZy10b29sLXdwXyMjXzE2MDM4OTQ=-64">ferramenta<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> bem completa e extensível. Dá um trabalhinho configurar o rails e as dependencias dos plugins que uso, como o Easy Agile. Também se integra a diversos VCSs. Trabalho com <a title="Site do projeto Redmine" rel="nofollow" href="http://www.redmine.org/" target="_blank">ele</a> faz um bom tempo e recomendo.</li>
<li><strong>Banco de Dados: <em>MongoDB</em></strong>: tá, vamos falar do projeto atual só, pois tenho MariaDB e PostgreSQL aqui, além do SQLServer no trabalho. Não dá pra explicar muito &#8230; <a title="Mongo DB" rel="nofollow" href="http://www.mongodb.org/" target="_blank">instale e teste</a>&#8230; você não vai se arrepender.</li>
</ol>
<p>Não precisava falar do PHP né? bom são esses meus 7 itens. Agora passo a bola para:</p>
<ul>
<li><a title="7 itens do Augusto Pascutti" rel="nofollow" href="http://blog.augustopascutti.com/PHP/2010/12/16/meu-ambiente.html" target="_blank">Augusto Pascutti</a></li>
<li><a title="7 itens do Ivo Nascimento" rel="nofollow" href="http://ianntech.com.br/2010/12/18/meu-ambiente-de-trabalho-em-7-itens/" target="_blank">Ivo Nascimento</a></li>
<li><a title="7 itens do Felipe Moura" rel="nofollow" href="http://felipenmoura.org/en/meu-ambiente-de-trabalho-em-7-itens/" target="_blank">Felipe Moura</a></li>
<li><a title="7 itens do Rafael Dohms" rel="nofollow" href="http://blog.rafaeldohms.com.br/2010/12/17/meme-seu-ambiente-de-desenvolvimento-em-7-items" target="_blank">Rafael Dohms</a></li>
<li><a title="7 itens do Elton Minetto" rel="nofollow" href="http://www.eltonminetto.net/meu-ambiente.htm" target="_blank">Elton Minetto</a></li>
</ul>
<p>Assim que os mesmos fizerem seus artigos, os links seguirão para os mesmos.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fseu-ambiente-de-trabalho-em-7-itens%2F&title=Seu+ambiente+de+trabalho+em+7+itens&desc=H%C3%A1+quase+um+ano+escrevi+um+artigo+sobre+ambiente+de+trabalho.+O+Augusto+Pascutti+jogou+uma+id%C3%A9ia+no+ar%3A+%22vamos+fazer+um+meme+sobre%3F%22+...+e+c%C3%A1+eu+estou+a+realizar+algo+sobre.+As+regras+s%C3%A3o+claras%3A%0D&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "linux";
            bb_bid  = "1603894";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_width = "600";bb_limit = "6";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end -->]]></content:encoded>
			<wfw:commentRss>http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Consumindo um RSS com simplexml</title>
		<link>http://duodra.co/post/consumindo-um-rss-com-simplexml/</link>
		<comments>http://duodra.co/post/consumindo-um-rss-com-simplexml/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 19:30:57 +0000</pubDate>
		<dc:creator>Duodraco</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://duodra.co/?p=59</guid>
		<description><![CDATA[Essa semana precisei consumir um RSS do wordpress (UTF-8), para utilizar o conteúdo em outra aplicação (ISO-8859-1). Realizei rapidamente (sem frameworks ou firulas) e o fiz usando simplexml e um esquema de cache simples. O resultado  segue abaixo:O Simplexml é &#8230; <a href="http://duodra.co/post/consumindo-um-rss-com-simplexml/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fconsumindo-um-rss-com-simplexml%2F&title=Consumindo+um+RSS+com+simplexml&desc=Essa+semana+precisei+consumir+um+RSS+do+wordpress+%28UTF-8%29%2C+para+utilizar+o+conte%C3%BAdo+em+outra+aplica%C3%A7%C3%A3o+%28ISO-8859-1%29.+Realizei+rapidamente+%28sem+frameworks+ou+firulas%29+e+o+fiz+usando+simplexml+e+um+e&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><p>Essa semana precisei consumir um <abbr title="Really Simple Syndication">RSS</abbr> do wordpress (UTF-8), para utilizar o conteúdo em outra aplicação (ISO-8859-1). Realizei rapidamente (sem frameworks ou firulas) e o fiz usando simplexml e um esquema de cache simples. O resultado  segue abaixo:<span id="more-59"></span>O <a title="Documentação do SimpleXML" href="http://php.net/simplexml" target="_blank">Simplexml</a> é uma das ferramentas embutidas no PHP para manipulação de xml. É leve e rápida, porém não tão robusta como XMLReader/Writer ou o DOM; ela é ideal para manipulação simples, como é o caso de um RSS. Sua interface é bem simples: a partir do nó pai, incluindo-o, todos os nós descendentes são instâncias de SimpleXMLElement. Cada nó filho é um atributo do elemento pai; atributos de nó são acessados como índice alfanumérico (texto) e nós filhos semelhantes são acessados como array, em índices numéricos; dados textuais dos elementos são acessados como texto. Dado o xml:</p>
<pre class="brush:xml">&lt;root&gt;
  &lt;persons&gt;
    &lt;person id="1"&gt;Bianca&lt;/person&gt;
    &lt;person id="2"&gt;Carolina&lt;/person&gt;
  &lt;/persons&gt;
&lt;/root&gt;</pre>
<p>podemos acessar os elementos assim:</p>
<pre class="brush:php">//$xml é uma string com o xml descrito acima
$sxe = simplexml_load_string($xml);
//$sxe é um SimpleXMLElement referente ao &lt;root&gt;
echo $sxe-&gt;persons-&gt;person[0];//Bianca
echo $sxe-&gt;persons-&gt;person[1]['id'];//2</pre>
<p>Bom, voltando ao problema: Armazenar o feed rss localmente em uma aplicação. A lógica seria simples: fiz um cache (para que não fosse feito um request a todo momento para o rss) atualizado de hora em hora. Segue o código:</p>
<pre class="brush:php">$cache = '/path/para/o/cache/';
$file = $cache.'feed-'.date('Y-m-d-H');
$feedurl = 'http://blog.com/feed';
$ns = 'http://purl.org/rss/1.0/modules/content/';
$collection = array();</pre>
<p>Criando variáveis para nosso uso. Em $file teremos algo como /path/para/o/cache/feed-2010-09-17-10. Em $ns guardamos a url do namespace de content do nosso XML</p>
<pre class="brush:php">if(!file_exists($file)){
  file_put_contents(
    $file,file_get_contents($feedurl)
  );
}</pre>
<p>Crio o cache do RSS</p>
<pre class="brush:php">$xml = simplexml_load_file($file);
if(!$xml){ exit();}</pre>
<p>Leitura do RSS no SimpleXML</p>
<pre class="brush:php">$getId = function($link){
  return str_replace(
    'p=','',array_pop(explode('?',$link))
  );
};
$replace = function($string){
  if (!preg_match("/([\200-\237])/", $string)
    &amp;&amp; !preg_match("/([\241-\377])/", $string)){
    return $string;
  }
  $string = preg_replace(
    "/([\340-\357])([\200-\277])([\200-\277])/e",
    "'&amp;#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64".
      "+ (ord('\\3')-128)).';'",
    $string);
  $string = preg_replace(
    "/([\300-\337])([\200-\277])/e",
    "'&amp;#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",
    $string);
  return $string;
};</pre>
<p>Funções utilizadas (5.3 Style <img src='http://duodra.co/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ). A primeira só faz o trabalho de pegar o id do post, enquanto que a segunda funciona como um adendo a htmlentities, que possui suporte a UTF-8, porém convertendo caracteres de mais de 2 bytes, os quais o wordpress usa e abusa, como aspas de início e fim.</p>
<pre class="brush:php">foreach($xml-&gt;channel-&gt;item as $post){
  $id = $getId($post-&gt;guid);
  $content = $post-&gt;children($ns);
  $collection[$id] = new stdClass;
  $collection[$id]-&gt;id = $id;
  $collection[$id]-&gt;title = $replace(
    (string)$post-&gt;title
  );
  $collection[$id]-&gt;description = $replace(
    (string)$post-&gt;description
  );
  $collection[$id]-&gt;content = $replace(
    (string) $content-&gt;encoded
  );
  if(!file_exists($cache.'feeds/'.$id)){
    file_put_contents(
      $cache.'feeds/'.$id,
      base64_encode(serialize($collection[$id]))
    );
  }
}</pre>
<p>Bom, creio que o código acima não é difícil de compreender. A lógica é simples:</p>
<ol>
<li>crio uma cópia do rss localmente no 1º request de cada hora</li>
<li>carrego esse arquivo em um simplexml</li>
<li>populo um objeto stdClass com os dados do post (só incluí atributos que utilizei, mas poderíamos usar qualquer um)</li>
<li>e faço um &#8220;cache&#8221; de cada objeto, serializado.</li>
</ol>
<p>Por que usar um stdClass e não o SimpleXMLElement para o cache direto? não é serializável, pelo menos não no PHP5.3</p>
<p>Por que não fazer de outra maneira? porque eu não quis. Era uma funcionalidade pontual, e (ainda) não estou numa estrutura que me facilite as coisas, então scripts estruturados ainda são comuns por aqui.</p>
<p>Ah Duodraco, boa sacada&#8230; posso por isso em meu projeto? NÃO. Esta era uma prova de conceito, e ela por sí só não trata uma série de questões, como segurança e performance, além de estar totalmente fora de qualquer padrão.</p>
<p>Por que então diabos você publicou isso? Um: porque quis <img src='http://duodra.co/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ; Dois: isoladamente temos algumas soluções para problemas frequentes:</p>
<ul>
<li>cache simples: existem aplicações por aí que podem usar cache, e ainda demoram valiosos segundos em páginas com pouca atualização, que já ganhariam em performance com algo assim; Lógico que se você quer uma solução efetiva de cache, procure por ferramentas como o <a title="Site do Memcached" href="http://memcached.org/" target="_blank">Memcached</a>.</li>
<li>conversão de caracteres UTF-8: Os RSS gerados pelo wordpress são por padrão UTF-8 mas utilizam caracteres de mais de 2bytes que o htmlentities não interpreta. A função que chamei de $replace mapeia boa parte desses caracteres; ela foi obtida nos comentários da documentação do PHP e adaptada para usar preg_replace</li>
<li>Parseamento com SimpleXML: nesse exemplo usamos inclusive a leitura dos namespaces, mostrando a facilidade do uso dessa ferramenta</li>
<li>Serialização de objetos: apesar do gargalo ser o IO no sistema de arquivos, a operação de leitura ficou bem rápida, pois quando recuperamos o objeto, não faço nenhum tratamento, ele está pronto para uso. Podemos utilizar, para o caso de armazenamento paralelo ao principal do sistema podemos usar o filesystem como no exemplo, SQLite, etc.</li>
</ul>
<p>Então, recomendo que NÃO use essa solução diretamente. Utilize isso para estudar os pontos-chave e estude individualmente os mecanismos utilizados. Em breve farei posts isolados sobre SimpleXML, Serialização, Cache e Encoding e Expressões Regulares.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fconsumindo-um-rss-com-simplexml%2F&title=Consumindo+um+RSS+com+simplexml&desc=Essa+semana+precisei+consumir+um+RSS+do+wordpress+%28UTF-8%29%2C+para+utilizar+o+conte%C3%BAdo+em+outra+aplica%C3%A7%C3%A3o+%28ISO-8859-1%29.+Realizei+rapidamente+%28sem+frameworks+ou+firulas%29+e+o+fiz+usando+simplexml+e+um+e&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "xml";
            bb_bid  = "1603894";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_width = "600";bb_limit = "6";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end -->]]></content:encoded>
			<wfw:commentRss>http://duodra.co/post/consumindo-um-rss-com-simplexml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meu Ambiente de Trabalho</title>
		<link>http://duodra.co/post/meu-ambiente-de-trabalho/</link>
		<comments>http://duodra.co/post/meu-ambiente-de-trabalho/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 12:54:18 +0000</pubDate>
		<dc:creator>Duodraco</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://duodraco.dominiotemporario.com/?p=11</guid>
		<description><![CDATA[Cerca de um ano atrás eu fiz um post sobre ambiente de desenvolvimento. Dando uma olhada, mudou muito meu ambiente, desde hardware a IDE e Navegador. Quando desenvolvemos sistemas é imprescindível que tenhamos um bom ambiente (hardware + software) para &#8230; <a href="http://duodra.co/post/meu-ambiente-de-trabalho/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fmeu-ambiente-de-trabalho%2F&title=Meu+Ambiente+de+Trabalho&desc=Cerca+de+um+ano+atr%C3%A1s+eu+fiz+um+post+sobre+ambiente+de+desenvolvimento.+Dando+uma+olhada%2C+mudou+muito+meu+ambiente%2C+desde+hardware+a+IDE+e+Navegador.%0D%0A%0D%0AQuando+desenvolvemos+sistemas+%C3%A9+imprescind%C3%ADv&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><p>Cerca de um ano atrás eu fiz um post sobre <a class="bbli" href="http://sledge.boo-box.com/list/page/YW1iaWVudGVfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-60">ambiente<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> de desenvolvimento. Dando uma olhada, mudou muito meu ambiente, desde hardware a IDE e Navegador.</p>
<p>Quando desenvolvemos sistemas é imprescindível que tenhamos um bom ambiente (hardware + software) para que nosso trabalho flua da melhor maneira possível. Sistema Operacional, Linguagem, IDE e/ou Editores, etc. A seguir as minhas escolhas para o trabalho pessoal.</p>
<p><img class="size-full wp-image-30   alignnone" style="padding: 0pt; margin: 0px; border: 0pt none;" title="desktop do duodraco" src="http://duodra.co/wp-content/uploads/2010/01/snapshot22.png" alt="desktop do duodraco" width="480" height="300" /></p>
<p style="text-align: center;">
<p><span id="more-11"></span></p>
<p><strong>Hardware</strong><br />
Um bom hardware vai evitar que hajam problemas, como engasgos de processamento ou limitações idiotas como falta de memória para executar alguma tarefa, tirando sua atenção quando você tem que ficar focado em desenvolver direito.<br />
<a class="bbli" href="http://sledge.boo-box.com/list/page/Tm90ZWJvb2tfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-60">Notebook<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> HP Pavillion, Turion X2 2Mhz, com 4GB de Ram, HD sata de 250GB + 1HD externo eSata 160GB</p>
<p><strong>Sistema Operacional<br />
</strong>Minha opção pelo Linux/<a title="Opensuse" href="http://opensuse.org" target="_blank">Opensuse</a>, em substituição ao (k)ubuntu, foi basicamente por conta do <a title="KDE" href="http://kde.org" target="_blank">KDE</a>: O Opensuse é para o KDE, o que o Ubuntu é para o Gnome: a distribuição que melhor veste o ambiente gráfico. O Opensuse possui o Yast, uma excelente central de gerenciamento do <a class="bbli" href="http://sledge.boo-box.com/list/page/c2lzdGVtYV8jI19iYXJfIyNfdGFnZ2luZy10b29sLXdwXyMjXzE2MDM4OTQ=-60">sistema<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a>. E o zypper (gestor de pacotes e repositórios RPM) é bem espertinho.<br />
Opensuse <span style="text-decoration: line-through;">11.2</span> 11.3 64bits, rodando KDE <span style="text-decoration: line-through;">4.4</span> 4.5+<span style="text-decoration: line-through;"><br />
</span></p>
<p><strong>Linguagem de Programação</strong><br />
O Pessoal de outras linguagens me pergunta: &#8216;porque diabos você abraça tanto o <a title="PHP Hypertext Preprocessor" href="http://php.net" target="_blank">PHP</a>?&#8217; É hoje a plataforma que domino, que me deu o pouco que tenho em bens materiais e o muito que tenho em conhecimento, que me levou a ser palestrante em diversos eventos, que me fez conhecer pessoas extraordinárias, o <a title="Grupo de Usuários PHP de São Paulo" href="http://phpsp.org.br" target="_blank">PHPSP</a>, e tanta coisa que se fosse agradecer precisaria de um post dedicado a isso (ta ái uma boa idéia). É uma linguagem madura, com gente experiente (infelizmente ainda não é maioria, mas estamos trabalhando pra isso), e tem excelente documentação e <a class="bbli" href="http://sledge.boo-box.com/list/page/cGVyZm9ybWFuY2VfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-64">performance<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a>.<br />
PHP (Duh!) 5.3+, com um pack bom de extensões que serão citados em outro post</p>
<p><strong>Banco de Dados<br />
</strong>A opção pelo <a title="MySQL" href="http://mysql.com" target="_blank">MySQL</a> é pela maioria dos projetos, não por opção de qualidade. O <a title="PostgreSQL" href="http://postgresql.org" target="_blank">PostgreSQL</a> oferece um ambiente mais completo e estável, porém (ainda) é difícil achar bons hosts com suporte a ele&#8230; ou se paga por um servidor dedicado ou na nuvem.<br />
Mysql 5.1 , PostgreSQL 8.4 e SQLite3</p>
<p><strong>Controle de Versão</strong><br />
Dentre as diversas opções que temos hoje para este trabalho, se destacam pela liberdade que oferecem as de controle distribuído. Git, Bazaar &#8230; mas minha opção é pela simplicidade e quantidade e <a class="bbli" href="http://sledge.boo-box.com/list/page/cXVhbGlkYWRlXyMjX2Jhcl8jI190YWdnaW5nLXRvb2wtd3BfIyNfMTYwMzg5NA==-64">qualidade<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> de clientes disponíveis.<br />
<a title="Mercurial" href="http://http://mercurial.selenic.com/" target="_blank">Mercurial</a></p>
<p><strong>Browser</strong><br />
Estou na cruel dúvida: Chrome ou Opera? enquanto não decido vou brincando com os disponíveis. O firefox perdeu seu posto de navegador padrão: lento e pesado (boa parte é por executá-lo no KDE (que tem que carregar as libs do GTK para utilizá-lo)) fica lá no desktop pra fazer prova-real em testes de interface e usar o firebug; aliás, o firebug foi uma das coisas que me segurou no firefox tanto tempo.. o inspector do webkit (disponível no chrome, rekonq, midori, etc.) e o dragonfly do opera o substitui bem.<br />
Principal: Google Chrome(5.0+) e Opera (10.60+)<br />
Secundário: Firefox e Rekonq/Konqueror<br />
Outros: IE6/7 via wine e Midori</p>
<p><strong>IDE</strong><br />
Bom, já falei no outro artigo o porque da minha escolha do <a title="Netbeans" href="http://netbeans.org" target="_blank">Netbeans</a>. Roda sem problemas em qualquer plataforma&#8230; quando você se acostuma com os atalhos de teclado então&#8230; é uma IDE que sem dúvida te poupa muito trabalho.<br />
O <a title="Kdevelop" href="http://kdevelop.org" target="_blank">Kdevelop</a> por sua vez traz as melhorias do framework Qt4 em uma plataforma única: rápida, integrada ao KDE, e que promete (e já atende) muito.<br />
Netbeans 6.9+ com suporte a PHP<br />
Testando o Kdevelop 4</p>
<p><strong>Modeladores</strong><br />
Quem, além de codificar, precisa ou quer realizar análise não dispensa <a class="bbli" href="http://sledge.boo-box.com/list/page/YXBsaWNhdGl2b3NfIyNfYmFyXyMjX3RhZ2dpbmctdG9vbC13cF8jI18xNjAzODk0-64">aplicativos<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a> para confecção de modelos ER e de diagramas UML. O ideal é que você tenha nessas aplicações para ter agilidade na confecção do documento, e que tenha boas opções de exportação, e que o resultado seja legível.<br />
<a title="Umbrello" href="http://uml.sourceforge.net/" target="_blank">Umbrello</a> e Netbeans (via plugin) para UML<br />
<a title="Mysql Workbench" href="http://wb.mysql.com/" target="_blank">Mysql Workbench</a> para ER</p>
<p><strong>MindMapping</strong><br />
Sim, uma ferramenta surpreendente quando bem usada. segundo a wikipedia o mapa mental é &#8220;&#8230;voltado para a gestão de  informações, de conhecimento e de capital intelectual; para a compreensão e solução de problemas;  na memorização e aprendizado; na criação de  manuais, livros e palestras; como ferramenta de <em>brainstorming</em> (tempestade de ideias); e no auxílio da gestão estratégica de uma  empresa ou <a class="bbli" href="http://sledge.boo-box.com/list/page/bmVnJUYzY2lvXyMjX2Jhcl8jI190YWdnaW5nLXRvb2wtd3BfIyNfMTYwMzg5NA==-64">negócio<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a>.&#8221;. Há quem o cite como ferramenta ágil de documentação. O XMind é uma opção de fácil utilização e multiplataforma.<br />
<a title="XMind" href="http://www.xmind.net/" target="_blank">XMind</a></p>
<p>Bom pessoal, resumidamente é isso. Deixem suas opções nos comentários, inclusive se forem usuários de outras plataformas.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
											<iframe
												style="height:25px !important; border:0px solid gray !important; overflow:hidden !important; width:550px !important;" frameborder="0" scrolling="no" allowTransparency="true"
												src="http://www.linksalpha.com/social?blog=Duodraco&link=http%3A%2F%2Fduodra.co%2Fpost%2Fmeu-ambiente-de-trabalho%2F&title=Meu+Ambiente+de+Trabalho&desc=Cerca+de+um+ano+atr%C3%A1s+eu+fiz+um+post+sobre+ambiente+de+desenvolvimento.+Dando+uma+olhada%2C+mudou+muito+meu+ambiente%2C+desde+hardware+a+IDE+e+Navegador.%0D%0A%0D%0AQuando+desenvolvemos+sistemas+%C3%A9+imprescind%C3%ADv&fc=333333&fs=tahoma&fblname=like&fblref=facebook&fbllang=pt_BR&fblshow=1&fbsbutton=1&fbsctr=1&fbslang=en&fbsendbutton=1&twbutton=1&twlang=en&twmention=duodraco&twrelated1=&twrelated2=&twctr=1&lnkdshow=show&lnkdctr=1&buzzbutton=1&buzzlang=en&buzzctr=1&diggbutton=1&diggctr=1&stblbutton=1&stblctr=1&g1button=1&g1ctr=1&g1lang=en-US">
											</iframe>
										</div><!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "php";
            bb_bid  = "1603894";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_width = "600";bb_limit = "6";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end -->]]></content:encoded>
			<wfw:commentRss>http://duodra.co/post/meu-ambiente-de-trabalho/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

