<?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>Varal de Bits &#187; Desenvolvimento</title>
	<atom:link href="http://varaldebits.com.br/category/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://varaldebits.com.br</link>
	<description>pegando um solzinho para aclarar as idéias...</description>
	<lastBuildDate>Tue, 08 Feb 2011 15:45:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Select and Share 2.0</title>
		<link>http://varaldebits.com.br/2011/02/08/select-and-share-2-0/</link>
		<comments>http://varaldebits.com.br/2011/02/08/select-and-share-2-0/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 14:51:30 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=604</guid>
		<description><![CDATA[A nova versão do plugin Select and Share já está disponível. A versão 2.0 do plugin traz consigo estatísticas do conteúdo que está sendo compartilhado. Você poderá também acompanhar quais textos estão sendo compartilhado, quantas vezes e em quais redes sociais. Essa nova versão também traz um gráfico para você ver o alcance de cada rede [...]]]></description>
			<content:encoded><![CDATA[<p>A nova versão do plugin Select and Share já está disponível. A versão 2.0 do plugin traz consigo estatísticas do conteúdo que está sendo compartilhado. Você poderá também acompanhar quais textos estão sendo compartilhado, quantas vezes e em quais redes sociais. Essa nova versão também traz um gráfico para você ver o alcance de cada rede social. Confira as novidades na <a href="http://varaldebits.com.br/2011/01/28/select-and-share/">página</a> do plugin.</p>
<p><a class="thickbox" title="Exemplo de estatísticas" rel="same-post-513" href="http://varaldebits.com.br/wp-content/uploads/2011/01/select-and-share-chart.png"><img class="aligncenter size-medium wp-image-598" title="select-and-share-chart" src="http://varaldebits.com.br/wp-content/uploads/2011/01/select-and-share-chart-300x183.png" alt="" width="300" height="183" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2011/02/08/select-and-share-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select and Share</title>
		<link>http://varaldebits.com.br/2011/01/28/select-and-share/</link>
		<comments>http://varaldebits.com.br/2011/01/28/select-and-share/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 23:04:55 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Quebra Galho]]></category>
		<category><![CDATA[delicioso]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hotmail]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[MySpace]]></category>
		<category><![CDATA[orkut]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?page_id=513</guid>
		<description><![CDATA[Select and Share é uma biblioteca em JavaScript que permite seus visitantes compartilhar qualquer conteúdo do seu site em algumas redes sociais. Agora na versão 2.0 você também poderá acompanhar o que está sendo compartilhado, quantas vezes um conteúdo foi compartilhado e também em quais redes sociais ele foi compartilhado, também foi adicionado um gráfico [...]]]></description>
			<content:encoded><![CDATA[<p>Select and Share é uma biblioteca em JavaScript que permite seus visitantes compartilhar qualquer conteúdo do seu site em algumas <a href="#networks">redes sociais</a>. Agora na versão 2.0 você também poderá acompanhar o que está sendo compartilhado, quantas vezes um conteúdo foi compartilhado e também em quais redes sociais ele foi compartilhado, também foi adicionado um gráfico para você acompanhar o alcance das redes sociais.</p>
<p><strong>Como funciona?</strong><br />
Basta o visitante do seu site selecionar qualquer texto e pronto, irá aparecer as redes que ele pode compartilhar.</p>
<p><strong>Como configurar somente a biblioteca Javascript.</strong><br />
Muito simples, basta adicionar o JavaScript e CSS em seu site e pronto. Nada mais, já está pronto para usar.</p>
<p>É claro existe alguns ajustes que você pode fazer. Se você estiver usando somente a biblioteca JavaScript fique a vontade para editar o CSS e no JavaScript você pode alterar algumas linhas:</p>
<pre class="brush:js">var _ss_networks = Array('facebook','twitter','orkut','delicious','google','hotmail','linkedin','myspace','yahoo', 'email', 'wordpress');

var _ss_title_page = jQuery('title').text();
var _ss_url_site = window.location.href;
var _ss_selected_text;

var _ss_title_networks = 'Compartilhe este conteúdo.';
var _ss_wordpress_text = 'Digite a url de seu WordPress.';
var _ss_email_text = 'Para qual e-mail deseja enviar?';
var _ss_email_is_invalid = 'E-mail inválido.';
var _ss_url_is_invalid = 'URL inválida.'

// Se você alterar _ss_stats_enable para true é necessário adicionar a url na variável _ss_data_stats_url
var _ss_stats_enable = false;
var _ss_data_stats_url;</pre>
<p>Você pode remover qualquer rede social que não deseja e também mudar os textos que irá aparecer para seus visitantes. Um nova opção na versão 2.0 é que você pode optar para a biblioteca fazer uma requisição ajax para salvar as informações que seu visitante está compartilhando:</p>
<pre class="brush:as3">var _ss_stats_enable = true;
var _ss_data_stats_url = 'http://www.exemplo.com.br/estatistica';</pre>
<p>A biblioteca irá fazer uma requisição para a url informada passando os parâmetros:</p>
<pre class="brush:js">title_page; // Título da página.
url_site; // URL da página.
network; // Rede social selecionada pelo visitante.
selected_text; // Texto selecionado.</pre>
<p>Salve essas informações e utilize da maneira que desejar.</p>
<p><strong>WordPress</strong></p>
<p>Já no WordPress essas alterações no CSS podem ser feitas editor de plugins e no JavaScript podem ser feitas no menu do plugin. Onde você pode também acompanhar as estatísticas.</p>
<p><a class="thickbox" title="Exemplo de estatísticas" rel="same-post-513" href="http://varaldebits.com.br/wp-content/uploads/2011/01/select-and-share-chart.png"><img class="aligncenter size-medium wp-image-598" title="select-and-share-chart" src="http://varaldebits.com.br/wp-content/uploads/2011/01/select-and-share-chart-300x183.png" alt="" width="300" height="183" /></a></p>
<p><strong>Redes Sociais</strong><br />
Facebook, Twitter, orkut, delicioso, google, hotmail, LinkedIn, Yahoo, E-mail and WordPress.<br />
<a name="networks"></a></p>
<p><strong>GitHub</strong><br />
<a href="https://github.com/renatoferraz/select-and-share-javascript" target="_blank">JavaScript</a><br />
<a href="https://github.com/renatoferraz/select-and-share-wordpress" target="_blank">Plugin WordPress</a></p>
<p><strong>WordPress</strong><br />
<a href="http://wordpress.org/extend/plugins/select-and-share/" target="_blank">Plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2011/01/28/select-and-share/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Usando Flex 4, PHP e SQlite3</title>
		<link>http://varaldebits.com.br/2011/01/04/usando-flex-4-php-e-sqlite3/</link>
		<comments>http://varaldebits.com.br/2011/01/04/usando-flex-4-php-e-sqlite3/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 23:56:19 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQlite3]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=433</guid>
		<description><![CDATA[Neste artigo estarei dando um pequeno exemplo de como você pode fazer uma integração de Flex, PHP e SQlite. Este exemplo é apenas um ponto de partida para você explorar sua criatividade e adentrar nos conceito mais avançados. Fiz o possível para trabalhar com o código de um forma simples para facilitar o entendimento. Bom [...]]]></description>
			<content:encoded><![CDATA[<p>Neste artigo estarei dando um pequeno exemplo de como você pode fazer uma integração de Flex, PHP e SQlite. Este exemplo é apenas um ponto de partida para você explorar sua criatividade e adentrar nos conceito mais avançados.</p>
<p>Fiz o possível para trabalhar com o código de um forma simples para facilitar o entendimento. Bom chega de papo furado e mãos a obra. O Flex 4 basta uma pequena <a href="http://tinyurl.com/33m53ha" target="_blank">busca no google</a> e você já consegue baixar, já o PHP e SQlite acho que esse <a href="http://imasters.com.br/artigo/5373/php/php5_e_sqlite_no_windows/" target="_blank">link pode ajudar</a>, um pouco antigo mas te dá o caminho das pedras. Um &#8220;pouquinho&#8221; de esforço não mata ninguém.</p>
<p>Depois de criar um novo projeto WEB no Flash Builder 4. Você terá o seguinte código.</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"&gt;
	&lt;fx:Declarations&gt;
		&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
	&lt;/fx:Declarations&gt;
&lt;/s:Application&gt;</pre>
<p>Agora vamos adicionar um <strong>mx:HTTPService </strong>dentro de <strong>fx:Declarations</strong>. Agora nosso código cresceu um pouco e ficou assim.</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"&gt;

	&lt;fx:Declarations&gt;
		&lt;mx:HTTPService id="ControllerUsers" result="ControllerUsersResult(event)" useProxy="false" resultFormat="text" method="POST" /&gt;
	&lt;/fx:Declarations&gt;

&lt;/s:Application&gt;</pre>
<p>É importante que você adicione um id, result no <strong>mx:HTTPService</strong> conforme o código acima. Ao salvar irá aparecer um erro, mas não se preocupe com ele. Logo está erro irá virar história.</p>
<p>Adicione agora uma tag <strong>fx:Script</strong> dentro de <strong>s:Application</strong> onde iremos trabalhar nossas ações. Em <strong>fx:Script</strong> vamos adicionar alguns funções. <strong>ControllerUsersResult </strong>essa função irá capturar o resultado do <strong>mx:HTTPService</strong> e a outra função será <strong>InitSystem. </strong>Está irá apenas executar algumas ações ao carregar nossa aplicação. Iremos também adicionar duas variáveis e uma delas será <strong>Bindable. </strong>Vou explicar tudo isso em seguida, mas antes vamos ver como nosso código ficou.</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   creationComplete="InitSystem()"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"&gt;

	&lt;fx:Declarations&gt;
		&lt;mx:HTTPService id="ControllerUsers" result="ControllerUsersResult(event)" useProxy="false" resultFormat="text" method="POST" /&gt;
	&lt;/fx:Declarations&gt;

	&lt;fx:Script&gt;
		&lt;![CDATA[
			import com.adobe.serialization.json.JSON;
			import mx.rpc.events.ResultEvent;

			[Bindable]
			public var Users:Array;	

			public var UrlController:String = "http://varaldebits.com.br/sample/flex-php-sqlite/controller.php";

			private function InitSystem():void {
				ControllerUsers.url = UrlController;
				ControllerUsers.send();
			}

			private function ControllerUsersResult(event:ResultEvent):void {
				Users = JSON.decode(String(event.result)) as Array;
			}

		]]&gt;
	&lt;/fx:Script&gt;

&lt;/s:Application&gt;</pre>
<p>Resolvemos aquele erro, não foi? Mas agora apareceu outro erro. Este erro é porque precisamos adicionar dentro da pasta libs o arquivo &#8220;<a href="http://varaldebits.com.br/sample/flex-php-sqlite/corelib.swc" target="_blank">corelib.swc</a>&#8220;. Estou utilizando JSON para capturar os dados que o PHP irá retornar.  Adicione o arquivo na pasta libs e aguarde alguns segundos e&#8230; este erro também virou história.</p>
<p>Conforme prometido, vamos agora explicar o código.</p>
<p>Primeiro porque a variável Users é <strong>[Bindable]</strong> e a UrlController não? A variável Users nós iremos utilizá-la fora da tag <strong>fx:Script</strong> em um outro componente, que iremos criar ainda já a variável UrlController iremos apenas utilizá-la dentro da tag tag <strong>fx:Script.</strong></p>
<p>Na função <strong>InitSystem</strong> iremos apenas adicionar uma url em nosso <strong>mx:HTTPService </strong>e enviá-lo. Você precisa adicionar esse função na tag <strong>s:Application </strong>como<strong> creationComplete. </strong>Simples assim. Já na função <strong>ControllerUsersResult </strong>iremos capturar o resultado que foi retornado pelo PHP em formato JSON (iremos ver isto ainda) e converte-lo a um Array adicionando-o dentro da variável Users. Simples assim também.</p>
<p>Tendo explicado isso vamos exibir o Array. Você pode utilizar vários componentes. Neste caso irei utilizar um <strong>mx:DataGrid. </strong>Logo após a tag <strong>fx:Script </strong>adicione o seguinte código.</p>
<pre class="brush:as3">&lt;mx:DataGrid y="10" x="10" dataProvider="{Users}" height="250" width="580" id="DataGridUsers"&gt;
	&lt;mx:columns&gt;
		&lt;mx:DataGridColumn dataField="username" headerText="Nome do Usuário" /&gt;
		&lt;mx:DataGridColumn dataField="email" headerText="Email" /&gt;
	&lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;</pre>
<p>Repare que na tag <strong>mx:DataGrid</strong> temos o parametro <strong>dataProvider </strong>com a nossa variável Users. Por isso foi necessário colocá-lo como <strong>[Bindable]</strong>.</p>
<p>Bom com tudo isso a parte do Flex está pronta. Agora vamos para o PHP.</p>
<pre class="brush:php">&lt;?php

  $kind = isset($_GET["kind"]) ? $_GET["kind"] : "";

  switch ($kind) {
    case "SQLiteDatabase":
          $query = "SELECT * FROM users ORDER BY ID";
          $database = "sampleWebOthers.db3";
          $db = new SQLiteDatabase($database, 0666);
          $results = $db-&gt;query($query)-&gt;fetchAll();
        break;
    case "sqlite_open":
          $query = "SELECT * FROM users ORDER BY ID DESC";
          $database = "sampleWebOthers.db3";
          $db = sqlite_open($database, 0666, $error);
          $results = sqlite_array_query($db, $query, SQLITE_ASSOC);
        break;
    default:
        $query = "SELECT * FROM users ORDER BY RANDOM()";
        $database = "sampleWebPDO.db3";
        $dbh = new PDO("sqlite:$database");
        $sth = $dbh-&gt;prepare($query, array(PDO::ATTR_CURSOR =&gt; PDO::CURSOR_FWDONLY));
        $sth-&gt;execute();
        $results = $sth-&gt;fetchAll();
  }

  echo json_encode($results);

?&gt;</pre>
<p>Você precisa de tudo isso para que funcione? A resposta é não. Eu fiz desta maneira porque já tive vários problemas com formatos de banco de dados. Alguns bancos de dados só abrem utilizando PDO outro apenas com sqlite_open e outros ainda com SQLiteDatabase, então segue os 3 exemplos para você. Descobrindo o que funciona para você, utilize apenas o que está dentro do case.</p>
<pre class="brush:php">// Apenas o SQLiteDatabase":
$query = "SELECT * FROM users ORDER BY username";
$database = "sampleWebOthers.db3";
$db = new SQLiteDatabase($database, 0666);
$results = $db-&gt;query($query)-&gt;fetchAll();

// Apenas o sqlite_open
$query = "SELECT * FROM users ORDER BY username";
$database = "sampleWebOthers.db3";
$db = sqlite_open($database, 0666, $error);
$results = sqlite_array_query($db, $query, SQLITE_ASSOC);

// Apenas o PDO
$query = "SELECT * FROM users ORDER BY username";
$database = "sampleWebPDO.db3";
$dbh = new PDO("sqlite:$database");
$sth = $dbh-&gt;prepare($query, array(PDO::ATTR_CURSOR =&gt; PDO::CURSOR_FWDONLY));
$sth-&gt;execute();
$results = $sth-&gt;fetchAll();</pre>
<p>Configurado da sua maneira. retorne o resultado como JSON.</p>
<pre class="brush:php">echo json_encode($results);</pre>
<p>Segue aqui para download e o exemplo online. Adicionei algumas coisa simplesmente para testes.</p>
<p><a href="http://varaldebits.com.br/sample/flex-php-sqlite/corelib.swc" target="_blank">Download corelib.swc</a> | <a href="http://varaldebits.com.br/sample/flex-php-sqlite/" target="_blank">Exemplo Online</a> | <a href="http://www.varaldebits.com.br/sample/flex-php-sqlite/srcview/" target="_blank">Código Fonte</a></p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2011/01/04/usando-flex-4-php-e-sqlite3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HiddenFile</title>
		<link>http://varaldebits.com.br/2010/12/31/hiddenfile/</link>
		<comments>http://varaldebits.com.br/2010/12/31/hiddenfile/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 01:06:06 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Quebra Galho]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Input File]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?page_id=402</guid>
		<description><![CDATA[HiddenFile é uma biblioteca baseado em jQuery que facilita a aplicação de CSS em input tipo &#8220;file&#8221;. Utilização: Você precisa adicionar a biblioteca jQuery, HiddenFile e o arquivo CSS da biblioteca no head de sua página. Depois basta adicionar a classe hiddenfile em algumas destas tags &#60;a&#62;, &#60;area&#62;, &#60;img /&#62;, &#60;input type=button /&#62; e  &#60;input type=file /&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>HiddenFile é uma biblioteca baseado em jQuery que facilita a aplicação de CSS em input tipo &#8220;file&#8221;.  Utilização:  Você precisa adicionar a biblioteca jQuery, HiddenFile e o arquivo CSS da biblioteca no head de sua página. Depois basta adicionar a classe hiddenfile em algumas destas tags &lt;a&gt;, &lt;area&gt;, &lt;img /&gt;, &lt;input type=button /&gt; e  &lt;input type=file /&gt;</p>
<p><a href="https://github.com/renatoferraz/hidden-file" target="_blank">GitHub</a> e <a href="http://varaldebits.com.br/sample/hiddenfile/" target="_blank">Exemplo Online</a></p>
<p><strong>Adicionar em seu site.</strong></p>
<pre class="brush:xml">&lt;head&gt;
  …
  &lt;link href=”stylesheets/hiddenfile.css” media=”screen” rel=”stylesheet” type=”text/css” /&gt;
  &lt;script src=”jquery.min.js” type=”text/javascript”&gt;&lt;/script&gt;
  &lt;script src=”javascripts/hiddenfile.js” type=”text/javascript”&gt;&lt;/script&gt;
  …
&lt;/head&gt;</pre>
<p><strong>Exemplos de utilização:</strong></p>
<pre class="brush:xml">&lt;a href=”javascript:void(0)” class=”hiddenfile”&gt;adicionar mais fotos&lt;/a&gt;

&lt;input type=”button” class=”hiddenfile” value=”adicionar arquivos”/&gt;

&lt;input type=”file” class=”hiddenfile” name=”filename” id=”filename”&gt;</pre>
<p>Você poderá mudar a mensagem de selecionar a imagem usando o parâmetro title.</p>
<pre class="brush:xml">&lt;a href=”javascript:void(0)” class=”hiddenfile” title=”Selecione uma foto de seu computador.”&gt;adicionar fotos&lt;/a&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2010/12/31/hiddenfile/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Bela solução para as &#8220;firulas&#8221; dos designers</title>
		<link>http://varaldebits.com.br/2009/11/06/bela-solucao-para-as-firulas-dos-designers/</link>
		<comments>http://varaldebits.com.br/2009/11/06/bela-solucao-para-as-firulas-dos-designers/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 15:17:01 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Quebra Galho]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=300</guid>
		<description><![CDATA[Aqui entre nós. Esses designers deveriam aprender um pouco mais sobre html. Acho que vou escrever para o MEC para incluir html na grade curricular do curso de design web. Esses caras acham que se é possível desenhar um site no Photoshop é possível fazer ele em html, ainda mais tendo que fazer funcionar no [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui entre nós. Esses designers deveriam aprender um pouco mais sobre html. Acho que vou escrever para o MEC para incluir html na grade curricular do curso de design web.  Esses caras acham que se é possível desenhar um site no Photoshop é possível fazer ele em html, ainda mais tendo que fazer funcionar no IE6. Aff. Um tempo atrás peguei um site para produzir e criar um template para o WordPress e o design colocou todo o conteúdo do site em uma fonte &#8220;esdrúxula&#8221; e eu procurei uma fonte padrão mais parecida com a dele, e o cara veio reclamar que não era a fonte que ele &#8220;criou&#8221;. Oh deus do design!</p>
<p>Um tempo atrás o site do <a href="http://patiosavassi.com" target="_blank">PatioSavassi</a> tinha dezenas de flash só para colocar os títulos das seções com fontes diferente, uma solução aceitável mas de muito código. Bom vamos ao que interessa. Nesses momentos que os design te fazem raiva com fontes &#8220;esdrúxula&#8221;. Você só precisa fazer algumas &#8220;coisinhas&#8221;. Primeiro pedir os arquivos das fontes para ele. Depois utilizar esse script muito interessante e simples de usar. <a href="http://cufon.shoqolate.com/" target="_blank">Cufón &#8211; fonts for the people</a>.</p>
<p>Basta você fazer o <a href="http://cufon.shoqolate.com/js/cufon-yui.js" target="_blank">download</a> da biblioteca, escolher a fonte desejada e <a href="http://cufon.shoqolate.com/generate/" target="_blank">gerar o script da fonte atraves do site</a>. Após preencher as informações necessárias e selecionar a fonte clique em &#8220;Let&#8217;s do this!&#8221;. Baixe o script que ele irá gerar e divirta-se. Outra coisa interessante é que o script captura informações do seu CSS  criando os canvas com os atributos dele.</p>
<p>Exemplo fonte &#8220;Cherif&#8221;</p>
<div id="varal-de-bits">
<div>
    Viu como é fácil colocar isso em sua página.<br />
    Até em links com hover:  <a href="http://www.varaldebits.com.br">Varal de Bits</a>
  </div>
</div>
<p></p>
<blockquote><p>
<strong>CSS</strong><br />
      &lt;style type=&#8221;text/css&#8221;&gt;<br />
      &nbsp; #varal-de-bits {color: #86A63F;letter-spacing:1px; }<br />
      &nbsp; #varal-de-bits a {color: #86A63F}<br />
      &nbsp; #varal-de-bits a:hover {color: #B7BFA7}<br />
      &lt;/style&gt;<br />
    </p>
<p>    <strong>Javascript</strong><br />
      &lt;script type=&#8221;text/javascript&#8221; src=&#8221;cufon-yui.js&#8221;&gt;&lt;/script&gt;<br />
      &lt;script type=&#8221;text/javascript&#8221; src=&#8221;cherif_400.font.js&#8221;&gt;&lt;/script&gt;<br />
      &lt;script type=&#8221;text/javascript&#8221;&gt;<br />
      &nbsp; Cufon.replace(&#8216;#varal-de-bits p&#8217;, { textShadow: &#8216;#000 1px 1px&#8217;, hover: &#8216;true&#8217;});<br />
      &lt;/script&gt;<br />
      </p>
<p>    <strong>HTML</strong><br />
      &lt;div id=&#8221;varal-de-bits&#8221;&gt;<br />
      &nbsp;&nbsp;&lt;div&gt;<br />
      &nbsp;&nbsp;&nbsp;&nbsp;Viu como é fácil colocar isso em sua página.&lt;br /&gt;<br />
      &nbsp;&nbsp;&nbsp;&nbsp;Até em links com hover:<br />
      &nbsp;&nbsp;&nbsp;&nbsp;&lt;a href=&#8221;http://www.varaldebits.com.br&#8221;&gt;Varal de Bits&lt;/a&gt;<br />
      &nbsp;&nbsp;&lt;/div&gt;<br />
      &lt;/div&gt;
</p></blockquote>
<p><script src="http://www.varaldebits.com.br/codes/cufon/cufon-yui.js" type="text/javascript"></script><br />
<script src="http://www.varaldebits.com.br/codes/cufon/cherif_400.font.js" type="text/javascript"></script></p>
<style type="text/css">
  #varal-de-bits {color: #86A63F;letter-spacing:1px;}
  #varal-de-bits a {color: #86A63F}
  #varal-de-bits a:hover {color: #B7BFA7}
</style>
<p><script type="text/javascript">
  Cufon.replace('#varal-de-bits', { textShadow: '#000 1px 1px', hover: 'true'});
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2009/11/06/bela-solucao-para-as-firulas-dos-designers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multiple IE e IETester</title>
		<link>http://varaldebits.com.br/2009/07/27/multiple-ie-e-ietester/</link>
		<comments>http://varaldebits.com.br/2009/07/27/multiple-ie-e-ietester/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 17:48:10 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=223</guid>
		<description><![CDATA[Quantas e quantas vezes você já não se deparou com a necessidade de testar sua aplicação em várias navegadores, inclusive nos amados IEs (Internet Explorer). Comecei fazendo esses testes usando o Multiple IE. Deixava o IE7 na minha maquina e usava o Multiple IE para testar do 6 para baixo. Até que nossa empresa amada [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Quantas e quantas vezes você já não se deparou com a necessidade de testar sua aplicação em várias navegadores, inclusive nos amados IEs (Internet Explorer). Comecei fazendo esses testes usando o <a href="http://tredosoft.com/Multiple_IE">Multiple IE</a>. Deixava o IE7 na minha maquina e usava o Multiple IE para testar do 6 para baixo. Até que nossa empresa amada lançou o IE8, com mais bugs do que o IE7, mas quem diz que clientes sabem disso?</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">“Ah! Nossas maquinas foram atualizadas para o IE8 e o sistema parou de funcionar. O layout está quebrado, bla, bla, bla&#8230;”</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Deixe-me fazer uma observação: Como uma empresa faz atualizações em seu navegador e consegue fazer sistema e sites que funcionavam nos antigos pararem de funcionar com as novas atualizações? Uma coisa é existir novas funcionalidades. Outra e fazer funcionalidades antigas pararem de funcionar. Vai entender.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Então o que fazer? Foi ai que descobri o <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> um programinha muito bacana, porém um pouco pesado. Nele você encontra desde do IE5 até o IE8 e o interessante desta nova versão é que você pode dividir a tela do programa com mais de um IE, ou seja testa nos dois ao mesmo tempo. Dentre outras funcionalidades do programa.</p>
<p style="margin-bottom: 0cm;">Em minhas experiências com ambos sistema aconselho mais o IETester pois fornece mais ferramentas e melhor usabilidades. E para os chatos como eu não espalha aquele tanto de IE no seu sistema. Porém tenha uma máquina um pouquinho melhor para aguentar o programa. Ele é um pouco pesado ainda. E quando for utilizar a funcionalidade de abrir uma url ou uma página com todos ao mesmo tempo, tome cuidado, dependendo da máquina o sistema irá fechar sozinho.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Mais vai um conselho. Cuidado em testar CSS e JS nesses programas pois as vezes eles dão pau e você fica quebrando cabeça atoa. Se você constantemente tem que testar páginas nos IE faça como eu fiz em minha empresa; se tiver a possibilidade. Tenho 3 maquinas diferentes, cada um com um programador. Cada máquina tem um IE, evitamos as atualizações dos navegadores e mantemos as maquinas como estão. Assim temos a garantia de não ficarmos agarrados em Bugs dos programas que emulam o IE.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">Outra dica é o seguinte. Tenha também uma maquina com o Vista. Pois tenho enfrentando problemas de diferenças do IE8 para o Vista e o XP.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;">São dicas para que você não perca tempo e também não entregue algo para o cliente e ele fica torrando a paciência falando que o site está quebrando no IE e você testa na sua maquina e tudo esta certo. Até você descobrir que o sistema operacional também está influenciando no funcionamento IE8</p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2009/07/27/multiple-ie-e-ietester/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>W3C X Target _new ou _blank</title>
		<link>http://varaldebits.com.br/2009/07/26/w3c-x-target-_new/</link>
		<comments>http://varaldebits.com.br/2009/07/26/w3c-x-target-_new/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 16:04:59 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Quebra Galho]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=204</guid>
		<description><![CDATA[Estou agora na era W3C. A empresa que trabalho exigi que façamos todos os sites validados pela W3C. Nunca me preocupei tanto com isso como agora. Mas recentemente tive um pequeno problema. Um cliente pediu para abrir um aquivo pdf em outra página. E lá fui eu todo bonito coloquei o target=&#8221;_new&#8221;, para descobrir que [...]]]></description>
			<content:encoded><![CDATA[<p>Estou agora na era W3C. A empresa que trabalho exigi que façamos todos os sites validados pela W3C. Nunca me preocupei tanto com isso como agora. Mas recentemente tive um pequeno problema. Um cliente pediu para abrir um aquivo pdf em outra página. E lá fui eu todo bonito coloquei o target=&#8221;_new&#8221;, para descobrir que o W3C não valida isso. Tudo bem que vem com aquela liçao de moral. &#8220;De que o usuário do site tem que ter a liberdade de abrir um link na página que ele quiser e bla, bla, bla&#8230;&#8221; mas cliente não quer nem saber disso. Dureza. Ai começa a chover um monte de coisa&#8230;</p>
<pre class="brush:xml">&lt;a href=”javascript:link_externo(“http://www.varaldebits.com.br”)”&gt;Varal de Bits&lt;/a&gt;
// Script
function link_externo(url){
 window.open(url,”,”);
}</pre>
<p>Não preciso nem falar o que isso gera nos browsers. E eu como sou um cara muito chato. Não achei isso a melhor solução. Deve existir outra maneira melhor para fazer ter o target=_new e passar no W3C. Foi ai que entrou em ação nosso amado <a href="http://jquery.com/">jQuery</a>. Ow ferramente maravilhosa. Uma solução muito mais simples, funcional e elegante.</p>
<pre class="brush:xml">&lt;a href=”http://bitbucket.com.br” rel=”externo”&gt;BitBucket&lt;/a&gt;
// Script
$(document).ready(function(){
   $(“a[@rel=externo]“).attr(‘target’,'_new’);
});</pre>
<p>Ou seja, qualquer link em seu site que você colocar o rel=&#8221;externo&#8221;, o jQuery irá aplicar o atributo target para você. Maravilhoso.</p>
<p>Aproveite e se livre desse <a href="https://addons.mozilla.org/pt-BR/firefox/addon/249">x vermelho</a> no canto direito do seu Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2009/07/26/w3c-x-target-_new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Celta ou Uno? .erb ou .haml?</title>
		<link>http://varaldebits.com.br/2009/01/03/celta-ou-uno-erb-ou-haml/</link>
		<comments>http://varaldebits.com.br/2009/01/03/celta-ou-uno-erb-ou-haml/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 23:04:33 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[#haml]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=49</guid>
		<description><![CDATA[Dúvidas cruéis ou simplesmente gosto? Bom como eu falei finalmente consegui tempo para fazer um teste de performance para tentar descobrir o que é melhor. Usar haml ou as bibliotecas do RoR para gerar html. Fiz um teste bem básico de renderização para sanar minha grande curiosidade. Fiz uma busca de 70456 usuários e depois [...]]]></description>
			<content:encoded><![CDATA[<p>Dúvidas cruéis ou simplesmente gosto? Bom como eu falei finalmente consegui tempo para fazer um teste de performance para tentar descobrir o que é melhor.  Usar haml ou as bibliotecas do RoR para gerar html. Fiz um teste bem básico de renderização para sanar minha grande curiosidade. Fiz uma busca de 70456 usuários e depois um loop básico.<br />
<strong> </strong></p>
<p><strong>RoR:</strong></p>
<p><strong></p>
<pre class="brush:as3">&lt;ol&gt;
  &lt;% @users.each do |user| %&gt;
    &lt;li&gt;
      &lt;%= link_to “#{user.first_name} #{user.last_name}”, user %&gt;&lt;br/&gt;
      &lt;%= mail_to user.email, user.email %&gt;
    &lt;/li&gt;
  &lt;% end %&gt;
&lt;/ol&gt;</pre>
<p></strong></p>
<p><strong> </strong></p>
<p><strong>#HAML</strong></p>
<p><strong></p>
<pre class="brush:ruby">%ol
  - @users.each do |user|
  %li
    %a{:href =&gt; "/users/#{user.id}"}= "#{user.first_name} #{user.last_name}"
    %br
    %a{:href =&gt; "mailto:#{user.email}"}= user.email</pre>
<p></strong></p>
<p><strong></strong></p>
<p>Fiquei surpreso com o resultado. Ao utilizar o #haml minha página renderizou em 34.34400 (12%) e para  a minha surpresa sem o #haml em 31.95400 (11%). Uma diferença de pouco mais de 2sec. Para um loop simples e pouco conteúdo para renderizar é uma diferença muito grande. Se você pensar em uma página com bastante códigos #haml essa diferença pode aumentar considerávelmente. Bom é isso ai. Fica a seu critério. Visualmente o #haml é bem melhor, validação W3C também, porém para performance fica minhas dúvidas.</p>
<p>Sobre o Celta e o Uno. Fico com o Celta.</p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2009/01/03/celta-ou-uno-erb-ou-haml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Isso leva o #haml ser ruim?</title>
		<link>http://varaldebits.com.br/2008/12/16/isso-leva-o-haml-ser-ruim/</link>
		<comments>http://varaldebits.com.br/2008/12/16/isso-leva-o-haml-ser-ruim/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 15:29:36 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[#haml]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=35</guid>
		<description><![CDATA[Bom estou aqui novamente falando do #haml. Exatamente agora acabei de converter um projeto todo para #haml encontrei alguns obstáculos na utilização do haml. Ainda não fiz o teste de performance, mas assim que terminar esse artigo farei alguns testes para possívelmente aplicar o #haml em um projeto que estamos trabalhando. Assim que tiver resultado [...]]]></description>
			<content:encoded><![CDATA[<p>Bom estou aqui novamente falando do #haml. Exatamente agora acabei de converter um projeto todo para <a href="http://haml.hamptoncatlin.com/" target="_self">#haml</a> encontrei alguns obstáculos na utilização do haml. Ainda não fiz o teste de performance, mas assim que terminar esse artigo farei alguns testes para possívelmente aplicar o #haml em um projeto que estamos trabalhando. Assim que tiver resultado post aqui para vocês. Bom voltando aos obstáculos. Na verdade não sei se posso chamar de obstáculos, mas sim de qualidade de código. Uma das coisas que mais me chamou atenção no #haml foi a questão de economia de linhas como falei no <a href="http://varaldebits.com.br/2008/12/12/haml-solucoes-em-html/">artigo anterior</a>. Porém em alguns pontos gastei mais linhas do que economizei.</p>
<p>Para gerar um menu assim:</p>
<p>ver álbum | adicionar mais fotos | editar álbum | excluir álbum</p>
<pre class="brush:ruby">&lt;%= link_to ‘ver álbum’, ‘url’ %&gt; |
&lt;%= link_to ‘adicionar mais fotos’, ‘url’ %&gt; |
&lt;%= link_to ‘editar álbum’, ‘url’ %&gt; |
&lt;%= link_to ‘excluir álbum’, ‘url’ %&gt;</pre>
<p><strong>Agora em #haml:</p>
<pre class="brush:ruby">a%{:href =&gt; url} ver álbum
|
a%{:href =&gt; url} adicionar mais fotos
|
a%{:href =&gt; url} editar álbum</pre>
<p></strong></p>
<p>Quase dobramos o número de linhas, de 4 para 7 linhas. Esse é um exemplo que você irá ter mais linhas do que se não usasse o #haml, com certeza irá bater com outros detalhes. Porém até agora ainda não considero o #haml ruim, olhando a documentação encontrei muitas coisas que não tinha reparado antes. Mas por hoje é só.</p>
<p>Vou aproveitar para dar um dica.<br />
Quanto você for fazer um form em sua aplicação e utilizar a função &#8220;form_for&#8221; e derivados não coloque &#8220;=&#8221; e sim &#8220;-&#8221; pois senão seu &#8220;form&#8221; será duplicado.</p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2008/12/16/isso-leva-o-haml-ser-ruim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#haml &#8211; Soluções em HTML?</title>
		<link>http://varaldebits.com.br/2008/12/12/haml-solucoes-em-html/</link>
		<comments>http://varaldebits.com.br/2008/12/12/haml-solucoes-em-html/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 21:28:01 +0000</pubDate>
		<dc:creator>Renato Ferraz</dc:creator>
				<category><![CDATA[#haml]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://varaldebits.com.br/?p=21</guid>
		<description><![CDATA[Recentemente meu irmão Ronaldo Ferraz, apresentou uma coisinha chamada HAML a mim, comecei a &#8220;brincar&#8221; com ela no mesmo instante e comecei a achar esse bichinho interresante. O que ele exatamente faz pra você, resumidamente. Ele ajuda a você a criar html. Você não precisa preocupar mais com identação, abrir e fechar tag, onde abre [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente meu irmão <a href="http://logbr.reflectivesurface.com/" target="_blank">Ronaldo Ferraz</a>, apresentou uma coisinha chamada <a href="http://haml.hamptoncatlin.com/" target="_blank">HAML</a> a mim, comecei a &#8220;brincar&#8221; com ela no mesmo instante e comecei a achar esse bichinho interresante. O que ele exatamente faz pra você, resumidamente.</p>
<p>Ele ajuda a você a criar html. Você não precisa preocupar mais com identação, abrir e fechar tag, onde abre e onde fecha tag html e o melhor economiza código. Estou aplicando esse bichinho em um site pessoal que estou desenvolvendo. Tive já alguns resultados gratificantes. A página que renderiza o layout tem 172 linhas, após converter para haml, terminei com 42 linhas e com o código perfeitamente identado e limpo. Até este momento estava muito empolgado, mas estou começando a encontrar alguns obstáculos. Não grandes o suficiente para parar ou descatar o haml, mas que ainda não encontrei soluções.</p>
<p>Por exemplo:</p>
<pre class="brush:ruby">&lt;!–[if IE 7]&gt;
&lt;%= stylesheet_link_tag “ie7″ %&gt;
&lt;![endif]–&gt;

&lt;!–[if lte IE 6]&gt;
&lt;%= stylesheet_link_tag “ie6″ %&gt;
&lt;![endif]–&gt;</pre>
<p>Isso eu ainda não consegui aplicar ao haml, o que faço é criar um partial em htm.erb. O que ainda não tive tempo de testar é performace, mas assim que der estarei aplicando a postando aqui.</p>
<p>Pessoal se vocês tiverem dicas e sugestões posta ai para a gente.</p>
]]></content:encoded>
			<wfw:commentRss>http://varaldebits.com.br/2008/12/12/haml-solucoes-em-html/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

