<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>tar -zxvf</title>
	
	<link>http://www.tarzxvf.com</link>
	<description>Coding and sysadmin stuff</description>
	<lastBuildDate>Thu, 09 Jul 2009 01:30:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tarzxvf" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="tarzxvf" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Uso da CPU (por núcleo) em Python ou parseando o /proc/stat</title>
		<link>http://www.tarzxvf.com/uso-da-cpu-por-nucleo-em-python-ou-parseando-o-procstat/</link>
		<comments>http://www.tarzxvf.com/uso-da-cpu-por-nucleo-em-python-ou-parseando-o-procstat/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 01:30:55 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[/proc/]]></category>
		<category><![CDATA[HowToPython]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=417</guid>
		<description><![CDATA[Título alternativo: How to get CPU usage per core with python
Teste de indexação do google  
Mais um post para a série &#8220;Parseando o /proc&#8221; [1]. Dessa vez sem motivo explícito, apenas diversão!
Ambientes de testes:
Ubunto c/ 1 núcleo e Python 2.6 
Ubunto c/ 2 núcleos e Python 2.6 
CentOS c/ 4 núcleos e Python 2.4. [...]]]></description>
			<content:encoded><![CDATA[<p>Título alternativo: <strong>How to get CPU usage per core with python</strong><br />
Teste de indexação do google <img src='http://www.tarzxvf.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Mais um post para a série &#8220;Parseando o /proc&#8221; [<a href="http://tarzxvf.com/netstat-em-python-ou-parsendo-o-procnettcp">1</a>]. Dessa vez sem motivo explícito, apenas diversão!</p>
<p>Ambientes de testes:</p>
<li>Ubunto c/ 1 núcleo e Python 2.6 </li>
<li>Ubunto c/ 2 núcleos e Python 2.6 </li>
<li>CentOS c/ 4 núcleos e Python 2.4. </li>
<p>Comparei os resultados através do <a href="http://tarzxvf.com/ferramentas-top-like">htop</a> e obtive uma proximidade alta nos valores, as diferenças se dão provavelmente pelo momento e duração da medição!</p>
<p>Quem puder testar em ambientes com mais núcleos ou uso intensivo da CPU e comparar com as ferramentas do sistema por favor me de um feedback</p>
<p>E quem rir da qualidade do meu inglês nos comentários eu vou banir o ip! <img src='http://www.tarzxvf.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p417code2'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p4172"><td class="code" id="p417code2"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># [ reference ]</span>
<span style="color: #808080; font-style: italic;"># Detect number of cpus</span>
<span style="color: #808080; font-style: italic;"># http://www.boduch.ca/2009/06/python-cpus.html</span>
<span style="color: #808080; font-style: italic;"># Get cpu usage (But this example is not working 100%)</span>
<span style="color: #808080; font-style: italic;"># http://ubuntuforums.org/showpost.php?p=853257&amp;postcount=4</span>
&nbsp;
INTERVAL = <span style="color: #ff4500;">2</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> CPUUsage:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">cores</span> = <span style="color: #008000;">self</span>.<span style="color: black;">detectCPUs</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> createCoreArray<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        cores = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cores</span><span style="color: black;">&#41;</span>:
            cores.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> cores
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> detectCPUs<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">hasattr</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>, <span style="color: #483d8b;">&quot;sysconf&quot;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">sysconf_names</span>.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SC_NPROCESSORS_ONLN&quot;</span><span style="color: black;">&#41;</span>:
                ncpus = <span style="color: #dc143c;">os</span>.<span style="color: black;">sysconf</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SC_NPROCESSORS_ONLN&quot;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>ncpus, <span style="color: #008000;">int</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">and</span> ncpus <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:
                    <span style="color: #ff7700;font-weight:bold;">return</span> ncpus
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">1</span> <span style="color: #808080; font-style: italic;"># Default</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> getTimeList<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        core = <span style="color: #008000;">self</span>.<span style="color: black;">createCoreArray</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        statFile = <span style="color: #008000;">file</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/proc/stat&quot;</span>, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">self</span>.<span style="color: black;">cores</span> == <span style="color: #ff4500;">1</span>:
            statFile.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># this FOR will split lines from proc/stat for every active core</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> cid <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cores</span><span style="color: black;">&#41;</span>:
            <span style="color: #808080; font-style: italic;"># when have just one core, split a different range</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">self</span>.<span style="color: black;">cores</span> == <span style="color: #ff4500;">1</span>:
                core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span> = statFile.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span>:<span style="color: #ff4500;">7</span><span style="color: black;">&#93;</span> <span style="color: #808080; font-style: italic;"># 2:6</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span> = statFile.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: #ff4500;">6</span><span style="color: black;">&#93;</span> <span style="color: #808080; font-style: italic;"># 1:5</span>
        statFile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># convert all itens in splited list from STR to INT for every core</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>core<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">for</span> cid <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cores</span><span style="color: black;">&#41;</span>:
                core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># return the core list now with INT values inside their cpu values</span>
        <span style="color: #808080; font-style: italic;"># like this: ([core,1,values],[core,2,values],[core,3,values])</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> core
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> deltaTime<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,interval<span style="color: black;">&#41;</span>:
        coreT1=<span style="color: #008000;">self</span>.<span style="color: black;">createCoreArray</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        coreT2=<span style="color: #008000;">self</span>.<span style="color: black;">createCoreArray</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># get core TIME 1 state per core</span>
        coreT1 = <span style="color: #008000;">self</span>.<span style="color: black;">getTimeList</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;"># wait X seconds to get new state core</span>
        <span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span>interval<span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;"># get core TIME 2 state per core</span>
        coreT2 = <span style="color: #008000;">self</span>.<span style="color: black;">getTimeList</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">#Get the diference of coreT2.item[i] and coreT1.item[i] for every core</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>coreT1<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">for</span> cid <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cores</span><span style="color: black;">&#41;</span>:
                coreT2<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> -= coreT1<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> coreT2
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Usage<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        core = <span style="color: #008000;">self</span>.<span style="color: black;">createCoreArray</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        cpuUsage = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
&nbsp;
        core = <span style="color: #008000;">self</span>.<span style="color: black;">deltaTime</span><span style="color: black;">&#40;</span>INTERVAL<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> cid <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cores</span><span style="color: black;">&#41;</span>:
            <span style="color: #808080; font-style: italic;"># sum of user,system and nice usage</span>
            tmp_use = core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> + core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>+core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            <span style="color: #808080; font-style: italic;"># 100.00 * usage / sum of usage + idle + waiting</span>
            usage = <span style="color: #483d8b;">&quot;%.2f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">100.00</span> <span style="color: #66cc66;">*</span> tmp_use<span style="color: black;">&#41;</span> / <span style="color: #008000;">sum</span><span style="color: black;">&#40;</span>core<span style="color: black;">&#91;</span>cid<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            cpuUsage.<span style="color: black;">append</span><span style="color: black;">&#40;</span>usage<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> cpuUsage
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #808080; font-style: italic;"># Show usage per core</span>
    <span style="color: #808080; font-style: italic;">#print CPUUsage().Usage()</span>
&nbsp;
    x = <span style="color: #ff4500;">0</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> CPUUsage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">Usage</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
        x = x + <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;CPU[%s]: %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>,<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>item<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/uso-da-cpu-por-nucleo-em-python-ou-parseando-o-procstat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como impedir a execução de scripts em pastas no servidor</title>
		<link>http://www.tarzxvf.com/como-impedir-a-execucao-de-scripts-em-pastas-no-servidor/</link>
		<comments>http://www.tarzxvf.com/como-impedir-a-execucao-de-scripts-em-pastas-no-servidor/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 02:21:48 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=413</guid>
		<description><![CDATA[RemoveHandler .py
Precisei disso para impedir a execução dos arquivos .py em uma pasta de um servidor, enquanto eu tentava por chute quase acertei a sintaxe  
De qualquer forma, basta colocar no .htaccess e está resolvido.
E aqui achei várias dicas que podem ser úteis um dia!
]]></description>
			<content:encoded><![CDATA[<blockquote><p>RemoveHandler .py</p></blockquote>
<p>Precisei disso para impedir a execução dos arquivos .py em uma pasta de um servidor, enquanto eu tentava por chute quase acertei a sintaxe <img src='http://www.tarzxvf.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>De qualquer forma, basta colocar no .htaccess e está resolvido.</p>
<p>E <a href="http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/">aqui</a> achei várias dicas que podem ser úteis um dia!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/como-impedir-a-execucao-de-scripts-em-pastas-no-servidor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ferramentas top-like</title>
		<link>http://www.tarzxvf.com/ferramentas-top-like/</link>
		<comments>http://www.tarzxvf.com/ferramentas-top-like/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:28:54 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[virtualização]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=360</guid>
		<description><![CDATA[OK, então você usa linux e conhece o &#8216;top&#8216;, item básico no repertório de qualquer sysadmin, que permite acompanhar algumas informações sobre a carga do sistema e processos. Essa ferramenta antiga e poderosa, é de uma idéia tão simples porem tão prática, que ganhou um termo para designar ferramentas semelhantes, ferramentas &#8220;top-like&#8220;.
Para se enquadrar em [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">OK, então você usa linux e conhece o &#8216;<strong>top</strong>&#8216;, item básico no repertório de qualquer sysadmin, que permite acompanhar algumas informações sobre a carga do sistema e processos. Essa ferramenta antiga e poderosa, é de uma idéia tão simples porem tão prática, que ganhou um termo para designar ferramentas semelhantes, ferramentas &#8220;<strong>top-like</strong>&#8220;.</p>
<p>Para se enquadrar em uma ferramenta top-like o candidato tem que:</p>
<li>ser baseado em curses</li>
<li>ter atualizações em intervalos pré-definidos</li>
<li>ter formato tabulado</li>
<li>e opcionalmente permitir interação com os objetos analisados</li>
<p align="justify">Fiz uma lista com 16 <strong>ferramentas top-like</strong> disponíveis no Ubuntu 9.04. Enquanto fazia a pesquisa, encontrei pelo menos mais meia dúzia sem pacotes para o ubuntu, e se for considerar as que eu <strong>não encontrei</strong> esse número deve subir consideravelmente.</p>
<p><span id="more-360"></span></p>
<p><strong>Segue a lista:</strong></p>
<p><strong>htop</strong> &#8211; Sem dúvida a mais famosa das ferramentas top-like, implementa algumas capacidades extras ao top, como cores, capacidade de scroll horizontal e vertical, e uma melhor interação sobre os processos listados.</p>
<p><strong>iotop</strong> &#8211; Ferramenta que exibe informações de I/O para cada processo. As informações exibidas são: swapin, leitura e escrita em disco e I/O geral com o sistema.<br />
<img src="http://www.tarzxvf.com/data/img/2009/iotop.png" alt="iotop" height="350" /></p>
<p><strong>itop</strong> &#8211; Monitora as interrupções de sistema, basicamente um parser em /proc/interrupts</p>
<p><strong>atop</strong> &#8211; Monitor para recursos do sistema. Exibe swap, rede, disco, cpu, atividade de processos entre outros. Achei pouco intuitivo.</p>
<p><strong>sntop</strong> &#8211; &#8220;Pinga&#8221; uma lista de hosts e indica se estão ativos ou inativos. Deve ser configurado em /etc/sntoprc. Ferramenta bem legal mais meio bugada.<br />
<img src="http://www.tarzxvf.com/data/img/2009/sntop.png" alt="sntop" /></p>
<p><strong>mtop, mytop</strong> &#8211; Ferramentas que monitoram as querys e o desempenho do banco de dados mysql. Infelizmente o mtop quebrou minha instalação, aparentemente ele tentou instalar a versão 5.0 em cima da versão 5.1 que tenho rodando.</p>
<p><strong>apachetop</strong> &#8211; Mostra informações sobre o apache, tais como: requisições por segundo, bytes por segundo e as URLs mais populares sendo exibidas. Creio que o pacote esteja com problema no ubuntu 9.04 64 bits, pois gera um um buffer overflow quando tento executa-lo.</p>
<p><strong>ptop</strong> &#8211; Semelhante ao mtop, mas específico para o postgres.</p>
<p><strong>dnstop</strong> &#8211; Exibe informações sobre o tráfego de DNS da rede.</p>
<p><strong>virt-top</strong> &#8211; Exibe informações de sistemas virtualizados: cpu, memoria, uptime. Pode monitorar qualquer sistema de virtualização baseado no <a href="http://libvirt.org/">libvirt</a>, como o Xen e o KVM.<br />
<img src="http://www.tarzxvf.com/data/img/2009/virt-top.png" alt="virt-top" height="350" /></p>
<p><strong>iptstate</strong> &#8211; Exibe informações sobre conexões feitas por clientes que passam pelo seu firewall/gateway. É basicamente um netstat que monitora as conexões tratadas pelo iptables. Depende do módulo CONNTRACK.</p>
<p><strong>iftop, pktstat, jnettop</strong> &#8211; Exibem informações de consumo da rede, cada qual com sua peculiaridade. A imagem mostra o pkstat.<br />
<img src="http://www.tarzxvf.com/data/img/2009/pktstat.png" alt="pktstat" height="250" /></p>
<p><strong>nethogs</strong> &#8211; Exibe informações de rede, mas ao invés de quebrar o tráfego por protocolo, o nethogs exibe o consumo de banda por processo. Bem interessante.<br />
<img src="http://www.tarzxvf.com/data/img/2009/nethogs.png" alt="nethogs" height="300" /></p>
<p>Por hoje é isso, mas fique ligado! Assim que possível vou escrever um artigo mais aprofundado sobre duas ou três das ferramentas listadas.</p>
<p>Ah, e se você conhece mais ferramentas top-like, sinta-se a vontade para compartilhar nos comentários. <img src='http://www.tarzxvf.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/ferramentas-top-like/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Meme Speedtest</title>
		<link>http://www.tarzxvf.com/meme-speedtest/</link>
		<comments>http://www.tarzxvf.com/meme-speedtest/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 18:17:14 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[diversos]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=357</guid>
		<description><![CDATA[Esse meme está rolando em muitos planetas. Fiquei curioso e resolvi brincar!
Aí está o resultado.

]]></description>
			<content:encoded><![CDATA[<p>Esse meme está rolando em muitos planetas. Fiquei curioso e resolvi brincar!<br />
Aí está o resultado.</p>
<p><img alt="" src="http://www.speedtest.net/result/492930378.png" title="speedtest" class="aligncenter" width="300" height="135" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/meme-speedtest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Netstat em Python ou parsendo o /proc/net/tcp</title>
		<link>http://www.tarzxvf.com/netstat-em-python-ou-parsendo-o-procnettcp/</link>
		<comments>http://www.tarzxvf.com/netstat-em-python-ou-parsendo-o-procnettcp/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 20:57:07 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[HowToPython]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=335</guid>
		<description><![CDATA[Na tarde de sábado eu precisava pegar as portas abertas no servidor, da forma mais Real Time possível.  Primeira idéia? Naturalmente, foi parsear o resultado do netstat e ‘grepar’ o LISTEN ou OUÇA, mas depois imaginei que beber diretamente da fonte pudesse fazer o negócio andar mais rápido. Pesquisa daqui, pesquisa dali, aparentemente o netstat [...]]]></description>
			<content:encoded><![CDATA[<p align='justify'>Na tarde de sábado eu precisava pegar as portas abertas no servidor, da forma mais Real Time possível.  Primeira idéia? Naturalmente, foi parsear o resultado do netstat e ‘grepar’ o LISTEN ou OUÇA, mas depois imaginei que beber diretamente da fonte pudesse fazer o negócio andar mais rápido. Pesquisa daqui, pesquisa dali, aparentemente o netstat pega suas informações dos arquivos em /proc/net.</p>
<p align='justify'>Após umas horinhas consegui o protótipo inicial do código que preciso. Mas durante a caminhada perdi o foco e acabei brincando um pouco mais com o /proc/net/tcp, no fim tinha um netstat simplificado feito em Python.</p>
<p align='justify'>Então se alguém algum dia precisar recuperar informações de conexões ao estilo netstat aí está o código:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p335code4'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p3354"><td class="code" id="p335code4"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Criado por Ricardo Pascal, qualquer dúvida ou</span>
<span style="color: #808080; font-style: italic;"># contribuição mande para  'pascal.linux' no gmail!</span>
<span style="color: #808080; font-style: italic;"># Pode usar a vontade só lembre-se de citar a autoria ;)</span>
<span style="color: #808080; font-style: italic;"># Agradecimento ao pessoal do #python-br na freenode.</span>
<span style="color: #808080; font-style: italic;"># A galera lá sempre ajuda.</span>
&nbsp;
PROC_TCP = <span style="color: #483d8b;">&quot;/proc/net/tcp&quot;</span>
STATE = <span style="color: black;">&#123;</span>
	    <span style="color: #483d8b;">'01'</span>:<span style="color: #483d8b;">'ESTABLISHED'</span>,
	    <span style="color: #483d8b;">'02'</span>:<span style="color: #483d8b;">'SYN_SENT'</span>,
	    <span style="color: #483d8b;">'03'</span>:<span style="color: #483d8b;">'SYN_RECV'</span>,
	    <span style="color: #483d8b;">'04'</span>:<span style="color: #483d8b;">'FIN_WAIT1'</span>,
	    <span style="color: #483d8b;">'05'</span>:<span style="color: #483d8b;">'FIN_WAIT2'</span>,
	    <span style="color: #483d8b;">'06'</span>:<span style="color: #483d8b;">'TIME_WAIT'</span>,
	    <span style="color: #483d8b;">'07'</span>:<span style="color: #483d8b;">'CLOSE'</span>,
	    <span style="color: #483d8b;">'08'</span>:<span style="color: #483d8b;">'CLOSE_WAIT'</span>,
	    <span style="color: #483d8b;">'09'</span>:<span style="color: #483d8b;">'LAST_ACK'</span>,
	    <span style="color: #483d8b;">'0A'</span>:<span style="color: #483d8b;">'LISTEN'</span>,
	    <span style="color: #483d8b;">'0B'</span>:<span style="color: #483d8b;">'CLOSING'</span>
	<span style="color: black;">&#125;</span>
&nbsp;
tcp_FH = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>PROC_TCP,<span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span>
content = tcp_FH.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
content.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># remove header</span>
tcp_FH.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> hex2dec<span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>s,<span style="color: #ff4500;">16</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> ip<span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>hex2dec<span style="color: black;">&#40;</span>s<span style="color: black;">&#91;</span><span style="color: #ff4500;">6</span>:<span style="color: #ff4500;">8</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> +<span style="color: #483d8b;">&quot;.&quot;</span>+ <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>hex2dec<span style="color: black;">&#40;</span>s<span style="color: black;">&#91;</span><span style="color: #ff4500;">4</span>:<span style="color: #ff4500;">6</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> +<span style="color: #483d8b;">&quot;.&quot;</span>+ \
	    <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>hex2dec<span style="color: black;">&#40;</span>s<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span>:<span style="color: #ff4500;">4</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> +<span style="color: #483d8b;">&quot;.&quot;</span>+ <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>hex2dec<span style="color: black;">&#40;</span>s<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span>:<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> remove_empty<span style="color: black;">&#40;</span><span style="color: #008000;">list</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#91;</span>x <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">list</span> <span style="color: #ff7700;font-weight:bold;">if</span> x <span style="color: #66cc66;">!</span>=<span style="color: #483d8b;">''</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> get_list<span style="color: black;">&#40;</span>c<span style="color: black;">&#41;</span>:
    result = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    result.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'ID'</span>,<span style="color: #483d8b;">'IP'</span>,<span style="color: #483d8b;">'PORT'</span>,<span style="color: #483d8b;">'rIP'</span>,<span style="color: #483d8b;">'rPORT'</span>,<span style="color: #483d8b;">'STATS'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> lines <span style="color: #ff7700;font-weight:bold;">in</span> content:
	line_array = remove_empty<span style="color: black;">&#40;</span>lines.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">' '</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
	line = <span style="color: black;">&#91;</span>line_array<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, line_array<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">':'</span><span style="color: black;">&#41;</span>, \
		line_array<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;:&quot;</span><span style="color: black;">&#41;</span>,line_array<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>
&nbsp;
	line = <span style="color: black;">&#91;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, ip<span style="color: black;">&#40;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, hex2dec<span style="color: black;">&#40;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, \
		ip<span style="color: black;">&#40;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, hex2dec<span style="color: black;">&#40;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, STATE<span style="color: black;">&#91;</span><span style="color: black;">&#40;</span>line<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>
&nbsp;
	result.<span style="color: black;">append</span><span style="color: black;">&#40;</span>line<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> result
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
    <span style="color: #ff7700;font-weight:bold;">for</span> lines <span style="color: #ff7700;font-weight:bold;">in</span> get_list<span style="color: black;">&#40;</span>content<span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span> lines</pre></td></tr></table></div>

<p><em>PS. Quando eu tiver tempo eu refaço a cama de gato que ta ali na função get_list() e ip().</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/netstat-em-python-ou-parsendo-o-procnettcp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Python WebServer, frameworks e derivados!</title>
		<link>http://www.tarzxvf.com/python-webserver-frameworks-e-derivados/</link>
		<comments>http://www.tarzxvf.com/python-webserver-frameworks-e-derivados/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 22:12:52 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wsgi]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=330</guid>
		<description><![CDATA[
SimpleHTTPServer
BaseHTTPServer
wsgi
WebOb
Aspen
PEP:333
Olha que legal, basicamente o meu problema!!
Static (Olha que legal, basicamente resolve o meu problema!!)
Albatross
Spyce
CherryPY e/ou StandaloneWSGI Server

Imagino que no final vou acabar usando o Standalone WSGI Server (engine do CherryPy) com a solução apresentada no Static. Mas até lá continuo fazendo meus testes com o CherryPy mesmo.
]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://docs.python.org/library/simplehttpserver.html">SimpleHTTPServer</a></li>
<li><a href="http://docs.python.org/library/simplehttpserver.html">BaseHTTPServer</a></li>
<li><a href="http://docs.python.org/library/wsgiref.html">wsgi</a></li>
<li><a href="http://pythonpaste.org/webob/file-example.html">WebOb</a></li>
<li><a href="http://www.zetadev.com/software/aspen/">Aspen</a></li>
<li><a href="http://www.python.org/dev/peps/pep-0333/">PEP:333</a></li>
<li><a href="http://stackoverflow.com/questions/499084/minimal-standalone-distributable-cross-platform-web-server">Olha que legal, basicamente o meu problema!!</a></li>
<li><a href="http://lukearno.com/projects/static/">Static</a> (Olha que legal, basicamente resolve o meu problema!!)</li>
<li><a href="http://www.object-craft.com.au/projects/albatross/">Albatross</a></li>
<li><a href="http://spyce.sourceforge.net/">Spyce</a></li>
<li><a href="http://www.cherrypy.org/wiki/CherryPyDownload">CherryPY e/ou StandaloneWSGI Server</a></li>
</ul>
<p>Imagino que no final vou acabar usando o Standalone WSGI Server (engine do CherryPy) com a solução apresentada no Static. Mas até lá continuo fazendo meus testes com o CherryPy mesmo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/python-webserver-frameworks-e-derivados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardware is expensive, programers are cheap!</title>
		<link>http://www.tarzxvf.com/hardware-is-expensive-programers-are-cheap/</link>
		<comments>http://www.tarzxvf.com/hardware-is-expensive-programers-are-cheap/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 23:28:19 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=324</guid>
		<description><![CDATA[É algo que me irrita profundamente, servidores mal aproveitados que por sua vez demandam mais servidores! Alem dos óbvios custos financeiros envolvidos, existe também o fator &#8220;Sysadmin puto da cara&#8221; e &#8220;Sysadmin pagando o pato por falha no desenvolvimento&#8221;. 
Essa é a recomendação de leitura da semana:
 Hardware is Expensive, Programmers are Cheap
 Hardware is [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">É algo que me irrita profundamente, servidores mal aproveitados que por sua vez demandam mais servidores! Alem dos óbvios custos financeiros envolvidos, existe também o fator &#8220;Sysadmin puto da cara&#8221; e &#8220;Sysadmin pagando o pato por falha no desenvolvimento&#8221;. </p>
<p>Essa é a recomendação de leitura da semana:<br />
<a href="http://lastinfirstout.blogspot.com/2009/01/hardware-is-expensive-programmers-are.html"> Hardware is Expensive, Programmers are Cheap</a><br />
<a href="http://lastinfirstout.blogspot.com/2009/01/hardware-is-expensive-programmers-are_29.html"> Hardware is Expensive, Programmers are Cheap II</a></p>
<p>Vale citar que esses textos foram escritos em resposta a esse outro:<br />
<a href="http://www.codinghorror.com/blog/archives/001198.html"> Hardware is Cheap, Programmers are Expensive</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/hardware-is-expensive-programers-are-cheap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu One, primeiras impressões</title>
		<link>http://www.tarzxvf.com/ubuntu-one-primeiras-impressoes/</link>
		<comments>http://www.tarzxvf.com/ubuntu-one-primeiras-impressoes/#comments</comments>
		<pubDate>Sat, 16 May 2009 23:49:58 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=314</guid>
		<description><![CDATA[Recebi o convite essa tarde e já estou com o UbuntuOne rodando no meu laptop. O processo de instalação foi extremamente simples, não levou 5 min. No pouco uso que fiz ainda não encontrei nenhum problema, o próximo passo é instalar no dekstop lá onde eu trabalho. 
Até agora só não me agradou o fato [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Recebi o convite essa tarde e já estou com o UbuntuOne rodando no meu laptop. O processo de instalação foi extremamente simples, não levou 5 min. No pouco uso que fiz ainda não encontrei nenhum problema, o próximo passo é instalar no dekstop lá onde eu trabalho. </p>
<p style="text-align: justify;">Até agora só não me agradou o fato de o programa criar a pasta Ubuntu One no meu $HOME. Eu sou meio nervoso em se tratando da organização do meu $HOME, mas acho que posso me acostumar, ou achar onde mudar essa configuração e acrescentar um . (ponto) no início da pasta, afinal o que os olhos não vêem o cérebro não processa =)</p>
<p>E aqui quem quiser pode ver uma <a href="http://www.tarzxvf.com/blogfiles/img/uo.png">screenshot</a> do UO rodando.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/ubuntu-one-primeiras-impressoes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How To Python – get, size, file, human, kb, mb, gb</title>
		<link>http://www.tarzxvf.com/how-to-python-get-size-file-human-kb-mb-gb/</link>
		<comments>http://www.tarzxvf.com/how-to-python-get-size-file-human-kb-mb-gb/#comments</comments>
		<pubDate>Sat, 16 May 2009 20:19:19 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[HowToPython]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=307</guid>
		<description><![CDATA[Função que converte tamanhos de arquivos em um formato legível para humanos. Não lembro onde achei, se alguém souber o link para o site original por favor me avise.
Update: Enquanto limpava os bookmarks achei o site em que encontrei o código

?View Code PYTHON#!/usr/bin/python
import os
def sizeof_fmt&#40;num&#41;:
    for x in &#91;'bytes','KB','MB','GB','TB'&#93;:
    [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Função que converte tamanhos de arquivos em um formato legível para humanos. <del datetime="2009-05-24T19:30:05+00:00">Não lembro onde achei, se alguém souber o link para o site original por favor me avise.</del><br />
Update: Enquanto limpava os bookmarks <a href="http://blogmag.net/blog/read/38/Print_human_readable_file_size">achei o site</a> em que encontrei o código</p></blockquote>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p307code6'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p3076"><td class="code" id="p307code6"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">def</span> sizeof_fmt<span style="color: black;">&#40;</span>num<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">'bytes'</span>,<span style="color: #483d8b;">'KB'</span>,<span style="color: #483d8b;">'MB'</span>,<span style="color: #483d8b;">'GB'</span>,<span style="color: #483d8b;">'TB'</span><span style="color: black;">&#93;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> num <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">1024.0</span>:
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;%3.1f%s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>num, x<span style="color: black;">&#41;</span>
        num /= <span style="color: #ff4500;">1024.0</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    lista = <span style="color: #dc143c;">os</span>.<span style="color: black;">listdir</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #008000;">file</span> <span style="color: #ff7700;font-weight:bold;">in</span> lista:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;File: %s Size: %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>,<span style="color: black;">&#40;</span>sizeof_fmt<span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">getsize</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/how-to-python-get-size-file-human-kb-mb-gb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu One</title>
		<link>http://www.tarzxvf.com/ubuntu-one/</link>
		<comments>http://www.tarzxvf.com/ubuntu-one/#comments</comments>
		<pubDate>Mon, 11 May 2009 22:02:33 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://tarzxvf.com/?p=302</guid>
		<description><![CDATA[Não sei quando foi, mas aconteceu. Era algo que eu imaginava a algum tempo: um dropbox da vida mantido pela canonical e integrado ao Ubuntu. O projeto em Beta se chama UbuntuOne, e infelizmente depende de um &#8220;invitation&#8221; para participar ( eu já solicitei o meu ).
Na versão gratuita são oferecidos 2gb de espaço para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Não sei quando foi, mas aconteceu. Era algo que eu imaginava a algum tempo: um dropbox da vida mantido pela canonical e integrado ao Ubuntu. O projeto em Beta se chama <a href="https://ubuntuone.com/">UbuntuOne</a>, e infelizmente depende de um &#8220;invitation&#8221; para participar ( eu já solicitei o meu ).</p>
<p style="text-align: justify;">Na versão gratuita são oferecidos 2gb de espaço para o usuário, um ícone na área de notificação permite o acesso as funcionalidades do produto, que no momento são: integração com o Nautilus, capacidade de compartilhar arquivos com outros usuários, sincronização e uma interface Web que permite o acesso aos dados.</p>
<p style="text-align: justify;">Alem da versão gratuita,existe também a versão paga, que por enquanto tem como único diferencial o espaço, são 10gb por 10 doletas mensais.</p>
<p style="text-align: justify;">Antes que alguém pergunte, o protocolo em que está sendo desenvolvido o UO é livre e o cliente é open source. Contudo o servidor é da Canonical e não existem planos de disponibilizar o código fonte! Mas nada impede que alguém desenvolva um servidor próprio baseado nas especificações públicas.</p>
<p style="text-align: justify;">Em um futuro próximo vai ser liberado uma API(fato) em cima do CouchDB(meio-fato) para que desenvolvedores possam projetar suas apps e trabalhar diretamente com o UO. Isso vai servir para facilitar a sincronização de dados dos diversos aplicativos do Ubuntu entre máquinas diferentes.</p>
<p><strong>Update:</strong><br />
Leia também: <a href="http://tarzxvf.com/ubuntu-one-primeiras-impressoes">http://tarzxvf.com/ubuntu-one-primeiras-impressoes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tarzxvf.com/ubuntu-one/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
