<?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>PABINHO</title>
	<atom:link href="http://pablodurans.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pablodurans.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 04 Dec 2009 00:07:37 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='pablodurans.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/aaa48f5f50b3ab42c4caace852fe3965?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>PABINHO</title>
		<link>http://pablodurans.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://pablodurans.wordpress.com/osd.xml" title="PABINHO" />
		<item>
		<title>Pegando o IP e a porta do canal no JGroups</title>
		<link>http://pablodurans.wordpress.com/2009/12/03/pegando-o-ip-e-a-porta-do-canal-no-jgroups/</link>
		<comments>http://pablodurans.wordpress.com/2009/12/03/pegando-o-ip-e-a-porta-do-canal-no-jgroups/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:57:10 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=24</guid>
		<description><![CDATA[Durante um trabalho da cadeira Sistemas Distribuídos, necessitei em um momento obter o IP e a Porta em que o canal estava aberto. A primeira vista achei que fosse fácil, afinal, minha aplicação foi quem criou o canal, eu podia ter essa informação em algum lugar, mas após uma analise, verifiquei 2 coisas:
- Minha maquina [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=24&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="_mcePaste">Durante um trabalho da cadeira Sistemas Distribuídos, necessitei em um momento obter o IP e a Porta em que o canal estava aberto. A primeira vista achei que fosse fácil, afinal, minha aplicação foi quem criou o canal, eu podia ter essa informação em algum lugar, mas após uma analise, verifiquei 2 coisas:</div>
<div>- Minha maquina pode ter mais de uma interface de rede, em qual será que o canal foi criado?</div>
<div>- Passo para o JGroups uma porta preferencial, mas caso ela esteja em uso, ele abrirá o canal em outra porta</div>
<div>Procurei por metodos no canal que me indicassem o IP, não achei, depois de muito fuçar, encontrei uma maneira até profissional de obter isso. O codigo simples está mostrado abaixo(exemplo para canal usando TCP):</div>
<div>
<div>
<p style="margin:0;">
<p style="text-align:center;margin:0;"><a href="http://pablodurans.files.wordpress.com/2009/12/codigo.png"><img class="size-medium wp-image-28 aligncenter" title="codigo" src="http://pablodurans.files.wordpress.com/2009/12/codigo.png?w=450&#038;h=48" alt="" width="450" height="48" /></a></p>
<p style="font-family:Calibri;font-size:11pt;margin:0;">
</div>
</div>
<div>Onde gameChannel é um Channel.</div>
<div>Para quem quiser entender o codigo, quem realmente tem conhecimento das informações da rede são os protocolos de transporte(TCP ou UDP). Logo é só encontra-los na pilha de protocolos e depois só pegar o ip e a porta pelos metodos acima.</div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=24&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2009/12/03/pegando-o-ip-e-a-porta-do-canal-no-jgroups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>

		<media:content url="http://pablodurans.files.wordpress.com/2009/12/codigo.png?w=300" medium="image">
			<media:title type="html">codigo</media:title>
		</media:content>
	</item>
		<item>
		<title>Editando pdfs com PDF-JAM</title>
		<link>http://pablodurans.wordpress.com/2009/11/12/editando-pdfs-com-pdf-jam/</link>
		<comments>http://pablodurans.wordpress.com/2009/11/12/editando-pdfs-com-pdf-jam/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:50:24 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=20</guid>
		<description><![CDATA[O pdf-jam é um pacote de comandos na linha de comando do linux que fazem edições simples em pdfs. Ele vem com 3 comandos:
pdfjoin
faz concatenação de um ou mais pdf&#8217;s, a forma simples de usar é:
$ pdfjoin file1.pdf file2.pdf &#8230; &#8211;outfile file_result.pdf
pdf90
rotaciona em 90 graus um arquivo pdf, forma simples de usar é:
$pdf90 file.pdf
Isso vai [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=20&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>O pdf-jam é um pacote de comandos na linha de comando do linux que fazem edições simples em pdfs. Ele vem com 3 comandos:</p>
<p><strong>pdfjoin</strong></p>
<p>faz concatenação de um ou mais pdf&#8217;s, a forma simples de usar é:</p>
<p>$ pdfjoin file1.pdf file2.pdf &#8230; &#8211;outfile file_result.pdf</p>
<p><strong>pdf90</strong></p>
<p>rotaciona em 90 graus um arquivo pdf, forma simples de usar é:</p>
<p>$pdf90 file.pdf</p>
<p>Isso vai criar um arquivo file-rotated.pdf</p>
<p><strong>pdfnup</strong></p>
<p>tem como função principal juntar uma serie de paginas em uma só(em forma de grid),  mas também pode ser usado para incluir só algumas paginas no arquivo resultante. Uma forma simples de usar é:</p>
<p>pdfnup file.pdf &#8211;nup 3&#215;2 &#8211;pages 1,4,7-10</p>
<p>Isto vai gerar um pdf com 6 paginas(3&#215;2) com as paginas 1,4,7,8,9,10</p>
<p>Para mais informações:</p>
<p><a href="http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam">http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=20&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2009/11/12/editando-pdfs-com-pdf-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
		<item>
		<title>Traduções no seu gmail ou gtalk</title>
		<link>http://pablodurans.wordpress.com/2009/06/04/traducoes-no-seu-gmail-ou-gtalk/</link>
		<comments>http://pablodurans.wordpress.com/2009/06/04/traducoes-no-seu-gmail-ou-gtalk/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 18:28:55 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=18</guid>
		<description><![CDATA[Quem nunca teve dificuldades com inglês e não conseguiu um dicionário de inglês.
Na internet possui varios tradutores, mas nenhum que esteja aberto quase sempre. Mas isso foi antes do google criar os boot de tradução do gtalk. É fácil ter, basta adicionar pt2en@bot.talk.google.com e en2pt@bot.talk.google.com
a sua lista de contatos e pronto, tudo que você manda [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=18&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Quem nunca teve dificuldades com inglês e não conseguiu um dicionário de inglês.</p>
<p>Na internet possui varios tradutores, mas nenhum que esteja aberto quase sempre. Mas isso foi antes do google criar os boot de tradução do gtalk. É fácil ter, basta adicionar pt2en@bot.talk.google.com e en2pt@bot.talk.google.com<br />
a sua lista de contatos e pronto, tudo que você manda pra eles, eles mandam de volta traduzido.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=18&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2009/06/04/traducoes-no-seu-gmail-ou-gtalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
		<item>
		<title>Auto Complet Terminal Ubuntu</title>
		<link>http://pablodurans.wordpress.com/2009/06/04/auto-complet-terminal-ubuntu/</link>
		<comments>http://pablodurans.wordpress.com/2009/06/04/auto-complet-terminal-ubuntu/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 17:35:11 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=14</guid>
		<description><![CDATA[Qualquer shell linux possui um habilidade bastante útil que é completar os comandos quando apertamos em &#60;TAB&#62;, então o restante do comando pode ser completado com um comando que esteja no path ou com um arquivo que esteja na pasta atual.
No caso do ubuntu, alem de comandos e arquivos, ele também completa com interfaces de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=14&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Qualquer shell linux possui um habilidade bastante útil que é completar os comandos quando apertamos em &lt;TAB&gt;, então o restante do comando pode ser completado com um comando que esteja no path ou com um arquivo que esteja na pasta atual.</p>
<p>No caso do ubuntu, alem de comandos e arquivos, ele também completa com interfaces de rede, subcomandos alem de para alguns comandos, só completar com arquivos que sejam relevantes pro comando. Exemplo:</p>
<p>$ unzip &lt;Tab&gt; (Só completará com arquivos que tenham a extensão .zip)</p>
<p>Alguns comandos, embora conveniente, não possuem essa qualidade, um exemplo é o g++. No meu caso, só queria que ele completasse com arquivos de extensão cpp ou c .</p>
<p>Pesquisando onde provavelmente implementaria essas funções(o arquivo ~/.bashrc) encontrei que para isso ele executa o script /etc/bash_completion . Minha solução para adicionar esse conveniência ao g++ foi adicionar a seguinte linha nesse script.</p>
<p><em>complete -f -X &#8216;!*.@(cpp|c)&#8217; g++</em></p>
<p>Também poderia colocar esta linha no ~/.bashrc, mas colocando no /etc/bash_completion, todos os usuários herdaram essa função.</p>
<p>Quando você abrir o /etc/bash_completion você verá que comandos como unzip, xpdf, gunzip, entre outros também estarão lá. Assim você poderá alterar eles também, por isso, cuidado ao alterar esse arquivo(talvez por isso ele necesite de permissão de sudo)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=14&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2009/06/04/auto-complet-terminal-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
		<item>
		<title>Teclado Multimidia no Dynabook TX 980LSBB no linux</title>
		<link>http://pablodurans.wordpress.com/2008/12/10/teclado-multimidia-no-dynabook-tx-980lsbb-no-linux/</link>
		<comments>http://pablodurans.wordpress.com/2008/12/10/teclado-multimidia-no-dynabook-tx-980lsbb-no-linux/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 17:38:02 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[dynabook]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[teclado multimidia]]></category>
		<category><![CDATA[toshiba a100]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=10</guid>
		<description><![CDATA[Já tenho esse notebook a 2 anos e nunca tinha conseguido fazer com que o linux(especificamente o ubuntu) reconhecer alguma hotkey. Hoje, resolvi depois de tanto tempo, vê se havia alguma atualização para minha BIOS(provavelmente). Foi só eu atualizar a BIOS que baixei nesse site: http://cdgenp01.csd.toshiba.com/content/support/downloads/ta7i0v600.exe . Então as teclas responsáveis pelo player, luminosidade do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=10&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Já tenho esse notebook a 2 anos e nunca tinha conseguido fazer com que o linux(especificamente o ubuntu) reconhecer alguma hotkey. Hoje, resolvi depois de tanto tempo, vê se havia alguma atualização para minha BIOS(provavelmente). Foi só eu atualizar a BIOS que baixei nesse site: http://cdgenp01.csd.toshiba.com/content/support/downloads/ta7i0v600.exe . Então as teclas responsáveis pelo player, luminosidade do lcd e o mudo começaram a funcionar.</p>
<p>Eu sei que é um executavel que estou mandando baixar, mas percebam que o dominio é toshiba.com qualquer coisa, procurem isso pelo site http://www.csd.toshiba.com/cgi-bin/tais/support/jsp/modelContent.jsp?ct=DL&amp;os=&amp;category=&amp;moid=1358998&amp;rpn=PSAA8U&amp;modelFilter=A100-ST8211&amp;selCategory=3&amp;selFamily=1073768663&amp;selModel=1358998|PSAA8U# .</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=10&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2008/12/10/teclado-multimidia-no-dynabook-tx-980lsbb-no-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
		<item>
		<title>Implementando um pipe para Unix/Linux</title>
		<link>http://pablodurans.wordpress.com/2008/07/12/implementando-um-pipe-para-unixlinux/</link>
		<comments>http://pablodurans.wordpress.com/2008/07/12/implementando-um-pipe-para-unixlinux/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:59:59 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[Linguagem C]]></category>
		<category><![CDATA[Sistema Operacionais]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[pipe]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=4</guid>
		<description><![CDATA[Suponhamos que você deseja implementar seu proprio shell. Uma das tarefas mais difícil que você terá será para implementar o pipe.
Pipe é o redirecinamento da saída padrão de um programa para a entrada padrão de outro.[http://pt.wikipedia.org/wiki/Pipe]
Este Artigo demonstra como isso pode ser feito de um forma interativa(usando for, while ou do&#8230;while) e não recursiva.
Comunicar 2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=4&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Suponhamos que você deseja implementar seu proprio shell. Uma das tarefas mais difícil que você terá será para implementar o pipe.</p>
<p>Pipe é o redirecinamento da saída padrão de um programa para a entrada padrão de outro.[http://pt.wikipedia.org/wiki/Pipe]</p>
<p>Este Artigo demonstra como isso pode ser feito de um forma interativa(usando for, while ou do&#8230;while) e não recursiva.</p>
<h3>Comunicar 2 processos irmão</h3>
<p>A primeira coisa a se entender é como comunicar irmãos. Uma boa alternativa é criar um tunel no pai e os filhos herdaram esse tunel. Pra criar tunel, precisamos da chamada ao sistema chamada pipe. essa chamada ao sistema recebe um vetor de inteiro e depois de executada na posição 0 conterá um descritor de Stream que pode apenas ser lido e na posição 1 conterá um descritor onde pode-se escrever.</p>
<p><em>&#8230;<br />
int fd[2];<br />
pipe(fd);<br />
if(!fork()){<br />
close(fd[1]);<br />
&#8230;<br />
}<br />
else if(!fork()){<br />
close(fd[0]);<br />
&#8230;<br />
}</em></p>
<p><em><br />
else {close(fd[0]); close(fd[1]);}</em></p>
<p>Nesse caso o primeiro processo criado lerá o que o segundo escrever nesse tunel criado.</p>
<h3>Fazer pipe entre 2 processos irmãos</h3>
<p>No exemplo passado, apenas fizemos um tunel entre os processos, mas a comunicação ainda não é feita pela saida padrão para a entrada padrão. Para isso usaremos a função dup2 que é uma implementação da chamada ao sistema dup. A função dup2 recebe o identificador de 2 descritores e ela faz uma copia do primeiro no lugar do segundo.</p>
<p><em>&#8230;<br />
int fd[2];<br />
pipe(fd);<br />
if(!fork()){<br />
close(fd[1]);<br />
dub2(fd[0], 0);//0 é o identificador do fluxo STDIN<br />
}<br />
else if(!fork()){<br />
close(fd[0]);<br />
dub2(fd[1], 1);//1 é o identificador do fluxo STDOUT<br />
&#8230;<br />
}<br />
else{close(fd[0]); close(fd[1]);}</em></p>
<p>Neste caso, o primeiro processo lerá através da entrada padrão a saida padrão do segundo processo.</p>
<h3>Fazer pipe entre n processos</h3>
<p>Já conseguimos fazer o pipe entre 2 processos, mas muitas vezes precisamos fazer pipes entre vários processos, um exemplo é:</p>
<p>$ cat arquivo | grep palavra | sort  | more</p>
<p>Nesse exemplo ele mostrará na tela todas as linhas do arquivo que contenha um certa palavra, de forma ordenada e com pausas quando a tela estiver cheia.</p>
<p>Isso só prova a necessidade de uma interação no código. Abaixo mostro o código onde consegui fazer isso.</p>
<p><em> int fd[2];//contem os tuneis<br />
int past;//contem a saida do tunel anterior<br />
int i=0;</em></p>
<p><em>for(; i&lt;cmd.size()-1; i++){<br />
pipe(fd);//cria o tunel que é herdado pelo filho<br />
if(!fork()){//para o novo processo<br />
if(i!=0){//se não for o primeiro comando<br />
dup2(past, 0);//recebe como entrada a saida do tunel passado<br />
}</em></p>
<p><em> dup2(fd[1], 1);//a saida vai para o novo tunel</em></p>
<p><em> execvp(cmd[i][0],cmd[i]);//especializa o novo processo<br />
}<br />
close(fd[1]);//fecha o tunel para o pai<br />
if(i!=0) close(past);//fecha o tunel passado para o pai<br />
past = fd[0];//o tunel atual agora é o passado<br />
}</em></p>
<p><em>if(!fork()){//executado para o ultimo processo<br />
if(i!=0){//se ele tb não for o primeiro<br />
dup2(past, 0);//coloca a entrada para a saida do tunel<br />
}<br />
execvp(cmd[i][0],cmd[i]);//especializa este processo<br />
}</em></p>
<p>Obs: cmd é um vector de arrays de arrays de characters(Declaração vector&lt;**char&gt; ou vector&lt;char[] [] &gt; )</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/pablodurans.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/pablodurans.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=4&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2008/07/12/implementando-um-pipe-para-unixlinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalar VMWare no kernel 2.6.24-18-generic</title>
		<link>http://pablodurans.wordpress.com/2008/06/09/instalar-vmware-no-kernel-2624-18-generic/</link>
		<comments>http://pablodurans.wordpress.com/2008/06/09/instalar-vmware-no-kernel-2624-18-generic/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 18:52:55 +0000</pubDate>
		<dc:creator>pablodurans</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://pablodurans.wordpress.com/?p=3</guid>
		<description><![CDATA[Quando passei do Ubuntu 7.10 para o 8.04, acabou que o kernel tb foi atualizado, e depois disso, não consegui mais instalar o VMWare, coisa que eu já tinha feito do ubuntu 7.10.
O erro que aparecia era:
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmmon-only&#8217;
make -C /lib/modules/2.6.24-16-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-16-generic&#8217;
CC [M]  /tmp/vmware-config0/vmmon-only/linux/driver.o
CC [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=3&subd=pablodurans&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Quando passei do Ubuntu 7.10 para o 8.04, acabou que o kernel tb foi atualizado, e depois disso, não consegui mais instalar o VMWare, coisa que eu já tinha feito do ubuntu 7.10.</p>
<p>O erro que aparecia era:</p>
<p>Using 2.6.x kernel build system.<br />
make: Entering directory `/tmp/vmware-config0/vmmon-only&#8217;<br />
make -C /lib/modules/2.6.24-16-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules<br />
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-16-generic&#8217;<br />
CC [M]  /tmp/vmware-config0/vmmon-only/linux/driver.o<br />
CC [M]  /tmp/vmware-config0/vmmon-only/linux/hostif.o<br />
CC [M]  /tmp/vmware-config0/vmmon-only/common/comport.o<br />
CC [M]  /tmp/vmware-config0/vmmon-only/common/cpuid.o<br />
In file included from include/asm/bitops.h:2,<br />
from /tmp/vmware-config0/vmmon-only/./include/vcpuset.h:74,<br />
from /tmp/vmware-config0/vmmon-only/./include/modulecall.h:23,<br />
from /tmp/vmware-config0/vmmon-only/common/vmx86.h:18,<br />
from /tmp/vmware-config0/vmmon-only/common/hostif.h:18,<br />
from /tmp/vmware-config0/vmmon-only/common/cpuid.c:14:<br />
include/asm/bitops_32.h:9:2: error: #error only &lt;linux/bitops.h&gt; can be included directly<br />
make[2]: *** [/tmp/vmware-config0/vmmon-only/common/cpuid.o] Error 1<br />
make[1]: *** &#8211;_module_/tmp/vmware-config0/vmmon-only&#8211; Error 2<br />
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-16-generic&#8217;<br />
make: *** <a class="jive-link-external" href="http://vmmon.ko/">http://vmmon.ko</a> Error 2<br />
make: Leaving directory `/tmp/vmware-config0/vmmon-only&#8217;<br />
Unable to build the vmmon module.</p>
<p>Procurando nos foruns do vmware, acabei descobrindo uma maneira bem fácil de conseguir instalar o vmware.</p>
<p>_______________________________________________________________________</p>
<p>Primeiramente rode o instalador do vmware</p>
<p><strong>$ vmware-player-distrib/vmware-install.pl</strong></p>
<p>quando perguntar se você quer rodar o vmware-config.pl, ponha no.</p>
<p>Tem-se que agora alterar o arquivo vmmon-only/include/vcpuset.h dentro de  /usr/lib/vmware/modules/source/vmmon.tar . Execute os comandos a seguir(como super usuário).</p>
<p><strong>$ cd /tmp</strong></p>
<p><strong>$ cp /usr/lib/vmware/modules/source/vmmon.tar .</strong></p>
<p><strong>$ tar -xvvf vmmon.tar</strong></p>
<p>Editando o arquivo usando gedit(ou editor de sua preferencia)</p>
<p><strong>$gedit vmmon-only/include/vcpuset.h</strong></p>
<p>Altere a linha 74 colocando linux/bitops.h no lugar de asm/bitops.h</p>
<p>salve o arquivo e feche o editor.</p>
<p>Agora só falta subtituir pelo antigo, lembrando de salvar uma copia do antigo</p>
<p><strong>$ tar cvf vmmon.tar vmmon-only<br />
$ mv /usr/lib/vmware/modules/source/vmmon.tar /usr/lib/vmware/modules/source/vmmon.tar.orig<br />
$ cp vmmon.tar /usr/lib/vmware/modules/source</strong></p>
<p>agora entre no diretorio que você descompatou o instalador do VMware para rodar o vmware-config.pl .</p>
<p><strong>$ cd bin</strong></p>
<p><strong>$ ./vmware-config.pl </strong></p>
<p>Pronto, agora você tem o VMWare instalado na sua maquina.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/pablodurans.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/pablodurans.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pablodurans.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pablodurans.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pablodurans.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pablodurans.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pablodurans.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pablodurans.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pablodurans.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pablodurans.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pablodurans.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pablodurans.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pablodurans.wordpress.com&blog=3935540&post=3&subd=pablodurans&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pablodurans.wordpress.com/2008/06/09/instalar-vmware-no-kernel-2624-18-generic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6984aa777ff25090e30601e133361f98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pablodurans</media:title>
		</media:content>
	</item>
	</channel>
</rss>