<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2761851012747815550</id><updated>2024-08-28T21:49:50.825-07:00</updated><category term="CSS"/><category term="Inspiração"/><category term="Apache"/><category term="Hospedagem"/><category term="MySQL"/><category term="Navegador"/><category term="PHP"/><category term="SEO"/><category term="Segurança"/><category term="Tecnologias"/><category term="jQuery"/><title type='text'>Desenvolvendo sites</title><subtitle type='html'>Dicas e artigos avançados sobre jQuery, PHP, MySQL, Web Design e outros...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-5273777412354720923</id><published>2011-07-05T15:23:00.000-07:00</published><updated>2011-07-05T15:23:38.176-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Pegar valores de arquivo CSS com PHP</title><content type='html'>Suponhamos que você tenha um site onde pessoas podem alterar o tema da sua página pessoal, como cores, fontes, tamanhos, etc...&lt;br /&gt;
&lt;br /&gt;
Aí você pensa: vou criar uma tabela no banco de dados com mil colunas pra saber o que o usuário colocou e o que não. Além de dar muito mais trabalho, a leitura do banco de dados é mais lenta e sobrecarrega seu servidor.&lt;br /&gt;
Então não seria mais simples salvar tudo num arquivo css personalizado, e carregá-lo depois?&lt;br /&gt;
&lt;br /&gt;
O problema depois é ler esse arquivo, certo?&lt;br /&gt;
Errado, aqui tá a solução. Todos os dados do CSS são exportados para uma Array, mais fácil do que isso impossível neh?&lt;br /&gt;
Só usar a função:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;function parse($file){
 $css = file_get_contents($file);
 preg_match_all( &#39;/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/&#39;, $css, $arr);
 $result = array();
 foreach ($arr[0] as $i =&gt; $x){
  $selector = trim($arr[1][$i]);
  $rules = explode(&#39;;&#39;, trim($arr[2][$i]));
  $rules_arr = array();
  foreach ($rules as $strRule){
   if (!empty($strRule)){
    $rule = explode(&quot;:&quot;, $strRule);
    $rules_arr[trim($rule[0])] = trim($rule[1]);
   }
  }
  
  $selectors = explode(&#39;,&#39;, trim($selector));
  foreach ($selectors as $strSel){
   $result[$strSel] = $rules_arr;
  }
 }
 return $result;
}
// Aqui vai o arquivo que você quer ler
$css = parse(&#39;css/personalizado_011246.css&#39;);
&lt;/pre&gt;&lt;br /&gt;
Para usar é muito fácil:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$css[&#39;body&#39;][&#39;background-color&#39;];
$css[&#39;#id&#39;][&#39;color&#39;];
$css[&#39;.class&#39;][&#39;font-size&#39;];
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/5273777412354720923/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/pegar-valores-de-arquivo-css-com-php.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/5273777412354720923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/5273777412354720923'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/pegar-valores-de-arquivo-css-com-php.html' title='Pegar valores de arquivo CSS com PHP'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-8948314193998832248</id><published>2011-07-05T08:29:00.000-07:00</published><updated>2011-07-05T08:29:28.835-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><title type='text'>Remover borda/margem de checkbox no Internet Explorer (IE)</title><content type='html'>Fala pessoas.&lt;br /&gt;
&lt;br /&gt;
Como sempre, e não surpreso, o IE (mesmo a versão 9) continua sempre querendo ser diferente e só complica para nós desenvolvedores.&lt;br /&gt;
Desta vez reparei que ele coloca uma baita margem e uma borda em todos checkboxes, dessa forma:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2iWY0fcLNIIjmxe2UnmsvTJJw8u_uRZKv8HfzTJxmG4galwTtj5H8IujzYHHGSue9OGB_f_zGDJvuWE4OMI_gLNkFelLcNRhmNTfuunOLA_KWxLuOI2A7lbs1nqEdIlQr7MK-3bOBf_x/s1600/blog2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2iWY0fcLNIIjmxe2UnmsvTJJw8u_uRZKv8HfzTJxmG4galwTtj5H8IujzYHHGSue9OGB_f_zGDJvuWE4OMI_gLNkFelLcNRhmNTfuunOLA_KWxLuOI2A7lbs1nqEdIlQr7MK-3bOBf_x/s320/blog2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Então para que fique certo, basta fazer no seu arquivo de estilos (CSS):&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;form input[type=&quot;checkbox&quot;] { border:none; padding:0; }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHaDhDq_2FwCBse7neEp8bizPN94f6Ige4t7TSMmgHhQZkhOZKAsQnv8FmS-N-Rn-zMejWNBalk9TNzLhUUmtbvGnkQ6bVRnAgtFYXMVyrKuIlk-yLFyM0_1eKWOMVrieqdTiihTQa4Vb/s1600/blog1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHaDhDq_2FwCBse7neEp8bizPN94f6Ige4t7TSMmgHhQZkhOZKAsQnv8FmS-N-Rn-zMejWNBalk9TNzLhUUmtbvGnkQ6bVRnAgtFYXMVyrKuIlk-yLFyM0_1eKWOMVrieqdTiihTQa4Vb/s320/blog1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Fui</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/8948314193998832248/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/remover-bordamargem-de-checkbox-no.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/8948314193998832248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/8948314193998832248'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/remover-bordamargem-de-checkbox-no.html' title='Remover borda/margem de checkbox no Internet Explorer (IE)'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm2iWY0fcLNIIjmxe2UnmsvTJJw8u_uRZKv8HfzTJxmG4galwTtj5H8IujzYHHGSue9OGB_f_zGDJvuWE4OMI_gLNkFelLcNRhmNTfuunOLA_KWxLuOI2A7lbs1nqEdIlQr7MK-3bOBf_x/s72-c/blog2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-5232066610664664083</id><published>2011-07-03T20:27:00.000-07:00</published><updated>2011-08-01T08:56:12.058-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><title type='text'>UPDATE sem atualizar campo com data</title><content type='html'>No MySQL algumas vezes que você tem um campo do tipo date, timestamp.... que guarda data, o valor é atualizado quando se altera algum outro campo com UPDATE.&lt;br /&gt;
&lt;br /&gt;
Pesquisando muito na net, achei a solução (e como sempre em nenhum site brasileiro).&lt;br /&gt;
Ex: você tem uma tabela com os dados do cadastro e uma coluna com DATE que é quando ele criou a conta no seu site. Se o usuário quiser mudar o email por exemplo, e você der um UPDATE na tabela, ela colocará a data do dia da modificação no campo do dia do cadastro.&lt;br /&gt;
&lt;br /&gt;
Para resolver isso, basta executar:&lt;br /&gt;
&lt;pre class=&quot;lang-sql prettyprint&quot;&gt;&lt;code&gt;&lt;strike&gt;&lt;span class=&quot;kwd&quot;&gt;ALTER&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;TABLE&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;tabela&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; CHANGE &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;COLUMN&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;coluna&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;coluna&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; TIMESTAMP &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;NOT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;DEFAULT&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&#39;0000-00-00 00:00:00&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;/strike&gt;&lt;span class=&quot;pun&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;strike&gt;Lembrando que isso basta ser executado apenas uma vez, então não coloque num arquivo PHP.&lt;/strike&gt;&lt;br /&gt;
&lt;strike&gt;Vá no Adminer ou PHPMyAdmin e execute esse comando SQL.&lt;/strike&gt;&lt;br /&gt;
&lt;br /&gt;
Quando for inserir o cadastro no banco de dados, em vez de usar NOW() no campo de data, use SYSDATE(), ex:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$sql = &quot;INSERT INTO `usuarios` VALUES ( NULL,&#39;$nome&#39;,&#39;$email&#39;,&#39;$senha&#39;,SYSDATE() )&quot;;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/5232066610664664083/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/update-sem-atualizar-campo-com-data.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/5232066610664664083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/5232066610664664083'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/07/update-sem-atualizar-campo-com-data.html' title='UPDATE sem atualizar campo com data'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-1811997680412454500</id><published>2011-04-10T15:18:00.000-07:00</published><updated>2011-04-10T15:18:30.176-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><title type='text'>Centralizar div na horizontal com tamanho variável.</title><content type='html'>Meses procurando finalmente encontrei uma solução para centralizar uma div na horizontal que não tem seu tamanho definido.&lt;br /&gt;
Pra variar não encontrei nada em português....&lt;br /&gt;
&lt;br /&gt;
Se você tem aqueles alertas tipo de &quot;Carregando&quot; igual o que tem nos serviços do Google sabe? Numa div amarela centralizada no topo você vai precisar disso.&lt;br /&gt;
&lt;br /&gt;
O segredo é fazer 3 divs pra isso (uma coisa tão simples, precisa de tudo isso... fazer o que né?)&lt;br /&gt;
Vamos imaginar o código assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;div class=&quot;centralizar&quot;&amp;gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;div id=&quot;alerta&quot;&amp;gt;Carregando...&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Agora o css vai ficar assim:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;/* tira o que sobrar do lado, e centraliza */ &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;.centralizar {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;position:relative;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;overflow:hidden;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;.centralizar&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; &amp;gt; div {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;float:left;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;position:fixed;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;left:50%;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;#alerta {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*display:none;*/&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;float:left;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;position:relative;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;left:-50%;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;padding:4px;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;background-color:#FF9;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;color:#000;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
É isso aí...</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/1811997680412454500/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/centralizar-div-na-horizontal-com.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/1811997680412454500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/1811997680412454500'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/centralizar-div-na-horizontal-com.html' title='Centralizar div na horizontal com tamanho variável.'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-7236866813512413276</id><published>2011-04-05T13:18:00.000-07:00</published><updated>2011-04-05T13:18:04.404-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>Campo numérico com controle - jQuery</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4uL9j6HOd0vYv_bCUAA-ZtUoOshF2tG9ff5hU0CyM7Crjs66UubHB-1BWg2DfS8LSJ0Jb2sy0_EzTI3BTFNmrNOwMSYz24DnZejsAccVuymxMbvv18FpC6Wel33F67_LxOdI7470t1OSF/s1600/blog.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4uL9j6HOd0vYv_bCUAA-ZtUoOshF2tG9ff5hU0CyM7Crjs66UubHB-1BWg2DfS8LSJ0Jb2sy0_EzTI3BTFNmrNOwMSYz24DnZejsAccVuymxMbvv18FpC6Wel33F67_LxOdI7470t1OSF/s1600/blog.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Há tempos procuro um plugin pra jQuery que simule aqueles campos númericos que tem as setinhas ao lado pra você aumentar ou diminuir o valor.&lt;br /&gt;
Sempre procurei por Numeric Stepper (que é como conhecia).&lt;br /&gt;
Mas descobri outro nome: Spin Box.&lt;br /&gt;
&lt;br /&gt;
Procurando no magnífico Google, cheguei ao plugin &lt;a href=&quot;http://plugins.jquery.com/project/spin-button&quot;&gt;Spin Button&lt;/a&gt;. (&lt;a href=&quot;http://dev.screw-axis.com/sandbox/jquery-spin/demo/demo1.html&quot;&gt;Veja os exemplos aqui&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Agora você pode ter um controle maior, quando um campo requer que o usuário digite um número específico.&lt;br /&gt;
&lt;br /&gt;
HTML5: também existe a opção no novo padrão HTML.&lt;br /&gt;
Seria: &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;input type=&quot;number&quot; min=&quot;0&quot; max=&quot;0&quot; step=&quot;1&quot; value=&quot;10&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Porém até onde sei só funciona no Opera.&lt;br /&gt;
&lt;br /&gt;
Se você quiser usar os dois, já se preparando para o futuro, pode verificar se o navegador já tem essa função assim com a ajuda do Modernizr:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;if (!&lt;a href=&quot;http://diveintohtml5.org/detect.html#modernizr&quot;&gt;Modernizr&lt;/a&gt;.inputtypes.number) {&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;    $(&#39;#numero&#39;).&lt;/code&gt;&lt;code&gt;spin({max:100,min:0});&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;}&amp;nbsp;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Espero ter ajudado!</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/7236866813512413276/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/campo-numerico-com-controle-jquery.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/7236866813512413276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/7236866813512413276'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/campo-numerico-com-controle-jquery.html' title='Campo numérico com controle - jQuery'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4uL9j6HOd0vYv_bCUAA-ZtUoOshF2tG9ff5hU0CyM7Crjs66UubHB-1BWg2DfS8LSJ0Jb2sy0_EzTI3BTFNmrNOwMSYz24DnZejsAccVuymxMbvv18FpC6Wel33F67_LxOdI7470t1OSF/s72-c/blog.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-2216748280070800855</id><published>2011-04-01T08:15:00.000-07:00</published><updated>2011-04-01T08:15:50.331-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Inspiração"/><title type='text'>Página de erro do Peixe Urbano</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://info.abril.com.br/aberto/infonews/fotos/peixeurbano-foradoar-umcentavo-20110331104847.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;298&quot; src=&quot;http://info.abril.com.br/aberto/infonews/fotos/peixeurbano-foradoar-umcentavo-20110331104847.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Uma página de erro muito interessante para nos inspirarmos. Veja que o texto segue o conceito da marca inspirado no nome. O peixe vive na água, logo eles colocaram todo o texto referente ao mar, muito bem escrito e ainda tem um certo humor, mesmo na hora em que o visitante deva estar meio bravo com o site.</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/2216748280070800855/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/pagina-de-erro-do-peixe-urbano.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/2216748280070800855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/2216748280070800855'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/04/pagina-de-erro-do-peixe-urbano.html' title='Página de erro do Peixe Urbano'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-1225239518450125079</id><published>2011-03-31T15:43:00.000-07:00</published><updated>2011-03-31T15:43:11.142-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Navegador"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologias"/><title type='text'>Do que seu navegador é capaz? Mozilla</title><content type='html'>A Mozilla fez um hot site muito interessante sobre a capacidade que seu novo navegador (Firefox 4) pode ter. Há apresentações de HTML, WebGL, CSS, Vídeos sem plugin etc...&lt;br /&gt;
&lt;br /&gt;
Muito bacana pra sabermos com o que vamos poder lidar no futuro. Já penso nos sites 3D, usando o WebGL e monitores com essa capacidade.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdQ2koCwDl2vhuunVb3w8yv3h4bBym_sadImRtZ3M9w_UR_ZyXqge_Tb74ji7obw4K5rnRLS-albqp3auWDvyVKYMMfcGKPTRq4gEajWH2EqTO3sFAJcYKJqGRuWJWNA87G4zaQs_qrTQ/s1600/fx.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdQ2koCwDl2vhuunVb3w8yv3h4bBym_sadImRtZ3M9w_UR_ZyXqge_Tb74ji7obw4K5rnRLS-albqp3auWDvyVKYMMfcGKPTRq4gEajWH2EqTO3sFAJcYKJqGRuWJWNA87G4zaQs_qrTQ/s640/fx.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://demos.mozilla.org/pt/&quot;&gt;https://demos.mozilla.org/pt/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/1225239518450125079/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/do-que-seu-navegador-e-capaz-mozilla.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/1225239518450125079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/1225239518450125079'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/do-que-seu-navegador-e-capaz-mozilla.html' title='Do que seu navegador é capaz? Mozilla'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdQ2koCwDl2vhuunVb3w8yv3h4bBym_sadImRtZ3M9w_UR_ZyXqge_Tb74ji7obw4K5rnRLS-albqp3auWDvyVKYMMfcGKPTRq4gEajWH2EqTO3sFAJcYKJqGRuWJWNA87G4zaQs_qrTQ/s72-c/fx.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-2674627614016720587</id><published>2011-03-30T07:45:00.000-07:00</published><updated>2011-04-01T08:16:32.791-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Inspiração"/><title type='text'>Inspiração: West Coast Subs</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://d3pr5r64n04s3o.cloudfront.net/118_VisualDirection/WCzoom1%5B1%5D.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;426&quot; src=&quot;http://d3pr5r64n04s3o.cloudfront.net/118_VisualDirection/WCzoom1%5B1%5D.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://westcoastsubs.com/&quot;&gt;http://westcoastsubs.com/&lt;/a&gt; &lt;br /&gt;
Um site simples com um menu bem diferente.</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/2674627614016720587/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inspiracao-west-coast-subs.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/2674627614016720587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/2674627614016720587'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inspiracao-west-coast-subs.html' title='Inspiração: West Coast Subs'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-9176071886184904763</id><published>2011-03-23T08:44:00.000-07:00</published><updated>2011-04-01T08:16:32.792-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Inspiração"/><title type='text'>Inspiração: Portfólio Paul Noble</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEQNraPN5UPdfu7sqVp7OYurlIQ77pm7-dpcU51tsxyi3kwEKuanciEIx8nrNj0oJBnmiJ-N4uHNnDRBXEveeJCq2BO_ZBJc5P7vH2UCTJoDnLyDOXx5R_P81a7UbBuZOVj7KiB9EUXxmO/s1600/blog.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;412&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEQNraPN5UPdfu7sqVp7OYurlIQ77pm7-dpcU51tsxyi3kwEKuanciEIx8nrNj0oJBnmiJ-N4uHNnDRBXEveeJCq2BO_ZBJc5P7vH2UCTJoDnLyDOXx5R_P81a7UbBuZOVj7KiB9EUXxmO/s640/blog.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://pauljnoble.com/&quot;&gt;http://pauljnoble.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Paul criou um site diferenciado, criativo e intuitivo. Com uma interface nova ele chama a atenção pela fácil navegação, e o design.&lt;br /&gt;
&lt;br /&gt;
Quer aprender a fazer o site dele? (em inglês)&lt;br /&gt;
&lt;a href=&quot;http://webdesign.tutsplus.com/tutorials/complete-websites/design-an-innovative-portfolio-site-using-alternative-uiux/&quot;&gt;http://webdesign.tutsplus.com/tutorials/complete-websites/design-an-innovative-portfolio-site-using-alternative-uiux/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/9176071886184904763/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inspiracao-portfolio-paul-noble.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/9176071886184904763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/9176071886184904763'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inspiracao-portfolio-paul-noble.html' title='Inspiração: Portfólio Paul Noble'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEQNraPN5UPdfu7sqVp7OYurlIQ77pm7-dpcU51tsxyi3kwEKuanciEIx8nrNj0oJBnmiJ-N4uHNnDRBXEveeJCq2BO_ZBJc5P7vH2UCTJoDnLyDOXx5R_P81a7UbBuZOVj7KiB9EUXxmO/s72-c/blog.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-207900927241443785</id><published>2011-03-20T15:14:00.000-07:00</published><updated>2011-03-20T15:14:45.253-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="SEO"/><title type='text'>Passar query strings para url com rewrite ativado.</title><content type='html'>Esses dias estava pesquisando como passar mais de uma query string numa url amigável que já tinha um rewrite_mod nela.&lt;br /&gt;
&lt;br /&gt;
Não sabe o que é URL amigável?&lt;br /&gt;
Aprenda aqui: &lt;a href=&quot;http://blog.thiagobelem.net/aprendendo-urls-amigaveis/%20&quot;&gt;http://blog.thiagobelem.net/aprendendo-urls-amigaveis/ &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Antes usava:&lt;br /&gt;
&lt;b&gt;RewriteRule ^produto/([a-z0-9-_]+)/?&lt;span style=&quot;color: red;&quot;&gt;$&lt;/span&gt; produto_exibe.php?link=$1 [NC]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O que funcionava perfeitamente em:&lt;br /&gt;
&lt;b&gt;www.site.com.br/produto/nome-do-produto/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Só que o problema surgiu quando quis passar uma query junto com a url:&lt;br /&gt;
&lt;b&gt;www.site.com.br/&lt;/b&gt;&lt;b&gt;produto/nome-do-produto/?from=main&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Aí  descobrir que é só tirar o símbolo de $ que significava que a URL tinha  terminado ali, e adicionar uma flag &#39;QSA&#39;, que acho que seria Query  Strings Automáticas. (algo assim)&lt;br /&gt;
Aí fica:&lt;br /&gt;
&lt;b&gt;RewriteRule ^produto/(.*)/? produto_exibe.php?link=$1 [NC,QSA]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Fica aí a dica... &lt;b&gt;&lt;br /&gt;
&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/207900927241443785/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/passar-query-strings-para-url-com.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/207900927241443785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/207900927241443785'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/passar-query-strings-para-url-com.html' title='Passar query strings para url com rewrite ativado.'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-4315790863406610357</id><published>2011-03-20T14:44:00.000-07:00</published><updated>2011-03-20T14:44:00.051-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hospedagem"/><category scheme="http://www.blogger.com/atom/ns#" term="Segurança"/><title type='text'>Cron Job - Backup do seu site de jeito fácil</title><content type='html'>Quando finalizamos um site, é importantíssimo que se tenha um script para fazer backup frequetemente. Já pensou se você tem uma loja, ou um site com galerias de imagens, e de repente alguém o invade, ou acontece algum problema no servidor e você perde tudo?&lt;br /&gt;
Com certeza não seria nada agradável ter que fazer tudo de novo, e seus visitantes confusos esperando algo...&lt;br /&gt;
&lt;br /&gt;
Para isso existe as Cron Tabs (Linux), ou o mais conhecido Agendador de Tarefas (Windows). Isso faz com que você programa algum script para ser executado quando quiser.&lt;br /&gt;
&lt;br /&gt;
O site do meu amigo Thiago tem uma introdução muito boa sobre isso, visite! &lt;a href=&quot;http://blog.thiagobelem.net/o-que-sao-e-como-usar-as-cron-jobs/&quot;&gt;http://blog.thiagobelem.net/o-que-sao-e-como-usar-as-cron-jobs/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Aqui eu vou apresentar o final do post dele.&lt;br /&gt;
Vamos supor que temos o site &lt;b&gt;carros.com.br&lt;/b&gt; e queremos fazer backup da lista de carros que estão lá, e das imagens deles.&lt;br /&gt;
Se você tem na sua hospedagem o painel de controle cPanel, fica fácil. Então acesse ele, vai até o final e procure por Tarefas Cron.&lt;br /&gt;
Primeiro digite um endereço de email pra onde será enviado um relatório caso algo dê errado.&lt;br /&gt;
&lt;br /&gt;
Depois em Definições Comuns, selecione de quanto em quanto tempo vai ser executado o código.&lt;br /&gt;
Nesse caso vou colocar &#39;Uma vez por dia&#39; para a lista de carros salvos no banco de dados MySQL.&lt;br /&gt;
Agora em comando vc vai colocar:&lt;br /&gt;
&lt;code id=&quot;command_htmlsafe_2&quot;&gt;/usr/bin/mysqldump -h localhost -u &amp;lt;usuario&amp;gt; -p&amp;lt;senha&amp;gt; nome_bd | gzip &amp;gt; /home/&amp;lt;site&amp;gt;/backup/mysql.sql.gz&lt;/code&gt;&lt;br /&gt;
O que significa?&lt;br /&gt;
&lt;b&gt;/usr/bin/mysqldump&lt;/b&gt; - executa um programa que vem com o MySQL para copiar o banco de dados&lt;br /&gt;
&lt;b&gt;-h localhost&lt;/b&gt; - o Host do banco de dados, altere localhost SE necessário. Geralmente esse é o padrão.&lt;br /&gt;
&lt;b&gt;-u &amp;lt;usuario&amp;gt;&lt;/b&gt; - o nome de usuário do Banco de dados, se o nome fosse &lt;b&gt;gabriel,&lt;/b&gt; ficaria -u gabriel&lt;br /&gt;
&lt;b&gt;-p&amp;lt;senha&amp;gt;&lt;/b&gt; - a senha do usuário do Banco de dados, se a senha fosse &lt;b&gt;webdev&lt;/b&gt;, ficaria -pwebdev (note que não há espaço entre -p e a senha)&lt;br /&gt;
&lt;b&gt;nome_bd&lt;/b&gt; - o nome do banco de dados, se fosse&lt;b&gt; `carros_lista`&lt;/b&gt; ficaria: carros_lista.&lt;br /&gt;
&lt;b&gt;| gzip&lt;/b&gt; - compacta o arquivo para economizar espaço&lt;br /&gt;
&lt;b&gt;&amp;gt; destino&lt;/b&gt; - depois do &amp;gt; deve vir o destino onde será salvo o arquivo. Geralmente é /home/&amp;lt;o nome do site (seu usuário)&amp;gt;/&amp;lt;a pasta onde quer salvar&amp;gt;/&amp;lt;arquivo&amp;gt;.sql.gz&lt;br /&gt;
&lt;br /&gt;
Usando os exemplos o final ficaria assim:&lt;br /&gt;
&lt;code id=&quot;command_htmlsafe_2&quot;&gt;/usr/bin/mysqldump -h localhost -u gabriel -pwebdev carros_lista | gzip &amp;gt; /home/carros/backup/mysql.sql.gz&lt;/code&gt;&lt;br /&gt;
Isso é o que deve ser posto na linha de comando no cPanel.&lt;br /&gt;
OBS: não esqueça de criar a pasta backup na raíz do site pelo FTP (onde tem as pastas www, public_html, etc...)&lt;br /&gt;
&lt;br /&gt;
Agora vamos salvar as imagens, então crie outra Cron Job.&lt;br /&gt;
Para isso vamos imaginar que eles estão na pasta &lt;b&gt;/images/fotos/&lt;/b&gt; do site, e então vamos compactar essa pasta com os arquivos que estão dentro dela.&lt;br /&gt;
Vou colocar &#39;Uma vez por mês&#39; dessa vez, imaginando que não são adicionados carros frequentemente.&lt;br /&gt;
&lt;br /&gt;
E em comando deve ser colocado:&lt;br /&gt;
&lt;code id=&quot;command_htmlsafe_3&quot;&gt;tar czf &amp;lt;destino&amp;gt; &amp;lt;origem&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;b&gt;tar czf &lt;/b&gt;-inicia o compactador&lt;br /&gt;
&lt;b&gt;&amp;lt;destino&amp;gt;&lt;/b&gt;- onde vai ser salvo o arquivo compactado. Ex:&lt;br /&gt;
&lt;b&gt;&amp;lt;origem&amp;gt;&lt;/b&gt; - local da pasta que será compactada.&lt;br /&gt;
&lt;br /&gt;
Usando nosso exemplo, o comando final ficaria assim:&lt;br /&gt;
&lt;code id=&quot;command_htmlsafe_3&quot;&gt;tar czf /home/carros/backup/fotos.tar.gz /var/www/images/fotos/&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Curiosidade: levei cerca de 5 horas pra descobrir e fazer funcionar isso hoje, e não achei nenhum site que me mostrasse dessa forma, fui tentando, usando o que eu sabia, e cheguei nesse ponto, espero que tenha te ajudado! &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Dica: se quiser testar primeito o código, coloque o tempo para a cada 5 &lt;/i&gt;minutos na cron.&lt;i&gt; Assim ele te enviará um email a cada 5 minutos se algo estiver errado.&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/4315790863406610357/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/cron-job-backup-do-seu-site-de-jeito.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/4315790863406610357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/4315790863406610357'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/cron-job-backup-do-seu-site-de-jeito.html' title='Cron Job - Backup do seu site de jeito fácil'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2761851012747815550.post-306235652450074234</id><published>2011-03-20T14:13:00.000-07:00</published><updated>2011-03-20T14:13:08.852-07:00</updated><title type='text'>Início</title><content type='html'>Criei esse blog para discutir e apresentar dicas para quem desenvolve sites.&lt;br /&gt;
&lt;br /&gt;
Geralmente é difícil acharmos algumas coisas na web (principalmente em português), ou quando achamos geralmente é difícil de implementar em nosso site.&lt;br /&gt;
&lt;br /&gt;
Vou apresentar aqui coisas que acontecem no meu cotidiano, e espero que ajude a muitas pessoas...&lt;br /&gt;
&lt;br /&gt;
Vlw!!</content><link rel='replies' type='application/atom+xml' href='http://webdev-gabriel.blogspot.com/feeds/306235652450074234/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inicio.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/306235652450074234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2761851012747815550/posts/default/306235652450074234'/><link rel='alternate' type='text/html' href='http://webdev-gabriel.blogspot.com/2011/03/inicio.html' title='Início'/><author><name>Gabriel Anderson</name><uri>http://www.blogger.com/profile/14178228334003556209</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>