<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Notas do Neto</title>
    <description>De tudo um pouco...
</description>
    <link>https://jose.morelli.net.br//</link>
    <atom:link href="https://jose.morelli.net.br//feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Sun, 07 Oct 2018 22:18:52 -0300</pubDate>
    <lastBuildDate>Sun, 07 Oct 2018 22:18:52 -0300</lastBuildDate>
    <generator>Jekyll v2.5.3</generator>
    
      <item>
        <title>Acessando compartilhamento do Windows 7 a partir de macOS ou windows XP</title>
        <description>&lt;p&gt;Tentei acessar um compartilhamento de arquivos no Windows 7 a partir do macOS (e posteriormente testei com o Windows XP) sem sucesso. Após algumas pesquisas descobri que o modo de autenticação padrão do windows 7 aceita apenas a autenticação NTLMv2, enquanto o Windows XP usa o LM ou NTLM. &lt;a href=&quot;https://social.msdn.microsoft.com/Forums/en-US/41ed0ba1-6a0f-4d5d-87de-401082a10a0c/what-is-the-default-level-setting-for-ntlmv2-for-different-windows-editions?forum=os_windowsprotocols&quot;&gt;Neste link&lt;/a&gt; você encontra uma definição dos modos padrão de autenticação para cada versão e &lt;a href=&quot;https://technet.microsoft.com/pt-br/library/cc960646.aspx&quot;&gt;Neste link&lt;/a&gt; você encontra mais detalhes sobre os modos de autenticação.&lt;/p&gt;

&lt;h3&gt;Como resolver:&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Abra o Editor de Registros (Regedit):
(Pressione as tecla WIN + R), em seguida digite &lt;code&gt;regedit&lt;/code&gt; e pressione enter;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Localize o registro: &lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/code&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Na janela direita, clique com o botão direito, e escolha: criar Chave &amp;quot;DWORD 32 bits&amp;quot;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nomeie a chave como &lt;code&gt;LmCompatibilityLevel&lt;/code&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Atribua o valor &lt;strong&gt;1&lt;/strong&gt; a ela;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para efeito de registro, os valores padrão para o  &lt;code&gt;LmComptabilityLevel&lt;/code&gt; são:
Windows XP  0
Windows Vista   3
Windows 7   3
Windows 2003    2
Windows 2008    3
windows 2008 R2 3
windows 2012    3&lt;/p&gt;
</description>
        <pubDate>Mon, 02 Jan 2017 19:25:00 -0200</pubDate>
        <link>https://jose.morelli.net.br//acessando-compartilhamento-do-windows-7</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//acessando-compartilhamento-do-windows-7</guid>
        
        <category>windows</category>
        
        <category>compartilhamento</category>
        
        
      </item>
    
      <item>
        <title>Acessando máquinas remotas Windows com DNS dinâmico de pobre</title>
        <description>&lt;p&gt;Estava precisando disponibilizar acesso remoto contínuo a um computador windows via RDP (Terminal Services), mas tinham algumas &amp;quot;pedras&amp;quot; nesse caminho:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O Link da máquina remota é via rádio, logo tive que pedir à provedora para desviar as portas;&lt;/li&gt;
&lt;li&gt;O rádio da provedora me oferece um IP interno, que é entregue ao meu roteador que distribui a conexão via cabo ou WiFi (com outra classe de Rede);&lt;/li&gt;
&lt;li&gt;O IP muda constantemente, logo tenho que partir para DNS Dinâmico;&lt;/li&gt;
&lt;li&gt;Não posso usar o DNS dinâmico do meu roteador, pois o IP WAN dele é sempre o mesmo (recebido do Rádio);&lt;/li&gt;
&lt;li&gt;A máquina windows está ligada direto, mas das provedoras grátis de DNS dinâmico que testei, nenhuma me oferecia um programa que rodasse no windows para atualizar o DNS;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Munido destes fatos e como sempre, procurando uma forma &amp;quot;tecnologicamente complexa&amp;quot; de resolver problemas, decidi inventar algo diferente:&lt;/p&gt;

&lt;h3&gt;Primeiro Passo: Atualizar o endereço IP da máquina remota em algum lugar acessível&lt;/h3&gt;

&lt;p&gt;O objetivo é que a máquina Windows envie o seu IP para algum lugar acessível das duas pontas periodicamente.Com isso, basta eu acessar uma URL para conseguir o IP atualizado da máquina remota. Fiz da seguinte forma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Criei um script em PHP, com o único objetivo de salvar em um .txt o IP de quem o acessou;&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;lt;?php

