<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leonardo Bighi</title>
	<atom:link href="http://leonardobighi.com/feed" rel="self" type="application/rss+xml" />
	<link>http://leonardobighi.com</link>
	<description>Programação, Rails, Tecnologia.. tudo com um toque pessoal</description>
	<lastBuildDate>Thu, 19 Mar 2009 12:09:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Leonardo Bighi agora em outro blog!</title>
		<link>http://leonardobighi.com/geral/85/leonardo-bighi-agora-em-outro-blog</link>
		<comments>http://leonardobighi.com/geral/85/leonardo-bighi-agora-em-outro-blog#comments</comments>
		<pubDate>Thu, 19 Mar 2009 12:09:35 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[not for dummies]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=85</guid>
		<description><![CDATA[Este blog tem andado meio parado. O tempo anda muito curto e não tenho tido tempo de ficar atualizando o blog. O interessante é que existem alguns outros programadores que também querem escrever artigos para ajudar a comunidade, mas não tem tempo de manter um blog sozinhos. Então agora resolvemos nos reunir para manter um [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Este blog tem andado meio <strong>parado</strong>. O tempo anda muito curto e não tenho tido tempo de ficar atualizando o blog. O interessante é que existem alguns outros programadores que também querem escrever artigos para ajudar a comunidade, mas não tem tempo de manter um blog sozinhos. Então agora resolvemos nos reunir para manter um <strong>novo blog grupal sobre programação</strong>.</p>
<p>Estamos agora estreando o blog <a title="Not For Dummies" href="http://3folks.com/notfordummies/"><strong>Not For Dummies</strong></a>, blog sobre desenvolvimento mantido por diversos autores. Vamos falar de XHTML, CSS, PHP, Ruby On Rails, Usabilidade, e muito mais. Com vários autores, o blog vai ficar menos tempo parado.</p>
<p>Então a partir de hoje vou passar a <strong>escrever sempre</strong> por lá. Ainda não sei o que vou fazer com este blog, mas com certeza vai ficar parado por um tempo até eu me decidir.</p>
<p>Então se você assina o feed deste blog ou visita com frequência, passe a visitar o <a title="Not For Dummies" href="http://3folks.com/notfordummies/"><strong>Not For Dummies</strong></a>. Você vai gostar.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/85/leonardo-bighi-agora-em-outro-blog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas de como não ter sucesso online</title>
		<link>http://leonardobighi.com/usabilidade/82/dicas-de-como-nao-ter-sucesso-online</link>
		<comments>http://leonardobighi.com/usabilidade/82/dicas-de-como-nao-ter-sucesso-online#comments</comments>
		<pubDate>Wed, 28 Jan 2009 18:33:29 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Usabilidade]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=82</guid>
		<description><![CDATA[Quer um guia para falta de sucesso online? Faça como este site.
Recebi o link para este site pela web designer da empresa onde trabalho. O site contém um &#8220;guia de como ter sucesso online&#8221; (em inglês), mas o site é um grande exemplo do que NÃO fazer ao se criar um site. Começando pelo fato [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Quer um <strong>guia para falta de sucesso online</strong>? Faça como <a title="Péssima interface" href="http://www.taschen.com/lookinside/05204/index.htm">este site</a>.</p>
<p>Recebi o link para este site pela <strong>web designer </strong>da empresa onde trabalho. O site contém um &#8220;guia de como ter sucesso online&#8221; (em inglês), mas o site é um grande <strong>exemplo do que NÃO fazer</strong> ao se criar um site. Começando pelo fato do site ser todo <strong>feito em flash</strong>.</p>
<p>Fazer site todo em flash, com navegação &#8220;diferentinha&#8221; é bem coisa de web designer (não os bons, vocês estão perdoados).<strong> Criar um site assim é o mesmo que pegar todo o avanço que tivemos na usabilidade na web até agora, e jogar fora. </strong></p>
<p>Vamos analisar. O site dá as dicas numa animação em flash no formato de um livrinho, onde o usuário clica no canto para virar a página e continuar lendo. Agora vamos analisar o show de problemas de interface e usabilidade.</p>
<ul>
<li><strong>A fonte é pequena demais.</strong> Uma pessoa com visão boa tem que espremer os olhos para ler. Quem quiser ver maior tem que clicar na lupa e usar um péssimo sistema de zoom que implementaram no livrinho. Se não fosse em flash, a pessoa teria total liberdade de aumentar o texto como quiser.</li>
<li><strong>Clica clica clica.</strong> Cada página tem pouca informação, e são MUITAS páginas. A pessoa tem que ficar clicando, e clicando, e clicando para poder ler tudo. Não chega nem perto da facilidade de rolar com o mouse.</li>
<li><strong>Não dá pra escanear a página com os olhos.</strong> As pessoas não lêem na web como lêem um livro. Elas vão escaneando o site rápido com os olhos em busca da parte mais interessante do conteúdo. E não dá pra fazer isso neste site. Você não pode ir rolando até ver um conteúdo que te interesse, porque você não pode rolar! Não pode escanear rápido o site com os olhos.</li>
<li><strong>Você não pode usar a busca do seu navegador</strong> para encontrar alguma coisa. Na verdade, você não pode buscar nada! Se você está na página 70 (de 337) tem que clicar 69 vezes até voltar ao índice e procurar o que você quer.</li>
<li><strong>Não dá pra usar os botões de Voltar e Avançar</strong> do navegador, e nem seus respectivos atalhos de teclado. Você fica preso à navegação que a pessoa implementou no flash, e só. Se a navegação feita no flash for ruim, não tem como fugir. O clica-clica-clica é péssimo.</li>
<li><strong>Sites de busca não podem indexar o conteúdo</strong>. O google até tá inventando jeitos de indexar flash, mas tá mais na tentativa ainda. Sites em flash não podem ser indexados corretamente. Não dá pros robôs entenderem o que o site diz.</li>
<li><strong>Um flash gigante.</strong> Em sistemas operacionais que não tem um suporte tão bom do flash (linux e mac, olá?) essa página vai ficar muuuito pesada. E lenta. Vai irritar o usuário e ele vai fechar. E isso significa uma média de 10% dos visitantes que você vai ter mandado embora sem ler seu conteúdo.</li>
<li><strong>Só funciona com quem tem flash!</strong> A quantidade de acessos através de celulares inteligentes tem aumentado num ritmo alucinante (principalmente graças ao iphone). E uma boa parte desses acessos vindos de celular não podem ver flash. Isso significa que aquele site vai aparecer vazio pra essas pessoas. Uau, legal. Mostra mesmo que o criador NÃO tem visão e não está preparado pro futuro.</li>
</ul>
<p>Eu poderia ainda citar muitas outras coisas. Não permite que o usuário selecione e copie conteúdo com o mouse, não permite que alguém aponte um capítulo específico pra alguém, etc etc etc. É apenas um grande exemplo de <strong>como se criar uma péssima interface.</strong></p>
<p>Eu achava que os sites feitos todos em flash tinham ficado em 1995, mas parece que continuam surgindo uns aqui e ali. Eu me pergunto como um site desses pode <strong>ousar</strong> dar dicas para a web. Mas também não é nenhuma surpresa que não tenha nenhum site em flash entre os mais famosos e conhecidos.</p>
<p>Vocês conhecem mais algum desses péssimos exemplos de sites feitos por designers ruins?</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/usabilidade/82/dicas-de-como-nao-ter-sucesso-online/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2 plugins interessantes para CakePHP</title>
		<link>http://leonardobighi.com/php/72/plugins-interessantes-para-cakephp</link>
		<comments>http://leonardobighi.com/php/72/plugins-interessantes-para-cakephp#comments</comments>
		<pubDate>Wed, 03 Dec 2008 13:25:42 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[validação]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=72</guid>
		<description><![CDATA[Uma das coisas que eu mais gostei ao programar com Ruby On Rails foi o seu sistema de plugins. Como estou trabalhando com o CakePHP, que é copiado inspirado no Rails, resolvi dar uma olhada nos plugins que ele tinha online e acabei encontrando muita coisa boa. De tudo que vi, dois me chamaram a [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Uma das coisas que eu mais gostei ao programar com Ruby On Rails foi o seu sistema de plugins. Como estou trabalhando com o CakePHP, que é <span style="text-decoration: line-through;">copiado</span> inspirado no Rails, resolvi dar uma olhada nos plugins que ele tinha online e acabei encontrando muita coisa boa. De tudo que vi, dois me chamaram a atenção:</p>
<h2>URL Aliasing</h2>
<p>Há uns dias eu postei como capturar missing_actions (quando o usuário acessa uma URL com action que não existe) e redirecionar para um controller que lidaria com o problema. Muito legal, mas não resolve o problema quando a URL aponta também para um controller que não existe.</p>
<p>O plugin URL Aliasing resolve exatamente esse problema, fornecendo um meio bem simples de lidar com erros de missing_controller.</p>
<p><a title="CakePHP: URL Aliasing" href="http://cakeforge.org/snippet/detail.php?type=snippet&amp;id=66">Link: URL Aliasing</a></p>
<h2>Symbi0nt&#8217;s Model Validation</h2>
<p>Este não é exatamente um plugin, e sim um app_model.php pré-construído com métodos que facilitam bastante a parte de validação de dados do Model.</p>
<p>O principal é que ele define uma série de constantes com validações pré-definidas. Em vez de escrever suas validações, você usa constantes como VALID_IF_NOT_EMPTY, e VALID_IF_EMAIL. A mensagem de erro é especificada por você, então pode ser usado perfeitamente em projetos que não sejam em inglês.</p>
<p><a title="CakePHP: Model Validation" href="http://cakeforge.org/snippet/detail.php?type=snippet&amp;id=138">Link: Symbi0nt&#8217;s Model Validation</a></p>
<p><a title="CakePHP: Exemplos de Model Validation" href="http://cakeforge.org/snippet/detail.php?type=snippet&amp;id=139">Link: Exemplos de uso</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/php/72/plugins-interessantes-para-cakephp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Não &#8220;otimize&#8221; seu código CSS, por favor!</title>
		<link>http://leonardobighi.com/xhtml/62/nao-otimize-seu-codigo-css-por-favor</link>
		<comments>http://leonardobighi.com/xhtml/62/nao-otimize-seu-codigo-css-por-favor#comments</comments>
		<pubDate>Wed, 12 Nov 2008 10:49:00 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[(X)HTML e CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=62</guid>
		<description><![CDATA[O site Tableless, do pessoal da Visie, publicou um artigo bem interessante que me fez lembrar de algo que eu odeio em alguns programadores web: código CSS muito mal estruturado. Por favor, não &#8220;otimize&#8221; seu código.
Eu gosto do meu código muito certinho. Indentação correta e consistente, e um uso inteligente de linhas em branco para [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>O site Tableless, do pessoal da <a title="Visie" href="http://visie.com.br">Visie</a>, publicou um <a title="Não otimize seu código" href="http://www.tableless.com.br/nao-otimize-seu-codigo">artigo bem interessante</a> que me fez lembrar de algo que eu odeio em alguns programadores web: código <strong>CSS</strong> muito mal estruturado. Por favor, não &#8220;otimize&#8221; seu código.</p>
<p>Eu gosto do meu código muito certinho. Indentação correta e consistente, e um uso inteligente de linhas em branco para separar e organizar tudo em blocos. Mas tem gente que faz uma coisa bizarra, e sai escrevendo o código todo junto, como se os parâmetros precisassem ficar colados uns aos outros para não morrer de frio ou solidão. Aí fica um troço assim:</p>
<pre><code>div{padding:10px;border:1px solid #CCC;width:485px;height:37px;background:#EEE}</code></pre>
<p>Se você faz isso, eu te odeio. Pura e simplesmente. Te odeio e nunca te convidaria pra tomar chá com biscoitos. Pronto, falei.</p>
<p>Agora vá lá ler o post do <a title="Não otimize seu código" href="http://www.tableless.com.br/nao-otimize-seu-codigo">tableless</a>, que é muito bom.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/xhtml/62/nao-otimize-seu-codigo-css-por-favor/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Redirecionando endereços inválidos no CakePHP</title>
		<link>http://leonardobighi.com/php/54/redirecionando-enderecos-invalidos-no-cakephp</link>
		<comments>http://leonardobighi.com/php/54/redirecionando-enderecos-invalidos-no-cakephp#comments</comments>
		<pubDate>Thu, 06 Nov 2008 13:59:46 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=54</guid>
		<description><![CDATA[Acho que já falei aqui sobre a minha paixão pelo Ruby on Rails, um framework de Ruby que me fez enxergar o desenvolvimento web de uma forma bem diferente. Percebi que as coisas poderiam ser feitas de uma forma muito mais rápida. Há cerca de 3 semanas comecei a trabalhar com o framework CakePHP, que [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Acho que já falei aqui sobre a minha paixão pelo Ruby on Rails, um framework de Ruby que me fez enxergar o desenvolvimento web de uma forma bem diferente. Percebi que as coisas poderiam ser feitas de uma forma muito mais rápida. Há cerca de 3 semanas comecei a trabalhar com o framework CakePHP, que é uma cópia do Ruby on Rails para a linguagem PHP, e nesse pouco tempo já aprendi algumas coisas que posso compartilhar.</p>
<p>Essa semana um <del datetime="2008-11-07T13:50:50+00:00">trouxa </del>moço muito simpático aqui do trabalho queria uma forma de redirecionar pra uma certa página caso o usuário digitasse um endereço inexistente dentro do site criado com o cake. A primeira coisa que se pensa é procurar um jeito de fazer isso através das rotas, mas eu procurei e não encontrei nenhuma forma de criar uma rota específica para controllers ou actions não existentes.</p>
<p>Como fazer, então? A solução é usar um misto dos recursos do Cake, com o básico do próprio PHP. Que venha a nós o beforeFilter e a herança de classes.</p>
<h3>Como Redirecionar Endereços Inválidos</h3>
<p>O CakePHP permite que você defina um método beforeFilter nos seus controllers, que será chamado antes da action (método do controller) ser chamada pelo framework. E como queremos que TODOS os nossos controllers saibam responder a um endereço inexistente, a melhor opção é criar o método beforeFilter no app_controller.php</p>
<p>Se seu projeto no cake ainda não tem o app_controller, é só você criar um arquivo chamado app_controller.php dentro da pasta app (e não na pasta controllers), e dentro dele colocar o código:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> AppController <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>E dentro da classe vamos adicionar nosso beforeFilter:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> AppController <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>params<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #339933;">!</span><span style="color: #990000;">method_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>params<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>redirect<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'main'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'missing'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>O que fizemos acima? A função method_exists é um recurso do PHP que testa se um método existe em um dado objeto. Passamos <em>$this</em> como o objeto, e <em>$this-&gt;params['action']</em> como o método a testar. Se retornar <em>false</em> significa que a action não existe, e o usuário está tentando acessar uma action inexistente. Então o <em>beforeFilter</em> redireciona o usuário pra um lugar que realmente existe, antes mesmo que o <strong>framework </strong>tente chamar a action. Do exemplo acima, você pode trocar o controller <em>&#8216;main&#8217;</em> e a action <em>&#8216;missing&#8217;</em> pelo que for melhor para o seu projeto. Basta ter certeza de que está redirecionando pra um controller e uma action que realmente existam.</p>
<p>Note que isso só funciona se o usuário tentar acessar um endereço que aponte para uma action inválida, mas em um controller válido. Se o usuário acessar apenas site.com/pudim, o <strong>CakePHP </strong>vai buscar um controller pudim e aí vai dar erro mesmo. Uma solução possível seria criar uma rota definindo que caso acessem um endereço com apenas um parâmetro depois do domínio, ele redirecione pra um controller específico e passe aquele parâmetro único como rota. Pra quem não sabe configurar as rotas, amanhã eu explico.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/php/54/redirecionando-enderecos-invalidos-no-cakephp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo uma Mega Loja do Mercado Livre</title>
		<link>http://leonardobighi.com/projetos/52/desenvolvendo-uma-mega-loja-do-mercado-livre</link>
		<comments>http://leonardobighi.com/projetos/52/desenvolvendo-uma-mega-loja-do-mercado-livre#comments</comments>
		<pubDate>Wed, 15 Oct 2008 18:56:42 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Projetos]]></category>
		<category><![CDATA[afiliados]]></category>
		<category><![CDATA[mega loja]]></category>
		<category><![CDATA[megaloja]]></category>
		<category><![CDATA[mercado livre]]></category>
		<category><![CDATA[superloja]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=52</guid>
		<description><![CDATA[Deve ter mais de dois anos que escrevo em blogs na internet, e sempre usei o Google Adsense pra ganhar um dinheirinho. Mês passado fiquei vendo vários blogs falarem sobre a Super Loja, um script php criado pelo Jobson Lemos (não sei pra onde linkar) que gera uma loja do mercado livre pra você. Nunca [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Deve ter mais de dois anos que escrevo em blogs na internet, e sempre usei o Google Adsense pra ganhar um dinheirinho. Mês passado fiquei vendo vários blogs falarem sobre a <strong><a title="Superloja" href="http://tenhasualoja.secundum.com.br/">Super Loja</a></strong>, um script php criado pelo <strong>Jobson Lemos</strong> (não sei pra onde linkar) que gera uma loja do mercado livre pra você. Nunca havia dado bola pra esses programas de afiliados, mas depois de uma semana testando a Super Loja eu descobri que ela funciona muito bem, e muita gente clica e compra produtos. Vale a pena.</p>
<p>Mas a Super Loja não é perfeita. Pra maioria das situações ela funciona muito bem, mas se você precisar ser um pouco mais específico ao listar os produtos, ela não ajuda. Algumas vezes você quer exibir o resultado da busca por um produto, mas acaba vindo muito lixo junto. Por isso, resolvi criar meu próprio script de loja do mercado livre, também em PHP.</p>
<p>A <strong>Mega Loja</strong> é um script completo em PHP que usa usa a <a title="Wikipédia: API" href="http://pt.wikipedia.org/wiki/Api"><strong>API</strong></a> do Mercado Livre para fazer uma busca por produtos. O Mercado Livre retorna uma lista de produtos em <a title="XML" href="http://pt.wikipedia.org/wiki/Xml"><strong>XML</strong></a>, e então o script usa essa listagem para montar uma vitrine de produtos, onde você ganha em dinheiro uma porcentagem do preço de cada produto vendido.</p>
<p>A <strong>Mega Loja</strong> terá compatibilidade com o sistema de URLs dinâmicas da Super Loja. Ou seja, se você já usa o script do Jobson, poderá trocá-lo pela <strong>Mega Loja</strong> e todos os links continuarão funcionando. A maior diferença se encontra no fato de que agora você terá a possibilidade de usar a URL também para definir a categoria do mercado livre onde deseja buscar os produtos, e a faixa de preço.</p>
<p>Por exemplo, se você quisesse listar <strong>iPhones</strong>, ordenando pelos mais vendidos, na Superloja você adicionaria <em>/iphone/ven/</em> no final da URL. Com a Mega Loja, você poderá fazer <em>/iphone/ven/39328/1000:2000/</em>para também definir que quer buscar apenas na categoria 39328 (iphone), e apenas resultados entre R$1000 e R$2000. É claro, qualquer parâmetro é opcional, e você pode simplesmente usar da mesma forma que usa a outra loja atualmente.</p>
<p>Se posso usar da mesma forma, porque usar a <strong>Mega Loja</strong>? Existem outras vantagens! Uma delas é que você pode configurar uma lista de produtos recomendados em um menu lateral. Não importa por qual URL a pessoa entre na loja, os produtos recomendados aparecerão sempre os mesmos ali na lateral. Muito útil para recomendar os produtos da moda, ou para usar como acesso rápido para os mais vendidos.</p>
<p>Uma outra e útil diferença é na exibição dos produtos. A <strong>Mega Loja</strong> exibe os produtos com uma aparência melhorada, mais agradável. Em uma versão futura vai inclusive ser possível configurar as cores da loja, se quiser.</p>
<p>Ainda estou terminando de trabalhar no sistema, mas ele vai ser liberado para qualquer um utilizar em seu site, e é totalmente <strong>open source</strong>. Se você se preocupa pela loja do Lemos rodar as partes importantes no servidor dele sem você ver o que está acontecendo, meu script da <strong>Mega Loja</strong> é totalmente transparente, e roda 100% no seu próprio servidor.</p>
<p>Quem é desenvolvedor e sabe usar repositórios git pode dar olhada no projeto enquanto desenvolvo, pois a <a title="Mega Loja no github" href="http://github.com/bighi/mega-loja/tree/master">Mega Loja está no github</a>. Qualquer pessoa interessada em contribuir para o projeto é só entrar em contato. Até agora meu maior contribuidor foi o Xaxá, que escreve comigo no <a title="Tomate Cru" href="http://tomatecru.net/">Tomate Cru</a> e mantem o blog <a title="Quinquil - gadgets e quinquilharias" href="http://quinquil.com/">Quinquil</a>.</p>
<p>Mais notícias sobre a <strong>Mega Loja</strong> em breve.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/projetos/52/desenvolvendo-uma-mega-loja-do-mercado-livre/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Emprestei.com fora do ar! Mas voltará maior, melhor, e mais verde!</title>
		<link>http://leonardobighi.com/geral/49/empresteicom-fora-do-ar-mas-voltara-maior-melhor-e-mais-verde</link>
		<comments>http://leonardobighi.com/geral/49/empresteicom-fora-do-ar-mas-voltara-maior-melhor-e-mais-verde#comments</comments>
		<pubDate>Mon, 13 Oct 2008 16:34:06 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[emprestei]]></category>
		<category><![CDATA[emprestei.com]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=49</guid>
		<description><![CDATA[Se você é um dos usuários do meu site emprestei.com, provavelmente já percebeu o que está acontecendo: o site está fora do ar. E provavelmente ficará fora do ar por mais alguns dias. Em parte a culpa é minha, e em parte é do servidor.
Tudo começou quando o meu maravilhoso host me deu a possibilidade [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Se você é um dos usuários do meu site <strong>emprestei.com</strong>, provavelmente já percebeu o que está acontecendo: o site está fora do ar. E provavelmente ficará fora do ar por mais alguns dias. Em parte a culpa é minha, e em parte é do servidor.</p>
<p>Tudo começou quando o <a title="Dreamhost: Hospegagem Ilimitada" href="http://leonardobighi.com/geral/47/hospedagem-de-sites-sem-limite-de-espaco-e-transferencia">meu maravilhoso host</a> me deu a possibilidade de ser um dos primeiros transferidos para um novo servidor, diferente dos anteriores, que me permitiria ter espaço ilimitado, e transferência mensal ilimitada. Havia um aviso de que aplicativos poderiam deixar de funcionar na transferência, mas pra ter hospedagem ilimitada vale tudo, não? Aceitei na hora, e fiquei torcendo para tudo dar certo.</p>
<p>Depois disso, esqueci do assunto. Um ou dois dias depois a transferência de todos os meus sites para o novo servidor começou e, no mesmo dia, tive uma entrevista de emprego. Fui mostrar o <strong>emprestei.com</strong> para o entrevistador e, para minha surpresa, o site estava fora do ar. Uau, o que teria acontecido? Foi só quando voltava pra casa que me lembrei: a transferência pro novo servidor! Que droga. O <strong>Emprestei</strong> acabou saindo do ar, e meu repositório subversion também. No dia seguinte o repositório voltou, mas o Emprestei não.</p>
<p>Ainda não tive tempo de ver exatamente porque o <strong>Emprestei</strong> parou de funcionar depois que foi movido para o novo servidor, mas o que importa é que está dando algum problema com o <a title="Ruby on Rails" href="http://www.rubyonrails.org/">Rails</a> e ele não inicia mais. Eu poderia buscar o erro e colocar o site de volta no ar ainda hoje, mas resolvi fazer outra coisa.Já tem um tempo que eu estou querendo melhorar o Emprestei. Originalmente ele havia sido feito para participar do desafio <a title="Rails Rumble" href="http://railsrumble.com/">Rails Rumble</a>, onde você deve construir um site em no máximo 48 horas.</p>
<p>Pois é, o site inteiro foi feito em dois dias, e até que ficou bem feito. Mas ele foi feito bem antes de sair o Rails 2.0, que trouxe vários novos recursos, então eu já precisava melhorá-lo há tempos. Esse erro que o deixou fora do ar é a desculpa perfeita pra eu finalmente parar de enrolar e criar uma versão maior, melhor, e mais verde.</p>
<p>Acredito que a nova versão estará online ainda essa semana, e terá tudo que uma boa aplicação rails deve ter. Será todo RESTful, e ainda permitirá exportar em XML as coisas que você emprestou, para que outras aplicações possam ler sua lista de empréstimos e integrá-la a outros serviços.</p>
<p>Como diria o senhor <a title="Didi Mocó" href="http://desciclo.pedia.ws/wiki/Didi_Moc%C3%B3">Didi Mocó Sonrisal Colesterol Novalgino Mufumbo</a>, <em>aguarde e confie</em>.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/49/empresteicom-fora-do-ar-mas-voltara-maior-melhor-e-mais-verde/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hospedagem de sites sem limite de espaço e transferência!</title>
		<link>http://leonardobighi.com/geral/47/hospedagem-de-sites-sem-limite-de-espaco-e-transferencia</link>
		<comments>http://leonardobighi.com/geral/47/hospedagem-de-sites-sem-limite-de-espaco-e-transferencia#comments</comments>
		<pubDate>Sat, 11 Oct 2008 16:48:17 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=47</guid>
		<description><![CDATA[Eu já havia postado aqui antes sobre a Dreamhost, um dos melhores servidores de hospedagem de sites que eu já encontrei. No meu post anterior eu falava sobre como eles davam muito espaço em disco, e direito a uma transferência enorme, mas agora eles estão loucos! LOUCOS! A Dreamhost agora está oferecendo hospedagem com espaço [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Eu já havia postado aqui antes sobre a Dreamhost, um dos melhores <strong>servidores</strong> de <strong>hospedagem</strong> de sites que eu já encontrei. No meu post anterior eu falava sobre como eles davam muito espaço em disco, e direito a uma transferência enorme, mas agora eles estão loucos! LOUCOS! A Dreamhost agora está oferecendo <strong>hospedagem com espaço ilimitado</strong>, e transferência mensal ilimitada para os próximos 30 que assinarem. E o melhor é que eu e o pessoal do meu outro blog (<a title="Tomate Cru" href="http://tomatecru.net/" target="_blank">Tomate Cru</a>) ainda estamos oferecendo um <strong>desconto</strong> pra quem assinar!</p>
<p>Veja abaixo o <strong>cupom de desconto</strong>, e um guia de como assinar.</p>
<p><a href="http://www.tomatecru.net/wp-content/uploads/2008/10/dreamhost_unlimited.jpg"><img class="aligncenter size-full wp-image-1820" title="dreamhost_unlimited" src="http://www.tomatecru.net/wp-content/uploads/2008/10/dreamhost_unlimited.jpg" alt="Hospedagem com tudo ilimitado!!" /></a></p>
<p>O serviço de <strong>hospedagem</strong> da Dreamhost suporta PHP e Ruby, com banco de dados MySQL. Eles possuem um ótimo painel de controle, e possuem várias aplicações web prontas para instalar com um simples clique, incluindo o próprio sistema Wordpress que uso neste blog. Mas o melhor de tudo é que eles não são daqueles hosts chatos que proibem um monte de coisa. Na Dreamhost, você é bem livre, e ainda pode se conectar por SSH para realizar algumas operações mais rapidamente.</p>
<p style="text-align: center;">Código de desconto: <strong>TOMATECRU</strong>.</p>
<p>Se você está pensando em assinar, aqui vem o melhor de tudo: Nós do Tomate Cru estamos oferecendo um <strong>cupom de desconto</strong>! Ou seja, estamos anunciando uma hospedagem sem limites, e ainda vamos dar desconto! Basta assinar a dreamhost e usar o cupom <strong>TOMATECRU</strong>, e já ganhará desconto. Se você <a title="Assinar Dreamhost" href="https://signup.dreamhost.com/">assinar</a> o plano mensal, vai ganhar $50 dólares de desconto (mais de R$100 de desconto!!). E se <a title="Assinar Dreamhost" href="https://signup.dreamhost.com/">assinar</a> o plano anual, você ganha $67 dólares de desconto. Independente do plano que assinar, você ganha direito a um domínio internacional<strong> de graça</strong>!</p>
<p>Deixa eu explicar direito aqui&#8230; o plano anual custa $120 dólares. Nosso cupom dá um desconto de mais de 50%! O preço cai abaixo da metade! <a title="Assinar Dreamhost" href="https://signup.dreamhost.com/">Assine agora</a>! Eu quero saber o que você está esperando! Eles só tem mais 30 vagas pra <strong>hospedagem ilimitada</strong>, corra para assinar!</p>
<p>(Clique abaixo para ler o restante do texto e ver um guia passo a passo de como assinar uma <strong>hospedagem ilimitada</strong> na Dreamhost. Se não quiser ler o guia, a parte de inserir o <strong>cupom de Desconto</strong> está na etapa 7 do registro).</p>
<h3 style="text-align: center;">Como assinar a hospedagem da Dreamhost</h3>
<p style="text-align: left;">Este é um passo a passo de como assinar uma hospedagem ilimitada na dreamhost.</p>
<p style="text-align: left;">Primeiro, você vai acessar a página de <a title="Assinar Dreamhost" href="https://signup.dreamhost.com/">assinatura da dreamhost</a>. Você vai ver uma tela com duas opções. A prmeira é para assinar a <strong>hospedagem</strong> (o que você quer), e a segunda é para registrar um domínio. Clique na primeira opção, que diz <em>&#8220;host a domain&#8221;</em>.</p>
<p style="text-align: left;">A página vai mostrar então vários passos (steps) para concluir o processo. Vamos a um resumo de cada <em>step</em> do formulário.</p>
<p style="text-align: left;"><strong>Step 2 &#8211; Tipo de Pagamento</strong></p>
<p style="text-align: left;">Aqui você vai escolher com que frequência quer pagar. Mensalmente (monthly), Anualmente (Yearly), ou a cada 2 anos, 3 anos, 5 anos ou 10 anos. O pagamento mensal possui um custo de instalação de $50 dólares, mas com nosso cupom de desconto <strong>TOMATECRU</strong> você não vai pagar a instalação.</p>
<p style="text-align: left;"><strong>Step 3 &#8211; Private Server</strong></p>
<p style="text-align: left;">Um servidor privado serve apenas para aumentar o desempenho de sites com um volume de acessos muito, muito grande. Como provavelmente este não é o seu caso, basta ignorar essa parte.</p>
<p style="text-align: left;"><strong>Step 4 &#8211; Serviços Adicionais</strong></p>
<p style="text-align: left;">O passo 4 serve para adicionar alguns serviços extras. O serviço Google Apps integra algumas funcionalidades do Google no seu domínio, e é de graça. De resto, nenhum dos outros serviços aí é realmente necessário ou interessante para um site que está começando.</p>
<p style="text-align: left;"><strong>Step 5 &#8211; O Domínio</strong></p>
<p style="text-align: left;">Um domínio é o endereço pelo qual seu site vai ser acessado. O que você vai escolher aqui depende se vc já tem um domínio ou se quer registrar um novo (de graça). Se você não sabe bem o que é isso, ou se você tem um, então escolha a primeira opção. Se você já tem um domínio, escolha a terceira opção.</p>
<p style="text-align: left;">Então, no campo de texto, você vai preencher o domínio desejado. No campo abaixo, preencha o login que você quer usar na dreamhost.</p>
<p style="text-align: left;"><strong>Step 6 &#8211; Dados Pessoais</strong></p>
<p style="text-align: left;">Nesta etapa você precisa preencher seus dados pessoais. E-mail, senha, e outros dados como seu endereço. Preencha tudo com seus dados reais, pois serão usados na cobrança do cartão de crédito e para contato.</p>
<p style="text-align: left;"><strong>Step 7 &#8211; O Cupom de Desconto!</strong></p>
<p style="text-align: left;">Nesta etapa, no primeiro campo eles perguntam como você ficou sabendo da Dreamhost. Podem preencher com o endereço do blog, ou deixar em branco.</p>
<p style="text-align: left;">No segundo campo da etapa 7, é onde você pode preenchero <strong>cupom de desconto</strong>. Basta preencher com <strong>TOMATECRU</strong>, e ganhar o maior desconto da sua vida!</p>
<p style="text-align: left;">Bom, é isso. Agora é só marcar a caixinha ao lado do texto &#8220;I agree to abide&#8230;&#8221; e clicar no botão grande. Fim do processo, e você agora será um assinante do melhor serviço de <strong>hospedagem ilimitada</strong> que existe. Espero que goste.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/47/hospedagem-de-sites-sem-limite-de-espaco-e-transferencia/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uma treeview funcionando</title>
		<link>http://leonardobighi.com/geral/45/uma-treeview-funcionando</link>
		<comments>http://leonardobighi.com/geral/45/uma-treeview-funcionando#comments</comments>
		<pubDate>Wed, 18 Jun 2008 12:59:04 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=45</guid>
		<description><![CDATA[Vou agora demonstrar uma treeview do Yahoo User Library em funcionamento. Fiz uma página de teste, que contém uma estrutura simples em árvore.
Todo o código necessário pra fazer o treeview funcionar pode ser visto abrindo o código fonte da página no seu navegador, mas o trecho importante é este:
&#60;script type=&#8221;text/javascript&#8221;&#62;
//&#60;![CDATA[
function mytree_Init() {
var tree = new [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Vou agora demonstrar uma treeview do Yahoo User Library em funcionamento. Fiz uma <a title="YUI Treeview" href="http://leonardobighi.com/treeview.html" target="_blank">página de teste</a>, que contém uma estrutura simples em árvore.</p>
<p>Todo o código necessário pra fazer o treeview funcionar pode ser visto abrindo o código fonte da página no seu navegador, mas o trecho importante é este:</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
//&lt;![CDATA[<br />
function mytree_Init() {<br />
var tree = new YAHOO.widget.TreeView("mytree");<br />
var parent_top = new YAHOO.widget.TextNode({ label: "Grupo Empresarial XYZ", href:"#" }, tree.getRoot(), false);<br />
var empresa1 = new YAHOO.widget.TextNode({ label: "Empresa 1", href:"#" }, parent_top, false);</p>
<p>var filialA = new YAHOO.widget.TextNode({ label: "Filial A", href:"#" }, empresa1, false);<br />
new YAHOO.widget.TextNode({ label: "Gerente Geral", href:"#" }, filialA, false);<br />
new YAHOO.widget.TextNode({ label: "Gerente de Operações", href:"#" }, filialA, false);</p>
<p>var filialB = new YAHOO.widget.TextNode({ label: "Filial B", href:"#" }, empresa1, false);<br />
new YAHOO.widget.TextNode({ label: "Gerente Geral", href:"#" }, filialB, false);</p>
<p>var empresa2 = new YAHOO.widget.TextNode({ label: "Empresa 2", href:"#" }, parent_top, false);</p>
<p>tree.draw();<br />
}<br />
YAHOO.util.Event.addListener(window, "load", mytree_Init);<br />
//]]&gt;<br />
&lt;/script&gt;</p></blockquote>
<p>Apesar de um pouco feio, é um código simples que monta a estrutura da lista em árvore. Podemos tornar este código mais bonito? Sim! Usando as facilidades permitidas pelo Ruby on Rails, a mesma lista pode ser montada desta forma:</p>
<blockquote><p>var test_data =<br />
[0, { label: "Grupo Empresarial XYZ"},<br />
1, { label: "Empresa 1"},<br />
2, { label: "Filial A"},<br />
3, { label: "Gerente Geral"},<br />
3, { label: "Gerente de Operações"},<br />
2, { label: "Filial B"},<br />
3, { label: "Gerente Geral"},<br />
1, { label: "Empresa 2"}];</p></blockquote>
<p>Muito melhor, não é mesmo? Esta formação é possível quando criamos um método que vai pegar a estrutura acima e escrever o código javascript correspondente. Estas intruções de como criar este método no rails podem ser lidas <a href="http://sonjayatandon.com/07-2006/how-to-integrate-a-yui-tree-with-rails/">neste blog</a>.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/45/uma-treeview-funcionando/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CMS e listas em árvore no Rails</title>
		<link>http://leonardobighi.com/geral/44/cms-e-listas-em-arvore-no-rails</link>
		<comments>http://leonardobighi.com/geral/44/cms-e-listas-em-arvore-no-rails#comments</comments>
		<pubDate>Mon, 16 Jun 2008 20:10:12 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/?p=44</guid>
		<description><![CDATA[Recentemente me incumbiram da tarefa de pesquisar sobre CMS em Rails, e algum método eficiente de apresentar conteúdo em formato de árvore (&#8221;treeview&#8221;) também em Rails. Após um tempo de pesquisa, encontrei boas soluções para ambos os casos.
No caso da exibição em Treeview, a melhor solução é utilizar a biblioteca Yahoo User Interface, ou YUI [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Recentemente me incumbiram da tarefa de pesquisar sobre CMS em Rails, e algum método eficiente de apresentar conteúdo em formato de árvore (&#8221;treeview&#8221;) também em Rails. Após um tempo de pesquisa, encontrei boas soluções para ambos os casos.</p>
<p>No caso da exibição em Treeview, a melhor solução é utilizar a biblioteca Yahoo User Interface, ou YUI para os íntimos. Ela fornece todo o mecanismo necessário para a criação deste tipo de lista, e o Rails nos fornece os meios práticos e rápidos de gerar dinamicamente estas listas. Todo o procedimento para usar o treeview da YUI em conjunto com o Rails pode ser visto <a title="YUI Tree With Rails" href="http://sonjayatandon.com/07-2006/how-to-integrate-a-yui-tree-with-rails/">neste endereço</a>. Os Helpers do Rails nos dão o meio necessário de tornar este processo o mais indolor possível. O resultado visual é como na imagem abaixo abaixo:</p>
<p><img class="aligncenter size-medium wp-image-43" title="treeview" src="http://leonardobighi.com/wp-content/uploads/2008/06/treeview-180x300.jpg" alt="YUI Tree view" width="180" height="300" /></p>
<p>Quanto aos CMS, o mais usado parece ser o <a title="Radiant CMS" href="http://www.radiantcms.org">Radiant</a>, usado em sites como na da <a title="SurgeWorks" href="http://surgeworks.com/">SurgeWorks</a>, empresa voltada ao desenvolvimento web com Ruby On Rails. Entre suas qualidades, o Radiant apresenta uma interface elegante, possibilidade de organizar páginas hierarquicamente, sistema de caching, gerenciamento de permissões de usuários, e um sistema de plugins de comportamento. Este CMS possui suporte a um sistema de tags especial, chamado Radius, e também suporta <a title="Textile" href="http://www.textism.com/tools/textile/">Textile</a>, <a title="Markdown" href="http://daringfireball.net/projects/markdown/">Markdown</a>, e nosso antigo conhecido HTML na hora de desenvolver o conteúdo das páginas. Radiant CMS é distribuído sob a <a title="MIT License" href="http://dev.radiantcms.org/radiant/browser/trunk/radiant/LICENSE">MIT License</a>.</p>
<p>Outros sistemas de CMS podem ser encontrados na Web, mas nenhum deles parece maduro o suficiente pra ser usado em um site de producão de uma empresa. Mas caso haja curiosidade, vale a pena citar o <a title="Typo Blog CMS" href="http://www.typosphere.org/">Typo</a> e <a title="Mephisto CMS" href="http://mephisto.stikipad.com/">Mephisto</a> pra quem quer ter um blog, e <a title="Streamlined CMS" href="http://streamlined.relevancellc.com/">Streamlined</a> e <a title="Rubricks CMS" href="http://rubricks.org/index_en.html">Rubricks</a> para quem está atrás de um site mais tradicional.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/44/cms-e-listas-em-arvore-no-rails/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Vista comeu meus arquivos&#8230;</title>
		<link>http://leonardobighi.com/geral/38/windows-vista-comeu-meus-arquivos</link>
		<comments>http://leonardobighi.com/geral/38/windows-vista-comeu-meus-arquivos#comments</comments>
		<pubDate>Tue, 15 Apr 2008 17:24:03 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/geral/38/windows-vista-comeu-meus-arquivos</guid>
		<description><![CDATA[Uma pausa na série de artigos sobre o desenvolvimento web pra dizer uma coisa: eu odeio o Windows Vista. Não, sério&#8230; ódio mortal&#8230;
Nesta última sexta-feira minha placa de rede morreu-se. Acabou-se do nada, foi para o céu dos hardwares junto dos meus trinta e oito drives de CD e DVD*. Como estava sem internet, e [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Uma pausa na série de artigos sobre o desenvolvimento web pra dizer uma coisa: eu odeio o <a title="Windows Vista" href="http://pt.wikipedia.org/wiki/Windows_vista" target="_blank"><strong>Windows Vista</strong></a>. Não, sério&#8230; ódio mortal&#8230;</p>
<p>Nesta última sexta-feira minha placa de rede morreu-se. Acabou-se do nada, foi para o céu dos hardwares junto dos meus trinta e oito drives de CD e DVD<strong>*</strong>. Como estava sem internet, e um computador sem internet é como um carro sem pneus, resolvi instalar o <strong>Windows</strong> no meu PC.</p>
<p align="left"><img src="http://leonardobighi.com/wp-content/uploads/2008/04/bad_vista.png" alt="Bad Vista" align="left" />Nunca gostei do <a title="Windows Vista" href="http://pt.wikipedia.org/wiki/Windows_vista" target="_blank"><strong>Windows Vista</strong></a>, mas como possuo duas cópias originais dele e nenhuma cópia original do <strong>Windows XP</strong>, resolvi instalar o Vista. Eu tinha deixado uma partição de 60GB no meu HD pra instalar o windows algum dia, e essa era a hora. Inseri o DVD do Vista, iniciei a instalação, preenchi o serial e já vi logo a frase dizendo &#8220;copiando arquivos&#8221;.</p>
<p>Fiquei encucado, porque ele não tinha nem perguntado em que partição eu queria instalar, mas deixei. Estava pensando &#8220;ahh, ele não apagaria minhas partições atuais assim do nada, sem nem perguntar ou dar algum aviso&#8221;.</p>
<p>Ah, como sou ingênuo.</p>
<p>Terminou a instalação, abri o meu computador, e vi lá só uma letrinha C:, com 308Gb livres. Quase tive um ataque cardíaco. SEM PEDIR PERMISSÃO, SEM AVISAR, sem nem apitar a campainha irritante do gabinete, o <strong>Windows Vista</strong> apagou tudo do meu HD e se instalou em uma única partição do tamanho total do HD.</p>
<p>Não, sério&#8230; maldita microsoft. O <a title="Linux" href="http://pt.wikipedia.org/wiki/Linux" target="_blank">Linux</a> há anos permite que você escolha e até modifique as partições antes de instalar. Se não querer permitir isso, podiam ao menos dizer que seus dados serão apagados se instalar o <strong>Windows Vista</strong>. Essa microsoft é fogo, é uma falta de respeito com os usuários que não é brincadeira não.</p>
<p>PS: A parada dos DVDs é quase verdade. Eu tenho meio que um toque de midas, mas em vez de transformar coisas em ouro, eu transformo drives de DVD em porta-copos.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/geral/38/windows-vista-comeu-meus-arquivos/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Que caminho seguir no desenvolvimento web? (parte 2)</title>
		<link>http://leonardobighi.com/opiniao/37/que-caminho-seguir-no-desenvolvimento-web-parte-2</link>
		<comments>http://leonardobighi.com/opiniao/37/que-caminho-seguir-no-desenvolvimento-web-parte-2#comments</comments>
		<pubDate>Wed, 09 Apr 2008 16:28:22 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Opinião]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/opiniao/37/que-caminho-seguir-no-desenvolvimento-web-parte-2</guid>
		<description><![CDATA[Esta é a continuação de outro artigo. Se não leu o primeiro, leia Que caminho seguir no desenvolvimento web? (parte 1).
Deixando de lado o desenvolvimento para desktop que abordei no capítulo anterior, vamos para o tema principal do artigo, desenvolver para a web. Provavelmente você já viu alguém falar que a web é o futuro, [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Esta é a continuação de outro artigo. Se não leu o primeiro, leia <a title="Que caminho seguir no desenvolvimento web? (parte 1)" href="http://leonardobighi.com/opiniao/35/que-caminho-seguir-no-desenvolvimento-web-parte-1">Que caminho seguir no desenvolvimento web? (parte 1)</a>.</p>
<p>Deixando de lado o desenvolvimento para desktop que abordei no capítulo anterior, vamos para o tema principal do artigo, desenvolver para a web. Provavelmente você já viu alguém falar que <strong>a web é o futuro</strong>, e todo este blá blá blá que não vou repetir aqui, apesar de achar que é verdade. Vale ressaltar todos os pontos fortes, que é a facilidade de escrever um aplicativo que vai rodar em todo tipo de Sistema Operacional, e até em celulares, sem muito esforço.</p>
<p>Dentro da área do desenvolvimento web existem tantas opções que é fácil ficar perdido. Você pode desenvolver programando em <strong>Java, ASP, .NET, PHP, Python, Ruby</strong>, pra citar as principais. Pode também ser o cara que programa scripts que rodarão no lado do cliente, que é o caso do javascript. Pode desenvolver aplicações irritantes em flash ou silverlight. Ou pode ser <span style="text-decoration: line-through;">o gay</span> o cara que desenvolve &#8220;a cara&#8221; do site, que é o <span style="text-decoration: line-through;">gay</span> designer. Caraca, quantas opções.</p>
<h2>Conhecimentos Básicos</h2>
<p>Existem algumas coisas que você deveria saber, independente de qual área dentro do webdesign você escolheu. Todos os envolvidos no processo deveriam ter uma boa noção de <strong>XHTML</strong> e <strong>CSS</strong>. Sim, eu disse <strong>XHTML</strong>. Esqueça o <strong>HTML</strong>, ele é feio, antiquado, bugado, e o principal: não tem regras rígidas, o que faz com que cada browser interprete o HTML do seu próprio jeito. O XHTML está aí há anos, aprenda.</p>
<p>Porque precisam desse conhecimento? Bom, porque todo mundo envolvimento no desenvolvimento web vai se deparar, mais cedo ou mais tarde, com a estrutura básica de toda página, que é o <strong>XHTML</strong> (pro conteúdo) e o <strong>CSS</strong> (pra aparência deste conteúdo).</p>
<p>Não importa em que linguagem você está desenvolvendo seu site, tudo aquilo sempre vai ser convertido pra XHTML na hora de enviar pro navegador do visitante.</p>
<h2>As Camadas do Site</h2>
<p>Todo site geralmente envolve três principais áreas na parte do desenvolvimento: <strong>linguagem de servidor</strong>, <strong>linguagem de cliente</strong>, e <strong>apresentação</strong>.</p>
<p><strong>A linguagem de servidor</strong>, ou <strong>server-side scripting</strong>, é a linguagem que vai rodar &#8220;por trás dos panos&#8221;, fornecendo a lógica principal da aplicação. Funciona assim, sempre que o usuário faz um request (entra numa página, clica num link, etc), o pedido é enviado pro servidor. A linguagem server-side, então, recebe o request e faz o processamento. Depois, transforma o resultado final num <strong>XHTML</strong> e envia pro navegador. é a linguagem server-side que vai verificar se o usuário está logado, vai buscar informações no banco de dados, e por aí vai.</p>
<p>Como a linguagem server-side processa as coisas ANTES de enviar para o navegador, isso significa que uma vez que a página foi enviada ao navegador do usuário, não há mais nada que a linguagem server-side possa fazer até um novo request seja enviado. Ou seja, não é possível usar estas linguagens para manipular a página do usuário em tempo real. Para o usuário, a linguagem server-side não importa, e ele nem tem como descobrir qual linguagem está sendo usada.</p>
<p><strong>A linguagem de cliente</strong>, ou <strong>client-side scripting</strong>, é a linguagem que é executada no próprio computador do usuário, e por isso é usada nas situações em que a linguagem server-side não tem alcance. Entre as linguagens client-side, temos o <strong>javascript</strong>, que é a única linguagem que realmente roda no navegador do usuário. Através do <strong>javascript</strong> é possível manipular a página do usuário diretamente, fazendo coisas dinâmicas que vão desde mudar o valor de um campo do formulário até criar uma área redimensionável que pode ser arrastada pela página.</p>
<p>Como todo o código javascript está no próprio navegador, o usuário pode ver o código e pode também, através do uso de uns programas, manipular o código. Isso faz com que as linguagens client-side sejam <strong>inseguras</strong> pra fazer coisas como acessar um banco de dados. Juntas, as linguagens server-side e client-side se complementam.</p>
<p><strong>Existe mais uma forma de client-side</strong>, que são os aplicativos feitos em <a title="Adobe Flash" href="http://pt.wikipedia.org/wiki/Adobe_Flash"><strong>Flash</strong></a> ou <a title="Microsoft Silverlight" href="http://pt.wikipedia.org/wiki/Silverlight"><strong>Silverlight</strong></a>. Estes podem ser muito irritantes para o usuário, e deveriam ser usados apenas em situações bem específicas, como exibir vídeos ou criar um player de música.</p>
<p>Por último, <strong>no lado da apresentação</strong>, temos a parte em <strong>XHTML</strong> e <strong>CSS</strong>. Os navegadores são feitos para entender XHTML e HTML, e por isso todo conteúdo deve vir neste formato. O designer fica responsável por organizar os dados num XHTML, e criar um arquivo CSS que vai definir a aparência destes dados.</p>
<p>Na próxima parte, começarei a falar sobre cada linguagem específica, na área da web. Até lá&#8230;</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/opiniao/37/que-caminho-seguir-no-desenvolvimento-web-parte-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Que caminho seguir no desenvolvimento web? (parte 1)</title>
		<link>http://leonardobighi.com/opiniao/35/que-caminho-seguir-no-desenvolvimento-web-parte-1</link>
		<comments>http://leonardobighi.com/opiniao/35/que-caminho-seguir-no-desenvolvimento-web-parte-1#comments</comments>
		<pubDate>Mon, 07 Apr 2008 21:41:30 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Opinião]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/opiniao/35/que-caminho-seguir-no-desenvolvimento-web-parte-1</guid>
		<description><![CDATA[Sei que andei um pouco relaxado em relação a esse blog, mas um monte de coisa aconteceu. Entre elas o fato de eu ter ficado mais de 2 meses sem computador, porque meu notebook deu o segundo defeito em menos de 3 meses e acabei me livrando dele. Mas voltando ao assunto do post&#8230;
Recebi uma [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Sei que andei um pouco relaxado em relação a esse blog, mas um monte de coisa aconteceu. Entre elas o fato de eu ter ficado mais de 2 meses sem computador, porque meu notebook deu o segundo defeito em menos de 3 meses e acabei me livrando dele. Mas voltando ao assunto do post&#8230;</p>
<p>Recebi uma sugestão do cara que é provavelmente meu mais antigo leitor aqui no blog, o Victor Mendes. E a sugestão dele é mesmo muito boa. Tão boa que resolvi criar uma série só com isso. O Victor, assim como muitas outras pessoas, está na faculdade, aprendendo essa coisa complicada que é a programação, e <strong>não sabe muito bem o caminho que vai escolher</strong>. O principal motivo disso, claro, é que <strong>as opções existentes simplesmente são mal explicadas</strong>, cheias de boatos e meias informações.</p>
<p align="center"><img src="http://leonardobighi.com/wp-content/uploads/2008/04/developer.jpg" alt="Developer" /></p>
<p>O melhor meio de resolver isso, então, é mostrar tudo o que sei dos caminhos a tomar, com seus prós e contras. Eu queria deixar claro pra todo mundo que tudo que vou falar aqui é sem frufrus, curto e grosso.  Você pode discordar das coisas que falo, mas não me venha com papo de fanboy de que &#8220;minha linguagem é a melhor de todas&#8221;, porque não tenho mais paciência pra esse tipo de gente.</p>
<p>O foco vai ser o desenvolvimento web, mas antes disso preciso falar sobre duas linguagens muito usadas no desenvolvimento de aplicações desktop: <strong>C++</strong> e <strong>Java</strong>. Principalmente porque você VAI ver estas linguagens na faculdade, e nada melhor do que ouvir opiniões sobre elas.</p>
<h2>C++</h2>
<p>Pessoalmente eu classifico as linguagens de programação entre dois extremos. Se imaginarmos que toda linguagem é um veículo que serve pra te levar do Rio de Janeiro pra São Paulo, podemos imaginar os extremos assim:</p>
<p>Temos as linguagens são como um caça. Se você souber os botões certos, elas podem te levar pra São Paulo bem rápido. Mas saber os botões certos é o principal problema. Quando você entra num caça e olha pro painel, vê que tem tanto botão, tanto mostrador, tantas alavancas que é complicado até mesmo fazer aquilo começar a se mover. Por outro lado, temos as linguagens que são como um trem. Basta entrar na cabine, empurrar a alavanca pra frente e garantir de que está nos trilhos certos, e você chega a São Paulo.</p>
<p>C++, pra você entender, é o caça. Não só o caça, mas é o caça com a maior quantidade de botões, painéis  e alavancas. Pra você realmente fazer um caça C++ levantar vôo, voar rápido e chegar em São Paulo você precisa ser um senhor programador, e tem uma paciência de Jó. O código C++ é visualmente feio, cheio de códigos ilegíveis, você tem que ficar se preocupando com os malditos ponteiros&#8230; e mesmo que aprenda tudo isso, as ofertas de emprego são poucas.</p>
<p>É sério, as pessoas preferem outras linguagens pra desenvolver programas desktop, justamente pra evitar o trabalho extra e a dor de cabeça. Apesar disso tudo, nas mãos do programador certo, os programas C++ podem ser bem leves e rápidos.</p>
<h2>Java</h2>
<p>Ah, o java, o queridinho das empresas.  Não posso garantir daqui a muitos anos no futuro, mas sabendo Java você terá facilidade de arranjar emprego, já que a impressão que se dá é de que toda maldita empresa usa java. Voltando à nossa analogia, Java ainda está muito mais pro lado do caça, só que é um caça com menos botões e alavancas. A desvantagem? É um caça com um único motor, e esse motor foi adaptado de um Fusca &#8216;87.</p>
<p>A menos que você tenha um computador bem rápido e moderno, os programas Java vão ser pesaaaaados lentos. Mas mesmo assim são bastante usados. Estou falando sério, nos computadores aqui onde trabalho eu não posso nem sonhar em usar uma IDE feita em java, porque basta abrir a IDE que todo o computador pára.</p>
<p>Mas se você quer seguir o caminho do desenvolvimento pra desktop, muito provavelmente vai ter que aprender Java. Ao menos fique feliz que Java não é C++, e você não terá que ficar se preocupando com os ocultismos bizarros necessários pra se fazer um programa em C++.</p>
<h2>E na web?</h2>
<p>Bom, escrevi demais&#8230; isso fica pras próximas partes.</p>
<p>Escrevi outras partes deste artigo. Leia aqui a <a title="Que caminho seguir no desenvolvimento web? (parte 1)" href="http://leonardobighi.com/opiniao/37/que-caminho-seguir-no-desenvolvimento-web-parte-2">parte 2</a>, e a parte 3.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/opiniao/35/que-caminho-seguir-no-desenvolvimento-web-parte-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Os 7 maiores erros no design de aplicações</title>
		<link>http://leonardobighi.com/usabilidade/33/os-7-maiores-erros-no-design-de-aplicacoes</link>
		<comments>http://leonardobighi.com/usabilidade/33/os-7-maiores-erros-no-design-de-aplicacoes#comments</comments>
		<pubDate>Wed, 27 Feb 2008 02:13:48 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Usabilidade]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/usabilidade/33/os-7-maiores-erros-no-design-de-aplicacoes</guid>
		<description><![CDATA[Recentemente Jakob Nielsen escreveu um artigo sobre os maiores erros no design de aplicações. O texto original dele se referia a aplicações standalone (os programas que você roda no seu computador), mas seus erros podem muito bem ser transportados para o mundo das aplicações na web. Baseado na sua lista, compilei os 7 maiores erros [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Recentemente Jakob Nielsen <a href="http://www.useit.com/alertbox/application-mistakes.html" title="Top-10 Application-Design Mistakes">escreveu um artigo</a> sobre os maiores erros no design de aplicações. O texto original dele se referia a aplicações standalone (os programas que você roda no seu computador), mas seus erros podem muito bem ser transportados para o mundo das aplicações na web. Baseado na sua lista, compilei os 7 maiores erros no design de aplicações web.</p>
<h3>1 &#8211; Interface fora do padrão</h3>
<p>Os elementos padrão de interface &#8211; links, botões e radio buttons &#8211; são as unidades lexicais que formam o vocabulário do design. Mudar a aparência ou comportamento destes elementos é como introduzir num texto palavras numa língua estranha. Alguém pode até entender, mas <em>det vil gøre læserne forvirrede</em> (ou, em português, &#8220;fazer isso vai confundir seus usuários&#8221;).</p>
<p>Mesmo que você seja capaz de mudar a interface padrão e torná-la ainda melhor que a original, muitos usuários se sentirão confusos com ela, justamente por ser diferente das interfaces que já viram até agora, e diferente do que esperam.</p>
<h3>2 &#8211; Inconsistência</h3>
<p>A confusão acontece quando uma aplicação usa diferentes palavras para se referir à mesma coisa, ou quando usa uma palavra para se referir a várias coisas diferentes. Quando você se refere a algo com um nome numa página e com outro nome em outra página do mesmo site, seu usuário fica confuso.</p>
<p>Usar a mesma palavra para a mesma coisa no mesmo lugar torna as coisas mais fáceis.</p>
<p>Lembre-se: <strong>diferente = difícil</strong>.</p>
<h3>3 &#8211; Nenhuma funcionalidade perceptível</h3>
<p>Por &#8220;funcionalidade&#8221;, eu me refiro ao que cada elemento da interface pode fazer. Um checkbox tem a funcionalidade de marcar e desmarcar. Uma barra de rolagem tem a funcionalidade de arrastar pra cima ou pra baixo. <em>Funcionalidades perceptíveis</em> são as funcionalides que você percebe só de olhar para um elemento da interface.</p>
<p>Numa aplicação com interface visual, onde tem tanta coisa colorida e diferente na tela, é muito importante que o usuário possa entender as funcionalidades dos elementos só de olhar para eles. Os que mais sofrem com isto são os elementos de &#8220;arrastar e soltar&#8221;, que geralmente não fica claro para o usuário o que ele pode arrastar, pra onde pode arrastar ou o que acontece quando o arrasta.</p>
<h3>4 &#8211; Nenhum feedback</h3>
<p>Um dos pontos mais importantes de qualquer interface é oferecer algum tipo de feedback, um retorno ao usuário como resultado de sua ação. É necessário deixar claro para o usuário três coisas: o estado atual da aplicação, como a ação do usuário foi interpretada, e o que está acontecendo.</p>
<p>Sites feitos em ajax que não possuem indicativos visuais são um belo exemplo disso. O usuário clica no botão e a ação está sendo processada em paralelo por trás dos panos, mas nada é mostrado para o usuário e ele se pergunta se o botão tem algum defeito ou se o site está lento.</p>
<h3>5 &#8211; Péssimas mensagens de erro</h3>
<p>Mais cedo ou mais tarde algum erro acontece, e é preciso explicar ao usuário exatamente o que aconteceu, e como evitar que aconteça de novo. Até hoje temos um número enorme de aplicações com mensagens enigmáticas de erro ou, pior, apenas uma mensagem do tipo &#8220;erro 42&#8243;.</p>
<h3>6 &#8211; Pedir a mesma informação duas vezes</h3>
<p>O usuário só deveria ter que inserir cada informação apenas uma vez. Os computadores são muito bons em lembrar coisas, e se o usuário precisa inserir mais de uma vez uma informação é porque algum programador não fez seu trabalho muito bem.</p>
<h3>7 &#8211; Nenhum valor padrão</h3>
<p>Sempre que possível, todo tipo de elemento que necessite de algum input do usuário deveria ter valores padrão já preenchidos. Isso traz muitas vantagens, como <strong>acelerar a interação</strong> do usuário com a aplicação, <strong>demonstrar</strong> para o usuário qual o valor mais provável para ensinar através de exemplo, e <strong>direcionar</strong> usuários novatos para um resulto mais seguro ou comum.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/usabilidade/33/os-7-maiores-erros-no-design-de-aplicacoes/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A faculdade nos prepara para estarmos despreparados para o mercado de trabalho</title>
		<link>http://leonardobighi.com/opiniao/32/a-faculdade-nos-prepara-para-estarmos-despreparados-para-o-mercado-de-trabalho</link>
		<comments>http://leonardobighi.com/opiniao/32/a-faculdade-nos-prepara-para-estarmos-despreparados-para-o-mercado-de-trabalho#comments</comments>
		<pubDate>Mon, 25 Feb 2008 02:10:06 +0000</pubDate>
		<dc:creator>Bighi</dc:creator>
				<category><![CDATA[Opinião]]></category>

		<guid isPermaLink="false">http://leonardobighi.com/opiniao/32/a-faculdade-nos-prepara-para-estarmos-despreparados-para-o-mercado-de-trabalho</guid>
		<description><![CDATA[Eu sempre achei curioso como, na faculdade, eles têm todo um cuidado especial de nos ensinar de uma forma que estejamos despreparados para o mercado de trabalho ao terminar o curso. O pouco que eles realmente nos ensinam, fazem de uma forma muito extensa, demorada, desajeitada.
Tenho prestado atenção há tempos num vício que a faculdade [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Eu sempre achei curioso como, na faculdade, eles têm todo um cuidado especial de nos ensinar de uma forma que estejamos despreparados para o mercado de trabalho ao terminar o curso. O pouco que eles realmente nos ensinam, fazem de uma forma muito extensa, demorada, desajeitada.</p>
<p>Tenho prestado atenção há tempos num vício que a faculdade cria em nós de sempre responder a uma avaliação da forma mais extensa possível, pra não dizer que é de forma &#8220;enrolativa&#8221; (sim, eu gosto de neologismos). Não basta apenas responder o que foi perguntado, para ganharmos a nota máxima precisamos dar três voltas em torno do assunto a passos arrastados, nos aproximar com cautela e só então dar a resposta.</p>
<p>No mundo de verdade lá fora, no mundo real das empresas onde os profissionais estão sempre correndo contra o relógio, os problemas devem ser solucionados de forma rápida, direta. As pessoas precisam ir direto ao ponto. Nas universidades, por algum motivo completamente desconhecido, parece que todos os professores decidiram em uníssono seguir o caminho completamente oposto. Uma solução direta para um problema é punida com uma nota apenas parcial. Você não consegue a nota máxima sem enrolar e resolver o problema de um jeito extenso e demorado.</p>
<p>Até reparei isso recentemente ao fazer uma entrevista de emprego. Sorte minha que foi com algo simples. Ao ter que escrever uma query em <a href='http://lucrandonarede.com/jc/p/5749/215/sql'>SQL</a>, eu precisava unir duas tabelas. Eu poderia ter colocado uma simples vírgula entre os nomes da tabela, e eu tinha noção disso, mas viciado pelas avaliações de faculdade eu tive todo o trabalho extre de escrever por extenso &#8220;INNER JOIN&#8221; para uni-las. Pior ainda que o entrevistador citou este fato, me lembrando que teria sido melhor ter apenas colocado a vírgula.</p>
<p>Ao sair da faculdade, todos os vícios que eles levam 4 (ou 5) anos pra enfiar na nossa cabeça precisam ser eliminados. É preciso botar muita coisa pra fora e reaprender a fazer muita coisa do jeito certo, sem enrolar. E depois acham estranho quando as empresas reclamam que muita gente da área de TI sai da faculdade sem estar apto pra trabalhar&#8230;</p>
<p>PS: Este post saiu muito mais fraco do que eu esperava. Provavelmente é por estar há tanto sem escrever. Acreditem que os próximos textos vão ser melhores. Eu juro pelo Bill Gates mortinho.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://leonardobighi.com/opiniao/32/a-faculdade-nos-prepara-para-estarmos-despreparados-para-o-mercado-de-trabalho/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
