<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Leandro Nunes dos Santos</title>
	<atom:link href="http://www.leandronunes.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leandronunes.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 01 Jul 2010 16:04:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; Leandro Nunes dos Santos 2010 </copyright>
		<managingEditor>leandronunes@gmail.com (Leandro Nunes dos Santos)</managingEditor>
		<webMaster>leandronunes@gmail.com (Leandro Nunes dos Santos)</webMaster>
		<category>posts</category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Just another WordPress weblog</itunes:summary>
		<itunes:author>Leandro Nunes dos Santos</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>Leandro Nunes dos Santos</itunes:name>
			<itunes:email>leandronunes@gmail.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.leandronunes.net/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.leandronunes.net/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Leandro Nunes dos Santos</title>
			<link>http://www.leandronunes.net</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Webrat, Selenium e Firefox 3.6</title>
		<link>http://www.leandronunes.net/2010/07/webrat-selenium-e-firefox-3-6/</link>
		<comments>http://www.leandronunes.net/2010/07/webrat-selenium-e-firefox-3-6/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:04:49 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[webrat]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=141</guid>
		<description><![CDATA[Eu sempre procuro deixar o meu sistema o mais atualizado possível. Volta e meia eu me deparo com problemas de compatibilidade de alguns softwares e a bola da vez foi o Selenium com o Webrat.
Eu estava utilizando o cucumber com o selenium no desenvolvimento de uma aplicação e não estava funcionando.
Depois de muito fuçar vi [...]]]></description>
			<content:encoded><![CDATA[<p>Eu sempre procuro deixar o meu sistema o mais atualizado possível. Volta e meia eu me deparo com problemas de compatibilidade de alguns softwares e a bola da vez foi o Selenium com o Webrat.</p>
<p>Eu estava utilizando o cucumber com o selenium no desenvolvimento de uma aplicação e não estava funcionando.</p>
<p>Depois de muito <a href="http://www.qaautomation.net/?p=15">fuçar</a> vi que o problema era a incompatibilidade do webrat versão 0.5.1 com a versão do firefox que eu estou usando 3.6.6.</p>
<p>Para resolver o problema sem perder toda a sua manhã como eu <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  siga as instruções abaixo:</p>
<pre>
   1. Crie um diretório onde você possa manipular o conteúdo do jar
     mkdir -p ~/tmp/selenium
     cd ~/tmp/selenium

   2. Copie o arquivo jar do Webrat para a pasta criada
     cp ~/.gem/ruby/1.8/gems/webrat-0.5.1/vendor/selenium-server.jar .

OBS: Eu instalei a gem webrat localmente no meu home, você deve realizar uma
adaptação para a sua realidade neste ponto.

   3. Descompacte os arquivos contidos no jar e delete o arquivo jar
     unzip selenium-server.jar
     rm selenium-server.jar

   4. Procure os arquivos *.rdf (deve existir 5 destes arquivos):
     find . -name "*.rdf"
     ./customProfileDirCUSTFF/extensions/{538F0036-F358-4f84-A764-89FB437166B4}/install.rdf
     ./customProfileDirCUSTFF/extensions/readystate@openqa.org/install.rdf
     ./customProfileDirCUSTFFCHROME/extensions/{503A0CD4-EDC8-489b-853B-19E0BAA8F0A4}/install.rdf
     ./customProfileDirCUSTFFCHROME/extensions/{538F0036-F358-4f84-A764-89FB437166B4}/install.rdf
     ./customProfileDirCUSTFFCHROME/extensions/readystate@openqa.org/install.rdf

   5. Em cada um destes arquivos você verá:
     <code>&lt;em:maxVersion&gt;3.5.*&lt;/em:maxVersion&gt;</code>
   Mude para
     <code>&lt;em:maxVersion&gt;3.6.*&lt;/em:maxVersion&gt;</code>

   6. todos os arquivos agora estão prontos. Gere novamente o arquivo jar
e mova para o local correto do webrat:
     zip -r selenium-server *
     mv selenium-server.zip selenium-server.jar
     mv selenium-server.jar ~/.gem/ruby/1.8/gems/webrat-0.5.1/vendor/selenium-server.jar

OBS: Eu instalei a gem webrat localmente no meu home, você deve realizar uma
adaptação para a sua realidade neste ponto.

	* Referência: <a href="http://www.qaautomation.net/?p=15">http://www.qaautomation.net/?p=15</a>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2010/07/webrat-selenium-e-firefox-3-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atualizando o git e tendo problemas com o push.default</title>
		<link>http://www.leandronunes.net/2010/04/atualizando-o-git-e-tendo-problemas-com-o-push-default/</link>
		<comments>http://www.leandronunes.net/2010/04/atualizando-o-git-e-tendo-problemas-com-o-push-default/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 01:16:30 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=114</guid>
		<description><![CDATA[Se você atualizou a sua versão do git para a 1.6.3.3 como eu vai ficar assustado depois de dar um git push.
Você vai se deparar com isso:

warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all [...]]]></description>
			<content:encoded><![CDATA[<p>Se você atualizou a sua versão do git para a 1.6.3.3 como eu vai ficar assustado depois de dar um git push.</p>
<p>Você vai se deparar com isso:</p>
<pre>
warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated.  This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning:   'nothing'  : Do not push anything
warning:   'matching' : Push all matching branches (default)
warning:   'tracking' : Push the current branch to whatever it is tracking
warning:   'current'  : Push the current branch
</pre>
<p>Pode ficar tranquilo que não foi uma falha de segmentação no seu SO, mas sim uma mensagem de Warning que o novo git trás para te avisar que você precisa configurar a variável:</p>
<pre>push.default</pre>
<p>É claro que o seu comando vai continuar funcionando perfeitamente como sempre funcionou se você não configurar essa variável, mas você vai ficar agoniado com essa mensagem imensa de warning aparecendo toda hora na sua tela.</p>
<p>Acredite em mim <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Então para ajeitar isso basta configurar variável com o comando:</p>
<pre>git config push.default matching</pre>
<p>Se você deseja que esta seja uma configuração padrão para todos os seus repositórios digite o comando:</p>
<pre>git config --global push.default matching</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2010/04/atualizando-o-git-e-tendo-problemas-com-o-push-default/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PSDB nunca mais&#8230;</title>
		<link>http://www.leandronunes.net/2009/12/psdb-nunca-mais/</link>
		<comments>http://www.leandronunes.net/2009/12/psdb-nunca-mais/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 15:55:40 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[política]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=106</guid>
		<description><![CDATA[
Propaganda do PT para as eleições 2010
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xxh_8twukpE&#038;hl=pt_BR&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/xxh_8twukpE&#038;hl=pt_BR&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><a href="http://www.youtube.com/watch?v=xxh_8twukpE">Propaganda do PT para as eleições 2010</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/12/psdb-nunca-mais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ele é o cara&#8230;</title>
		<link>http://www.leandronunes.net/2009/11/ele-e-o-cara/</link>
		<comments>http://www.leandronunes.net/2009/11/ele-e-o-cara/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 22:07:16 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[política]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=85</guid>
		<description><![CDATA[Começou hoje a etapa da baiana da Confecom &#8211; Conferência Nacional de Comunicação.
As discussões que acontecerem no evento estavam bastante acalouradas e contou com a presença de grandes personalidades do cenário político da Bahia, como o governador Jaques Vagner.
Não resisti ao meu impulso de tiete e tirei uma foto com ele  

]]></description>
			<content:encoded><![CDATA[<p>Começou hoje a etapa da baiana da <a href="http://conferencia.comunicacao.ba.gov.br/">Confecom</a> &#8211; Conferência Nacional de Comunicação.</p>
<p>As discussões que acontecerem no evento estavam bastante acalouradas e contou com a presença de grandes personalidades do cenário político da Bahia, como o governador Jaques Vagner.</p>
<p>Não resisti ao meu impulso de tiete e tirei uma foto com ele <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;">
<div class="wp-caption aligncenter" style="width: 546px"><img title="Paulo Henrique Amorim Leandro" src="http://test.leandronunes.net/eu_paulo_henrique_amorim.jpg" alt="Leandro e Paulo Henrique Amorim na COFECOM" width="536" height="402" /><p class="wp-caption-text">Paulo Henrique Amorim e eu</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/11/ele-e-o-cara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solidariedade ao Nassif</title>
		<link>http://www.leandronunes.net/2009/10/solidariedade-ao-nassif/</link>
		<comments>http://www.leandronunes.net/2009/10/solidariedade-ao-nassif/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:39:21 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[Não Categorizado]]></category>
		<category><![CDATA[política]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=81</guid>
		<description><![CDATA[Também estou participando da campanha de solidariedade ao Nassif.
do blog do Nassif
A Abril consegue a primeira condenação
Ainda não tenho os dados à mão. Mas, pelo que sou informado, fui condenado a pagamento de 100 salários mínimos pelo juiz Vitor Frederico Kümpel, da 27ª Vara Cível, em processo movido por Mário Sabino e pela revista Veja. [...]]]></description>
			<content:encoded><![CDATA[<p>Também estou participando da campanha de solidariedade ao Nassif.</p>
<p><strong>do blog do Nassif</strong></p>
<p>A Abril consegue a primeira condenação</p>
<p>Ainda não tenho os dados à mão. Mas, pelo que sou informado, fui condenado a pagamento de 100 salários mínimos pelo juiz Vitor Frederico Kümpel, da 27ª Vara Cível, em processo movido por Mário Sabino e pela revista Veja. No primeiro processo – de Eurípedes Alcântara – fui absolvido.</p>
<p>Pode haver apelação nas duas sentenças.</p>
<p>Ao longo dessa longa noite dos celerados, a Abril lançou contra mim os ataques mais sórdidos que uma empresa de mídia organizada já endereçou contra qualquer pessoa. Escalou dois parajornalistas para ataques sistemáticos, que superaram qualquer nível de razoabilidade. Atacaram a mim, à minha família, ataques à minha vida profissional, à minha vida pessoal, em um nível só comparável ao das mais obscenas comunidades do Orkut.</p>
<p>Não me intimidaram.</p>
<p>Apelaram então para a indústria das ações judiciais – a mesma que a mídia vive criticando como ameaça à liberdade de imprensa. Cinco ações – quatro em nome de jornalistas da Veja, uma em nome da Abril – todas bancadas pela Abril e tocadas pelos mesmos advogados, sob silêncio total da mídia.</p>
<p>Não vou entrar no mérito da sentença do juiz, nem no valor estipulado.</p>
<p>Mas no final do ano fui procurado por um emissário pessoal de Roberto Civita propondo um acordo: retirariam as ações em troca de eu cessar as críticas e retirar as ações e o pedido de direito de resposta. A proposta foi feita em nome da “liberdade de imprensa”. Não aceitei. Em nome da liberdade de imprensa.</p>
<p>Podem vencer na Justiça graças ao poder financeiro que lhes permite abrir várias ações simultaneamente. Quatro ações que percam não os afetará. Uma que eu perca me afetará financeiramente, além dos custos de defesa contra as outras quatro.</p>
<p>Mas no campo jornalístico, perderam para um Blog e para a extraordinária solidariedade que recebi de blogueiros que sequer conhecia, de vocês, de tantos amigos jornalistas que me procuraram pessoalmente, sabendo que qualquer demonstração pública de solidariedade colocaria em risco seus empregos. Melhor que isso, só a solidariedade que uniu minhas filhas em defesa do pai.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/10/solidariedade-ao-nassif/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Movendo banco de dados mysql corretamente</title>
		<link>http://www.leandronunes.net/2009/06/movendo-banco-de-dados-mysql-corretamente/</link>
		<comments>http://www.leandronunes.net/2009/06/movendo-banco-de-dados-mysql-corretamente/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 17:50:31 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=68</guid>
		<description><![CDATA[Algumas vezes eu preciso rodar um banco mysql que eu copiei de um computador para outro e existem alguns detalhes que se você não prestar atenção você pode acabar perdendo muito tempo em pequenas besteiras.
Primeiro só utilize as dicas deste post caso você tenha um banco de dados muito grande, onde dump do banco leve [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes eu preciso rodar um banco mysql que eu copiei de um computador para outro e existem alguns detalhes que se você não prestar atenção você pode acabar perdendo muito tempo em pequenas besteiras.</p>
<p>Primeiro só utilize as dicas deste post caso você tenha um banco de dados muito grande, onde dump do banco leve bastante tempo para ser gerado. </p>
<p>Caso contrário basta você digitar o comando:</p>
<p><code><br />
   mysqldump -u user -p password database_name > database_dump.sql<br />
</code></p>
<p>no computador que você quer extrair o <em>dump</em> e depois o comando abaixo:</p>
<p><code><br />
  mysql database_name < database_dump.sql<br />
</code></p>
<p>no computador que você deseja armazenar o novo banco de dados.</p>
<p>Mas se este não é o seu caso e você possui uma base de 10gb ou mais, gerar o dump de uma bases dessas é muito complicado, pois demora muito e as vezes copiar todo o banco num pendrive e substituir os arquivos no novo computador vale mais a pena.</p>
<p>Então para isso basta copiar a pasta  '/var/lib/mysql'  para um pendrive, e tem que ser um pendrive grande já que isso só é aconselhável quando se está manipulando bases muito grandes <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , e depois substituir a pasta '/var/lib/mysql' do servidor no qual você quer que o banco de dados rode por esta pasta copiada.</p>
<p>É aconselhável fazer um bakcup da pasta /var/lib/mysql antes de substituir os arquivos. Assim você poderá repetir este processo e rodar o antigo banco de dados novamente.</p>
<p>No meu caso ficou assim:</p>
<p></code><code></p>
<p>No computador 1<br />
root@barker:~/$ cp -r /var/lib/mysql /media/disk-1</p>
<p>No computador 2<br />
root@smurf:~/$ mv /var/lib/mysql /var/lib/mysql.orig<br />
root@smurf:~/$ cp -r /media/disk-4/mysql /var/lib</p>
<p></code></p>
<p>Antes de rodar este comando no &#8216;Computador 2&#8242; pare o apache.</p>
<p><code><br />
/etc/init.d/apache stop<br />
</code></p>
<p>Observe que para fazer a cópia dos arquivos você terá que ter acesso ao <em>root</em> do computador.</p>
<p>Ao realizar a cópia, as pastas terão permissão somente para o usuário root, então rode o comando:</p>
<p><code><br />
chown mysql.mysql /var/lib/mysql -R<br />
</code></p>
<p>Agora o usuário mysql terá permissão para acessar os arquivos.</p>
<p>Se você tentar inicializar o apache novamente terá o seguinte problema:</p>
<p><code><br />
root@smurf:/var/lib# /etc/init.d/mysql start<br />
Starting MySQL database server: mysqld ..<br />
Checking for corrupt, not cleanly closed and upgrade needing tables..<br />
/usr/bin/mysqladmin: connect to server at 'localhost' failed<br />
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'<br />
root@smurf:/var/lib# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)<br />
</code></p>
<p>Este erro ocorre pois você copiou a pasta do mysql de um outro computador que possuía configurações específicas daquele computador. Neste caso a configuração em questão é a senha do usuário do banco debian-sys-maint que é o usuário que o sistema operacional utiliza para realizar algumas operações no banco.</p>
<p>O usuário debian-sys-maint é como se fosse o usuário root do banco. Ele é utilizado para realizar executar certos scripts de manutenção no Debian.</p>
<p>Abaixo segue uma breve descrição deste usuário encontrada no arquivo README.Debian:</p>
<blockquote><p>
* MYSQL WON&#8217;T START OR STOP?:<br />
=============================</p>
<p>You may never ever delete the special mysql user &#8220;debian-sys-maint&#8221;.<br />
This user together with the credentials in /etc/mysql/debian.cnf are used by the init  scripts to stop the server as they would require knowledge of the mysql root  users password else.
</p></blockquote>
<p>Então para que o banco possa inicializar corretamente eu preciso dar acesso ao usuário debian-sys-maint ao banco. O Debian utiliza este usuário com a senha definida no arquivo &#8216;/etc/mysql/debian.cnf&#8217;.</p>
<p><code><br />
[client]<br />
host     = localhost<br />
user     = debian-sys-maint<br />
password = ********************<br />
socket   = /var/run/mysqld/mysqld.sock<br />
[mysql_upgrade]<br />
user     = debian-sys-maint<br />
password =  ********************<br />
socket   = /var/run/mysqld/mysqld.sock<br />
basedir  = /usr<br />
</code></p>
<p>Então precisamos modificar a senha do usuário &#8216;debian-sys-maint&#8217; pela senha contida neste arquivo.</p>
<p>Se você não tiver nenhum acesso ao banco, ou seja, nenhum login e senha de usuário para poder modificar a senha do usuário debian-sys-maint então continue lendo o post caso contrário leia também <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Reinicie o mysql com o comando:</p>
<p><code><br />
/usr/bin/mysqld_safe --skip-grant-tables &#038;<br />
</code></p>
<p>Logue no console mysql:</p>
<p><code><br />
root@smurf:# mysql<br />
</code></p>
<p>E modifique as permissões do usuário &#8216;root&#8217; e do usuário &#8216;debian-sys-maint&#8217;. Assim você terá acesso ao banco com o usuário &#8216;root&#8217; também.</p>
<p><code><br />
mysql> UPDATE mysql.user SET Password=PASSWORD('password')    WHERE User='root';<br />
mysql>  FLUSH PRIVILEGES;<br />
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;<br />
mysql>  FLUSH PRIVILEGES;</p>
<p></code></p>
<p>Substitua a palavra password pelo password que você encontrou no arquivo &#8216;/etc/mysql/debian.cnf&#8217;</p>
<p>Agora basta derrubar o servidor e carregá-lo novamente.</p>
<p><code><br />
  /etc/init.d/mysql stop<br />
  /etc/init.d/mysql start<br />
</code></p>
<p>Não  use o comando &#8216;/etc/init.d/mysql restart&#8217; pois o mysql poderá iniciar com a opção &#8216;&#8211;skip-grant-tables&#8217;  e você não quer isso <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>E tudo funcionará bem agora, pelo menos em teoria <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/06/movendo-banco-de-dados-mysql-corretamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando o git depois do import</title>
		<link>http://www.leandronunes.net/2009/05/configurando-o-git-depois-do-import/</link>
		<comments>http://www.leandronunes.net/2009/05/configurando-o-git-depois-do-import/#comments</comments>
		<pubDate>Thu, 28 May 2009 13:51:19 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[config]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=62</guid>
		<description><![CDATA[Eu utilizo o gitosis para gerenciar os meus repositórios git e dei os meus primeiros passos para configurá-lo da forma correta seguido o tutorial hosting-git-repositories-the-easy-and-secure-way.
Antigamente ao adicionar um repositório novo eu tinha um problema.
Eu seguia todos os passos descritos no tutorial para adicionar  um novo repositório, e ao dar um pull  eu recebia [...]]]></description>
			<content:encoded><![CDATA[<p>Eu utilizo o gitosis para gerenciar os meus repositórios git e dei os meus primeiros passos para configurá-lo da forma correta seguido o tutorial <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">hosting-git-repositories-the-easy-and-secure-way</a>.</p>
<p>Antigamente ao adicionar um repositório novo eu tinha um problema.</p>
<p>Eu seguia todos os passos descritos no tutorial para adicionar  um novo repositório, e ao dar um <em>pull</em>  eu recebia a seguinte mensagem de erro:</p>
<p><code><br />
smurf@smurf:~/safernet/projetos/snscripts$ git pull<br />
You asked me to pull without telling me which branch you<br />
want to merge with, and 'branch.master.merge' in<br />
your configuration file does not tell me either.  Please<br />
name which branch you want to merge on the command line and<br />
try again (e.g. 'git pull <repository> <refspec>').<br />
See git-pull(1) for details on the refspec.</p>
<p>If you often merge with the same branch, you may want to<br />
configure the following variables in your configuration<br />
file:</p>
<p>    branch.master.remote = <nickname><br />
    branch.master.merge = <remote -ref><br />
    remote.<nickname>.url = <url><br />
    remote.<nickname>.fetch = <refspec><br />
</refspec></nickname></url></nickname></remote></nickname></refspec></repository></code></p>
<p>Abrindo o arquivo de configuração do git (.git/config) eu notei que não existiam as informações do <em>branch master</em> que eu estava trabalhando no momento.<br />
<code><br />
[core]<br />
	repositoryformatversion = 0<br />
	filemode = true<br />
	bare = false<br />
	logallrefupdates = true<br />
[remote "origin"]<br />
	url = git@host.com.br:project_name.git<br />
	fetch = +refs/heads/*:refs/remotes/origin/*<br />
</code></p>
<p>Então eu editei o arquivo .git/config adicionando as informações do branch master:</p>
<p><code><br />
[core]<br />
	repositoryformatversion = 0<br />
	filemode = true<br />
	bare = false<br />
	logallrefupdates = true<br />
[remote "origin"]<br />
	url = git@host.com.br:project_name.git<br />
	fetch = +refs/heads/*:refs/remotes/origin/*<br />
[branch "master"]<br />
   remote = origin<br />
   merge = refs/heads/master<br />
</code></p>
<p>Pronto.</p>
<p>Agora será possível dar um <em>pull</em> normalmente.</p>
<p><code><br />
smurf@smurf:~/safernet/projetos/snscripts$ git pull<br />
Already up-to-date.<br />
</code></p>
<p>Não sei se esta é a melhor forma de resolver o problema, mas é a que eu utilizo. </p>
<p>Espero que seja útil para alguém <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/05/configurando-o-git-depois-do-import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acessando objetos ActiveRecord utilizando ActiveResource</title>
		<link>http://www.leandronunes.net/2009/05/40/</link>
		<comments>http://www.leandronunes.net/2009/05/40/#comments</comments>
		<pubDate>Sun, 17 May 2009 18:46:37 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ActiveResource]]></category>
		<category><![CDATA[resource]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=40</guid>
		<description><![CDATA[Eu perdi algum tempo procurando uma forma de acessar objetos via ActiveResource de uma aplicação servidora para uma cliente.
O meu problema era que o nome do meu resource na aplicação cliente não era a correspondência exata do nome esperado no meu servidor. 
Trocando em miúdos&#8230;
Eu tenho uma aplicação servidora com o seguinte controller:

class&#160;CategoriesController&#160;&#60; ApplicationController
&#160;&#160;def&#160;index
&#160;&#160;&#160;&#160;@categories&#160;= Category.all
&#160;&#160;&#160;&#160;respond_to&#160;do&#160;&#124;format&#124;
&#160;&#160;&#160;&#160;&#160;&#160;format.json [...]]]></description>
			<content:encoded><![CDATA[<p>Eu perdi algum tempo procurando uma forma de acessar objetos via <strong>ActiveResource</strong> de uma aplicação servidora para uma cliente.</p>
<p>O meu problema era que o nome do meu <em>resource</em> na aplicação cliente não era a correspondência exata do nome esperado no meu servidor. </p>
<p>Trocando em miúdos&#8230;</p>
<p>Eu tenho uma aplicação servidora com o seguinte <em>controller</em>:</p>
<p><font face="monospace"><br />
</font><font color="#8080ff"><b>class</b></font>&nbsp;<font color="#00ff00"><b>CategoriesController</b></font><span class="rubyBlock">&nbsp;&lt; </span><span class="Type">ApplicationController</span></p>
<p>&nbsp;&nbsp;<font color="#8080ff"><b>def</b></font><span class="rubyBlock">&nbsp;</span><font color="#00ffff"><b>index</b></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff"><b>@categories</b></font><span class="rubyBlock">&nbsp;= </span><font color="#00ff00"><b>Category</b></font><span class="rubyBlock">.all</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff"><b>respond_to</b></font><span class="rubyBlock">&nbsp;</span><font color="#ffff00"><b>do</b></font>&nbsp;|<span class="Identifier">format</span><span class="rubyBlockParameterList">|</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.json { <font color="#00ffff"><b>render</b></font><span class="rubyCurlyBlock">&nbsp;</span><font color="#ff40ff"><b>:json</b></font><span class="rubyCurlyBlock">&nbsp;=&gt; </span><span class="Identifier">@categories</span><span class="rubyCurlyBlock">&nbsp;}</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00"><b>end</b></font><br />
&nbsp;&nbsp;<font color="#8080ff"><b>end</b></font></p>
<p><font color="#8080ff"><b>end</b></font></p>
<p>e outra aplicação cliente com o seguinte <em>resource</em>:</p>
<p><font face="monospace"><br />
</font><font color="#8080ff"><b>class</b></font>&nbsp;<font color="#00ff00"><b>RemoteCategory</b></font><span class="rubyBlock">&nbsp;&lt; </span><span class="Type">ActiveResource</span><span class="rubyBlock">::</span><span class="Type">Base</span></p>
<p>&nbsp;&nbsp;<font color="#ff40ff"><b>self</b></font><span class="rubyBlock">.site = </span><font color="#ff6060"><b>&#8216;</b></font><span class="Constant"><a href="http://localhost">http://localhost</a></span><span class="Special">&#8216;</span><br />
&nbsp;&nbsp;<font color="#ff40ff"><b>self</b></font><span class="rubyBlock">.format = </span><span class="Constant">:json</span></p>
<p><font color="#8080ff"><b>end</b></font></p>
<p>A minha aplicação servidora roda na porta 3000, e a cliente na porta 3001.</p>
<p>O problema é que utilizando somente este código no meu <em>resource</em>, ele vai procurar pelo recurso no meu servidor utilizando o caminho:</p>
<p><code></p>
<p>http://localhost/remote_categories.json</p>
<p></code></p>
<p>O problema é que o meu servidor, obviamente <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , não tem esta rota. Uma vez que o <em>controller</em> que ele possui tem nome <em>categories</em>, gerando portanto a rota:</p>
<p><code></p>
<p>http://localhost/categories.json</p>
<p></code></p>
<p>Entretanto eu não podia modificar o nome do meu <em>resource</em> para <em>Category</em>, pois eu já possuía um outro <em>model</em> com este nome na aplicação.</p>
<p>Então depois de perder alguns minutos encontrei a solução.</p>
<p>Basta definir o nome do elemento no <em>resource</em>. Neste caso em particular definir o <em>element_name</em> no objeto <em>RemoteCategory</em>:</p>
<p><code><br />
  self.element_name = 'category'<br />
</code></p>
<p>A configuração final do <em>resource</em> <strong>RemoteCategory</strong> fica então:</p>
<p><font face="monospace"><br />
</font><font color="#8080ff"><b>class</b></font>&nbsp;<font color="#00ff00"><b>RemoteCategory</b></font><span class="rubyBlock">&nbsp;&lt; </span><span class="Type">ActiveResource</span><span class="rubyBlock">::</span><span class="Type">Base</span></p>
<p>&nbsp;&nbsp;<font color="#ff40ff"><b>self</b></font><span class="rubyBlock">.element_name = </span><font color="#ff6060"><b>&#8216;</b></font><span class="Constant">category</span><span class="Special">&#8216;</span><br />
&nbsp;&nbsp;<font color="#ff40ff"><b>self</b></font><span class="rubyBlock">.site = </span><font color="#ff6060"><b>&#8216;</b></font><span class="Constant"><a href="http://localhost">http://localhost</a></span><span class="Special">&#8216;</span><br />
&nbsp;&nbsp;<font color="#ff40ff"><b>self</b></font><span class="rubyBlock">.format = </span><span class="Constant">:json</span></p>
<p><font color="#8080ff"><b>end</b></font></p>
<p>Espero que seja útil para outras pessoas <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/05/40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando as opções do ssh</title>
		<link>http://www.leandronunes.net/2009/04/utilizando-as-opcoes-do-ssh/</link>
		<comments>http://www.leandronunes.net/2009/04/utilizando-as-opcoes-do-ssh/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 02:53:27 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=28</guid>
		<description><![CDATA[Eu não gosto muito de fazer trabalhos repetitivos, então quando eu percebo que alguma atividade tem o potencial de se tornar repetitiva e entediante trato de arranjar um jeito de automatizar o processo  
Claro que algumas vezes eu acabo levando mais tempo automatizando a tarefa do que repentindo-a. Entretanto no somatório de de tempo [...]]]></description>
			<content:encoded><![CDATA[<p>Eu não gosto muito de fazer trabalhos repetitivos, então quando eu percebo que alguma atividade tem o potencial de se tornar repetitiva e entediante trato de arranjar um jeito de automatizar o processo <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Claro que algumas vezes eu acabo levando mais tempo automatizando a tarefa do que repentindo-a. Entretanto no somatório de de tempo que seria gasto para se realizar a tarefa quando o tempo tende a infinito, eu acabo economizando muito tempo de minha vida que seria gasto em coisas não tão interessantes <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>A bola da vez é a necessidade de se executar o comando &#8217;ssh&#8217; diversas vezes com diversos parâmetros diferentes. </p>
<p>Pesquisando um pouco encontrei um forma de otimizar meu tempo.</p>
<p>Se você criar um arquivo de nome &#8216;config&#8217; na pasta &#8216;.ssh&#8217; no seu home o ssh carrega este arquivo e procura por opções de configuração que você deseje criar. </p>
<p>Então:<br />
<code><br />
   mkdir "~/.ssh"<br />
   vim "~/.ssh/config"<br />
</code></p>
<p>Agora basta configurar o arquivo de acordo com a sua necessidade.</p>
<p>No meu caso utilizei os seguintes parâmetros de configuração:</p>
<p><code><br />
Host leandro<br />
User smurf<br />
Port 22<br />
HostName leandronunes.net</p>
<p>Host servidor<br />
User root<br />
Port 3021<br />
HostName servidor.com.br</p>
<p>Host proxy<br />
User smurf<br />
Port 2299<br />
HostName app.dcc.ufba.br<br />
LocalForward 3128 app.dcc.ufba.br:8080<br />
</code></p>
<p>No primeiro caso:<br />
<code><br />
Host leandro<br />
User smurf<br />
Port 22<br />
HostName leandronunes.net<br />
</code><br />
Eu ganho a possibilidade de acessar meu servidor apenas digitando o comando:<br />
<code><br />
  ssh leandro<br />
</code></p>
<p>O ssh lerá o arquivo &#8216;~/.ssh/config&#8217; e saberá que eu quero acessar o servidor leandronunes.net, com o usuário smurf e utilizando a porta 22.</p>
<p>O segundo caso é semelhante ao caso anterior só que desta vez eu escolho outra porta para acessar o meu servidor cujo host é servidor.com.br</p>
<p>Eu acesso o servidor com o comando:<br />
<code><br />
  ssh servidor<br />
</code></p>
<p>O terceiro e último exemplo é mais legalzinho.<br />
<code><br />
Host proxy<br />
User smurf<br />
Port 2139<br />
HostName ufba.br<br />
LocalForward 2148 ufba.br:7070<br />
</code></p>
<p>Eu posso acessar o servidor da <a href="http://www.ufba.br">UFBa</a>, que utilizo como proxy para acessar o <a href="http://periodicos.capes.gov.br">periódicos da capes</a> de casa, com o seguinte comando:<br />
<code><br />
   ssh proxy<br />
</code></p>
<p>Somente com isso, o ssh já entende que é para fazer um tunel ssh da minha porta &#8216;2148&#8242; para a porta &#8216;7070&#8242; do meu host &#8216;ufba.br&#8217;, que eu acesso utilizando o usuário &#8217;smurf&#8217; na porta &#8216;2139&#8242;.</p>
<p>Seria algo equivalente ao comando:<br />
<code><br />
ssh -p 2139 app.dcc.ufba.br -L 2148:app.dcc.ufba.br:7070<br />
</code></p>
<p>É claro que você precisa <a href="http://wiki.dcc.ufba.br/Intranet/TutorialProxy">configurar o seu navegador</a> ( que eu espero que seja o <a href="http://br.mozdev.org/">firefox</a> <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) para utilizar o proxy.</p>
<p>Existem <a href="http://docs.sun.com/app/docs/doc/816-0219/6m6njqbc9?a=view">muitas outras opções</a> que podem ser realizadas utilizando esta técnica. </p>
<p>Se divirta!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/04/utilizando-as-opcoes-do-ssh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guardando histórico no irb e script/console</title>
		<link>http://www.leandronunes.net/2009/04/guardando-historico-no-irb-e-scriptconsole/</link>
		<comments>http://www.leandronunes.net/2009/04/guardando-historico-no-irb-e-scriptconsole/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 17:49:24 +0000</pubDate>
		<dc:creator>Leandro Nunes</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[irb]]></category>
		<category><![CDATA[irbrc]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.leandronunes.net/?p=12</guid>
		<description><![CDATA[Tinha uma coisa que sempre me incomodou no console do rails e também no irb que era a possibilidade de se guardar o histórico dos comandos digitados nestes ambientes.
Pois é, agora isso não me incomoda mais. Basta criar um arquivo de nome &#8216;.irbrc &#8216; no home com o seguinte conteúdo:

# load libraries
require&#160;&#8216;rubygems&#8216;
require&#160;&#8216;wirble&#8216;
# start wirble (with [...]]]></description>
			<content:encoded><![CDATA[<p>Tinha uma coisa que sempre me incomodou no console do rails e também no irb que era a possibilidade de se guardar o histórico dos comandos digitados nestes ambientes.</p>
<p>Pois é, agora isso não me incomoda mais. Basta criar um arquivo de nome &#8216;.irbrc &#8216; no home com o seguinte conteúdo:</p>
<div bgcolor="#000000" text="#fffff"><font face="monospace"><br />
</font><font color="#00ffff"><b># load libraries</b></font><br />
<font color="#8080ff"><b>require</b></font>&nbsp;<font color="#ff6060"><b>&#8216;</b></font><font color="#ff40ff"><b>rubygems</b></font><span class="Special">&#8216;</span><br />
<font color="#8080ff"><b>require</b></font>&nbsp;<font color="#ff6060"><b>&#8216;</b></font><font color="#ff40ff"><b>wirble</b></font><span class="Special">&#8216;</span></p>
<p><font color="#00ffff"><b># start wirble (with color)</b></font><br />
<font color="#00ff00"><b>Wirble</b></font>.init<br />
<font color="#00ff00"><b>Wirble</b></font>.colorize</p>
</div>
<p>Para que o histórico de comandos funcione você precisa da biblioteca &#8216;libwirble-ruby&#8217; instalada.</p>
<p><strong>aptitude install libwirble-ruby</strong></p>
<p>Pronto. Tudo funciona bonitinho agora <img src='http://www.leandronunes.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandronunes.net/2009/04/guardando-historico-no-irb-e-scriptconsole/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
