<?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>Chronosbox &#187; Dicas</title>
	<atom:link href="http://chronosbox.org/blog/categories/dicas/feed" rel="self" type="application/rss+xml" />
	<link>http://chronosbox.org/blog</link>
	<description>idéias e dicas de uma mente insana trabalhando com TI</description>
	<lastBuildDate>Sun, 30 Oct 2011 04:57:21 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Vim confs prontas para trabalhar com Python e Django</title>
		<link>http://chronosbox.org/blog/read-to-work-vim-confs-for-python-and-django</link>
		<comments>http://chronosbox.org/blog/read-to-work-vim-confs-for-python-and-django#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:59:44 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[VIM - Vi IMproveded]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Colorscheme]]></category>
		<category><![CDATA[completion]]></category>
		<category><![CDATA[fold]]></category>
		<category><![CDATA[jump]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[matchit]]></category>
		<category><![CDATA[omni]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[snipmate]]></category>
		<category><![CDATA[vimrc]]></category>
		<category><![CDATA[wombat]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=280</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Este fim de semana [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Este fim de semana eu reescrevi meu .vimrc e gastei um tempo extra para fazer<br />
as coisas funcionarem melhores para mim com python e django <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Eu acabei<br />
fazendo um belo trabalho e agora estou codando com muito mais eficiência.</p>
<p>Os resultados são:</p>
<ul>
<li> Um .vimrc muito bem comentado e com muitas customizações.</li>
<li> Suporte para python omnicomplete.</li>
<li> Adição dos paths python e django automáticos ao ambiente do vim.</li>
<li> Adição da DJANGO_SETTINGS_MODULE automaticamente ao ambiente do vim, para completar seu próprio código.</li>
<li> Suporte do SnipMate para código django e django templates.</li>
<li> Django templates com suporte para highlighting das tags e uso do &#8216;%&#8217; com o plugin matchit.</li>
<li> Python folding e suporte a python jumping.</li>
<li> O tema acinzentado wombat com algumas customizações minhas.</li>
<li> Um gerenciador de sessões para o Vim para facilitar sua vida em manter o ambiente de trabalho.</li>
</ul>
<p>Aqui estão os arquivos para download:</p>
<ul>
<li> <a href="http://chronosbox.org/vimconfs/vim-confs-latest.tbz2">vim-confs-latest.tbz2</a>: O arquivo tar compactado com todos os arquivos, descompacte na sua home.</li>
<li> <a href="http://chronosbox.org/vimconfs/vim-confs-latest.tbz2.md5">vim-confs-latest.tbz2.md5</a>: O md5sum do tar.</li>
</ul>
<p>Se você preferir, este é o endereço no github: <a href="http://github.com/chronossc/my-vim-confs">http://github.com/chronossc/my-vim-confs</a></p>
<p>O pacote não poderia ter sido criado sem alguns plugins e artigos, segue a referência:</p>
<ul>
<li> <a href="http://code.djangoproject.com/wiki/UsingVimWithDjango" target="_blank">UsingVimWithDjango do Django Wiki</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=2540" target="_blank">SnipMate vim plugin por Michael Sanders</a></li>
<li> <a href="http://github.com/robhudson/snipmate_for_django" target="_blank">SnipMate snippets for django por Rob Hudson</a> <a href="http://rob.cogit8.org/blog/2009/Sep/20/using-vim-and-snipmate-django/" target="_blank">(Demo)</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=39" target="_blank">Matchit vim plugin por Benji Fisher</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=1487" target="_blank">Updated Syntax highlighting for Django templates por Dave Hodder</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=1487" target="_blank">py_jump vim plugin por Sergiy Matusevych</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=1487" target="_blank">python fold vim plugin por Jorrit Wiersma</a></li>
<li> <a href="http://www.vim.org/scripts/script.php?script_id=2010" target="_blank">Session Manager for vim por Yuri Klubakov</a>
</ul>
<p>Adicionalmente (thx Handrus), eu sugiro para quem escreve muito HTML, dar uma olhada no <a href="http://jetpackweb.com/blog/2010/03/04/write-html-faster-with-sparkup-vim-and-textmate/" target="_blank">SparkUp vim and textmate plugin</a> <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Eu não testei, mas pareceu muito bom.</p>
<p>Muito obrigado a quem ler, a todos que escreveram os plugins, ao pessoal do canal #vim na freenode e a ótima documentação do vim!<br />
Agora bora codar com o vim <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>** Atualizado<br />
2010-03-07: Eu criei novamente o tar porque eu removi algumas mensagens de debug, então faça o download novamente se você já fez <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
2010-03-09: Eu criei novamente o tar, fiz alguns fixes e adicionei no github.</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/read-to-work-vim-confs-for-python-and-django/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Mudar charset e quebra de linha recursivamente no Linux</title>
		<link>http://chronosbox.org/blog/mudar-charset-e-quebra-de-linha-recursivamente-no-linux</link>
		<comments>http://chronosbox.org/blog/mudar-charset-e-quebra-de-linha-recursivamente-no-linux#comments</comments>
		<pubDate>Fri, 26 Feb 2010 18:50:46 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=273</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! A algum tempo atrás [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>A algum tempo atrás precisei passar uma aplicação web que utilizava quebras de linha no formato linux e charset iso-8859-1 (US-Latin) para UTF-8 com quebra de linha no formato windows. Na época codifiquei com a ajuda do chronos este script que agora compartilho:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#change extensions filter as you need ;)</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">find</span> <span style="color: #660033;">-type</span> f <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;\.php|\.css|\.js|\.html|\.htm&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;color: #666666;">&quot;\.svn&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; .<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>charset_list.txt;
<span style="color: #000000; font-weight: bold;color: #B83A24;">while</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">read</span> <span style="color: #660033;">-r</span> line;<span style="color: #000000; font-weight: bold;color: #B83A24;">do</span>
<span style="color: #666666; font-style: italic;">#charset change</span>
iconv <span style="color: #660033;">-f</span> LATIN1 <span style="color: #660033;">-t</span> UTF-<span style="color: #000000;color: #DDD;">8</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$line</span>&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">${line}</span>2&quot;</span>;
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">mv</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">${line}</span>2&quot;</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$line</span>&quot;</span>;
<span style="color: #666666; font-style: italic;">#we adopted dos format for line breaks</span>
unix2dos <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">${line}</span>&quot;</span>;
<span style="color: #000000; font-weight: bold;color: #B83A24;">done</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>lt; .<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>charset_list.txt <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; .<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>charset_after.log <span style="color: #000000;color: #DDD;">2</span><span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;<span style="color: #000000;color: #DDD;">1</span> <span style="color: #666666; font-style: italic;">#receive list of params and send output to log</span></pre></td></tr></table></div>

<p>Explicações: O script gera uma lista com todos os arquivos da pasta onde ele se encontra e suas subpastas subsequentes (conforme o filtro explicado na segunda linha do código).<br />
Depois ele lê a lista e aplica as alterações num arquivo cópia. Move o arquivo sobre o anterior e depois altera as quebras de linha. Bastante simples, I LOVE BASH!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/mudar-charset-e-quebra-de-linha-recursivamente-no-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrando bases de dados LATIN1 para UTF-8 com o PostgreSQL</title>
		<link>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8</link>
		<comments>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8#comments</comments>
		<pubDate>Sat, 06 Feb 2010 05:59:22 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Debian/Ubuntu]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[clusters]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[latin1]]></category>
		<category><![CDATA[pgsql]]></category>
		<category><![CDATA[psql]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=264</guid>
		<description><![CDATA[Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII. O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e [...]]]></description>
			<content:encoded><![CDATA[<p>Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII.</p>
<p>O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e configurado o Postgresql, e não me deixava criar uma base de dados UTF-8, gerando o seguinte erro:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c 'createdb teste3  -E UTF-8'</span>
createdb: database creation failed: ERROR:  encoding UTF8 does not match server<span style="color: #ff0000;">'s locale en_US
DETAIL:  The server'</span>s LC_CTYPE setting requires encoding LATIN1.</pre></div></div>

<p><span id="more-264"></span></p>
<h3>Porque??</h3>
<p>O Postgresql, quando roda pela primeira vez, cria um cluster usando o encode default do sistema, e após feito isso, não se pode alterar o encode do cluster. O cluster default é o main, em todas as intalações que eu vi. </p>
<p>No caso deste servidor o encode default (locales) era en_US, que para o Debian significa en_US.ISO-8859-1. Por default o Debian Lenny, nas minhas instalações do zero, usa en_US.UTF-8, então o servidor provavelmente deveria ser um antigo Debian Etch atualizado.</p>
<h3>A solução</h3>
<p>Depois de alguma pesquisa, descobri que, após configurar o encode do servidor para usar UTF-8, poderia criar um novo cluster que suportasse tal encode.</p>
<p>Vamos ao passo a passo da solução do problema.</p>
<ul>
<li><strong>Criando um novo cluster:</strong> Para criar um novo cluster no Debian, é bastante simples:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># pg_createcluster 8.3 utf8_cluster</span>
Creating new cluster <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>configuration: <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster, data: <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>pg_hba.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Moving configuration <span style="color: #c20cb9; font-weight: bold;color: #577A61;">file</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>lib<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>pg_ident.conf to <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>postgresql<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #000000;color: #DDD;">8.3</span><span style="color: #000000; font-weight: bold;color: #CCC;">/</span>utf8_cluster...
Configuring postgresql.conf to use port <span style="color: #000000;color: #DDD;">5433</span>...
&nbsp;
debian:~<span style="color: #666666; font-style: italic;"># /etc/init.d/postgresql-8.3 restart</span></pre></div></div>

<p>O cluster vai rodar na primeira porta livre que achar depois da 5432, a não ser que você especifique. Para ter efeito, reinicia-se o Postgresql.</li>
<li><strong>Criando o usuário:</strong> Agora crie o usuário da base de dados, recomendo o mesmo nome e senha além de editar sua autenticação para trust no pg_hba.conf do seu cluster:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;createuser -P pyuser -p 5433&quot;</span>
Enter password <span style="color: #000000; font-weight: bold;color: #B83A24;">for</span> new role:
Enter it again:
Shall the new role be a superuser? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n
Shall the new role be allowed to create databases? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n
Shall the new role be allowed to create <span style="color: #c20cb9; font-weight: bold;color: #577A61;">more</span> new roles? <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>y<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>n<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span> n</pre></div></div>

</li>
<li><strong>Migrando as bases:</strong> Agora você deve migrar as bases de dados. Primeiro crie ela e depois faça um dump seguido de um psql, direto na linha de comando. Siga o exemplo:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;createdb teste3 -e -p 5433 -O pyuser&quot;</span>
CREATE DATABASE teste3 OWNER pyuser;</pre></div></div>

<p>Agora liste a base de dados:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># su postgres -c &quot;psql -l -p 5433&quot;</span>
        List of databases
   Name    <span style="color: #000000; font-weight: bold;color: #CCC;">|</span>  Owner   <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> Encoding
-----------+----------+----------
 postgres  <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
 template0 <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
 template1 <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> postgres <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8	
 teste3    <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> pyuser   <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> UTF8
<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #000000;color: #DDD;">4</span> rows<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span></pre></div></div>

<p>Após criar a base de dados, então faremos a população dela, atenção quanto as portas:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">debian:~<span style="color: #666666; font-style: italic;"># pg_dump -U pyuser teste3 | psql -U pyuser -p 5433 teste3</span></pre></div></div>

</li>
<li><strong>Configurando sua aplicação:</strong> Esta é a parte mais simples, apenas altere a porta da sua aplicação para a porta do novo cluster.</li>
</ul>
<p>Repita os passos da criação da base de dados para cada base que precisa ser movida, e pronto, tudo funcionando agora com suporte a UTF-8.</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/moving-postgresql-databases-from-latim1-to-utf8/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Configurando múltiplos ambientes Python</title>
		<link>http://chronosbox.org/blog/setting-up-multiple-python-envrionments</link>
		<comments>http://chronosbox.org/blog/setting-up-multiple-python-envrionments#comments</comments>
		<pubDate>Wed, 27 Jan 2010 02:20:01 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[2.4]]></category>
		<category><![CDATA[2.5]]></category>
		<category><![CDATA[2.6]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[versions]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=259</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Múltiplos ambientes python Trabalhar [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<h3>Múltiplos ambientes python</h3>
<p>Trabalhar com várias versões de ambientes python tem se tornado algo comum em minha vida, e acredito que um meio fácil de &#8216;setar&#8217; estes ambientes seja algo útil e  não tão simples para a maioria das pessoas.</p>
<p>Eu criei um simples bash script que seta este &#8216;ambiente&#8217;, trata-se de uma função que você cria no seu <em><strong>.bash_profile</strong></em>. Executa-se ela com a versão do python em seguida e pronto, seu ambiente esta configurado. Vamos ver no código como eu fiz, o script está com comentários em inglês:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #7a0874; font-weight: bold;color: #8FB394;">export</span> <span style="color: #007800;">ORIGINALPATH</span>=<span style="color: #007800;color: blue;">$PATH</span>
loadpyenv<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#123;</span>
    <span style="color: #666666; font-style: italic;"># $PV is our control variable, get from $1, first argument on shell</span>
    <span style="color: #666666; font-style: italic;"># anything that you need to put here and depend for python version ${PV} is your var ;)</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">export</span> <span style="color: #007800;">PV</span>=<span style="color: #007800;">$1</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>:: Setting environ to use python <span style="color: #007800;">$PV</span>&quot;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Put here various aliases that you can use</span>
    <span style="color: #666666; font-style: italic;"># put a python alias</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">alias</span> <span style="color: #007800;">python</span>=<span style="color: #ff0000;color: #666666;">&quot;python<span style="color: #007800;">${PV}</span>&quot;</span>
    <span style="color: #666666; font-style: italic;"># m and runserver a kick alias for Django common actions</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">alias</span> <span style="color: #007800;">m</span>=<span style="color: #ff0000;color: #666666;">&quot;python<span style="color: #007800;">${PV}</span> manage.py&quot;</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">alias</span> <span style="color: #007800;">runserver</span>=<span style="color: #ff0000;color: #666666;">&quot;python<span style="color: #007800;">${PV}</span> manage.py runserver :8000&quot;</span>
    <span style="color: #666666; font-style: italic;"># easy and fast install of python packages, in right path with localpyinstall</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">alias</span> <span style="color: #007800;">localpyinstall</span>=<span style="color: #ff0000;color: #666666;">&quot;python<span style="color: #007800;">${PV}</span> setup.py install --prefix=~/.py/<span style="color: #007800;">${PV}</span>/&quot;</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>:: New aliases&quot;</span>
    <span style="color: #666666; font-style: italic;"># print aliases :)</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">alias</span> python m runserver localpyinstall
&nbsp;
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>:: New PATH&quot;</span>
    <span style="color: #666666; font-style: italic;"># setup aplications path, be careful about not use $ORIGINALPATH.</span>
    <span style="color: #666666; font-style: italic;">#</span>
    <span style="color: #666666; font-style: italic;"># I use a path structure like that:</span>
    <span style="color: #666666; font-style: italic;"># ~/.py/</span>
    <span style="color: #666666; font-style: italic;"># |-- 2.4</span>
    <span style="color: #666666; font-style: italic;"># |-- 2.5</span>
    <span style="color: #666666; font-style: italic;"># `-- 2.6</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">${HOME}</span>/.py/<span style="color: #007800;">${PV}</span>/bin/:<span style="color: #007800;">${ORIGINALPATH}</span>&quot;</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #007800;color: blue;">$PATH</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>:: New PYTHON PATH&quot;</span>
    <span style="color: #666666; font-style: italic;"># setup new python path, don't need to add system wide path, just our custom paths</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">export</span> <span style="color: #007800;">PYTHONPATH</span>=<span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">${HOME}</span>/.py/<span style="color: #007800;">${PV}</span>/lib/python<span style="color: #007800;">${PV}</span>/site-packages/&quot;</span>
    <span style="color: #666666; font-style: italic;"># print more some info</span>
    python<span style="color: #007800;color: blue;">$PV</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;color: #666666;">&quot;import sys;print sys.path&quot;</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>:: Django version &amp;amp; file&quot;</span>
    python<span style="color: #007800;color: blue;">$PV</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;color: #666666;">&quot;import django;print 'version %s ... file %s' % (django.get_version(),django.__file__);&quot;</span>
<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#125;</span></pre></div></div>

<p>Agora crie uma estrutura de diretórios com o comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">$ <span style="color: #c20cb9; font-weight: bold;color: #577A61;">mkdir</span> <span style="color: #660033;">-pv</span> ~<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>.py<span style="color: #000000; font-weight: bold;color: #CCC;">/</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#123;</span><span style="color: #000000;color: #DDD;">2.4</span>,<span style="color: #000000;color: #DDD;">2.5</span>,<span style="color: #000000;color: #DDD;">2.6</span><span style="color: #7a0874; font-weight: bold;color: #CCC;">&#125;</span></pre></div></div>

<p>E cada vez que for usar uma versão diferente do python, carregue com:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">$ loadpyenv VERSÃO</pre></div></div>

<p>Onde VERSÃO é a versão escolhida do python.</p>
<h3>Várias versões do Python no <a href="http://www.gentoo.org">Gentoo</a></h3>
<p>O <a href="http://www.gentoo.org">Gentoo Linux</a>, minha distro do dia a dia, me dá um bom bonus quanto a múltiplas versões do python, configure no /etc/make.conf a seguinte linha:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #007800;">USE_PYTHON</span>=<span style="color: #ff0000;color: #666666;">&quot;2.4 2.5 2.6&quot;</span></pre></div></div>

<p>Instale os pythons nas versões escolhidas e execute o seguinte comando para re-compilar seus pacotes:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;">emerge $<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span>eix <span style="color: #660033;">-I</span> dev-python<span style="color: #000000; font-weight: bold;color: #CCC;">/*</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">grep</span> <span style="color: #ff0000;color: #666666;">&quot;\[I\]&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">cut</span> <span style="color: #660033;">-d</span><span style="color: #ff0000;">' '</span> -f2<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span></pre></div></div>

<p><em>O <strong>eix</strong> é uma aplicação de indexação do portage, muito comum nas máquinas Gentoo.</em></p>
<p>Cada pacote python é recompilado para as 3 versões (no caso), mas tive problemas em compilar alguns pacotes para a 2.4, fiquem avisados <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bom, é isso, até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/setting-up-multiple-python-envrionments/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pensamento rápido &#8211; &#8220;ilike&#8221; SQL</title>
		<link>http://chronosbox.org/blog/pensamento-rapido-ilike-sql</link>
		<comments>http://chronosbox.org/blog/pensamento-rapido-ilike-sql#comments</comments>
		<pubDate>Fri, 04 Sep 2009 15:18:31 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Multi Database]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=237</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Hoje vi um post [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Hoje vi um post num dos blogs que acompanho, onde um camarada disse ter conseguido 1000% de melhora na performance de uma aplicação trocando um:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;color: #FCFFBA;"><span style="color: #993333; font-weight: bold;color: #B83A24;">SELECT</span> <span style="color: #66cc66;color: #CCC;">*</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">FROM</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">TABLE</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">WHERE</span> fieldname ILIKE <span style="color: #ff0000;color: #666666;">'abc%'</span>;</pre></div></div>

<p>Para</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;color: #FCFFBA;"><span style="color: #993333; font-weight: bold;color: #B83A24;">SELECT</span> <span style="color: #66cc66;color: #CCC;">*</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">FROM</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">TABLE</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">WHERE</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">LOWER</span><span style="color: #66cc66;color: #CCC;">&#40;</span>fieldname<span style="color: #66cc66;color: #CCC;">&#41;</span> <span style="color: #993333; font-weight: bold;color: #B83A24;">LIKE</span> <span style="color: #ff0000;color: #666666;">'abc%'</span>;</pre></div></div>

<p>(diferença de ilike para lower&#8230; like)<br />
Eu achei tosco (hehehe), óbviamente que esse ganho absurdo só pode ter ocorrido numa massa gigantesca de dados e provavelmente num campo sem índice.<br />
Mas a minha dica é outra:<br />
Além do ganho em performance o &#8220;ilike&#8221; não é suportado no mysql e sqlite.Portanto seu uso é extremamente desaconselhável, principalmente se você estiver trabalhando com Django, Rails ou qualquer aplicação que forneça um layer multi-db.<br />
Claro que nos frameworks citados acima o único jeito de fazer isso é forçar o uso de &#8220;ilike&#8221;, suas ORMs conseguem lidar com situações assim muito bem.</p>
<p><strong>Conclusão</strong><br />
Evite  &#8220;ilike&#8221; em queries de sql, use o  &#8220;lower()&#8230; like&#8221; ou &#8220;upper&#8230; like&#8221;; E se lembre de mudar sua variável para upper/lower!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/pensamento-rapido-ilike-sql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Escritório Portátil do Desenvolvedor Web</title>
		<link>http://chronosbox.org/blog/escritorio-portatil-do-desenvolvedor-web</link>
		<comments>http://chronosbox.org/blog/escritorio-portatil-do-desenvolvedor-web#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:26:27 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Editores]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=217</guid>
		<description><![CDATA[Seguindo as "febres" de artigos que só listam coisas úteis aqui vai minha lista de softwares portables e com licença free (alguns freeware, outros open-source) para você levar na pen-drive ou disco externo e ser capaz de lidar com qualquer situação desde que tenha um windows à mão. O foco são desenvolvedores PHP e PyWeb.]]></description>
			<content:encoded><![CDATA[<p>Seguindo as &#8220;febres&#8221; de artigos que só listam coisas úteis aqui vai minha lista de softwares portables e com licença free (alguns freeware, outros open-source) para você levar na pen-drive ou disco externo e ser capaz de lidar com qualquer situação desde que tenha um windows à mão. O foco são desenvolvedores PHP e PyWeb.</p>
<p>1 &#8211; Browsers</p>
<p><a href="http://portableapps.com/apps/internet/firefox_portable" target="_blank">Firefox 3.5,</a> <a href="http://google-chrome-portable.softonic.com.br/download" target="_blank">chrome</a>, <a href="http://www.opera-usb.com/operausben.htm" target="_blank">opera</a>, <a href="http://dl.filekicker.com/send/file/184227-Z37W/avant.exe" target="_blank">avant</a> browser.  &#8211; Não faz sentido IE se você já está num windows certo? E ainda que você precise de outras versões lembre-se que estou falando de licenças free. A microsoft ainda não liberou nenhuma versão portable.</p>
<p>2 &#8211; Editores/IDEs</p>
<p><a href="http://aptana.com/studio/download" target="_blank">Aptana</a> &#8211; apenas escolha zip file na opção &#8221; download type&#8221;, <a href="http://downloads.zend.com/pdt/eclipse/eclipse-php-galileo-win32.zip" target="_blank">Zend</a>, <a href="http://portableapps.com/apps/development/notepadpp_portable" target="_blank">Notepad++</a>,</p>
<p><a href="http://prdownloads.sourceforge.net/portablegvim/GVim_Portable_7.1.0.zip?download" target="_blank">Gvim</a><br />
Separei o Gvim por causa de alguns plugins.<br />
<a href="http://www.vim.org/scripts/script.php?script_id=1567">Rails</a>, <a href="http://www.vim.org/scripts/script.php?script_id=604" target="_blank">PHP</a>, <a href="http://www.vim.org/scripts/script.php?script_id=1577" target="_blank">CSS</a>, <a href="http://www.vim.org/scripts/script.php?script_id=2150" target="_blank">CSS Color Preview</a>, <a href="http://www.vim.org/scripts/script.php?script_id=2083" target="_blank">javascript</a>, <a href="http://www.vim.org/scripts/script.php?script_id=1572" target="_blank">SQL</a>, <a href="http://www.vim.org/scripts/script.php?script_id=420" target="_blank">MySQL Runner </a> e para os que gostam do estilo IDE, tentem o <a href="http://www.vim.org/scripts/script.php?script_id=2719" target="_blank">Proj</a><br />
No caso do Gvim, considere ver o post do <a href="http://chronosbox.org/blog/wombat-vim-colorscheme-customized" target="_blank">wombat modificado</a>.<br />
Também vem vindo aí um post meu sobre vim/gvim&#8230; fiquem de olho!</p>
<p>3 &#8211; Editores de Imagem</p>
<p><a href="http://portableapps.com/apps/graphics_pictures/gimp_portable" target="_blank">Gimp</a>, <a href="http://sourceforge.net/projects/inkscape-usb/">Incscape</a>, <a href="http://picpick.wiziple.net/" target="_blank">PickPick</a> (screenshot e color picker).</p>
<p>4 &#8211; Escritório / Comunicação</p>
<p><a href="http://portableapps.com/apps/office/openoffice_portable" target="_blank">Open-Office</a>, <a href="http://portableapps.com/apps/internet/pidgin_portable" target="_blank">Pidgin</a>, <a href="http://portableapps.com/apps/internet/amsn_portable" target="_blank">aMsn</a>, <a href="http://portableapps.com/apps/internet/thunderbird_portable" target="_blank">Thunderbird</a> e <a href="http://portableapps.com/apps/office/lightning_extension" target="_blank">lightning</a> para thunderbird para os calendários e to-do.<a href="http://www.foxitsoftware.com/pdf/reader/" target="_blank">FoxitReader </a>para abrir pdfs</p>
<p>5 &#8211; FTP / SSH</p>
<p><a href="http://portableapps.com/apps/internet/winscp_portable" target="_blank">WinScp</a>, <a href="http://portableapps.com/apps/internet/filezilla_portable" target="_blank">FileZilla</a>, <a href="http://portableapps.com/apps/internet/putty_portable" target="_blank">Putty</a></p>
<p>6 &#8211; Utilitários</p>
<p><a href="http://portableapps.com/apps/utilities/7-zip_portable" target="_blank">7-zip</a>, <a href="http://sourceforge.net/projects/freefilesync/" target="_blank">FreeFileSync</a>,<a href="http://terra.es/personal/infern0/" target="_blank">Font Matcher</a>, <a href="http://portableapps.com/apps/utilities/winmerge_portable" target="_blank">WinMerge</a>, <a href="http://portableapps.com/apps/utilities/infrarecorder_portable">InfraRecorder</a>, <a href="http://www.softpedia.com/get/PORTABLE-SOFTWARE/Office/Suites-editors/Windows-Portable-Applications-Wink-Portable.shtml" target="_blank">Wink</a></p>
<p>7 &#8211; Servidores Web</p>
<p>PHP: <a href="http://www.apachefriends.org/download.php?xampp-win32-1.7.1.zip" target="_blank">Xampp</a>,<a href="http://www.usbwebserver.com/UsbWebserver.zip" target="_blank">USB Web Server</a></p>
<p>&#8211; UPDATE: pra mim nenhum dos dois servidores para Django funcionaram, se você teve sucesso, poste uma mensagem contando como <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Django: <a href="http://www.instantdjango.com/" target="_blank">IntantDjango</a>, <a href="http://bitnami.org/stack/djangostack" target="_blank">DjangoStack</a></p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/escritorio-portatil-do-desenvolvedor-web/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparação de Frameworks Javascript</title>
		<link>http://chronosbox.org/blog/comparacao-de-frameworks-javascript</link>
		<comments>http://chronosbox.org/blog/comparacao-de-frameworks-javascript#comments</comments>
		<pubDate>Mon, 20 Jul 2009 06:20:47 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Rich Internet Application]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=212</guid>
		<description><![CDATA[Eu particularmente uso JQuery e muita gente sempre me procura para compara-la à ExtJS, MooTools, Prototype, YUI e Dojo. Como também faz tempo que estou devendo um post pro Chronosbox... aqui está!]]></description>
			<content:encoded><![CDATA[<p>Eu particularmente uso JQuery e muita gente sempre me procura para compara-la à ExtJS, MooTools, Prototype, YUI e Dojo. Como também faz tempo que estou devendo um post pro Chronosbox&#8230; aqui está!</p>
<ol>
<li>Velocidade<br />
Vale lembrar que os resultados mudam de navegador para navegador,  meu testes:</p>
<table border="0">
<tbody>
<tr>
<td>Browser</td>
<td>Dojo</td>
<td>ExtJS</td>
<td>JQuery</td>
<td>Mootools</td>
<td>MochiKit</td>
<td>Prototype</td>
<td>YUI</td>
</tr>
<tr>
<td>Chrome 2.0</td>
<td>22</td>
<td>66</td>
<td>24</td>
<td>90</td>
<td>838</td>
<td>409</td>
<td>308</td>
</tr>
<tr>
<td>Firefox 3.0</td>
<td>190</td>
<td>306</td>
<td>209</td>
<td>231</td>
<td>5013</td>
<td>298</td>
<td>547</td>
</tr>
<tr>
<td>IE7</td>
<td>647</td>
<td>538</td>
<td>800</td>
<td>1099</td>
<td>120388.16666666665</td>
<td>2696</td>
<td>2102</td>
</tr>
<tr>
<td>Safari 4.0</td>
<td>9</td>
<td>85</td>
<td>14</td>
<td>65</td>
<td>1005</td>
<td>220</td>
<td>238</td>
</tr>
<tr>
<td>Opera 9.64</td>
<td>92</td>
<td>135</td>
<td>306</td>
<td>212</td>
<td>4092</td>
<td>200</td>
<td>441</td>
</tr>
</tbody>
</table>
<p>Fonte: <a href="http://handrus.chronosbox.org/slickspeed/">http://handrus.chronosbox.org/slickspeed/</a></li>
<li>Compatibilidade<br />
ExtJS é o único dos frameworks acima que não aparece aqui, no entanto ele foi feito para ser compatível com JQuery e YUI, ambos com nota A.No teste de seletores somente o MochiKit apresentou problemas com os seletores, ainda assim ele aparece com nota A.</p>
<table border="0">
<tbody>
<tr>
<th>Ajax/DHTML Libraries</th>
<th>DHTML-only Libraries</th>
</tr>
<tr>
<th colspan="2">THE GOOD GUYS (Grade A Toolkits)</th>
</tr>
<tr>
<td>Dojo Toolkit</td>
<td>DHTML Kitchen</td>
</tr>
<tr>
<td>Echo 2</td>
<td>DynAPI 3.0</td>
</tr>
<tr>
<td>Javascript/Ajax Toolbox</td>
<td>How To Create</td>
</tr>
<tr>
<td>Jitsu</td>
<td>Open Cube</td>
</tr>
<tr>
<td>jQuery</td>
<td>Todd Ditchendorf’s DHTML Gallery</td>
</tr>
<tr>
<td>jsLINB</td>
<td>UIZE JavaScript API</td>
</tr>
<tr>
<td>MochiKit</td>
<td>Walter Zorn</td>
</tr>
<tr>
<td>Moo.fx</td>
<td>X Library</td>
</tr>
<tr>
<td>Prototype</td>
<td> </td>
</tr>
<tr>
<td>Sardalya</td>
<td> </td>
</tr>
<tr>
<td>Script.aculo.us</td>
<td> </td>
</tr>
<tr>
<td>Spry</td>
<td> </td>
</tr>
<tr>
<td>Tacos</td>
<td> </td>
</tr>
<tr>
<td>TurboWidgets</td>
<td> </td>
</tr>
<tr>
<td>TwinHelix</td>
<td> </td>
</tr>
<tr>
<td>Wicket</td>
<td> </td>
</tr>
<tr>
<td>Yahoo! User Interface Library</td>
<td> </td>
</tr>
<tr>
<td>Zapatec Ajax Suite</td>
<td> </td>
</tr>
<tr>
<th colspan="2">THE BAD GUYS (Grade D or E Toolkits)</th>
</tr>
<tr>
<td>AjaxFace</td>
<td>Bindows</td>
</tr>
<tr>
<td>EBA Ajax</td>
<td>Plex Toolkit</td>
</tr>
<tr>
<td>Microsoft Atlas</td>
<td>ThyApi</td>
</tr>
<tr>
<td>Rialto</td>
<td> </td>
</tr>
<tr>
<td>TIBCO General Interface</td>
<td> </td>
</tr>
<tr>
<td>ZK</td>
</tr>
</tbody>
</table>
<p>Fonte: <a href="http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html">http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html<br />
A &#8211; IE6+, FF1+,Safari 1.2+,Other DOM | B &#8211; IE6+</a>, FF2+,Safari + | C &#8211; IE6, FF1+ | D &#8211; IE6.</li>
<li>Tamanho<br />
YUI &#8211; 43Kb (Core + Selector)<br />
Moochikit &#8211; 51Kb<br />
Jquery &#8211; 56Kb<br />
Mootools &#8211; 65Kb<br />
Dojo -  79Kb<br />
Prototype &#8211; 126Kb<br />
Extjs &#8211; 131Kb</li>
<li>Rich Internet Application<br />
Este item eu considero um empate técnico já que todas apresentam os componentes básicos para contruir ambientes Ricos, embora o ExtJS deixe isso claro mais facilmente e o Jquery tenha muito mais opções que os concorrentes é uma questão de saber procurar. Para facilitar um pouco a busca aqui ficam 2 links:<br />
<a href="http://theresaneil.wordpress.com/2009/02/04/30-essential-controls/">http://theresaneil.wordpress.com/2009/02/04/30-essential-controls/</a><br />
<a href="http://wiki.jqueryui.com/Essential-Controls-List">http://wiki.jqueryui.com/Essential-Controls-List</a></li>
<li>Documentação<br />
Em termos de documentação o ExtJs dá um show de organização e visual, mas a falta de exemplos de código torna sua aprendizagem um tanto quanto lenta e difícil. A documentação do Dojo é uma lista de funções amontoadas, o Yahoo UI&#8230; alguém acredita que existe um arquiteto de usabilidade na yahoo quando vê aquele site??A mootools está indo pro caminho certo, se incluir alguns demos talvez fique uma documentação boa, já a mochikit é outra documentação básica&#8230; O Jquery pelo numero de exemplos e pela iniciativa do Visual Jquery fica com o prêmio nesse tópico.</li>
</ol>
<p>Conclusão:</p>
<p>Em termos de velocidade e compatibilidade podemos considerar um empate enter Jquery, MooTools, ExtJS, Prototype e Dojo. Mas em tamanho ExtJS e Dojo são mais de  20Kb maiores, o que é considerável nuam conexão lenta.<br />
No geral Jquery e Mootools são as vencedoras, e por detalhes minimos como tamanho e atividade da comunidade vou considerar o hanking dessa forma:</p>
<ol>
<li>Jquery</li>
<li>Mootols</li>
<li>Prototype/ YUI</li>
<li>ExtJS/Dojo</li>
<li>MochiKit</li>
</ol>
<p>Um aviso especial para o ExtJS sua liçensa é dual: Comercial e GNU portanto você deve pagar para usa-la em projetos comercias!!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/comparacao-de-frameworks-javascript/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jogue seus games de playstation no seu Linux</title>
		<link>http://chronosbox.org/blog/play-your-playstation-games-in-your-linux</link>
		<comments>http://chronosbox.org/blog/play-your-playstation-games-in-your-linux#comments</comments>
		<pubDate>Tue, 05 May 2009 01:09:30 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[playstation]]></category>
		<category><![CDATA[psx]]></category>
		<category><![CDATA[video game]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=161</guid>
		<description><![CDATA[É comum termos emuladores de vários videogames para Windows, o que eu já acho um trabalho de desenvolvimento notável. Alguns destes notáveis desenvolvedores resolveram portar emuladores do Windows para o Linux e outros sistemas operacionais, podemos citar o ZSnes (Snes), Yabause (Sega Saturn) e o nome do nosso post de hoje, pSX emulator (Playstation). O [...]]]></description>
			<content:encoded><![CDATA[<p>É comum termos emuladores de vários videogames para Windows, o que eu já acho um trabalho de desenvolvimento notável. Alguns destes notáveis desenvolvedores resolveram portar emuladores do Windows para o Linux e outros sistemas operacionais, podemos citar o <a href="http://www.zsnes.com/index.php?page=files">ZSnes (Snes)</a>, <a href="http://yabause.org/">Yabause (Sega Saturn)</a> e o nome do nosso post de hoje, <a href="http://psxemulator.gazaxian.com/">pSX emulator (Playstation)</a>.</p>
<p>O <a href="http://psxemulator.gazaxian.com/">pSX emulator (Playstation)</a> emula com sucesso através do uso de uma bios o playstation, acredito que completo, pois jamais tive problemas com algum jogo. Vamos ao passo a passo para a instalação do <a href="http://psxemulator.gazaxian.com/">pSX emulator (Playstation)</a>:</p>
<ol>
<li><strong>Depêndencias</strong>: tenha certeza que tens instalado em teu sistema OpenGL, ALSA, GTK, GTKGLEXT e libxml2. Não me lembro de outra dependencia faltando em meu Gentoo.</li>
<li>Baixe o arquivo <a href="http://psxemulator.gazaxian.com/pSX_linux_1_13.tar.bz2">pSX_linux_1_13.tar.bz2</a> para sua máquina.</li>
<li>Descompacte o arquivo, eu recomendo fazê-lo na sua home: <em>tar jxvf pSX_linux_1_13.tar.bz2 -C ~/</em></li>
<li>Você precisa baixar a bios do playstation, este não é um procedimento legal, logo fica por sua conta e risco. O nome do arquivo é: <a href="http://www.google.com.br/search?q=SCPH1001.bin&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.gentoo:en-US:official&amp;client=firefox-a">SCPH1001.bin</a>.</li>
<li>Feito o Download da bios, coloque-a no diretório bios (se você seguiu o tutorial, ~/pSX/bios). Em seguida inicie o emulador, execute no terminal: <strong>cd ~/pSX;./pSX</strong></li>
</ol>
<div id="attachment_163" class="wp-caption alignleft" style="width: 360px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/05/gt2_psx.png" target="_blank"><img class="size-full wp-image-163" title="gt2_psx" src="http://chronosbox.org/blog/wp-content/uploads/2009/05/gt2_psx.png" alt="Gran Turismo 2" width="350" height="219" /></a><p class="wp-caption-text">Gran Turismo 2</p></div>
<p>Pronto, você está rodando o pSX <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . A questão que sempre vem é, rodar não é o difícil, coisas como a configuração dos memory cards sempre pegam o pessoal, então vamos lá (estes passos são baseados no readme que vem com o tar.bz2:</p>
<p><strong>Configurando os memory cards</strong>: a configuração é bastante simples, vá em Files-&gt;Configuration, aba Memory Cards. Clique nos <strong>&#8230;</strong> e escolha um nome de arquivo, clique em OK e pronto. Repita o passo para o segundo Memory Card. Você pode trocar os Memory Cards a vontade com o do seus amigos, etc <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><strong>Configurando os paths</strong>: configurar os paths pode inicialmente parecer uma coisa boba a se fazer, mas irá te poupar tempo de fica procurando por coisas bobas. De atenção especial a pasta default de memory cards e cd images. Na pasta de <strong>cd images</strong> você pode linkar os diretórios com as imagens dos CDs de jogos.</p>
<p><strong>Configurando Joystick</strong>: qual a graça de se jogar em um emulador sem um controle adequado <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ? Basta plugar um joystick em qualquer porta USB sua, e caso este for reconhecido pelo Linux, iniciar o pSX. O Joystick será listado na aba Controllers da configuração e você deverá selecionar ele no select Device, em seguida basta ir pressionando as teclas (você precisa clicar na primeira) e configurar o joystick.</p>
<p><div id="attachment_164" class="wp-caption alignright" style="width: 360px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/05/br2_psx.png" target="_blank"><img class="size-full wp-image-164" title="br2_psx" src="http://chronosbox.org/blog/wp-content/uploads/2009/05/br2_psx.png" alt="Blood Roar 2" width="350" height="219" /></a><p class="wp-caption-text">Blood Roar 2</p></div><strong>Carregando um jogo</strong>: O pSX suporta os arquivos de imagem no formato .cue/.bin, .ccd/.img/.sub, .iso, e .mdf/.mds e o próprio CD-ROM do jogo. A maneira mais fácil para mim, é manter os links ou os CDs na pasta cdimages e rodar rapidinho dali. O pSX suporta carregar um jogo pela linha de comando (pSX iso_do_jogo.bin), mas nunca obtive sucesso dessa maneira. Acredito que manter a ISO além de servir como backup do seu jogo é mais rápido que achar o CD original.</p>
<p>Bem, após ter feito tudo isso, você já deve estar jogando seu jogo predileto. Faça bom proveito e, caso você seja um amante de Gran Turismo 2 ou Blood Roar, como eu, vamos trocar figurinhas :].</p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/play-your-playstation-games-in-your-linux/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VIM colorscheme Wombat &#8211; customizado</title>
		<link>http://chronosbox.org/blog/wombat-vim-colorscheme-customized</link>
		<comments>http://chronosbox.org/blog/wombat-vim-colorscheme-customized#comments</comments>
		<pubDate>Mon, 13 Apr 2009 03:59:43 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Colorscheme]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[VIM - Vi IMproveded]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[vim/gvim]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=116</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Procurando por uns plugins [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Procurando por uns plugins legais para o VIM relacionados a python eu achei (tropeçei) em um tema chamado <a href="http://dengmao.wordpress.com/2007/01/22/vim-color-scheme-wombat/">Wombat</a>, uma variação do Desert criada por <a href="http://dengmao.wordpress.com/">Lars H. Nielsen</a>. Como achei ele interessante eu peguei e comecei a mecher nele, deixando mais próximo do <a href="http://chronosbox.org/blog/vim-desert-theme-customizedtema-desert-para-o-vim-customizado">desert customizado</a>.</p>
<p>Aqui temos uma screenshot em 1440&#215;900 com os dois temas abertos, Wombat original e meu tema Wombat modificado:</p>
<div id="attachment_119" class="wp-caption aligncenter" style="width: 510px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/04/wombat-comparison.png"><img class="size-full wp-image-119 " title="wombat comparison" src="http://chronosbox.org/blog/wp-content/uploads/2009/04/wombat-comparison.png" alt="" width="500" /></a><p class="wp-caption-text">original wombat theme with my custom wombat theme</p></div>
<p>Com cores mais vivas (fortes?) eu achei melhor para ler a noite, sem luz (como eu normalmente fico quando meu colega de quarto dorme). Esta semana eu trabalherei bastante no timetracker (em breve eu falo sobre ele aqui) e no blog de minha namorada, e ai falo como o tema fica enquanto trabalhamos com ele.</p>
<p><strong>Download</strong>: <a href="http://chronosbox.org/blog/wp-content/uploads/2009/06/wombat.vim">wombat modified colorscheme</a></p>
<p>Divirtam-se!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/wombat-vim-colorscheme-customized/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Indentando seus arquivos automaticamente e em massa com o VIM.</title>
		<link>http://chronosbox.org/blog/indentando-seus-arquivos-automaticamente-e-em-massa-com-o-vim</link>
		<comments>http://chronosbox.org/blog/indentando-seus-arquivos-automaticamente-e-em-massa-com-o-vim#comments</comments>
		<pubDate>Sat, 08 Sep 2007 15:54:27 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Planet GentooBR]]></category>
		<category><![CDATA[VIM - Vi IMproveded]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[util]]></category>
		<category><![CDATA[vim/gvim]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/2007/09/08/indentando-seus-arquivos-automaticamente-e-em-massa-com-o-vim/</guid>
		<description><![CDATA[Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços! Heya pessoal. Depois de [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Nota</strong>: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo <a href="http://twitter.com/handrus">Handrus Nogueira</a>, portanto não deixem de visitar o <a href="http://devwithpassion.com">Dev With Passion</a>! Todos os posts do ChronosBox estarão no <a href="http://devwithpassion.com">Dev With Passion</a>, exceto por alguns comentários novos. Abraços!</em></p>
<p>Heya pessoal.</p>
<p>Depois de longo tempo sem postar, mas sempre coletando idéias, a dica de hoje abrange uma área delicada, <strong>indentação de código</strong>. Por todo o mundo existem códigos mal indentados (exceto em python :]), e no meu trabalho, este é um caso extremamente comum com as ferramentas que dou manutenção, e literalmente é um pé no saco. No dia 06 de Setembro deste mês, de tão saco cheio que estava dos códigos mal indentados e sempre usando uma <em lang="en-us">mapping (1)</em> do VIM para indentar uma página, com o problema sério que quando ia dar um <em>svn diff</em> ou coisa do genêro quase toda a página vinha no diff, senão toda ela, resolvi verificar se o VIM não tinha um &#8220;BATCH mode&#8221;, assim com o <em>top</em>, para usar em um loop para passar nos arquivos.</p>
<p>Pois bem, depois de uma meia hora batendo papo no <strong>#vim</strong> da <strong>irc.freenode.net</strong>, o pessoal me fala de uma opção <strong>&#8216;-c&#8217;</strong> do VIM, que eu jurava não ter visto no manual do VIM. É dai que surge a dica de hoje <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Para indentar os arquivos, podes usar os seguintes comandos (segue abaixo a explicação dos comandos para ninguém ficar boiando):</p>
<p><span id="more-6"></span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #7a0874; font-weight: bold;color: #8FB394;">cd</span> diretorio<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>com<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>arquivos<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>a<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>serem<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>indentados
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">find</span> <span style="color: #660033;">-type</span> f <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;.html$|.php$|.inc$|.tpl$&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; lista_arquivos
<span style="color: #000000; font-weight: bold;color: #B83A24;">for</span> arquivo <span style="color: #000000; font-weight: bold;color: #B83A24;">in</span> $<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>lt; lista_arquivos <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span>;
<span style="color: #000000; font-weight: bold;color: #B83A24;">do</span>
    <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +'%d/%m/%Y %H:%M:%S')</span> - iniciando indentação  de '<span style="color: #007800;">$arquivo</span>'&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; log_indentacao
    <span style="color: #c20cb9; font-weight: bold;color: #577A61;">vim</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;color: #666666;">&quot;:normal gg=G&quot;</span> <span style="color: #660033;">-c</span> :<span style="color: #c20cb9; font-weight: bold;color: #577A61;">w</span><span style="color: #000000; font-weight: bold;color: #CCC;">!</span> <span style="color: #660033;">-c</span> :q<span style="color: #000000; font-weight: bold;color: #CCC;">!</span> <span style="color: #660033;">----</span> <span style="color: #007800;color: blue;">$arquivo</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;
        <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +'%d/%m/%Y %H:%M:%S')</span> - finalizando indentação  de '<span style="color: #007800;">$arquivo</span>'&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; log_indentacao <span style="color: #000000; font-weight: bold;color: #CCC;">||</span>
        <span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +'%d/%m/%Y %H:%M:%S')</span> - falhou indentação  de '<span style="color: #007800;">$arquivo</span>'&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; log_indentacao
<span style="color: #000000; font-weight: bold;color: #B83A24;">done</span></pre></div></div>

<p>Explicando as linhas:</p>
<ul>
<li>Linha 2: Procurando por arquivos a serem indentados, este comando<br />
pega todos os arquivos .html, .php, .inc e .tpl do diretório e<br />
subdiretórios. Se houver problemas com espaços, você pode usar da<br />
seguinte forma:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #c20cb9; font-weight: bold;color: #577A61;">find</span> <span style="color: #660033;">-type</span> f <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'*.php'</span> <span style="color: #660033;">-or</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'*.html'</span> <span style="color: #660033;">-or</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'*.inc'</span> <span style="color: #660033;">-or</span> <span style="color: #660033;">-name</span> <span style="color: #ff0000;">'*.tpl'</span> <span style="color: #660033;">-exec</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">vim</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">':normal gg=G'</span> <span style="color: #660033;">-c</span> :<span style="color: #c20cb9; font-weight: bold;color: #577A61;">w</span><span style="color: #000000; font-weight: bold;color: #CCC;">!</span> <span style="color: #660033;">-c</span> :q<span style="color: #000000; font-weight: bold;color: #CCC;">!</span> <span style="color: #660033;">--</span> <span style="color: #ff0000;color: #666666;">&quot;{}&quot;</span> ;</pre></div></div>

<p>Com isto, ele irá fazer a mesma coisa que o for faz.</li>
<li>Linhas 3 e 4: Inicia o for. <strong>$(&lt;lista_arquivos)</strong> faz o bash fazer um &#8216;eval&#8217; do arquivo lista_arquivos, mandando seu conteúdo como paramêtros para o for.</li>
<li>Linhas 5, 7 e 8: Logando para melhor acompanhamento.</li>
<li>Linha 6: O  comando propriamente dito, a opção -c envia comandos ao VIM. Uma explicação melhor sobre o comando de indentação pode ser achada digitando <strong>&#8216;:help =&#8217;</strong> no próprio VIM, existem dezenas de configurações que podem ser setadas e existem também dezenas de arquivos de identação prontos, da uma olhadinha em <em>/usr/share/vim/vim71/indent</em> :].</li>
<li>Linha 9: Finaliza o for.</li>
</ul>
<p>Com esta dica, se salve dos arquivos não indentados! Os comandos passados ao vim também pode ser para tirar quebras de linha DOS, outra dor de cabeça absurda que costumo ter, e qualquer outra coisa do VIM.</p>
<p>(1) Sobre o mapping do vim, para indentar seus arquivos abertos, podes usar os seguintes comandos no seu .vimrc:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;color: #FCFFBA;"><span style="color: #adadad; font-style: italic;color: #CDC;">&quot; map  to reindent file</span>
<span style="color: #668080;color: #577A61;">noremap</span>  mzgg=G`z
inoremap  mzgg=G`z</pre></div></div>

<p>Apertar a tecla <strong>=</strong> com um bloco de texto selecionado também faz o mesmo trabalho <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Realmente espero que aproveitem!</p>
<p>Abraços!</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/indentando-seus-arquivos-automaticamente-e-em-massa-com-o-vim/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

