<?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>Os Lunáticos &#187; TI</title>
	<atom:link href="http://oslunaticos.com.br/category/ti/feed/" rel="self" type="application/rss+xml" />
	<link>http://oslunaticos.com.br</link>
	<description>TI é aqui!</description>
	<lastBuildDate>Mon, 06 Feb 2012 21:07:56 +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>Processing no NetBeans</title>
		<link>http://oslunaticos.com.br/2012/02/processing-no-netbeans/</link>
		<comments>http://oslunaticos.com.br/2012/02/processing-no-netbeans/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 21:07:56 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1744</guid>
		<description><![CDATA[Processing? Processing é uma linguagem de programação de código aberto e um ambiente de desenvolvimento integrado (IDE), construído para as artes eletrônicas e comunidades de design visual com o objetivo de ensinar noções básicas de programação de computador em um contexto visual e para servir como base para protótipos eletrônicos. O projeto foi iniciado em [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Processing" src="http://code.google.com/p/processing/logo" alt="" width="55" height="55" /></p>
<h6>Processing?</h6>
<blockquote>
<p style="text-align: justify;">Processing é uma linguagem de programação de código aberto e um ambiente de desenvolvimento integrado (IDE), construído para as artes eletrônicas e comunidades de design visual com o objetivo de ensinar noções básicas de programação de computador em um contexto visual e para servir como base para protótipos eletrônicos. O projeto foi iniciado em 2001 por Casey Reas e Ben Fry, ambos ex-membros do Grupo de Computação do MIT Media Lab. Um dos objetivos declarados do Processing é atuar como uma ferramenta para não-programadores, através da satisfação imediata de um retorno visual. Processing baseia-se na linguagem de programação Java, mas utiliza uma sintaxe simplificada e um padrão de programação baseado em gráficos.</p>
</blockquote>
<p>&nbsp;</p>
<h6>Ambiente</h6>
<p>O ambiente utilizado neste tutorial é Windows 7, NetBeans 7.1, JDK 1.6.0_30 e Processing 1.5.1.</p>
<p><span id="more-1744"></span></p>
<h6>Iniciando</h6>
<p>Considerando que o NetBeans e o JDK já estejam instalados, é necessário ir no site do Processing e realizar o download da versão sem o JDK &#8211;  <a href="http://processing.org/download/">http://processing.org/download/</a>. Após baixar o arquivo <em>processing-1.5.1-windows-expert.zip</em>, descompacte-o e mova a pasta <em>processing-1.5.1</em> para dentro de <em>C:\Arquivos de Programas</em>.</p>
<p>Neste primeiro contato o Processing já está pronto para trabalhar, agora é só configurar o NetBeans.</p>
<p>&nbsp;</p>
<h6>Agora no Netbeans</h6>
<p>Para continuar abra o NetBeans e clique em <em>Projetos</em> -&gt; <em>Bibliotecas</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela01.jpg"><img class="aligncenter size-medium wp-image-1746" title="tela01" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela01-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>&nbsp;</p>
<p>Na tela de Bibliotecas, clique em <em>Nova Biblioteca&#8230;</em></p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela02.jpg"><img class="aligncenter size-medium wp-image-1747" title="tela02" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela02-300x229.jpg" alt="" width="300" height="229" /></a></p>
<p>&nbsp;</p>
<p>Em Nova Biblioteca, digite <em>Processing 1.5.1</em> em <em>Nome da biblioteca</em> e clique em <em>OK</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela03.jpg"><img class="aligncenter size-medium wp-image-1748" title="tela03" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela03-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>&nbsp;</p>
<p>Após confirmar, clique em <em>Adicionar JAR/pasta&#8230; </em>Será exibida uma tela para localização dos arquivos. Procure <em>C:\Arquivos de Programas\processing-1.5.1\lib</em>, selecione os arquivos e clique em <em>Adicionar JAR/pasta</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela04.jpg"><img class="aligncenter size-medium wp-image-1751" title="tela04" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela04-300x190.jpg" alt="" width="300" height="190" /></a></p>
<p>&nbsp;</p>
<p>Será exibida a tela com as informações da nova biblioteca.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela05.jpg"><img class="aligncenter size-medium wp-image-1752" title="tela05" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela05-300x229.jpg" alt="" width="300" height="229" /></a></p>
<p>&nbsp;</p>
<p>Neste momento a biblioteca está configurada e pronta para ser adicionada ao projeto.</p>
<p>&nbsp;</p>
<h6>Novo Projeto</h6>
<p>Agora será necessário iniciar um novo projeto. Clique em <em>Arquivo</em> -&gt; <em>Novo Projeto</em>. Na tela de Novo Projeto, selecione em <em>Categorias: Java</em> e <em>Projetos: Aplicativo Java</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela06.jpg"><img class="aligncenter size-medium wp-image-1753" title="tela06" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela06-300x206.jpg" alt="" width="300" height="206" /></a></p>
<p>&nbsp;</p>
<p>Na tela de Novo Aplicativo Java, insira o nome do projeto: <em>TestProcessing</em>, verifique as demais opções selecionadas e clique em <em>Finalizar</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela07.jpg"><img class="aligncenter size-medium wp-image-1754" title="tela07" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela07-300x206.jpg" alt="" width="300" height="206" /></a></p>
<p>&nbsp;</p>
<p>Após o novo projeto carregado, abra a árvore do projeto, clique em <em>Bibliotecas</em>, depois em <em>Adicionar biblioteca&#8230;</em></p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela08.jpg"><img class="aligncenter size-medium wp-image-1755" title="tela08" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela08-257x300.jpg" alt="" width="257" height="300" /></a></p>
<p>&nbsp;</p>
<p>Na tela de adicionar biblioteca, clique em <em>Importar</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela09.jpg"><img class="aligncenter size-medium wp-image-1756" title="tela09" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela09-284x300.jpg" alt="" width="284" height="300" /></a></p>
<p>&nbsp;</p>
<p>Selecione a biblioteca que foi criada (Processing 1.5.1) e clique em <em>Importar biblioteca</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela10.jpg"><img class="aligncenter size-medium wp-image-1757" title="tela10" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela10-219x300.jpg" alt="" width="219" height="300" /></a></p>
<p>&nbsp;</p>
<p>Novamente de volta a de Adicionar biblioteca selecione <em>Processing 1.5.1</em> e clique em <em>Adicionar biblioteca</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela11.jpg"><img class="aligncenter size-medium wp-image-1758" title="tela11" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela11-284x300.jpg" alt="" width="284" height="300" /></a></p>
<p>&nbsp;</p>
<p>Os arquivos JAR do Processing serão adicionados ao projeto, assim será possível realizar a importação das bibliotecas.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela12.jpg"><img class="aligncenter size-medium wp-image-1759" title="tela12" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela12-300x255.jpg" alt="" width="300" height="255" /></a></p>
<p>&nbsp;</p>
<p>Foi testado o seguinte código:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">testprocessing</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.core.PApplet</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
*
* @author Eduardo Folly
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TestProcessing <span style="color: #000000; font-weight: bold;">extends</span> PApplet <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/*
     *
     */</span>
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">640</span>, <span style="color: #cc66cc;">480</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #666666; font-style: italic;">/*
    *
    */</span>
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        background<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        rectMode<span style="color: #009900;">&#40;</span>CENTER<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        fill<span style="color: #009900;">&#40;</span>0xFFFFAA99<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        rect<span style="color: #009900;">&#40;</span>mouseX, mouseY, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * @param args the command line arguments
     */</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><span style="color: #003399;">String</span><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>
        PApplet.<span style="color: #006633;">main</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">&quot;testprocessing.TestProcessing&quot;</span> <span style="color: #009900;">&#125;</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></div></div>

<p>E o resultado obtido foi a aplicação rodando perfeitamente.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela13.jpg"><img class="aligncenter size-medium wp-image-1761" title="tela13" src="http://oslunaticos.com.br/wp-content/uploads/2012/02/tela13-300x236.jpg" alt="" width="300" height="236" /></a></p>
<p>&nbsp;</p>
<h6>Melhorias futuras e possíveis questões</h6>
<ul>
<li><span style="line-height: 18px;">Somente o código fonte do exemplo foi testado, é necessário testar com outros exemplos que utilizem bibliotecas específicas.<br />
</span></li>
<li><span style="line-height: 18px;">Devido ao Processing ser multi-plataforma, assim como o NetBeans, testar esta configuração em outros sistemas operacionais é imprescindível.</span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2012/02/processing-no-netbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consumindo web service do Protheus com JAX-WS</title>
		<link>http://oslunaticos.com.br/2011/10/consumindo-web-service-do-protheus-com-jax-ws/</link>
		<comments>http://oslunaticos.com.br/2011/10/consumindo-web-service-do-protheus-com-jax-ws/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 21:08:32 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JAX-WS]]></category>
		<category><![CDATA[Protheus]]></category>
		<category><![CDATA[Totvs]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1701</guid>
		<description><![CDATA[O que é web service? De acordo com a W3C, web service é um software projetado para suportar interação máquina-máquina de forma interoperável através de uma rede. Ele tem uma interface descrita em um formato máquina-processável (especificamente WSDL). Sistemas que interagem com o web service de uma maneira prescrita por sua descrição, utilizam mensagens SOAP, [...]]]></description>
			<content:encoded><![CDATA[<h3>O que é web service?</h3>
<p>De acordo com a <a href="http://www.w3.org/" target="_blank">W3C</a>, <a href="http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/" target="_blank">web service</a> é um software projetado para suportar interação máquina-máquina de forma interoperável através de uma rede. Ele tem uma interface descrita em um formato máquina-processável (especificamente WSDL). Sistemas que interagem com o web service de uma maneira prescrita por sua descrição, utilizam mensagens SOAP, normalmente transmitidas através de HTTP com uma serialização XML em conjunto com outros padrões web.</p>
<p>&nbsp;</p>
<h3>O caminho.</h3>
<p>Para a integração com outros sistemas, o ERP Protheus da Totvs provê uma série de web services e ainda existe a possibilidade de desenvolver e publicar serviços customizados dentro da plataforma.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/server.png"><img class="aligncenter size-medium wp-image-1722" title="server" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/server-300x185.png" alt="" width="300" height="185" /></a></p>
<p style="text-align: center;"><em>Figura 1 &#8211; Página com a descrição dos serviços disponíveis do Protheus.</em></p>
<p>&nbsp;</p>
<h3>O problema.</h3>
<p>Ao iniciar o desenvolvimento de uma aplicação em Java 6, utilizando o Netbeans 7.0 como IDE e a biblioteca JAX-WS para o consumo dos serviços, foi exibida a mensagem <em>&#8220;WEBSERVICE ERROR : Soap Prefix Missing : USERPORTAL : PRTLOGIN : Formato do Pacote Soap DESCONHECIDO.&#8221;</em> ao tentar executar uma chamada simples ao serviço USERPORTAL, método PRTLOGIN.<br />
<span id="more-1701"></span><br />
&nbsp;</p>
<h3>A solução.</h3>
<p>Será demostrado um passo-a-passo de como iniciar um projeto até o consumo com sucesso do web service especificado.</p>
<p>No Netbeans, clique no menu <em>Arquivo</em>, seguido por <em>Novo Projeto</em>. Na tela que irá abrir, selecione em <em>Categorias:</em> &#8220;Java&#8221; e em <em>Projetos:</em> &#8220;Aplicativo Java&#8221;. Clique em <em>Próximo</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image000.png"><img class="aligncenter size-medium wp-image-1706" title="image000" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image000-300x206.png" alt="" width="300" height="206" /></a><em>Figura 2 &#8211; Novo projeto.</em></p>
<p>&nbsp;</p>
<p>Informe o nome do projeto (neste caso SigaWS), faça modificações caso ache necessário e clique em <em>Finalizar</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image001.png"><img class="aligncenter size-medium wp-image-1707" title="image001" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image001-300x206.png" alt="" width="300" height="206" /></a><em>Figura 3 &#8211; Novo Aplicativo Java</em></p>
<p>&nbsp;</p>
<p>Com o projeto criado, deverá ser criada a classe para consumo do serviço USERPORTAL, para isto clique em <em>Arquivo</em>, seguido por <em>Novo Arquivo</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image002.png"><img class="aligncenter size-medium wp-image-1708" title="image002" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image002-220x300.png" alt="" width="220" height="300" /></a><em>Figura 4 &#8211; Arquivo, Novo Arquivo.</em></p>
<p>&nbsp;</p>
<p>Na tela de Novo Arquivo selecione em <em>Categorias:</em> &#8220;Serviços Web&#8221; e em <em>Tipos de arquivos:</em> &#8220;Cliente para serviço Web&#8221;, clicando em <em>Próximo</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image003.png"><img class="aligncenter size-medium wp-image-1709" title="image003" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image003-300x206.png" alt="" width="300" height="206" /></a><em>Figura 5 &#8211; Novo arquivo.</em></p>
<p>&nbsp;</p>
<p>Na próxima tela deverá ser selecionada a opção <em>WSDL URL</em> e informado o caminho do arquivo de definição do serviço de acordo com o publicado no Protheus. Clique em <em>Finalizar</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image004.png"><img class="aligncenter size-medium wp-image-1710" title="image004" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image004-300x206.png" alt="" width="300" height="206" /></a><em>Figura 6 &#8211; Novo cliente para serviço Web.</em></p>
<p>&nbsp;</p>
<p>Voltando para a tela principal do Netbeans, vá na aba <em>Projetos</em> e abra os nós de <em>Referência de serviços Web</em> até localizar o método PRTLOGIN.</p>
<p>Selecione o nó PRTLOGIN, arraste-o e solte dentro da classe SigaWS, isto fará com que o código de chamada ao método seja gerado automaticamente. Em seguida defina os parâmetros para execução da chamada do serviço.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image005.png"><img class="aligncenter size-medium wp-image-1711" title="image005" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image005-300x232.png" alt="" width="300" height="232" /></a><em>Figura 7 &#8211; Definição da classe de execução do Web Service.</em></p>
<p>&nbsp;</p>
<p>Executando o projeto neste momento, será verificado o erro citado no início do artigo.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image006.png"><img class="aligncenter size-medium wp-image-1712" title="image006" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image006-300x121.png" alt="" width="300" height="121" /></a><em>Figura 8 &#8211; Erro na execução.</em></p>
<p>&nbsp;</p>
<p>Para solucionar o problema, o proposto é adicionar um manipulador de mensagem SOAP e realizar algumas modificações nos dados retornados pelo serviço, assim possibilitando a serialização.</p>
<p>Clique em <em>Arquivo</em>, seguido por <em>Novo Arquivo</em>. Na tela seguinte, selecione em <em>Categorias:</em> &#8220;Serviços Web&#8221; e em <em>Tipos de arquivos:</em> &#8220;Manipulador de mensagens&#8221;, clique em <em>Próximo</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image007.png"><img class="aligncenter size-medium wp-image-1713" title="image007" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image007-300x206.png" alt="" width="300" height="206" /></a><em>Figura 9 &#8211; Novo arquivo &#8211; Manipulador de mensagens.</em></p>
<p>&nbsp;</p>
<p>Informe o nome para o arquivo, neste caso SigaHandler, clique em <em>Finalizar</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image008.png"><img class="aligncenter size-medium wp-image-1714" title="image008" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image008-300x206.png" alt="" width="300" height="206" /></a><em>Figura 10 &#8211; Novo manipulador de mensagens.</em></p>
<p>&nbsp;</p>
<p>Com o arquivo gerado o código deverá ficar desta forma:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">sigaws.ws</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.ByteArrayOutputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Collections</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Set</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.namespace.QName</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.soap.SOAPException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.soap.SOAPMessage</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.transform.Source</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.transform.stream.StreamSource</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.ws.handler.MessageContext</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.ws.handler.soap.SOAPHandler</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.xml.ws.handler.soap.SOAPMessageContext</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 *
 * @author Eduardo Folly
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SigaHandler <span style="color: #000000; font-weight: bold;">implements</span> SOAPHandler <span style="color: #009900;">&#123;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> handleMessage<span style="color: #009900;">&#40;</span>SOAPMessageContext messageContext<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">boolean</span> outbound <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Boolean</span><span style="color: #009900;">&#41;</span> messageContext.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>MessageContext.<span style="color: #006633;">MESSAGE_OUTBOUND_PROPERTY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>outbound<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
                SOAPMessage msg <span style="color: #339933;">=</span> messageContext.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #003399;">ByteArrayOutputStream</span> baos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ByteArrayOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                msg.<span style="color: #006633;">writeTo</span><span style="color: #009900;">&#40;</span>baos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #003399;">String</span> teste <span style="color: #339933;">=</span> baos.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>getMessageEncoding<span style="color: #009900;">&#40;</span>msg<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                teste <span style="color: #339933;">=</span> teste.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;S:&quot;</span>, <span style="color: #0000ff;">&quot;soap:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                teste <span style="color: #339933;">=</span> teste.<span style="color: #006633;">replaceAll</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;S=&quot;</span>, <span style="color: #0000ff;">&quot;soap=&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                Source src <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StreamSource<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> java.<span style="color: #006633;">io</span>.<span style="color: #003399;">StringReader</span><span style="color: #009900;">&#40;</span>teste<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                msg.<span style="color: #006633;">getSOAPPart</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">setContent</span><span style="color: #009900;">&#40;</span>src<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Set</span> getHeaders<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #003399;">Collections</span>.<span style="color: #006633;">EMPTY_SET</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> handleFault<span style="color: #009900;">&#40;</span>SOAPMessageContext messageContext<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> close<span style="color: #009900;">&#40;</span>MessageContext context<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> getMessageEncoding<span style="color: #009900;">&#40;</span>SOAPMessage msg<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> SOAPException <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">String</span> encoding <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;utf-8&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>msg.<span style="color: #006633;">getProperty</span><span style="color: #009900;">&#40;</span>SOAPMessage.<span style="color: #006633;">CHARACTER_SET_ENCODING</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            encoding <span style="color: #339933;">=</span> msg.<span style="color: #006633;">getProperty</span><span style="color: #009900;">&#40;</span>SOAPMessage.<span style="color: #006633;">CHARACTER_SET_ENCODING</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> encoding<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<p>Assim o resultado final da classe é apresentado.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image009.png"><img class="aligncenter size-medium wp-image-1715" title="image009" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image009-300x232.png" alt="" width="300" height="232" /></a><em>Figura 11 &#8211; Classe SigaHandler.</em></p>
<p>&nbsp;</p>
<p>Agora é necessário relacionar o manipulador de mensagens com o serviço USERPORTAL. Para isto na aba <em>Projetos </em>clique com o botão direito do mouse no serviço USERPORTAL, seguido por <em>Configurar manipuladores&#8230;</em></p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image010.png"><img class="aligncenter size-medium wp-image-1716" title="image010" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image010-201x300.png" alt="" width="201" height="300" /></a><em>Figura 12 &#8211; Configurar manipuladores&#8230;</em></p>
<p>&nbsp;</p>
<p>Na próxima tela, clique em <em>Adicionar</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image011.png"><img class="aligncenter size-medium wp-image-1717" title="image011" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image011-300x174.png" alt="" width="300" height="174" /></a><em>Figura 13 &#8211; Configurar os manipuladores de mensagens.</em></p>
<p>&nbsp;</p>
<p>Selecione o arquivo manipulador, neste caso o arquivo SigaHandler.java, e clique em <em>OK</em>.</p>
<p style="text-align: center;"><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image012.png"><img class="aligncenter size-medium wp-image-1718" title="image012" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image012-244x300.png" alt="" width="244" height="300" /></a><em>Figura 14 &#8211; Selecionar classe de manipuladores de mensagens.</em></p>
<p>&nbsp;</p>
<p>Após a confirmação será exibido o manipulador de mensagens associado ao serviço. Clique em <em>OK</em>.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image013.png"><img class="aligncenter size-medium wp-image-1719" title="image013" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image013-300x174.png" alt="" width="300" height="174" /></a></p>
<p style="text-align: center;"><em>Figura 15 &#8211; Associação do manipulador de mensagens.</em></p>
<p>&nbsp;</p>
<p>Desta forma a execução do programa funciona perfeitamente.</p>
<p><a href="http://oslunaticos.com.br/wp-content/uploads/2011/10/image014.png"><img class="aligncenter size-medium wp-image-1720" title="image014" src="http://oslunaticos.com.br/wp-content/uploads/2011/10/image014-300x147.png" alt="" width="300" height="147" /></a></p>
<p style="text-align: center;"><em>Figura 16 &#8211; Execução do programa.</em></p>
<p>&nbsp;</p>
<h3>Considerações finais.</h3>
<p>Até o presente momento a Totvs não disponibilizou uma modificação no padrão do retorno da mensagem do serviço Web para o Protheus 10.</p>
<p>Gostaria de agradecer a Vicente de Paula (vicenterecife@gmail.com) por ter originado os questionamentos que deram origem a este artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2011/10/consumindo-web-service-do-protheus-com-jax-ws/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como descobrir seu dispositivo desconhecido.</title>
		<link>http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/</link>
		<comments>http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 17:05:37 +0000</pubDate>
		<dc:creator>Clemar Folly</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Dispositivo desconhecido]]></category>
		<category><![CDATA[Drivers]]></category>
		<category><![CDATA[Formatação]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=691</guid>
		<description><![CDATA[Algumas vezes é necessário formatar o computador, porém, utilizar aquele DVD de restauração padrão que vem com a máquina acaba instalando coisas além do necessário, consumindo recursos do sistema que poderiam ser utilizados em atividades mais nobres. Desta forma surge o primeiro inimigo da formatação: o DISPOSITIVO DESCONHECIDO. Mesmo depois do advento do plug and [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes é necessário formatar o computador, porém, utilizar aquele DVD de restauração padrão que vem com a máquina acaba instalando coisas além do necessário, consumindo recursos do sistema que poderiam ser utilizados em atividades mais nobres.</p>
<p>Desta forma surge o primeiro inimigo da formatação: o DISPOSITIVO DESCONHECIDO.</p>
<p>Mesmo depois do advento do plug and play e Windows Update alguns dispositivos acabam sendo esquecidos e quando vamos atualizar o sistema operacional eles aparecem de forma alienígena.</p>
<p>Exemplificando, podemos ver na imagem abaixo um dispositivo denominado Co-processador não sendo reconhecido pelo Windows 7 64-bit, então o que fazer?<br />
<span id="more-691"></span><br />
<div id="attachment_696" class="wp-caption aligncenter" style="width: 495px"><a rel="attachment wp-att-696" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_092742-2/"><img class="size-full wp-image-696" title="Co-processador desconhecido." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_0927421.png" alt="Co-processador desconhecido." width="485" height="612" /></a><p class="wp-caption-text">Co-processador desconhecido.</p></div></p>
<p>Selecionando o Co-processador, em Outros dispositivos, podemos ver que o sistema não conseguiu instalar os drivers para o dispositivo.</p>
<p>Iniciando o processo de descoberta do software é necessário acessar as propriedades do dispositivo.</p>
<div id="attachment_694" class="wp-caption aligncenter" style="width: 424px"><a rel="attachment wp-att-694" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093133/"><img class="size-full wp-image-694" title="Driver não instalado." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093133.png" alt="Driver não instalado." width="414" height="461" /></a><p class="wp-caption-text">Driver não instalado.</p></div>
<p>Após abrir a tela de propriedades, clica-se na aba de Detalhes e seleciona a Propriedade IDs de Hardware.</p>
<div id="attachment_695" class="wp-caption aligncenter" style="width: 424px"><a rel="attachment wp-att-695" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093006/"><img class="size-full wp-image-695" title="Detalhes do dispositivo." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093006.png" alt="Detalhes do dispositivo." width="414" height="461" /></a><p class="wp-caption-text">Detalhes do dispositivo.</p></div>
<p>Nesta janela é apresentada toda a solução do problema na linha selecionada.</p>
<blockquote><p>PCI\<strong>VEN_10DE</strong>&amp;<strong>DEV_0543</strong>&amp;SUBSYS_01271025&amp;REV_A2</p></blockquote>
<p>A partir desta <a href="http://pt.wikipedia.org/wiki/String" target="_blank">string</a> podemos identificar o código do fabricante (VEN_10DE) e do dispositivo (DEV_0543).</p>
<p>De posse destas informações o Google nos ajuda a resolver o problema. Então é só localizar um driver escrito para o seu sistema operacional, neste caso, Windows 7 64-bit.</p>
<div id="attachment_712" class="wp-caption aligncenter" style="width: 619px"><img class="size-full wp-image-712" title="Busca no Google" src="http://oslunaticos.com.br/wp-content/uploads/2010/02/busca-google.png" alt="Resultado da busca no Google" width="609" height="259" /><p class="wp-caption-text">Resultado da busca no Google</p></div>
<p>Após a localização do driver, basta voltar até a aba geral da tela de propriedades do dispositivo e clicar no botão Atualizar Driver.</p>
<p>Na tela de atualização do driver deve-se selecionar Procurar software de driver no computador, como mostrado na imagem abaixo.</p>
<div id="attachment_697" class="wp-caption aligncenter" style="width: 638px"><a rel="attachment wp-att-697" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093148/"><img class="size-full wp-image-697" title="Modo de instalação do driver." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093148.png" alt="Modo de instalação do driver." width="628" height="460" /></a><p class="wp-caption-text">Modo de instalação do driver.</p></div>
<p>Informe a localização dos arquivos baixados na caixa de texto referente a Procurar software de driver neste local.</p>
<div id="attachment_698" class="wp-caption aligncenter" style="width: 638px"><a rel="attachment wp-att-698" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093212/"><img class="size-full wp-image-698" title="Selecionar localização do driver." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093212.png" alt="Selecionar localização do driver." width="628" height="460" /></a><p class="wp-caption-text">Selecionar localização do driver.</p></div>
<p>Estando o driver correto, o Windows consegue instalar o Co-processador sem problemas, agora conhecido como NVIDIA nForce System Management Controller.</p>
<div id="attachment_699" class="wp-caption aligncenter" style="width: 638px"><a rel="attachment wp-att-699" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093229/"><img class="size-full wp-image-699" title="Dispositivo reconhecido e instalado." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093229.png" alt="Dispositivo reconhecido e instalado." width="628" height="460" /></a><p class="wp-caption-text">Dispositivo reconhecido e instalado.</p></div>
<p>Concluido o processo de instalção retorna-se para a janela de propriedades do dispositivo e nela já é exibida a mensagem que &#8220;Este dispositivos está funcionando corretamente.&#8221;.</p>
<div id="attachment_700" class="wp-caption aligncenter" style="width: 424px"><a rel="attachment wp-att-700" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093249/"><img class="size-full wp-image-700" title="Dispositivo funcionando corretamente." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093249.png" alt="Dispositivo funcionando corretamente." width="414" height="461" /></a><p class="wp-caption-text">Dispositivo funcionando corretamente.</p></div>
<p>No Gerenciador de Dispositivos é verificado que não existe mais dispositivos desconhecidos.</p>
<div id="attachment_701" class="wp-caption aligncenter" style="width: 495px"><a rel="attachment wp-att-701" href="http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/2009-12-04_093311/"><img class="size-full wp-image-701" title="Nenhum dispositivo desconhecido." src="http://oslunaticos.com.br/wp-content/uploads/2010/02/2009-12-04_093311.png" alt="Nenhum dispositivo desconhecido." width="485" height="612" /></a><p class="wp-caption-text">Nenhum dispositivo desconhecido.</p></div>
<p>Assim termina a saga da instalação dos Co-processador desconhecido no Windows 7 64-bit, mas fica uma excelente dica de como identificar e instalar dispositivos que não possuem drivers listados nos sites dos seus fabricantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2011/10/como-descobrir-seu-dispositivo-desconhecido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redes em malha sem fio</title>
		<link>http://oslunaticos.com.br/2011/05/redes-em-malha-sem-fio/</link>
		<comments>http://oslunaticos.com.br/2011/05/redes-em-malha-sem-fio/#comments</comments>
		<pubDate>Thu, 26 May 2011 11:36:54 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[802.11s]]></category>
		<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1519</guid>
		<description><![CDATA[Resumo Este post tem como objetivo principal realizar a apresentação do padrão para redes sem fio com múltiplos saltos proposto pelo IEEE 802.11s. Este padrão propõe uma solução de encaminhamento através de múltiplos saltos no nível de enlace, assim diferenciando-o das soluções tradicionais que operam no nível de rede. Inicialmente serão abordados os principais conceitos [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Resumo</strong></p>
<p style="text-align: justify;">Este post tem como objetivo principal realizar a apresentação do padrão para redes sem fio com múltiplos saltos proposto pelo IEEE 802.11s. Este padrão propõe uma solução de encaminhamento através de múltiplos saltos no nível de enlace, assim diferenciando-o das soluções tradicionais que operam no nível de rede. Inicialmente serão abordados os principais conceitos de redes locais IEEE 802.3, redes locais sem fio que seguem o padrão IEEE 802.11 e a junção destes padrões na infraestrutura. Apresentar brevemente a solução para comunicação em múltiplos saltos no nível MAC e projetos piloto que implementam este tipo de comunicação.</p>
<p><span id="more-1519"></span><br />
<strong>Apresentação</strong></p>
<p style="text-align: justify;">Redes locais sem fio (WLANs &#8211; Wireless Local Area Networks) que seguem o padrão IEEE 80211, estão bem difundidas devido a fatores como a facilidade de instalação e suporte a mobilidade. Mesmo assim, apesar dos padrões IEEE 80211a, b e g serem populares e encontrados na maioria dos notebooks e em grande parte de PDAs, telefones e outros equipamentos sem fio, ainda existe um grande campo de pesquisa e vários desafios em diversas áreas que demandam novas soluções.</p>
<p style="text-align: justify;">Roteadores sem fio de baixo custo também tem sido utilizados na instalação de backbones sem fio. Redes, onde o posicionamento dos roteadores que formam-o é planejado para oferecer uma cobertura de acesso em certas áreas, ou para interconectar redes cabeadas (IEEE 802.3)  distantes, assim são chamadas de redes em malha sem fio (WMNs – Wireless Mesh Networks). Por esta definição, redes em malha sem fio na verdade não são redes sem fio ad-hoc, pois são planejadas e/ou projetadas, mas também podem se beneficiar das vantagens da tecnologia sem fio adjunta a infraestrutura.</p>
<p style="text-align: justify;">Redes móveis ad-hoc (MANETs – Mobile Ad Hoc Networks) são redes auto-configuráveis, compostas por nós móveis sem fio. Em uma MANET, os roteadores podem se mover e a topologia pode mudar rápida e drasticamente. Funções de roteamento são realizadas por alguns ou todos os nós sem fio. Redes em malha e redes ad-hoc sem fio utilizam comunicação em múltiplos saltos e, por isso, compartilham de um mesmo desafio: desenvolver protocolos de roteamento capazes de lidar com características de redes sem fio, tal como mobilidade, mudanças frequentes na qualidade dos enlaces sem fio e contenção no acesso ao meio.</p>
<p style="text-align: justify;">As soluções tradicionais para construção de redes sem fio com múltiplos saltos realizam a decisão de roteamento e encaminhamento das informações transmitidas no nível de rede, possuindo desta forma a vantagem de ser independente da tecnologia de enlace e seguindo o modelo tradicional de arquitetura de rede que coloca a comunicação entre redes como responsabilidade na camada três.Uma outra proposta para esta comunicação é abordada na implementação de técnicas de encaminhamento através de múltiplos saltos no nível de enlace, como uma extensão das funcionalidades das redes locais sem fio e estas implementações estarão disponíveis nos equipamentos dos usuários finais. Além disso, métricas que determinam a qualidade dos enlaces podem ser facilmente controladas pela camada MAC, permitindo uma melhor utilização das redes sem fio.</p>
<p style="text-align: justify;">O grupo de trabalho do IEEE 802.11s [IEEE, 2007] está desenvolvendo um padrão para comunicação através de múltiplos saltos no nível dois. Esta proposta para a construção de redes sem fio faz com que a rede de múltiplos saltos pareça uma única rede local para a terceira camada. O padrão IEEE 802.11s especifica funções de encaminhamento através de múltiplos saltos na camada MAC, utilizando um mecanismo de seleção de caminhos obrigatórios chamado HWMP (Hybrid Wireless Mesh Protocol) e fornece um framework para seleção de caminhos que permite a utilização de caminhos alternativos e futuras extensões. O padrão IEEE 802.11s amplia a definição do sistema de distribuição sem fio original do padrão IEEE 802.11, permitindo que a rede sem fio tenha uma área de cobertura que pode crescer à medida que novos nós se integram à rede adicionando um novo salto.</p>
<p>&nbsp;</p>
<p><strong>O Padrão IEEE 802.11</strong></p>
<p style="text-align: justify;">O padrão IEEE 802.11 é parte da família IEEE 802 que abrange padrões aplicados à construção de redes locais (LANs) e redes metropolitanas (MANs) da primeira e segunda. Alguns dos membros desta família são: 802.1 (Gerência de rede), 802.2 (LLC &#8211; Logical Link Control), 802.3 (Ethernet), 802.11 (LANs sem fio), 802.15 (Wireless Personal Area Network &#8211; onde 802.15.1 define Bluetooth), 802.16 (Boardband Wireless Access &#8211; Certificação WiMAX), 802.17 (Resilient Package Ring), 802.20 (Mobile Wireless Access &#8211; GSM), 802.21 (Media Independent Handover Services), 802.22 (Wireless Regional Area Network), 802.23 (Emergency Services Working Group &#8211; Novo, iniciado em março de 2010).</p>
<p style="text-align: justify;">O IEEE 802.11 é o padrão para montagem de redes sem fio locais (WLANs) e especifica as funções das camadas física (PHY) e de acesso ao meio (MAC &#8211; Medium Access Control), contendo uma série de emendas que ampliam ou aperfeiçoam suas capacidades. A Tabela 1.1 sumariza as principais emendas ao padrão existente atualmente.</p>
<table>
<tbody>
<tr>
<td style="text-align: center;" width="40%"><strong>Padrão / Emenda</strong></td>
<td style="text-align: center;"><strong>Descrição</strong></td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11 &#8211; 1997</strong></td>
<td>Padrão original que descreve a camada MAC e a técnica de modulação FHSS e DSSS. Velocidades de 1Mbps e 2 Mbps.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11a</strong></td>
<td>Emenda aprovada em 1999 que introduz nova camanda física (OFDM). Velocidade de até 54Mbps na frequencia de 5Ghz.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11b</strong></td>
<td>Emenda aprovada em 1999 que introduz nova camada física (HR / DSS). Velocidade de até 11Mbps na frequencia de 2,4Ghz.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11g</strong></td>
<td>Emenda aprovada em 2003 que introduz nova camada física (ERP). Velocidade de até 54Mbps na frrequencia de 2,4Ghz. Aceita autenticação WPA (Wireless Protect Access) com criptografia dinâmica (TKIP e AES).</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11d</strong></td>
<td>Emenda aprovada em 2001 que introduz suporte às questões regulatórias internacionais, permitindo que produtos 802.11 operem de forma compatível às diversas normas nacionais.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11e</strong></td>
<td>Emenda aprovada em 2005 que incorpora técnicas de qualidade de serviço (QoS).</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11h</strong></td>
<td>Emenda aprovada em 2004 que adequa a emenda 802.11a às normas regulatórias da União Européia.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11i</strong></td>
<td>Emenda aprovada em 2004 que amplia os mecanismos de segurança das redes 802.11.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11j</strong></td>
<td>Emenda aprovada em 2004 que adequa o padrão 802.11 às normas regulatórias do Japão.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11 &#8211; 2007</strong></td>
<td>Incorpora as emendas &#8220;a&#8221;, &#8220;b&#8221;, &#8220;d&#8221;, &#8220;e&#8221;, &#8220;g&#8221;, &#8220;h&#8221;, &#8220;i&#8221; e &#8220;j&#8221; ao padrão original de 1997.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11n</strong></td>
<td>O Grupo de Trabalho &#8220;n&#8221; propõe métodos para alcançar taxas de vazão superiores a 100Mbps através da técnica MIMO (Multiple Input, Multiple Output). Atualmente encontra-se na revisão oito.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11p</strong></td>
<td>O Grupo de Trabalho &#8220;p&#8221; propõe melhorias para apoiar aplicações em sistemas inteligentes de transporte, WAVE (Wireless Access in Vehicular Environments).</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11r</strong></td>
<td>O Grupo de Trabalho &#8220;r&#8221; padroniza o fast handoff o modo como um cliente wireless se reassocia quando estiver se locomovendo de um ponto de acesso para outro dentro da mesma rede.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11s (draft)</strong></td>
<td>Padronização de redes em malha exemplificado com mais detalhes no próximo tópico.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11t (draft)</strong></td>
<td>O Grupo de Trabalho &#8220;t&#8221; recomenda uma prática para avaliação de desempenho em redes 802.11.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11u (draft)</strong></td>
<td>O Grupo de Trabalho &#8220;u&#8221; propõe a interoperabilidade do padrão 802.11 com redes externas.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11v (draft)</strong></td>
<td>O Grupo de Trabalho &#8220;v&#8221; pretende desenvolver extensões para o padrão 802.11 MAC/PHY fornecendo soluções de gerenciamento de rede aos administradores.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11w</strong></td>
<td>O Grupo de Trabalho &#8220;w&#8221; recomenda melhorias na camada MAC para implementar, quando apropriado, integridade, autenticidade de origem e confidencialidade dos dados.</td>
</tr>
<tr>
<td style="text-align: center;"><strong>802.11y</strong></td>
<td>Criação de uma emenda para utilização da faixa de frequencia de 3650-3700Mhz nos Estados Unidos para alocação dor serviços do padrão 802.11.</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Um dos objetivos principais do IEEE ao criar o padrão 802.11 foi permitir a interligação da rede sem fio com redes cabeadas que seguem o padrão Ethernet (802.3). A rede sem fio é vista como uma extensão de uma rede cabeada. Esta decisão resulta na necessidade de uma série de mecanismos apropriados para a compatibilização da parte com fio e sem fio de uma rede local. Ao mesmo tempo, com a popularização das redes sem fio, e seu uso cada vez mais intenso, a padronização segue na direção de propostas que aumentem a banda disponível (como as emendas &#8220;b&#8221;, &#8220;a&#8221;, &#8220;g&#8221;, e &#8220;n&#8221;), tornem a rede mais segura (802.11i), auxiliem a mobilidade (802.11r) e ofereçam qualidade de serviço (802.11e).</p>
<p><span id="mce_marker"> </span></p>
<p><span id="mce_marker"> </span><span id="mce_marker"> </span></p>
<p>&nbsp;</p>
<p><strong>IEEE 802.11s</strong></p>
<p style="text-align: justify;">Em meados de Março de 2005 a foi proposto um novo padrão denominado 802.11s para as redes em malha (mesh). Esse padrão estava previsto para ser concluído em setembro de 2010, mas ainda está em ampla discussão. Entretanto a idéia é definir camadas físicas e de acesso ao meio para redes em malha de maneira a aumentar o alcance sem pontos de falha através da técnica de múltiplos saltos.</p>
<p style="text-align: justify;">Inicialmente existiam duas propostas que se destacavam pelo peso de seus integrantes: A Wi-Mesh Alliance, liderada pela Nortel inclui Philips, Thomson e Swisscom Innovations; e a SEEMesh (Simple, Efficient and Extensible Mesh) que inclui Intel, Nokia, Motorola, Cisco, e Texas Instruments, mas que no decorrer do processo se associaram para discutir o padrão.</p>
<p style="text-align: justify;">O Grupo de Trabalho “s” (TGs) tem como objetivo ampliar o padrão para permitir a criação de redes em malha de múltiplos saltos formados por dispositivos 802.11. Este grupo tem como líder Dee Denteneer (Philips), vice-líder Guido Hiertz (Philips), editor técnico Kazuyuki Sakoda (Sony) e secretário: Guenael Strutt (Motorola). Podemos observar o interesse das grandes corporações no desenvolvimento das redes em malha.</p>
<p style="text-align: justify;">Em 12 de setembro de 2010 foi realizado um encontro em Waikoloa, Hawaii, EUA e o status de conclusão do projeto foi atualizado para 95%, mostrando assim que algumas informações precisam ser definidas e ainda não existindo uma data exata para conclusão da padronização.</p>
<p>Dentre as características principais do 802.11s podem ser citados os mecanismos para fornecer acesso determinístico a rede, quadro para controle de congestionamento, economia de energia e baixo custo dos equipamentos para usuários finais.</p>
<p>&nbsp;</p>
<p><strong>Protocolos de Roteamento</strong></p>
<p><em>Formatos dos quadros IEEE 802.11</em></p>
<p style="text-align: justify;">Uma das características mais impostantes do formato dos quadros do padrão 802.11 é a presença de quatro endereços físicos (ADDR1-4). A rede sem fio foi projetada para ser uma extensão da Ethernet cabeada. Numa rede Ethernet, só são necessários dois endereços de 48 bits para enviar um pacote da origem para o destino. Numa rede sem fio, no entanto, um pacote indo para um destino pode ter que passar por intermediários (como pontos de acesso). Estes intermediários são o destino imediato do pacote, mas não seu destino final. Assim, é necessário identificá-los, bem como identificar o destino final para que o pacote chegue ao mesmo.</p>
<p style="text-align: justify;">Os endereços são numerados em vez de terem um nome porque sua função varia de acordo com tipo do quadro. Geralmente, o endereço 1 (ADDR1) é o destino imediato do pacote (isto é, identifica o receptor), o endereço 2 (ADDR2) identifica o transmissor e o endereço 3 é usado para filtragem no receptor.</p>
<p style="text-align: justify;">Seguindo a convenção dos endereços MAC IEEE 802, se o primeiro bit de um endereço é zero, este é um endereço unicast. Se o bit for um, o endereço é multicast. Se todos os bits do endereço forem iguais a um, é um quadro de broadcast. Cada endereço pode representar o destino, origem, receptor (qual estação deve processar o quadro), transmissor (qual estação enviou aquele quadro) e identifiação do Basic Service Set (BSSID). No caso do BSSID como várias redes locais podem compartilhar a mesma área, este endereço permite identificar em que rede sem fio o quadro é transmitido.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><em>O interior do IEEE 802.11s</em></p>
<p style="text-align: justify;"><em> </em>A proposta de padrão introduz novos formatos de quadros, trata de questões como segurança e gerenciamento, assim como uma série de otimizações necessárias para a montagem de redes em malha de múltiplos saltos no nível de enlace. Além disso, boa parte de seu conteúdo é dedicada à descrição de protocolos para encaminhamento de quadros na rede em malha.</p>
<p style="text-align: justify;">Originalmente, dois mecanismos de seleção de caminho foram propostos em versões anteriores do draft. RA-OLSR (Radio-Aware Optimized Link State Routing), que é um protocolo pró-ativo com um mecanismo de controle de inundação baseado no OLSR, porém adaptado para trabalhar em nível dois ao invés do três. E um protocolo híbrido, chamado HWMP (Hybrid Wireless Mesh Protocol), baseado no AODV e na sua extensão AODV-ST. O HWMP é atualmente o protocolo obrigatório e o único restante na proposta atual. RA-OLSR foi removido em favor de um framework de seleção de caminhos extensível que possibilita implementações alternativas de protocolos e métricas para seleção de caminhos.</p>
<p style="text-align: justify;">O HWMP pode, portanto, ser configurado para operar em dois modos: modo reativo sob demanda (on-demand reactive mode) ou modo pró-ativo baseado em árvore (tree-based proactive mode). O primeiro, modo de operação sob demanda, é apropriado para estabelecimento de caminhos entre nós mesh (MPs) em um esquema peer-to-peer, ao passo que no segundo, modelo pró-ativo, cada nó calcula antecipadamente uma topologia em árvore onde a raiz é um determinado nó que se anuncia com tal (MP raiz). Esta abordagem pode ser implementada através de dois mecanismos distintos, pode aumentar a eficiência no encaminhamento de quadros quando existe uma tendência de concentração de tráfego no nó raiz, que pode, por exemplo, estar atuando como portal mesh (MPP).</p>
<p style="text-align: justify;">O que faz o HWMP realmente híbrido é o fato de que ambos os modos (pró-ativo e reativo) podem ser usados concomitantemente. A principal vantagem desta abordagem é que, em certas circunstâncias, apesar de disponível de antemão, o caminho entre dois nós em uma topologia em árvore pode não ser o caminho ótimo e, neste momento, a descoberta sob demanda pode ser empregada, fornecendo um caminho alternativo mais apropriado. Um exemplo de tal circunstância é o caso onde dois nós, que não são MP raiz, são capazes de trocar dados através de um caminho de custo mínimo (diretamente por um simples enlace mesh), mas são forçados a fazer com que seus quadros subam e desçam a árvore para alcançar um nó raiz.</p>
<p style="text-align: justify;">Na especificação atual do IEEE 802.11s, a métrica obrigatória para definir a qualidade de um enlace sem fio é a chamada Airtime Link Metric. Ela representa a quantidade de tempo necessária para a transmissão de um quadro levando em consideração a taxa de transmissão, o overhead imposto pela camada física e a probabilidade de retransmissão do quadro (inferida da taxa de erros do enlace em questão). A forma de cálculo desta taxa de erros, no entanto é deixada a cargo da implementação, ou seja, não é descrita pela norma. Nós transmitindo em uma taxa baixa podem usar toda a banda do canal com suas longas transmissões da mesma maneira que um enlace com alta probabilidade de erro pode ocupar o meio por um longo tempo devido às retransmissões.</p>
<p style="text-align: justify;">Durante o processo de descoberta de um caminho (path discovery), cada nó participante irá contribuir com seus cálculos de métrica acrescentando ou atualizando dados nos quadros de gerenciamento dedicados à troca de informações de encaminhamento. Independente do modo de operação (pró-ativo ou reativo) as funções do HWMP são implementadas pelos seguintes quadros de gerenciamento:</p>
<p style="text-align: justify;">Path Request (PREQ) – requisição de caminho – estes quadros são enviados em difusão (broadcast) por um MP que deseja encontrar um caminho para outro MP.</p>
<p style="text-align: justify;">Path Reply (PREP) – resposta de caminho – estes quadros são enviados pelo MP de destino, em resposta ao recebimento de uma requisição de caminho (PREQ).</p>
<p style="text-align: justify;">Path Error (PERR) – erro no caminho – estes quadros são usados para notificação de que um caminho não está mais disponível.</p>
<p style="text-align: justify;">Root Announcement (RANN) – anúncio de nó raiz – estes quadros são utilizados pelo nó que se anuncia como nó raiz (MP raiz). Existem dois mecanismos para implementação do modo pró-ativo no HWMP, sendo o quadro RANN usado em um deles.</p>
<p style="text-align: justify;">Exemplificando um caso, onde um nó designado como origem S-MP deseja encontrar um caminho para um nó de destino D-MP e, para tal, precisará da colaboração dos nós intermediários I-MPs.</p>
<p style="text-align: justify;">O mecanismo opera da seguinte maneira. O nó S-MP envia, por difusão, um quadro PREQ contendo o endereço MAC de D-MP, o nó de destino. Um nó mesh que receba esse quadro deverá checar suas tabelas e verificar se conhece um caminho para D-MP. Em caso afirmativo, deverá enviar um quadro de resposta (PREP) de volta para S-MP. Em caso negativo, o nó mesh intermediário (I-MP) deverá retransmitir o quadro, novamente usando o endereço MAC de difusão (FF:FF:FF:FF:FF:FF).</p>
<p style="text-align: justify;">O nó de origem S-MP, no entanto, pode evitar que nós intermediários respondam à requisição PREQ setando o flag DO (Destination Only – destino apenas) no cabeçalho do quadro PREQ. Neste caso, apenas o nó de destino poderá responder a requisição original emitindo um quadro PREP. Desta forma, ao receber uma requisição (PREQ) onde DO tenha sido ativado, um nó intermediário irá forçosamente retransmitir o quadro PREQ e o processo se repetirá até que a requisição alcance seu destino.</p>
<p style="text-align: justify;">Outro flag RF (Reply and Forward – responda e encaminhe) também pode ser empregado para controlar o comportamento dos nós intermediários. Se RF for setado e DO não, um nó intermediário poderá responder a requisição, isto é, enviar um PREP (contanto, é claro, que conheça um caminho para o nó de destino), mas ainda assim deverá retransmitir o quadro de requisição adiante.</p>
<p style="text-align: justify;">Se, por outro lado, DO e RF estiverem desativados, um nó intermediário está autorizado a responder a requisição, mas uma vez que o faça, não deverá mais retransmitir o quadro PREQ. Observa-se, portanto, que os flags DO e RF determinam a quantidade de respostas (PREPs) recebidas pela origem S-MP.</p>
<p style="text-align: justify;">A cada vez que manipula um quadro PREQ, um nó mesh intermediário aprende um caminho reverso para o nó de origem S-MP. Este poderá ser útil mais tarde para o encaminhamento dos quadros de resposta (PREPs), no caso do nó intermediário em questão participar do caminho selecionado. Justamente por conta da formação deste caminho reverso, os quadros de resposta (PREPs) poderão ser encaminhados em unicast para o nó de origem S-MP.</p>
<p style="text-align: justify;">Os quadros PREQ e PREP carregam um campo de métrica que é incrementado por cada nó intermediário, refletindo os tempos de transmissão de cada enlace no caminho. É através desta métrica que o nó de destino D-MP é capaz de selecionar um caminho reverso dentre os múltiplos caminhos eventualmente existentes (dado um cenário de nuvem densa). Analogamente o nó de origem S-MP poderá escolher entre vários caminhos diretos, caso existam, através da métrica contida nos quadros de resposta, encerrando, desta forma, o ciclo de descoberta de caminho.</p>
<p style="text-align: justify;">No que diz respeito à densidade da nuvem mesh, devemos notar que, em um meio sem fio, grande cobertura e alta taxa de transmissão são objetivos conflitantes, pois estes são inversamente proporcionais. Quadros broadcast e multicast são normalmente transmitidos a baixas taxas para atingir o maior número de nós possíveis. Nós distantes terão maior chance de receber os quadros, se eles foram transmitidos a uma taxa baixa. Por outro lado, esses quadros levarão um maior tempo para se propagar através da nuvem, podendo trazer problemas em um ambiente denso.</p>
<p style="text-align: justify;">Como mencionado anteriormente, além do mecanismo de descoberta de caminho por demanda, o protocolo HWMP provê dois diferentes métodos pró-ativos para construção de tabelas de encaminhamento. O primeiro deles é baseado no emprego de quadros PREQ e por isso chamado de “mecanismo pró-ativo PREQ”. O segundo utiliza um quadro especial, chamado RANN e, da mesma forma, fica designado como “mecanismo pró-ativo RANN”.</p>
<p style="text-align: justify;">No mecanismo baseado em PREQs, uma vez configurado para operar como MP raiz, um nó mesh difunde periodicamente um quadro PREQ com os flags DO e RF ativados, o que configura um quadro “PREQ pró-ativo”. Cada nó que receba este quadro irá atualizar seu cabeçalho com os valores de métrica e contagem de saltos e retransmiti-lo. Com o tempo, todos os nós da nuvem mesh serão notificados.</p>
<p style="text-align: justify;">Ao receber um PREQ pró-ativo um nó responde ou não com um PREP em função do valor de um terceiro flag no cabeçalho do quadro de requisição. Se setado, este flag chamado PREP pró ativo (Proactive PREP) faz com que os nós enviem um PREP de volta ao nó raiz. Na verdade, mesmo que PREP pró-ativo esteja desativado, um nó pode responder ao nó raiz com um PREP se desejar estabelecer um caminho no esquema peer-to-peer com o nó raiz. Por exemplo, ele pode ter dados para enviar ao nó raiz.</p>
<p style="text-align: justify;">No segundo mecanismo pró-ativo previsto pelo IEEE 802.11s, ao invés de utilizar quadros PREQs o nó raiz inunda a nuvem mesh com quadros RANN. Neste caso, os nós que eventualmente desejem formar caminhos para o nó raiz enviam, para este, um quadro PREQ.</p>
<p style="text-align: justify;">Desta vez, a requisição PREQ será enviada em unicast, mas será processada pelos nós intermediários através das mesmas regras aplicadas aos quadros PREQ difundidos pelo mecanismo reativo do protocolo. O nó raiz, ao receber a requisição responderá com o respectivo quadro PREP, estabelecendo assim, um caminho entre o nó requisitante e o nó raiz. Por fim, o mecanismo RANN introduz um passo adicional e pode ser vantajoso se comparado com o mecanismo PREQ apenas se uma pequena porção dos MPs deseja estabelecer caminhos com o nó raiz.</p>
<p style="text-align: justify;">Finalmente, é importante comentar o papel do quadro PERR dentro do esquema recém descrito. Sempre que um quadro não puder ser encaminhado por um nó pertencente ao caminho, este deverá notificar o remetente sobre a quebra do enlace e, consequente inviabilidade daquele caminho. Esta informação deverá ser encaminhada de volta a todos os participantes anteriores alcançando finalmente o remetente original que, assim, deverá iniciar um novo ciclo de descoberta de caminho.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><em>Formatos dos quadros 802.11s</em></p>
<p style="text-align: justify;">Inicialmente, recordamos que os dois primeiros bytes de um quadro 802.11 contêm o chamado campo de controle do quadro (frame control field), sendo que dois bits deste campo (o terceiro e o quarto) identificam o tipo de quadro.</p>
<table>
<tbody>
<tr>
<td>00 = Quadro de Gerenciamento</td>
<td>01 = Quadro de Controle</td>
</tr>
<tr>
<td>10 = Quadro de Dados</td>
<td>11 = Reservado</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Além do campo tipo, outros quatro bits são reservados para definir subtipos dentro de uma categoria. Assim, um beacon, por exemplo, é definido como tipo gerenciamento (0&#215;0) e subtipo beacon (0&#215;8), ao passo que um ACK (acknowledgement) pertence ao tipo controle (0&#215;1) e subtipo (0xD). Por se tratar de uma extensão ao padrão IEEE 802.11, os quadros mesh introduzidos pelo 802.11s devem ser classificados dentro dos quatro tipos existentes. Inicialmente, pretendia-se utilizar o tipo reservado, ainda disponível (0&#215;3), mas em versões mais recentes da proposta definiu-se que:</p>
<p style="text-align: justify;">Os dados trocados por MPs são transportados por quadros de dados mesh (Mesh Data Frames), definidos como quadros de dados (tipo 0&#215;2) com um cabeçalho mesh pré-posto ao corpo do quadro 802.11.</p>
<p style="text-align: justify;">Quadros de gerência da rede mesh, como por exemplo os quadros PREQ, PREP, etc, são definidos como pertencentes ao tipo 0&#215;0 (management frames) e subtipo 0xF, até então reservado. Estes quadros foram batizados como Multihop Action frames.</p>
<p style="text-align: justify;">Outra característica dos novos quadros é a utilização dos flags FromDS e ToDS. Estes bits são utilizados, em uma rede IEEE 802.11, para marcar pacotes que sejam destinados a um sistema de distribuição (ToDS) ou sejam oriundos deste (FromDS). O sistema de distribuição, em uma rede sem fio, é a infra-estrutura que pode interligar diversos pontos de acesso ou mesmo conectar a rede sem fio à Internet. Assim, por exemplo, um quadro oriundo de uma estação IEEE 802.11 em modo infra-estrutura que seja destinado a outra estação IEEE 802.11 tem os flags FromDS = 0 e ToDS = 1. Um sistema de distribuição sem fio (Wireless Distribution System), ou WDS, é aquele em que diversos pontos de acesso permitem a troca de dados entre estações a eles associadas através de quadros IEEE 802.11, ou seja, por intermédio de um backbone sem fio, e não através de quadros IEEE 802.3 como em uma rede cabeada. Chama-se de quadro WDS aquele que possui ambos os flags fromDS e ToDS setados. Sua função original é, portanto, a de permitir a troca de dados entre estações associadas a diferentes pontos de acesso dentro de uma mesma rede local sem fio. O que o IEEE 802.11s propõe é que quadros trocados pelos MPs em um nuvem mesh sejam também marcados com ambos esses flags.</p>
<p style="text-align: justify;">Como não foi padronizada, diversas implementações proprietárias e não documentadas de WDS podem ser encontradas em modelos variados de pontos de acesso, algumas potencialmente conflitantes com o padrão emergente. Isso aponta para um futuro de ajustes não apenas na proposta do IEEE 802.11s, mas destas implementações, de forma a evitar problemas de compatibilidade.</p>
<p style="text-align: justify;">É oportuno observar que em uma rede IEEE 802.11 no modo ad-hoc, cada quadro traz ambos os flags (FromDS e ToDS) desmarcados (zerados). Isto evidencia uma importante diferença. Uma rede ad-hoc IEEE 802.11 é aquela em que conexões oportunistas podem ser formadas entre estações IEEE 802.11, mas onde não há múltiplos saltos ou, em outras palavras, encaminhamentos de quadros, e não deve ser confundida com uma rede mesh.Os primeiros dois bits determinam a quantidade de endereços MAC presentes no último campo, Mesh Address Extension, o que pode variar entre 0 e 3, indicando um campo de 0, 6, 12 ou 18 bytes, onde cada endereço possui 6 bytes.</p>
<p style="text-align: justify;">O campo Mesh TTL indica a quantidade máxima de saltos que um quadro poderá realizar na nuvem mesh e é decrementado por cada nó que retransmitir o quadro. Seu objetivo é evitar que quadros sejam eternamente retransmitidos na nuvem por conta de algum loop de encaminhamento.</p>
<p style="text-align: justify;">O número de sequência mesh (Mesh Sequence Number) é um identificador do quadro que permite a uma estação detectar o recebimento de duplicatas prevenindo retransmissões desnecessárias dentro da nuvem mesh. E, finalmente, o já mencionado campo Mesh Address Extension que carrega endereços MAC extras, já que a rede mesh pode precisar de até seis endereços.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><em>Conectividade de STAs e Endereçamento de Quadros</em></p>
<p style="text-align: justify;"><em> </em>De acordo com o IEEE 802.11s, nós não-mesh (STAs) podem participar da rede mesh através de um nó mesh (MP) com capacidades de ponto de acesso (nós MAP). STAs se comunicando pela nuvem mesh são intermediados pelos seus respectivos MAPs e este cenário constitui um exemplo de como é usado o formato de quadro com seis endereços.</p>
<p style="text-align: justify;">O formato de quadro IEEE 802.11 usual, com quatro endereços, pode ser usado tanto para transmissão de dados como para quadros de controle. Os quatro endereços MAC nesse caso são:</p>
<ul>
<li>SA (Source Address) é o endereço MAC da fonte do quadro, ou seja, o nó que gerou o quadro original.</li>
<li>DA (Destination Address) é o endereço MAC do nó que é o destino final do quadro.</li>
<li>TA (Transmitter Address) é o endereço MAC do nó que transmite um quadro. Será igual à SA quando o quadro for originado e transmitido pela primeira vez. Será diferente de SA toda vez que for transmitido por um nó intermediário.</li>
<li>RA (Receiver Address) é o endereço MAC do próximo nó que irá receber o quadro e pode ser o mesmo que DA quando o quadro está para alcançar seu destino final.</li>
</ul>
<p style="text-align: justify;">Em resumo, SA e DA estão associados aos nós extremos em um caminho completo pela nuvem mesh, ao passo que TA e RA estão associados aos nós participantes de uma transmissão em um enlace. Mas, quadros com quatro endereços, utilizados no padrão IEEE 802.11 original para transmissão usando um sistema de distribuição sem fio, não são suficientes para implementar todas as funcionalidades propostas pela emenda “s”.</p>
<p style="text-align: justify;">Como exemplificado, se dois nós não-mesh estão se comunicando através da nuvem mesh, dois endereços adicionais são necessários – o Mesh SA (Mesh Source Address) e o Mesh DA (Mesh Destination Address). Para entendê-los, as entidades DA e SA são definidas de uma forma mais geral:</p>
<ul>
<li>Mesh SA – Em um quadro de seis endereços, o SA (Source Address) é o nó originador da comunicação fim-a-fim e esta fora da nuvem mesh, enquanto o Mesh SA é o endereço do nó que introduz o quadro na nuvem mesh (em nome de SA).</li>
<li>Mesh DA – Da mesma forma, DA (Destination Address) define o endereço final do quadro, ao passo que Mesh DA é o endereço da última estação que recebe o quadro na nuvem (e faz isso em nome de DA).</li>
</ul>
<p style="text-align: justify;">Um outro caso onde o formato com seis endereços é usado é no modo pró-ativo do HWMP, baseado em árvore, onde dois nós conseguem se comunicar através de um MP raiz. Neste cenário, o caminho completo inclui dois sub-caminhos – um do MP fonte até o MP raiz e outro deste até o MP de destino. Finalmente, MPs conseguem também se comunicar com o “mundo exterior” através de portais mesh (MPPs). Em todos esses casos, mais de quatro endereços são necessários.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><em>Características Adicionais</em></p>
<p style="text-align: justify;">O Padrão IEEE 802.11s cobre muito mais itens do que podemos analisar nesta oportunidade. Foram apresentados os pontos mais importantes para o entendimento do funcionamento de uma rede mesh, mas ainda existem muitos outros aspectos interessantes para serem abordados.</p>
<p style="text-align: justify;">O IEEE 802.11s introduz um método de acesso ao meio chamado MDA (Mesh Deterministic Access), que ajuda a reduzir a contenção com o uso de uma nova função de coordenação. O mecanismo é opcional e pode ser implementado por um sub-grupo de MPs presentes na nuvem mesh. Como conseqüência, MPs com o MDA ativado devem ser capazes de interoperar com MPs com o MDA desativado, mesmo que isso prejudique a eficácia do esquema.</p>
<p style="text-align: justify;">A idéia central do MDA é introdução de períodos de tempo, chamados MDAOPs (MDA Opportunities), período pelo qual o nó com o MDA ativado tem a oportunidade de acessar o meio com o mínimo de contenção, pode ainda haver contenção devido a presença de nós com o MDA desativado. O MDA é implementado através da ação de cinco novos quadros: MDA Setup Request, MDA Setup Reply, MDAOP Advertisement Request, MDAOP Advertisements, MDAOP Set Teardown.</p>
<p style="text-align: justify;">Controle de congestionamento é brevemente citado na proposta do padrão. Um mecanismo de controle de congestionamento deve ser selecionado para toda a rede e também será anunciado pelo elemento de configuração mesh, junto com o protocolo de seleção de caminho e métrica. O draft descreve o formato do quadro de notificação de congestionamento (Congestion Control Notification) enviado pelo MP para seu MP par (ou MPs) a fim de indicar seu status de congestionamento. Contudo, detalhes sobre como o congestionamento é detectado ou o que provoca a notificação de congestionamento são considerados além do escopo do futuro padrão.</p>
<p style="text-align: justify;">Economia de energia, por outro lado, recebe maior atenção no draft. A idéia principal é que alguns nós escolhidos, chamados de Power Save Supporting MPs, irão armazenar quadros de outros nós, chamados de Power Saving MPs, e os transmitir apenas em tempos negociados. Este é um serviço similar ao que um ponto de acesso deve prover aos nós que estão associados a ele nas redes IEEE 802.11.</p>
<p style="text-align: justify;">Em termos de segurança, IEEE 802.11s descreve mecanismos que provêem tanto autenticação e privacidade. A segurança é baseada no mecanismo MSA (Mesh Security Association), que garante segurança no enlace entre dois MPs e pode operar mesmo que não exista nenhum autenticador central, isto é, existe suporte para autenticação distribuída.</p>
<p style="text-align: justify;">Uma vez configurado para oferecer segurança, um MP só deve estabelecer peer links seguros com outros MPs e renegociar peer links pré-existentes que ainda sejam inseguros. O estabelecimento de um peer link envolve a troca de quadros extras (como um four-way handshake) que começa imediatamente após a troca inicial de quadros Peer Link Open e Peer Link Confirm.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><strong>Case: Projeto One Laptop per Child (OLPC)</strong></p>
<p style="text-align: justify;">O projeto One Laptop per Child é realizado pela One Laptop per Child Association, fundada por Nicholas Negroponte. O objetivo do projeto é criar um laptop educacional de baixíssimo custo para a inclusão digital das crianças de escolas pelo mundo.</p>
<p style="text-align: justify;">A missão do projeto, conforme descrita no site do projeto, é “criar oportunidades educacionais para as crianças mais pobres do mundo provendo cada criança com um laptop robusto, com baixo custo, baixo consumo de energia, e conectado, com conteúdo colaborativo, que seja prazeroso e auto-explicativo”.</p>
<p style="text-align: justify;">O subsistema de rádio do XO é composto por um chip controlador Marvell 88W8388, que contém um processador ARM9 e memórias RAM e ROM, e um rádio Marvell 88W8015, com interface IEEE 802.11b/g. O sistema de rádio está conectado à CPU principal através de um barramento USB (Universal Serial Bus) e continua sendo alimentado de energia mesmo que a CPU principal não esteja. O processamento de quadros MAC é realizado pelo controlador Marvell 8838 e não utiliza a CPU principal, necessária apenas para o processamento de informações de nível de rede e camadas superiores.</p>
<p style="text-align: justify;">A segregação do subsistema de rádio traz uma vantagem interessante decorrente do fato deste poder operar ainda que a CPU principal se encontre em modo inativo. A possibilidade do SoC implementado pelo Marvell 8838 processar quadros IEEE 802.11 sem a necessidade de intervenção da CPU principal permite que um XO opere como nó intermediário de uma nuvem mesh ainda que esteja desligado e com um consumo da ordem de apenas 0,5 watt.</p>
<p style="text-align: justify;">A CPU principal é solicitada apenas no processamento de pacotes IP. Portanto, é importante salientar que a implementação do IEEE 802.11s reside no subsistema de rádio e, com isso, um laptop XO pode participar ativamente da rede mesh e encaminhar quadros de outros nós da rede mesmo sem o uso da CPU principal ou de uma pilha de protocolos TCP/IP.</p>
<p style="text-align: justify;">Dessa maneira, é possível obter uma rede mesh para fornecer conexões aos laptops XO com um custo extremamente baixo, já que não há necessidade de pontos fixos de antenas para o estabelecimento dos nós, bastando um ponto de conexão com a internet para que salas de aula estejam conectadas.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><strong>Conclusão</strong></p>
<p style="text-align: justify;">As redes em malha sem fio, ou redes mesh, possuem a grande vantagem do baixo custo de implementação e manutenção, pois uma vez configurada, novos nós são incorporados à malha através dos protocolos de roteamento, sem a necessidade de configuração por parte dos administradores da rede.</p>
<p style="text-align: justify;">Além de projetos como o OLPC, onde as redes mesh tornam possíveis a criação de uma infraestrutura onde antes isso não era pensado devido ao custo de implementação, as redes em malha podem ser utilizadas para baratear custos, utilizando a rede criada como rota alternativa quando existente. É só imaginarmos os celulares criando uma malha utilizando o 802.11s, e quando na área de uma rede mesh, utilizando-a para trafegar os dados ao invés de redes com custo mais elevado, como redes 3G.</p>
<p style="text-align: justify;">Com a aprovação do padrão 802.11s, novos dispositivos utilizarão o grupo, permitindo então a expansão de uma excelente tecnologia a um custo baixo para o estabelecimento de redes em instituições de ensino, condomínios e outras localidades.</p>
<p><span id="mce_marker"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2011/05/redes-em-malha-sem-fio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Será que o do Mac também é bom?</title>
		<link>http://oslunaticos.com.br/2011/01/sera-que-o-do-mac-tambem-e-bom/</link>
		<comments>http://oslunaticos.com.br/2011/01/sera-que-o-do-mac-tambem-e-bom/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 16:10:18 +0000</pubDate>
		<dc:creator>Ask</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/2011/01/sera-que-o-do-mac-tambem-e-bom/</guid>
		<description><![CDATA[Não é exatamente para isso que server essa App, mas ela também se propõe a mandar as entradas no “journal” para um blog. Já que é assim, resolvi criar esse texto pra ver como funciona tal característica da App. O corretor ortográfico é “estilo Word” com a linha sublinhada e tudo mais, também faz a [...]]]></description>
			<content:encoded><![CDATA[<p>Não é exatamente para isso que server essa App, mas ela também se propõe a mandar as entradas no “journal” para um blog.<br />
Já que é assim, resolvi criar esse texto pra ver como funciona tal característica da App.</p>
<p>O corretor ortográfico é “estilo Word” com a linha sublinhada e tudo mais, também faz a inclusão de imagens sem problemas no estilo “drag-n-drop”.</p>
<p>Só falta testar mesmo o envio para o WordPress, se você conseguir ler isso é porque funcionou.</p>
<p><img src="http://oslunaticos.com.br/wp-content/uploads/2011/01/wpid-Screenshot2011-01-19at14.12.52-2011-01-19-14-10.jpg" alt="wpid-Screenshot2011-01-19at14.12.52-2011-01-19-14-10.jpg" width="390" height="325" /></p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2011/01/sera-que-o-do-mac-tambem-e-bom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Live Writer, algu&#233;m j&#225; usou?</title>
		<link>http://oslunaticos.com.br/2011/01/windows-live-writer-algum-j-usou/</link>
		<comments>http://oslunaticos.com.br/2011/01/windows-live-writer-algum-j-usou/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 12:13:00 +0000</pubDate>
		<dc:creator>Ask</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Live Writer]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/2011/01/windows-live-writer-algum-j-usou/</guid>
		<description><![CDATA[Por algum motivo surgiu um “assistente” do Windows Live Writer na minha máquina pedindo para que fosse feita a configuração do software. Como eu gosto sempre de testar coisas resolvi fazer esse post no próprio e até agora parece bom. Ele buscou as categorias já definidas no blog, deixa escolher a data de publicação e [...]]]></description>
			<content:encoded><![CDATA[<p>Por algum motivo surgiu um “assistente” do Windows Live Writer na minha máquina pedindo para que fosse feita a configuração do software. Como eu gosto sempre de testar coisas resolvi fazer esse post no próprio e até agora parece bom.<a href="http://oslunaticos.com.br/wp-content/uploads/2011/01/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; padding-top: 0px; border-width: 0px;" title="image" src="http://oslunaticos.com.br/wp-content/uploads/2011/01/image_thumb.png" border="0" alt="image" width="244" height="172" /></a></p>
<p>Ele buscou as categorias já definidas no blog, deixa escolher a data de publicação e as “marcas” (aka keywords) também. O corretor ortográfico existe mas não é automático como no Word (aquelas cobrinhas podem sem um bocado chatas mesmo!). Existe um preview que utiliza inclusive o tema fazendo aquela “velha” expressão WYSWYG ser mais verdadeira do que nunca. Finalmente para os puristas o “código-fonte” em html também está numa aba para ser editado! E tudo isso sem timeout e sem alguns bugs que encontrei no editor nativo do WordPress.</p>
<p>Quem sabe o blog volta a vida com esse software!</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2011/01/windows-live-writer-algum-j-usou/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mais um dá série: &#8220;Eu amo o Brasil&#8221; &#8211; Episódio: Comprar um Software</title>
		<link>http://oslunaticos.com.br/2010/10/mais-um-da-serie-eu-amo-o-brasil-episodio-comprar-um-software/</link>
		<comments>http://oslunaticos.com.br/2010/10/mais-um-da-serie-eu-amo-o-brasil-episodio-comprar-um-software/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 18:19:04 +0000</pubDate>
		<dc:creator>Ask</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Custo Brasil]]></category>
		<category><![CDATA[WinDVD]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1232</guid>
		<description><![CDATA[Ontem estava num momento de superação, resolvi vencer meus traumas e tentar novamente assistir Blu-Ray no PC. Checklist: Leitor de BD: OK! Placa de Video com HDMI e Suporte à HDCP: OK! Display com HDMI e Suporte à HDCP: OK! Software Player: Fail! Tinha que comprar um software&#8230; Procurei rapidamente pois a pizza já tava [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Ontem estava num momento de superação, resolvi vencer meus traumas e tentar novamente assistir Blu-Ray no PC.</p>
<p>Checklist:</p>
<ul>
<li>Leitor de BD: <span style="color: #339966;">OK!</span></li>
<li><span style="color: #000000;">Placa de Video com HDMI e Suporte à HDCP: <span style="color: #339966;">OK!</span></span></li>
<li><span style="color: #000000;">Display com HDMI e Suporte à HDCP: <span style="color: #339966;">OK!</span></span></li>
<li><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;">Software Player:</span> <span style="color: #ff0000;">Fail!</span></span></span></li>
</ul>
<p><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;">Tinha que comprar um software&#8230; Procurei rapidamente pois a pizza já tava chegando. As três opções que encontrei são pagas (Dicas? Alguém tem uma solução free?) , fui ver o preço de todas.</span></span></span></p>
<p><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;">Segundo o site que fez a análise, o PowerDVD estava mais caro do que o Total Media que por sua vez estava mais caro que o WinDVD. Não tive dúvida, WinDVD. </span></span></span></p>
<p><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;">Ao &#8220;chegar&#8221; ao site do programa da Corel, tive uma supresa ao ver que ele detecta sua localização e coloca a versão apropriada para o visitante. Fui jogado no &#8220;.br&#8221; e fiquei abismado:</span></span></span></p>
<p style="text-align: center;"><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/WinDVDBr.png"><img class="aligncenter" title="WinDVDBr" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/WinDVDBr-300x123.png" alt="" width="300" height="123" /></a></span></span></span></p>
<p><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;">R$199,00!! Que absurdo!! Verifiquei que na parte superior do site tem um selecionador de paises e com apenas um clique&#8230;</span></span></span></p>
<p style="text-align: center;"><span style="color: #000000;"><span style="color: #339966;"><span style="color: #000000;"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/WinDVDUS.png"><img class="size-medium wp-image-1231 aligncenter" title="WinDVDUS" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/WinDVDUS-300x130.png" alt="" width="300" height="130" /></a></span></span></span></p>
<p>Na versão US o preço virou US$39,99!!! Que pelo câmbio de ontem saiu em reais por R$68,57 através do PayPal!</p>
<p>Você também não ama o &#8220;Custo Brasil&#8221;&#8230;</p>
<p>P.S.: Sobre o Software: Não tem muita firula e faz o serviço.</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2010/10/mais-um-da-serie-eu-amo-o-brasil-episodio-comprar-um-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logitech Driving Force GT &#8211; Unboxing + Review</title>
		<link>http://oslunaticos.com.br/2010/10/logitech-driving-force-gt-unboxing-review/</link>
		<comments>http://oslunaticos.com.br/2010/10/logitech-driving-force-gt-unboxing-review/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 23:21:57 +0000</pubDate>
		<dc:creator>bernardbr</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Gran Turismo]]></category>
		<category><![CDATA[Logitech]]></category>
		<category><![CDATA[Logitech Driving Force GT]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[unboxing]]></category>
		<category><![CDATA[Volante]]></category>
		<category><![CDATA[Wheel]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1195</guid>
		<description><![CDATA[Caros leitores, eis meu primeiro post. Espero que gostem! Hoje recebi um dos meus sonhos de consumo, o volante Logitech Driving Force GT. Quem curte jogos de corrida sempre se imagina correndo utilizando um bom volante, um volante que dê a verdadeira sensação de direção de um carro. E este é o caso desta maravilha! [...]]]></description>
			<content:encoded><![CDATA[<p>Caros leitores, eis meu primeiro post.</p>
<p>Espero que gostem!</p>
<p>Hoje recebi um dos meus sonhos de consumo, o volante Logitech Driving Force GT. Quem curte jogos de corrida sempre se imagina correndo utilizando um bom volante, um volante que dê a verdadeira sensação de direção de um carro. E este é o caso desta maravilha!</p>
<p>Ele vem muito bem embalado e assusta à primeira vista, devido ao tamanho da caixa.</p>
<div id="attachment_1196" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0127.jpg"><img class="size-medium wp-image-1196" title="Primeira caixa" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0127-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Primeira Caixa</p></div>
<div id="attachment_1198" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01281.jpg"><img class="size-medium wp-image-1198" title="Segunda caixa" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01281-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Segunda caixa</p></div>
<p>O produto é fabricado em plástico rígido de ótima qualidade e tem dimensões agradáveis para a direção (cerca de 28 cm)</p>
<div id="attachment_1199" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0129.jpg"><img class="size-medium wp-image-1199" title="Abrindo a caixa" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0129-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Abrindo a caixa</p></div>
<div id="attachment_1206" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01301.jpg"><img class="size-medium wp-image-1206" title="Fora da caixa" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01301-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Fora da caixa</p></div>
<div id="attachment_1210" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01341.jpg"><img class="size-medium wp-image-1210" title="Peças" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01341-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Peças</p></div>
<div id="attachment_1208" class="wp-caption aligncenter" style="width: 310px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01321.jpg"><img class="size-medium wp-image-1208" title="Peças" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01321-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Peças</p></div>
<div id="attachment_1211" class="wp-caption aligncenter" style="width: 235px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01351.jpg"><img class="size-medium wp-image-1211" title="Montado" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN01351-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Montado</p></div>
<div id="attachment_1205" class="wp-caption aligncenter" style="width: 235px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0135.jpg"><img class="size-medium wp-image-1205" title="Montado" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0135-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Montado</p></div>
<p>Nos primeiros testes pude perceber que ele é muito preciso, tanto na direção como na aceleração e frenagem (No próximo post tentarei colocar vídeos da utilização). Possui funcionalidades específicas para o Gran Turismo que permite a modificação de alguns atributos do carro durante a corrida (O que não é muito simples pois temos que fazer o ajuste de forma correta sem esquecer de fazer as curvas).</p>
<div id="attachment_1212" class="wp-caption aligncenter" style="width: 235px"><a href="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0138.jpg"><img class="size-medium wp-image-1212" title="Em uso!" src="http://oslunaticos.com.br/wp-content/uploads/2010/10/DSCN0138-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Em uso!</p></div>
<p>Recomendo a todos os entusiastas de simuladores de corrida. O equipamento é excelente.</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2010/10/logitech-driving-force-gt-unboxing-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GUI para Scripts</title>
		<link>http://oslunaticos.com.br/2010/08/gui-para-scripts/</link>
		<comments>http://oslunaticos.com.br/2010/08/gui-para-scripts/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 13:19:14 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[GTK+]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Zenity]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1181</guid>
		<description><![CDATA[Atualmente tenho desenvolvido scripts para automação de algumas rotinas e então fui apresentado ao Zenity. Quando se escreve scripts, é possível usar o Zenity para criar diálogos simples que interajam graficamente com o usuário: Você pode criar um diálogo para obter informações do usuáro. Por exemplo, você pedir ao usuário que selecione uma data em [...]]]></description>
			<content:encoded><![CDATA[<p>Atualmente tenho desenvolvido scripts para automação de algumas rotinas e então fui apresentado ao <a href="http://library.gnome.org/users/zenity/stable/index.html.pt_BR" target="_blank">Zenity</a>.</p>
<blockquote><p>Quando se escreve scripts, é possível usar o Zenity para criar diálogos simples que interajam graficamente com o usuário:</p>
<ul>
<li>Você pode criar um diálogo para obter informações do usuáro. Por exemplo, você pedir ao usuário que selecione uma data em um diálogode calendário ou para escolher um arquivo por um diálogo de seleção de arquivo.</li>
<li> Você pode criar um diálogo para prover informações ao usuário. Por exemplo, você pode usar um diálogo indicador de progresso para indicar o estado atual de uma operação ou usar um diálogo de mensagem de aviso para alertar o usuário.</li>
</ul>
<p>O Zenity lhe habilita a criar os seguintes tipos de diálogo simples:</p>
<ul>
<li>Calendário</li>
<li>Seleção de arquivo</li>
<li>Lista</li>
<li>Ícone de notificação</li>
<li>Mensagem</li>
<li>Indicador de progresso</li>
<li>Entrada de texto</li>
<li>Informação de texto</li>
</ul>
</blockquote>
<p style="text-align: center;"><img class="aligncenter" title="Zenity Progress" src="http://library.gnome.org/users/zenity/stable/figures/zenity-progress-screenshot.png.pt_BR" alt="" width="210" height="130" /></p>
<p>Uma das funcionalidades que achei mais interessante e util foi a barra de progresso. Partindo deste ponto criei um script para mostrar uma barra te progresso enquanto aguardamos um período de tempo para que alguma tarefa seja executada novamente.</p>
<pre>#!/bin/bash
(
   for(( i=0; i&lt;=$1; i++))
   do
      j=`echo $i \* 100 / $1 | <a href="www.gnu.org/software/bc/">bc</a>`;
      sleep 1;
      echo $j;
   done
) |
zenity --progress --percentage=0 --auto-close --title="Titulo da Janela" --text="Mensagem de conteudo da janela"</pre>
<p>Para acessar a documentação completa do Zenity é só conferir a <a href="http://library.gnome.org/users/zenity/stable/zenity-usage.html.pt_BR" target="_blank">página do projeto</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2010/08/gui-para-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tradução Prey para português Brasil!</title>
		<link>http://oslunaticos.com.br/2010/07/traducao-prey-para-portugues-brasil/</link>
		<comments>http://oslunaticos.com.br/2010/07/traducao-prey-para-portugues-brasil/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 16:59:23 +0000</pubDate>
		<dc:creator>gusvin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[TI]]></category>
		<category><![CDATA[Tradução]]></category>
		<category><![CDATA[computador]]></category>
		<category><![CDATA[localizar]]></category>
		<category><![CDATA[Prey]]></category>

		<guid isPermaLink="false">http://oslunaticos.com.br/?p=1140</guid>
		<description><![CDATA[Tradução do programa que o ajuda a encontrar seu computador!]]></description>
			<content:encoded><![CDATA[<p>#!/bin/bash<br />
####################################################################<br />
# Prey &#8211; by Tomas Pollak (http://bootlog.org)<br />
# Portuguese (Brazil) lang file v 0.2 &#8211; by Gustavo Vinocur (http://www.oslunaticos.com.br)<br />
# URL : http://preyproject.com<br />
# License: GPLv3<br />
####################################################################</p>
<p>if [ -n "$DEFAULT_INSTALLPATH" ]; then # estamos rodando o instalador</p>
<p># mensagens do instalador</p>
<p>HELLO_IN_LANGUAGE=&#8221; &#8212; Prey vai falar em português então!&#8221;<br />
WHERE_TO_INSTALL_PREY=&#8221; -&gt; Onde você quer que instalemos o Prey? [$DEFAULT_INSTALLPATH] &#8221;<br />
USING_DEFAULT_INSTALL_PATH=&#8221; &#8212; Bom, usando o caminho de instalação padrão&#8230;&#8221;<br />
INVALID_INSTALL_PATH=&#8221; !! Caminho de instalação inválido. Diretório pai não existe!\n&#8221;<br />
SETTING_INSTALL_PATH=&#8221; &#8212; Certo, definindo $INSTALLPATH como nosso caminho de instalação.&#8221;</p>
<p>IT_SEEMS_PATH=&#8221;Parece que você já instalou o Prey em&#8221;<br />
DIFFERENT_PATH=&#8221;\nA nova versão usa um caminho diferente para a instalação,&#8221;<br />
REMOVE_OLD_FILES=&#8221;então devemos remover os arquivos antigos, já que eles não serão mais usados.&#8221;<br />
ASK_RM_OLD_FILES=&#8221;Você quer que façamos isso automaticamente pra você?&#8221;<br />
DELETING_OLD_FILES=&#8221; &#8212; Removendo os arquivos de instalação antigos do Prey&#8230;\n&#8221;<br />
CONFIG_FILE_EXISTS=&#8221; -&gt; O arquivo Config já existe! Quer pular todas aquelas perguntas chatas? (Não recomendado) [n] &#8221;</p>
<p>SKIP_INSTALL_QUESTIONS=&#8221; &#8212; Certo, então atualize somente os arquivos necessários!\n&#8221;</p>
<p>DEFINE_REPORT_METHOD=&#8221; -&gt; Que método de reporte você gostaria de usar? (http, email) [http] &#8221;<br />
IS_REGISTERED_ON_WEB=&#8221; &#8212; Você já se registrou no site?&#8221;<br />
DEFAULT_REPORT_METHOD=&#8221; &#8212; Usando o painel de controle (http) como nosso método de reporte. Tudo certo!&#8221;<br />
ADD_API_KEY=&#8221; -&gt; Por favor entre com sua chave de API (API Key) fornecida pelo web service: &#8221;<br />
INVALID_API_KEY=&#8221; !! Chave de API inválida! Lembre-se de se registrar em preyproject.com para receber uma.\n&#8221;<br />
ADD_DEVICE_KEY=&#8221; -&gt; Por favor entre com sua chave de dispositivo (Device Key) para este PC fornecida pelo web service: &#8221;<br />
INVALID_DEVICE_KEY=&#8221; !! Chave de dispositivo inválida! Lembre-se de se registrar em preyproject.com para receber uma.\n&#8221;</p>
<p>DESIRED_USER_WEB=&#8221; &#8212; Certo, então deixe-nos fazer pra você. Por favor digite o seu nome completo: &#8221;<br />
ASK_EMAIL_WEB=&#8221; &#8212; Por favor digite o seu email: &#8221;<br />
DESIRED_PASS_WEB=&#8221; &#8212; Por favor digite a sua senha: (Nós só a usamos para se registrar por você!) &#8221;<br />
PROBLEM_SIGNUP_WEB=&#8221;Ocorreu um problema para se registrar no web service. Por favor tente novamente ou se registre diretamente pelo site&#8221;<br />
PROBLEM_RESPONSE_WEB=&#8221;A resposta que tivemos foi:&#8221;</p>
<p>USING_DEFAULT_APP_URL=&#8221; &#8212; Usando caminhos para a aplicação web. Nada a escrever aqui!&#8221;</p>
<p>ENTER_EMAIL_ADDRESS=&#8221; -&gt; Para qual endereço de email você gostaria que o email fosse enviado? (e.g. caixadeemail@dominio.com) [] &#8221;<br />
INVALID_EMAIL_ADDRESS=&#8221; !! Você precisa definir uma caixa de entrada. Saindo&#8230;\n&#8221;</p>
<p>ENTER_SMTP_SERVER=&#8221; -&gt; Qual servidor smtp devemos usar? (com a porta) [smtp.gmail.com:587] &#8221;<br />
DEFAULT_SMTP_SERVER=&#8221; &#8212; Iremos usar o do Gmail então! &#8221;<br />
ENTER_SMTP_USER=&#8221; -&gt; Digite o seu nome de usuário smtp: (e.g. caixadeemail@gmail.com)&#8221;<br />
DEFAULT_SMTP_USER=&#8221; &#8212; Certo, nosso nome de usuário SMTP será&#8221; # o instalador adicionará a variável email<br />
ENTER_SMTP_PASS=&#8221; -&gt; Digite a sua senha smtp: (Não será mostrada) [] &#8221;<br />
INVALID_SMTP_PASS=&#8221; !! Você precisa digitar uma senha válida. Saindo&#8230;\n&#8221;<br />
YES_NO=&#8221;y/n&#8221;<br />
YES=&#8221;y&#8221;<br />
CHECK_URL_OR_NOT=&#8221; &#8212; Você gostaria que o Prey checasse uma URL? (Não significa que o relatório só será gerado a cada vez que o programa rodar) [n] &#8221;<br />
ENTER_URL=&#8221; &#8212; Certo, então qual será a URL? [i.e. http://meuservidor.com/url_checagem_prey] &#8221;<br />
INVALID_URL=&#8221; !! Você precisa definir uma URL. Saindo&#8230;\n&#8221;<br />
SET_TIMING=&#8221; &#8212; Certo, essa é a última. Com que frequência (em minutos) você quer que o Prey seja rodado? [$TIMING] &#8221;</p>
<p>INSTALLING_SOFTWARE=&#8221; &#8212; Certo, instalando programa necessário&#8230;\n&#8221;<br />
COPYING_ISIGHTCAPTURE=&#8221; &#8212; Copiando iSightCapture para $INSTALLPATH&#8230;&#8221;<br />
COPYING_FILES=&#8221;\n &#8212; Copiando os arquivos necessários para $INSTALLPATH e definindo as permissões&#8230;&#8221;<br />
ADDING_CRONTAB=&#8221; &#8212; Adicionando uma entrada no crontab&#8230;&#8221;<br />
INSTALL_OK=&#8221;\033[1m\n &#8212; Tudo certo! O Prey está funcionando agora. Você agora pode remover este diretório com segurança.<br />
&#8211; Se algum dia você quiser desinstalar o Prey, é só remover o diretório $INSTALLPATH<br />
e remover a linha do Prey no crontab raiz: \n<br />
\t $ sudo rm -Rf $INSTALLPATH\n \t $ sudo crontab -l | grep -v prey | sudo crontab -\n<br />
&#8211; Para atualizações lembre-se de dar uma checada em http://preyproject.com!\033[0m\n\n&#8221;</p>
<p>else # mensagens de status do prey</p>
<p>STRING_START=&#8221;\n ### PREY $version abre suas asas!\n&#8221;<br />
STRING_TRY_TO_CONNECT=&#8221; &#8212; Tentando se conectar a primeira rede wifi aberta disponível&#8230;&#8221;<br />
STRING_NO_CONNECT_TO_WIFI=&#8221; &#8212; Não foi possível encontrar uma maneira de se conectar a uma rede wifi aberta!&#8221;<br />
STRING_CHECK_URL=&#8221; &#8212; Checando URL&#8230;&#8221;<br />
STRING_NO_PROBLEM=&#8221; &#8212; Nada para se preocupar. <img src='http://oslunaticos.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> \n&#8221;<br />
STRING_PROBLEM=&#8221; &#8212; TEMOS UM PROBLEMA!!!&#8221;<br />
STRING_WRITE_EMAIL=&#8221; &#8212; Escrevendo email&#8230;&#8221;<br />
STRING_SENDING_EMAIL=&#8221; &#8212; Enviando o relatório&#8230;&#8221;<br />
STRING_ERROR_EMAIL=&#8221;\n\033[1m !! Ocorreu um problema ao tentar enviar o email. Você tem certeza que ele foi configurado corretamente?<br />
Se você está usando o Gmail, tente remover o &#8216;@gmail.com&#8217; do campo smtp_username no arquivo de configuração do Prey.\033[0m\n&#8221;<br />
STRING_REMOVE_EVIDENCE=&#8221; &#8212; Removendo todos os traços de evidência&#8230;&#8221;<br />
STRING_DONE=&#8221; &#8212; Pronto! Boa caça! <img src='http://oslunaticos.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> \n&#8221;</p>
<p>EMAIL_NOTICE=&#8221;"<br />
EMAIL_HEADER=&#8221;Boas notícias meu amigo, parece que nós o encontramos.\n\nAqui está o relatório do seu computador:\n\n&#8221;<br />
EMAIL_FOOTER=&#8221;\n\nAgora, vá pegar o desgraçado!\n\n&#8211;\nSeu humilde servente, Prey\nhttp://preyproject.com&#8221;</p>
<p>fi</p>
]]></content:encoded>
			<wfw:commentRss>http://oslunaticos.com.br/2010/07/traducao-prey-para-portugues-brasil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