$ip = $_SERVER[&amp;#39;REMOTE_ADDR&amp;#39;];

$hdl = fopen(&amp;#39;ip.txt&amp;#39;, &amp;#39;w&amp;#39;);
fwrite($hdl, $ip);
fclose($hdl);
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Publiquei este script em uma URL que, obviamente, só eu saiba (para evitar que algum engraçadinho acesse-a e prejudique meu acesso);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Na máquina Windows, Instalei o &lt;a href=&quot;http://gnuwin32.sourceforge.net/packages/wget.htm&quot;&gt;wget&lt;/a&gt; pra windows e criei um agendamento (Iniciar -&amp;gt; Painel de Controle -&amp;gt; Tarefas Agendadas) que roda a cada 10 minutos o seguinte batch file (&lt;code&gt;update.cmd&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;    @Echo off
    curl http://minha.url/secreta/ip.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Segundo passo: Capturar este endereço da máquina de origem e acessar a máquina&lt;/h3&gt;

&lt;p&gt;Para ter acesso ao endereço IP é fácil, basta acessar a &lt;code&gt;http://minha.url/secreta/ip.txt&lt;/code&gt; e pronto! ip visível! detalhe para a extensão de acesso: &lt;strong&gt;txt&lt;/strong&gt;. Quando acessamos o &lt;code&gt;ip.php&lt;/code&gt; ele atualiza o endereço IP; quando acessamos o &lt;code&gt;ip.txt&lt;/code&gt; temos acesso ao endereço salvo:&lt;/p&gt;

&lt;p&gt;Mas ai vem a parte difícil, como explicar pro usuário que ele tem que acessar um endereço, pegar uns números, abrir o Iniciar -&amp;gt; Executar -&amp;gt; mstsc (ou um ícone com o RDP); colar o número e ai sim abrir a sessão remota?!&lt;/p&gt;

&lt;p&gt;Mais um script!&lt;/p&gt;

&lt;p&gt;Criei um arquivo em VisualBasic Script chamado &lt;code&gt;remoto.vbs&lt;/code&gt; com o seguinte conteúdo:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;Dim oXMLHTTP
Dim oStream
Dim oFSO, oShell, strFileName, strComputerName

strFileName = &amp;quot;Rdp.rdp&amp;quot;

Set oXMLHTTP = CreateObject(&amp;quot;MSXML2.XMLHTTP.3.0&amp;quot;)

oXMLHTTP.Open &amp;quot;GET&amp;quot;, &amp;quot;http://minha.url/secreta/ip.txt&amp;quot;, False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then

    strComputerName = oXMLHTTP.responseText + &amp;quot;:3390&amp;quot;

    Set oFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)
    Set oStream = oFSO.CreateTextFile(strFileName, True)
    oStream.WriteLine &amp;quot;full address:s:&amp;quot; + strComputerName
    oStream.WriteLine &amp;quot;username:s:USUARIO&amp;quot;
    oStream.WriteLine &amp;quot;promptcredentialonce:i:1&amp;quot;
    oStream.WriteLine &amp;quot;gatewaycredentialssource:i:4&amp;quot;
    oStream.WriteLine &amp;quot;prompt for credentials:i:0&amp;quot;
    oStream.WriteLine &amp;quot;autoreconnection enabled:i:1&amp;quot;
    oStream.WriteLine &amp;quot;authentication level:i:2&amp;quot;

    oStream.Close

    Set oShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)
    oShell.Run &amp;quot;mstsc &amp;quot;&amp;quot;&amp;quot; + strFileName + &amp;quot;&amp;quot;&amp;quot;&amp;quot;

