<?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>Bruno Wiltemburg</title>
	<atom:link href="http://www.brunoew.com.br/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brunoew.com.br/blog</link>
	<description>portfolio, dicas e tutoriais sobre desenvolvimento web</description>
	<lastBuildDate>Wed, 26 Sep 2012 01:29:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Node.js</title>
		<link>http://www.brunoew.com.br/blog/node-js/</link>
		<comments>http://www.brunoew.com.br/blog/node-js/#comments</comments>
		<pubDate>Wed, 26 Sep 2012 01:15:03 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[Node.js]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=110</guid>
		<description><![CDATA[Fala galera, voltando a publicar alguns artigos aqui no blog. Estou meio sem tempo ultimamente devido à alguns projetos que estou envolvido, mas vou tentar abordar aqui a instalação do servidor Node.js no Ubuntu. O que é este tal de Node.js? Node.js é uma plataforma construida em cima do motor V8 de Javascript criado pelo [...]]]></description>
			<content:encoded><![CDATA[<p>Fala galera, voltando a publicar alguns artigos aqui no blog. Estou meio sem tempo ultimamente devido à alguns projetos que estou envolvido, mas vou tentar abordar aqui a instalação do servidor Node.js no Ubuntu. </p>
<h4>O que é este tal de Node.js? </h4>
<p>Node.js é uma plataforma construida em cima do motor V8 de Javascript criado pelo Google, que funciona do lado do servidor. Você pode ter pensado assim: &#8220;Javascript do lado do servidor? Tá maluco?&#8221; Não estou ficando maluco e sim, você leu isto certo: &#8220;Javascript do lado do servidor&#8221;. Isto significa que podemos trabalhar com programação orientada a eventos no servidor. </p>
<p>Este primeiro artigo servirá como base para os próximos que tentarei publicar na sequência. Então, mãos a obra:</p>
<p><span id="more-110"></span></p>
<p>Para instalar node.js no Ubuntu, você precisará de algumas bibliotecas, para poder compilar o source:<br />
Abra o terminal e digite:<br />
<code>sudo apt-get install g++ curl libssl-dev apache2-utils</code></p>
<p>Depois de instaladas as bibliotecas, vamos baixar o source no site oficial: <a href="http://nodejs.org/" rel="nofollow" target="_blank">www.nodejs.org</a> e extraia o conteúdo do arquivo:<br />
<code>tar -xf node-v0.8.10.tar.gz</code><br />
Acesse a pasta criada e execute os seguintes comandos:<br />
<code>./configure<br />
make<br />
sudo make install</code></p>
<p>Pronto! O Node.js está instalado em sua máquina Ubuntu.</p>
<p>No próximo artigo iremos construir uma aplicação básica com node.js. Até lá!</p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Gerando QR Code com Google Charts API</title>
		<link>http://www.brunoew.com.br/blog/php-gerando-seu-qr-code-com-google-charts-api/</link>
		<comments>http://www.brunoew.com.br/blog/php-gerando-seu-qr-code-com-google-charts-api/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 20:38:46 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google api]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[qrcode]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=74</guid>
		<description><![CDATA[O QR Code é um tipo de código de barras em 2D, que pode ser escaneado facilmente utilizando um celular moderno. Este código pode armazenar uma determinada URL ou um texto, por exemplo. Neste rápido tutorial veremos como utilizar a API de gráficos do Google (Google Charts API) para gerar seu próprio QR Code de [...]]]></description>
			<content:encoded><![CDATA[<p>O QR Code é um tipo de código de barras em 2D, que pode ser escaneado facilmente utilizando um celular moderno. Este código pode armazenar uma determinada URL ou um texto, por exemplo. </p>
<p>Neste rápido tutorial veremos como utilizar a API de gráficos do Google (Google Charts API) para gerar seu próprio QR Code de maneira bem simples.</p>
<p><span id="more-74"></span></p>
<p>No site da <a title="Google Charts API" href="http://code.google.com/intl/pt-BR/apis/chart/infographics/docs/qr_codes.html" target="_blank">Google Charts API </a>encontramos as informações necessárias para fazer uma requisição via HTTP da geração do código QR Code. Vejamos algumas opções disponíveis para utilizarmos como parâmetros:</p>
<table cellspacing="code" cellpadding="1">
<tbody>
<tr>
<th scope="col">Parâmetro</th>
<th scope="col">Descrição</th>
</tr>
<tr>
<td><em>cht=qr</em></td>
<td>Indica que o tipo de gráfico a ser gerado é um QR Code</td>
</tr>
<tr>
<td><em>chs=&lt;width&gt;x&lt;height&gt;</em></td>
<td>Dimensões da imagem a ser gerada.</td>
</tr>
<tr>
<td><em>chl=&lt;data&gt;</td>
<td>Os dados que necessitamos armazenar em nosso QR Code. Estes dados podem ser uma URL, um texto (de até 2 Kb de informação)</td>
</tr>
<tr>
<td><em>choe=&lt;output_encoding</em>&gt;<br />
<em>[ opcional ]</em><br />
</code></td>
<td>Como será codificado o conteúdo. Os valores possíveis são:</p>
<ul>
<li>UTF-8 [Padrão]</li>
<li>Shift_JIS</li>
<li>ISO-8859-1</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Sabendo os parâmetros que são necessários, vamos ao PHP, criar uma função que faça a requisição do QR Code.</p>
<pre><code>
&lt;?php
   function getQRCode($texto, $width = 150, $height = 150) {
      $texto  = urlencode($texto);
      $imagem  = '&lt;img src="http://chart.apis.google.com/chart?chs='.$width.'x'.$height.'&amp;cht=qr&amp;chl='.$texto.'" alt="QR code" width="'.$width.'" height="'.$height.'"/&gt;';
      return $image;
   }
   // Criada a função, vamos chamá-la para exibir a imagem gerada com nosso QR Code
   echo getQRCode("http://brunoew.com.br/blog");
?&gt;</code></pre>
<p>O resultado deverá ser semelhante à este:</p>
<p><img src="http://chart.apis.google.com/chart?chs=150x150&amp;cht=qr&amp;chl=http:%2F%2Fbrunoew.com.br%2Fblog" alt="QR code" width="150" height="150" /></p>
<p>Até a próxima!</p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/php-gerando-seu-qr-code-com-google-charts-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Design Patterns &#8211; Padrões de Projeto e Desenvolvimento para aplicações em PHP</title>
		<link>http://www.brunoew.com.br/blog/design-patterns-padroes-de-projeto-e-desenvolvimento-para-aplicacoes-em-php/</link>
		<comments>http://www.brunoew.com.br/blog/design-patterns-padroes-de-projeto-e-desenvolvimento-para-aplicacoes-em-php/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 23:06:30 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[designpatterns]]></category>
		<category><![CDATA[padrões de projeto]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projetos]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=55</guid>
		<description><![CDATA[A primeira coisa que nos vem à cabeça quando pensamos em &#34;Design Patterns&#34; ou &#34;Padrões de Projeto&#34; são diagramas extremamente complexos e lógicas mirabolantes. Mas você sabe o que realmente são os Design Patterns? Você sabia que eles podem salvar a sua vida (ou sua carreira)? Nesta série de artigos iremos abordar a utilização de [...]]]></description>
			<content:encoded><![CDATA[<p>
    A primeira coisa que nos vem à cabeça quando pensamos em &quot;Design Patterns&quot; ou &quot;Padrões de Projeto&quot; são diagramas extremamente complexos e lógicas mirabolantes. Mas você sabe o que realmente são os <i>Design Patterns</i>? Você sabia que eles podem salvar a sua vida  (ou sua carreira)?
</p>
<p>
   Nesta série de artigos iremos abordar a utilização de padrões de projeto para aplicações web, mais especificamente, para PHP. Neste primeiro artigo, veremos o que são e como funcionam os <i>Design Patterns</i>.
</p>
<p><span id="more-55"></span></p>
<h3>O que são Design Patterns? </h3>
<p>
   Um <i>Design Pattern</i> não é uma classe ou uma biblioteca que você inclui em seus arquivos. É muito mais que isso. É uma metodologia que deve ser seguida no desenvolvimento de um projeto, seja ele no ramo de desenvolvimento de software, de construção civil, de engenharia, etc. <br />
   Descrevem soluções para problemas recorrentes no desenvolvimento de um projeto. <br />
   Os padrões de projeto visam facilitar a reutilização de soluções na fase de projeto.</p>
<h3>Por que utilizar um Design Pattern?</h3>
<p>
   Pela facilidade de manutenção, pela escalabilidade do projeto, reutilização de material, organização e padronização internacional, podendo seu projeto ser mantido por pessoas que vivem em outro país e falam outro idioma por exemplo.
</p>
<p>
   Como <i>Design Patterns</i> é uma metodologia, pode ser aplicada a qualquer situação. No ramo de desenvolvimento de software essa metodologia pode ser aplicada a qualquer linguagem de programação.
</p>
<h3>Mas então porque esta série de artigos vai falar sobre <i>Design Patterns &amp; PHP?</i></h3>
<p>
   Pelo fato de PHP ser uma das linguagens mais utilizadas no desenvolvimento web e ter a fama de &quot;linguagem de amadores&quot;. Iremos desmitificar isto e provar que PHP é uma linguagem robusta e sofisticada.
</p>
<h3>Bem vindo aos padrões de projeto</h3>
<p>
   Basicamente existem três tipos de de Design Patterns: </p>
<ol>
<li><a href="#estruturais">Estruturais</a></li>
<li><a href="#criacionais">Criacionais</a></li>
<li><a href="#comportamentais">Comportamentais</a></li>
</ol>
<h4 id="estruturais">Estruturais</h4>
<p>
   Geralmente tratam de relacionamento entre entidades, tornando mais fácil para que essas entidades trabalhem em conjunto.
</p>
<p><strong>Padrões Estruturais</strong></p>
<ul>
<li>Adapter</li>
<li>Bridge</li>
<li>Composite</li>
<li>Decorator</li>
<li>Façade</li>
<li>Flyweight</li>
<li>Proxy</li>
</ul>
<h4 id="criacionais">Criacionais</h4>
<p>
   Fornecem mecanismos de instanciação, tornando mais fácil a criação de objetos de uma forma que se adapta à situação.
</p>
<p><strong>Padrões Criacionais (ou de criação)</strong></p>
<ul>
<li>Abstract Factory</li>
<li>Factory Method</li>
<li>Singleton</li>
<li>Builder</li>
<li>Prototype</li>
</ul>
<h4 id="comportamentais">Comportamentais</h4>
<p>
   São utilizados na comunicação entre as entidades deixando mais fácil a comunicação entre elas.
</p>
<p><strong>Padrões Comportamentais</strong></p>
<ul>
<li>Chain of responsability</li>
<li>Mediator</li>
<li>Strategy</li>
<li>Command</li>
<li>Memento</li>
<li>Template Method</li>
<li>Interpreter</li>
<li>Observer</li>
<li>Visitor</li>
<li>Iterator</li>
<li>State</li>
</ul>
<p>
   Estaremos abordando nos próximos artigos a utilização da maioria destes padrões na linguagem PHP.
</p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/design-patterns-padroes-de-projeto-e-desenvolvimento-para-aplicacoes-em-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tradução de textos utilizando a API do Google</title>
		<link>http://www.brunoew.com.br/blog/traducao-de-textos-utilizando-a-api-do-google/</link>
		<comments>http://www.brunoew.com.br/blog/traducao-de-textos-utilizando-a-api-do-google/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 14:39:19 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google api]]></category>
		<category><![CDATA[tradução]]></category>
		<category><![CDATA[translate]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=37</guid>
		<description><![CDATA[Utilizando a API do Google para fazer tradução de pequenos textos.]]></description>
			<content:encoded><![CDATA[<p>Neste artigo iremos ver como traduzir um determinado conteúdo que está em um idioma para outro utilizando a API do Google.</p>
<p>
O exemplo utilizado aqui será bem simples, mas poderá passar a idéia do funcionamento da API, permitindo que você faça uso mais complexo desta abordagem.</p>
<p><b>Limitações deste artigo:</b>  </p>
<ol>
<li>A API de tradução do Google tem um limite de 500 palavras a serem traduzidas por requisição.</li>
<li>Neste artigo será traduzido apenas o conteúdo de uma div.</li>
<li>Como a tradução feita pela Google API é feita palavra a palavra, a tradução pode não ser fiel.</li>
</ol>
<p><span id="more-37"></span></p>
<p>Então, mãos à obra.</p>
<h3>Arquivo HTML</h3>
<p>Crie um arquivo chamado index.html. Neste arquivo faça como a seguir: </p>
<pre>
<code>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Tradução de textos com a API do Google&lt;/title&gt;

<!-- Criamos aqui a chamada para a API do Google -->
&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
 // Inicializa a versão 1 da Google Ajax API
 google.load("language", "1");

 // Carrega o framework JQuery, tambem atraves da mesma API do google
 google.load("jquery", "1.3");
</code>
</pre>
<p>
Neste trecho iniciamos a construção do cabeçalho da página e fizemos a chamada da API do Google. Nesta API já podemos fazer tanto a invocação da API de tradução
<pre><code>google.load("language", "1");</code></pre>
<p> quanto a chamada do framework JQuery
<pre><code>google.load("jquery", "1.3");</code></pre>
<p>. Mas qual o motivo pelo qual foi utilizado a API do google para chamar JQuery neste exemplo? A principal vantagem é a economia de banda e distribuição cd conteúdo (CDN), utilizando também menos requisições HTTP, mas isso é assunto para um próximo artigo. Vamos dar continuidade ao artigo.
</p>
<p>Agora neste passo iremos criar as funções em JavaScript que serão responsáveis pela tradução do conteúdo.</p>
<pre>
<code>  google.setOnLoadCallback(function() { // Ao carregar a API do google, faça:
    $(function(){ //Escuta o carregamento da página.
        $("#idioma").change(function(){ //Quando ouver mudança no campo "idioma" executara a função como segue...
            var idioma = $("#idioma").val(); //Pega o idioma selecionado no campo idioma

            var texto = $("#traduzir").html(); //Conteudo que será traduzido
            var len = content.length; //Tamanho do texto a ser traduzido
            var palavras = 500; // Como a Google API language aceita apenas 500 palavras por vez...
            var idiomaOrigem = "pt"; //Idioma de origem do texto a ser traduzido 

            //Limpa o conteudo da div com o resultado da tradução
            $("#traduzido").html("");

            for(i=0; i &lt;= (len/palavras); i++) {
              google.language.translate (texto.substr(i*palavras, palavras), idiomaOrigem, idioma, function (resultado) {
                 if (!resultado.error) { //Caso não ocorram erros
                        $("#traduzido").html($("#traduzido").html()+resultado.translation); //Adiciona o resultado dentro da div traduzido (palavra a palavra)
                 }
               });
             }
        });
    });
});
&lt;/script&gt;</code>
</pre>
<p>Agora ainda no cabeçalho da página (a fim de exemplo apenas) adicionamos algum estilo CSS </p>
<pre>
<code>  <!-- Adicionamos algum estilo para deixar visivelmente mais agradavel -->
&lt;style type="text/css"&gt;
.area{
    width: 42%;
    float:left;
    padding: 1%;
    border: 2px solid #ccc;
    color: #666;
    font: 1.2em "Trebuchet MS", Arial, Verdana, sans-serif;
    margin: 2%;
}

#idioma{
    font-size: 1.1em;
    color: #666;
}
&lt;/style&gt;

&lt;/head&gt;</code>
</pre>
<p>E por fim, resta fazermos o conteúdo da página, como segue: </p>
<pre>
<code>   &lt;body&gt;

   &lt;p&gt;&lt;label for="idioma"&gt;Idioma: &lt;/label&gt;
    &lt;select name="idioma" id="idioma"&gt;
        &lt;option value="en" selected="selected"&gt;english&lt;/option&gt;
        &lt;option value="de"&gt;deutsch&lt;/option&gt;
        &lt;option value="pt"&gt;português&lt;/option&gt;
        &lt;option value="fr"&gt;francais&lt;/option&gt;
        &lt;option value="it"&gt;italiano&lt;/option&gt;
        &lt;option value="es"&gt;espanol&lt;/option&gt;
        &lt;option value="nl"&gt;nederlands&lt;/option&gt;
        &lt;option value="ja"&gt;japanease&lt;/option&gt;
    &lt;/select&gt;
   &lt;/p&gt;

    &lt;div class="area" id="traduzir"&gt;
        &lt;p&gt;
            Este texto será traduzido para outro idioma. Ao selecionar o idioma desejado no campo &amp;quot;Idioma&amp;quot;, este texto será traduzido. &lt;br /&gt;
            Porém vale lembrar que a API do Google tem um limite de ate 500 palavras por requisição.
        &lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="area" id="traduzido"&gt;
        <!-- Esta div ira conter o resultado da tradução -->
    &lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</code>
</pre>
<p>Para visualizar o exemplo completo, acesse <a href="http://www.brunoew.com.br/translate" title="Exemplo de tradução automática pelo Google API">http://www.brunoew.com.br/translate</a>.
<p>Até o próximo artigo!</p>
<p><a href="http://www.brunoew.com.br/blog/wp-content/uploads/2010/07/translate_logo.gif"><img src="http://www.brunoew.com.br/blog/wp-content/uploads/2010/07/translate_logo.gif" alt="Google translate" title="translate_logo" width="203" height="40" class="aligncenter size-full wp-image-46" /></a></p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/traducao-de-textos-utilizando-a-api-do-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Melhorias SATI 2011</title>
		<link>http://www.brunoew.com.br/blog/melhorias-sati-2011/</link>
		<comments>http://www.brunoew.com.br/blog/melhorias-sati-2011/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 20:35:15 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[UTFPR]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[SATI]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=34</guid>
		<description><![CDATA[Apresentação de propostas para melhorias no evento SATI (Semana de Atualização em Tecnologia da Informação) da UTFPR campus de Ponta Grossa. O evento apresenta alguns problemas que podem ser facilmente resolvidos. Abaixo a proposta dos acadêmicos do 5º período do curso de Tecnologia em Análise e Desenvolvimento de Sistemas. Melhorias SATI 2011 &#8211; final on [...]]]></description>
			<content:encoded><![CDATA[<p>Apresentação de propostas para melhorias no evento SATI (Semana de Atualização em Tecnologia da Informação) da UTFPR campus de Ponta Grossa.<br />
O evento apresenta alguns problemas que podem ser facilmente resolvidos. Abaixo a proposta dos acadêmicos do 5º período do curso de Tecnologia em Análise e Desenvolvimento de Sistemas.<br />
<span id="more-34"></span></p>
<div class="prezi-player">
<style type="text/css" media="screen">.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }</style>
<p><object id="prezi_kic7gsd4i60l" name="prezi_kic7gsd4i60l" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="400"><param name="movie" value="http://prezi.com/bin/preziloader.swf"/><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="bgcolor" value="#ffffff"/><param name="flashvars" value="prezi_id=kic7gsd4i60l&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no"/><embed id="preziEmbed_kic7gsd4i60l" name="preziEmbed_kic7gsd4i60l" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=kic7gsd4i60l&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no"></embed></object>
<div class="prezi-player-links">
<p><a title="Trabalho apresentado por todos os alunos do 5º periodo noturno para propor melhorias para a SATI 2011" href="http://prezi.com/kic7gsd4i60l/">Melhorias SATI 2011 &#8211; final</a> on <a href="http://prezi.com">Prezi</a></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/melhorias-sati-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriais de menus com JQuery &amp; CSS</title>
		<link>http://www.brunoew.com.br/blog/galeria-de-fotos-com-jquery-e-css/</link>
		<comments>http://www.brunoew.com.br/blog/galeria-de-fotos-com-jquery-e-css/#comments</comments>
		<pubDate>Sat, 29 May 2010 00:52:38 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[listas]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=31</guid>
		<description><![CDATA[Uma dica muito útil: Uma lista de tutoriais de elaboração de menus com JQuery &#038; CSS: Menu drop-down: Mega drop down menu com JQuery Menu drop down multinível Menu drop down com CSS Menu com sprites: Menu utilizando sprites Menus animados Menus animados com JQuery Menus animados com JQuery II Menus parecidos com o da [...]]]></description>
			<content:encoded><![CDATA[<p>Uma dica muito útil: Uma lista de tutoriais de elaboração de menus com JQuery &#038; CSS:</p>
<h4>Menu drop-down:</h4>
<ul>
<li><a href="http://www.sitepoint.com/blogs/2009/03/31/make-a-mega-drop-down-menu-with-jquery/">Mega drop down menu com JQuery</a></li>
<li><a href="http://www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery">Menu drop down multinível</a></li>
<li><a href="http://designreviver.com/tutorials/jquery-css-example-dropdown-menu/">Menu drop down com CSS</a></li>
</ul>
<h4>Menu com sprites:</h4>
<ul>
<li><a href="http://www.alistapart.com/articles/sprites2">Menu utilizando sprites</a></li>
</ul>
<h4>Menus animados</h4>
<ul>
<li><a href="http://www.shopdev.co.uk/blog/animated-menus-using-jquery/">Menus animados com JQuery</a></li>
<li><a href="http://buildinternet.com/2009/01/how-to-make-a-smooth-animated-menu-with-jquery/">Menus animados com JQuery II</a></li>
<li><a href="http://nettuts.com/html-css-techniques/how-to-create-a-mootools-homepage-inspired-navigation-effect-using-jquery/">Menus parecidos com o da página inicial da MooTools, com JQuery</a></li>
<li><a href="http://www.kriesi.at/archives/apple-menu-improved-with-jquery">Menu animado estilo Apple</a></li>
<li><a href="http://www.snook.ca/archives/javascript/jquery-bg-image-animations/">Menus com background animado com JQuery</a></li>
<li><a href="http://net.tutsplus.com/javascript-ajax/create-a-cool-animated-navigation-with-css-and-jquery/">Criando um menu animado com efeitos muito interessantes</a></li>
</ul>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/galeria-de-fotos-com-jquery-e-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Efeito accordion na horizontal com JQuery &amp; CSS3</title>
		<link>http://www.brunoew.com.br/blog/efeito-accordion-na-horizontal-com-jquery-css3/</link>
		<comments>http://www.brunoew.com.br/blog/efeito-accordion-na-horizontal-com-jquery-css3/#comments</comments>
		<pubDate>Thu, 20 May 2010 20:32:59 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriais]]></category>
		<category><![CDATA[accordion]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=16</guid>
		<description><![CDATA[Dando início a uma série de dicas / tutoriais que irei postar nesse blog, segue uma dica valiosa para quem precisa exibir imagens em um curto espaço, ou apenas para deixar a exibição delas mais atraente, trazendo um efeito elegante e moderno. A idéia é criar um accordion horizontal que se abre ao passar com [...]]]></description>
			<content:encoded><![CDATA[<p>Dando início a uma série de dicas / tutoriais que irei postar nesse blog, segue uma dica valiosa para quem precisa exibir imagens em um curto espaço, ou apenas para deixar a exibição delas mais atraente, trazendo um efeito elegante e moderno.</p>
<p>A idéia é criar um accordion horizontal que se abre ao passar com o mouse por cima das imagens. Utilizaremos JQuery &amp; CSS3.</p>
<p>Este tuto é uma adaptação do original: <a href="http://tympanus.net/codrops/2010/04/26/elegant-accordion-with-jquery-and-css3/" rel="nofollow">http://tympanus.net/codrops/2010/04/26/elegant-accordion-with-jquery-and-css3/</a></p>
<p><a href="http://www.brunoew.com.br/accordion">Veja aqui uma demonstração</a> do proposto.</p>
<p><span id="more-16"></span></p>
<h4>HTML: </h4>
<p>No arquivo HTML teremos uma lista. Dentro de cada elemento da lista, adicionamos um cabeçalho que desaparecerá quando estivermos com o mouse por cima deste elemento. Segue abaixo o código HTM para um elemento. Repita esta operação para todos os seus itens.</p>
<pre><code>&lt;ul id="accordion" class="accordion"&gt;
   &lt;li class="bg1"&gt;
   &lt;div class="heading"&gt;Cabeçalho&lt;/div&gt;
   &lt;div class="description"&gt;
      &lt;h2&gt;Cabeçalho&lt;/h2&gt;
         Algum texto aqui
         <a href="#">veja mais</a>
   &lt;/div&gt;
   &lt;/li&gt;
&lt;/ul&gt;</code>
</pre>
<p>Os outros elementos da lista devem possuir as classes diferentes (ex. bg2, bg3, etc).</p>
<h4>CSS</h4>
<p>No arquivo CSS, adicione as linhas abaixo: </p>
<pre>
<code>ul.accordion{
    list-style:none;
    position:absolute;
    right:80px;
    top:0px;
    font-family: Cambria, serif;
    font-size: 16px;
    font-style: italic;
    line-height: 1.5em;
}

ul.accordion li{
    float:right;
    width:115px;
    height:480px;
    display:block;
    border-right:2px solid #fff;
    border-bottom:2px solid #fff;
    background-color:#fff;
    background-repeat:no-repeat;
    background-position:center center;
    position:relative;
    overflow:hidden;
    cursor:pointer;
    -moz-box-shadow:1px 3px 15px #555;
    -webkit-box-shadow:1px 3px 15px #555;
    box-shadow:1px 3px 15px #555;
}

ul.accordion li.bg1{
    background-image:url(../images/1.jpg);
}

ul.accordion li.bg2{
    background-image:url(../images/2.jpg);
}

ul.accordion li.bg3{
    background-image:url(../images/3.jpg);
}

ul.accordion li.bg4{
    background-image:url(../images/4.jpg);
}

ul.accordion li.bleft{
    border-left:2px solid #fff;
}

ul.accordion li .heading{
    background-color:#fff;
    padding:10px;
    margin-top:60px;
    opacity:0.9;
    text-transform:uppercase;
    font-style:normal;
    font-weight:bold;
    letter-spacing:1px;
    font-size:14px;
    color:#444;
    text-align:center;
    text-shadow:-1px -1px 1px #ccc;
}

ul.accordion li .description{
    position:absolute;
    width:480px;
    height:175px;
    bottom:0px;
    left:0px;
    display:none;
}

ul.accordion li .description h2{
    text-transform:uppercase;
    font-style:normal;
    font-weight:bold;
    letter-spacing:1px;
    font-size:45px;
    color:#444;
    text-align:left;
    margin:0px 0px 15px 20px;
    text-shadow:-1px -1px 1px #ccc;
}

ul.accordion li .description p{
    line-height:14px;
    margin:10px 22px;
    font-family: "Trebuchet MS", sans-serif;
    font-size: 12px;
    font-style: italic;
    font-weight: normal;
    text-transform: none;
    letter-spacing: normal;
    line-height: 1.6em;
}

ul.accordion li .description a{
    position:absolute;
    bottom:5px;
    left:20px;
    text-transform:uppercase;
    font-style:normal;
    font-size:11px;
    text-decoration:none;
    color:#888;
}

ul.accordion li .description a:hover{
    color:#333;
    text-decoration:underline;
}

/** Gradiente para colocar a descrição em cima **/
ul.accordion li .bgDescription{
    background:transparent url(../images/bgDescription.png) repeat-x top left;
    height:340px;
    position:absolute;
    bottom:0px;
    left:0px;
    width:100%;
    display:none;
}</code>
</pre>
<p>Note que a propriedade text-shadow não irá funcionar no Internet Explorer. </p>
<p>O caminho para as imagens aqui irão variar de acordo com a localização das imagens que você irá utilizar.</p>
<p>A largura inicial para cada item será de 115px. Depois na parte do Javascript iremos fazer com que esta largura seja alterada.</p>
<p>A imagem gradiente que está sendo utilizada é um gradiente que parte da cor branca para o transparente. Isto traz um efeito visual legal.</p>
<p>Vamos agora para a parte que irá fazer com que as coisas funcionem: O javascript&#8230; </p>
<h4>Javascript</h4>
<p>Primeiramente iremos precisar incluir o framework JQuery. Você poderá incluir através do Google APIS, como segue: </p>
<pre><code>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"&gt;&lt;/script&gt;</code></pre>
<p>Agora criaremos uma função para que quando o mouse estiver sobre a imagem (li) faça o efeito de slide para exibir o conteúdo completo da mesma.</p>
<pre>
<code>&lt;script type="text/javascript"&gt;
$(function() {
    $('#accordion &gt; li').hover(
        function () {
            var $this = $(this);
            $this.stop().animate({'width':'480px'},500);
            $('.heading',$this).stop(true,true).fadeOut();
            $('.bgDescription',$this).stop(true,true).slideDown(500);
            $('.description',$this).stop(true,true).fadeIn();
        },
        function () {
            var $this = $(this);
            $this.stop().animate({'width':'115px'},1000);
            $('.heading',$this).stop(true,true).fadeIn();
            $('.description',$this).stop(true,true).fadeOut(500);
            $('.bgDescription',$this).stop(true,true).slideUp(700);
        }
    );
});
&lt;/script&gt;</code>
</pre>
<p>Espero que este tutorial tenha sido útil para você. Caso tenha alguma sugestão, adicione um comentário a este post.</p>
<p>Até a próxima dica! </p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/efeito-accordion-na-horizontal-com-jquery-css3/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>50 razões para ser motoqueiro</title>
		<link>http://www.brunoew.com.br/blog/50-razoes-para-ser-motoqueiro/</link>
		<comments>http://www.brunoew.com.br/blog/50-razoes-para-ser-motoqueiro/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 20:30:17 +0000</pubDate>
		<dc:creator>Bruno Wiltemburg</dc:creator>
				<category><![CDATA[listas]]></category>

		<guid isPermaLink="false">http://www.brunoew.com.br/blog/?p=4</guid>
		<description><![CDATA[Razões para se ter uma motocicleta. Porque amantes de motociclismo são livres!]]></description>
			<content:encoded><![CDATA[<p>Somente quem tem uma moto pode entender o significado dessas coisas.</p>
<p>01 &#8211; Pelo espírito  de liberdade;<br />
02 &#8211; Pelo vento na cara;<br />
03 &#8211; Por sentir a garupa  agarradinha na sua cintura;<br />
04 &#8211; Por ter uma 125 e se sentir um  Valentino Rossi numa 500;<br />
05 &#8211; Por ter uma custom e ser o próprio  Peter Fonda em Easy Rider;<br />
06 &#8211; Por fazer novos amigos, que falam a  sua língua;<br />
07 &#8211; Por poder viajar em grupos;<br />
08 &#8211; Por ficar  encharcado e feliz;<br />
09 &#8211; Por ter a sua pista livre em cima da faixa,  quando o trânsito está totalmente congestionado;<br />
10 &#8211; Por poder andar  sujo, no melhor estilo aventureiro;<br />
<span id="more-4"></span><br />
11 &#8211; Por poder usar a sua  fantasia de mau, com caveiras e crucifixos;<br />
12 &#8211; Para ir ao Mundial  de Motos torcer pelo Alexandre Barros;<br />
13 &#8211; Para poder juntar um  dinheirinho e comprar uma moto maior;<br />
14 &#8211; Por já ter dinheiro e  status e finalmente voltar a andar de moto, como na juventude;<br />
15 &#8211;  Para ouvir o ronco do motor;<br />
16 &#8211; Para matar de inveja o seu vizinho  careta;<br />
17 &#8211; Para conquistar as menininhas;<br />
18 &#8211; Para trabalhar,  porque a moto é o seu ganha-pão;<br />
19 &#8211; Para se sentir poderoso dentro  do seu macacão de couro;<br />
20 &#8211; Para ter a sensação de voar, como um  pássaro do asfalto;<br />
21 &#8211; Para ser o pole position nos faróis das  grandes avenidas;<br />
22 &#8211; Porque a primeira trilha a gente nunca  esquece;<br />
23 &#8211; Para passar nos pedágios sem pagar;<br />
24 &#8211; Para ter um  estacionamento exclusivo no shopping center;<br />
25 &#8211; Para dar umas  escorregadas, porque um tombinho não dói;<br />
26 &#8211; Para fazer uma curva e  sentir o joelho quase ralando no chão;<br />
27 &#8211; Para encher o seu  capacete de adesivos bacanas;<br />
28 &#8211; Para ir aos encontros de motos  falar sobre motos;<br />
29 &#8211; Para tentar dar um cavalo de pau com a roda  da frente, como Tom Cruise em Missão Impossível 2;<br />
30 &#8211; Para cruzar  do Paquistão à Índia, como fez Rafael Karan, o aventureiro;<br />
31 &#8211; Para  comprar um monte de acessórios e deixar sua moto personalizada;<br />
32 &#8211;  Para poder carrega-la na caçamba da sua picape até a entrada da trilha;<br />
33  &#8211; Para servir de moto-táxi no Nordeste e faturar uma graninha a mais;<br />
34  &#8211; Para vir a ser um grande piloto de motovelocidade;<br />
35 &#8211; Para poder  abrir sua própria oficina de motos;<br />
36 &#8211; Para um dia participar do  Racing Day, em Interlagos;<br />
37 &#8211; Porque todos os caminhos levam a  Daytona, o grande encontro mundial de motos;<br />
38 &#8211; Para se perder numa  trilha no meio da noite;<br />
39 &#8211; Para rasgar sua calça no mourão da  cerca;<br />
40 &#8211; Para deixá-la parada na garagem de casa e apenas ficar  admirando-a;<br />
41 &#8211; Para sentir o cheiro de óleo queimado da sua velha e  inesquecível 2T;<br />
42 &#8211; Porque entre sua namorada e a moto, você fica  com a moto;<br />
43 &#8211; Porque a moto só tem dois lugares: não cabem a sogra  e o papagaio;<br />
44 &#8211; Porque ela gasta muito menos combustível que seu  carrão;<br />
45 &#8211; Porque ela leva você pelos caminhos da emoção;<br />
46 &#8211;  Porque no peito de todo motociclista, bate um coração aventureiro;<br />
47  &#8211; Porque você consegue extravasar por trás de sua viseira, mesmo que as  lágrimas embacem o seu caminho;<br />
48 &#8211; Porque um dia você sonhou que  chegaria lá;<br />
49 &#8211; Porque você ama estar vivo;<br />
50 &#8211; Porque você  isso, meu amigo, um amante da liberdade . . . motociclista.</p>
<p><!-- Place this code where you want the badge to render. --><br />
<a href="//plus.google.com/112464715962034101594?prsrc=3" rel="publisher" style="text-decoration:none;display:inline-block;color:#333;text-align:center; font:13px/16px arial,sans-serif;white-space:nowrap;"><br />
<span style="display:inline-block;font-weight:bold;vertical-align:top;margin-right:5px; margin-top:8px;">Bruno Wiltemburg</span><span style="display:inline-block;vertical-align:top;margin-right:15px; margin-top:8px;">on</span><br />
<img src="//ssl.gstatic.com/images/icons/gplus-32.png" alt="Google+" style="border:0;width:32px;height:32px;"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunoew.com.br/blog/50-razoes-para-ser-motoqueiro/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
