<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Skarllot&#039;s Blog</title>
	<atom:link href="http://skarllot.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://skarllot.wordpress.com</link>
	<description>Programação C++, Gtkmm e MinGW</description>
	<lastBuildDate>Tue, 07 Sep 2010 01:46:08 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='skarllot.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Skarllot&#039;s Blog</title>
		<link>http://skarllot.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://skarllot.wordpress.com/osd.xml" title="Skarllot&#039;s Blog" />
	<atom:link rel='hub' href='http://skarllot.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Configurações de /proc/sys/net/ipv4/route</title>
		<link>http://skarllot.wordpress.com/2010/09/06/configuracoes-de-proc-sys-net-ipv4-route/</link>
		<comments>http://skarllot.wordpress.com/2010/09/06/configuracoes-de-proc-sys-net-ipv4-route/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 01:46:08 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Linha de comando]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[proc]]></category>
		<category><![CDATA[route]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=110</guid>
		<description><![CDATA[Vou falar um pouco das configurações de roteamento disponíveis em /proc/sys/net/ipv4/route. error_burst: Define, em interrupções de timer, o tempo máximo contabilizado para exibir uma mensagem. O valor predefinido corresponde a 5 segundos. error_cost: Define, em interrupções de timer, o tempo mínimo para exibir uma mensagem. O valor predefinido corresponde a 1 segundo. Os valores predefinidos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=110&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vou falar um pouco das configurações de roteamento disponíveis em <em>/proc/sys/net/ipv4/route</em>.<br />
<span id="more-110"></span></p>
<p><strong>error_burst</strong>: Define, em interrupções de timer, o tempo máximo contabilizado para exibir uma mensagem. O valor predefinido corresponde a 5 segundos.</p>
<p><strong>error_cost</strong>: Define, em interrupções de timer, o tempo mínimo para exibir uma mensagem. O valor predefinido corresponde a 1 segundo.</p>
<p>Os valores predefinidos de <em>error_burst</em> e <em>error_cost</em> limitam a uma mensagem a cada 5 segundos.</p>
<p><strong>flush</strong>: Escrever nesse arquivo faz com que o cache de roteamento seja descartado.</p>
<p><strong>gc_elasticity</strong>: É usado para definir o tamanho médio da lista de rotas, quando excedido a coleta de lixo na tabela de rotas se torna muito agressiva. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1178" target="_blank">ver</a>)</p>
<p><strong>gc_interval</strong>: Define, em segundos, o intervalo entre coletas lixo na tabela de rotas. Existe uma recomendação para que a coleta não seja muito frequente pois é muito pesada (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L951" target="_blank">ver</a>).</p>
<p><strong>gc_min_interval</strong>: Obsoleto, usar gc_min_interval_ms. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L3104" target="_blank">ver</a>)</p>
<p><strong>gc_min_interval_ms</strong>: Define, em milissegundos, o intervalo mínimo entre coletas (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L957" target="_blank">ver</a>). Predefinido em 500 milissegundos.</p>
<p><strong>gc_thresh</strong>: Define a quantidade mínima de rotas para que rotas comecem a ser descartadas na coleta de rotas. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L967" target="_blank">ver</a>)</p>
<p><strong>gc_timeout</strong>: Define, em segundos, o tempo máximo que uma rota é mantida. A rota é descartada mesmo se está em uso (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L842" target="_blank">ver</a>). Predefinido em 300 segundos.</p>
<p><strong>max_size</strong>: Define o número máximo de rotas a serem mantidas. As rotas mais antigas serão descartadas quando o número máximo é alcançado.</p>
<p><strong>min_adv_mss</strong>: Define, em bytes, a quantidade mínima de dados pode ser enviada em um segmento (<a href="http://www.tcpipguide.com/free/t_TCPMaximumSegmentSizeMSSandRelationshiptoIPDatagra.htm" target="_blank">ver</a>). Predefinido em 256 bytes.</p>
<p><strong>min_pmtu</strong>: Define, em bytes, o valor mínimo de PMTU permitido. Se o valor descoberto for menor então o valor mínimo definido aqui prevalece. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1701" target="_blank">ver</a>) Predefinido em 552 bytes.</p>
<p><strong>mtu_expires</strong>: Define, em segundos, o tempo que o PMTU de uma rota é mantido em cache (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1706" target="_blank">ver</a>). Predefinido em 600 segundos.</p>
<p><strong>redirect_load</strong>: Define um tempo mínimo entre tentativas de redirecionamentos ICMP, por rota. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1557" target="_blank">ver</a>)</p>
<p><strong>redirect_number</strong>: Define o número máximo de redirecionamentos ICMP ignorados, por rota. (<a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1549" target="_blank">ver</a>, <a href="http://lxr.free-electrons.com/source/net/ipv4/route.c#L1514" target="_blank">ver</a>)</p>
<p><strong>redirect_silence</strong>: Define, em interrupções de timer, o tempo máximo de espera por um redirecionamento ICMP. Após esse tempo é enviada um novo redirecionamento, mesmo que o mesmo tenha sido ignorado por causa de <em>redirect_load</em> ou <em>redirect_number</em>. Predefinido em 20,48 segundos.</p>
<p><strong>secret_interval</strong>: Define, em segundos, o intervalo entre descarregamento de cache. Predefinido em 600 segundos.</p>
<p>As informações encontradas aqui podem estar incorretas, pois se baseiam em minhas conclusões.</p>
<p><strong>Referências</strong>:</p>
<p>Documentação do sistema de arquivos /proc: <a href="http://www.linuxinsight.com/proc_sys_net_ipv4_route.html" target="_blank">http://www.linuxinsight.com/proc_sys_net_ipv4_route.html</a><br />
Configurações do kernel obscuras: <a href="http://lartc.org/howto/lartc.kernel.obscure.html" target="_blank">http://lartc.org/howto/lartc.kernel.obscure.html</a><br />
Determinando a quantidade de interrupções de timer: <a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1005802" target="_blank">http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1005802</a><br />
PMTU: <a href="http://www.netheaven.com/pmtu.html" target="_blank">http://www.netheaven.com/pmtu.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=110&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2010/09/06/configuracoes-de-proc-sys-net-ipv4-route/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>Dividir um PDF com página dupla em dois</title>
		<link>http://skarllot.wordpress.com/2010/07/17/dividir-pdf/</link>
		<comments>http://skarllot.wordpress.com/2010/07/17/dividir-pdf/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 02:47:27 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Linha de comando]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cortar]]></category>
		<category><![CDATA[crop]]></category>
		<category><![CDATA[dividir]]></category>
		<category><![CDATA[double]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[pagina]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=86</guid>
		<description><![CDATA[Abaixo publico um código Perl que divide verticalmente cada página em duas páginas. Um caminho para o arquivo PDF deve ser fornecido como argumento e o arquivo dividido será criado no mesmo local. Instale o PDF-API2 (pacote libpdf-api2-perl no Debian/Ubuntu ou perl-PDF-API2 no RHEL/CentOS/Fedora). Arquivo split_pdf.pl: #!/usr/bin/env perl use strict; use warnings; use PDF::API2; my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=86&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Abaixo publico um código Perl que divide verticalmente cada página em duas páginas.<br />
Um caminho para o arquivo PDF deve ser fornecido como argumento e o arquivo dividido será criado no mesmo local.<br /><span id="more-86"></span><br />
Instale o <a href="http://search.cpan.org/dist/PDF-API2/" target="_blank">PDF-API2</a> (pacote <strong>libpdf-api2-perl</strong> no Debian/Ubuntu ou <strong>perl-PDF-API2</strong> no RHEL/CentOS/Fedora).</p>
<p>Arquivo <strong>split_pdf.pl</strong>:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code><em><span style="color:#808080;">#!/usr/bin/env perl</span></em><br />
<strong>use strict</strong>; <strong>use warnings</strong>;<br />
<strong>use</strong> PDF::API2;</code></p>
<p><code><strong>my</strong> <span style="color:#0000ff;">$filename</span> = <span style="color:#0000ff;"><strong>shift</strong></span> || <span style="color:#ff0000;">'test.pdf'</span>;<br />
<strong>my</strong> <span style="color:#0000ff;">$oldpdf</span> = PDF::API2-&gt;<strong><span style="color:#0000ff;">open</span></strong>($filename);<br />
<strong>my</strong> <span style="color:#0000ff;">$newpdf</span> = PDF::API2-&gt;<strong><span style="color:#0000ff;">new</span></strong>;</code></p>
<p><code><strong>for my</strong> <span style="color:#0000ff;">$page_nb</span> (1..<span style="color:#0000ff;">$oldpdf</span>-&gt;pages) {<br />
&nbsp;&nbsp;<strong>my</strong> (<span style="color:#0000ff;">$page</span>, <span style="color:#0000ff;">@cropdata</span>);</code></p>
<p><code><br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span> = <span style="color:#0000ff;">$newpdf</span>-&gt;importpage(<span style="color:#0000ff;">$oldpdf</span>, <span style="color:#0000ff;">$page_nb</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">@cropdata</span> = <span style="color:#0000ff;">$page</span>-&gt;get_mediabox;<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$cropdata</span>[2] /= 2;<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;cropbox(<span style="color:#0000ff;">@cropdata</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;trimbox(<span style="color:#0000ff;">@cropdata</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;mediabox(<span style="color:#0000ff;">@cropdata</span>);</code></p>
<p><code><br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span> = <span style="color:#0000ff;">$newpdf</span>-&gt;importpage(<span style="color:#0000ff;">$oldpdf</span>, <span style="color:#0000ff;">$page_nb</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">@cropdata</span> = <span style="color:#0000ff;">$page</span>-&gt;get_mediabox;<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$cropdata</span>[0] = <span style="color:#0000ff;">$cropdata</span>[2] / 2;<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;cropbox(<span style="color:#0000ff;">@cropdata</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;trimbox(<span style="color:#0000ff;">@cropdata</span>);<br />
&nbsp;&nbsp;<span style="color:#0000ff;">$page</span>-&gt;mediabox(<span style="color:#0000ff;">@cropdata</span>);<br />
}</code></p>
<p><code>(<strong>my</strong> <span style="color:#0000ff;">$newfilename</span> = <span style="color:#0000ff;">$filename</span>) =~ <span style="color:#ff0000;">s/(.*)\.(\w+)$/$1.clean.$2/</span>;<br />
<span style="color:#0000ff;">$newpdf</span>-&gt;saveas(<span style="color:#0000ff;">$newfilename</span>);</code></p>
<p><code><span style="color:#808080;"><em>__END__</em></span></code></div>
<p>Esse post foi baseado no post em <a href="http://snipplr.com/view/18924/split-crop-double-page-pdfs-in-two/" target="_blank">http://snipplr.com/view/18924/split-crop-double-page-pdfs-in-two/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=86&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2010/07/17/dividir-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>Como criar um repositório Git remoto usando o SSH</title>
		<link>http://skarllot.wordpress.com/2009/11/14/criar_git_remoto_ssh/</link>
		<comments>http://skarllot.wordpress.com/2009/11/14/criar_git_remoto_ssh/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 02:59:25 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=72</guid>
		<description><![CDATA[Abordarei a criação de um repositório Git remoto usando o SSH num ambiente Linux. Não incluirei detalhes da configuração do SSH. É necessário que os seguintes pacotes estejam instalados: git, openssh-server e openssh-client. Primeiro configure o SSH editando o arquivo /etc/ssh/sshd_config. Eu recomendo algumas configurações[1]: Protocol 2 # Permite apenas a versão 2 do protocolo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=72&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Abordarei a criação de um repositório Git remoto usando o SSH num ambiente Linux.<br />
Não incluirei detalhes da configuração do SSH.</p>
<p><span id="more-72"></span>É necessário que os seguintes pacotes estejam instalados: <strong>git</strong>, <strong>openssh-server</strong> e <strong>openssh-client</strong>.</p>
<p>Primeiro configure o SSH editando o arquivo <strong>/etc/ssh/sshd_config</strong>.<br />
Eu recomendo algumas configurações[1]:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>Protocol 2    <em># Permite apenas a versão 2 do protocolo (mais seguro)</em><br />
PermitRootLogin no    <em># Não permite login como root</em><br />
PasswordAuthentication no    <em># Não permite login por senha</em><br />
</code></div>
<p>Não esqueça de iniciar ou <strong>reiniciar</strong> o servidor SSH.</p>
<p>Agora é necessário criar um usuário para acesso ao Git através do SSH.<br />
Eu recomendo que o nome do usuário seja <strong>git</strong> e que seja criado com o seguinte comando[2]:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>useradd -r -m --shell /usr/bin/git-shell git</code></div>
<p>Definindo o shell do usuário para <strong>/usr/bin/git-shell</strong> o acesso do usuário será restrito aos comandos do Git[3].<br />
O diretório pessoal do usuário git será criado em <strong>/home/git</strong>.</p>
<p>Se você não tem uma chave para o SSH, crie-a com o comando <strong>ssh-keygen</strong> (usando seu usuário).<br />
Será criada uma chave pública e privada em <strong>~/.ssh</strong>, a chave pública tem o sufixo <strong>.pub</strong> (nunca compartilhe sua chave privada).<br />
Agora é necessário adicionar sua chave pública a lista de chaves autorizadas do usuário <strong>git</strong>, para isso faça o seguinte:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>mkdir /home/git/.ssh<br />
cat /home/seu_usuario/.ssh/id_rsa.pub &gt;&gt; /home/git/.ssh/authorized_keys</code></div>
<p>Supondo que o nome de sua chave pública seja <strong>id_rsa.pub</strong>.</p>
<p>Agora será necessário criar um repositório no diretório pessoal do usuário <strong>git</strong>.<br />
Para criar um repositório para o projeto <strong>ProjetoTeste</strong>, faça o seguinte:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>mkdir /home/git/ProjetoTeste<br />
cd /home/git/ProjetoTeste<br />
git init --bare</code></div>
<p>Agora é necessário garantir que tudo pertença ao usuário git, faça o seguinte:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>cd /home/git<br />
chown -R git.git <strong>.</strong>    <em># não esqueça do ponto no final</em><br />
</code></div>
<p>Isso é tudo.</p>
<p>Para clonar o repositório use o seguinte comando:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>git clone git@ip_do_servidor:ProjetoTeste</code></div>
<p><strong>Referência:</strong><br />
1- <a href="http://linux.die.net/man/5/sshd_config" target="_blank">http://linux.die.net/man/5/sshd_config</a> ou <strong>man 5 sshd_config</strong>.<br />
2- <a href="http://linux.die.net/man/8/useradd" target="_blank">http://linux.die.net/man/8/useradd</a> ou <strong>man 8 useradd</strong>.<br />
3- <a href="http://linux.die.net/man/1/git-shell" target="_blank">http://linux.die.net/man/1/git-shell</a> ou <strong>man 1 git-shell</strong>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=72&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/11/14/criar_git_remoto_ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>[Autotools] Internacionalização (I18n)</title>
		<link>http://skarllot.wordpress.com/2009/09/13/autotools-internacionalizacao-i18n/</link>
		<comments>http://skarllot.wordpress.com/2009/09/13/autotools-internacionalizacao-i18n/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 01:41:46 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[autotools]]></category>
		<category><![CDATA[getlocale]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[intltool]]></category>
		<category><![CDATA[intltoolize]]></category>
		<category><![CDATA[libintl]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=47</guid>
		<description><![CDATA[Explicarei como internacionalizar, ou seja, tornar um programa traduzível. Tomarei como exemplo o projeto hello-world do post anterior. Você pode baixar o pacote final do projeto do post anterior em http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.2.0.tar.gz. Será necessário as seguintes ferramentas: intltool e gettext. Adicione o seguinte código no arquivo configure.ac: # Checks for libraries. PKG_CHECK_MODULES([DEPS],[glib-2.0]) AC_SUBST(DEPS_CFLAGS) AC_SUBST(DEPS_LIBS) # ------------------------------------------------------------------------------ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=47&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Explicarei como <em><span style="color:#000000;">internacionalizar</span></em>, ou seja, tornar um programa traduzível.</p>
<p>Tomarei como exemplo o projeto hello-world do post anterior.</p>
<p><span id="more-47"></span></p>
<p>Você pode baixar o pacote final do projeto do post anterior em <a href="http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.2.0.tar.gz">http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.2.0.tar.gz</a>.</p>
<p>Será necessário as seguintes ferramentas:  intltool e gettext.</p>
<p>Adicione o seguinte código no arquivo configure.ac:</p>
<pre># Checks for libraries.<strong>
PKG_CHECK_MODULES([DEPS],[glib-2.0])
AC_SUBST(DEPS_CFLAGS)
AC_SUBST(DEPS_LIBS)</strong>

<strong># ------------------------------------------------------------------------------
# Internationalization
# ------------------------------------------------------------------------------
GETTEXT_PACKAGE=hello-world
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
 [the gettext translation domain])

AM_GLIB_GNU_GETTEXT
GLIB_DEFINE_LOCALEDIR(HELLO_WORLD_LOCALEDIR)

IT_PROG_INTLTOOL([0.35.1])</strong>

# ------------------------------------------------------------------------------
# Check OS-specific platform</pre>
<p><strong>PKG_CHECK_MODULES([DEPS], [glib-2.0])</strong>: Procura pela biblioteca <em>glib-2.0</em> e define as variáveis <em>DEPS_CFLAGS</em> e <em>DEPS_LIBS</em> (detalhes abaixo). Caso a biblioteca não seja encontrada é retornado um erro.</p>
<p><strong>AC_SUBST(DEPS_CFLAGS)</strong>: Faz com que <em>@DEPS_CFLAGS@</em> ou <em>$(DEPS_CFLAGS)</em>, nos arquivos de saída do autoconf, seja substituído pelo valor da variável.</p>
<p><strong>AC_SUBST(DEPS_LIBS)</strong>: O mesmo que o comando acima, mas com a variável <em>DEPS_LIBS</em>.</p>
<p><strong> </strong><strong>GETTEXT_PACKAGE=network-logger</strong>: Está sendo definida uma variável local.<strong></strong><strong> </strong></p>
<p><strong>AC_SUBST(GETTEXT_PACKAGE)</strong>: O mesmo que as macros <em>AC_SUBST</em> acima, mas com a variável <em>GETTEXT_PACKAGE</em>.</p>
<p><strong>AC_DEFINE_UNQUOTED</strong>: Igual a macro <em>AC_DEFINE</em> com o diferencial de expandir expressões de shell (ver &#8220;Definindo símbolos&#8221;). Define, no arquivo <em>config.h</em>, o símbolo GETTEXT_PACKAGE com o valor da variável GETTEXT_PACKAGE.</p>
<p><strong>AM_GLIB_GNU_GETTEXT</strong>: Faz verificações se o gettext pode ser usado, define o símbolo <em>HAVE_GETTEXT</em> no arquivo <em>config.h</em> entre outros.</p>
<p><strong>GLIB_DEFINE_LOCALEDIR</strong>: Define o nome do símbolo que conterá o caminho do diretório de localização. É o caminho do diretório de onde os catálogos de mensagens de cada língua será instalado.</p>
<p><strong>IT_PROG_INTLTOOL</strong>: Faz verificações se o intltool pode ser usado e define a versão mínima necessária.</p>
<p>Ainda no arquivo <em>configure.ac</em> adicione o arquivo &#8220;po/Makefile.in&#8221; em <em>AC_CONFIG_FILES</em>. Desta maneira o arquivo <em>Makefile</em> que será criado no diretório <em>po</em> fará parte da compilação.</p>
<pre>AC_CONFIG_FILES([Makefile
    src/Makefile
    <strong>po/Makefile.in</strong>])</pre>
<p>Para que se possa fazer o uso da biblioteca <em>glib-2.0</em> é necessário indicar ao compilador onde achar os arquivos de cabeçalho e os objetos de ligação. Para isso é necessário modificar o arquivo <em>Makefile.am</em> como abaixo:</p>
<pre>bin_PROGRAMS = hello-world

hello_world_SOURCES = main.cpp
if OS_WIN32
hello_world_SOURCES += windowsdef.h
endif

<strong>hello_world_LDADD = $(DEPS_LIBS)
hello_world_CXXFLAGS = $(DEPS_CFLAGS)</strong></pre>
<p><strong>DEPS_LIBS</strong>: Variável com os caminhos para os objetos de ligação. Esses objetos têm a listagem e endereçamento de cada função.</p>
<p><strong>DEPS_CFLAGS</strong>: Variável com os caminhos para os arquivos de cabeçalho.</p>
<p>Crie o diretório <em>po</em> no diretório raíz do projeto, este diretório conterá os catálogos de cada língua.</p>
<p>Crie um arquivo vazio com o nome <em>LINGUAS</em>, neste arquivo será listado os códigos de cada idioma com suporte.</p>
<p>Crie um arquivo vazio com o nome <em>POTFILES.in</em>, neste arquivo será listado todos os arquivos com mensagens traduzíveis.</p>
<p>No arquivo <em>Makefile.am</em> do diretório raíz do projeto adicione o diretório <em>po</em> em <em>SUBDIRS</em>.</p>
<pre>SUBDIRS = src <strong>po</strong></pre>
<p>É necessário adicionar os scripts de internacionalização ao pacote de distribuição, para isso adicione o código  abaixo ao arquivo <em>Makefile.am</em> do diretório raíz.</p>
<pre>SUBDIRS = src po

<strong>INTLTOOL_FILES = \
 intltool-extract.in \
 intltool-merge.in \
 intltool-update.in

EXTRA_DIST = \
 $(INTLTOOL_FILES)

DISTCLEANFILES = intltool-extract \
    intltool-merge \
    intltool-update \
    po/.intltool-merge-cache</strong></pre>
<p><strong>INTLTOOL_FILES</strong>: Define uma variável com a lista de scripts usados pelo intltool.</p>
<p><strong>EXTRA_DIST</strong>: Define arquivos adicionais que serão adicionados ao pacote de distribuição.</p>
<p><strong>DISTCLEANFILES</strong>: Define os arquivos adicionais que serão removidos pelo comando &#8220;<em>make distclean</em>&#8220;.</p>
<p>Para atualizar os scripts com as mudanças execute o comando &#8220;<em>autoreconf</em>&#8220;.</p>
<p>Para preparar o projeto para o intltool, execute o comando &#8220;<em>intltoolize</em>&#8221; no diretório raíz do projeto.</p>
<p>Agora é necessário inicializar o <em>libintl</em> e marcar as strings como traduzíveis. Para isso modifique o arquivo <em>main.cpp</em> como a seguir:</p>
<pre><strong>#ifdef HAVE_CONFIG_H
#include &lt;config.h&gt;
#endif</strong>

#ifdef WINNT
#include "windowsdef.h"
#endif

#include &lt;iostream&gt;
<strong>#include &lt;glib/gi18n.h&gt;</strong>

int main()
{
  <strong>// Gettext initialization
  setlocale(LC_ALL, "");</strong>
<strong>  bindtextdomain(GETTEXT_PACKAGE, HELLO_WORLD_LOCALEDIR);
  bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
  textdomain(GETTEXT_PACKAGE);</strong>

  std::cout &lt;&lt; <strong>_(</strong>"Hello World!"<strong>)</strong> &lt;&lt; std::endl;
  return 0;
}</pre>
<p>Para usar os símbolos <em>GETTEXT_PACKAGE</em> e <em>HELLO_WORLD_LOCALEDIR</em> é necessário incluir o cabeçalho <em>config.h</em>.</p>
<p>O cabeçalho <em>gi18n.h</em> inclui o cabeçalho <em>libintl.h</em>, que contém as funções de internacionalização, e define símbolos comumente usados na internacionalização.</p>
<p>A função <em>getlocale()</em> define a localização atual que será usada pelo gettext.</p>
<p>A função <em>bindtextdomain()</em> define o caminho do catálogo de <em>GETTEXT_PACKAGE</em> para <em>HELLO_WORLD_LOCALEDIR</em>.</p>
<p>A função <em>bind_textdomain_codeset()</em> define a codificação das mensagens do catálogo de <em>GETTEXT_PACKAGE</em> para UTF-8.</p>
<p>A função <em>textdomain()</em> define o catálogo de mensagens padrão para <em>GETTEXT_PACKAGE</em>.</p>
<p>A função <em>_()</em> é um símbolo que foi definido pelo <em>gi18n.h</em> que é um apelido para a função <em>gettext()</em> do cabeçalho <em>libintl.h</em>.</p>
<p>Agora o projeto está pronto para ser traduzido (localizado).</p>
<p>O pacote final pode ser acessado neste link: <a href="http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.3.0.tar.gz" target="_blank">http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.3.0.tar.gz</a>.</p>
<p><strong>Referências:</strong></p>
<p>Definindo símbolos: <a href="http://www.gnu.org/software/hello/manual/autoconf/Defining-Symbols.html" target="_blank">http://www.gnu.org/software/hello/manual/autoconf/Defining-Symbols.html</a></p>
<p>Internacionalização: <a href="http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-internationalization.html" target="_blank">http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-internationalization.html</a></p>
<p>pkg-config: <a href="http://pkg-config.freedesktop.org/" target="_blank">http://pkg-config.freedesktop.org/</a></p>
<p>setlocale: <a href="http://www.opengroup.org/onlinepubs/009695399/functions/setlocale.html" target="_blank">http://www.opengroup.org/onlinepubs/009695399/functions/setlocale.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=47&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/09/13/autotools-internacionalizacao-i18n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>[Autotools] Identificando ambiente de destino</title>
		<link>http://skarllot.wordpress.com/2009/06/14/autotools-identificando-ambiente-de-destino/</link>
		<comments>http://skarllot.wordpress.com/2009/06/14/autotools-identificando-ambiente-de-destino/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 21:07:52 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[automake]]></category>
		<category><![CDATA[autotools]]></category>
		<category><![CDATA[mingw]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=41</guid>
		<description><![CDATA[Explicarei aqui como identificar qual o ambiente de destino de compilação, ou seja, o ambiente no qual será executado o binário. Para isso tomarei como exemplo o projeto hello-world do post anterior. Você pode baixar o pacote final do projeto do post anterior em http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.1.0.tar.gz. No arquivo configure.ac, é necessário adicionar a seguinte macro: AM_INIT_AUTOMAKE([1.9 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=41&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Explicarei aqui como identificar qual o ambiente de destino de compilação, ou seja, o ambiente no qual será executado o binário.</p>
<p>Para isso tomarei como exemplo o projeto hello-world do post anterior.</p>
<p><span id="more-41"></span></p>
<p>Você pode baixar o pacote final do projeto do post anterior em <a href="http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.1.0.tar.gz">http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.1.0.tar.gz</a>.</p>
<p>No arquivo <em>configure.ac</em>, é necessário adicionar a seguinte macro:</p>
<pre><span style="color:#888888;">AM_INIT_AUTOMAKE([1.9 -Wall -Werror])</span>

<strong># Check build environment
AC_CANONICAL_HOST</strong>

<span style="color:#888888;"># Checks for programs.</span></pre>
<p>Com essa macro serão criados os arquivos de script <em>config.guess</em> e <em>config.sub</em> que serão usados para identificar o ambiente de destino.</p>
<p>Serão definidas quatro variáveis de ambiente, que são: <em>host</em>, <em>host_cpu</em>, <em>host_vendor</em>, <em>host_os</em>. Com essas variáveis é possível condicionar a compilação para cada ambiente.</p>
<p>Caso o ambiente de destino seja o MinGW de 32 bits para PC, normalmente, a variável <em>host</em> teria o valor <em>i686-pc-mingw32</em> e como consequência as variáveis <em>host_cpu</em>, <em>host_vendor</em> e <em>host_os</em> teriam os valores <em>i686</em>, <em>pc</em> e <em>mingw32</em> respectivamente. Assim podemos dizer que &#8220;host=$host_cpu-$host_vendor-$host_os&#8221;.</p>
<p>Criarei uma verificação para definir a variável <em>OS_WIN32</em> caso a variável <em>host_os</em> tenha a palavra &#8220;mingw&#8221;. Para isso adicionarei o seguinte script no arquivo <em>configure.ac</em>:</p>
<pre># ------------------------------------------------------------------------------
# Check OS-specific platform
# ------------------------------------------------------------------------------
AC_MSG_CHECKING([for native Win32])
case "$host_os" in
  *mingw*)
    iswin32=yes
  ;;
  *)
    iswin32=no
  ;;
esac
AC_MSG_RESULT([$iswin32])

AM_CONDITIONAL(OS_WIN32, [test "$iswin32" = "yes"])</pre>
<p>A macro <em>AC_MSG_CHECKING</em> faz imprimir na tela a mensagem &#8220;checking for native Win32&#8230;&#8221; indicando que está sendo feita a verificação por uma característica específica.</p>
<p>Em seguida é verificada a variável de ambiente pela palavra &#8220;mingw&#8221;, caso encontre a variável local <em>iswin32</em> será definida para o valor &#8220;yes&#8221;, senão para o valor &#8220;no&#8221; (Leia sobre <a href="http://aurelio.net/shell/" target="_blank">Bash</a>).</p>
<p>A macro <em>AC_MSG_RESULT</em> imprime na tela o resultado da última macro <em>AC_MSG_CHECKING</em>. Imprime &#8220;checking for native Win32&#8230; yes&#8221;, caso a variável <em>iswin32</em> tenha o valor &#8220;yes&#8221;.</p>
<p>A macro <em>AM_CONDITIONAL</em> de maneira condicional define ou não a variável <em>OS_WIN32</em> a qual será compartilhada a todos Makefiles. Caso a variável local <em>iswin32</em> tenha o valor &#8220;yes&#8221; a variável <em>OS_WIN32</em> será definida.</p>
<p>Adicionarei o seguinte conteúdo no arquivo <em>Makefile.am</em>:</p>
<pre><span style="color:#888888;">hello_world_SOURCES = main.cpp</span>
<strong>if OS_WIN32
hello_world_SOURCES += windowsdef.h
endif</strong></pre>
<p>Assim o arquivo <em>windowsdef.h</em> só será compilado caso esteja definida a variável <em>OS_WIN32</em>.</p>
<p>Criarei o arquivo <em>windowsdef.h</em> com o seguinte conteúdo:</p>
<pre>#ifndef _WINDOWSDEF_H
#define _WINDOWSDEF_H

#ifdef HAVE_CONFIG_H
#include &lt;config.h&gt;
#endif

#ifndef WINVER
// Windows Server 2003 with SP1, Windows XP with SP2
// See http://msdn.microsoft.com/en-us/library/aa383745.aspx
#define WINVER 0x0502
#endif /* WINVER */

#include &lt;windows.h&gt;

#endif    /* _WINDOWSDEF_H */</pre>
<p>Definindo a variável <em>WINVER</em> para o valor <em>0&#215;0502</em> estaremos limitando o executável ao Windows XP SP2 ou Windows Server 2003 SP1 no mínimo.</p>
<p>Adicionarei o seguinte conteúdo ao arquivo <em>main.cpp</em>:</p>
<pre><strong>#ifdef WINNT
#include "windowsdef.h"
#endif</strong>

<span style="color:#888888;">#include &lt;iostream&gt;</span></pre>
<p>O compilador só referenciará o arquivo windowsdef.h caso a variável WINNT esteja definida. A variável WINNT é definida automaticamente pelo compilador caso o mesmo esteja sendo executado em um ambiente do Windows NT.</p>
<p>Para consultar as variáveis automaticamente definidas pelo seu compilador execute o seguinte comando &#8220;gcc -E -dM &#8211; &lt; /dev/null | sort&#8221;, sendo que &#8220;| sort&#8221; é para ordenar a saída em ordem alfabética.</p>
<p>Com essas instruções já se tem o básico para construir um programa multi-plataforma.</p>
<p>O pacote final pode ser acessado neste link: <a href="http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.2.0.tar.gz">http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.2.0.tar.gz</a></p>
<p><strong>Referências:</strong></p>
<p><a href="http://www.gnu.org/software/hello/manual/autoconf/Canonicalizing.html" target="_blank">http://www.gnu.org/software/hello/manual/autoconf/Canonicalizing.html</a></p>
<p><a href="http://www.gnu.org/software/hello/manual/autoconf/Printing-Messages.html" target="_blank">http://www.gnu.org/software/hello/manual/autoconf/Printing-Messages.html</a></p>
<p><a href="http://www.gnu.org/software/hello/manual/automake/Usage-of-Conditionals.html" target="_blank">http://www.gnu.org/software/hello/manual/automake/Usage-of-Conditionals.html</a></p>
<p><a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html" target="_blank">http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html</a></p>
<p><a href="http://git.gnome.org/cgit/gtk+/tree/configure.in#n127" target="_blank">http://git.gnome.org/cgit/gtk+/tree/configure.in#n127</a></p>
<p><a href="https://svn.win.tue.nl/viewcvs/MCRL2/trunk/src/configure.ac?rev=808&amp;view=markup" target="_blank">https://svn.win.tue.nl/viewcvs/MCRL2/trunk/src/configure.ac?rev=808&amp;view=markup</a></p>
<p><a href="http://www.rtems.com/ml/rtems-users/1998/march/msg00046.html" target="_blank">http://www.rtems.com/ml/rtems-users/1998/march/msg00046.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=41&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/06/14/autotools-identificando-ambiente-de-destino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello World com Autotools</title>
		<link>http://skarllot.wordpress.com/2009/05/23/hello-world-com-autotools/</link>
		<comments>http://skarllot.wordpress.com/2009/05/23/hello-world-com-autotools/#comments</comments>
		<pubDate>Sat, 23 May 2009 20:23:36 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[autoconf]]></category>
		<category><![CDATA[automake]]></category>
		<category><![CDATA[autoreconf]]></category>
		<category><![CDATA[autoscan]]></category>
		<category><![CDATA[autotools]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=19</guid>
		<description><![CDATA[Para quem não conhece o Autotools, as ferramentas do mesmo têm o principal objetivo de fazer programas portáveis, possibilitando assim que o programa possa ser compilado em qualquer ambiente. Vou explicar como fazer um programa que exibe &#8220;Hello World!&#8221; no console configurado com Autotools. Não vou me ater a detalhes, ficando a cargo do leitor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=19&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para quem não conhece o Autotools, as ferramentas do mesmo têm o principal objetivo de fazer programas portáveis, possibilitando assim que o programa possa ser compilado em qualquer ambiente.</p>
<p>Vou explicar como fazer um programa que exibe &#8220;Hello World!&#8221; no console configurado com Autotools. Não vou me ater a detalhes, ficando a cargo do leitor pesquisar detalhadamente sobre as ferramentas.</p>
<p><span id="more-19"></span></p>
<p>Para continuar você precisará ter instalado as seguintes ferramentas: make, gcc-c++, autoconf e automake. Para Windows você precisará também do MinGW e do MSYS.</p>
<p>Vamos ao projeto:</p>
<p><strong>1-</strong> Primeiramente crie uma pasta para o projeto (<em>hello-world</em> por exemplo).</p>
<p><strong>2-</strong> Agora crie a pasta <em>src</em> (o nome é sua escolha), ela irá conter o código fonte do projeto.</p>
<p><strong>3-</strong> Crie o arquivo <em>main.cpp</em> dentro da pasta <em>src</em>, como o código abaixo.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>#include &lt;iostream&gt;</p>
<p>int main()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; "Hello World!" &lt;&lt; std::endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
}</code></div>
<p><strong>4-</strong> Dentro da pasta raíz do projeto crie o arquivo <em>Makefile.am</em>, com o conteúdo abaixo.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>SUBDIRS = src</code></div>
<p>Os arquivos <em>Makefile.am</em> têm instruções de compilação, mais especificamente, instruções para o comando <em>make</em>.<br />
No caso deste arquivo, ele indica que deve ser pesquisado o diretório <em>src</em>.</p>
<p><strong>5-</strong> Agora crie outro arquivo <em>Makefile.am</em> no diretório <em>src</em>, com o seguinte conteúdo:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>bin_PROGRAMS = hello-world</p>
<p>hello_world_SOURCES = main.cpp</code></div>
<p>A primeira linha indica quais são os nomes dos programa executáveis.<br />
A segunda linha indica quais são os arquivos fontes do programa hello-world. Observe que todos os caracteres não alfabéticos devem der substituídos por &#8220;_&#8221;, como em <em>hello_world</em>.</p>
<p><strong>6-</strong> Agora precisamos criar o arquivo <em>configure.ac</em> (no diretório raíz do projeto, daqui em diante iremos trabalhar apenas no diretório raíz), que irá conter as configurações do projeto, como nome, versão e dependências do projeto entre outros.<br />
Para criar um arquivo <em>configure.ac</em> preliminar execute o comando abaixo.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ autoscan</code></div>
<p>Serão criados os arquivos <em>configure.scan</em> e <em>configure.log</em>, sendo que o configure.scan é o configure.ac preliminar e o configure.log contém os erros encontrados.<br />
Renomeie o arquivo <em>configure.scan</em> para <em>configure.ac</em>. O arquivo <em>configure.log</em> pode ser excluído.</p>
<p><strong>7-</strong> Modifique o arquivo <em>configure.ac</em> como abaixo.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>#                                               -*- Autoconf -*-<br />
# Process this file with autoconf to produce a configure script.</p>
<p>AC_PREREQ([2.54])<br />
AC_INIT([Hello World], [0.1.0], [myemail@server.com], [hello-world])<br />
AC_CONFIG_SRCDIR([src])<br />
AC_CONFIG_HEADERS([config.h])<br />
AM_INIT_AUTOMAKE([1.9 -Wall -Werror])</p>
<p># Checks for programs.<br />
AC_PROG_CXX</p>
<p># Checks for libraries.</p>
<p># Checks for header files.</p>
<p># Checks for typedefs, structures, and compiler characteristics.</p>
<p># Checks for library functions.</p>
<p>AC_CONFIG_FILES([Makefile<br />
                src/Makefile])<br />
AC_OUTPUT</code></div>
<p><strong>AC_PREREQ</strong>: A versão mínima necessária do <em>autoconf</em>, geralmente é a versão 2.54.<br />
<strong>AC_INIT</strong>: Define o nome e versão do projeto, endereço para relatar erros e o nome do pacote do projeto.<br />
<strong>AC_CONFIG_SRCDIR</strong>: Define a pasta que contém o código fonte.<br />
<strong>AC_CONFIG_HEADERS</strong>: Define o nome do arquivo de definições do projeto, é recomendável deixar o padrão.<br />
<strong>AM_INIT_AUTOMAKE</strong>: É necessário para fazer uso dos <em>Makefile.am</em>. Define a versão mínima do <em>automake</em> e as opções <em>-Wall</em> e <em>-Werror</em> definem respectivamente que devem ser mostrados todos os alertas e que todos os alertas devem ser tratados como erros.<br />
<strong>AC_PROG_CXX</strong>: Verifica e exige o compilador C++ para o projeto.<br />
<strong>AC_CONFIG_FILES</strong>: Define os locais dos arquivo <em>Makefile</em> do projeto.<br />
<strong>AC_OUTPUT</strong>: Macro que executa a saída do <em>autoconf</em>.</p>
<p><strong>8-</strong> É necessário executar os comandos <em>aclocal</em>, <em>autoconf</em>, <em>autoheader</em> e <em>automake</em> para gerar o script de configuração do projeto, mas para facilitar há o comando <em>autoreconf</em> que executa todos os comandos necessários.<br />
Inicialmente iremos executar o comando abaixo para que os arquivos iniciais necessários sejam criados.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ autoreconf --install</code></div>
<p>Serão criados vários arquivos, sendo que o arquivo <em>INSTALL</em> contém instruções de instalação e configuração e o arquivo <em>COPYING</em> contém a licença do programa.</p>
<p>O automake exige os arquivos <em>NEWS</em>, <em>README</em>, <em>AUTHORS</em> e <em>ChangeLog</em>. Inicialmente crie-os vazios.</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ touch NEWS README AUTHORS ChangeLog</code></div>
<p><strong>9-</strong> Execute o comando <em>autoreconf</em> e será gerado o script de configuração do projeto novamente, agora sem erros com o  automake.</p>
<p><strong>10-</strong> Execute o script <em>./configure</em> para configurar o projeto.</p>
<p><strong>11-</strong> Execute o comando <em>make</em> para compilar o projeto.</p>
<p><strong>12-</strong> Teste o executável do projeto:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ src/hello-world</code></div>
<p><strong>13-</strong> Para criar um pacote do projeto execute o seguinte comando:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ make dist</code></div>
<p>E será criado um pacote distribuível para outros que queiram compilar o projeto.</p>
<p>Para que além de ser criado o pacote o mesmo seja testado, execute o seguinte comando:</p>
<div style="border:1px solid #808080;background-color:#f0f0f0;padding:8px;"><code>$ make distcheck</code></div>
<p>Pronto, é isso.</p>
<p>Aqui só é mostrado o básico necessário para começar a usar o Autotools, as possibilidades vão muito além destas explicadas.<br />
O pacote final pode ser acessado neste link: <a href="http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.1.0.tar.gz">http://dl.getdropbox.com/u/1671797/Blog/hello-world-0.1.0.tar.gz</a></p>
<p><strong>Referências:</strong><br />
Manual do autoconf: <a href="http://www.gnu.org/software/autoconf/manual/index.html" target="_blank">http://www.gnu.org/software/autoconf/manual/index.html</a><br />
Manual do automake: <a href="http://www.gnu.org/software/automake/manual/index.html" target="_blank">http://www.gnu.org/software/automake/manual/index.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=19&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/05/23/hello-world-com-autotools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>Network Traffic (antigo Network Logger)</title>
		<link>http://skarllot.wordpress.com/2009/05/21/network-logger/</link>
		<comments>http://skarllot.wordpress.com/2009/05/21/network-logger/#comments</comments>
		<pubDate>Thu, 21 May 2009 03:05:37 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://skarllot.wordpress.com/?p=7</guid>
		<description><![CDATA[Agora irei falar um pouco sobre o projeto que está sendo a base de meus estudos. O objetivo do projeto é gravar a quantidade de tráfego de rede diariamente, ou seja, ficará salvo a quantidade de bytes que saíram e entraram de uma determinada interface de rede. Com essas informações é possível saber o quanto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=7&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Agora irei falar um pouco sobre o projeto que está sendo a base de meus estudos.</p>
<p>O objetivo do projeto é gravar a quantidade de tráfego de rede diariamente, ou seja, ficará salvo a quantidade de bytes que saíram e entraram de uma determinada interface de rede. Com essas informações é possível saber o quanto foi consumido em um dia, semana, mês, ano etc.</p>
<p><span id="more-7"></span></p>
<p>A ideia do projeto veio quando assinei um serviço de banda larga que restringia o tráfego de entrada e saída mensal. O projeto inicial se chamava GS Network Monitor que era escrito em C# e apesar dos vários bugs está relativamente funcional, a última versão lançada em 2006. E acredito que o mesmo tenha apenas um usuário ativo, nem eu o uso mais pois o mesmo só funciona no ambiente Windows, que não é meu ambiente principal a um bom tempo.</p>
<p>Desde de 2006 eu não modifiquei mais nada do projeto GS Network Monitor, só agora estou tendo a idéia de desenvolvê-lo do zero em C++ e multiplataforma, mas com o nome modificado para <del datetime="2010-07-18T04:21:36+00:00">Network Logger</del> Network Traffic. Não sei se é um bom nome, só sei que é melhor do que Network Monitor. Se alguém tiver uma idéia de nome melhor irei analisá-la com prazer.</p>
<p>Comecei a trabalhar no <del datetime="2010-07-18T04:21:36+00:00">Network Logger</del> Network Traffic no dia 25 de Março de 2009 (data do meu primeiro envio ao repositório <a href="http://subversion.tigris.org/" target="_blank">SVN</a>) e já estou na revisão 37 com aproximadamente 748 linhas de código C/C++ (dados do <a href="http://www.ohloh.net/" target="_blank">ohloh</a>).</p>
<p>Atualmente é exibido a quantidade de bytes que saíram e entraram entre outras informações da interface de rede, isso tudo no console e funcionando tanto no Linux quanto no Windows. A interface gráfica está começando ainda, apenas é exibida uma janela com dados estáticos.</p>
<p>Mesmo estando pouco tempo trabalhando no projeto já aprendi muitas coisas, das quais quero compartilhar neste blog. Tudo depende do meu tempo.</p>
<p><del datetime="2010-07-18T04:21:36+00:00">Página do projeto: <a href="http://network-logger.googlecode.com/" target="_blank">http://network-logger.googlecode.com/</a></del><br />
Página do projeto: <a href="http://github.com/skarllot/network-traffic" target="_blank">http://github.com/skarllot/network-traffic</a><br />
<del datetime="2010-07-18T04:21:36+00:00">Página de discussão do projeto: <a href="http://groups.google.com/group/network-logger" target="_blank">http://groups.google.com/group/network-logger</a></del><br />
<del datetime="2010-07-18T04:21:36+00:00">Página com dados de análise do projeto: <a href="http://www.ohloh.net/p/network-logger" target="_blank">http://www.ohloh.net/p/network-logger</a></del><br />
Página com dados de análise do projeto: <a href="http://www.ohloh.net/p/network-traffic" target="_blank">http://www.ohloh.net/p/network-traffic</a><br />
<del datetime="2010-07-18T04:21:36+00:00">Repositório do projeto: http://network-logger.googlecode.com/svn/trunk/</del><br />
Repositório do projeto: git://github.com/skarllot/network-traffic.git</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=7&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/05/21/network-logger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
		<item>
		<title>Apresentação</title>
		<link>http://skarllot.wordpress.com/2009/05/20/apresentacao/</link>
		<comments>http://skarllot.wordpress.com/2009/05/20/apresentacao/#comments</comments>
		<pubDate>Wed, 20 May 2009 03:23:27 +0000</pubDate>
		<dc:creator>Fabrício Godoy</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Olá a todos. Estou iniciando esse blog com a intenção de descrever minhas experiências com C++, gtkmm, Autotools e MinGW. Meu primeiro projeto que usa essas ferramentas é o network-logger network-traffic (darei mais detalhes sobre o mesmo em breve), o qual será a principal fonte de minhas experiências. Meu ambiente de trabalho é o Fedora [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=1&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá a todos.</p>
<p>Estou iniciando esse blog com a intenção de descrever minhas experiências com C++, gtkmm, Autotools e MinGW.</p>
<p>Meu primeiro projeto que usa essas ferramentas é o <del datetime="2010-07-18T04:17:49+00:00"><a title="Projeto Network Logger" href="http://network-logger.googlecode.com" target="_blank">network-logger</a></del> <a title="Projeto Network Traffic" href="http://github.com/skarllot/network-traffic" target="_blank">network-traffic</a> (darei mais detalhes sobre o mesmo em breve), o qual será a principal fonte de minhas experiências.</p>
<p>Meu ambiente de trabalho é o <a href="http://fedoraproject.org/" target="_blank">Fedora 10</a>, <a href="http://br.gnome.org/" target="_blank">GNOME</a>, <a href="http://projects.gnome.org/gedit/" target="_blank">gedit</a>, <a href="http://www.netbeans.org/" target="_blank">NetBeans 6.5</a> e <a href="http://www.mingw.org/" target="_blank">MinGW</a>. Graças ao <a href="http://fedoraproject.org/wiki/SIGs/MinGW" target="_blank">grupo de projeto</a> de compilação cruzada com o MinGW do Fedora eu consigo compilar para o Windows facilmente mesmo estando num ambiente Linux.</p>
<p>Espero que com este blog eu consiga passar informações úteis aos interessandos no assunto, ao menos aos que estão iniciando :).</p>
<p>Até breve!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skarllot.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skarllot.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skarllot.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skarllot.wordpress.com&amp;blog=7822352&amp;post=1&amp;subd=skarllot&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skarllot.wordpress.com/2009/05/20/apresentacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea497b1757f8a314e1ce2be769aa2f?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">skarllot</media:title>
		</media:content>
	</item>
	</channel>
</rss>
