<?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>Thunder-Boy &#187; HowTo &#8211; Como fazer</title>
	<atom:link href="http://jf.eti.br/category/howto-como-fazer/feed/" rel="self" type="application/rss+xml" />
	<link>http://jf.eti.br</link>
	<description>Aprender é Bom Demais!!!</description>
	<lastBuildDate>Wed, 08 Feb 2012 04:32:33 +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>Postgresql &#8211; Como fazer um dump de uma tabela específica de seu banco de dados</title>
		<link>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/</link>
		<comments>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 18:47:58 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2262</guid>
		<description><![CDATA[Muito fácil: pg_dump -U &#60;usuario&#62; &#8211;inserts -t &#60;tabela&#62; &#60;banco&#62; &#62; dump.sql Um exemplo real: pg_dump -U postgres &#8211;inserts -t municipio geral &#62; municipios.sql &#160;]]></description>
			<content:encoded><![CDATA[<p>Muito fácil:</p>
<p>pg_dump -U &lt;usuario&gt; &#8211;inserts -t &lt;tabela&gt; &lt;banco&gt; &gt; dump.sql</p>
<p>Um exemplo real:</p>
<p><em>pg_dump -U postgres &#8211;inserts -t municipio geral &gt; municipios.sql</em></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/postgresql-como-fazer-um-dump-de-uma-tabela-especifica-de-seu-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server</title>
		<link>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/</link>
		<comments>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 00:25:32 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2241</guid>
		<description><![CDATA[&#160; Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server O objetivo deste howto não é discutir qual é a melhor forma de realizar um backup PostgreSQL, mas sim propor uma forma de realizar um Dump da base de dados em um servidor Linux e transferir para um servidor [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox" title="Untitled-1" href="http://jf.eti.br/wp-content/uploads/Untitled-1.jpg"><img class="alignnone size-full wp-image-2243" title="Untitled-1" src="http://jf.eti.br/wp-content/uploads/Untitled-1.jpg" alt="" width="411" height="106" /></a></p>
<p>&nbsp;</p>
<p><strong>Howto: Gerando Dump do Postgresql e transferindo o arquivo para uma máquina com Windows Server</strong></p>
<p>O objetivo deste howto não é discutir qual é a melhor forma de realizar um backup PostgreSQL, mas sim propor uma forma de realizar um Dump da base de dados em um servidor Linux e transferir para um servidor de arquivos que rode Windows, isso é muito comum em empresas e instituições, onde muitas vezes no servidor Windows encontra-se instalada algumas ferramentas de terceiro para gerenciar fitas, robôs e etc.</p>
<p>Não custa citar o <a href="http://www.midstorm.org/~telles/2010/05/06/dump-nao-e-backup/" target="_blank">ótimo artigo do Fábio Telles Rodriguez</a>, onde o mesmo deixa claro que Dump não é considerado a melhor forma de realizar um backup. Vamos lá.</p>
<p>Imaginemos o seguinte cenário:</p>
<ul>
<li>Uma rede controlada por um Windows Active Directory &#8211; AD (Windows 2003 ou maior);</li>
<li>Um servidor de arquivos na rede, que pode estar rodando na mesma máquina do AD ou em outra;</li>
</ul>
<ul>
<li>Servidor Linux (Ubuntu ou outro qualquer) e rodando o SGBD PostgreSQL 8.x;</li>
</ul>
<p>A idéia é o seguinte:</p>
<ul>
<li>Uma vez por dia o SGBD PostgreSQL irá gerar um Dump da base de dados, através de uma tarefa agendada na <a href="http://www.zago.eti.br/agenda.html" target="_blank">Crontab</a>.</li>
<li>O dump gerado será armazenado em um diretório na mesma máquina do SGBD (não é uma boa prática deixar na mesma máquina) e uma cópia do mesmo será enviado para o servidor de arquivos Windows.</li>
</ul>
<p><strong>Mãos a massa:</strong></p>
<ol>
<li>Vamos considerar que o servidor Linux seja Ubuntu (ou debian) . Se estiver utilizando CentOS  é só instalar os mesmos pacotes pelo Yum Instal;</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Instalando os requisitos:</strong></span></p>
<p># apt-get install samba samba-common smbfs smbclient</p>
<p><em>Criando a pasta que servirá de montagem:</em></p>
<p># mkdir /mnt/ntserver</p>
<p><em>No servidor de domínio, Windows Server &#8211; Active Directory, você deve ter um usuário com privilégio de escrita na pasta compartilhada. Basta executar a linha abaixo para testar a montagem:</em></p>
<p># mount -t smbfs //<strong>192.168.0.10/pasta_compartilhada</strong> /mnt/ntserver -o username=<strong>usuario_de_dominio</strong>,password=<strong>senha_de_dominio</strong></p>
<p><em> Claro trocando os termos em negrito para os da sua rede.</em></p>
<p># ls /mnt/ntserver</p>
<p><em>Com este comando deve listar o conteudo da pasta campartilhada lá do servidor de arquivos Windows. Ok, agora, vamos desmontar:</em></p>
<p># umount /mnt/ntserver</p>
<p><span style="text-decoration: underline;"><strong>Criando o script de backup do PostgreSQL</strong></span></p>
<p><em></em><em>Criando a pasta onde ficará armazenado localmente os Dumps</em></p>
<p># mkdir /home/bkp_pg</p>
<p><em>Crie o arquivo chamado bkp.sh</em></p>
<p><em></em># vim /etc/init.d/bkp.sh</p>
<p><em>Insira o seguinte conteúdo:</em></p>
<pre class="brush: shell">#!/bin/sh
# script que gera backup de bases de dados PostGreSQL
# Referencia: http://www.htmlstaff.org/postgresqlmanual/app-pgdump.html
# Jonas Ferreira - jonas.ferreira@gmail.com - http://jf.eti.br
# C 2010 03 19
#

# VARIAVEIS ##################
export PGPASSWORD=postgres            # Exportando a senha do PostGreSQL para o ambiente (Ubuntu)
vU=&quot;postgres&quot;                          # Usuario no PostGreSQL
vP=&quot;postgres&quot;                        # Senha
vB=nome_base                             # Base De dados
vBI=&quot;/usr/lib/postgresql/8.3/bin/&quot;     # Diretorio raiz dos binarios do PostGreSQL
vR=&quot;/home/&quot;                                # Diretorio raiz
vD=&quot;bkp_pg/&quot;                     # Destino do Backup
vPre=&quot;basePG&quot;                       # Prefixo no nome do arquivo de saida
vE=&quot;.dmp&quot;                              # extencao do arquivo de saida
vH=&quot;localhost&quot;                      # Host do servidor
vAno=`date +%Y`                     #Ano
vMes=`date +%m`                     #Mes
vDia=`date +%d`                     #Dia
vHor=`date +%H`                     #Hora
vMin=`date +%M`                     #Min
vCod=`date +%N`                     #date [date (GNU coreutils) 5.3.0]
vDat=&quot;$vAno$vMes$vDia-$vHor$vMin-$vCod&quot;
vA=$vPre&quot;-&quot;$vB&quot;-&quot;$vDat$vE

# VALIDACAO ##################
if [ -z $vU ]; then
echo &quot;Sem usuario&quot;;
exit 0;
fi
if [ -z $vP ]; then
echo &quot;sem senha&quot;;
exit 0;
fi
if [ -z $vB ]; then
echo &quot;informe o nome da base de dados&quot;;
exit 0;
fi

# BACKUP #####################
echo &quot;# Gerando backup. Aguarde...&quot;
echo &quot;# Destino: $vR$vD&quot;
echo &quot;# Nome do arquivo: $vA&quot;

echo &quot;#################################&quot;

echo &quot;# Compactando backup. Aguarde...&quot;

# Caso queira gerar com inserts (arquivo fica maior)
#$vBI&quot;&quot;pg_dump -U $vU -h $vH --inserts $vB | gzip -c &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; $vR$vD$vA.out.gz

# Caso queira gerar com copy (arquivo fica menor)
$vBI&quot;&quot;pg_dump -U $vU -h $vH  $vB | gzip -c &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; $vR$vD$vA.out.gz

echo &quot;#################################&quot;
echo &quot;# Transferindo o o arquivo para o servidor Windows...&quot;

# Montando a pasta
mount -t smbfs //192.168.0.10/pasta_compartilhada /mnt/ntserver -o username=usuario_de_dominio,password=senha_de_dominio

# copiando o arquivo
cp $vR$vD$vA.out.gz /mnt/ntserver

# desmontando a pasta
umount /mnt/ntserver

# limpando a variavel de ambiente
export PGPASSWORD=
exit
</pre>
<p>&nbsp;</p>
<p><em>Setando permissão de execução no script:</em><em><br />
</em></p>
<p># chmod +x /etc/init.d/bkp.sh</p>
<p>Colocando o <em>script na Crontab:<br />
</em></p>
<p># crontab -e</p>
<p>Adicione a seguinte linha:</p>
<p>#Realizando Backup do PostgreSQL &#8211; Todos os dias a meia noite<br />
00 00 * * * /etc/init.d/bkp.sh</p>
<p><em>Salve o arquivo e pronto, já pode testar:</em></p>
<p># /etc/init.d/bkp.sh</p>
<p>Como saída, você verá algo como:</p>
<p># Gerando backup. Aguarde&#8230;<br />
# Destino: /home/bkp_pg/<br />
# Nome do arquivo: basePG-nome_base-20111116-2012-048760000.dmp<br />
#################################<br />
# Compactando backup. Aguarde&#8230;<br />
#################################<br />
# Transferindo o o arquivo para o servidor Windows&#8230;</p>
<p>Verifique na pasta de destino se foi criado o arquivo:</p>
<p># ls /home/bkp_pg</p>
<p><em>Deve listar o arquivo compactado:</em></p>
<p>basePG-nome_base-20111116-2012-048760000.dmp.out.gz</p>
<p>Verifique também lá no servidor de arquivo do Windows, na pasta compartilhada, se este mesmo arquivo existi por lá.</p>
<p>Pronto, você acabou de implementar uma solução de Dump de uma base PostgreSQL e transferiu para um servidor de arquivos Windows. Espero que seja útil para você.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/howto-gerando-dump-do-postgresql-e-transferindo-o-arquivo-para-uma-maquina-com-windows-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Howto: Como utilizar a base de usuários do JOOMLA 1.5.x para se logar externamente</title>
		<link>http://jf.eti.br/howto-como-utilizar-a-base-de-usuarios-do-joomla-1-5-x-para-se-logar-externamente/</link>
		<comments>http://jf.eti.br/howto-como-utilizar-a-base-de-usuarios-do-joomla-1-5-x-para-se-logar-externamente/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 16:09:38 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2235</guid>
		<description><![CDATA[Howto: Como utilizar a base de usuários do JOOMLA 1.5.x para se logar externamente com PHP. Sério, você ainda pode precisar disso. Imagine a seguinte situação: Você tem um portal Joomla funcionando normalmente e necessita criar um sistema externo que necessita de autenticação, então você se lembra que no Joomla existe uma base de usuários [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://www.cocut.cn/images/2010/sep/joomla_login_module.jpg" alt="" width="468" height="304" /></p>
<p>Howto: Como utilizar a base de usuários do JOOMLA 1.5.x para se logar externamente com PHP.</p>
<p>Sério, você ainda pode precisar disso.</p>
<p>Imagine a seguinte situação:</p>
<p>Você tem um portal Joomla funcionando normalmente e necessita criar um sistema externo que necessita de autenticação, então você se lembra que no Joomla existe uma base de usuários completa e o que precisa fazer é somente utilizar essa base para se logar, maravilha, então confira no script abaixo como fazer isso, não requer prática nem habilidade:</p>
<pre class="brush: php">
&lt; ?php
session_start();

// Fazer conexão com o banco de dados
$db = mysql_connect(&quot;localhost&quot;, &quot;usuarioBD&quot;, &quot;senhaBD&quot;);
mysql_select_db(&quot;baseDeDados&quot;, $db);

// Pegar nome de usuário e senha do formulário
$usuario = $_POST[&#039;usuario&#039;];
$senha   = $_POST[&#039;senha&#039;];

// Obter senha cifrada do usuário
$sql = &quot;SELECT name, password FROM jos_users WHERE username=&#039;$usuario&#039;&quot;;
$resultado = mysql_query($sql);

// Extrair os dados do resultado da query
$pega = mysql_fetch_array($resultado);
$senhaCripto = $pega[&#039;password&#039;];

// Separar a senha do sal
if($senhaCripto)
{
$partes = explode( &#039;:&#039;, $senhaCripto );
$cripto = $partes[0];
$sal    = $partes[1];

// Criar hash com a senha fornecida com o sal (se houver)
$novoHash = ($sal) ? md5($senha.$sal) : md5($senha);

// USUÁRIO E SENHA VÁLIDOS:
if( $novoHash == $cripto ) {

// Jogando na sessão o nome do usuário, para poder utilizar posteriormente
  $_SESSION[&#039;nome&#039;] = $pega[&quot;name&quot;];

// Pode-se simplesmente exibir uma mensagem, ou redirecionar para uma página restrita.
  echo &quot;Acesso autorizado&quot;;
// redirecionando para a pagina restrita.
  header(&quot;location:pagina_restrita.php&quot;);

// USUÁRIO EXISTE, MAS A SENHA NÃO BATE:
} else {

// Pode-se exibir uma mensagem.
   echo &quot;Acesso negado. A senha não confere!&quot;;

// Ou é dar um alert pro usuário:
   echo &quot;&lt;SCRIPT LANGUAGE=&#039;JAVASCRIPT&#039;&gt;&quot;;
   echo &quot;alert(&#039;Acesso negado, a senha não confere&#039;);&quot;;
   echo &quot;window.location.replace(&#039;index.php&#039;);&quot;;
   echo &quot;&quot;;

}

// USUÁRIO INFORMADO NÃO EXISTE:
} else {

// Exibindo uma mensagem.
echo &quot;Este usuário não está cadastrado&quot;;

// Ou alertando o usuário:
   echo &quot;&lt;script LANGUAGE=&#039;JAVASCRIPT&#039;&gt;&quot;;
   echo &quot;alert(&#039;Este usuário não esta cadastrado&#039;);&quot;;
   echo &quot;window.location.replace(&#039;index.php&#039;);&quot;;
   echo &quot;&lt;/script&gt;&quot;;
}

// Fechando a conexão
mysql_close($db);
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/howto-como-utilizar-a-base-de-usuarios-do-joomla-1-5-x-para-se-logar-externamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Restringir o acesso ao wp-admin</title>
		<link>http://jf.eti.br/wordpress-restringir-o-acesso-ao-wp-admin/</link>
		<comments>http://jf.eti.br/wordpress-restringir-o-acesso-ao-wp-admin/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 18:56:26 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2221</guid>
		<description><![CDATA[Mais uma implementação de segurança fácil de habilitar no WordPress. Caso queira evitar que usuários de determinado perfil não tenha acesso ao Painel de Controle, ou ainda, permitir acesso ao Painel de Controle somente a partir de um IP, ideal quando se quer amarrar que as publicações sempre ocorram dentro de seu ambiente de Intranet. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://www.quality-web-programming.com/blog/wp-content/uploads/2011/09/wordpress-security.jpg" alt="" width="160" height="181" /></p>
<p>Mais uma implementação de segurança fácil de habilitar no WordPress.</p>
<p>Caso queira evitar que usuários de determinado perfil não tenha acesso ao Painel de Controle, ou ainda, permitir acesso ao Painel de Controle somente a partir de um IP, ideal quando se quer amarrar que as publicações sempre ocorram dentro de seu ambiente de Intranet.</p>
<p>Existe diversas maneiras de fazer isso, seja com código PHP ou por meio de plugins, vejamos:</p>
<p><strong>1. Restringir o acceso ao wp-admin com plugins:</strong></p>
<p>Embora existam muitos plugins para esta finalidade, o que oferece mais possibilidade customização é o <a href="http://wordpress.org/extend/plugins/wp-secure-by-sitesecuritymonitorcom/screenshots/" target="_blank">WP-Secure</a>, que permite limitar o acesso ao Painel de Controle tanto por IP ou por determinado usuário. Muito bom.</p>
<p><strong>2. Restringir o acceso ao wp-admin por IP:</strong></p>
<p>Para este método, precisaremos editar/criar o arquivo <em>.htaccess. </em></p>
<p>a. Encontre o arquivo <em>.htaccess</em> na raiz de seu site, utilizando um cliente de FTP, caso não exista este arquivo, você pode criar o mesmo, e inserir o seguinte conteúdo:</p>
<pre class="brush: php">
Order Deny, Allow
Deny from all
Allow from xx.xx.xx.xx
Allow from xx.xx.xx.xx
</pre>
<p>Onde xx.xx.xx.xx é o IP que pode acessar. Caso não saiba teu IP, pode utilizar <a href="http://www.whatismyip.com/" target="_blank">este link</a>.</p>
<p>Ainda não terminamos.</p>
<p>b. Agora vá até a pasta wp-admin de sua instalação WordPress e crie um outro <em>.htaccess</em>, e em seu interior, coloque essas linhas:</p>
<pre class="brush: php">
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xx
Allow from xx.xx.xx.xx
</pre>
<p>Novamente, o xx.xx.xx.xx representa o IP autorizado a acessar o Painel de Controle.</p>
<p><strong>3. Restringir o acesso ao wp-admin por código PHP.</strong></p>
<p>Esta é outra forma simples de conseguir os mesmos resultados, sem utilizar <em>.htaccess</em> ou plugins.</p>
<p>Edite o arquivo <span style="text-decoration: underline;">functions.php</span> de seu tema, caso não tenha este arquivo, basta criar e colocar dentro da pasta de seu tema.</p>
<pre class="brush: php">
&lt; ?php
	function restringir_login(){
		global $current_user;
		get_currentuserinfo();
		if ($current_user-&gt;user_level &lt; 4) { //se não é admin, não entra.
			wp_redirect( get_bloginfo(‘url’) );
			exit;
		}
	}
	add_action(‘admin_init’, ‘restringir_login’, 1);
?&gt;
</pre>
<p>Com este exemplo, todo usuário que não seja Administrador não poderá acessar o Painel de Controle, fácil assim.</p>
<p>Fontes e maiores informações:</p>
<ul>
<li><a href="http://www.trickswindow.com/wordpress/wordpress-tricks-tips/" target="_blank">http://www.trickswindow.com/wordpress/wordpress-tricks-tips/</a></li>
<li><a href="http://thesocialmediaguide.com/wordpress-blog/wordpress-security-guide" target="_blank">http://thesocialmediaguide.com/wordpress-blog/wordpress-security-guide</a></li>
<li><a href="http://www.problogdesign.com/wordpress/11-best-ways-to-improve-wordpress-security/" target="_blank">http://www.problogdesign.com/wordpress/11-best-ways-to-improve-wordpress-security/</a></li>
<li><a href="http://jamesblogs.com/2009/08/17/speeding-up-your-wordpress-dashboard/" target="_blank">http://jamesblogs.com/2009/08/17/speeding-up-your-wordpress-dashboard/</a></li>
<li><a href="http://www.noupe.com/how-tos/wordpress-security-tips-and-hacks.html" target="_blank">http://www.noupe.com/how-tos/wordpress-security-tips-and-hacks.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/wordpress-restringir-o-acesso-ao-wp-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como zerar todas as regras de IPTables</title>
		<link>http://jf.eti.br/como-zerar-todas-as-regras-de-iptables/</link>
		<comments>http://jf.eti.br/como-zerar-todas-as-regras-de-iptables/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 05:13:35 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2201</guid>
		<description><![CDATA[Howto: Script Shel para eliminar as regras do Firewall Iptable local. É algo útil para economizar tempo, sem a necessidade de ter que digitar cada linha na console, toda vezes que se deseja limpar as regras. Sistema Operacional: Debian e derivados. Dentro do diretório /scripts cremos um arquivo chamado limpa_iptables.sh com o seguinte conteúdo: #!/bin/sh [...]]]></description>
			<content:encoded><![CDATA[<p>Howto: Script Shel para eliminar as regras do Firewall Iptable local.</p>
<p>É algo útil para economizar tempo, sem a necessidade de ter que digitar cada linha na console, toda vezes que se deseja limpar as regras.</p>
<p>Sistema Operacional: Debian e derivados.</p>
<p>Dentro do diretório <em>/scripts</em> cremos um arquivo chamado <strong>limpa_iptables.sh</strong> com o seguinte conteúdo:</p>
<pre class="brush: shell">

#!/bin/sh
echo &quot;Limpando todas as regras e liberando todo o tráfego...&quot;
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -L -n
</pre>
<p>Agora é só tornar o script executável e pronto, já poderemos rapidamente dar um flush nas regras de iptable, com apenas um comando:</p>
<pre class="brush: shell">
root@srv:~# chmod +x /scripts/limpa_iptables.sh
root@srv:~# ./scripts/limpa_iptables.sh

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/como-zerar-todas-as-regras-de-iptables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Howto: Máscara de CPF e CNPJ no Excel</title>
		<link>http://jf.eti.br/howto-mascara-de-cpf-e-cnpj-no-excel/</link>
		<comments>http://jf.eti.br/howto-mascara-de-cpf-e-cnpj-no-excel/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 19:57:50 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2199</guid>
		<description><![CDATA[Essa é bem velha, mas vou deixar aqui para eu não esquecer mesmo. Para você conseguir personalizar a formatação do CNPJ ou CPF você utilizar a formatação de células com números personalizados. Esta formatação completará com zeros à equerda, isso é importante para o caso de CPF e/ou CNPJ que começam com zero, e quando [...]]]></description>
			<content:encoded><![CDATA[<p>Essa é bem velha, mas vou deixar aqui para eu não esquecer mesmo.</p>
<p>Para você conseguir personalizar a formatação do CNPJ ou CPF você utilizar a formatação de células com números personalizados. Esta formatação completará com zeros à equerda, isso é importante para o caso de CPF e/ou CNPJ que começam com zero, e quando você converte o valor para numérico esse zero a esquerda desaparece. Visualmente aparecerá com pontos e zeros, mas o valor da célula será o número digitado.</p>
<p>Ex: CPF: 555.555.555-55 -> Valor da célula será 55555555555</p>
<p>COMO FAZER:<br />
1-) Clique na célula ou coluna onde deseja inserir a formatação.<br />
2-) Selecione FORMATAR &#8211; CÉLULAS<br />
3-) Selecione NÚMERO<br />
4-) Selecione PERSONALIZADO<br />
5-) Na caixa de texto &#8220;TIPO&#8221; digite:<br />
p/ CPF: 000&#8243;.&#8221;000&#8243;.&#8221;000&#8243;-&#8221;00<br />
p/ CNPJ: 00&#8243;.&#8221;000&#8243;.&#8221;000&#8243;/&#8221;0000&#8243;-&#8221;00</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/howto-mascara-de-cpf-e-cnpj-no-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ícones personalizados para entradas customizadas no WordPress</title>
		<link>http://jf.eti.br/icones-personalizados-para-entradas-customizadas-no-wordpress/</link>
		<comments>http://jf.eti.br/icones-personalizados-para-entradas-customizadas-no-wordpress/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 15:26:14 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Dicas Web]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2188</guid>
		<description><![CDATA[Uma das novidades mais legais da versão 3.0 do WordPress é a possibilidade de criar formulários de entrada de dados com campos personalizados. É uma funcionalidade que tem muito a crescer, pois com este recurso pode-se transformar o WordPress em praticamente qualquer coisa que imaginar. Pois bem, provavelmente você esta ansioso para começar a criar [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das novidades mais legais da versão 3.0 do WordPress é a possibilidade de criar formulários de entrada de dados com campos personalizados. É uma funcionalidade que tem muito a crescer, pois com este recurso pode-se transformar o WordPress em praticamente qualquer coisa que imaginar.</p>
<p>Pois bem, provavelmente você esta ansioso para começar a criar suas entradas de dados personalizados, e para &#8220;floriar&#8221; um pouco, você pode conferir esta lista com nada menos de 3.000 ícones.</p>
<ul>
<li><a href="http://depositfiles.com/pt/files/i1i5w01s6" target="_blank">http://depositfiles.com/pt/files/i1i5w01s6</a> &#8211; 4.88MB</li>
<li>Link opcional: <a href="http://www.megaupload.com/?d=3O12YZ5G" target="_blank">http://www.megaupload.com/?d=3O12YZ5G</a></li>
</ul>
<p>Caso não se lembre do procedimento para utilizar ícones para seus formulários personalizados, aqui tem o código, mais abaixo um vídeo explicativo, para que não tenha mais dúvida.</p>
<pre class="brush: php">
        &lt; ?php
    add_action( &#039;admin_head&#039;, &#039;cpt_icons&#039; );
    function cpt_icons() {
        ?&gt;
        &lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
            #menu-posts-POSTTYPE .wp-menu-image {
                background: url(&lt; ?php bloginfo(&#039;template_url&#039;) ?&gt;/images/TUICONO.png) no-repeat 6px -17px !important;
            }
        #menu-posts-POSTTYPE:hover .wp-menu-image, #menu-posts-POSTTYPE.wp-has-current-submenu .wp-menu-image {
                background-position:6px 7px!important;
            }
        &lt;/style&gt;
    &lt; ?php } ?&gt;
</pre>
<p><a href="http://jf.eti.br/icones-personalizados-para-entradas-customizadas-no-wordpress/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/icones-personalizados-para-entradas-customizadas-no-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DotProject: Erro ao associar arquivo anexado a uma determinada tarefa</title>
		<link>http://jf.eti.br/dotproject-erro-ao-associar-arquivo-anexado-a-uma-determinada-tarefa/</link>
		<comments>http://jf.eti.br/dotproject-erro-ao-associar-arquivo-anexado-a-uma-determinada-tarefa/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 20:43:53 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2181</guid>
		<description><![CDATA[Este erro ocorre na versão 2.1.5. Quando se tenta fazer o upload de um determinado arquivo e deseja associar o arquivo a uma tarefa, na janela que se abre para que seja possível selecionar a tarefa é exibida a mensagem de erro: &#8220;Incorrect parameters passed&#8221; É simples de resolver, edite o arquivo modules/files/addedit.php, indo até [...]]]></description>
			<content:encoded><![CDATA[<p>Este erro ocorre na versão 2.1.5.</p>
<p>Quando se tenta fazer o upload de um determinado arquivo e deseja associar o arquivo a uma tarefa, na janela que se abre para que seja possível selecionar a tarefa é exibida a mensagem de erro: &#8220;<em><strong>Incorrect parameters passed</strong></em>&#8221;</p>
<p>É simples de resolver,</p>
<p>edite o arquivo modules/files/addedit.php, indo até a linha 139 (onde consta a instruções de window.open) e adicione um &#8220;&amp;&#8221; entre os termos:</p>
<p>dialog=1 e callback=setTask</p>
<p>Ficando assim:</p>
<pre class="brush: shell">
 window.open(&#039;?m=public&amp;a=selector&amp;dialog=1&amp;callback=setTask&amp;table=tasks&amp;task_project=&#039;
                            + f.file_project.options[f.file_project.selectedIndex].value, &#039;task&#039;,&#039;left=50,top=50,height=250,width=400,resizable&#039;)
</pre>
<p>Feito isso, faça um logout na aplicação, e de um restart no apache e pronto, já poderá associar uma tarefa ao arquivo anexado.</p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/dotproject-erro-ao-associar-arquivo-anexado-a-uma-determinada-tarefa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Howto: DotProject com problemas para enviar emails</title>
		<link>http://jf.eti.br/howto-dotproject-com-problemas-para-enviar-emails/</link>
		<comments>http://jf.eti.br/howto-dotproject-com-problemas-para-enviar-emails/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 22:01:41 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Dicas Web]]></category>
		<category><![CDATA[HowTo - Como fazer]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2171</guid>
		<description><![CDATA[Na Gestão de Projetos de TI,  se  torna necessário o uso de uma  ferramenta que acompanhe, auxilie e trabalhe o dia-a-dia do Gerenciamento de Projetos. O DotProject é um Software Livre voltado  para  gerência  de  projetos,  e  muito  utilizado  em  TI.  Com  o  dotproject  é  possível controlar  todos  os momentos  do  gerenciamento  de  um  projeto,  [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://forums.dotproject.net/images/misc/logo_large.png" alt="" width="483" height="167" /></p>
<p>Na Gestão de Projetos de TI,  se  torna necessário o uso de uma  ferramenta que acompanhe, auxilie e trabalhe o dia-a-dia do Gerenciamento de Projetos. O <a href="http://www.dotproject.net/" target="_blank">DotProject</a> é um Software Livre<br />
voltado  para  gerência  de  projetos,  e  muito  utilizado  em  TI.  Com  o  dotproject  é  possível controlar  todos  os momentos  do  gerenciamento  de  um  projeto,  incluindo  custos,  prazos  e stakeholders envolvidos no projeto. Provavelmente você já o conhece.</p>
<p>É muitas vezes instalados dentro de uma Intranet e  não é difícil encontramos reclamações de envio de email pela aplicação.</p>
<p>Pelo Dot é possível configurar a forma de envio das mensagens pelo Menu Admin. do Sistema » Preferências » Configuração do Sistema, sendo possível utilizar um servidor externo de SMTP ou pelo próprio PHP através do sendmail.</p>
<p>Para usar o sendmail basta configurar da seguinte maneira:</p>
<ul>
<li>Transporte de Email: Padrão PHP</li>
<li>Servidor SMTP: /usr/sbin/sendmail</li>
<li>Porta: 25</li>
</ul>
<p>E só.</p>
<p>Ai que vem o problema, os emails enviados pelo Dot utilizando esta configuração possui a seguinte linha no cabeçalho: <strong>Received: (from apache@localhost)</strong>, com isso muitos provedores (não são todos) realizam a checagem do cabeçalho e simplesmente rejeitam as mensagens, Gmail por exemplo aceita já o Google APPs que é o serviço do Google para servidores de email a domínios particulares não aceita.</p>
<p>Certo, ai talvez você seja cliente do Google APPS assim com eu e resolva utilizá-lo como seu servidor de SMTP externo:</p>
<ul>
<li>Transporte de Email: SMTP</li>
<li>Servidor SMTP: smtp.gmail.com</li>
<li>Porta: 465</li>
<li>Servidor Requer Autenticação</li>
<li>Usuário SMTP: usuario@seudominio.com</li>
<li>Senha do SMTP: sua senha</li>
<li>Habilitar TLS para SMTP</li>
</ul>
<p>Provavelmente isso não vai funcionar, e vai retornar como erro: Failed to send email: 503 5.5.1&#8230;</p>
<p><strong>Solução 1:</strong></p>
<p>Trocar o Sendmail pelo Postfix. Se estiver usando CentOS (Red Hat, Fedora&#8230;) é só fazer assim:</p>
<p># yum install postfix system-switch-mail</p>
<p># system-switch-mail</p>
<p>Vai ser exibido uma tela para que você faça a alteração de agente de Transporte de E-Mail (MTA), sendmail e postfix. Escolha postfix e confirme.</p>
<p>Agora você edite o arquivo php.ini que fica em:</p>
<p># vi /etc/php.ini</p>
<p>localize a linha:<br />
sendmail_path = /usr/sbin/sendmail -t -i</p>
<p>altere para:<br />
sendmail_path = /usr/sbin/sendmail.postfix -t -i</p>
<p>Reinicie o posfix</p>
<p># /etc/init.d/postfix restart</p>
<p>Volte ao DotProject e vá até as configurações de SMTP (Menu Admin. do Sistema » Preferências » Configuração do Sistema).</p>
<p>Se estiver usando Ubuntu (Debian e derivados)</p>
<p># sudo apt-get install postfix</p>
<p>Durante irá perguntar o tipo de servidor, você responde: &#8220;internet site&#8221;</p>
<p>Edite para ficar assim:</p>
<ul>
<li>Transporte de Email: SMTP</li>
<li>Servidor ssl://smtp.gmail.com</li>
<li>Porta: 465</li>
<li>Servidor Requer Autenticação</li>
<li>Usuário SMTP: usuario@seudominio.com</li>
<li>Senha do SMTP: sua senha</li>
<li>Desmaque o TLS</li>
</ul>
<p>Pronto com isso já deve funcionar.</p>
<p><strong>Solução 2</strong></p>
<p>Alterando alguns arquivos de configuração apenas:</p>
<p>Primeiro para corrigir o erro: Failed to login to SMTP server: 502 5.5.1<br />
<a href="http://www.dotproject.net/vbulletin/archive/index.php?t-5301.html" target="_blank">http://www.dotproject.net/vbulletin/showthread.php?t=5359&amp;page=2</a></p>
<p>Depois este segundo passo:<br />
<a href="http://www.dotproject.net/vbulletin/archive/index.php?t-5301.html" target="_blank">http://www.dotproject.net/vbulletin/archive/index.php?t-5301.html</a></p>
<p><strong>Referências</strong></p>
<p><a href="http://wiki.centos.org/HowTos/postfix" target="_blank">http://wiki.centos.org/HowTos/postfix</a><br />
<a href="http://www.linuxmail.info/postfix-smtp-server-howto-centos-5/" target="_blank">http://www.linuxmail.info/postfix-smtp-server-howto-centos-5/</a><br />
<a href="http://drupal.org/node/321857" target="_blank">http://drupal.org/node/321857</a><br />
<a href="http://drupal.org/node/321857" target="_blank">http://serverfault.com/questions/108047/ubuntu-mail-server-switch-to-postfix-from-sendmail</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/howto-dotproject-com-problemas-para-enviar-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exibir todas as imagens de uma pasta utilizando PHP</title>
		<link>http://jf.eti.br/exibir-todas-as-imagens-de-uma-pasta-utilizando-php/</link>
		<comments>http://jf.eti.br/exibir-todas-as-imagens-de-uma-pasta-utilizando-php/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 15:29:58 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[HowTo - Como fazer]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://jf.eti.br/?p=2167</guid>
		<description><![CDATA[Com este pequeno script é possível exibir todas as imagens de uma determinada pasta. Adicionei uma tabela para ter uma visão de impressão. &#60; ?php //Sua pasta $files = glob(&#34;imagens/*.*&#34;); $colCnt=0; echo &#039;&#60;table border=&#34;0&#34; style=&#34;width:590px;&#34;&#62;&#039;; for ($i=1; $i&#60;count ($files); $i++) { $colCnt++; if ($colCnt==1) echo &#039;&#60;tr&#62;&#039;; echo &#039;&#60;td width=&#34;25%&#34; style=&#34;font-size:8.5px; font-family:arial&#34;&#62;&#039;; $num = $files[$i]; echo [...]]]></description>
			<content:encoded><![CDATA[<p>Com este pequeno script é possível exibir todas as imagens de uma determinada pasta. Adicionei uma tabela para ter uma visão de impressão.</p>
<pre class="brush: php">
&lt; ?php
//Sua pasta
$files = glob(&quot;imagens/*.*&quot;);

$colCnt=0;
echo &#039;&lt;table border=&quot;0&quot; style=&quot;width:590px;&quot;&gt;&#039;;

for ($i=1; $i&lt;count ($files); $i++)
  {
  $colCnt++;
  if ($colCnt==1)
  echo &#039;&lt;tr&gt;&#039;;
  echo &#039;&lt;td width=&quot;25%&quot; style=&quot;font-size:8.5px; font-family:arial&quot;&gt;&#039;;

  $num = $files[$i];
  echo &#039;&lt;img src=&quot;&#039;.$num.&#039;&quot; align=&quot;absmiddle&quot; /&gt; &#039;;
  print substr(substr($num,6,100),0,-4);

  echo &#039;&lt;/td&gt;&#039;;

  if ($colCnt==4)
    {
    echo &#039;&#039;;
    $colCnt=0;
    }
  }

echo &#039;&#039;;
?&gt;
</pre>
<p></count></p>
]]></content:encoded>
			<wfw:commentRss>http://jf.eti.br/exibir-todas-as-imagens-de-uma-pasta-utilizando-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