End If
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;O script é bem simples: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pega o endereço IP da URL (que você deve corrigir para suas necessidades);&lt;/li&gt;
&lt;li&gt;Concatena com a porta (no meu caso 3390 - o padrão seria 3389);&lt;/li&gt;
&lt;li&gt;Cria o arquivo Rdp.rdp com o endereço, nome de usuário e outros parâmetros que habilitei para permitir salvar a senha do usuário;&lt;/li&gt;
&lt;li&gt;Salva e executa o RDP.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Desta forma, o usuário só tem que executar o script VBS, que se encarrega de busar o IP correto e conectar remotamente a máquina.&lt;/p&gt;
</description>
        <pubDate>Fri, 13 Mar 2015 10:13:13 -0300</pubDate>
        <link>https://jose.morelli.net.br//dns-dinamico-de-pobre</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//dns-dinamico-de-pobre</guid>
        
        <category>windows</category>
        
        <category>rdp</category>
        
        
      </item>
    
      <item>
        <title>Encurtando URL da área de transferência</title>
        <description>&lt;p&gt;Fiz um script em Python bem simples, porém útil e prático. Para usá-lo você copia um link com &lt;code&gt;Ctrl+C&lt;/code&gt; / &lt;code&gt;Command+C&lt;/code&gt;, executa o script (que pode estar no desktop, ou associado a uma combinação de teclas via Keyboard Maestro, se você usa OS X), ele encurta o link usando minha API do &lt;a href=&quot;http://bit.ly&quot;&gt;bit.ly&lt;/a&gt; e retorna o link reduzido para a área de transferência, podendo ser colado com o &lt;code&gt;Ctrl+V&lt;/code&gt; / &lt;code&gt;Command+V&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Testei ele no Linux, OS X e Windows, o único requisito do windows é que tenha o Python instalado, já que por padrão ele vem no Linux e OS X.&lt;/p&gt;

&lt;p&gt;Nas 3 plataformas, é necessário instalar o &lt;strong&gt;Xerox&lt;/strong&gt;, uma lib do python que permite ter acesso à área de transferência.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para instalar o Xerox (no linux e OS X, abra o terminal e execute):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;# wget https://pypi.python.org/packages/source/x/xerox/xerox-0.3.1.tar.gz
# tar zxvf xerox-0.3.1.tar.gz
#  rm -rf xerox-0.3.1.tar.gz
#  cd xerox-0.3.1/
#  sudo python setup.py  install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Crie um arquivo com o nome &lt;code&gt;encurta.py&lt;/code&gt;, e o conteúdo:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;#!/usr/bin/python

import urllib
import xerox

