<?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/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Renan Fernandes</title>
	
	<link>http://blog.renanfernandes.com.br</link>
	<description>Linux, Technology, Programming and Free Software.</description>
	<lastBuildDate>Sun, 16 Oct 2011 17:02:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RenanFernandesBlog" /><feedburner:info uri="renanfernandesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>RenanFernandesBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Configurando a rede de dados da TIM no Galaxy 5</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/7J8cSF6KaS4/</link>
		<comments>http://blog.renanfernandes.com.br/2011/10/configurando-a-rede-de-dados-da-tim-no-galaxy-5/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 02:41:02 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Batalhas]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=597</guid>
		<description><![CDATA[
Edit: Isso é para aqueles que como eu não conseguiram Internet usando apenas o APN Brasil
Post rápido, estou com um Galaxy 5 já faz um tempinho e não conseguia configurar a internet da TIM até ler esse post, a configuração do APN vai ser a seguinte:
Nome: Tim Internet
APN: tim.br
Proxy: 200.244.116.65
Porta: 8080
Nome de usuário: tim
Senha: tim
Servidor: [...]]]></description>
			<content:encoded><![CDATA[
<p><strong>Edit</strong>: Isso é para aqueles que como eu não conseguiram Internet usando apenas o <a href="https://market.android.com/details?id=br.com.droidbrasil.apnbrasil&amp;feature=search_result">APN Brasil</a></p>
<p>Post rápido, estou com um Galaxy 5 já faz um tempinho e não conseguia configurar a internet da TIM até ler <a href="http://www.androidz.com.br/forum/topic/900-galaxy-5-nao-conecta-internet-desbloqueado-com-chip-da-tim/page__view__findpost__p__25358?s=462f4b9cabcaec832c54d2d086bf01df">esse post</a>, a configuração do APN vai ser a seguinte:<span id="more-597"></span></p>
<p>Nome: Tim Internet</p>
<p>APN: tim.br</p>
<p>Proxy: 200.244.116.65</p>
<p>Porta: 8080</p>
<p>Nome de usuário: tim</p>
<p>Senha: tim</p>
<p>Servidor: &lt;Não definido&gt;</p>
<p>MMSC: &lt;Não definido&gt;</p>
<p>Proxy MMS: &lt;Não definido&gt;</p>
<p>Porta MMS: &lt;Não definido&gt;</p>
<p>MCC: 724</p>
<p>MNC: 04(no post diz 02, mas se eu colocar isso esse APN desaparece da lista :/)</p>
<p>Tipo de autenticação: PAP</p>
<p>Tipo APN: default</p>
<p>Protocolo APN: IPv4(acho que isso só no Android 2.3)</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=597&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2011/10/configurando-a-rede-de-dados-da-tim-no-galaxy-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2011/10/configurando-a-rede-de-dados-da-tim-no-galaxy-5/</feedburner:origLink></item>
		<item>
		<title>Problema do caixeiro viajante</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/el_S0nLS5QE/</link>
		<comments>http://blog.renanfernandes.com.br/2011/06/problema-do-caixeiro-viajante/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 23:57:03 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[algoritimos]]></category>
		<category><![CDATA[caixeiro viajante]]></category>
		<category><![CDATA[pitagoras]]></category>
		<category><![CDATA[teorema de piragoras]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=581</guid>
		<description><![CDATA[
De acordo com a wikipédia:
O problema do caixeiro-viajante consiste na procura de um circuito que possua a menor distância, começando numa qualquer cidade, entre várias, visitando cada cidade precisamente uma vez e regressando à cidade inicial
Resolvi esse problema rapidamente com ruby. Pode não ser o código mais belo mas ao menos funciona :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
City = Struct.new&#40;:x, [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://blog.renanfernandes.com.br/wp-content/uploads/2011/06/Example_The_travelling_salesman_problem_TSP.gif"><img class="alignleft size-thumbnail wp-image-582" title="Exemplo do caixeiro viajante" src="http://blog.renanfernandes.com.br/wp-content/uploads/2011/06/Example_The_travelling_salesman_problem_TSP-150x129.gif" alt="" width="150" height="129" /></a>De acordo com a wikipédia:</p>
<blockquote><p>O problema do <strong>caixeiro-viajante</strong> consiste na procura de um circuito que possua a menor distância, começando numa qualquer cidade, entre várias, visitando cada cidade precisamente uma vez e regressando à cidade inicial</p></blockquote>
<p><span id="more-581"></span>Resolvi esse problema rapidamente com<strong> ruby</strong>. Pode não ser o código mais belo mas ao menos funciona :)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">City = <span style="color:#CC00FF; font-weight:bold;">Struct</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:x</span>, <span style="color:#ff3333; font-weight:bold;">:y</span>, <span style="color:#ff3333; font-weight:bold;">:name</span><span style="color:#006600; font-weight:bold;">&#41;</span>
Route = <span style="color:#CC00FF; font-weight:bold;">Struct</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:cities</span>, <span style="color:#ff3333; font-weight:bold;">:distance</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
CITIES = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> add_city<span style="color:#006600; font-weight:bold;">&#40;</span>x, y, name<span style="color:#006600; font-weight:bold;">&#41;</span>
  CITIES <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> City.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>x, y, name<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> calculate_distance<span style="color:#006600; font-weight:bold;">&#40;</span>from, to<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#CC00FF; font-weight:bold;">Math</span>.<span style="color:#9900CC;">sqrt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span>to.<span style="color:#9900CC;">x</span><span style="color:#006600; font-weight:bold;">-</span>from.<span style="color:#9900CC;">x</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">**</span><span style="color:#006666;">2</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006600; font-weight:bold;">&#40;</span>to.<span style="color:#9900CC;">y</span><span style="color:#006600; font-weight:bold;">-</span>from.<span style="color:#9900CC;">y</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">**</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_i</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> go_route<span style="color:#006600; font-weight:bold;">&#40;</span>route, routes<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">if</span> route.<span style="color:#9900CC;">cities</span>.<span style="color:#9900CC;">length</span> == CITIES.<span style="color:#9900CC;">length</span>
    route.<span style="color:#9900CC;">distance</span> <span style="color:#006600; font-weight:bold;">+</span>= calculate_distance<span style="color:#006600; font-weight:bold;">&#40;</span>route.<span style="color:#9900CC;">cities</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>, route.<span style="color:#9900CC;">cities</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    route.<span style="color:#9900CC;">cities</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> route.<span style="color:#9900CC;">cities</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    routes <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> route
    <span style="color:#0000FF; font-weight:bold;">return</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">for</span> city <span style="color:#9966CC; font-weight:bold;">in</span> CITIES <span style="color:#006600; font-weight:bold;">-</span> route.<span style="color:#9900CC;">cities</span>
    new_route = Route.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>route.<span style="color:#9900CC;">cities</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006600; font-weight:bold;">&#91;</span>city<span style="color:#006600; font-weight:bold;">&#93;</span>, route.<span style="color:#9900CC;">distance</span> <span style="color:#006600; font-weight:bold;">+</span> calculate_distance<span style="color:#006600; font-weight:bold;">&#40;</span>route.<span style="color:#9900CC;">cities</span>.<span style="color:#9900CC;">last</span>, city<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    go_route<span style="color:#006600; font-weight:bold;">&#40;</span>new_route, routes<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> go<span style="color:#006600; font-weight:bold;">&#40;</span>routes, start_city<span style="color:#006600; font-weight:bold;">&#41;</span>
  route = Route.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>start_city<span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  go_route<span style="color:#006600; font-weight:bold;">&#40;</span>route, routes<span style="color:#006600; font-weight:bold;">&#41;</span>
  routes
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> r<span style="color:#006600; font-weight:bold;">&#40;</span>n=<span style="color:#006666;">10000</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0066; font-weight:bold;">rand</span><span style="color:#006600; font-weight:bold;">*</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_i</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">for</span> name <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;Foo&quot;</span>, <span style="color:#996600;">&quot;Bar&quot;</span>, <span style="color:#996600;">&quot;LOL&quot;</span>, <span style="color:#996600;">&quot;WIN!&quot;</span>, <span style="color:#996600;">&quot;Ruby&quot;</span>, <span style="color:#996600;">&quot;Perl&quot;</span>, <span style="color:#996600;">&quot;LOL!!!&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
  add_city<span style="color:#006600; font-weight:bold;">&#40;</span>r, r, name<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
&nbsp;
best_routes = go<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>, CITIES.<span style="color:#9900CC;">shuffle</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">sort_by</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:distance<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span>...<span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;10 Best routes!&quot;</span>
best_routes.<span style="color:#9900CC;">each_with_index</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>route, i<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">2</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Route ##{i+1}&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot; Distance: #{route.distance}&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot; Cities:&quot;</span>
&nbsp;
  last_city = <span style="color:#0000FF; font-weight:bold;">nil</span>
  distance  = <span style="color:#006666;">0</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;  %10s | %07s, %7s | %10s | %s&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#91;</span> <span style="color:#996600;">&quot;City&quot;</span>, <span style="color:#996600;">&quot;Cord X&quot;</span>, <span style="color:#996600;">&quot;Cord Y&quot;</span>, <span style="color:#996600;">&quot;Total dist&quot;</span>, <span style="color:#996600;">&quot;Distance from last city&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
  route.<span style="color:#9900CC;">cities</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>city<span style="color:#006600; font-weight:bold;">|</span>
    distance_between_cities = <span style="color:#006600; font-weight:bold;">&#40;</span>last_city.<span style="color:#0000FF; font-weight:bold;">nil</span>? ? <span style="color:#006666;">0</span> : calculate_distance<span style="color:#006600; font-weight:bold;">&#40;</span>last_city, city<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;  %10s | x:%.05i, y:%.05i | %.10i | %.10i&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#91;</span>city.<span style="color:#9900CC;">name</span>, city.<span style="color:#9900CC;">x</span>, city.<span style="color:#9900CC;">y</span>, distance<span style="color:#006600; font-weight:bold;">+</span>=distance_between_cities, distance_between_cities<span style="color:#006600; font-weight:bold;">&#93;</span>
    last_city = city
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Certo, vamos começar as explicações:</p>
<ul>
<li>Nas linhas 38, 39 e 40 nós criamos algumas cidades com posições aleatórias.</li>
<li>Na linha 43 nós chamamos o método "go" passando uma Array e uma cidade aleatória. Após ele terminar de executar os resultados vão ser ordenados pela distância da rota e será pego apenas os 10 menores.</li>
<li>No método go(linha 28) nós criamos uma nova rota(linha 29) tendo a cidade aleatória(ponto de partida) e a distância de 0. Então passamos essa nova rota e a array de rotas pro método go_route(linha 30)</li>
<li>No método go_route(linha 14) verificamos se a rota já tem todas as cidades(linha 15).</li>
<li>Caso tenha, então adicionamos a cidade inicial(linha 17) e a distância da última cidade até ela(linha 16), então adicionamos essa rota a array de rotas(linha 18).</li>
<li>Caso não tenha, então iniciamos um 'for' com as cidades restantes(linha 22). Para cada cidade é criada uma nova rota com todas as cidades que já passou + a cidade atual do for e calculado a distância até ela(linha 23). Com essa nova rota chamamos o método go_route novamente, só que dessa vez com a nova rota(linha 24).</li>
</ul>
<p>Pra quem não entender o que está acontecendo na linha 11, é só lembrar daquela frase do <strong>Teorema de Pitágoras</strong>:</p>
<blockquote><p>Em um triângulo retângulo, o quadrado da medida da hipotenusa é igual à soma dos quadrados das medidas dos catetos.</p></blockquote>
<p>Ou seja, o x do ponto final menos o x do ponto inicial elevado ao quadrado mais o y do ponto final menos o y do ponto inicial elevado ao quadrado é igual ao quadrado da distância entre os 2 pontos, então é só tirar a raiz quadrado do resultado.</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=581&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2011/06/problema-do-caixeiro-viajante/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2011/06/problema-do-caixeiro-viajante/</feedburner:origLink></item>
		<item>
		<title>Ótima apostila de C++</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/xpoMxUlfXZo/</link>
		<comments>http://blog.renanfernandes.com.br/2010/09/otima-apostila-de-c/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 15:31:50 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[c++ para iniciantes]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=572</guid>
		<description><![CDATA[
Sou programador de Ruby, mas atualmente fiquei interessado em algo mais rápido. Achei várias apostilas, mas, ou era incompleta, ou não era pra iniciante, ou era voltada a Window. No meio da busca me deparei com essa do Prof. André Duarte Bueno da UFSC.
Achei ela bastante completa. Já estou na metade e espero terminar de [...]]]></description>
			<content:encoded><![CDATA[
<p>Sou programador de Ruby, mas atualmente fiquei interessado em algo mais rápido. Achei várias apostilas, mas, ou era incompleta, ou não era pra iniciante, ou era voltada a Window. No meio da busca me deparei com <a href="http://www.lenep.uenf.br/~bueno/ApostilaProgramacao/ApostilaProgramacaoCppv045.pdf">essa</a> do Prof. André Duarte Bueno da UFSC.</p>
<p>Achei ela bastante completa. Já estou na metade e espero terminar de ler essa semana, após isso vou ler o "Thinking in C++" :)</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=572&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/09/otima-apostila-de-c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/09/otima-apostila-de-c/</feedburner:origLink></item>
		<item>
		<title>Criando User Defined Functions do SQLite3 no QT</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/eq2l6NEV3nU/</link>
		<comments>http://blog.renanfernandes.com.br/2010/09/criando-user-defined-functions-do-sqlite3-no-qt/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 15:31:09 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[sqlite3]]></category>
		<category><![CDATA[udf]]></category>
		<category><![CDATA[udf no qt]]></category>
		<category><![CDATA[user defined functions]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=569</guid>
		<description><![CDATA[
Yo, tempinho sumido já mas voltando a brincar com C++ agora.
Primeiro, "O que é uma User Defined Function(UDF)?".
Como o nome diz, é uma função criada pelo usuário(sua app), por exemplo:

UPDATE products SET price = toMoney&#40;price_cents&#41;;

A função "toMoney", como o próprio nome diz, serve pra transformar uma string/inteiro em uma string em formato de dinheiro, porém [...]]]></description>
			<content:encoded><![CDATA[
<p>Yo, tempinho sumido já mas voltando a brincar com C++ agora.</p>
<p>Primeiro, "O que é uma User Defined Function(UDF)?".</p>
<p>Como o nome diz, é uma função criada pelo usuário(sua app), por exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">UPDATE</span> products <span style="color: #993333; font-weight: bold;">SET</span> price <span style="color: #66cc66;">=</span> toMoney<span style="color: #66cc66;">&#40;</span>price_cents<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>A função "toMoney", como o próprio nome diz, serve pra transformar uma string/inteiro em uma string em formato de dinheiro, porém essa função não existe. É ai que entram as UDFs. Se não existe, então criamos!</p>
<p>Vou partir do princípio que você vai fazer isso em um programa em QT4.<br />
<span id="more-569"></span></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;QSqlDatabase&gt;</span>
<span style="color: #339900;">#include &lt;QSqlDriver&gt;</span>
<span style="color: #339900;">#include &lt;QString&gt;</span>
<span style="color: #339900;">#include &lt;QVariant&gt;</span>
<span style="color: #339900;">#include &quot;sqlite3.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> toMoneyFunc<span style="color: #008000;">&#40;</span>sqlite3_context<span style="color: #000040;">*</span> context, <span style="color: #0000ff;">int</span> <span style="color: #ff0000; font-style: italic;">/* argc */</span>, sqlite3_value<span style="color: #000040;">**</span> argv<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>out<span style="color: #008080;">;</span>
    QString str<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>sqlite3_value_text<span style="color: #008000;">&#40;</span>argv<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//a função toMoney é quem faz o trabalho sujo :)</span>
    QString str2 <span style="color: #000080;">=</span> toCurrency<span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    out <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span><span style="color: #008000;">&#91;</span>str2.<span style="color: #007788;">count</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//esse foi o único meio que eu achei de passar uma QString para um char sem perdas.</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> str2.<span style="color: #007788;">count</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> out<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> str2<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">toAscii</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//os argumentos são, o context, uma const char* com o resultado, o número de bytes a ser usado(strlen(out)+1) ou -1</span>
    <span style="color: #666666;">//e por último um void</span>
    sqlite3_result_text<span style="color: #008000;">&#40;</span>context, <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>out, <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">bool</span> createConnection<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    QSqlDatabase db <span style="color: #000080;">=</span> QSqlDatabase<span style="color: #008080;">::</span><span style="color: #007788;">addDatabase</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;QSQLITE&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    db.<span style="color: #007788;">setDatabaseName</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;:memory:&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>db.<span style="color: #007788;">open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
    QVariant v <span style="color: #000080;">=</span> db.<span style="color: #007788;">driver</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>handle<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>v.<span style="color: #007788;">isValid</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> qstrcmp<span style="color: #008000;">&#40;</span>v.<span style="color: #007788;">typeName</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, <span style="color: #FF0000;">&quot;sqlite3*&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
    sqlite3 <span style="color: #000040;">*</span>handler <span style="color: #000080;">=</span> <span style="color: #000040;">*</span><span style="color: #0000ff;">static_cast</span><span style="color: #000080;">&lt;</span>sqlite3 <span style="color: #000040;">**</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span>v.<span style="color: #007788;">data</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//os argumentos são, o handler, nome da função, número de argumentos ou -1 pra quantos tiver, codificação aceita, void, ponteiro para a função, void, void</span>
    <span style="color: #666666;">//para mais informações veja aqui http://www.sqlite.org/c3ref/create_function.html</span>
    sqlite3_create_function<span style="color: #008000;">&#40;</span>handler, <span style="color: #FF0000;">&quot;toMoney&quot;</span>, <span style="color: #0000dd;">1</span>, SQLITE_ANY, <span style="color: #0000dd;">0</span>, <span style="color: #000040;">&amp;</span>toMoneyFunc, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>


<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=569&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/09/criando-user-defined-functions-do-sqlite3-no-qt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/09/criando-user-defined-functions-do-sqlite3-no-qt/</feedburner:origLink></item>
		<item>
		<title>Comentários de código engraçados</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/rinI5a3OrfY/</link>
		<comments>http://blog.renanfernandes.com.br/2010/09/comentarios-de-codigo-engracados/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 17:23:18 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Comédia]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[comentarios divertidos]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programador sofre]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=562</guid>
		<description><![CDATA[
Ok, faz bastante tempo que não posto nada, e por conta disso vou copiar um post do cobaia.net :D


/*
 * OK; before you read the following code know what I am trying to do.
 * I needed to get the list of child catagories from the root node so that
 * the root node didn't [...]]]></description>
			<content:encoded><![CDATA[
<p>Ok, faz bastante tempo que não posto nada, e por conta disso vou copiar um post do <a href="http://cobaia.net/2010/09/top-funny-source-code-comments/">cobaia.net</a> :D</p>
<p><span id="more-562"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * OK; before you read the following code know what I am trying to do.
 * I needed to get the list of child catagories from the root node so that
 * the root node didn't appear in the selection box. But for some stupid
 * fucking reason the stupid fucking DBA wont let me access the items using
 * indices and I instead have to use their stupid fucking Iterator
 * implementation. So there.
 */</span>
<span style="color: #000088;">$firstList</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRootNode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getChildren</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$firstList</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$node</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$nodes</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getChildren</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// wtf?</span>
<span style="color: #009900;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// if i ever see this again i'm going to start bringing guns to work</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//hack for ie browser (assuming that ie is a browser)</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
* For the brave souls who get this far: You are the chosen ones,
* the valiant knights of programming who toil away, without rest,
* fixing our most awful code. To you, true saviors, kings of men,
* I say this: never gonna give you up, never gonna let you down,
* never gonna run around and desert you. Never gonna make you cry,
* never gonna say goodbye. Never gonna tell a lie and hurt you.
*/</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// </span>
<span style="color: #666666; font-style: italic;">// Dear maintainer:</span>
<span style="color: #666666; font-style: italic;">// </span>
<span style="color: #666666; font-style: italic;">// Once you are done trying to 'optimize' this routine,</span>
<span style="color: #666666; font-style: italic;">// and have realized what a terrible mistake that was,</span>
<span style="color: #666666; font-style: italic;">// please increment the following counter as a warning</span>
<span style="color: #666666; font-style: italic;">// to the next guy:</span>
<span style="color: #666666; font-style: italic;">// </span>
<span style="color: #666666; font-style: italic;">// total_hours_wasted_here = 16</span>
<span style="color: #666666; font-style: italic;">//</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// TODO: Fix this. Fix what?</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// no comments for you</span>
<span style="color: #666666; font-style: italic;">// it was hard to write</span>
<span style="color: #666666; font-style: italic;">// so it should be hard to read</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// I will give you two of my seventy-two virgins if you can fix this.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">options.<span style="color: #007788;">BatchSize</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">300</span><span style="color: #008080;">;</span> <span style="color: #666666;">//Madness? THIS IS SPARTA!</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// I am not responsible of this code.</span>
<span style="color: #666666; font-style: italic;">// They made me write it, against my will.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//Dear future me. Please forgive me.</span>
<span style="color: #666666; font-style: italic;">//I can't even begin to express how sorry I am.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">double</span> penetration<span style="color: #008080;">;</span> <span style="color: #666666;">// ouch</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># To understand recursion, see the bottom of this file.</span></pre></div></div>

<p>At the bottom file:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># To understand recursion, see the top of this file.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//I am not sure why this works but it fixes the problem.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//somedev1 - 6/7/02 Adding temporary tracking of Logic screen</span>
<span style="color: #666666; font-style: italic;">//somedev2 - 5/22/07 Temporary my ass</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * You may think you know what the following code does.
 * But you dont. Trust me
 * Fiddle with me, and youll spend many a sleppless
 * night cursing the moment you thought you be clever 
 * enough to &quot;optimize&quot; the code below.
 * Now close this file and go play with something else.
*/</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// drunk, fix later</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Magic. Do not touch.</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// I dedicate all this code, all my work, to my wife, Darlene, who will</span>
<span style="color: #666666; font-style: italic;">// have to support me and our three children and the dog once it gets</span>
<span style="color: #666666; font-style: italic;">// released into the public</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">Exception up <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Exception<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Something is really wrong.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">throw</span> up<span style="color: #008080;">;</span> <span style="color: #666666;">//ha ha</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//When I wrote this, only God and I understood that I was doing</span>
<span style="color: #666666; font-style: italic;">//Now, God only knows</span></pre></div></div>


<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=562&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/09/comentarios-de-codigo-engracados/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/09/comentarios-de-codigo-engracados/</feedburner:origLink></item>
		<item>
		<title>Oxygen Transparent</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/UieLzk6V2do/</link>
		<comments>http://blog.renanfernandes.com.br/2010/07/oxygen-transparent/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 16:53:25 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[arch linux]]></category>
		<category><![CDATA[aur]]></category>
		<category><![CDATA[fundo transparente]]></category>
		<category><![CDATA[oxygen]]></category>
		<category><![CDATA[oxygen transparente]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[pacote]]></category>
		<category><![CDATA[PKGBUILD]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[transparente]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=549</guid>
		<description><![CDATA[
Yeah, agora tem um Oxygen Transparent, que é basicamente um fork do Oxygen com possibilidade de deixar o fundo transparente.
Se voce usa Arch Linux, então use esse esse pacote do AUR.
Para os demais, vou adaptar o PKGBUILD do pacote acima, esse script vai instalar o Oxygen Transparent e NÃO vai sobrepor o seu Oxygen(como seria [...]]]></description>
			<content:encoded><![CDATA[
<div id="attachment_553" class="wp-caption alignright" style="width: 160px"><a href="http://blog.renanfernandes.com.br/wp-content/uploads/2010/07/oxygentransparent1.png"><img class="size-thumbnail wp-image-553" title="Oxygen Transparent" src="http://blog.renanfernandes.com.br/wp-content/uploads/2010/07/oxygentransparent1-150x123.png" alt="Oxygen Transparent no Dolphin" width="150" height="123" /></a><p class="wp-caption-text">Dolphin</p></div>
<p>Yeah, agora tem um <strong>Oxygen Transparent</strong>, que é basicamente um fork do Oxygen com possibilidade de deixar o <strong>fundo transparente</strong>.</p>
<p>Se voce usa <a href="http://archlinux.org/">Arch Linux</a>, então use <del><a href="http://aur.archlinux.org/packages.php?ID=39201">esse</a></del> <a href="http://aur.archlinux.org/packages.php?ID=47152">esse</a> pacote do AUR.</p>
<p>Para os demais, vou adaptar o PKGBUILD do pacote acima, esse script vai instalar o <strong>Oxygen Transparent</strong> <del>e <strong>NÃO</strong> vai sobrepor o seu Oxygen(como seria o normal)</del>. Agora é assim o normal.<span id="more-549"></span></p>
<p>Você vai precisar ter o runtime e o workspace do KDE, pkgconfig, cmake, automoc4  e <del>subversion(svn)</del> git instalados.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">srcdir</span>=<span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>oxygen
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #800000;">${srcdir}</span>
&nbsp;
<span style="color: #007800;">_gitroot</span>=<span style="color: #ff0000;">&quot;git://anongit.kde.org/﻿oxygen-transparent&quot;</span>
<span style="color: #007800;">_gitname</span>=oxygen-transparent
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${srcdir}</span>&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> <span style="color: #800000;">${_gitname}</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #800000;">${_gitname}</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">git</span> pull origin
<span style="color: #000000; font-weight: bold;">else</span>
  <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #800000;">${_gitroot}</span> <span style="color: #800000;">${_gitname}</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${srcdir}</span>/build&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #ff0000;">&quot;<span style="color: #007800;">${srcdir}</span>/<span style="color: #007800;">${_gitname}</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${srcdir}</span>/build&quot;</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${srcdir}</span>/build&quot;</span>
&nbsp;
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=<span style="color: #000000; font-weight: bold;">/</span>usr
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>


<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=549&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/07/oxygen-transparent/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/07/oxygen-transparent/</feedburner:origLink></item>
		<item>
		<title>Morevna, um anime feito totalmente com software livre</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/VoCIs-C1Nog/</link>
		<comments>http://blog.renanfernandes.com.br/2010/07/morevna-um-anime-feito-totalmente-com-software-livre/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 22:42:37 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[anime]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[gimp]]></category>
		<category><![CDATA[inkscape]]></category>
		<category><![CDATA[morevna]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=544</guid>
		<description><![CDATA[
Morevna é um anime com um diferencial interessante: o projeto está sendo todo feito com ferramentas open source, como Synfig, Blender, GIMP e Krita. Mas Morevna não está apenas sendo feito com ferramentas livres e abertas: ele também será distribuído livremente, sem qualquer custo. Só baixar e assistir.

E talvez seja isso o que torna o projeto [...]]]></description>
			<content:encoded><![CDATA[
<p><strong>Morevna</strong> é um anime com um diferencial interessante: o projeto está sendo todo feito com ferramentas open source, como Synfig, Blender, GIMP e Krita. Mas Morevna não está apenas sendo feito com ferramentas livres e abertas: ele também será distribuído livremente, sem qualquer custo. Só baixar e assistir.<br />
<a href="http://blog.renanfernandes.com.br/wp-content/uploads/2010/07/morevna-300x300.png"><img class="aligncenter size-full wp-image-545" title="morevna-300x300" src="http://blog.renanfernandes.com.br/wp-content/uploads/2010/07/morevna-300x300.png" alt="" width="300" height="300" /></a></p>
<p><span id="more-544"></span>E talvez seja isso o que torna o projeto algo que mereça ser acompanhado de perto. Não é apenas um anime amador, é todo um conceito sendo desenvolvido.</p>
<p>A história do anime <strong>Morevna</strong> é baseado em um antigo conto de fadas russo, chamado “Marya Morevna”. Mas o anime terá um cenário futurista e high-tech, cheio das tranqueiras tecnológicas que enchem os olhos em uma animação.</p>
<p>Os objetivos por trás do projeto Morevna também merecem atenção:</p>
<ul>
<li>Criar um filme de longa duração no formato anime, mas utilizando apenas Software Livre;</li>
<li>Promover soluções Open Source e a ideologia por trás do Sofware Livre;</li>
<li>Testar e melhorar aplicativos livres existentes, repassando comentários e problemas para desenvolvedores e a comunidade de usuários;</li>
<li>Validar ferramentas livres como alternativas válidas para criação de animações profissionais de qualidade;</li>
<li>Gerar documentação e tutoriais para que outros artistas possam aprender como usar ferramentas livres</li>
</ul>
<p>O vídeo abaixo mostra alguns detalhes do projeto:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/ZNUtgBoeGko" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/ZNUtgBoeGko"></embed></object></p>
<p>Você pode saber mais sobre o projeto <a href="http://morevnaproject.org/">Morevna</a> visitando o blog do projeto e até contribuir de alguma forma com o desenvolvimento dele. Basta ler a <a href="http://morevnaproject.org/wiki/Contributor's_Guide">documentação</a>. :)</p>
<p>Post copiado do <a href="http://graveheart.me/geek-life/linux/morevna-um-anime-feito-totalmente-com-software-livre/">Graveheart</a></p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=544&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/07/morevna-um-anime-feito-totalmente-com-software-livre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/07/morevna-um-anime-feito-totalmente-com-software-livre/</feedburner:origLink></item>
		<item>
		<title>Improvável: Jogo dos estilos</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/q-Mb9RacEPM/</link>
		<comments>http://blog.renanfernandes.com.br/2010/07/improvavel-jogo-dos-estilos/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 01:19:45 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Comédia]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[barbixas]]></category>
		<category><![CDATA[comédia]]></category>
		<category><![CDATA[estilos]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[improviso]]></category>
		<category><![CDATA[jogo]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=541</guid>
		<description><![CDATA[
Pra quem não conhece, Improvável é um espetáculo criado pela Cia. Barbixas de Humor que sempre recebe 2 convidados e faz tudo na base do improviso, sempre tendo como base do improviso algo dado pela platéia(nesse jogo são os estilos, e dessa vez a profissão também).
Talvez você já tenha os visto no É Tudo Improviso [...]]]></description>
			<content:encoded><![CDATA[
<p>Pra quem não conhece, <a href="http://www.improvavel.com.br/index.htm">Improvável</a> é um espetáculo criado pela <a href="http://www.barbixas.com.br/">Cia. Barbixas de Humor</a> que sempre recebe 2 convidados e faz tudo na base do improviso, sempre tendo como base do improviso algo dado pela platéia(nesse jogo são os estilos, e dessa vez a profissão também).</p>
<p>Talvez você já tenha os visto no <a href="http://www.band.com.br/etudoimproviso/">É Tudo Improviso</a> que passou no lugar do CQC durante algum tempo, mas lá eles não eram tão engraçados.</p>
<p>Aqui o vídeo dessa semana, caso queira ver mais dê uma olhada no <a href="http://www.youtube.com/user/videosimprovaveis">canal</a> deles.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/XIlMsmb-HCs&amp;hl=pt_BR&amp;fs=1?rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/XIlMsmb-HCs&amp;hl=pt_BR&amp;fs=1?rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=541&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/07/improvavel-jogo-dos-estilos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/07/improvavel-jogo-dos-estilos/</feedburner:origLink></item>
		<item>
		<title>DI-524 e seu bug bizarro – Parte 3</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/_g8CVyjUpbU/</link>
		<comments>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-parte-3/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 15:35:27 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Batalhas]]></category>
		<category><![CDATA[bug bizarro]]></category>
		<category><![CDATA[derrota]]></category>
		<category><![CDATA[DI-524]]></category>
		<category><![CDATA[roteador wireless]]></category>
		<category><![CDATA[submarino]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=539</guid>
		<description><![CDATA[
Sábado, logo pela manhã o sedex chegou com o meu novo roteador. Cerca de 1 semana para eu enviar, verem o defeito e me mandarem um novo, nada mau Submarino :)
Fiz a configuração pelo wizard e tudo funcionando por enquanto, vamos ver por quanto tempo dura.
OBS: O roteador chegou no dia mais frio da história [...]]]></description>
			<content:encoded><![CDATA[
<p>Sábado, logo pela manhã o sedex chegou com o meu novo roteador. Cerca de 1 semana para eu enviar, verem o defeito e me mandarem um novo, nada mau <a href="http://submarino.com.br">Submarino</a> :)</p>
<p>Fiz a configuração pelo wizard e tudo funcionando por enquanto, vamos ver por quanto tempo dura.</p>
<p>OBS: O roteador chegou no dia mais frio da história da minha cidade. Aqui a temperatura normal é por volta de 30 graus, ontem estava 14 e hoje é previsto que chegue até 8. Ficar na cama aproveitando a wireless não tem preço :D</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=539&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-parte-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-parte-3/</feedburner:origLink></item>
		<item>
		<title>DI-524 e seu bug bizarro – Parte 2</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/1xIP2KUGKaI/</link>
		<comments>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-%e2%80%93-parte-2/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 03:04:37 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Batalhas]]></category>
		<category><![CDATA[bug bizarro]]></category>
		<category><![CDATA[D-link]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[DI-524]]></category>
		<category><![CDATA[FAIL]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[Roteador]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=532</guid>
		<description><![CDATA[
Derrotado eu fui! Tentei todas as soluções que eu encontrei na internet, tentei o suporte da D-Link(o atendente demorou cerca de 40 minutos para entender que o roteador não tinha acesso a internet) mas nada funcionou.
Entrei em contato com o submarino para fazer a troca na quinta feira passada(dia 01/07) mas pelo jeito esqueceram de [...]]]></description>
			<content:encoded><![CDATA[
<p>Derrotado eu fui! Tentei todas as soluções que eu encontrei na internet, tentei o suporte da D-Link(o atendente demorou cerca de 40 minutos para entender que o roteador não tinha acesso a internet) mas nada funcionou.</p>
<p>Entrei em contato com o submarino para fazer a troca na quinta feira passada(dia 01/07) mas pelo jeito esqueceram de mim, entrei em contato de novo na quarta(07/07) e na quinta já recebi uma resposta deles e um e-mail do correio avisando que na sexta(hoje, 09/07) viria alguém do sedex pegar o roteador(e veio :P).</p>
<p>Bem, vamos ver até quando pra ele voltar. Agora só me falta falarem que ele tá ok :(</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=532&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-%e2%80%93-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/07/di-524-e-seu-bug-bizarro-%e2%80%93-parte-2/</feedburner:origLink></item>
		<item>
		<title>Java 4-Ever Trailer</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/V0Ych5lJckI/</link>
		<comments>http://blog.renanfernandes.com.br/2010/06/java-4-ever-trailer/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 17:38:14 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Trailer]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=526</guid>
		<description><![CDATA[
Esse será o filme do ano :D


]]></description>
			<content:encoded><![CDATA[
<p>Esse será o filme do ano :D</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/_SdnSq1Mgi4&amp;hl=pt_BR&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/_SdnSq1Mgi4&amp;hl=pt_BR&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=526&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/06/java-4-ever-trailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/06/java-4-ever-trailer/</feedburner:origLink></item>
		<item>
		<title>DI-524 e seu bug bizarro – Parte 1</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/CWGgg2MgNUY/</link>
		<comments>http://blog.renanfernandes.com.br/2010/06/di-524-e-seu-bug-bizarro-parte-1/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 16:02:42 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Batalhas]]></category>
		<category><![CDATA[bug bizarro]]></category>
		<category><![CDATA[D-link]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[DI-524]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[Roteador]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=521</guid>
		<description><![CDATA[
No meu último post eu venci a batalha do MTU, mas infelizmente esse roteador é um péssimo perdedor e pediu revanche :(
Após cerca de 20 horas trabalhando normalmente, ele começou a simplesmente 'não enxergar' o modem(é o que eu acho :D). Ele não consegue conectar via DHCP no modem, mesmo resetando, mesmo refazendo todas as [...]]]></description>
			<content:encoded><![CDATA[
<p>No meu <a href="http://blog.renanfernandes.com.br/2010/06/d-link-di-524-e-problemas-de-conexao/">último post</a> eu venci a batalha do MTU, mas infelizmente esse roteador é um péssimo perdedor e pediu revanche :(</p>
<p>Após cerca de 20 horas trabalhando normalmente, ele começou a simplesmente 'não enxergar' o modem(é o que eu acho :D). Ele não consegue conectar via DHCP no modem, mesmo resetando, mesmo refazendo todas as configurações, mesmo passando o modem para bridge e deixando para o routeador discar, mesmo tentando conectar com ip estático, mesmo a pipoca não tendo antena ele simplesmente não se conecta.</p>
<p>Pensei em atualizar o firmware mas pelo que eu vi no site já estou com a versão mais nova.</p>
<p>Entrei em contato com o suporte da D-Link pelo site, se eles tiverem uma solução então beleza, caso contrario vou trocar ele logo(e vou descobrir se o <a href="http://submarino.com.br">submarino</a> é bom para trocar também :P).</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=521&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/06/di-524-e-seu-bug-bizarro-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/06/di-524-e-seu-bug-bizarro-parte-1/</feedburner:origLink></item>
		<item>
		<title>D-Link DI-524 e problemas de conexão</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/eszjxSHdWz8/</link>
		<comments>http://blog.renanfernandes.com.br/2010/06/d-link-di-524-e-problemas-de-conexao/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 02:30:41 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Batalhas]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[D-link]]></category>
		<category><![CDATA[problema de conexão]]></category>
		<category><![CDATA[Roteador]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=518</guid>
		<description><![CDATA[
Hoje chegou meu roteador D-Link DI-524 e pela primeira vez fui configurar uma rede wireless(como se fosse muita coisa :P), entrei em 192.168.0.1, usuário  'admin', senha em branco, rodei o 'wizard' logo na primeira página, fiz a configuração e ok, rede protegida e funcionando(era o que eu achava).
Meu MSN não queria entrar de forma [...]]]></description>
			<content:encoded><![CDATA[
<p>Hoje chegou meu roteador <strong>D-Link DI-524</strong> e pela primeira vez fui configurar uma rede wireless(como se fosse muita coisa :P), entrei em 192.168.0.1, usuário  'admin', senha em branco, rodei o 'wizard' logo na primeira página, fiz a configuração e ok, rede protegida e funcionando(era o que eu achava).</p>
<p>Meu MSN não queria entrar de forma alguma(mas o XMPP entrava sem problema nenhum), pensei ser problema na rede deles mas, não consegui dar pull no github(embora conseguisse no gitorious). Pesquisando um pouco na internet descobri que nesse roteador você precisa mudar o valor do 'MTU'(em Home » WAN) de 1500 para 1400.</p>
<p>MTU mudado e agora tudo funciona como deve. Só espero não ter problemas futuros já que o notebook ta configurado com MTU 1500(padrão).</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=518&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/06/d-link-di-524-e-problemas-de-conexao/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/06/d-link-di-524-e-problemas-de-conexao/</feedburner:origLink></item>
		<item>
		<title>Cuidado com o console.log(), ele pode te causar problemas</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/EedgYyKY1s0/</link>
		<comments>http://blog.renanfernandes.com.br/2010/06/cuidado-com-o-console-log-ele-pode-te-causar-problemas/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 20:33:03 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[console.log]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sorte from hell]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=514</guid>
		<description><![CDATA[
Cenário de hoje, o mapa(Google Maps) do sistema que eu mexo estava dando problemas com alguns clientes, mas aqui estava perfeito. Ouvi muita reclamação do meu chefe e com a ajuda do @raphaelivan chegamos a conclusão que o problema era o zoom. Ele ficava com zoom bizarro e ponto final, quando mexiam no zoom ele [...]]]></description>
			<content:encoded><![CDATA[
<p>Cenário de hoje, o mapa(Google Maps) do sistema que eu mexo estava dando problemas com alguns clientes, mas aqui estava perfeito. Ouvi muita reclamação do meu chefe e com a ajuda do <a href="http://twitter.com/raphaelivan">@raphaelivan</a> chegamos a conclusão que o problema era o zoom. Ele ficava com zoom bizarro e ponto final, quando mexiam no zoom ele focava na Somália(Oo).</p>
<p>Por questão de segurança pedi pro raphael ver se no notebook dele o problema também existia, então foi a primeira surpresa: no Chrome estava normal, o problema era com o Firefox.</p>
<p>Abri meu Firefox e o mapa abria normal(estava com o firebug ligado). Como o firebug estava ocupando muito espaço na tela resolvi fechar ele, em seguida me veio a idéia "está normal por causa do cache, vamo ver se com F5 a coisa pauleia", dei o F5 e o mapa realmente pauleou.<span id="more-514"></span></p>
<p>Mapa pauleado, então chegou a hora de ver o erro, mas o firebug só processa javascript que aconteça enquanto ele está rodando, por isso precisei abrir ele e recarregar a página. Para a minha surpresa o mapa estava normal agora. Vagando mentalmente pelo <strong>Reino das pipocas que possuem antena</strong>, buscando a resposta para tal problema que desafiava as leis do complexo pensamento "Agora funciona. Agora não funciona.", eu percebi que havia um log de um objeto no firebug, nesse momento descobri o problema instantâneamente com o pensamento "TNC!!! EH A PORRA DO CONSOLE.LOG MALDITO !!!".</p>
<p>Linha removida, problema resolvido.</p>
<p>Mas digamos que você precisa deixar os console.log lá(app em dev?) e não tem saco de remover eles sempre que for fazer deploy, para isso você pode criar um <strong>fake console.log()</strong>.</p>
<p>Simplesmente coloque esse código no primeiro JS que é carregado pela app:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span><span style="color: #009900;">&#40;</span>console<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'undefined'</span><span style="color: #009900;">&#41;</span> console <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> log <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span><span style="color: #009900;">&#40;</span>console.<span style="color: #660066;">log</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'function'</span><span style="color: #009900;">&#41;</span> console.<span style="color: #660066;">log</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Isso irá criar um console.log caso não exista, assim qualquer usuário terá essa função e você não precisará passar pelo que eu passei hoje.</p>

<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=514&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/06/cuidado-com-o-console-log-ele-pode-te-causar-problemas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/06/cuidado-com-o-console-log-ele-pode-te-causar-problemas/</feedburner:origLink></item>
		<item>
		<title>Instalando o KDE SC 4.5 no Ubuntu/Kubuntu</title>
		<link>http://feedproxy.google.com/~r/RenanFernandesBlog/~3/lUxhurgiH3k/</link>
		<comments>http://blog.renanfernandes.com.br/2010/06/instalando-o-kde-sc-4-5-no-ubuntu-kubuntu/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 19:12:23 +0000</pubDate>
		<dc:creator>ShadowBelmolve</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Instalação]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.renanfernandes.com.br/?p=501</guid>
		<description><![CDATA[
Dica rápida(de novo).
Abra um terminal e digite:

sudo apt-add-repository ppa:kubuntu-ppa/beta
sudo apt-get update

Caso você use Kubuntu, rode então um

sudo apt-get dist-upgrade

Caso use Ubuntu, então rode um

sudo apt-get install kubuntu-desktop


]]></description>
			<content:encoded><![CDATA[
<p>Dica rápida(de novo).</p>
<p>Abra um terminal e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> apt-add-repository ppa:kubuntu-ppa<span style="color: #000000; font-weight: bold;">/</span>beta
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update</pre></div></div>

<p>Caso você use <strong>Kubuntu</strong>, rode então um</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> dist-upgrade</pre></div></div>

<p>Caso use <strong>Ubuntu</strong>, então rode um</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> kubuntu-desktop</pre></div></div>


<img src="http://blog.renanfernandes.com.br/?ak_action=api_record_view&id=501&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.renanfernandes.com.br/2010/06/instalando-o-kde-sc-4-5-no-ubuntu-kubuntu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.renanfernandes.com.br/2010/06/instalando-o-kde-sc-4-5-no-ubuntu-kubuntu/</feedburner:origLink></item>
	</channel>
</rss>

