<?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; Linux</title>
	<atom:link href="http://chronosbox.org/blog/categories/linux/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.2.1</generator>
		<item>
		<title>Erro do django-reversion 1.5 com django </title>
		<link>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django</link>
		<comments>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:06:47 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[apache wsgi django reversion]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=397</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! Isso me aconteceu a [...]]]></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>Isso me aconteceu a pouco e eu não vi resultados no google para o erro em específico, então estou eu aqui fazendo minha parte <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Caso você ver o erro abaixo e tiver rodando reversion 1.5 + django 1.2.x, você precisa instalar alguma versão menor que a 1.5 do reversion, pois a 1.5 só suporta django 1.3 (<a href="https://github.com/etianen/django-reversion/wiki/Compatible-Django-Versions">veja tabela de versões aqui</a>).</p>
<p>Segue a exception:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="log" style="font-family:monospace;color: #FCFFBA;">[Tue Sep 27 10:19:17 2011] [error] MyLDAPUser-&gt;AUTHENTICATE: felipe.rafael@pdg.com.br authenticated :D
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] mod_wsgi (pid=14847): Exception occurred processing WSGI script '/var/www/qas3/portal/apache/virtualenv-qas3.wsgi'.
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Traceback (most recent call last):
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/core/handlers/wsgi.py&quot;, line 252, in __call__
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     response = middleware_method(request, response)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/reversion/middleware.py&quot;, line 20, in process_response
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     reversion.revision.end()
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/reversion/revisions.py&quot;, line 301, in end
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     comment = self._state.comment,
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py&quot;, line 138, in create
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.get_query_set().create(**kwargs)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py&quot;, line 358, in create
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     obj.save(force_insert=True, using=self.db)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py&quot;, line 458, in save
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     self.save_base(using=using, force_insert=force_insert, force_update=force_update)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py&quot;, line 551, in save_base
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     result = manager._insert(values, return_id=update_pk, using=using)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py&quot;, line 195, in _insert
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return insert_query(self.model, values, **kwargs)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py&quot;, line 1524, in insert_query
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return query.get_compiler(using=using).execute_sql(return_id)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py&quot;, line 788, in execute_sql
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     cursor = super(SQLInsertCompiler, self).execute_sql(None)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py&quot;, line 732, in execute_sql
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     cursor.execute(sql, params)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/backends/util.py&quot;, line 15, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.cursor.execute(sql, params)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/src/django/django/db/backends/mysql/base.py&quot;, line 86, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     return self.cursor.execute(query, args)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py&quot;, line 176, in execute
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     if not self._defer_warnings: self._warning_check()
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]   File &quot;/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py&quot;, line 92, in _warning_check
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79]     warn(w[-1], self.Warning, 3)
[Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Warning: Field 'manager_slug' doesn't have a default value</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/erro-do-django-reversion-1-5-com-django/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Compilando fácil com Debian/Ubuntu</title>
		<link>http://chronosbox.org/blog/compilando-facil-com-debianubuntu</link>
		<comments>http://chronosbox.org/blog/compilando-facil-com-debianubuntu#comments</comments>
		<pubDate>Sun, 03 Jan 2010 21:28:48 +0000</pubDate>
		<dc:creator>Handrus Nogueira</dc:creator>
				<category><![CDATA[Debian/Ubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=255</guid>
		<description><![CDATA[Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco. No Debian/Ubuntu a descoberta [...]]]></description>
			<content:encoded><![CDATA[<p>Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco.<br />
No Debian/Ubuntu a descoberta do apt-build me ajudou a contornar o problema com a mesma classe e <strong>quase</strong> a mesma eficiência que o portage.</p>
<p>Vamos ao passo-a-passo:</p>
<p>Para instalar o apt-build:<br />
<code>sudo apt-get install apt-build auto-apt</code></p>
<p>Configure para sua máquina:<br />
<code>dpkg-reconfigure apt-build</code><br />
Escolha sua arquitetura de processador e o nível de otimização, o indicado é o médio.<br />
As opções ficam salvas no arquivo <strong>/etc/apt/apt-build.conf</strong> ; Vamos apenas ajustar o número de processadores na ultima linha do arquivo altere-o para<br />
<code>make_options = " -j4"</code><br />
onde o número é igual ao número de &#8220;cores&#8221; + 1. Portanto um quadcore seria &#8220;-j5&#8243;.</p>
<p>Para evitar que os pacotes compilados sejam atualizados pelos pacotes oficiais vamos editar o arquivo <strong>/etc/apt/preferences</strong> adicionando:<br />
<code>Package: *<br />
Pin: release o=apt-build<br />
Pin-Priority: 990</code></p>
<p>Não se esqueça de adicionar os repositórios de código fonte (deb-src) e pronto!<br />
Agora ao invés do tradicional apt-get install
<pacote> utilize <code>apt-build install
<pacote></code></p>
<p>Exemplo: sudo apt-build install xchat emesene</p>
<p>Tutorial rápido sobre apt-build:</p>
<p><strong>apt-build install &#8211;reinstall
<pack></strong> para reinstalar<br />
<strong>apt-build upgrade</strong> Upgrade nos softwares instalados<br />
<strong>apt-build world</strong> Recompila todo o sistema<br />
<strong>apt-build remove programa</strong> Remove o programa<br />
<strong>apt-build clean-build</strong> Remove pacotes compilados<br />
<strong>apt-build clean-sources</strong> Remove os códigos fonte baixados.</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/compilando-facil-com-debianubuntu/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Atualize o hosts.deny para bloquear tentativas de brute force</title>
		<link>http://chronosbox.org/blog/update-hosts-deny-script</link>
		<comments>http://chronosbox.org/blog/update-hosts-deny-script#comments</comments>
		<pubDate>Wed, 02 Sep 2009 17:14:22 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[hosts.deny]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=232</guid>
		<description><![CDATA[Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny Código: #!/bin/bash&#60;/code&#62; &#160; cp /etc/hosts.deny /var/tmp/hosts.deny &#160; # Jun [...]]]></description>
			<content:encoded><![CDATA[<p>Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny</p>
<p>Código:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #FCFFBA;"><span style="color: #666666; font-style: italic;">#!/bin/bash&lt;/code&gt;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">cp</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>tmp<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny
&nbsp;
<span style="color: #666666; font-style: italic;"># Jun  8 00:39:43 mintaka sshd[23332]: User root from 222.77.183.51 not allowed because not listed in AllowUsers</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +%b)</span> (<span style="color: #007800;">$(date +%d)</span>|<span style="color: #007800;">$(date +%e)</span>).*User .* from [a-z0-9\.]* not allowed because not listed in AllowUsers&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>log<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>messages <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.* from \([a-z0-9\.]*\) .*/\1/'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sort</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">uniq</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/^/ALL:/'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny ;
<span style="color: #666666; font-style: italic;">#Jun  8 11:54:33 mintaka sshd[31221]: Invalid user bob from 62.204.145.224</span>
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">egrep</span> <span style="color: #ff0000;color: #666666;">&quot;<span style="color: #007800;">$(date +%b)</span> (<span style="color: #007800;">$(date +%d)</span>|<span style="color: #007800;">$(date +%e)</span>).*Invalid user .* from [a-z0-9\.]*$&quot;</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>log<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>messages <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.*Invalid user .* from//'</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sort</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">uniq</span> <span style="color: #000000; font-weight: bold;color: #CCC;">|</span> <span style="color: #c20cb9; font-weight: bold;color: #577A61;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/^/ALL:/'</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; <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny ;
&nbsp;
<span style="color: #c20cb9; font-weight: bold;color: #577A61;">diff</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>var<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>tmp<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny <span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;color: #CCC;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>dev<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>null <span style="color: #000000; font-weight: bold;color: #CCC;">||</span> <span style="color: #7a0874; font-weight: bold;color: #CCC;">&#40;</span><span style="color: #7a0874; font-weight: bold;color: #8FB394;">echo</span> <span style="color: #ff0000;color: #666666;">&quot;** hosts.deny updated **&quot;</span> ; <span style="color: #c20cb9; font-weight: bold;color: #577A61;">cat</span> <span style="color: #000000; font-weight: bold;color: #CCC;">/</span>etc<span style="color: #000000; font-weight: bold;color: #CCC;">/</span>hosts.deny<span style="color: #7a0874; font-weight: bold;color: #CCC;">&#41;</span></pre></div></div>

<p>Script funcionando:<br />
<code><br />
Sep  2 16:55:02 mintaka -- MARK --<br />
Sep  2 13:58:10 mintaka sshd[20790]: Did not receive identification string from 189.2.118.72<br />
Sep  2 13:58:34 mintaka sshd[20795]: Invalid user suporte from 189.2.118.72<br />
# Tentativa de brute force<br />
Sep  2 13:58:41 mintaka sshd[20798]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:43 mintaka sshd[20800]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:46 mintaka sshd[20802]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:49 mintaka sshd[20804]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:58:51 mintaka sshd[20806]: Invalid user suporte from 189.2.118.72<br />
Sep  2 13:59:24 mintaka sshd[20817]: Did not receive identification string from 189.2.118.72<br />
# Script roda<br />
** hosts.deny updated **<br />
ALL:74.221.239.100<br />
ALL: 189.2.118.72<br />
ALL: 200.27.79.101<br />
ALL: 74.221.239.100<br />
# E os hosts agora estão bloqueados<br />
Sep  2 14:00:09 mintaka sshd[20826]: Invalid user teste2008 from 189.2.118.72<br />
Sep  2 14:00:10 mintaka sshd[20864]: refused connect from 189.2.118.72 (189.2.118.72)<br />
</code></p>
<p>Eu rodo em minha máquina a cada 2 minutos <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/update-hosts-deny-script/feed</wfw:commentRss>
		<slash:comments>7</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>Meus 3 dias testando KDE 4.2.2</title>
		<link>http://chronosbox.org/blog/my-3-days-testing-kde-422</link>
		<comments>http://chronosbox.org/blog/my-3-days-testing-kde-422#comments</comments>
		<pubDate>Fri, 17 Apr 2009 02:41:36 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet GentooBR]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[kde4]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/?p=143</guid>
		<description><![CDATA[Hoje finalizo com meus 3 dias de testes em cima do KDE 4. Para adiantar minhas opnições, eu digo que realmente gostei muito do que fizeram, mas os bugs encontrados não o tornam um desktop apto para uso diário, embora bonito. Vamos as minhas opniões ponto principais! Ponto a ponto posso dizer que o modo [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_141" class="wp-caption alignleft" style="width: 310px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/04/start.png"><img src="http://chronosbox.org/blog/wp-content/uploads/2009/04/start-300x187.png" alt="The boot of KDE 4.2.2 in Gentoo" title="After compiling" width="300" height="187" class="size-medium wp-image-141" /></a><p class="wp-caption-text">The boot of KDE 4.2.2 in Gentoo</p></div> Hoje finalizo com meus 3 dias de testes em cima do KDE 4.</p>
<p>Para adiantar minhas opnições, eu digo que realmente gostei muito do que fizeram, mas os bugs encontrados não o tornam um desktop apto para uso diário, embora bonito. Vamos as minhas opniões ponto principais!</p>
<p>Ponto a ponto posso dizer que o modo como é organizado os plasmoids e os temas usados estão ficando cada vez melhor. A integração com GTK continua a mesma do KDE 3.5.10 que uso. Os novos plasmoids precisam, na sua maioria, de um trabalho melhor, pois plasmoids que me deixariam ter RSS no desktop de uma maneira bonita (o que me é muito útil) não funcionam, o monitor de sistema não perde aos feios monitores do superkaramba e ainda continuamos a ter plugins inúteis como o olho que segue o mouse.<br />
<span id="more-143"></span><br />
O visual do KDE 4.2.2 está fantástico, como disse os temas são belos (mas temos os feios também) e temos possiblidade de customizar cada item do tema, misturando itens de vários temas. A transparência no KDE 4 é real, usando composite e  desativada facilmente via Alt+Ctrl+F12 ou automática se o KDE detecta que ela está sobrecarregando o sistema.<br />
<div id="attachment_142" class="wp-caption alignright" style="width: 310px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/04/real_transparency.png"><img src="http://chronosbox.org/blog/wp-content/uploads/2009/04/real_transparency-300x187.png" alt="KDE now have real transparency using X composite" title="Real transparency" width="300" height="187" class="size-medium wp-image-142" /></a><p class="wp-caption-text">KDE now have real transparency using X composite</p></div>O yakuake, na versão para KDE 4 ficou melhor, com possibilidade de editar o visual por perfis e fácil interação com suas caixas de dialogo, além das já conhecidas divisão em tela dos terminais (lembrando o screen). O firefox funciona normalmente (sem aquela baita integração ao KDE como de costume) e o Konqueror está bem menos chato.  O Dolphin evoluiu absurdos, não trava mais, está realmente muito usável, suporta abas, zoom e visualização de vários protocolos. Ele conta com as abas e ainda um terminal rápido que podem ser exibidas através das teclas de atalho (não, não temos pastas exibidas por default). O modo de navegação é por meio de breadcrumbs mas facilmente podemos digitar o endereço desejado.</p>
<p>A possiblidade de customização de efeitos (utéis e inutéis) é consideravél, podemos ter o cubo, cilindro, efeitos de explosão na janela. A janela torcendo (é isso??) e as utilidades para achar o mouse foram realmente úteis, uma por beleza e brincadeira e outra por pura utilidade. Outras customizações utéis são as ações para os cantos da janela, onde eu usei a que mostra um grid com todas as janelas para ai você escolher. Os Alt+Tabs frescurentos também estão aqui e tem lá sua <b>in</b>utilidade. Infelizmente efeitos bonitinhos para mim não é uma prioridade já que meu foco é um desktop para programar, neste ponto, espero que o time do KDE foque em estabilidade e desempenho.</p>
<p><div id="attachment_140" class="wp-caption alignleft" style="width: 310px"><a href="http://chronosbox.org/blog/wp-content/uploads/2009/04/klauncher.png"><img src="http://chronosbox.org/blog/wp-content/uploads/2009/04/klauncher-300x187.png" alt="New Klauncher (Alt+F2)" title="New Klauncher (Alt+F2)" width="300" height="187" class="size-medium wp-image-140" /></a><p class="wp-caption-text">New Klauncher (Alt+F2)</p></div> A menina dos olhos para mim, ficou com o KLauncher, muito melhorado em relação ao KDE 3.5 ele pode ser orientado a comandos ou a tarefas (não consegui usar esse por problemas de BIOS, não funcionou comigo), ele está bonito, agradavél de usar, bem indexado e ainda tem um botãozinho útil para um monitor de processos do KDE.</p>
<p>Meus ovos podres vão para o Kopete, infelizmente, embora a interface tenha melhorado bastante (tem que notar bem pra ver) ele da crash quando adiciono contatos no MSN e seu sistemas de notificação foi a gota d&#8217;água <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , simplesmente não da para desabilitar e me deixou louco, impossível trabalhar com um monte de balões pulando a cada mensagem de amigos. Outro ponto muito negativo também é que no geral, mesmo com o composite desabilitado, o KDE 4.2.2 ainda está meio lentão, parecido com o Windows Vista. Não seria um problema se eu tivesse vindo direto do Windows Vista para o KDE 4.2.2, mas minha volta ao Linux foi ao KDE 3.5.x e a diferença de velocidade entre eles é realmente notável para programar, o que me leva devolta, hoje, ao kde 3.5.10. Ficarei de olho no KDE 4 e quem sabe nas versão 4.3.x ele fica bom para usar no dia a dia :].</p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/my-3-days-testing-kde-422/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Matando sessões de outros usuários em servidores *nix, mas só como root.</title>
		<link>http://chronosbox.org/blog/matando-sessoes-de-outros-usuarios-em-servidores-nix-mas-so-como-root</link>
		<comments>http://chronosbox.org/blog/matando-sessoes-de-outros-usuarios-em-servidores-nix-mas-so-como-root#comments</comments>
		<pubDate>Fri, 29 Jun 2007 04:42:01 +0000</pubDate>
		<dc:creator>Felipe 'chronos' Prenholato</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[insights]]></category>
		<category><![CDATA[mad]]></category>

		<guid isPermaLink="false">http://chronosbox.org/blog/2007/06/29/matando-sessoes-de-outros-usuarios-em-servidores-nix-mas-so-como-root/</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! Bem, certo dia da [...]]]></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>Bem, certo dia da minha vida, tive que kickar um sysadmin do servidor dele, onde eu<br />
estava instalando um portal pq ele realmente estava me atrapalhando, ficava reiniciando postgresql toda hora, o servidor também &#8230; enfim, ridículo <img src='http://chronosbox.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Me bateu uma luz (por causa do mesmo sysadmin) hoje e fiz uma coisa legal, segue<br />
abaixo um script para kickar todos os usuários que não seja o que vc passar ou<br />
kickar o que vc passar, pegando principalmente por IP/Maquina deles.</p>
<p>Naturalmente você só poderá rodar o script como root, mas acredite, não é difícil conseguir.<br />
A maioria dos servidores acaba dando uma permissão com sudo a algum arquivo usando vim, tipo, sudo vim /etc/apache/vhosts/seuvhost.conf, dentro do vim, execute <strong><em>:!su -</em></strong> e você terá um shell como root.<br />
<span id="more-5"></span></p>
<pre><code lang="sh">#!/bin/bash

# a ideia eh matar todos os bashs menos o seu, impossibilitando alguem
# de atrapalhar o servico.
#
# o script eh dedicado a um homem chamado Jomar.
#
# Este script eh licenciado sobre a GPLv2 e toda alteracao devera ser
# publicada e enviada se possivel ao criador.

# Autor:
# Felipe Prenholato
# chronos@gentoobr.org

QUEM=$1
EXPULSAR=$2

if [ "$EXPULSAR" == "S" ]
then
    GREP="grep"
elif [ "$EXPULSAR" == "N" ]
then
    GREP="grep -v"
else
    echo "Use: mata [IP|NOME_MAQUINA] [S|N]"
    echo "O segundo argumento define se o cara vai ser expulso ou se
 fica no micro."
    exit 1
fi

w | grep "^[a-z]" | ${GREP} "$QUEM" | tr -s 't' ' ' | cut -d' ' -f2
tmp/tmpmata

for e in $(cat /tmp/tmpmata);
do

    PROCESSOS=$(ps aux | grep bash | grep $e | tr -s 't' ' ' | cut
 	-d' ' -f 2)

    kill -9 $PROCESSOS

done
</code></pre>
<p>Use com <strong>cuidado</strong> e por sua conta. Isto pode causar <strong>demissão por justa<br />
causa</strong> ou te arranjar um grande problema.</p>
<p>Ele em um while true rodando impede que qq ser vivo que não seja do seu<br />
IP/Maquina entre via ou terminal.</p>
<p><span style="font-size: 120%"><strong>EU NÃO ME RESPONSABILIZO!</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://chronosbox.org/blog/matando-sessoes-de-outros-usuarios-em-servidores-nix-mas-so-como-root/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