long_url = xerox.paste()
short_url = urllib.urlopen(&amp;#39;http://api.bit.ly/v3/shorten?format=txt&amp;amp;login=jmorelli&amp;amp;apiKey=R_0bf7d8278ac9f3da57c7cd66a17074cf&amp;amp;uri=&amp;#39; + urllib.quote(long_url, &amp;#39;&amp;#39;)).read()
xerox.copy(short_url)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ou você pode baixar o &lt;a href=&quot;https://jose.morelli.net.br/img/encurta.py&quot;&gt;encurta.py daqui&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;E é isso, basta selecionar e copiar um Link, executar o script e colar a URL reduzida.&lt;/p&gt;
</description>
        <pubDate>Sun, 15 Jun 2014 16:41:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//encurtando-url-da-area-de-transferencia</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//encurtando-url-da-area-de-transferencia</guid>
        
        <category>Linux</category>
        
        <category>os_x</category>
        
        <category>Python</category>
        
        <category>Scripts</category>
        
        <category>ByNeto</category>
        
        <category>windows</category>
        
        
      </item>
    
      <item>
        <title>Navegação privada e o impacto nas estatísticas do Google Analytics</title>
        <description>&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/website-statistics1.jpg&quot; alt=&quot;Analytics&quot;&gt;&lt;/p&gt;

&lt;p&gt;Hoje estava dando uma geral no Google Analytics (GA), vendo as estatísticas de acesso e percebi que um dos meus sites não possuía nenhum acesso registrado. Na dúvida verifiquei se o código de rastreamento do google estava no cabeçalho… e estava. Como tenho acesso aos logs do servidor, fui confirmar se não houve nenhum acesso, e realmente haviam acessos realizados esta semana. Com a pulga atrás da orelha, comecei a comparar alguns indicadores entre o GA e os logs do Apache (servidor web) e percebi que o GA sempre está com os totalizadores menores que os contabilizados pelos logs.&lt;/p&gt;

&lt;p&gt;Meu primeiro chute, e não deixa de ser válida, é que o GA não consegue processar todas as requisições das centenas de milhares de sites que utilizam ele. Depois comecei a me lembrar de várias opções que os usuários têm de bloquear o rastramento do GA.. uma delas é um Addon oferecido pelo próprio Google (&lt;a href=&quot;http://tools.google.com/dlpage/gaoptout&quot;&gt;GA OptOut&lt;/a&gt;) disponível para vários navegadores e que impede que os sites que usam o GA coletem dados do usuário/navegador. Usuários de Firefox/Chrome/etc que suportam plugins, também  podem ter optado por desabilitar o GA usando as extensões AdBlock que possui uma subscrição específica para filtros de rastreamento (e.g &lt;a href=&quot;http://easylist.adblockplus.org/en/&quot;&gt;EasyPrivacy&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;E hoje me deparei com um &lt;a href=&quot;http://meiobit.com/78206/disconnect-extensao-privacidade-redes-sociais/&quot;&gt;artigo no MeioBit&lt;/a&gt; falando de uma nova extensão para o Chorme chamada &lt;a href=&quot;https://chrome.google.com/extensions/detail/jeoacafpbcihiomhlakheieifhpjdfeo&quot;&gt;Disconnect&lt;/a&gt; que permite o bloqueio do rastreamento das redes sociais Digg, Facebook, Google, Twitter e Yahoo.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/disconnect.png&quot; alt=&quot;Revista info: 13 integrações bloqueadas&quot; title=&quot;Revista info: 13 integrações bloqueadas&quot;&gt;&lt;/p&gt;

&lt;p&gt;Acho importante frisar que esses bloqueios permitem uma navegação mais privada. Quando um site está usando estes serviços ou está integrado a uma rede social, ele estará permitindo que sejam coletadas diversas informações e até mesmo validando seus usuários por meio de cookies ou sessões previamente abertas em seus servidores. Ou seja, cada serviço/rede social poderá traçar um perfil de uso/tendência ou preferências dos seus usuários; o que acessam, em que momento, de onde acessam.&lt;/p&gt;

&lt;p&gt;Mas voltando as estatísticas, tenho um site e quero saber quantas pessoas acessaram ele! bem, eu recomendo também o uso de ferramentas que analisam diretamente os logs do servidor como o &lt;a href=&quot;http://blog.josemorelli.net/2010/12/15/navegacao-privada-e-o-impacto-nas-estatisticas-do-googl-analytics/awstats.sourceforge.net&quot;&gt;AWStats&lt;/a&gt;. Não tem erro, se um navegador requisitou alguma coisa e o servidor web entregou, foi gerado um log da operação (salvo problemas de configuração do web server ou disco cheio :) .&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/awstats.gif&quot; alt=&quot;Analisador de logs AWStats&quot; title=&quot;Analisador de logs AWStats&quot;&gt;&lt;/p&gt;

&lt;p&gt;A quantidade de informação com certeza é bem menor que a oferecida pelo GA (Esqueça informações como resolução da tela, se tem ou não flash/java instalado.. essas coisas), mas o importante estará lá: quantas pessoas acessaram, de onde vieram, para onde foram, qual o tipo de navegador, etc.&lt;/p&gt;

&lt;p&gt;Nada impede de você usar as duas opções (GA / Logs do servidor). Os logs são gerados de qualquer jeito e é bem provável que você já tenha os logs de acesso ao seu site dos últimos dias… é só processá-las com o awstats e terá novos indicadores!&lt;/p&gt;

&lt;p&gt;Como nem todo mundo tem acesso aos logs dos servidores, algumas empresas de hosting oferecem ferramentas próprias ou pré-configuradas para acessar os logs. O Dreamhost por exemplo oferece o &lt;a href=&quot;http://www.analog.cx/&quot;&gt;Analog&lt;/a&gt;. Se você não tem acesso ao servidor (shell) para instalar o awstats, veja com seu hosting como poderá acessar as estatísticas geradas pelo web server.&lt;/p&gt;

&lt;p&gt;E pra resumir a história é por isso que nem sempre temos os mesmos indicadores no Google Analytics e nas ferramentas de análise de logs..os usuários de ferramentas de privacidade não são contados no GA. ;)&lt;/p&gt;
</description>
        <pubDate>Wed, 15 Dec 2010 14:15:00 -0200</pubDate>
        <link>https://jose.morelli.net.br//navegacao-privada-e-o-impacto-nas-estatisticas-do-google-analytics</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//navegacao-privada-e-o-impacto-nas-estatisticas-do-google-analytics</guid>
        
        <category>AWStats</category>
        
        <category>Analog</category>
        
        <category>Disconnect</category>
        
        <category>EasyPrivate</category>
        
        <category>google-analytics</category>
        
        
      </item>
    
      <item>
        <title>Apresentação sobre Cloud Computing</title>
        <description>&lt;p&gt;Ontem (21/10) fiz uma apresentação sobre Computação em Nuvem no &lt;a href=&quot;http://www.ifc-camboriu.edu.br/semana/&quot;&gt;1º Encontro de Tecnologia e Informação&lt;/a&gt; do &lt;a href=&quot;http://www.ifc-camboriu.edu.br/&quot;&gt;Instituto Federa Catarinense – Campus Camboriú&lt;/a&gt; (e-TIC).&lt;/p&gt;

&lt;p&gt;O objetivo da palestra foi explicar um pouco como está dividida a computação em nuvem, apresentar alguns exemplos dos modelos de serviços existentes e principalmente demonstrar que esta tendência está vindo para ficar.&lt;/p&gt;

&lt;p&gt;A Computação em Nuvem é um paradigma em evolução, mas com certeza vai mudar a forma como a Tecnologia da Informação é entregue e utilizada pelos usuários.&lt;/p&gt;

&lt;p&gt;&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/5528743&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt; &lt;div style=&quot;margin-bottom:5px&quot;&gt; &lt;strong&gt; &lt;a href=&quot;//pt.slideshare.net/netum/apresentao-cloud&quot; title=&quot;Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacional&quot; target=&quot;_blank&quot;&gt;&lt;/div&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 22 Oct 2010 19:53:00 -0200</pubDate>
        <link>https://jose.morelli.net.br//apresentacao-sobre-cloud-computing</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//apresentacao-sobre-cloud-computing</guid>
        
        <category>cloud-computing</category>
        
        
      </item>
    
      <item>
        <title>Opções para geração de relatórios</title>
        <description>&lt;p&gt;Seguindo um novo modelo de publicações, vou listar de forma rápida e objetiva algumas soluções open source que encontrei para substituir soluções comerciais responsáveis pela geração de relatórios.&lt;/p&gt;

&lt;h3&gt;Aplicações comerciais (Pagas)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crystal Reports&lt;/strong&gt; (&lt;a href=&quot;http://crystalreports.com/&quot;&gt;Site&lt;/a&gt;): Comprada pela SAP;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cognos ReportNet&lt;/strong&gt; (&lt;a href=&quot;http://www-01.ibm.com/software/data/cognos/products/reportnet/&quot;&gt;Site&lt;/a&gt;): Comprada pela IBM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Microsoft SQL Server Reporting Services&lt;/strong&gt; (&lt;a href=&quot;http://www.microsoft.com/sqlserver/2008/en/us/reporting.aspx&quot;&gt;Site&lt;/a&gt; / &lt;a href=&quot;http://msdn.microsoft.com/pt-br/library/ms159106.aspx&quot;&gt;pt_BR&lt;/a&gt;): Solução da Microsoft que vem junto com o Microsoft SQL Server. Disponibiliza os relatórios via Web (precisa do IIS instalado) de forma estática ou interativa. Ideal para quem programa em .NET usando SQL Server;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Aplicações Open Source&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JasperReports&lt;/strong&gt; (&lt;a href=&quot;http://jasperforge.org/projects/jasperreports&quot;&gt;site&lt;/a&gt;): Biblioteca escrita em java e recomendada para quem vai programar nesta linguagem. Gera relatórios impressos ou documentos em formato HTML, PDF, MS Excel, OpenOffice, e MS Word). Também existe a versão servidor (&lt;a href=&quot;http://jasperforge.org/projects/jasperserver&quot;&gt;JasperServer&lt;/a&gt;) que é interativa entregando uma plataforma de Business Intelligence (BI) além de relatórios sob demanda ou agendados. Licenciado sobre Aferro GPL;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenRPT&lt;/strong&gt; (&lt;a href=&quot;http://www.xtuple.com/openrpt&quot;&gt;site&lt;/a&gt;): Tem uma ferramenta para construir os relatórios (designer) que roda em Linux, windows e MacOS. Conecta em bancos Postgres (ODBC genéricos) e com um pouco de esforço em Oragle, DB2, SQL Server e MySQL. Usei rapidamente e não achei muito fácil, além de não ter achado uma versão servidor. Licenciado pela GPL;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenReports&lt;/strong&gt; (&lt;a href=&quot;http://oreports.com/&quot;&gt;site&lt;/a&gt;): Solução de relatórios baseada em web. Pode usar engines como JasperReports, JFreeReports, JXLS. Não li muito sobre ele, mas como vi a disponibilidade, decidi compartilhar;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Got Reportviewer&lt;/strong&gt; (&lt;a href=&quot;http://www.gotreportviewer.com/&quot;&gt;site&lt;/a&gt;): É um controle que permite adicionar relatórios em aplicações desenvolvidas em .NET.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fyireporting&lt;/strong&gt; (&lt;a href=&quot;http://www.fyireporting.com/index.html&quot;&gt;site&lt;/a&gt; / &lt;a href=&quot;http://blog.josemorelli.net/2010/08/25/conectando-o-fyireport-no-postgres/&quot;&gt;dica para conexão Postgres&lt;/a&gt;): De todos, este foi o que testei mais profundamente. Feito em .NET, suporta a linguagem RDL (Report Definition Language) a mesma usada pelo Microsoft SQL Server Reporting Services. Gera relatórios em vários formatos (pdf, html, doc, xls, rtf, csv, entre outros) e também permite a entrega de consultas em forma de matrizes. Permite carregar dados a partir de servidores de BDs (MySQL, Postgres, SQL Server, etc) assim como de arquivos csv, xml ou mesmo web services. A licença empregada é a Apache License v2.
Tem basicamente 4 aplicativos principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;fyireporting Designer&lt;/strong&gt;: Usado para montar o layout do relatório no estilo WYSIWYG;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fyireporting Desktop&lt;/strong&gt;: Levanta uma versão “servidor” que atende na porta 8080 (via navegador), e entrega os relatórios  RDL (que na verdade é uma marcação XML) via navegador;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fyireporting Reader&lt;/strong&gt;: Sua função é permitir gerar relatórios em qualquer formato a partir do arquivo RDL gerado previamente;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rdlcmd&lt;/strong&gt;: Utilitário de linha de comando que permite informar o arquivos de entrada e path de saída e o formato que você quer o relatório.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 25 Aug 2010 21:13:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//opcoes-para-geracao-de-relatorios</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//opcoes-para-geracao-de-relatorios</guid>
        
        <category>reports</category>
        
        
      </item>
    
      <item>
        <title>Conectando o FYIReport no Postgres</title>
        <description>&lt;p&gt;Fiz uns testes com o &lt;a href=&quot;http://www.fyireporting.com/&quot;&gt;fyireport&lt;/a&gt;, um poderoso gerador de relatórios e gráficos e nos meus testes eu queria usá-lo para acessar uma base de dados Postgres. Segundo a ferramenta, ele têm este suporte por meio de .NET data providers.&lt;/p&gt;

&lt;p&gt;Após instalar o programa, tentei criar diretamente a conexão, e tive o seguinte erro:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/erro.png&quot; alt=&quot;Error&quot;&gt;&lt;/p&gt;

&lt;p&gt;Com esse erro (Não foi possível carregar o arquivo ou assembly ‘npgsql.dll’ ou uma de suas dependências.), feche a aplicação e acesse o site do &lt;a href=&quot;http://npgsql.projects.postgresql.org/&quot;&gt;Npgsql&lt;/a&gt;. Baixe o binário da última versão compatível com sua versão de .NET (no meu caso usei o arquivo &lt;code&gt;Npgsql2.0.10-bin-ms.net.zip&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Abra ele e copie as DLLs, para dentro da pasta do fyireport:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/arquivos.png&quot; alt=&quot;arquivos&quot;&gt;&lt;/p&gt;

&lt;p&gt;Após copiar, abra o programa gere a string de conexão e efetue o teste:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/conexao.png&quot; alt=&quot;Conexão&quot;&gt;&lt;/p&gt;

&lt;p&gt;A string de conexão segue o seguinte modelo:
&lt;code&gt;
server=NOME_SERVIDOR; database= NOME_DATABASE; user id=USUARIO; pwd=SENHA
&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 24 Aug 2010 21:13:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//conectando-o-fyireport-no-postgres</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//conectando-o-fyireport-no-postgres</guid>
        
        <category>postgresql</category>
        
        <category>reports</category>
        
        
      </item>
    
      <item>
        <title>Ferramenta para testes de Expressões Regulares (regex)</title>
        <description>&lt;p&gt;Hoje meu amigo Rodrigo Tripodi, me indicou uma ferramenta web muito boa para teste e elaboração de Expressões Regulares: &lt;a href=&quot;http://www.gskinner.com/blog/archives/2008/03/regexr_free_onl.html&quot;&gt;RegExr&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;No Windows eu utilizava uma aplicação chamada &lt;a href=&quot;http://www.radsoftware.com.au/regexdesigner/&quot;&gt;RegExp Designer&lt;/a&gt;, mas que volta e meia, devido as reinstalações, não estava presente e lá ia eu conectar em um servidor linux via SSH pra usar o sed ou python pra testar  alguma ER. Hoje usando linux como desktop é muito mais fácil, mesmo assim os testes não dão um retorno tão visual como o desta ferramenta:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://jose.morelli.net.br/img/regexr.png&quot; alt=&quot;RefExr&quot;&gt;&lt;/p&gt;

&lt;p&gt;Como pode-se observar, a ER escrita “casa” com todas as palavras iniciadas em “e” e terminadas em “s”… é muito mais fácil avaliar se funcionou ou não!&lt;/p&gt;

&lt;p&gt;Outra coisa que achei excelente é a Aba “Community” localizada do lado direito. Nela é possível encontrar várias ERs elaboradas pela comunidade, indo desde validação de e-mail, url até validação de datas, números telefônicos, entre outros.&lt;/p&gt;

&lt;p&gt;Esta aplicação requer o Flash Player 9  instalado para ser usada pelo navegador, mas também pode ser instalada no seu computador (Windows, Linux ou MacOS) para usar offline desde que você tenha o Adobe Air instalado (se bem que o RegExr se encarrega de instalar o Air caso você não tenha). Para instalar a versão desktop basta clicar no link no canto inferior direito (Desktop Version) ou &lt;a href=&quot;http://www.gskinner.com/RegExr/desktop/&quot;&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para usar a última versão clique &lt;a href=&quot;http://www.gskinner.com/RegExr/&quot;&gt;aqui&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sun, 28 Mar 2010 21:13:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//ferramenta-para-testes-de-expressoes-regulares-regex</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//ferramenta-para-testes-de-expressoes-regulares-regex</guid>
        
        <category>regexp</category>
        
        
      </item>
    
      <item>
        <title>Como saber quando um pacote (RPM) foi instalado</title>
        <description>&lt;p&gt;Dia desses estava eu no canal #rhel no &lt;code&gt;irc.freenode.net&lt;/code&gt; e me deparei com uma dica muito boa: quando você quiser listar a data/hora de instalação dos pacotes, execute o comando:
```&lt;/p&gt;

&lt;h1&gt;rpm -qa --last&lt;/h1&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;Se quiser filtrar apenas um pacote específico:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;rpm -qa --last| grep bash&lt;/h1&gt;

&lt;p&gt;bash-2.05b-29                                 Mon 08 Nov 2004 10:28:56 AM BRT
```&lt;/p&gt;
</description>
        <pubDate>Thu, 17 May 2007 21:13:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//como-saber-quando-um-pacote-rpm-foi-instalado</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//como-saber-quando-um-pacote-rpm-foi-instalado</guid>
        
        <category>linux</category>
        
        <category>redhat</category>
        
        
      </item>
    
      <item>
        <title>Exibindo o estado das conexões TCP no Linux</title>
        <description>&lt;p&gt;Em um &lt;a href=&quot;/apresentar-o-numero-de-conexoes-tcp-ativas-no-servidor&quot;&gt;post anterior&lt;/a&gt; apresentei um comando que exibia apenas o número de conexões ativas em um servidor/desktop Linux. Dessa vez apresento um comando que exibi o estado de todas as conexões:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;$ netstat -a -n| sed &amp;#39;/^tcp/!d&amp;#39;|cut -c 68-|sort|uniq -c|sort -n

1 SYN_RECV
3 CLOSING
7 FIN_WAIT1
8 SYN_SENT
17 LISTEN
18 CLOSE_WAIT
18 FIN_WAIT2
656 TIME_WAIT
688 ESTABLISHED
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;No exemplo acima são exibidas as conexões de um servidor de e-mail.&lt;/p&gt;
</description>
        <pubDate>Sun, 15 Oct 2006 21:13:00 -0300</pubDate>
        <link>https://jose.morelli.net.br//exibindo-o-estado-das-conexoes-tcp-no-linux</link>
        <guid isPermaLink="true">https://jose.morelli.net.br//exibindo-o-estado-das-conexoes-tcp-no-linux</guid>
        
        <category>linux</category>
        
        <category>redes</category>
        
        <category>comandos</category>
        
        
      </item>
    
  </channel>
</rss>
