<?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>fabioboris.com</title>
	<atom:link href="http://www.fabioboris.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fabioboris.com</link>
	<description>Blog pessoal de Fabio Agostinho Boris</description>
	<lastBuildDate>Fri, 18 May 2012 19:08:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Relatórios com SAP Crystal Reports e Microsoft Visual Studio 2010: Projetos Windows Forms em linguagem C#</title>
		<link>http://www.fabioboris.com/relatorios-com-sap-crystal-reports-e-microsoft-visual-studio-2010-projetos-windows-forms-em-linguagem-c-sharp</link>
		<comments>http://www.fabioboris.com/relatorios-com-sap-crystal-reports-e-microsoft-visual-studio-2010-projetos-windows-forms-em-linguagem-c-sharp#comments</comments>
		<pubDate>Fri, 18 May 2012 18:54:30 +0000</pubDate>
		<dc:creator>Fabio Boris</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Crystal Reports]]></category>

		<guid isPermaLink="false">http://www.fabioboris.com/?p=43</guid>
		<description><![CDATA[Tutorial para auxiliar na criação de relatórios com o Microsoft Visual Studio 2010 em projetos Windows Forms com Linguagem C# usando o SAP Crystal Reports. Ler no Google Docs]]></description>
			<content:encoded><![CDATA[<p>Tutorial para auxiliar na criação de relatórios com o Microsoft Visual Studio 2010 em projetos Windows Forms com Linguagem C# usando o SAP Crystal Reports.</p>
<p><a href="https://docs.google.com/document/d/1AnO55rbSwTrRhfiqyY7MsTcutq2TcYnxqwrhXQUlxNo/edit">Ler no Google Docs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabioboris.com/relatorios-com-sap-crystal-reports-e-microsoft-visual-studio-2010-projetos-windows-forms-em-linguagem-c-sharp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculadora para redes e sub-redes IPv4</title>
		<link>http://www.fabioboris.com/calculadora-para-redes-e-sub-redes-ipv4</link>
		<comments>http://www.fabioboris.com/calculadora-para-redes-e-sub-redes-ipv4#comments</comments>
		<pubDate>Wed, 10 Jun 2009 18:28:09 +0000</pubDate>
		<dc:creator>Fabio Boris</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://www.fabioboris.com/?p=40</guid>
		<description><![CDATA[Nos últimos dias precisei dar uma reestudada no sistema de endereçamento de redes e sub-redes IPv4, o que me fez pensar no porque de não escrever um programa que faça todos esses cálculos. Foi o que resolvi fazer, e aproveitei &#8230; <a href="http://www.fabioboris.com/calculadora-para-redes-e-sub-redes-ipv4">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nos últimos dias precisei dar uma reestudada no sistema de endereçamento de redes e sub-redes IPv4, o que me fez pensar no porque de não escrever um programa que faça todos esses cálculos. Foi o que resolvi fazer, e aproveitei também para tirar as teias do meu &#8220;javanês&#8221;, pois já fazia um bom tempo que não escrevia nada em Java.</p>
<p><span id="more-40"></span>Estou com algumas ideias para uma próxima versão como a possibilidade de uma lista heterogênea de sub-redes. Qualquer sugestão será muito bem vinda.</p>
<p>Obrigado pela visita, e espero que aproveitem.</p>
<p style="text-align: center;"><a href="http://www.fabioboris.com/wp-content/uploads/2009/06/netcalc.jpg"><img class="aligncenter size-full wp-image-39" title="NetCalc Screenshot" src="http://www.fabioboris.com/wp-content/uploads/2009/06/netcalc.jpg" alt="NetCalc Screenshot" width="353" height="258" /></a></p>
<p><a href="http://www.fabioboris.com/wp-content/uploads/2009/06/netcalc.jar">Download NetCalc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabioboris.com/calculadora-para-redes-e-sub-redes-ipv4/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Funções para controle de saída no PHP</title>
		<link>http://www.fabioboris.com/funcoes-para-controle-de-saida-no-php</link>
		<comments>http://www.fabioboris.com/funcoes-para-controle-de-saida-no-php#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:43:22 +0000</pubDate>
		<dc:creator>Fabio Boris</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.fabioboris.com/?p=19</guid>
		<description><![CDATA[Motivação Um aspecto interessante do PHP é a flexibilidade em misturar código PHP com tipos de documentos diferentes como HTML por exemplo. Com as tags de abertura e fechamento de código, indicamos ao PHP onde ele deve iniciar e onde &#8230; <a href="http://www.fabioboris.com/funcoes-para-controle-de-saida-no-php">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>Motivação</h3>
<p>Um aspecto interessante do PHP é a flexibilidade em misturar código PHP com tipos de documentos diferentes como HTML por exemplo. Com as tags de abertura e fechamento de código, indicamos ao PHP onde ele deve iniciar e onde deve parar de interpretar código.</p>
<p>O fato é que quando enviamos alguma saída em HTML, por exemplo, com <em>echo</em>, <em>print</em>, ou simplesmente colocando esse HTML fora das tags de abertura e fechamento de código PHP, essa saída vai para o seu solicitante, nesse caso, um browser.</p>
<p>Em certas ocasiões, pode ser interessante interpretar essa saída antes de ela chegar ao seu destino, ou simplesmente ter seu conteúdo em uma variável para possivelmente salvá-la ou enviá-la por email, ou ainda evitar que o browser receba alguma saída antes de algum header. Enfim, temos várias situações em que isso seria útil. Para isso, no PHP existem as funções de controle de saída.</p>
<p><span id="more-19"></span></p>
<h3>Conceito</h3>
<p>No PHP essa saída é chamada de &#8220;<em>output buffer</em>&#8220;, daí o prefixo de suas funções.</p>
<p>A função <strong>ob_start()</strong> ativa o buffer de saída. Enquanto o buffer de saída está ativado, nenhuma saída é enviada. Ao invés disso ela é guardada em um buffer interno.</p>
<p>O conteúdo desse buffer, pode ser copiado para uma variável usando a função <strong>ob_get_contents()</strong>.</p>
<p>Para desativar o buffer de saída existem duas funções: <strong>ob_end_flush()</strong> que envia o buffer à saída; e <strong>ob_end_clean()</strong> que descarta o conteúdo do buffer.</p>
<h3>Exemplo</h3>
<pre>&lt;?php
$cores = array('azul', 'vermelho', 'verde', 'amarelo');
// ativa o buffer de saída
ob_start();
?&gt;
&lt;ul&gt;
&lt;?php foreach ($cores as $valor): ?&gt;
    &lt;li&gt;&lt;?php echo $valor;  ?&gt;&lt;/li&gt;
&lt;?php endforeach; ?&gt;
&lt;/ul&gt;
&lt;?php
// copia o buffer para a variavel $saida
$saida = ob_get_contents();
// desativa e descarta o buffer de saída
ob_end_clean();
// substitui as tags &lt;ul&gt; e &lt;/ul&gt; por &lt;ol&gt; e &lt;/ol&gt;
$saida = str_replace('ul&gt;', 'ol&gt;', $saida);
?&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Controlando Buffer de Saída&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
&lt;?php echo $saida; ?&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre>
<p>Nesse exemplo, a saída foi capturada no início, em seguida foi alterada, e finalmente inserida em outra parte do documento.</p>
<h3>Referências</h3>
<p>Vale a pena dar uma olhada na documentação oficial. Existem várias outras funções para o controle de saída no PHP.</p>
<p><a href="http://www.php.net/manual/ref.outcontrol.php" target="_blank">http://www.php.net/manual/ref.outcontrol.php</a><br />
<a href="http://www.php.net/manual/language.basic-syntax.phpmode.php" target="_blank">http://www.php.net/manual/language.basic-syntax.phpmode.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabioboris.com/funcoes-para-controle-de-saida-no-php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como recuperar arquivos excluídos de uma partição Linux ext3</title>
		<link>http://www.fabioboris.com/como-recuperar-arquivos-excluidos-de-uma-particao-linux-ext3</link>
		<comments>http://www.fabioboris.com/como-recuperar-arquivos-excluidos-de-uma-particao-linux-ext3#comments</comments>
		<pubDate>Fri, 24 Apr 2009 04:43:53 +0000</pubDate>
		<dc:creator>Fabio Boris</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.fabioboris.com/?p=11</guid>
		<description><![CDATA[Estava eu fazendo uma costumeira faxina em minhas pastas pessoais, quando descuidosamente excluí um arquivo que, não tinha nenhuma cópia de segurança, e que realmente não deveria ter sido excluído. Respirei fundo, e pensei na frustante possibilidade de ter que &#8230; <a href="http://www.fabioboris.com/como-recuperar-arquivos-excluidos-de-uma-particao-linux-ext3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estava eu fazendo uma costumeira faxina em minhas pastas pessoais, quando descuidosamente excluí um arquivo que, não tinha nenhuma cópia de segurança, e que realmente não deveria ter sido excluído. Respirei fundo, e pensei na frustante possibilidade de ter que refazer todo o arquivo, jogando fora várias horas de trabalho.</p>
<p><span id="more-11"></span>Depois de alguns minutos consultando nosso amigo Google, acabei encontrando uma ferramenta chamada &#8220;ext3grep&#8221; (<a title="ext3grep" href="http://code.google.com/p/ext3grep/" target="_blank">http://code.google.com/p/ext3grep/</a>). Porém, como nem tudo é perfeito, também descobri que não se tratava de uma simples ferramenta que traria meu arquivo de volta com um simples comando ou com alguns cliques do mouse. No entanto, me parecia ser a única coisa capaz de trazer meu arquivo de volta à &#8220;vida&#8221;.</p>
<p>Para começar, é interessante desmontar a partição de onde o arquivo foi excluído o mais rápido possível, evitando que sejam gravadas informações que venham a impossibilitar a recuperação. Por exemplo:</p>
<pre><code>umount /home</code></pre>
<p>Porém, com toda a pressa e expectativa acabei me esquecendo disso!<br />
Prosseguindo&#8230; Tive que instalar o ext3grep no Debian. Felizmente, isso foi bastante simples:</p>
<pre><code>apt-get update
apt-get install ext3grep</code></pre>
<p>Com a ferramenta instalada, a primeira coisa a fazer foi encontrar em que &#8220;lugar&#8221;  (número do bloco da partição) esse arquivo estava. Para isso foi usada uma palavra chave (parte do nome do arquivo):</p>
<pre><code>ext3grep /dev/sdb1 --search PalavraChave</code></pre>
<p>Feito isso, obtive uma lista dos números de blocos suspeitos, e fui checá-los:</p>
<pre><code>ext3grep /dev/sdb1 --ls --block 24680</code></pre>
<p>Felizmente, encontrei o bloco que continha o meu arquivo em uma das primeiras tentativas.<br />
Na lista apresentada, são fornecidas, entre outras informações, o nome do arquivo e o número do seu inode. E, com o número do inode do arquivo desejado em mãos:</p>
<pre><code>ext3grep /dev/sdb1 --restore-inode 135792468</code></pre>
<p>O arquivo foi restaurado em uma pasta chamada &#8220;RESTORED_FILES&#8221; com um nome parecido com &#8220;inode.13572468&#8243;.<br />
Depois disso, foi necessário só mover e renomear o arquivo:</p>
<pre><code>mv RESTORED_FILES/inode.13572468 ~/MeuArquivo.odt</code></pre>
<p>Enfim, isso é tudo!<br />
Felizmente, fui poupado de algumas horas de trabalho extra, e ainda fiquei com aquela gostosa sensação de ter aprendido algo novo!</p>
<p>Espero que aproveitem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabioboris.com/como-recuperar-arquivos-excluidos-de-uma-particao-linux-ext3/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

