<?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>Freedom Interface &#187; curiosidade</title>
	<atom:link href="http://www.freedominterface.org/category/curiosidade/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freedominterface.org</link>
	<description>Pensamentos livres</description>
	<lastBuildDate>Thu, 27 Oct 2011 11:04:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>CPU flags 2</title>
		<link>http://www.freedominterface.org/2011/10/19/cpu-flags-2/</link>
		<comments>http://www.freedominterface.org/2011/10/19/cpu-flags-2/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 11:05:15 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=574</guid>
		<description><![CDATA[Em busca de maior detalhamento sobre o arquivo /proc/cpuinfo, encontrei mais algumas informações interessantes, como, checar se há o recurso de Turbo Boost no seu processador ou páginas aninhadas. Veja: ida &#8211; Intel Dynamic Acceleration (Turbo boost); ept &#8211; Intel Extended Page Table; npt &#8211; AMD Nested Page Table; ht &#8211; HyperThreading; hypervisior &#8211; É [...]]]></description>
			<content:encoded><![CDATA[<p>Em busca de maior detalhamento sobre o arquivo <strong>/proc/cpuinfo</strong>, encontrei mais algumas informações interessantes, como, checar se há o recurso de Turbo Boost no seu processador ou páginas aninhadas. Veja:</p>
<ul>
<li><strong>ida</strong> &#8211; Intel Dynamic Acceleration (Turbo boost);</li>
<li><strong>ept</strong> &#8211; Intel Extended Page Table;</li>
<li><strong>npt</strong> &#8211; AMD Nested Page Table;</li>
<li><strong>ht</strong> &#8211; HyperThreading;</li>
<li><strong>hypervisior</strong> &#8211; É uma máquina virtual sobre um hypervisior.</li>
</ul>
<p>Mais informações podem ser encontradas no arquivo <strong>cpufeature.h</strong> do código-fonte do Linux. Sua localização pode variar de acordo com a versão do kernel. Em <strong>3.0.0</strong> para uma máquina <strong>x86</strong>, está em <strong>arch/x86/include/asm</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/10/19/cpu-flags-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Youtube URL offset</title>
		<link>http://www.freedominterface.org/2011/02/11/youtube-url-offset/</link>
		<comments>http://www.freedominterface.org/2011/02/11/youtube-url-offset/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 16:42:17 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[vídeos]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=532</guid>
		<description><![CDATA[Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele. Não sei se ficou claro, mas segue a dica: http://www.youtube.com/watch?v=[video id]#at=[tempo de offset em segundos] Exemplo: http://www.youtube.com/watch?v=EShea9vWFtI#at=30 Vai começar o vídeo METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com"><img class="alignleft" src="http://www.treinaweb.com.br/blog/wp-content/uploads/2010/09/youtube.jpg" alt="Youtube" width="115" height="90" /></a>Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele.</p>
<p>Não sei se ficou claro, mas segue a dica:</p>
<p>http://www.youtube.com/watch?v=<strong>[video id]</strong>#at=<strong>[tempo de offset em segundos]</strong></p>
<p>Exemplo:</p>
<p><a href="http://www.youtube.com/watch?v=EShea9vWFtI#at=30">http://www.youtube.com/watch?v=EShea9vWFtI#at=30</a></p>
<p>Vai começar o vídeo <strong>METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba</strong> a partir de <strong>30</strong> segundos do início.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/02/11/youtube-url-offset/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>swapfile</title>
		<link>http://www.freedominterface.org/2010/07/21/swapfile/</link>
		<comments>http://www.freedominterface.org/2010/07/21/swapfile/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 01:49:32 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=290</guid>
		<description><![CDATA[Para usuários GNU/Linux, é muito comum o termo swap, ou partição swap. Em poucas palavras, ele diz respeito à técnica de extender a memória física, que as vezes não é suficiente, para o disco rígido. No Linux, o subsistema de memória usa um mapeamento virtual da memória, que permite um programa da userspace gravar na [...]]]></description>
			<content:encoded><![CDATA[<p>Para usuários GNU/Linux, é muito comum o termo <em>swap</em>, ou <em>partição swap</em>. Em poucas palavras, ele diz respeito à técnica de extender a memória física, que as vezes não é suficiente, para o disco rígido. No Linux, o subsistema de memória usa um mapeamento virtual da memória, que permite um programa da userspace gravar na memória sem se preocupar onde está fisicamente. Mas este já é assunto para outro post.</p>
<p>Como de costume, logo na instalação de uma distribuição já particionamos o disco de uma tal maneira que uma parte fica reservada para a área de troca, que é a tradução de <em>swap</em>. Alguns usam partições primárias para isto, outros lógicas&#8230; Alguns seguem uma regra que diz que &#8220;a capacidade do <em>swap</em> deve ser o dobro da memória física&#8221;&#8230; mas no final, isso fica mesmo é a critério do administrador do sistema.</p>
<p>O problema da partição é que complica no caso de precisar aumentar seu espaço. Para isto, poderia criar outra partição e ativá-la no sistema, mas seria necessário espaço em disco não particionado.</p>
<p>Uma solução rápida para isto seria criar um arquivo de <em>swap</em>, ou <em>swapfile</em>. Para criá-lo é quase igual à uma partição, já que para o Linux, os dispositivos de block são representados como arquivos e, cá entre nós, uma partição nada mais é que um conteiner grande de dados (um arquivão!). Na prática, sua criação ficaria assim:</p>
<p>Gerar um arquivo do tamanho de 512 * 100.000 bytes (100.000 blocos de 512 bytes) contendo apenas zeros:</p>
<pre class="brush: bash; title: ; notranslate">dd if=/dev/zero of=/tmp/swapfile bs=512 count=100000</pre>
<p>Definir o arquivo criado como <em>swap</em>:</p>
<pre class="brush: bash; title: ; notranslate">mkswap /tmp/swapfile</pre>
<p>Ativar o novo arquivo no pool de <em>swap</em> do sistema com prioridade 0 (zero):</p>
<pre class="brush: bash; title: ; notranslate">swapon -p 0 /tmp/swapfile</pre>
<p>Verificar o pool <em>swap</em> do sistema:</p>
<pre class="brush: bash; title: ; notranslate">swapon -s</pre>
<p>Desativar um dispositivo/arquivo <em>swap</em> do sistema:</p>
<pre class="brush: bash; title: ; notranslate">swapoff /tmp/swapfile</pre>
<p>Quanto à performance e aplicabilidade em ambiente de produção, prefiro não opinar, mas acredito ser uma alternativa mais rápida e simples para o aumento da área de troca, <em>swap</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/07/21/swapfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>diff binário</title>
		<link>http://www.freedominterface.org/2010/06/28/diff-binario/</link>
		<comments>http://www.freedominterface.org/2010/06/28/diff-binario/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 16:56:12 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=160</guid>
		<description><![CDATA[Estava eu procurando por uma solução de patch binário para compor uma parte do meu sistema de backups. Pois bem, embora não seja o cerne de tudo, vou explicar meu cenário para que seja melhor entendido. Eu estou trabalhando com máquinas virtuais com imagens de discos em volumes lógicos (LVM). Usando o recurso de snapshot [...]]]></description>
			<content:encoded><![CDATA[<p>Estava eu procurando por uma solução de patch binário para compor uma parte do meu sistema de backups. Pois bem, embora não seja o cerne de tudo, vou explicar meu cenário para que seja melhor entendido.</p>
<p>Eu estou trabalhando com máquinas virtuais com imagens de discos em volumes lógicos (<a href="http://pt.wikipedia.org/wiki/LVM" target="_blank">LVM</a>). Usando o recurso de snapshot do LVM, que é assunto para outro post, eu estava copiando inteiramente a imagem para um backup, através do comando <strong>dd</strong>. O problema é ter que fazer uma cópia full da  imagem a cada backup. Minha máquina de teste tem 10GB, mas imagina um servidor em produção, que pode ter várias dezenas de GBs&#8230; Fica inviável o backup deste jeito. Assim começou a busca por uma solução de calcular a diferença entre os dois binários, imagem de produção e a backup, para assim gerar um patch com somente o necessário para transferir ao servidor de backup. Após, eu precisaria aplicar este patch e assim atualizar a iamgem.</p>
<p>Pesquisando no oráculo Google, encontrei este <a href="http://www.daemonology.net/bsdiff/" target="_blank">site</a>. Lá pude baixar dois fontes, <strong>bsdiff</strong> e <strong>bspatch</strong>. Esses são versões &#8216;binárias&#8217; do GNU diff e patch. Depois de baixar, compilei usando o Makefile do próprio pacote. Como ele foi feito para os *BSD, o formato do Makefile é um pouco diferente. Para compilar direitinho, crie um arquivo chamado <strong>Makefile.patch</strong> no mesmo diretório do fonte. Dentro dele, coloque o seguinte conteúdo:</p>
<pre class="brush: diff; title: ; notranslate">
--- Makefile    2010-06-28 14:52:42.351369894 -0300
+++ Makefile.gnu        2010-06-28 14:53:29.883369968 -0300
@@ -1,4 +1,5 @@
 CFLAGS         +=      -O3 -lbz2
+INSTALL                ?=      /bin/install

 PREFIX         ?=      /usr/local
 INSTALL_PROGRAM        ?=      ${INSTALL} -c -s -m 555
@@ -10,6 +11,6 @@

 install:
        ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
-.ifndef WITHOUT_MAN
+ifndef WITHOUT_MAN
        ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
-.endif
+endif
</pre>
<p>Salve o arquivo e aplique o patch da seguinte forma:</p>
<pre class="brush: bash; title: ; notranslate">patch -p0 &lt; Makefile.patch</pre>
<p>Depois disso, é só instalar:</p>
<pre class="brush: bash; title: ; notranslate">make install</pre>
<p>Para testar, fiz o seguinte: copiei para uma pasta os binários /bin/ls e /bin/bash. Lá, calculei a diferença usando o bsdiff:</p>
<pre class="brush: bash; title: ; notranslate">/usr/local/bin/bsdiff ls bash teste</pre>
<p>Assim, foi criado o arquivo binário <strong>teste</strong>, que é a diferença entre <strong>ls</strong> e <strong>bash</strong>, ou seja, um patch. Depois, eu resolvi aplicar este patch no próprio <strong>ls</strong>. Assim, eu faria este <strong>ls</strong> se transformar no <strong>bash</strong>.</p>
<p>/usr/local/bin/bspatch ls ls_patched teste</p>
<p>Realmente, aconteceu como eu esperava. O comand <strong>bspatch</strong> gerou um binário <strong>ls_patched</strong>, que é o resultado do <strong>ls</strong> + <strong>teste</strong>. E adivinha, ele é exatamente o <strong>bash</strong>. Executa  direitinho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/28/diff-binario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liberar espaço</title>
		<link>http://www.freedominterface.org/2010/06/21/liberar-espaco/</link>
		<comments>http://www.freedominterface.org/2010/06/21/liberar-espaco/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 14:38:28 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=150</guid>
		<description><![CDATA[De vez em quando, a partição root, ou / (barra), fica perto de usar sua capacidade máxima, e para que o sistema não pare, é preciso liberar um pouco de espaço. De cara, eu sempre penso no diretório /tmp. Claro, se ele fizer parte da mesma partição do /. Para solucionar temporariamente o problema de [...]]]></description>
			<content:encoded><![CDATA[<p>De vez em quando, a partição root, ou / (barra), fica perto de usar sua capacidade máxima, e para que o sistema não pare, é preciso liberar um pouco de espaço. De cara, eu sempre penso no diretório /tmp. Claro, se ele fizer parte da mesma partição do /. Para solucionar temporariamente o problema de espaço, eu excluo os arquivos temporários que não foram usados desde uma certa data. Para isto, o comando <strong>find </strong>é bastante útil. Como exemplo, no meu laptop, eu rodo a seguinte sentença:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo find /tmp -atime +1 -exec rm -rfv{} \;</pre>
<p>Isto faz com que ele busque no diretório /tmp todos os arquivos que tem a data de acesso maior que 1 dia no passado e submete-o ao comando rm, para removê-lo. A data pode ser modificada alterando o parâmetro <strong>+1</strong> do atime. Caso coloque +2, serão buscados os arquivos com mais de 2 dias de acesso. Para mais informações, sempre existe o <strong>man</strong>.</p>
<pre class="brush: bash; title: ; notranslate">$ man find</pre>
<p>Outro utilitário bom para ajudar na busca por maior espaço livre é o <strong>du</strong> (disk usage). Ele faz uma somatória do uso de cada diretório e subdiretório. Dois parâmetros que sempre uso são: -h, para traduzir o espaço usado para unidades mais legíveis (GB, MB&#8230;); &#8211;max-depth=n, que diz ao du para correr até o nível n. Exemplo de uso:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo du -h --max-depth=1 /tmp</pre>
<p>Ou seja, some o uso de todos os diretórios e subdiretórios de /tmp, porém só me exiba até o primeiro nível, de maneira legível.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/21/liberar-espaco/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CPU flags</title>
		<link>http://www.freedominterface.org/2010/06/02/cpu-flags/</link>
		<comments>http://www.freedominterface.org/2010/06/02/cpu-flags/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 19:58:12 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=135</guid>
		<description><![CDATA[Pelo tanto que venho lendo sobre virtualização e propriedades dos processadores, resolvi ir um pouco mais a fundo para saber o que significam aqueles nomes estranhos de instruções. No Linux pode-se verificar o conteúdo do arquivo /proc/cpuinfo: As mais comuns que vi referências foram: PAE (Physical Address Extensions) que permite endereçamento de memória acima de [...]]]></description>
			<content:encoded><![CDATA[<p>Pelo tanto que venho lendo sobre virtualização e propriedades dos processadores, resolvi ir um pouco mais a fundo para saber o que significam aqueles nomes estranhos de instruções. No Linux pode-se verificar o conteúdo do arquivo /proc/cpuinfo:</p>
<pre class="brush: bash; title: ; notranslate">

$ grep flags /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
</pre>
<p>As mais comuns que vi referências foram: PAE (Physical Address Extensions) que permite endereçamento de memória acima de 4GB; HT (Hyper Threading) que permite um núcleo de processador possuir duas filhas de processamento, simulando assim processamento paralelo; LM (Long Mode) que indica presença de instruções x86_64; entre outros que podem ser encontrados <a href="http://blog.incase.de/index.php/cpu-feature-flags-and-their-meanings/" target="_blank">neste endereço</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/02/cpu-flags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

