<?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>/tmp/santos &#187; desenvolvimento</title>
	<atom:link href="http://www.tmpsantos.com.br/category/nerd/devel/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tmpsantos.com.br</link>
	<description>Thiago Marcos P. Santos</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:33:00 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Arduino Uno + Ubuntu + CMake</title>
		<link>http://www.tmpsantos.com.br/2010/12/arduino-uno-ubuntu-cmake/</link>
		<comments>http://www.tmpsantos.com.br/2010/12/arduino-uno-ubuntu-cmake/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 12:26:12 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[buildsystem]]></category>
		<category><![CDATA[cmake]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=728</guid>
		<description><![CDATA[Já faz uma semana que estou brincando meu Arduino Uno novo em folha. Infelizmente a versão Maverick (10.10) do Ubuntu vem com um SDK do Arduino que é incompatível; parece que congelaram a versão estável do pacote pouco antes do lançamento do Uno. A primeira coisa que fiz foi atualizar meu SDK para os pacotes [...]]]></description>
			<content:encoded><![CDATA[<p>Já faz uma semana que estou brincando meu Arduino Uno novo em folha. Infelizmente a versão Maverick (10.10) do Ubuntu vem com um SDK do Arduino que é <a href="https://bugs.launchpad.net/maverick-backports/+bug/666849">incompatível</a>; parece que congelaram a versão estável do pacote pouco antes do lançamento do Uno. A primeira coisa que fiz foi atualizar meu SDK para os pacotes <span style="text-decoration: line-through">instáveis</span> do Natty (11.04). Basta baixar e instalar manualmente do <a href="http://packages.ubunut.com/search?keywords=arduino&amp;searchon=names&amp;suite=natty&amp;section=all">site do Ubuntu</a> (lembre-se de atualizar tanto o pacote <strong>arduino</strong> quanto o <strong>arduino-core</strong>).</p>
<p><a href="http://www.tmpsantos.com.br/wp-content/uploads/2010/12/arduino.jpeg"><img class="size-full wp-image-734 aligncenter" src="http://www.tmpsantos.com.br/wp-content/uploads/2010/12/arduino.jpeg" alt="" width="225" height="225" /></a>A IDE é bem amigável para os programadores casuais e permite escrever programas simples sem muito esforço. Ao primeiro olhar, pode parecer que uma versão não padrão de C/C++ é usada, mas isto se deve ao fato da IDE adicionar headers e a função main() para você automaticamente no momento em que você clica em <strong>Upload</strong>. Me parece que você pode ter apenas um arquivo de código fonte por projeto, o que é razoável para coisas não muito complexas.</p>
<p style="text-align: left"><a href="http://www.tmpsantos.com.br/wp-content/uploads/2010/12/arduino_ide.png"><img class="aligncenter size-medium wp-image-737" style="border: 10px solid white" src="http://www.tmpsantos.com.br/wp-content/uploads/2010/12/arduino_ide-246x300.png" alt="Arduino IDE" width="246" height="300" /></a>Para aqueles que desejam desenvolver de maneira tradicional usando linha de comando, eu criei este template baseado em <a href="http://www.cmake.org/">CMake</a> para o Arduino Uno. Ele foi feito de tal forma que possibilita adicionar suporte a outros modelos de Arduino apenas criando um novo arquivo com as configurações do hardware. Não há restrição de uso deste template em outras distribuições Linux (nem mesmo em outros sistemas operacionais, uma vez que o CMake roda em Mac e Windows também), mas claro que modificações podem ser necessárias. Patches são sempre bem-vindos. <img src='http://www.tmpsantos.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Usando o template CMake para Arduino</h2>
<p style="text-align: left">Você vai precisar, claro, dos pacotes do <strong>cmake</strong> instalados e uma versão compatível do SDK do Arduino (veja acima como resolver esta questão Ubuntu Maverick x Uno). Apenas o pacote <strong>arduino-core</strong> é necessário para rodar este template.</p>
<p style="text-align: left">Faça download da última versão aqui:</p>
<p style="text-align: left"><a href="http://www.tmpsantos.com.br/cgi-bin/gitweb.cgi?p=arduino_cmake.git;a=snapshot;h=HEAD;sf=tgz">arduino_cmake.tar.gz</a></p>
<p style="text-align: left">Esta é uma versão modificada do exemplo clássico chamado <a href="http://www.arduino.cc/en/Tutorial/Blink">Blink</a>, convertido em C/C++ padrão (é estranho o fato das bibliotecas do Arduino serem escritas em uma mistura de C e C++ e não apenas C). Este exemplo é bacana porque lhe dá uma resposta visual sem ser necessário espetar algum componente extra na placa. Parece que quase todas as vesões do Arduino possuem um LED embutido ligado ao pino 13. Como o cmake não é tão conhecido (o que é uma pena por ser uma ferramente excelente), segue as instruções de como compilar o exemplo:</p>
<pre>$ mkdir build
$ cd build
$ cmake ..
$ make</pre>
<p style="text-align: left">Você pode exportar a variaǘel de ambiente ARDUINO_PORT ou editar o arquivo CMakeLists.txt para alterar a porta no qual seu dispositivo está conectado. Provavelmente você não vai precisar mexer nisso se estiver usando o combo Ubuntu Maverick e Arduino Uno.</p>
<p style="text-align: left">Dois targets extras foram adicionados ao Makefile para tornar as coisas mais fáceis:</p>
<ul>
<li><strong>make flash</strong> &#8211; Vai &#8220;flashar&#8221; (gravar o software) na hardware conectado em ARDUINO_PORT.</li>
<li><strong>make reset</strong> &#8211; Reinicia o hardware (mais ou menos o mesmo que apertar o botão de reset na placa).</li>
</ul>
<h2><strong>Dicas</strong><strong> </strong></h2>
<p>Minha forma predileta de depuração de software é usando printf(). A versão modificada do Blink que está sendo usada no template contém algumas mensagens de debug nesta forma. Use o <strong>minicom</strong> para ver estas mensagens pelo terminal:</p>
<pre>$ minicom -b 115200 -D /dev/ttyACM0</pre>
<p>Você precisa sair do minicom antes de &#8220;flashar&#8221; o hardware novamente. Faça isso usando CTRL+A e depois X.</p>
<h2><strong>Aviso</strong><strong> </strong></h2>
<p>Ao seguir este tutorial e usar o template do buildsystem, você pode potencialmente destruir seu Arduino e transformá-lo em um peso de papel (não muito bom, uma vez que ele é bem leve). Você está assumindo este risco, eu não me responsabilizo por nada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2010/12/arduino-uno-ubuntu-cmake/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>qmake template</title>
		<link>http://www.tmpsantos.com.br/2010/08/qmake-template/</link>
		<comments>http://www.tmpsantos.com.br/2010/08/qmake-template/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 21:36:54 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[artigo]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[pt_br]]></category>
		<category><![CDATA[buildsystem]]></category>
		<category><![CDATA[qmake]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=687</guid>
		<description><![CDATA[Escrever um buildsystem é sempre o primeiro passo (e algumas vezes o mais chato) ao começar um novo projeto de software. O Qt provê uma ferramenta própria para fazer com que uma única árvore de código possa ser compilada em todas as plataformas suportadas: o qmake. Ao invés de criar um projeto do qmake do [...]]]></description>
			<content:encoded><![CDATA[<p>Escrever um buildsystem é sempre o primeiro passo (e algumas vezes o mais chato) ao começar um novo projeto de software. O Qt provê uma ferramenta própria para fazer com que uma única árvore de código possa ser compilada em todas as plataformas suportadas: o qmake. Ao invés de criar um projeto do qmake do zero para seu novo projeto, este template tem como objetivo lhe fornecer uma base sólida para seu buildsystem, atendendo a alguns requisitos básicos:</p>
<p><strong>Shadow build</strong> &#8211; Chega de repositórios sujos após uma compilação. Compilar seu código dentro do repositório é opcional, você precisa apenas criar um diretório qualquer fora da sua árvore e chamar o script de configuração do seu projeto (configure). Existem várias situações onde isto é especialmente necessário: compilar a mesma árvore de código para diferentes plataformas ou quando seu código fonte está localizado em um storage lento (como um compartilhamento de rede ou uma partição criptografada).</p>
<p style="text-align: left;"><strong>Integração com testes automatizados</strong> &#8211; Desenvolvimento orientado a testes tem sido cada vez mais comum e provou ser uma importante ferramenta para detectar regressões. Este template provê mais do que um modo fácil de rodar seus testes (digitando &#8220;make check&#8221;), mas um relatório gráfico mostrando quão abrangentes seus testes são usando <a href="http://ltp.sourceforge.net/coverage/lcov.php">LCOV</a>.</p>
<div id="attachment_692" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/lcov.png"><img class="size-medium wp-image-692 " src="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/lcov-300x212.png" alt="" width="300" height="212" /></a><p class="wp-caption-text">LCOV mostrando a cobertura dos unit tests</p></div>
<p style="text-align: left;"><strong>Documentação de código</strong> &#8211; Desenvolvedores em geral são preguiçosos se tratando de escrever documentos, a não ser que você lhes dê uma forma fácil de ver o o belo resultado de uma documentação bem escrita. Após digitar &#8220;make doc&#8221;, uma página HTML é automaticamente gerada agrupando toda a informação extraídas dos markups qdoc3 do seu código fonte.</p>
<div id="attachment_699" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/doc.png"><img class="size-medium wp-image-699" src="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/doc-300x212.png" alt="" width="300" height="212" /></a><p class="wp-caption-text">Documentação extraída da classe Foobar</p></div>
<p style="text-align: left;"><strong>Internacionalização</strong> &#8211; Um buildsystem moderno precisa prover um jeito fácil para os tradutores atualizarem os arquivos de tradução. Precisamos ter em mente que tradutores não são necessariamente desenvolvedores e eles podem não gostar de ter que vasculhar o código fonte em busca de strings para tradução. Este template fornece uma integração com lupdate e lrelease &#8211; ferramentas i18n do Qt &#8211; criando todos os aquivos .ts necessários ao Qt Linguist.</p>
<div id="attachment_704" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/linguist.png"><img class="size-medium wp-image-704" src="http://www.tmpsantos.com.br/wp-content/uploads/2010/08/linguist-300x207.png" alt="" width="300" height="207" /></a><p class="wp-caption-text">Use o Qt Linguist para editar os arquivos de tradução</p></div>
<p style="text-align: left;"><strong>Fácil depuração</strong> &#8211; É meio óbvio que um buildsystem também deve gerar uma versão do software especial para depuração. Você também não precisa instalar esta versão no sistema para fazer testes (pelo menos no Linux).</p>
<p style="text-align: left;"><strong>Empacotamento</strong> &#8211; Seu software precisa ser de fácil distribuição. Adicionamos o suporte a empacotamento para Debian como exemplo neste template para demonstrar como é fácil fazer um pacote baseado neste buildsystem. Alguém anima contribuir com o empacotamento RPM?</p>
<h2>Considerações finais</h2>
<p>Só fiz testes deste template no Linux. Infelizmente algumas features só vão funcionar se você estiver usando GCC, como por exemplo a cobertura de código dos testes automatizados. <img src='http://www.tmpsantos.com.br/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>A última versão para download está disponível <a href="http://www.tmpsantos.com.br/cgi-bin/gitweb.cgi?p=qmake_template.git;a=snapshot;h=HEAD;sf=tgz">aqui</a>. Você também pode navegar pelo <a href="http://www.tmpsantos.com.br/cgi-bin/gitweb.cgi?p=qmake_template.git">repositório git do template</a>. Lembre-se: patches e sugestões são sempre bem-vindos.</p>
<p>Mais instruções de uso (em inglês) no aquivo <a href="http://www.tmpsantos.com.br/cgi-bin/gitweb.cgi?p=qmake_template.git;a=blob;f=BUILD;hb=HEAD">BUILD</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2010/08/qmake-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pacotes Debian da última versão do Qt</title>
		<link>http://www.tmpsantos.com.br/2009/05/qt-mainstream-debian-packages/</link>
		<comments>http://www.tmpsantos.com.br/2009/05/qt-mainstream-debian-packages/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 02:26:31 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pt_br]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=427</guid>
		<description><![CDATA[Para aqueles que querem ver como está ficando o Qt 4.6, com o novo e recém mergeados framework de animações e a máquina de estados, fiz umas modificações nos pacotes mantidos pelo pessoal do Debian KDE para gerar pacotes do HEAD do repositório do Qt. Não fiz muitos testes com o pacote, mas até o [...]]]></description>
			<content:encoded><![CDATA[<p>Para aqueles que querem ver como está ficando o Qt 4.6, com o novo e <a href="http://labs.trolltech.com/blogs/2009/05/25/animations-and-state-machine-apis-in-qtmaster/">recém mergeados</a> <a href="http://doc.trolltech.com/solutions/4/qtanimationframework/animation.html">framework de animações</a> e a <a href="http://doc.trolltech.com/solutions/4/qtanimationframework/statemachine-api.html">máquina de estados</a>, fiz umas modificações nos pacotes mantidos pelo pessoal do <a href="http://pkg-kde.alioth.debian.org/">Debian KDE</a> para gerar pacotes do HEAD do repositório do Qt. Não fiz muitos testes com o pacote, mas até o momento parece funcionar bem. Note que se você instalar os pacotes 4.6, vai substituir os pacotes do sistema. Apesar de ser uma operação reversível, é sempre bom frisar que é uma versão instável das bibliotecas e pode quebrar de alguma forma todo o seu KDE, Skype, etc.</p>
<p>Se você é corajoso, compile seu próprio pacote com estes patches aqui.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2009/05/qt-mainstream-debian-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git e Gitweb no DreamHost</title>
		<link>http://www.tmpsantos.com.br/2009/05/git-gitweb-on-dreamhost/</link>
		<comments>http://www.tmpsantos.com.br/2009/05/git-gitweb-on-dreamhost/#comments</comments>
		<pubDate>Tue, 19 May 2009 00:08:28 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[artigo]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[pt_br]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=188</guid>
		<description><![CDATA[Queria colocar no meu site uma área com repositórios de código no qual estou trabalhando. Git foi minha primeira escolha, vendo que deixei o SVN para trás a algum tempo. Infelizmente o DreamHost, que hospeda meu site, não tem suporte oficial a Git. Neste tutorial explico como configurar um repositório Git no DreamHost, inclusive com [...]]]></description>
			<content:encoded><![CDATA[<p>Queria colocar no meu site uma área com repositórios de código no qual estou trabalhando. <a href="http://git-scm.com/">Git</a> foi minha primeira escolha, vendo que deixei o SVN para trás a algum tempo. Infelizmente o <a href="http://www.dreamhost.com/">DreamHost</a>, que hospeda meu site, não tem suporte oficial a Git.</p>
<p>Neste tutorial explico como configurar um repositório Git no DreamHost, inclusive com o Gitweb ativado. Você terá acesso de commit no seu repositório usando SSH e ele estara publicamente disponível para ser clonado via HTTP (uma vez que não temos o git-daemon rodando).</p>
<p>Aviso que o objetivo aqui não é ensinar a usar o Git, e sim, ensinar como publicar um repositório no DreamHost.</p>
<h2>Preparando um hostname</h2>
<p>Seu repositório Git pode ser instalado em qualquer um de seus sites hospedados no DreamHost. Preferi criar um <a href="http://git.tmpsantos.com.br">sub-domínio</a> exclusivo para isolar o conteúdo e facilitar meu gerenciamento.</p>
<h2>Atualizando o Git</h2>
<p>Neste momento, a versão instalada nos servidores do DreamHost é a 1.5.6.5. Achei prudente atualizar para uma versão &gt;= 1.6 na tentativa de manter a compatibilidade com a versão do Git que acompanha as distros mais recentes (ex. Ubuntu Jaunty).</p>
<p>Acesse sua conta no DreamHost via SSH e faça <a href="http://git-scm.com/download">download</a> da última versão estável do Git. Algumas coisas devem ser observadas antes de instalar:</p>
<ul>
<li> Não é necessário a dependência da libcurl, uma vez que só vamos hospedar o repositório.</li>
<li>Devemos desativar o <strong>mmap(2)</strong> para o DreamHost não achar que o Git está consumindo muita memória e matar o processo.</li>
<li>Os arquivos devem ser instalados dentro de <strong>/home/$USER/packages</strong>. Este diretório é correto para instalações de software do usuário no DreamHost. O <strong>/home/$USER/packages/bin </strong>inclusive já está na sua variável de ambiente <strong>$PATH</strong> por padrão.</li>
</ul>
<p>Portanto, após descompactar o código fonte, atente-se para rodar o script de configuração com as seguintes opções (o restante da instalação é convencional):</p>
<pre>$ ./configure --prefix=/home/$USER/packages NO_CURL=1 NO_MMAP=1</pre>
<h2>Criando o repositório</h2>
<p>Como criei um sub-domínio para meus repositórios, a raíz do meu domínio está em <strong>/home/$USER/git.example.com</strong>. Dentro deste diretório,  crie seu repositório:</p>
<pre>$ mkdir test.git
$ cd test.git
$ git init --bare</pre>
<p>Edite o arquivo <strong>description</strong> com algo relevante para aparecer no Gitweb. Por se tratar de um repositório que será clonado via HTTP, é necessário ativar um hook a ser executado após cada commit. Este hook atualiza algumas informações necessárias para clonar o repositório que convecionalmente é feito pelo git-daemon.</p>
<pre>$ mv hooks/post-update.sample hooks/post-update</pre>
<p>Na sua máquina local, dentro de um repositório Git válido já com alguns commits, adicione o seu repositório remoto (usei o nome &#8220;public&#8221; no exemplo). Em seguida faça o push para criar o branch master:</p>
<pre>$ git remote add public ssh://username@example.com/home/username/git.example.com/test.git
$ git push public master</pre>
<p>Caso não queira passar pela amolação de digitar senha a todo momento para atualizar o repositório, <a href="http://www.guiadohardware.net/tutoriais/dominando-ssh/pagina5.html">copie sua chave</a> para o servidor remoto.</p>
<p>Quem quiser clonar o seu repositório público o fará via HTTP pelo comando a seguir:</p>
<pre>$ git clone http://git.example.com/test.git</pre>
<h2>Instalando o Gitweb</h2>
<p>Para usar o Gitweb, você precisa ter o suport a CGI ativado no DreamHost, como normalmente se tem por padrão. Copie o conteúdo da pasta <strong>gitweb</strong> que acompanha o tarball do Git para qualquer lugar acessível externamente (exemplo: crie a pasta <strong>cgi-bin/</strong> e mova o arquivo para lá para termos http://git.example.com/cgi-bin/gitweb.cgi).</p>
<p>Nesta pasta, crie o arquivo <strong>gitweb_config.perl</strong> com o seguinte conteúdo:</p>
<pre name="code" class="html">$GIT = "/home/USERNAME/packages/bin/git";
$projectroot = "/home/USERNAME/git.example.com/";
$home_link_str = "http://git.example.com";

@stylesheets = ("gitweb.css");

$logo = "git-logo.png";
$favicon = "git-favicon.png";
$site_name = "git repositories";</pre>
<h2>Polindo a instalação</h2>
<p>Desativei o <a href="http://blog.dreamhosters.com/kbase/index.cgi?area=2517">directory listing</a> que é comportamento padrão editando o arquivo <strong>.htaccess</strong> e acrescentando a seguinte linha:</p>
<pre name="code" class="html">Options -Indexes</pre>
<p>Recomendo também criar um arquivo <strong>index.php</strong> que redirecione os acessos a http://git.example.com para o Gitweb:</p>
<pre name="code" class="php">
&lt;?php
header("location:http://git.example.com/cgi-bin/gitweb.cgi");
?&gt;</pre>
<h2>Considerações finais</h2>
<p>Este material foi fortemente baseado no conteúdo citado nas referências. É basicamente uma compilação atualizada das melhores partes com alguns poucos toques pessoais.</p>
<p>Por fim, sugiro que você, dono de uma conta no DreamHost, <a href="https://panel.dreamhost.com/?tree=home.sugg&amp;category=New%20Features&amp;search=Git%20source">vote</a> para que a equipe técnica que administra os servidores, proveja suporte nativo.</p>
<h2>Referências:</h2>
<ul>
<li><a href="http://wiki.dreamhost.com/Git">DreamHost Wiki</a></li>
<li>Autopragmatic</li>
<li><a href="http://craigjolicoeur.com/blog/2008/04/hosting-git-repositories-on-dreamhost/">Craig Jolicoeur</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2009/05/git-gitweb-on-dreamhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLISOL-AM</title>
		<link>http://www.tmpsantos.com.br/2009/04/flisol-amflisol-am/</link>
		<comments>http://www.tmpsantos.com.br/2009/04/flisol-amflisol-am/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 07:01:08 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pt_br]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=94</guid>
		<description><![CDATA[Como prometido, disponibilizo o material apresentado durante o workshop sobre D-Bus no FLISOL-AM. Aproveito para agradecer a atenção e participação dos presentes.]]></description>
			<content:encoded><![CDATA[<p>Como prometido, disponibilizo o <a href="http://www.tmpsantos.com.br/wp-content/uploads/2009/04/dbus-workshop.zip">material</a> apresentado durante o workshop sobre D-Bus no FLISOL-AM.</p>
<p>Aproveito para agradecer a atenção e participação dos presentes.</p>
<div id="attachment_102" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/danielelias/3475316734/"><img class="size-full wp-image-102" src="http://www.tmpsantos.com.br/wp-content/uploads/2009/04/flisol.jpg" alt="D-Bus workshop (foto tirada de um celular)" width="500" height="375" /></a><p class="wp-caption-text">Foto do workshop de D-Bus tirada do celular do Daniel Elias.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2009/04/flisol-amflisol-am/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>VIM e C++</title>
		<link>http://www.tmpsantos.com.br/2009/04/vimandcpp/</link>
		<comments>http://www.tmpsantos.com.br/2009/04/vimandcpp/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 01:12:23 +0000</pubDate>
		<dc:creator>Thiago</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.tmpsantos.com.br/?p=71</guid>
		<description><![CDATA[Desde que comecei a usar Qt, C++ é a principal linguagem de programação que uso no meu dia a dia. Alguns dos meus colegas de trabalho recentemente trocaram o VIM pelo QtCreator alegando que o auto-completion (aquela feature que completa nome de métodos, atributos, etc e no mundo do MS Visual Studio é conhecido como [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que comecei a usar <a href="http://www.qtsoftware.com/">Qt</a>, C++ é a principal linguagem de programação que uso no meu dia a dia. Alguns dos meus colegas de trabalho recentemente trocaram o <a href="http://www.vim.org/">VIM</a> pelo <a href="http://qt.nokia.com/products/developer-tools/">QtCreator</a> alegando que o auto-completion (aquela feature que completa nome de métodos, atributos, etc e no mundo do MS Visual Studio é conhecido como &#8220;intellisense&#8221;) no QtCreator é <em>killer</em>.</p>
<p>A extensão do VIM chamada  Omni Completion fazia a mesma coisa de forma satisfatória quando usando C, mas o fato é que nunca me acostumei a usar isso: ctags + rápida olhada nos headers eram o suficiente até então, mas foi quando o Qt e suas classes com milhões de atributos e métodos chegaram na minha vida. Hoje, enquanto queimava uns neurônios tentando lembrar o nome de um método da classe QSomething eu tive a brilhante idéia de usar  auto-completion do VIM (porque não?). Decepcionado, descobri que o Omni Completion não suporta C++ nativamente.</p>
<p><a href="http://tinyurl.com/cjlev2">O Oráculo</a> me disse algo a respeito de um add-on chamado <a href="http://www.vim.org/scripts/script.php?script_id=1520">OmniCppComplete</a>. Poucos minutos foram o suficiente para instalar e ver quão legal é o plugin. Apenas o pop-up automático sugerindo nome de atributos que é irritante, mas pode-se facilmente desabilitá-lo e usar o bom e velho ^X^O sob demanda.</p>
<p>É claro que não há nada novo aqui (a primeira versão do OmniCpp data de 2006), mas você pode ser como eu, receoso em relação a testar novos add-ons do VIM, porque a maioria é lixo. Apenas poucos merecem a honra de estar no meu <strong>.vimrc</strong>. Este post portanto é para encorajar usuários do VIM a dar uma chance ao OmniCpp e se tornar mais <a href="http://www.moolenaar.net/habits.html">efetivo</a>.</p>
<div id="attachment_73" class="wp-caption aligncenter" style="width: 593px"><img class="size-full wp-image-73" src="http://www.tmpsantos.com.br/wp-content/uploads/2009/04/omnicppcomplete.png" alt="OmniCppComplete in action" width="583" height="400" /><p class="wp-caption-text">OmniCppComplete em ação</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tmpsantos.com.br/2009/04/vimandcpp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

