<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Rafael Souza</title>
	
	<link>http://rafaelss.com</link>
	<description>Desenvolvimento Web</description>
	<pubDate>Mon, 25 Jan 2010 14:06:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/joehblog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="joehblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/joehblog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjoehblog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>shoes-translator atualizado: Ruby, Shoes e Google Translate API</title>
		<link>http://rafaelss.com/2010/01/17/shoes-translator-atualizado-ruby-shoes-e-google-translate-api/</link>
		<comments>http://rafaelss.com/2010/01/17/shoes-translator-atualizado-ruby-shoes-e-google-translate-api/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 22:09:02 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[shoes]]></category>

		<category><![CDATA[google translate api]]></category>

		<category><![CDATA[howjsay]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=152</guid>
		<description><![CDATA[Há tempos atrás desenvolvi uma pequena aplicação usando Shoes, e ontem resolvi atualizá-la, mudei um pouco a aparência e melhorei o suporte a pronúncia.

Caso tenha interesse em usar, você pode baixar o projeto do github: http://github.com/rafaelss/shoes-translator
Falando um pouco agora sobre o Shoes, me parece que após o sumiço do _why a coisas não vão tão [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rafaelss.com/2008/07/24/aplicacao-usando-shoes/" onclick="pageTracker._trackPageview('/outgoing/rafaelss.com/2008/07/24/aplicacao-usando-shoes/?referer=');">Há tempos atrás</a> desenvolvi uma pequena aplicação usando <a href="http://github.com/shoes/shoes" onclick="pageTracker._trackPageview('/outgoing/github.com/shoes/shoes?referer=');">Shoes</a>, e ontem resolvi atualizá-la, mudei um pouco a aparência e melhorei o suporte a pronúncia.</p>
<p><img src="http://img709.imageshack.us/img709/9044/shoestranslator.png" alt="shoes-translator screenshot"  width="260" height="293" class="alignnone size-full wp-image-153" /></p>
<p>Caso tenha interesse em usar, você pode baixar o projeto do github: <a href="http://github.com/rafaelss/shoes-translator" onclick="pageTracker._trackPageview('/outgoing/github.com/rafaelss/shoes-translator?referer=');">http://github.com/rafaelss/shoes-translator</a></p>
<p>Falando um pouco agora sobre o <a href="http://github.com/shoes/shoes" onclick="pageTracker._trackPageview('/outgoing/github.com/shoes/shoes?referer=');">Shoes</a>, me parece que após o sumiço do <a href="http://www.rubyinside.com.br/“why-the-lucky-stiff”-desapareceu-32-links-sobre-ele-1997" onclick="pageTracker._trackPageview('/outgoing/www.rubyinside.com.br/_why-the-lucky-stiff_-desapareceu-32-links-sobre-ele-1997?referer=');">_why</a> a coisas não vão tão bem, o projeto amadureceu muito pouco, muita coisa básica ainda é complicado de se fazer, impedindo um pouco que aplicações mais profissionais sejam feitas rodando sobre o framework.</p>
<p>Quando desenvolvi o shoes-translator na primeira vez, eu levava mais fé no projeto, acreditava que seria um concorrente de peso para os toolkits atuais, mas agora, voltando a mexer na código e buscando referências na internet para fazer as alterações, percebi que o Shoes ainda precisa de muito, mas muito trabalho para poder ter crédito suficiente e ser usado para fazer software de verdade.</p>
<p><strong>UPDATE:</strong> O <a href="http://twitter.com/kbmurata" onclick="pageTracker._trackPageview('/outgoing/twitter.com/kbmurata?referer=');">@kbmurata</a> <a href="http://twitter.com/kbmurata/status/7879887375" onclick="pageTracker._trackPageview('/outgoing/twitter.com/kbmurata/status/7879887375?referer=');">postou no twitter</a> que o objetivo do Shoes é ser usado para o aprendizado de forma divertida, de qualquer forma, se você quiser começar um projeto usando Shoes, pense bem que tipo de projeto você está desenvolvendo, não pense em nada muito maior que um <a href="http://twitter.com/krsmurata/status/7879665068" onclick="pageTracker._trackPageview('/outgoing/twitter.com/krsmurata/status/7879665068?referer=');">&#8220;tradutor de sapatos&#8221;</a> <img src='http://rafaelss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/g2b57yBayvCZpIa1JTpYZ64BQcE/0/da"><img src="http://feedads.g.doubleclick.net/~a/g2b57yBayvCZpIa1JTpYZ64BQcE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/g2b57yBayvCZpIa1JTpYZ64BQcE/1/da"><img src="http://feedads.g.doubleclick.net/~a/g2b57yBayvCZpIa1JTpYZ64BQcE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2010/01/17/shoes-translator-atualizado-ruby-shoes-e-google-translate-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>O Passenger e um /tmp pequeno</title>
		<link>http://rafaelss.com/2010/01/08/o-passenger-e-um-tmp-pequeno/</link>
		<comments>http://rafaelss.com/2010/01/08/o-passenger-e-um-tmp-pequeno/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 13:44:01 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[apache]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=134</guid>
		<description><![CDATA[De ontem pra hoje perdi um bom tempo tentando compilar um passenger mais novo em um servidor que tem um /tmp de apenas 1MB (eu ainda preciso descobrir porque isso).
A solução é simples até, basta setar a var TMPDIR com o path de um outro diretório qualquer, mais ou menos assim:

sudo TMPDIR=/home/rafaelss/tmp passenger-install-apache2-module

Detalhe: eu estava [...]]]></description>
			<content:encoded><![CDATA[<p>De ontem pra hoje perdi um bom tempo tentando compilar um passenger mais novo em um servidor que tem um /tmp de apenas 1MB (eu ainda preciso descobrir porque isso).</p>
<p>A solução é simples até, basta setar a var TMPDIR com o path de um outro diretório qualquer, mais ou menos assim:</p>
<p><code><br />
sudo TMPDIR=/home/rafaelss/tmp passenger-install-apache2-module<br />
</code></p>
<p>Detalhe: eu estava acostumado a setar variáveis ao executar um comando colocando ela na frente do comando, mas com o sudo isso não funciona. No help do sudo diz que deve ficar ali no meio</p>
<p><code><br />
usage: sudo [-bEHPS] [-p prompt] [-u username|#uid] [VAR=value] {-i | -s | <command>}<br />
</code></p>

<p><a href="http://feedads.g.doubleclick.net/~a/dhGw9CsckfgpdB3bLr2ainlmOms/0/da"><img src="http://feedads.g.doubleclick.net/~a/dhGw9CsckfgpdB3bLr2ainlmOms/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dhGw9CsckfgpdB3bLr2ainlmOms/1/da"><img src="http://feedads.g.doubleclick.net/~a/dhGw9CsckfgpdB3bLr2ainlmOms/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2010/01/08/o-passenger-e-um-tmp-pequeno/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hora Extra em Porto Alegre</title>
		<link>http://rafaelss.com/2009/07/08/hora-extra-em-porto-alegre/</link>
		<comments>http://rafaelss.com/2009/07/08/hora-extra-em-porto-alegre/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 03:23:19 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[horaextra]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=108</guid>
		<description><![CDATA[O Tailor lançou a idéia no twitter e eu apoiei, então, semana que vem, #horaextra na Cidade Baixa, em Porto Alegre, mais exatamente no Copão
A idéia é juntar um monte (ou não) de nerds pra falar de trabalho, tecnologia, frameworks, programação, enfim, tudo o que a gente mais gosta  
Então, segunda-feira, 19:30, Copão. Aparece [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.tailorfontela.com.br/2009/07/06/hora-extra-em-poa/" onclick="pageTracker._trackPageview('/outgoing/www.tailorfontela.com.br/2009/07/06/hora-extra-em-poa/?referer=');">Tailor</a> <a href="http://twitter.com/tailorfontela/status/2504182454" onclick="pageTracker._trackPageview('/outgoing/twitter.com/tailorfontela/status/2504182454?referer=');">lançou a idéia no twitter</a> e <a href="http://twitter.com/rafaelss/status/2504416368" onclick="pageTracker._trackPageview('/outgoing/twitter.com/rafaelss/status/2504416368?referer=');">eu apoiei</a>, então, semana que vem, <a href="http://rafael.adm.br/p/o-horaextra-esta-crescendo/" onclick="pageTracker._trackPageview('/outgoing/rafael.adm.br/p/o-horaextra-esta-crescendo/?referer=');">#horaextra</a> na Cidade Baixa, em Porto Alegre, mais exatamente no <a href="http://maps.google.com.br/maps?f=q&#038;source=s_q&#038;hl=pt-BR&#038;geocode=&#038;q=Rua+General+Lima+e+Silva,+312,+porto+alegre&#038;sll=-12.897489,-50.449219&#038;sspn=77.844131,158.027344&#038;ie=UTF8&#038;ll=-30.036183,-51.223562&#038;spn=0.009139,0.01929&#038;z=16&#038;iwloc=A" onclick="pageTracker._trackPageview('/outgoing/maps.google.com.br/maps?f=q_038_source=s_q_038_hl=pt-BR_038_geocode=_038_q=Rua+General+Lima+e+Silva_+312_+porto+alegre_038_sll=-12.897489_-50.449219_038_sspn=77.844131_158.027344_038_ie=UTF8_038_ll=-30.036183_-51.223562_038_spn=0.009139_0.01929_038_z=16_038_iwloc=A&amp;referer=');">Copão</a></p>
<p>A idéia é juntar um monte (ou não) de nerds pra falar de trabalho, tecnologia, frameworks, programação, enfim, tudo o que a gente mais gosta <img src='http://rafaelss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Então, segunda-feira, 19:30, Copão. Aparece lá!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/rl6zsCRsOmGbyK2nSs7oTtFubsE/0/da"><img src="http://feedads.g.doubleclick.net/~a/rl6zsCRsOmGbyK2nSs7oTtFubsE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rl6zsCRsOmGbyK2nSs7oTtFubsE/1/da"><img src="http://feedads.g.doubleclick.net/~a/rl6zsCRsOmGbyK2nSs7oTtFubsE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/07/08/hora-extra-em-porto-alegre/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET MVC e suas ActionResult</title>
		<link>http://rafaelss.com/2009/06/30/asp-net-mvc-e-suas-actionresult/</link>
		<comments>http://rafaelss.com/2009/06/30/asp-net-mvc-e-suas-actionresult/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:58:24 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[.net]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[actionresult]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[gist]]></category>

		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=98</guid>
		<description><![CDATA[O framework MVC da Microsoft usa um determinado objeto para definir qual tipo de resultado/output a action executada deve retornar. São eles:

ContentResult - Pode ser usado para retornar textos simples.
EmptyResult - Esse serve para retornar resultados em branco, quando quiser que o output seja vazio.
HttpUnauthorizedResult - Usado quando o usuário não tem permissão para executar [...]]]></description>
			<content:encoded><![CDATA[<p>O framework MVC da Microsoft usa um determinado objeto para definir qual tipo de resultado/output a <em>action</em> executada deve retornar. São eles:</p>
<ul>
<li><code>ContentResult</code> - Pode ser usado para retornar textos simples.</li>
<li><code>EmptyResult</code> - Esse serve para retornar resultados em branco, quando quiser que o output seja vazio.</li>
<li><code>HttpUnauthorizedResult</code> - Usado quando o usuário não tem permissão para executar a action. Retorna o 401 como <em>status</em> da requisição.</li>
<li><code>JsonResult</code> - Serializa um objeto em formato JSON, bom para ser usando em requisições AJAX.</li>
<li><code>RedirectResult</code> - Resultado usado para redirecionamentos.</li>
<li><code>RedirectToRouteResult</code> - Também usado para redirecionamentos, mas a URL está ligada a uma rota.</li>
<li><code>ViewResultBase</code> - Classe abstrata, usada para renderizar HTMLs.</li>
<ul>
<li><code>PartialViewResult</code> - Estende <code>ViewResultBase</code> para renderizar as views e seus HTMLs.</li>
</ul>
<li><code>BinaryResult</code> - Classe abstrata usada para resultados binários.</li>
<ul>
<li><code>BinaryStreamResult</code> - Estende <code>BinaryResult</code>, pode ser usado para escrever imagens direto no stream do resutado.</li>
</ul>
</ul>
<p>Porém, em alguns casos, retornar um texto simples, ou um JSON pequeninho, é meio chato. Considere o código abaixo:</p>
<p><code>
<pre>
    JsonResult json = new JsonResult();
    json.ContentType = "text/javascript";
    json.Data = new { success = true };
    return json;
</pre>
<p></code></p>
<p>Isso poderia ser mais simples não? Porém, a classe <code>JsonResult</code>, e nenhuma outra <code>ActionResult</code> aceita parâmetros no construtor. Por isso criei <a href="http://gist.github.com/138225" onclick="pageTracker._trackPageview('/outgoing/gist.github.com/138225?referer=');">duas classes</a> que podem ser usadas como <code>ActionResult</code>, para simplificar essa tarefa. Elas devem ser usadas assim:</p>
<p><code>
<pre>
    return new SimpleResult("Hello World");
    return new SimpleResult(1);
    return new SimpleResult(1257.14);
    return new SimpleResult(true);
</pre>
<p></code></p>
<p>e</p>
<p><code>
<pre>
    return new SimpleJsonResult(new { success = true });
</pre>
<p></code></p>
<p>Pronto, agora é hora de refatorar código. <img src='http://rafaelss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>UPDATE:</strong> Conforme o Guilherme comentou ali embaixo, o ASP.NET MVC tem um método que já simplifica as coisas.</p>
<p><code>
<pre>
    return Json("Hello World");
    return Json(1);
    return Json(1257.14);
    return Json(true);
</pre>
<p></code></p>
<p>e</p>
<p><code>
<pre>
    return Json(new { success = true });
</pre>
<p></code></p>

<p><a href="http://feedads.g.doubleclick.net/~a/YdSB4KOV-8i2X5G1EeLBQiN6jkU/0/da"><img src="http://feedads.g.doubleclick.net/~a/YdSB4KOV-8i2X5G1EeLBQiN6jkU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YdSB4KOV-8i2X5G1EeLBQiN6jkU/1/da"><img src="http://feedads.g.doubleclick.net/~a/YdSB4KOV-8i2X5G1EeLBQiN6jkU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/06/30/asp-net-mvc-e-suas-actionresult/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery, Safari e CSS Selectors</title>
		<link>http://rafaelss.com/2009/06/29/jquery-safari-e-css-selectors/</link>
		<comments>http://rafaelss.com/2009/06/29/jquery-safari-e-css-selectors/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 21:23:33 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[jquery]]></category>

		<category><![CDATA[css selector]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=79</guid>
		<description><![CDATA[Hoje estava verificando um bug em um projeto, que acontecia somente no Safari, tanto no MacOS, quanto no Windows, e descobri que o problema era a forma como eu estava definindo o elemento HTML envolvido na história.
O expressão que eu estava usando era a seguinte:


$("#meuform input[type='hidden'][value='']").length


No Safari sempre me retornava 0, já no Firefox e [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje estava verificando um bug em um projeto, que acontecia somente no Safari, tanto no MacOS, quanto no Windows, e descobri que o problema era a forma como eu estava definindo o elemento HTML envolvido na história.</p>
<p>O expressão que eu estava usando era a seguinte:</p>
<p><code>
<pre>
$("#meuform input[type='hidden'][value='']").length
</pre>
<p></code></p>
<p>No Safari sempre me retornava 0, já no Firefox e Internet Explorer, retorna 1, que era para ser o valor certo no caso. Analisando como o input estava definido eu descobri o problema, ele estava definido assim:</p>
<p><code>
<pre>
&lt;input type="hidden" name="first_user" /&gt;
</pre>
<p></code><br />
Resumindo:</p>
<p>O Safari não acha elementos onde o atributo filtrado não esteja presente no HTML.<br />
(Estou usando a versão 1.3.2 do jQuery e 4.0 (503.17) do Safari, no Windows, mas reportaram o problema no Mac também)</p>

<p><a href="http://feedads.g.doubleclick.net/~a/4ea7J-wyBH_5va8Nwe4MFwrm98A/0/da"><img src="http://feedads.g.doubleclick.net/~a/4ea7J-wyBH_5va8Nwe4MFwrm98A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4ea7J-wyBH_5va8Nwe4MFwrm98A/1/da"><img src="http://feedads.g.doubleclick.net/~a/4ea7J-wyBH_5va8Nwe4MFwrm98A/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/06/29/jquery-safari-e-css-selectors/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C# e códigos deprecated</title>
		<link>http://rafaelss.com/2009/06/23/c-e-codigos-deprecated/</link>
		<comments>http://rafaelss.com/2009/06/23/c-e-codigos-deprecated/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 15:21:26 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[c#]]></category>

		<category><![CDATA[deprecated]]></category>

		<category><![CDATA[dica]]></category>

		<category><![CDATA[obsolete]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=73</guid>
		<description><![CDATA[Você desenvolve uma biblioteca de utilitários para facilitar a vida dos outros desenvolvedores da empresa, porém algumas vezes é necessário refatorar códigos, criando/renomeando/apagando alguns métodos.
Obviamente você não pode sair mudando tudo, existe código &#8220;antigo&#8221; usando a sua &#8220;lib&#8221;.
Existe um atributo no C# que permite que você marque código como deprecated, é o Obsolete, muito útil [...]]]></description>
			<content:encoded><![CDATA[<p>Você desenvolve uma biblioteca de utilitários para facilitar a vida dos outros desenvolvedores da empresa, porém algumas vezes é necessário refatorar códigos, criando/renomeando/apagando alguns métodos.<br />
Obviamente você não pode sair mudando tudo, existe código &#8220;antigo&#8221; usando a sua &#8220;lib&#8221;.</p>
<p>Existe um atributo no C# que permite que você marque código como deprecated, é o <code>Obsolete</code>, muito útil e fácil de usar.</p>
<p><code>
<pre>
[Obsolete("Use o método MinhaClasse.MeuMetodo(int parametro)")]
public static void MeuMetodo(string parametro) {
    // ...
}
</pre>
<p></code></p>
<p>No exemplo acima quero que os desenvolvedores usem a versão que recebe um <code>integer</code> como parâmetro, e não mais a versão com <code>string</code>.</p>
<p>Você ainda pode dizer que é para o compilador gerar um erro ao compilar o código, passando <code>true</code> como segundo parâmetro do atributo.</p>
<p><code>
<pre>
[Obsolete("Este método não deve mais ser usado. Usar MinhaClasse.MeuMetodo(int parametro)", true)]
public static void MeuMetodo(string parametro) {
    // ...
}
</pre>
<p></code></p>

<p><a href="http://feedads.g.doubleclick.net/~a/nsmditibY9AbR3u_F7ExW1WHSCM/0/da"><img src="http://feedads.g.doubleclick.net/~a/nsmditibY9AbR3u_F7ExW1WHSCM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nsmditibY9AbR3u_F7ExW1WHSCM/1/da"><img src="http://feedads.g.doubleclick.net/~a/nsmditibY9AbR3u_F7ExW1WHSCM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/06/23/c-e-codigos-deprecated/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Permissão para o Apache na pasta home</title>
		<link>http://rafaelss.com/2009/05/03/permissao-para-o-apache-na-pasta-home/</link>
		<comments>http://rafaelss.com/2009/05/03/permissao-para-o-apache-na-pasta-home/#comments</comments>
		<pubDate>Sun, 03 May 2009 03:49:10 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[apache]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[permissão]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=45</guid>
		<description><![CDATA[Muitas vezes quando configuramos um servidor para hospedar sites para diferentes usuários, a primeira coisa que pensamos é em colocar os sites de cada usuário na pasta home do mesmo, mas para isso funcionar corretamente precisamos dar permissão para o Apache ler a home de cada usuário.
A solução que tenho usado é dar a seguinte [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes quando configuramos um servidor para hospedar sites para diferentes usuários, a primeira coisa que pensamos é em colocar os sites de cada usuário na pasta home do mesmo, mas para isso funcionar corretamente precisamos dar permissão para o Apache ler a home de cada usuário.<br />
A solução que tenho usado é dar a seguinte permissão na pasta do usuário</p>
<pre><code>
chmod a+x /home/nome_do_usuario/
</code></pre>
<p>Depois disso todos os &#8220;forbidden&#8221; desaparecem <img src='http://rafaelss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/nI11OZ9WbK48IzjZgIGrXVEcvro/0/da"><img src="http://feedads.g.doubleclick.net/~a/nI11OZ9WbK48IzjZgIGrXVEcvro/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nI11OZ9WbK48IzjZgIGrXVEcvro/1/da"><img src="http://feedads.g.doubleclick.net/~a/nI11OZ9WbK48IzjZgIGrXVEcvro/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/05/03/permissao-para-o-apache-na-pasta-home/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Instalando o RMagick no Ubuntu</title>
		<link>http://rafaelss.com/2009/05/03/instalando-o-rmagick-no-ubuntu/</link>
		<comments>http://rafaelss.com/2009/05/03/instalando-o-rmagick-no-ubuntu/#comments</comments>
		<pubDate>Sun, 03 May 2009 03:42:20 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[rmagick]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[ubuntu]]></category>

		<category><![CDATA[imagemagick]]></category>

		<guid isPermaLink="false">http://rafaelss.com/?p=68</guid>
		<description><![CDATA[Se você estiver com problemas para instalar o RMagick no Ubuntu usando apt-get talvez essa solução possa ajudar. Primeiro, limpe os pacotes com &#8220;problemas&#8221;:

sudo apt-get remove --purge librmagick-ruby-doc librmagick-ruby1.8

depois instale os seguintes pacotes:

sudo apt-get install libmagick9-dev ruby1.8-dev

depois disso é só instalar a gem:

sudo gem install rmagick

dica retirada daqui
]]></description>
			<content:encoded><![CDATA[<p>Se você estiver com problemas para instalar o RMagick no Ubuntu usando apt-get talvez essa solução possa ajudar. Primeiro, limpe os pacotes com &#8220;problemas&#8221;:</p>
<pre><code>
sudo apt-get remove --purge librmagick-ruby-doc librmagick-ruby1.8
</code></pre>
<p>depois instale os seguintes pacotes:</p>
<pre><code>
sudo apt-get install libmagick9-dev ruby1.8-dev
</code></pre>
<p>depois disso é só instalar a gem:</p>
<pre><code>
sudo gem install rmagick
</code></pre>
<p>dica retirada <a href="http://snippets.dzone.com/posts/show/4140" onclick="pageTracker._trackPageview('/outgoing/snippets.dzone.com/posts/show/4140?referer=');">daqui</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/Ws_c2pgWU5eZddt-VWfCIq6xjCg/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ws_c2pgWU5eZddt-VWfCIq6xjCg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ws_c2pgWU5eZddt-VWfCIq6xjCg/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ws_c2pgWU5eZddt-VWfCIq6xjCg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/05/03/instalando-o-rmagick-no-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP e SQL Server 2005</title>
		<link>http://rafaelss.com/2009/03/31/php-e-sql-server-2005/</link>
		<comments>http://rafaelss.com/2009/03/31/php-e-sql-server-2005/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 00:34:06 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[conexão]]></category>

		<category><![CDATA[iis]]></category>

		<category><![CDATA[problemas]]></category>

		<category><![CDATA[sql server 2005]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://stagging.rafaelss.com/?p=12</guid>
		<description><![CDATA[Se você tem problemas de conexão com SQL Server 2005 pelo PHP, tente usar essa versão (2000.80.194.0) da ntwdblib.
Coloque esse arquivo na raiz da instalação do seu PHP, substituindo a versão existente, e reinicie o servidor web.
]]></description>
			<content:encoded><![CDATA[<p>Se você tem <strong>problemas de conexão com SQL Server 2005</strong> pelo <strong>PHP</strong>, tente usar <a href='http://stagging.rafaelss.com/wp-content/uploads/2009/03/ntwdblib.zip' title="ntwdblib">essa versão (2000.80.194.0) da ntwdblib</a>.<br />
Coloque esse arquivo na raiz da instalação do seu <span class="boo-box-link book php">PHP</span>, substituindo a versão existente, e reinicie o servidor web.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Kz2_hAg5pd_A_i5yucJUhwUlRhU/0/da"><img src="http://feedads.g.doubleclick.net/~a/Kz2_hAg5pd_A_i5yucJUhwUlRhU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Kz2_hAg5pd_A_i5yucJUhwUlRhU/1/da"><img src="http://feedads.g.doubleclick.net/~a/Kz2_hAg5pd_A_i5yucJUhwUlRhU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/03/31/php-e-sql-server-2005/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nome da distro Linux usada</title>
		<link>http://rafaelss.com/2009/03/02/nome-da-distro-linux-usada/</link>
		<comments>http://rafaelss.com/2009/03/02/nome-da-distro-linux-usada/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 13:02:54 +0000</pubDate>
		<dc:creator>Rafael Souza</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[dica]]></category>

		<category><![CDATA[distro]]></category>

		<guid isPermaLink="false">http://stagging.rafaelss.com/?p=5</guid>
		<description><![CDATA[Uma coisa que eu sempre precisava e nunca me lembrava como fazer era descobrir qual a distro que eu estava usando no momento, como muitas vezes precisei mexer com os mais variados servidores, algumas vezes precisava dessa informação, e hoje achei o jeito mais fácil de fazer isso

cat /etc/issue

No meu micro aparece

Arch Linux \r  [...]]]></description>
			<content:encoded><![CDATA[<p>Uma coisa que eu sempre precisava e nunca me lembrava como fazer era descobrir qual a distro que eu estava usando no momento, como muitas vezes precisei mexer com os mais variados servidores, algumas vezes precisava dessa informação, e hoje achei o jeito mais fácil de fazer isso</p>
<pre><code>
cat /etc/issue
</code></pre>
<p>No meu micro aparece</p>
<pre><code>
Arch Linux \r  (\n) (\l)
</code></pre>
<p>No do meu colega</p>
<pre><code>
Ubuntu 8.10 \n \l
</code></pre>
<p>Achei essa dica <a href="http://drlinux.wordpress.com/2007/09/15/como-descobrir-a-distribuicao-linux-que-estamos-usando/" onclick="pageTracker._trackPageview('/outgoing/drlinux.wordpress.com/2007/09/15/como-descobrir-a-distribuicao-linux-que-estamos-usando/?referer=');">aqui</a> e estou documentando aqui pra não esquecer mais <img src='http://rafaelss.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/us354gDEhBfSl3ZcBwYZ8oIF9qc/0/da"><img src="http://feedads.g.doubleclick.net/~a/us354gDEhBfSl3ZcBwYZ8oIF9qc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/us354gDEhBfSl3ZcBwYZ8oIF9qc/1/da"><img src="http://feedads.g.doubleclick.net/~a/us354gDEhBfSl3ZcBwYZ8oIF9qc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://rafaelss.com/2009/03/02/nome-da-distro-linux-usada/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
