<?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/"
	>

<channel>
	<title>Notas de programação</title>
	<atom:link href="http://notas.blogs.dri.pt/feed/" rel="self" type="application/rss+xml" />
	<link>http://notas.blogs.dri.pt</link>
	<description>Mais outro blog da dri weblog</description>
	<pubDate>Fri, 11 May 2012 11:11:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Configurar Linux para localhost responder a sítios de desenvolvimento</title>
		<link>http://notas.blogs.dri.pt/2012/05/11/configurar-linux-localhost-responder-loc/</link>
		<comments>http://notas.blogs.dri.pt/2012/05/11/configurar-linux-localhost-responder-loc/#comments</comments>
		<pubDate>Fri, 11 May 2012 11:09:27 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=81</guid>
		<description><![CDATA[Ao desenvolver aplicações para web, localmente, dá jeito configurar um virtual host, para o domínio em questão ser exemplo.loc (em vez de localhost/dev/exemplo).
Mas antes há que introduzir mais uma entrada no /etc/hosts:
127.0.0.1 exemplo.loc
 &#8230; certo? Nem por isso  
Outra solução é configurar um (servidor) DNS local para reencaminhar determinado domínio (no meu caso. uso [...]]]></description>
			<content:encoded><![CDATA[<p>Ao desenvolver aplicações para web, localmente, dá jeito configurar um virtual host, para o domínio em questão ser exemplo.loc (em vez de localhost/dev/exemplo).<br />
Mas antes há que introduzir mais uma entrada no /etc/hosts:<br />
<code>127.0.0.1 exemplo.loc</code><br />
 &#8230; certo? Nem por isso <img src='http://notas.blogs.dri.pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Outra solução é configurar um (servidor) DNS local para reencaminhar determinado domínio (no meu caso. uso <em>loc</em>). Passos necessários:</p>
<ol>
<li>Instalar (servidor) DNS dnsmasq:<br />
<code># apt-get install dnsmasq</code>
</li>
<li>Configurar dnsmask: Em /etc/dnsmasq.conf adicionar as linhas:<br />
<code>listen-address=127.0.0.1<br />
address=/loc/127.0.0.1<br />
</code>
</li>
<li>Configurar o /etc/resolv.conf: Adicionar a linha:<br />
<code>nameserver 127.0.0.1</code><br />
Ops, no meu caso pessoal, usando Ubuntu, isto não adianta, porque o Gestor de Redes (Network Manager) reescreve este ficheiro.<br />
Por isso, o que faço é, no Gestor de Redes editar a Ligação de rede com fios, nas Definições de IPv4, selecionar &#8220;Somente endereços (DHCP) automáticos&#8221; e nos servidores de DNS coloco 127.0.0.1
</li>
<li>Reiniciar dnsmasq:<br />
<code># /etc/init.d/dnsmasq restart</code>
</li>
<p>Pronto, indo a exemplo.loc ou qualquercoisa.loc, sou reencaminhado para o meu localhost. Agora resta configurar o virtualhost&#8230; o que se contínua fazendo da mesma forma que antes. Isto apenas evita que de hoje em diante deixe de mexer novamente em /etc/hosts.</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2012/05/11/configurar-linux-localhost-responder-loc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Montar uma partilha</title>
		<link>http://notas.blogs.dri.pt/2012/03/01/montar-uma-partilha/</link>
		<comments>http://notas.blogs.dri.pt/2012/03/01/montar-uma-partilha/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 14:26:53 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[gnome]]></category>

		<category><![CDATA[samba]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=56</guid>
		<description><![CDATA[Inicializar uma partilha com SMB, FTP ou SFTP, usando por exemplo o Nautilus. Ir para a pasta [~/.gvfs], e digitar:
[~/.gvfs]&#62;/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs
]]></description>
			<content:encoded><![CDATA[<p>Inicializar uma partilha com SMB, FTP ou SFTP, usando por exemplo o Nautilus. Ir para a pasta [~/.gvfs], e digitar:</p>
<pre style="padding: 3px;border: 1px inset">[~/.gvfs]&gt;/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs</pre>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2012/03/01/montar-uma-partilha/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Git&#8230; tanto que há para dizer sobre o git</title>
		<link>http://notas.blogs.dri.pt/2011/12/14/comandos-git/</link>
		<comments>http://notas.blogs.dri.pt/2011/12/14/comandos-git/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 10:27:02 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=44</guid>
		<description><![CDATA[Operações local/remoto
Obter muita informação sobre os branches locais e remotos:
git remote show &#60;origin-ou-outro-remote&#62;
Para fazer prune (apagar branches que já foram removidos no repositório) (usar a flag &#8211;dry-run para simular antes de apagar):
git remote prune &#60;origin-ou-outro-remote&#62;
Enviar um branch criado localmente (-u para manter track entre branch local e remoto):
git push -u origin &#60;branch-a-enviar&#62;
Apagar um branch no [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Operações local/remoto</strong></p>
<p>Obter muita informação sobre os branches locais e remotos:</p>
<pre><code>git remote show &lt;origin-ou-outro-remote&gt;</code></pre>
<p>Para fazer prune (apagar branches que já foram removidos no repositório) (usar a flag &#8211;dry-run para simular antes de apagar):</p>
<pre><code>git remote prune </code><code>&lt;origin-ou-outro-remote&gt;</code></pre>
<p>Enviar um branch criado localmente (-u para manter track entre branch local e remoto):</p>
<pre><code>git push -u origin &lt;branch-a-enviar&gt;</code></pre>
<p>Apagar um branch no repositório:</p>
<p><code>git push origin :&lt;branch-a-apagar&gt;</code></p>
<p>Fazer merge para rever alterações, sem comit: ir para o branch que vai receber as alterações e realizar o comando:</p>
<p><code>git mergeleader &lt;branch-a-fazer-merge&gt;</code></p>
<p>Fazer com que um branch local fique ligado (tracked) a um branch remoto:</p>
<pre>git branch --set-upstream branch_local branch_remoto</pre>
<p>Puxar um branch novo e fazer com que fiquem ligados (tracked)</p>
<pre>git checkout --track [branch_local] branch_remoto</pre>
<p>PS: As opções &#8211;set-upstream e &#8211;track fazem a mesma coisa quando o branch não existe localmente.</p>
<p><strong>Operações locais</strong></p>
<p>Renomear um branch local (usar -M para renomear mesmo que já exista um branch com o novo nome):</p>
<p><code>git branch -m </code><code>&lt;nome_branch_antes&gt; </code><code>&lt;nome_branch_depois&gt;</code></p>
<p>Apagar um branch local:</p>
<p><code>git branch -d </code><code>&lt;nome_branch&gt;</code></p>
<p>Reverter um ficheiro para a última versão no branch atual:</p>
<p><code>git checkout -- </code><code>&lt;file&gt;</code></p>
<p>Reverter tudo para a última versão no branch atual:</p>
<p><code>git reset --hard HEAD</code></p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/12/14/comandos-git/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Drupal: &#8220;Clean URL test fails&#8221;</title>
		<link>http://notas.blogs.dri.pt/2011/11/14/drupal-clean-url-test-fails/</link>
		<comments>http://notas.blogs.dri.pt/2011/11/14/drupal-clean-url-test-fails/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:33:41 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=40</guid>
		<description><![CDATA[Em http://drup.loc/?q=admin/config/search/clean-urls, quando se tem o erro &#8220;Clean URL test fails&#8221;, o que fazer:
1) Verificar que se tem o .htaccess na raiz do projecto (uma vez que é um ficheiro escondido, por vezes não é colado com os restantes ficherios&#8230;);
2) Verificar que o módulo do apache &#8220;mod_rewrite&#8221; está ligado, por exemplo, verificando se aparece listado [...]]]></description>
			<content:encoded><![CDATA[<p>Em http://drup.loc/?q=admin/config/search/clean-urls, quando se tem o erro &#8220;Clean URL test fails&#8221;, o que fazer:</p>
<p>1) Verificar que se tem o .htaccess na raiz do projecto (uma vez que é um ficheiro escondido, por vezes não é colado com os restantes ficherios&#8230;);</p>
<p>2) Verificar que o módulo do apache &#8220;mod_rewrite&#8221; está ligado, por exemplo, verificando se aparece listado na info do phpinfo(). Caso não esteja ligado, correr o comando: &gt;<code>sudo a2enmod rewrite </code>e reiniciar o apache;</p>
<p>3) Verificar que nas diretivas do servidor (no meu caso, /etc/apache2/sites-enabled/000-default), se tem &#8220;AllowOverride All&#8221; na Directory correspondente à pasta pública.</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/11/14/drupal-clean-url-test-fails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Guardar senha de SSH durante a sessão</title>
		<link>http://notas.blogs.dri.pt/2011/11/11/guardar-senha-de-ssh-durante-a-sessao/</link>
		<comments>http://notas.blogs.dri.pt/2011/11/11/guardar-senha-de-ssh-durante-a-sessao/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 00:28:25 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=37</guid>
		<description><![CDATA[Comigo este comando
$ssh-add
&#8230; basta, em qualquer pasta onde esteja. Caso contrário, ir para a pasta ~/.ssh, escrever o comando
$ssh-add [private_key_name e.g. id_rsa]
&#8230;e inserir a senha.
A senha será lembrada enquanto a sessão no computador se mantiver ativa.
]]></description>
			<content:encoded><![CDATA[<p>Comigo este comando</p>
<pre style="padding-left: 30px">$ssh-add</pre>
<p>&#8230; basta, em qualquer pasta onde esteja. Caso contrário, ir para a pasta ~/.ssh, escrever o comando</p>
<pre style="padding-left: 30px">$ssh-add [private_key_name e.g. id_rsa]</pre>
<p>&#8230;e inserir a senha.</p>
<p>A senha será lembrada enquanto a sessão no computador se mantiver ativa.</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/11/11/guardar-senha-de-ssh-durante-a-sessao/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comandos Linux para Mysql</title>
		<link>http://notas.blogs.dri.pt/2011/07/07/comandos-linux-para-mysql/</link>
		<comments>http://notas.blogs.dri.pt/2011/07/07/comandos-linux-para-mysql/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 11:23:49 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=34</guid>
		<description><![CDATA[Login:
&#62; mysql -u [usuario] -p
Exportar:
&#62; mysqldump -u &#60;username&#62; &#60;database&#62; &#124; gzip &#62; db.sql.gz
Importar:
&#62; mysql -u [usuario] -p [bd] &#60; [dados.sql]
ou, se o ficheiro estiver gunzipado,
&#62; gunzip &#60; [dados.sql.gz] &#124; mysql -u [username] [bd]
]]></description>
			<content:encoded><![CDATA[<p><strong>Login:</strong><br />
&gt; mysql -u [usuario] -p</p>
<p><strong>Exportar:</strong><br />
&gt; mysqldump -u &lt;username&gt; &lt;database&gt; | gzip &gt; db.sql.gz</p>
<p><strong>Importar:</strong><br />
&gt; mysql -u [usuario] -p [bd] &lt; [dados.sql]<br />
ou, se o ficheiro estiver <em>gunzipado</em>,<br />
&gt; gunzip &lt; [dados.sql.gz] | mysql -u [username] [bd]</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/07/07/comandos-linux-para-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mostra/apaga texto pre-definido</title>
		<link>http://notas.blogs.dri.pt/2011/05/20/mostraapaga-texto-pre-definido/</link>
		<comments>http://notas.blogs.dri.pt/2011/05/20/mostraapaga-texto-pre-definido/#comments</comments>
		<pubDate>Fri, 20 May 2011 14:41:42 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[codigo]]></category>

		<category><![CDATA[javascript jquery]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=18</guid>
		<description><![CDATA[Uma das boas práticas de acessibilidade é ter todos os inputs HTML pré-preenchidos. Por exemplo, &#8220;Insira o seu nome&#8221; no campo destinado ao nome do Utilizador.
O seguinte javascript, com jquery 1.4.4, ajuda no seguinte:

Ao clicar, se o o campo tem um texto pré-definido pelo sistema, apaga esse texto;
Se o campo é pré-definido mas de acordo [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das boas práticas de acessibilidade é ter todos os inputs HTML pré-preenchidos. Por exemplo, &#8220;Insira o seu nome&#8221; no campo destinado ao nome do Utilizador.<br />
O seguinte javascript, com jquery 1.4.4, ajuda no seguinte:</p>
<ul>
<li>Ao clicar, se o o campo tem um texto pré-definido pelo sistema, apaga esse texto;</li>
<li>Se o campo é pré-definido mas de acordo com um valor inserido pelo Utilizador, não apaga esse texto;</li>
<li>Ao retirar o foco do campo, se ficar vazio, volta a mostrar o texto pré-definido;</li>
<li>Ao submeter o formulário, se o campo tiver o texto pré-definido apaga esse texto.</li>
</ul>
<p>O seguinte código obedece a estes requisitos. Há que adicionar aos campos interessantes a class <em>defaultext</em> e os textos pré-definidos pelo sistema devem começar por <em>§<em>.</em></em></p>
<p><em><em></p>
<pre>$(document).ready(function(){
    $('.defaultext').each(function(i,el){
        var txt= el.value;
        $(el).bind('focus', function(){
            if(el.value.substring(0,1)=='§'){el.value=''; $(el).bind('blur', function() {if(el.value==''){el.value=txt;}});}
        });
        var $form= $(el).parents('form');
        try{
            $form= $($form[0]);
            $form.submit(function(){if(el.value.substring(0,1)=='§'){el.value= '';}});
        }catch(e){}
    });
});</pre>
<p></em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/05/20/mostraapaga-texto-pre-definido/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Backups</title>
		<link>http://notas.blogs.dri.pt/2011/05/17/backups/</link>
		<comments>http://notas.blogs.dri.pt/2011/05/17/backups/#comments</comments>
		<pubDate>Tue, 17 May 2011 14:50:42 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=13</guid>
		<description><![CDATA[No Ubuntu, faço backups regulares destas pastas:

/var/lib/mysql/BD MySQL;
/home/eumesmo/.thunderbird/Pasta com perfil e correio do Thunderbird;
/home/eumesmo/Documents/Ficheiros pessoais;

E é só&#8230; quase tudo o resto está na nuvem, ou em repositórios svn!
]]></description>
			<content:encoded><![CDATA[<p>No Ubuntu, faço backups regulares destas pastas:</p>
<ul>
<li><code>/var/lib/mysql/</code><br />BD MySQL;</li>
<li><code>/home/eumesmo/.thunderbird/</code><br />Pasta com perfil e correio do Thunderbird;</li>
<li><code>/home/eumesmo/Documents/</code><br />Ficheiros pessoais;</li>
</ul>
<p>E é só&#8230; quase tudo o resto está na <em>nuvem</em>, ou em repositórios svn!</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/05/17/backups/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comandos de Linux para ficheiros</title>
		<link>http://notas.blogs.dri.pt/2011/04/26/alguns-comandos-de-linux/</link>
		<comments>http://notas.blogs.dri.pt/2011/04/26/alguns-comandos-de-linux/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 13:59:59 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=11</guid>
		<description><![CDATA[Criar um Symlink:
&#62; ln -s path/para/destino &#60;nome_symlink&#62;
Renomear ficheiros numa pasta:
&#62; rename s/&#60;tit_antes&#62;/&#60;tit_depois&#62;/ *
Apagar tudo dentro duma Pasta, incluindo ficheiros escondidos:
 &#8230; neste caso, apagar na pasta atual - convém verificar que não se está na root  
&#62; rm * -rf .[^.] .??*
Procurar em Ficheiros:
&#62; grep -irn &#8216;txt_a_procurar&#8217; /path/para/dir
(opções: i para indiferença a maísuculas, r [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Criar um Symlink:</strong><br />
&gt; ln -s path/para/destino &lt;nome_symlink&gt;</p>
<p><strong>Renomear ficheiros numa pasta:</strong></p>
<p>&gt; rename s/&lt;tit_antes&gt;/&lt;tit_depois&gt;/ *</p>
<p><strong>Apagar tudo dentro duma Pasta, incluindo ficheiros escondidos:<br />
</strong> &#8230; neste caso, apagar na pasta atual - convém verificar que não se está na root <img src='http://notas.blogs.dri.pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&gt; rm * -rf .[^.] .??*</p>
<p><strong>Procurar em Ficheiros:</strong><br />
&gt; grep -irn &#8216;txt_a_procurar&#8217; /path/para/dir<br />
(opções: i para indiferença a maísuculas, r para recursividade nas diretorias, n para mostrar a linha)</p>
<p><strong>Procurar e substituir em Ficheiros:</strong><br />
&gt; find path/para/ -name &#8216;*.php&#8217; -print0 | xargs -0 sed -i &#8217;s/antes/depois -/g&#8217;</p>
<p><strong>Procurar Ficheiros:</strong><br />
&gt; find /path/para/dir -iname &#8216;*.txt&#8217;</p>
<p>(more <a href="http://www.debuntu.org/how-to-find-files-on-your-computer-with-find">here</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/04/26/alguns-comandos-de-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Teste de Java sem sucesso</title>
		<link>http://notas.blogs.dri.pt/2011/04/06/teste-de-java-sem-sucesso/</link>
		<comments>http://notas.blogs.dri.pt/2011/04/06/teste-de-java-sem-sucesso/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 09:23:33 +0000</pubDate>
		<dc:creator>dvargas</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[chrome]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[synaptic]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://notas.blogs.dri.pt/?p=3</guid>
		<description><![CDATA[Inicialmente o teste para verificar se o navegador suportava Java (em http://www.java.com/en/download/testjava.jsp) falhava - tanto no Firefox como no Chrome (aliás, Chromium).
Para ultrapassar este teste, usando apenas o Synaptic do Ubuntu, instalei (ou verifiquei já ter instalado) os seguintes 4 pacotes:
sun-java6-jre + sun-java6-bin + sun-java6-fonts + sun-java6-plugin
Caso não apareçam no Synaptic estes pacotes, executar na [...]]]></description>
			<content:encoded><![CDATA[<p>Inicialmente o teste para verificar se o navegador suportava Java (em http://www.java.com/en/download/testjava.jsp) falhava - tanto no Firefox como no Chrome (aliás, Chromium).</p>
<p>Para ultrapassar este teste, usando apenas o Synaptic do Ubuntu, instalei (ou verifiquei já ter instalado) os seguintes 4 pacotes:</p>
<p>sun-java6-jre + sun-java6-bin + sun-java6-fonts + sun-java6-plugin</p>
<div style="color: #888;border: 1px solid #888">Caso não apareçam no Synaptic estes pacotes, executar na linha de comandos:</p>
<pre>add-apt-repository "deb http://archive.canonical.com/ natty partner"
sudo apt-get update</pre>
</div>
<p>Feito:<br />
Your Java is working.<br />
Version: Java SE 6 Update 24<br />
Operating System 2.6.35-28-generic</p>
]]></content:encoded>
			<wfw:commentRss>http://notas.blogs.dri.pt/2011/04/06/teste-de-java-sem-sucesso/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

