<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/sbin/lsmod - Módulos para seu cérebro &#187; Programação</title>
	<atom:link href="http://www.lsmod.net/category/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lsmod.net</link>
	<description></description>
	<lastBuildDate>Mon, 16 Jan 2012 13:12:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>As diferentes formas de matar um programa</title>
		<link>http://www.lsmod.net/as-diferentes-formas-de-matar-um-programa/</link>
		<comments>http://www.lsmod.net/as-diferentes-formas-de-matar-um-programa/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 20:25:22 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Posix]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[sighup]]></category>
		<category><![CDATA[sigkill]]></category>
		<category><![CDATA[sigterm]]></category>
		<category><![CDATA[termination signal]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=481</guid>
		<description><![CDATA[Recentemente tive de explicar a um conhecido as diferenças entre matar um programa &#8220;graciosamente&#8221; e forçá-lo imediatamente a parar de funcionar. Pareceu uma guerra interminável. E é compreensível, uma vez que nem todos estão acostumados com a idéia de &#8220;pedir gentilmente&#8221; a um programa que se feche, ainda mais explicitando a forma como isso deve [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente tive de explicar a um conhecido as diferenças entre matar um programa &#8220;graciosamente&#8221; e forçá-lo imediatamente a parar de funcionar.</p>
<p>Pareceu uma guerra interminável. E é compreensível, uma vez que nem todos estão acostumados com a idéia de &#8220;pedir gentilmente&#8221; a um programa que se feche, ainda mais explicitando a forma como isso deve ser feito. Acredito que principalmente quem nunca desenvolveu algo na vida tem os maiores problemas aceitando esse conceito.</p>
<p>Imagine um (ou vários) processos do Postgres rodando. Você decide que ele é um gargalo no seu sistema, e você quer fechá-lo (crianças, não façam isso em casa&#8230;). Existe uma diferença <span style="color: #0000ff;">brutal</span> entre mandar um <strong>kill -9</strong> (sigkill) e um <strong>kill -3</strong> (sigquit).</p>
<p>Segue abaixo uma tabelinha de diferentes sinais, que eu chupinhei da <a href="http://en.wikipedia.org/wiki/Signal_%28computing%29">Wikipédia</a> e <a href="http://www.gnu.org/s/libc/manual/html_node/Termination-Signals.html">deste outro site</a>:<br />
<strong>
<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Sinal</th><th class="column-2">Número correspondente</th><th class="column-3">Descrição</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">SIGTERM</td><td class="column-2">15</td><td class="column-3">SIGTERM é o sinal padrão, usado para terminar um programa. Usar o comando kill sem especificar o sinal numérico no Linux irá usar SIGTERM por default.</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">SIGINT</td><td class="column-2">2</td><td class="column-3">SIGINT corresponde, no mundo dos mortais, à famosa combinação de Control+C. A aplicação decide, então, o que fazer com o sinal INT que recebeu. Em muitos casos (shell scripts, por exemplo) a aplicação é quebrada imediatamente. Noutros, porém, o tratamento do INT pode ser diferenciado - a aplicação pode decidir fechar suas conexões, por exemplo, antes de ser interrompida.</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">SIGQUIT</td><td class="column-2">3</td><td class="column-3">O sinal QUIT é o padrão para fechar aplicações não-responsivas "gentilmente". Ele é mais poderoso que o TERM, que muitas vezes simplesmente é incapaz de matar um processo. Este, porém, permite que o programa emita um core dump de sua operação, tornando possível a detecção de eventuais problemas.</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">SIGKILL</td><td class="column-2">9</td><td class="column-3">KILL é, definitivamente, o mais bruto dos sinais. Ele mata o processo independentemente das suas operações atuais. Não irá esperar por retornos, fechamento de conexões, dump de dados ou qualquer outro output. SIGKILL é usado para matar aplicações completamente não-responsivas, e deve ser usado com cautela, pois pode, no exemplo do banco de dados acima, corromper tabelas, índices, etc.</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">SIGHUP</td><td class="column-2">1</td><td class="column-3">HUP é usado para indicar desconexão de terminal, geralmente. Seja por uma queda na internet, ou telefonema, ou qualquer outro tipo de quebra de sinal. HUP é usado, por exemplo, numa sessão SSH com processos pendentes, quando de repente a conexão foi cortada.</td>
	</tr>
</tbody>
</table>
</strong></p>
<p>&nbsp;</p>
<p>A tabela com todos os sinais existentes e seus significados pode ser  encontrada no link para a Wikipedia, porém estes são os mais usados.</p>
<p>Todos devem ser usados de acordo com a situação, e devidamente tratados no código do programa. Dependendo da vontade do programador, pode-se interpretar os sinais para processar uma série de rotinas antes do término real da aplicação, e é importante respeitar o processo, sob pena de eventual perda de dados.<strong><br />
</strong></p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=481&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/as-diferentes-formas-de-matar-um-programa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nove características do veterano em Unix</title>
		<link>http://www.lsmod.net/nove-caracteristicas-do-veterano-em-unix/</link>
		<comments>http://www.lsmod.net/nove-caracteristicas-do-veterano-em-unix/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 17:39:51 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Posix]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=456</guid>
		<description><![CDATA[Característica número 1: Não usamos o sudo Da mesma forma como o caps lock desligado é lei para os moderados, sudo é coisa para os tímidos. Se nós precisamos fazer algo como root, nós então usamos su para root, e não esse lance sem sentido de sudo. Mais ainda: Nos sistemas Unix que forçam o [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Característica número 1: Não usamos o <span style="color: #ff0000;">sudo</span></strong><br />
Da mesma forma como o caps lock desligado é lei para os moderados, sudo é coisa para os tímidos. Se nós precisamos fazer algo como root, nós então usamos <span style="color: #0000ff;"><strong>su</strong></span> para root, e não esse lance sem sentido de <span style="color: #0000ff;"><strong>sudo</strong></span>. Mais ainda: Nos sistemas Unix que forçam o uso de sudo para todos os usuários, a primeira coisa que fazemos é <span style="color: #0000ff;"><strong>sudo su -,</strong></span> alteramos a senha de root para que possamos confortávelmente rodar<strong><span style="color: #0000ff;"> su -</span></strong> mais tarde. Usar exclusivamente o sudo é como jogar boliche com as proteções metálicas em uso &#8212; mais seguro, mas também faz você não pensar direito no que está fazendo.</p>
<p><strong>Característica número 2: Nós usamos <span style="color: #ff0000;">vi</span>, não emacs e definitivamente não pico ou nano</strong><br />
Todos sabemos que o emacs é muito querido por uma grande quantidade de administradores Unix, porém também sabemos que ele é o equivalente Unix ao Microsoft Word. <span id="more-456"></span>O vi &#8212; e implicitamente o vim &#8212; é a verdadeira ferramenta para os geeks veteranos em Unix que precisam de agilidade nas suas tarefas, e não querem se preocupar com o monte de coisas estranhas que vêm junto com o Emacs. O Emacs possui um jogo de Tetris embutido, pelo amor de Deus.</p>
<p>Podemos admitir grunhindo que recursos do vim como &#8220;code folding&#8221; e destaque de sintaxe de várias linguagens pode ser considerado &#8220;fofo&#8221; por alguns, mas no final do dia, tarefas de verdade no Unix combinam muito bem com os conceitos de edição modal do vi. Além disso, seu pequeno tamanho e portabilidade universal o transformam na melhor escolha de editor de textos. Obrigado Bill, obrigado Bram.</p>
<p><strong>Característica número 3: Nós empunhamos expressões regulares como armas</strong><br />
Para os leigos, mesmo o mais simples regex pode soar como digitação de bêbado. Para nós, porém, é a mais pura poesia. O poder representado na complexidade da pcre (Perl Compatible Regular Expressions) não pode ser vencido por outra ferramenta alguma.<br />
Se você precisar substituir todos os terceiros caracteres num arquivo de 100.000 linhas, exceto quando ele é sucedido pelo número 4, as expressões regulares não são apenas uma forma de ter o trabalho feito &#8211; elas são a única forma de conseguir isto. Aqueles que se recusam a aprender regex fazem a si mesmos e seus colegas um desserviço diário.<br />
Em todo grupo de usuários Unix de tamanho razoável você irá encontrar um ou dois &#8220;savants&#8221; em regex. Estes pobres coitados vivem recebendo sequencias de strings em seus emails, acompanhados por pedidos de regex para traduzí-las. Usualmente seguidos pela promessa de algumas cervejas, que nunca chegam a ser entregues.</p>
<p><strong>Característica número 4: Somos inerentemente preguiçosos</strong><br />
Quando alguém nos apresenta um problema que envolve muito trabalho manual e repetitivo, nós Unix de antigamente sempre iremos optar por escrever algum trecho de código que dê conta do recado. Isto normalmente toma menos tempo do que a opção manual, mas nem sempre. Porém isto não importa, nós sempre preferimos gastar estes minutos e horas construindo algo que poderá ser utilizado depois, ao invés de simplesmente consertar o problema imediatamente. Normalmente, isto nos rende bons momentos quando nos deparamos com um problema semelhante ao anterior alguns anos depois, e então poderemos simplesmente arrancar algumas centenas de linhas de Perl do nosso home directory, resolver o problema em questão de minutos, e tornar a resolver algum outro código. Ou então podemos jogar Angry Birds por mais tempo.</p>
<p><strong>Característica número 5: Nós preferimos soluções elegantes</strong><br />
Se existem diversas maneiras de consertar um problema ou alcançar uma meta, nós iremos optar por gastar mais tempo desenvolvendo uma solução que resolva o problema e previna que ele torne a acontecer, ao invés de simplesmente puxar o Band-Aid. Isto tem a ver com o fato de odiarmos voltar a um problema que já &#8220;marcamos como resolvido&#8221; em nossos cérebros. A moral da história é que, se podemos resolver um problema de uma vez por todas gastando um pouco mais de tempo hoje, o faremos, para que tenhamos menos dores de cabeça no futuro.</p>
<p><strong>Característica número 6: Nós geralmente assumimos que o problema está com a pessoa que faz a pergunta</strong><br />
Atingir um certo nível de expertise em Unix é ser extremamente confiante nas suas habilidades e conhecimentos. Isto significa que nós nunca pensamos que um problema existe até que possamos vê-lo pessoalmente. Falar para um veterano em Unix que um arquivo &#8220;simplesmente sumiu&#8221; vai resultar em zombaria na certa. <span style="color: #0000ff;"><strong>Prove</strong></span> para ele que aquilo realmente aconteceu, e você irá se deparar com alguém que irá mergulhar no problema incansávelmente, até que uma causa razoável e sua soluções sejam encontradas.<br />
Muitos podem achar que isso é um sinal de arrogância ou prepotência. E é, mas nós temos este direito.</p>
<p><strong>Característica número 7: Nós temos mais em comum com os médicos legistas do que com doutores</strong><br />
Quando lidamos com um problema muito grande, nós iremos gastar muito mais tempo no &#8220;pós-morte&#8221; do que com a solução do problema. A menos que a carga de trabalho absolutamente não nos permita gastar um tempinho com a investigação, nós precisamos saber a causa absoluta do problema. Não existe mágica no mundo do administrador <em>hardcore</em> de Unix; cada situação precisa partir de uma certa lógica e seguí-la nos moldes corretos. Ou seja, existe uma razão para tudo, e nós não vamos deixar pedra sobre pedra até a encontrarmos.</p>
<p>Para nós, é fácil estancar o sangramento mandando um HUP para um processo ou mudando permissões num arquivo ou diretório para 777, mas esta não é nem metade da história. Porque o processo precisou ser reiniciado ? Isto não deveria ser necessário normalmente, e nós precisamos saber o porque das coisas.</p>
<p><strong>Característica número 8: Nós sabemos mais de Windows do que deixamos transparecer</strong><br />
Apesar de não rodarmos Windows nos nossos computadores pessoais, e parecer que não nos importamos nem um pouco com servidores Windows, nós somos geralmente bastante capazes de diagnosticar e consertar problemas neste sistema. Isto porque nós precisamos lidar com estes problemas quando eles ultrapassam os limites e caem no nosso território.<br />
No entanto, nós geralmente não gostamos de demonstrar estas habilidades, porque o Windows não segue os mesmos fundamentos lógicos do Unix, e isto nos incomoda. Vide características 5 e 6 acima.</p>
<p><strong>Característica número 9: Reinicializar o sistema quase nunca é a solução</strong><br />
Servidores Unix não precisam de reboot. A menos que não haja absolutamente nenhuma outra opção, nós preferimos gastar horas e horas consertando um problema com um sistema online e funcional, do que reinicializá-lo. A moral da história é que não existe razão para um reboot a menos que precisamos efetuar mudanças no hardware, ou existe alguma atualização para o kernel que estejamos rodando. Reinicializar o servidor é apenas uma saída temporária para o problema. Se ele aconteceu uma única vez e foi &#8220;consertado&#8221; por um reboot, pode apostar que irá acontecer novamente. Nós preferimos consertá-lo já do que simplesmente puxar a tomada e esperar pela próxima ocorrência.</p>
<p>Se algumas dessas características parecerem anti-sociais ou difíceis de serem entendidas a partir da perspectiva de um leigo, é porque elas são. Onde alguns enxergam métodos super complicados ou intratáveis, nós vemos o caminho certo, oriundo de anos de aprendizado, experiência e, acima de tudo, lógica.</p>
<p>####</p>
<p>Este texto não foi escrito por mim. O original, de autoria de Paul Venezia, <a href="http://www.infoworld.com/print/151276">em inglês, se encontra neste endereço</a>, e honestamente, fica bem mais divertido no idioma original do que traduzido.</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=456&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/nove-caracteristicas-do-veterano-em-unix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O que eu levo na minha mochila !</title>
		<link>http://www.lsmod.net/o-que-eu-levo-na-minha-mochila/</link>
		<comments>http://www.lsmod.net/o-que-eu-levo-na-minha-mochila/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 02:40:55 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[milestone]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[zippo]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=351</guid>
		<description><![CDATA[Olá pessoal, Estou participando da promoção que o Augusto fez em um dos blogs dele, o Efetividade.net, e para isto eu precisava postar aqui uma foto da minha mochila, e de todo o conteúdo que carrego nela. Tem muita tranqueira, coisa útil e alguns lixos que eu sempre esqueço de tirar dela.. Acho que todas [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Estou participando da promoção que o Augusto fez em um dos blogs dele, o <a href="http://www.efetividade.net" target="_blank">Efetividade.net</a>, e para isto eu precisava postar aqui uma foto da minha mochila, e de todo o conteúdo que carrego nela.</p>
<p>Tem muita tranqueira, coisa útil e alguns lixos que eu sempre esqueço de tirar dela.. Acho que todas têm, né.. Roubar minha bolsa seria BEM pior do que roubar meu carro, podem apostar.</p>
<p>Se você também quiser participar, <a href="http://www.efetividade.net/2010/07/19/promocao-mochilas/">clique aqui e siga as regras</a> da promoção. É super simples, vai que você ganha um dos brindes divertidos que ele vai sortear ?</p>
<p>Bem, segue a foto da baderna &#8211; versão diminuta &#8211; pra não arruinar meu layout.</p>
<p><span id="more-351"></span></p>
<div id="attachment_352" class="wp-caption aligncenter" style="width: 630px"><a href="http://www.lsmod.net/wp-content/uploads/foto1.jpg"><img class="size-large wp-image-352" title="Minhas bugigangas" src="http://www.lsmod.net/wp-content/uploads/foto1-1024x574.jpg" alt="Lixos que carrego na minha bolsa" width="620" height="347" /></a><p class="wp-caption-text">Clique para ver a versão gigante!</p></div>
<p>Eu pretendia postar a foto no Flickr pra fazer uso daquelas tags legais que eles têm, mas não estou afim de criar uma conta no Yahoo. Vou descrever tudo de maneira simples mesmo:</p>
<p>Da esquerda pra direita tem:<br />
- O papelzinho indicando que não é fake <img src='http://www.lsmod.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
- Embaixo dele, um guarda-chuva. Fumar em locais descobertos tomando água na cabeça não é mole;<br />
- Uma chave de fenda com multiplas pontas (eu esqueci de abrir o compartimento..) e com a ponta imantada;<br />
- Pilhas normais, pilhas recarregáveis e o seu respectivo carregador;<br />
- Um HD externo <a href="http://www.wdc.com/en/products/Products.asp?DriveID=722">Western Digital</a> de 1 TB;<br />
- Um iPhone que eu uso basicamente pra jogar <a href="http://fieldrunners.com/">FieldRunners</a> e outros <a href="http://www.google.com.br/#hl=pt-BR&amp;source=hp&amp;q=tower+defense&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=&amp;fp=86b2353128d00a8f">TD&#8217;s básicos</a>, porque, por N razões, comprei um <a href="http://www.motorola.com/Consumers/BR-PT/Consumer-Product-Services/Mobile-Phones/ci.Motorola-MILESTONE-BR-PT.vertical">Milestone</a> pra substituí-lo..<br />
- Fluído extra pro meu <a href="http://www.zippo.com/index.aspx?bhcp=1">Zippo</a>, que adora ficar sem nas horas mais cruéis da vida;<br />
- O carregador, já com a extensão plugada, do meu Macbook Pro;<br />
- O cabinho do iPhone;<br />
- Cabo micro (ou mini, sei lá) USB pro Milestone e pro HD externo;<br />
- Um pendrive <a href="http://www.kingston.com/brasil/">DataTraveler</a> de 4gb e outro de 16gb mais pra direita;<br />
- O token de autenticação do Itaú;<br />
- Dorflex e Salompas &#8211; Solução fail para as dores constantes na nuca e tendinite por excesso de horas no computador <img src='http://www.lsmod.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /><br />
- Cabos cross e normal, de rede;<br />
- A apostila da <a href="http://www.caelum.com.br">Caelum</a>;<br />
- Caixa de fósforos, única coisa que nunca me deixa na mão;<br />
- Alguns canivetes que nunca preciso mas esqueço de tirar lá de dentro. E um isqueiro à gás normal;<br />
- O adaptador MiniDisplay Port do Macbook;<br />
- Adaptador de cabos de energia elétrica do <a href="http://www.siemens.com.br/templates/coluna1.aspx?channel=7425">padrão novo, e idiota, da ABNT</a>;<br />
- O Magic Mouse;<br />
- Mousepad do Slackware. Raramente o uso, mas carrego porque é leve e não custa nada;<br />
- <a href="http://www.livrariacultura.com.br/scripts/cultura/resenha/resenha.asp?nitem=3242301&amp;sid=01431861612727806965465532&amp;k5=FF31B3&amp;uid=">Livro para iniciantes</a> de como desenvolver apps pro Android. Um dia eu chego lá !<br />
- Guia de estudos pro <a href="http://www.amazon.com/Certified-Administrator-Solaris-310-200-310-202/dp/0072229594/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1280280262&amp;sr=8-2">SCSA</a> (certificação de segurança do Solaris);<br />
- Embaixo dos livros tem <a href="http://www.linuxmall.com.br/produto/suporte-ergonomico-para-notebook-14-a-17-.html">este suporte para laptops</a>. Evita um pouco a dor na nuca que sinto frequentemente;<br />
- Um frasco de álcool higienizador. Herança da paranóia da gripe H1N1, mas útil pra quando pego ônibus e fico com nojo das crianças passando as mãos sujas de Cheetos nas barras de segurança, bancos, e em todo o resto do veículo;<br />
- O Macbook Pro itself;<br />
- Fones de ouvido bluetooth da Nokia, que funcionam tanto no meu Android, quanto no PS3;<br />
- Meu <a href="http://pt.wikipedia.org/wiki/Dingoo">DINGOOOOO</a> !<br />
- GPS da Mio, aquela versão podre da Quatro Rodas que custa o triplo dos outros sem apresentar nada a mais por isso;<br />
- Um gadget chamado <a href="http://www.o2-cool.com/funfans_overview.php">O2 Cool</a>, chinês, (que surpresa..) que funciona com uma única pilha e faz um ventinho razoável, além de borrifar água. Muito bom pra usar no verão.</p>
<p>E no fundão, claro, tem a mamãe (porque haja coração pra acolher tanto lixo), <a href="https://shop.canonical.com/product_info.php?products_id=123">minha bolsa da Ogio, versão Ubuntu</a>.</p>
<p>E é isso, um abraço !</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=351&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/o-que-eu-levo-na-minha-mochila/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faça seu cron calar a boca (e deixar de entupir sua mailbox)</title>
		<link>http://www.lsmod.net/faca-seu-cron-calar-a-boca-e-deixar-de-entupir-sua-mailbox/</link>
		<comments>http://www.lsmod.net/faca-seu-cron-calar-a-boca-e-deixar-de-entupir-sua-mailbox/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 18:57:31 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Posix]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mailer daemon]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=305</guid>
		<description><![CDATA[Se você também se irrita com os trilhões de emails que o Cron eventualmente envia para sua mailbox, faça como muitos: Apenas insira o seguinte trecho após a linha correspondente ao job, no crontab: &#62;/dev/null 2&#62;&#38;1 Ou seja, se o job era: 0-59/5 * * * * root /usr/bin/fetchmail -f /root/.fetchmailrc -a -s -K -F [...]]]></description>
			<content:encoded><![CDATA[<p>Se você também se irrita com os trilhões de emails que o Cron eventualmente envia para sua mailbox, faça como muitos:<br />
Apenas insira o seguinte trecho após a linha correspondente ao job, no crontab:</p>
<p><span style="color: #ff0000;"><strong>&gt;/dev/null 2&gt;&amp;1</strong></span></p>
<p>Ou seja, se o job era:<span id="more-305"></span></p>
<p><strong><span style="color: #0000ff;">0-59/5 * * * * root /usr/bin/fetchmail -f /root/.fetchmailrc -a -s -K -F</span></strong></p>
<p>Ele vai ficar assim:</p>
<p><span style="color: #ff0000;"><strong>0-59/5 * * * * root /usr/bin/fetchmail -f /root/.fetchmailrc -a -s -K -F &gt;/dev/null 2&gt;&amp;1</strong></span></p>
<p>Tadá ! Sem mais aquela enxurrada de emails inúteis na sua caixa.<br />
Claro, faça isso apenas para jobs que não exibem algo de útil no output, como por exemplo erros ao processar algo.</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=305&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/faca-seu-cron-calar-a-boca-e-deixar-de-entupir-sua-mailbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using conditional expressions to improve your shell scripts</title>
		<link>http://www.lsmod.net/conditional-expressions-shell-script/</link>
		<comments>http://www.lsmod.net/conditional-expressions-shell-script/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 02:56:51 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Posix]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[condicional]]></category>
		<category><![CDATA[conditional]]></category>
		<category><![CDATA[expressão]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[expressions]]></category>
		<category><![CDATA[expressões]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=274</guid>
		<description><![CDATA[You can use these very simple shell script conditional expressions to improve your home-made scripts, making them more efficient and easy to mantain. To check if a file exists and it&#8217;s executable, use: There are several other options. Here&#8217;s the full available conditional expressions: -e: Returns true value if file exists -f: Return true value [...]]]></description>
			<content:encoded><![CDATA[<p>You can use these very simple shell script conditional expressions to improve your home-made scripts, making them more efficient and easy to mantain.</p>
<p>To check if a file exists and it&#8217;s executable, use:</p>
<pre class="brush: bash; title: ; notranslate">#!/bin/bash
FILE=/usr/bin/passwd

if [ -x $FILE ];
then
 echo &quot;File $FILE exists and it is executable&quot;
else
 echo &quot;File $FILE does not exists or it isnt executable&quot;
fi</pre>
<p>There are several other options. Here&#8217;s the full available conditional expressions: <span style="color: #ff0000;"><strong></strong></span></p>
<p><span style="color: #ff0000;"><strong>-e</strong></span>: Returns true value if file exists<span style="color: #ff0000;"><strong><br />
-f</strong></span>: Return true value if file exists and regular file<br />
<strong><span style="color: #ff0000;">-r</span></strong>: Return true value if file exists and is readable<br />
<span style="color: #ff0000;"><strong>-w</strong></span>: Return true value if file exists and is writable<br />
<span style="color: #ff0000;"><strong>-x</strong></span>: Return true value if file exists and is executable<br />
<span style="color: #ff0000;"><strong>-d</strong></span>: Return true value if exists and is a directory</p>
<p>Have fun improving your scripts !</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=274&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/conditional-expressions-shell-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como remover apenas um grupo de usuário no Unix</title>
		<link>http://www.lsmod.net/como-remover-apenas-um-grupo-de-usuario-no-unix/</link>
		<comments>http://www.lsmod.net/como-remover-apenas-um-grupo-de-usuario-no-unix/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 16:30:23 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Posix]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[aix]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[hp-ux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[usuários]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=258</guid>
		<description><![CDATA[Olá pessoal ! Ontem foi dia de análise de alguns servidores da GM, especialmente os SOX, por estarmos próximos à outra auditoria. Numa empresa grande como a HP, temos centenas de funcionários de suporte ao ambiente &#8211; Pessoas lidando com o sistema operacional, outros com banco de dados, alguns especialistas em ferramentas de monitoração, entre [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal !</p>
<p>Ontem foi dia de análise de alguns servidores da GM, especialmente os SOX, por estarmos próximos à outra auditoria.<br />
Numa empresa grande como a HP, temos centenas de funcionários de suporte ao ambiente &#8211; Pessoas lidando com o sistema operacional, outros com banco de dados, alguns especialistas em ferramentas de monitoração, entre outros.</p>
<p>A menos que sua rede toda esteja rodando NIS ou LDAP (o que raramente acontece), você acaba tendo que criar todos estes ID&#8217;s nos servidores, e ao longo dos anos isso vira bagunça, se não for administrado corretamente.</p>
<p>Nessa revisão de ontem constatamos que possuíamos muita gente com acesso demais nos servidores. Isto é, com regras de sudo excessivas, pelo fato de serem membros de grupos desnecessários.</p>
<p>Tente administrar mais de 3.000 servidores e ir, de um por um, removendo os grupos de algumas dezenas de usuários. Complicado né ?<br />
Foi com isso em vista que fiz um simples shell script, com a função de fazer algo que, na minha opinião, deveria ser um recurso nativo do Unix.<span id="more-258"></span>As regras de sudo, num ambiente bem estruturado, são, em sua maioria, desenhadas para grupos &#8211; e então usuários adicionados aos grupos, dando-os permissões para a execução dos comandos como root.</p>
<p>Imaginemos então que o usuário <strong>torvalds </strong>é membro dos grupos <span style="color: #ff0000;"><strong>admin</strong></span>, <span style="color: #ff0000;"><strong>monitoracao </strong></span>e <span style="color: #ff0000;"><strong>impressoras</strong></span>. E que nosso objetivo é retirá-lo do grupo <span style="color: #ff0000;"><strong>admin</strong></span>, pois este grupo possui permissões para executar <em><strong>sudo su -</strong></em>.</p>
<p>Seria simples, não ?</p>
<pre class="brush: bash; title: ; notranslate">usermod -g monitoracao -G impressoras torvalds</pre>
<p>Porém agora considere o seguinte: O cara vai estar no grupo <span style="color: #ff0000;"><strong>admin </strong></span>em todos os servidores, porém os grupos secundários dele são desconhecidos.<br />
Além disso, você não pode conectar-se a cada servidor, grepando o <span style="color: #0000ff;">/etc/group</span> pelo ID dele, e montando um script para cada ocasião. Total perda de tempo, certo ?<br />
Ah sim, mais um probleminha: Você vai rodar o script em Solaris, HP-UX, AIX e em alguns poucos servidores Linux. Portanto nada de comandos específicos.</p>
<p>Foi pensando nisso que eu criei um script simples, feio, mal-feito mas que funciona Usando apenas as ferramentas encontradas em todos os sabores de Unix, como sed, while-do, grep, cut, entre outros.<br />
Ele automatiza a coisa, fantástico para uma ocasião como a minha, onde tenho em mãos uma ferramenta web que é capaz de rodar o script em todos os servidores ao mesmo tempo.</p>
<p>Enfim, sem mais delongas &#8211; Segue o script. Torço pro Google indexar isso logo e outros que passaram pelo mesmo problema que eu tenham uma solução mais prática:</p>
<pre class="brush: bash; title: ; notranslate">
# Entrar num diretório temporário:
mkdir –p /tmp/controlid &amp;&amp; cd /tmp/controlid
# Pegar do /etc/group os grupos atuais do cara e jogar num arquivo temp:
grep torvalds /etc/group | cut -d: -f1 &gt; currgroups
# Botar o output do comando anterior, todos na minha linha, separados por virgula:
while read line; do echo -n &quot;$line,&quot;; done &lt; currgroups &gt; currgroups2
# Tirar a porcaria da virgula que sobrou no final da string:
cat currgroups2 |sed 's/\(.*\)./\1/' &gt; currgroups3
# Remover o grupo admin da lista acima. Troque a palavra admin abaixo pelo grupo que deseja remover.
cat currgroups3 | sed 's#,admin##g' &gt; groups
# Atualizar os grupos do cara !
usermod -G `cat groups` torvalds
</pre>
<p>Sugestões de otimização para o script são sempre bem-vindas.</p>
<p>&nbsp;</p>
<p>Um abraço a todos !</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=258&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/como-remover-apenas-um-grupo-de-usuario-no-unix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>32 ou 64 bits ? Entenda as diferenças</title>
		<link>http://www.lsmod.net/32-ou-64-bits-entenda-as-diferencas/</link>
		<comments>http://www.lsmod.net/32-ou-64-bits-entenda-as-diferencas/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 22:03:18 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[32 bits]]></category>
		<category><![CDATA[64 bits]]></category>
		<category><![CDATA[bits]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistema operacional]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=123</guid>
		<description><![CDATA[&#160;Com o mercado de games, arquitetura, design gráfico, audio e vídeo fervilhando há uns bons anos, houve a necessidade de expandirmos e aumentarmos a capacidade de processamento dos CPU&#8217;s atuais. &#160;&#160; Como ? Bem, chegamos à um ponto onde não é mais tão simples aumentar o clock dos processadores, aumentando assim suas velocidades. &#160; Alguns [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<br />Com o mercado de games, arquitetura, design gráfico, audio e vídeo fervilhando há uns bons anos, houve a necessidade de expandirmos e aumentarmos a capacidade de processamento dos CPU&#8217;s atuais.<br />
&nbsp;<br />&nbsp;<br />
Como ? Bem, chegamos à um ponto onde não é mais tão simples aumentar o clock dos processadores, aumentando assim suas velocidades.<br />
<br />&nbsp;<br />
Alguns fatores como aquecimento dos chips e o preço de vários componentes fizeram com que os engenheiros tivessem de bolar uma nova estratégia para superar os limites mais uma vez: Dobrar a quantidade de bits que eles poderiam processar em um simples ciclo.<br />
&nbsp;<br />&nbsp;<br />
Os processadores de 32 bits são limitados a processarem valores inteiros de <strong>0 à 4.294.967.295 &#8211; ou de (−2,147,483,648) a 2,147,483,647</strong>.<br />
&nbsp;<br />&nbsp;<br />
Agora imagine que você está digitando um simples script no seu editor de textos favorito. Impossível imaginar que o processador do seu computador teria de se utilizar de números maiores do que os citados acima para processar um ciclo, certo ?<br />
<br />&nbsp;<br />
Por outro lado, ao compilar grandes softwares usando o <a href="http://gcc.gnu.org/">gcc</a>, colaborar com o <a href="http://folding.stanford.edu/">Folding@Home</a> ou criptografar dados, números e cálculos estupidamente grandes seriam utilizados.<br />
<br />&nbsp;<br />
Nestes casos, a característica mais bacana dos processadores de 64 bits entra em ação: Ser capaz de processar números inteiros de <strong>0 a 18.446.744.073.709.551.615</strong>.<br />
<br />&nbsp;<br />
O que isso significa ?<br />
<br />&nbsp;<br />
Bem, se para criptogravar o arquivo <strong><em>script.php</em></strong> meu processador tivesse de raciocinar um número maior do que 4.294.967.295, seriam necessário dois ciclos de processamento para fazer exclusivamente esta operação.<br />
<br />&nbsp;<br />
Num processador de 64 bits, apenas um ciclo bastaria, sobrando bastante para o Sistema Operacional processar o resto de suas atividades normais.<br />
<br />&nbsp;<br />
<strong>Mas isto não é tudo !</strong><br />
<br />&nbsp;<br />
Sem um sistema operacional adequado à essas características, nada funcionaria bem.<br />
<br />&nbsp;<br />
Ele é o principal gargalo dessa história. Se tivermos, por exemplo, um Athlon X2 em nosso computador pessoal e instalarmos uma distribuição Linux de 32 bits nele, estaremos desprezando o total potencial deste equipamento, uma vez que o O.S. enviaria para o cérebro do computador apenas instruções possíveis de serem resolvidas por um CPU tradicional de 32 bits.<br />
<br />&nbsp;<br />
Existem também algumas formas de termos aplicações de 32 bits rodando sob uma plataforma de 64 bits. Apesar de não recomendável, isto se faz necessário algumas vezes por não existir uma versão especial do software que tenha sido reescrita para rodar com perfeição nos novos chips.<br />
<br />&nbsp;<br />
Assim teríamos o sistema rodando em todo o seu potencial, e esta aplicação ficaria no gargalo, provavelmente rodando mais lentamente do que todo o resto dos programas.<br />
<br />&nbsp;<br />
Atualmente temos uma vasta gama de processadores de 64 bits disponíveis, e <em>[a menos que eu esteja enganado]</em>, a grande maioria do que encontramos no comércio &#8211; voltados para usuários domésticos e workstations, nada específico &#8211; são compatíveis com ambas as tecnologias.<br />
<br />&nbsp;<br />
Eu mesmo estou concluindo o final deste pequeno artigo num sistema operacional de 32 bits, rodando sob hardware de 64 bits ;]<br />
<br />&nbsp;<br />
A moral da história: <em>O conceito mudou de &#8220;aumento de velocidade&#8221; para &#8220;capacidade de processamento&#8221;.</em><br />
<br />&nbsp;<br />
Chips de 64 bits não são necessáriamente mais rápidos (variando conforme a aplicação, já explicado acima) porém sem dúvida aguentam processar mais informações por ciclo &#8211; o que acaba gerando velocidade em situações de grande carga.<br />
<br />&nbsp;<br />Um grande abraço a todos!
<p>&nbsp;</p>
<img src="http://www.lsmod.net/?ak_action=api_record_view&id=123&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/32-ou-64-bits-entenda-as-diferencas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Teste: Mod Syntax Highlighting</title>
		<link>http://www.lsmod.net/teste-mod-syntax-highlighting/</link>
		<comments>http://www.lsmod.net/teste-mod-syntax-highlighting/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 04:16:43 +0000</pubDate>
		<dc:creator>Jeremias Zerbini</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[syntax highlighting]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://www.lsmod.net/?p=94</guid>
		<description><![CDATA[Encontrei este mod e passarei a usá-lo de agora em diante. Quem quiser ter um igual é só instalar este mod aqui. ?View Code JAVA1 2 3 4 5 public class Hello &#123; public static void main&#40;String&#91;&#93; args&#41; &#123; System.out.println&#40;&#34;Olá mundo!&#34;&#41;; &#125; &#125; ?View Code BASH1 2 3 4 #!/bin/bash FILE=/etc/file echo $FILE echo &#34;string&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Encontrei este mod e passarei a usá-lo de agora em diante.<br />
Quem quiser ter um igual é só instalar <a href=http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/>este mod aqui</a>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code5'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p945"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p94code5"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Hello <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Olá mundo!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code6'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p946"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p94code6"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #007800;">FILE</span>=<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">file</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$FILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;string&quot;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code7'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p947"><td class="code" id="p94code7"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000000; font-weight: bold;">function</span> foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Olá mundo!<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code8'); return false;">View Code</a> DELPHI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p948"><td class="code" id="p94code8"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">begin</span>
   <span style="color: #000000; font-weight: bold;">function</span> teste
   showmessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Testandoo'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></td></tr></table></div>

<img src="http://www.lsmod.net/?ak_action=api_record_view&id=94&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.lsmod.net/teste-mod-syntax-highlighting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.lsmod.net/category/programacao/feed/ ) in 0.97648 seconds, on Feb 6th, 2012 at 11:51 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 7th, 2012 at 12:51 am UTC -->
